:root{color:#f3ead7;background:#151311;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;background:linear-gradient(135deg,rgba(69,53,35,.35),transparent 28rem),linear-gradient(315deg,rgba(16,78,74,.32),transparent 32rem),#151311}button{border:1px solid #6d604c;border-radius:7px;padding:.65rem .85rem;color:#f8efd9;background:#2b2823;font:inherit;cursor:pointer;transition:border-color .14s ease,background .14s ease,transform .14s ease}button:hover:not(:disabled){border-color:#d7a94f;background:#373029;transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.45}h1,h2,p{margin:0}h1{color:#f8efd9;font-size:clamp(2rem,5vw,4.5rem);line-height:.95}h2{color:#fff4d6;font-size:1.15rem}.app-shell{width:min(1500px,100%);margin:0 auto;padding:1.25rem}.topbar{display:flex;align-items:end;justify-content:space-between;gap:1rem;padding:1rem 0 1.4rem}.eyebrow{color:#d7a94f;font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.tabs,.button-row{display:flex;flex-wrap:wrap;gap:.6rem}.winds-indicator{display:grid;gap:.15rem;justify-items:end;margin-left:auto;padding:.55rem .75rem;border:1px solid rgba(87,173,190,.45);border-radius:7px;background:#153a42b8}.winds-indicator span{color:#bfe9ee;font-size:.72rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.winds-indicator strong{color:#fff8de;font-size:1.25rem}.tabs button.active,.tile-palette button.active,.tool-toggle button.active{border-color:#d7a94f;background:#64451f}.play-layout,.create-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(20rem,26rem);gap:1rem;align-items:start}.board-panel,.todo-panel{position:relative;border:1px solid rgba(215,169,79,.28);border-radius:8px;background:#1b1915e0}.panel-heading{display:flex;justify-content:space-between;gap:1rem;padding:1rem;border-bottom:1px solid rgba(215,169,79,.18)}.board-shell{position:relative}.reset-view-button{position:absolute;top:.75rem;right:.75rem;z-index:10}.board{position:relative;min-height:29rem;overflow:hidden;cursor:grab;background:#171513;touch-action:none}.board:active{cursor:grabbing}.board-content{position:absolute;left:0;top:0;display:grid;grid-template-columns:repeat(var(--board-cols),2.75rem);grid-template-rows:repeat(var(--board-rows),2.75rem);width:max-content;min-width:100%;min-height:100%;transform:translate(var(--pan-x),var(--pan-y)) scale(var(--zoom));transform-origin:0 0}.tile{position:relative;z-index:1;display:flex;grid-column:calc(var(--x) + 1) / span var(--w);grid-row:calc(var(--y) + 1) / span var(--h);align-items:center;justify-content:center;min-width:0;min-height:0;padding:.5rem;color:#fff8de;border:2px solid #15110d;background:transparent;text-align:center;pointer-events:none;box-shadow:inset 0 0 0 2px #f8efd924,inset 0 0 1.2rem #00000080}.tile span{overflow-wrap:anywhere;font-size:.82rem;font-weight:800}.tile small{position:absolute;top:.25rem;right:.35rem;color:#d7a94f}.tile-room{background:#3f3a30}.tile-corridor{background:#2f403a}.tile-corner{background:#313f47}.tile-tJunction{background:#45364a}.tile-objective{border-color:#d7a94f;background:#5a302b}.tile.cleared{box-shadow:inset 0 0 0 999px #ffffff14}.board-cell{z-index:2;grid-column:calc(var(--x) + 1);grid-row:calc(var(--y) + 1);min-width:0;min-height:0;padding:0;border:1px solid rgba(255,244,214,.2);border-radius:0;background:#40382fad;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.board-cell:hover{background:#d7a94f2e;transform:none}.board-cell.targetable-cell{background:#57adbe38;box-shadow:inset 0 0 0 2px #57adbec7}.board-cell.selected-target-cell{background:#f3d87a52;box-shadow:inset 0 0 0 3px #f3d87af2}.selected-tile-cell{border-color:#d7a94fb8;background:#5c482bdb}.pending-door-cell{border-color:#f8efd9;background:#d7a94f75;box-shadow:inset 0 0 0 2px #f8efd9e0}.door-marker{position:absolute;z-index:4;left:calc(var(--token-x) * 2.75rem);top:calc(var(--token-y) * 2.75rem);width:2.75rem;height:2.75rem;border:1px solid #f7d986;border-radius:2px;background:transparent;pointer-events:none}.door-closed{background:#4b2d18;box-shadow:0 0 0 1px #15110de6}.door-open{background:#d7a94f85;box-shadow:0 0 0 1px #f8efd95c}.door-north{height:.42rem;transform:translateY(-.21rem)}.door-east{width:.42rem;transform:translate(2.54rem)}.door-south{height:.42rem;transform:translateY(2.54rem)}.door-west{width:.42rem;transform:translate(-.21rem)}.trap-marker{position:absolute;z-index:3;left:calc(var(--token-x) * 2.75rem + .72rem);top:calc(var(--token-y) * 2.75rem + .72rem);display:grid;width:1.3rem;height:1.3rem;place-items:center;border:2px solid #151311;border-radius:50%;background:#d7a94f;color:#151311;font-size:.9rem;font-weight:900;line-height:1;pointer-events:none;box-shadow:0 .25rem .55rem #0000006b}.trap-triggered{background:#8f463a;color:#f8efd9}.token{position:absolute;z-index:3;left:calc(var(--token-x) * 2.75rem + .28rem);top:calc(var(--token-y) * 2.75rem + .28rem);display:grid;width:2.15rem;height:2.15rem;place-items:center;border:2px solid #f8efd9;border-radius:50%;color:#151311;font-size:.86rem;font-weight:900;box-shadow:0 .35rem .85rem #00000059;padding:0;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.hero-token{background:#e8c766}.hero-1{background:#9fd1a6}.hero-2{background:#77b9d7}.hero-3{background:#d99ad7}.monster-token{background:#e0764d}.boss-token{color:#fff7d3;background:#951f2f}.combat-overlay,.spellcasting-overlay,.trap-notice-overlay,.death-notice-overlay{position:absolute;inset:4.75rem 1rem 5.5rem;z-index:30;display:grid;place-items:center;padding:1rem;background:#0c0b0ab8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.spellcasting-overlay{position:fixed;inset:0;padding:1rem}.hero-selection-overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:1rem;background:#0c0b0ac7;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.hero-selection-card{display:grid;width:min(52rem,100%);gap:1rem;padding:1rem;border:1px solid rgba(215,169,79,.5);border-radius:8px;background:#1f1c17fa;box-shadow:0 1rem 2.5rem #00000073}.spellcasting-card{display:grid;grid-template-rows:auto minmax(0,1fr);width:min(38rem,100%);max-height:calc(100vh - 2rem);gap:1rem;padding:1rem;overflow:hidden;border:1px solid rgba(87,173,190,.5);border-radius:8px;background:#192020fa;box-shadow:0 1rem 2.5rem #00000073}.death-notice-card{display:grid;width:min(24rem,100%);gap:1rem;padding:1rem;border:1px solid rgba(204,56,66,.65);border-radius:8px;background:#261616fa;box-shadow:0 1rem 2.5rem #00000073;text-align:center}.trap-notice-card{display:grid;width:min(26rem,100%);gap:1rem;padding:1rem;border:1px solid rgba(215,169,79,.72);border-radius:8px;background:#2a1f16fa;box-shadow:0 1rem 2.5rem #00000073;text-align:center}.trap-notice-card h2{font-size:1.35rem}.trap-notice-card strong{color:#f3d87a}.death-notice-card h2{font-size:1.35rem}.spell-list{display:grid;align-content:start;gap:.75rem;min-height:0;overflow-y:auto;padding-right:.25rem}.spell-option{display:grid;gap:.75rem;padding:.85rem;border:1px solid rgba(248,239,217,.14);border-radius:7px;background:#00000029}.spell-option>div:first-child{display:flex;justify-content:space-between;gap:.75rem}.spell-option span{color:#c8e5e7}.spell-cost-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.spell-cost-grid span{padding:.45rem;border-radius:6px;background:#57adbe1f;text-align:center}.spell-slider{display:grid;gap:.35rem;color:#c8e5e7;font-size:.82rem}.spell-slider input{width:100%}.hero-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.hero-selection-option{display:grid;gap:.6rem;min-width:0;text-align:left}.combat-card{display:grid;width:min(42rem,100%);gap:1rem;padding:1rem;border:1px solid rgba(215,169,79,.5);border-radius:8px;background:#1f1c17fa;box-shadow:0 1rem 2.5rem #00000073}.area-effect-card{max-height:calc(100vh - 10rem);grid-template-rows:auto auto minmax(0,1fr) auto;overflow:hidden}.combat-heading{display:flex;justify-content:space-between;gap:1rem}.combat-heading h2{margin-top:.15rem}.dice-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.dice-side{display:grid;gap:.6rem;padding:.85rem;border:1px solid rgba(248,239,217,.14);border-radius:7px;background:#00000026}.dice-side h3{margin:0;color:#fff4d6;font-size:.95rem}.dice-row{display:flex;flex-wrap:wrap;gap:.6rem}.compact-dice-row{gap:.4rem}.combat-die{position:relative;display:grid;width:3rem;height:3rem;place-items:center;border:2px solid rgba(248,239,217,.85);border-radius:8px;color:#151311;font-size:1.35rem;font-weight:900;box-shadow:0 .45rem .85rem #0000004d;-webkit-user-select:none;user-select:none}.die-boost{position:absolute;right:-.35rem;bottom:-.35rem;min-height:1.45rem;padding:.1rem .35rem;border-radius:999px;border-color:#f8efd9;background:#64451f;color:#fff4d6;font-size:.72rem}.combat-die.spent{filter:grayscale(1);opacity:.42}.combat-die.lost-die{filter:grayscale(1);opacity:.28;box-shadow:none}.combat-die.exploded-die{border-color:#ffd866;box-shadow:0 0 .65rem #ffd866d9,0 .45rem .85rem #0000004d}.area-effect-target-list{display:grid;gap:.65rem;min-height:0;overflow-y:auto;padding-right:.25rem}.area-effect-target{display:grid;grid-template-columns:minmax(8rem,1fr) minmax(0,2fr);gap:.75rem;align-items:center;padding:.75rem;border:1px solid rgba(248,239,217,.14);border-radius:7px;background:#00000026}.area-effect-target>div:first-child{display:grid;gap:.25rem}.area-effect-target span{color:#c8e5e7;font-size:.9rem}.draggable-die{cursor:grab}.draggable-die:active{cursor:grabbing}.rolling{animation:dice-roll .18s linear infinite}.dice-hero-0{background:#e8c766}.dice-hero-1{background:#9fd1a6}.dice-hero-2{background:#77b9d7}.dice-hero-3{background:#d99ad7}.dice-monster{background:#e0764d}.dice-boss{color:#fff7d3;background:#951f2f}.combat-summary{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;padding:.65rem .75rem;border-radius:7px;background:#0003}.block-warning{display:grid;gap:.65rem;padding:.75rem;border:1px solid rgba(215,169,79,.62);border-radius:7px;background:#523a1a80}.block-warning .button-row{justify-content:end}@keyframes dice-roll{0%{transform:rotate(-8deg) translateY(0)}50%{transform:rotate(8deg) translateY(-.12rem)}to{transform:rotate(-8deg) translateY(0)}}.token.selected{outline:3px solid #d7a94f;outline-offset:2px}.targetable-token{cursor:pointer;outline:3px solid #57adbe;outline-offset:2px}.selected-target{outline-color:#f3d87a;box-shadow:0 0 0 .28rem #57adbe40}.empty-board{display:grid;grid-column:1 / -1;grid-row:1 / -1;place-items:center;color:#b5ab98}.turn-controls{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:.75rem;align-items:center;padding:.75rem;border-top:1px solid rgba(215,169,79,.18)}.move-pad{display:grid;grid-template-columns:repeat(3,3.35rem);gap:.35rem}.move-pad button{min-height:2.15rem;padding:.35rem .45rem;white-space:nowrap}.move-pad button:first-child{grid-column:2}.move-pad button:nth-child(2){grid-column:1}.move-pad button:nth-child(3){grid-column:3}.move-pad button:nth-child(4){grid-column:2}.action-strip{justify-content:end}.action-strip button{min-height:2.2rem;padding:.42rem .65rem;white-space:nowrap}.primary-action{border-color:#d7a94f;background:#64451f}.side-panel{display:grid;gap:1rem}.panel,.todo-panel{padding:1rem}.panel{border:1px solid rgba(215,169,79,.25);border-radius:8px;background:#1c1a16f0}.hero-list,.monster-list{display:grid;gap:.6rem;margin-top:.8rem}.hero,.monster,.treasure{display:grid;gap:.35rem;padding:.7rem;border:1px solid rgba(248,239,217,.12);border-radius:7px;background:#ffffff0b}.hero-select{width:100%;color:#f8efd9;text-align:left;border:0;background:transparent;padding:0}.hero-select>div,.monster>div{display:flex;justify-content:space-between;gap:.75rem}.hero span,.monster span,.treasure span,.muted{color:#c8bda9}.hero.defeated{opacity:.52}.equipment-summary{margin:0}.equipment-select{display:grid;gap:.35rem;color:#c8bda9;font-size:.86rem}.equipment-select select{width:100%;min-height:2rem;border:1px solid rgba(215,169,79,.28);border-radius:6px;background:#171511;color:#f8efd9}.spell-select{margin:0;padding:.5rem;border:1px solid rgba(215,169,79,.2);border-radius:6px}.spell-select legend{padding:0 .25rem;color:#f8efd9}.spell-select label{display:flex;align-items:center;gap:.45rem}.selected-card{border-color:#d7a94f;background:#d7a94f24}.turn-status{display:grid;gap:.35rem;margin-top:.7rem}dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(2.35rem,1fr));gap:.35rem;margin:0}dl div{display:grid;place-items:center;padding:.35rem;border-radius:6px;background:#00000029}dt{color:#d7a94f;font-size:.75rem;font-weight:800}dd{margin:0}.boss{border-color:#d7a94f8c}.objective-treasure{border-color:#d7a94f}.log-list{display:grid;gap:.45rem;max-height:18rem;overflow:auto;margin:.8rem 0 0;padding-left:1.25rem;color:#d8cfbd}.tile-palette,.tool-toggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin:.9rem 0}.wide-button{width:100%}.todo-panel{max-width:54rem}.todo-list{display:grid;gap:.75rem;margin:1rem 0 0;padding-left:1.4rem}@media(max-width:980px){.topbar,.panel-heading{align-items:stretch;flex-direction:column}.play-layout,.create-layout{grid-template-columns:1fr}.hero-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.app-shell{padding:.75rem}.board{min-height:24rem}.board-content{grid-template-columns:repeat(var(--board-cols),2rem);grid-template-rows:repeat(var(--board-rows),2rem)}.token{left:calc(var(--token-x) * 2rem + .18rem);top:calc(var(--token-y) * 2rem + .18rem);width:1.65rem;height:1.65rem;font-size:.75rem}.door-marker{left:calc(var(--token-x) * 2rem);top:calc(var(--token-y) * 2rem);width:2rem;height:2rem}.door-north,.door-south{height:.34rem}.door-east,.door-west{width:.34rem}.door-east{transform:translate(1.83rem)}.door-south{transform:translateY(1.83rem)}.move-pad{grid-template-columns:repeat(3,1fr);width:100%}.turn-controls{grid-template-columns:1fr}.action-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));justify-content:stretch}.action-strip button{min-width:0;padding-inline:.45rem}.tile-palette{grid-template-columns:1fr}.combat-overlay,.spellcasting-overlay,.trap-notice-overlay,.death-notice-overlay{inset:4.5rem .5rem 5rem}.dice-columns,.spell-cost-grid,.hero-card-grid{grid-template-columns:1fr}}
