.battle-panel{display:grid;gap:1rem}.battle-panel>header p,.battle-map figcaption{color:var(--ink-muted, #52606d)}.battle-map{margin:0}.battle-map__canvas{--grid-width: 10;--grid-height: 10;position:relative;width:100%;min-height:18rem;overflow:hidden;border:2px solid var(--line-strong, #334e68);border-radius:.75rem;background-color:#d9e2ec;background-image:linear-gradient(to right,rgb(72 101 129 / 35%) 1px,transparent 1px),linear-gradient(to bottom,rgb(72 101 129 / 35%) 1px,transparent 1px);background-size:calc(100% / var(--grid-width)) calc(100% / var(--grid-height));isolation:isolate}.battle-map__canvas--hex{background-color:#e4ead9;background-image:linear-gradient(30deg,rgb(91 107 65 / 28%) 12%,transparent 12.5%,transparent 87%,rgb(91 107 65 / 28%) 87.5%),linear-gradient(150deg,rgb(91 107 65 / 28%) 12%,transparent 12.5%,transparent 87%,rgb(91 107 65 / 28%) 87.5%)}.battle-map__media,.battle-map__fallback{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.battle-map__media{z-index:0;object-fit:cover;opacity:.82;pointer-events:none}.battle-map__fallback{z-index:0;display:grid;place-items:center;color:#486581;font-weight:700;text-transform:uppercase;pointer-events:none}.battle-geometry{position:absolute;z-index:1;min-width:2px;min-height:2px;pointer-events:none;background:#627d987a;border:1px solid rgb(51 78 104 / 75%)}.battle-geometry--wall{background:#52606d}.battle-geometry--door{background:#a66f3f}.battle-geometry--light{background:#ffdc6085;border-radius:50%}.battle-geometry--spawn{background:#3cb3716b;border-radius:50%}.battle-geometry--marker{background:#b341418c;border-radius:50%}.battle-token{position:absolute;z-index:2;display:grid;min-width:1.6rem;min-height:1.6rem;padding:0;overflow:hidden;place-items:center;border:3px solid #fff;border-radius:50%;box-shadow:0 2px 8px #00000061;color:#fff;background:#486581}.battle-token--character{background:#176b55}.battle-token--monster{background:#9b2c2c}.battle-token--npc{background:#805ad5}.battle-token.is-selected{outline:4px solid #f6c344;outline-offset:2px}.battle-token.is-current-turn{box-shadow:0 0 0 5px #1e90ff8c,0 2px 8px #00000061}.battle-token img,.battle-token__fallback{grid-area:1 / 1;width:100%;height:100%}.battle-token img{object-fit:cover}.battle-token__fallback{display:grid;place-items:center;font-weight:800}.battle-map figcaption{margin-top:.5rem}.battle-layout{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr))}.battle-layout>section,.loot-card{padding:1rem;border:1px solid var(--line, #bcccdc);border-radius:.75rem;background:var(--surface, #fff)}.battle-move fieldset,.battle-start,.loot-card__claims{display:flex;flex-wrap:wrap;gap:.5rem;align-items:end}.battle-move input{width:6rem}.battle-resources .is-exhausted{color:#9b2c2c;font-weight:700}.battle-actions,.battle-initiative,.battle-history,.loot-list{display:grid;gap:.5rem}.loot-list{padding:0;list-style:none;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr))}.loot-card{display:grid;gap:.75rem;grid-template-columns:auto 1fr;height:100%}.loot-card.is-claimed{opacity:.72}.loot-card h4{margin-top:0}.loot-card__claims{display:flex;flex-wrap:wrap;gap:.5rem}.loot-icon{position:relative;display:grid;width:3rem;height:3rem;overflow:hidden;place-items:center;border-radius:.5rem;background:#7b5b31;color:#fff}.loot-icon img,.loot-icon__fallback{grid-area:1 / 1;width:100%;height:100%}.loot-icon img{object-fit:cover}.loot-icon__fallback{display:grid;place-items:center;font-size:1.35rem;font-weight:800}@media(prefers-reduced-motion:no-preference){.battle-token{transition:left .16s ease,top .16s ease,outline-color .12s ease}}.world-panel,.scenario-browser,.scenario-editor{--world-ink: #17201f;--world-muted: #5c6965;--world-line: #b9c7c0;--world-paper: #f8f6ef;--world-accent: #315e52;color:var(--world-ink)}.scenario-browser__pools,.scenario-content-grid,.world-map-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:1rem}.scenario-browser__pools ul,.scenario-routes,.scenario-map-list,.world-destinations,.world-events{list-style:none;margin:0;padding:0}.scenario-browser__pools>section,.scenario-content-grid>section,.world-panel>section,.scenario-projection>section{margin-block:1rem}.scenario-browser__actions,.scenario-editor__actions{display:flex;flex-wrap:wrap;gap:.55rem}.scenario-tree,.scenario-tree ol{list-style:none;margin:0;padding-left:1rem;position:relative}.scenario-tree ol{border-left:2px solid var(--world-line);margin-left:.8rem}.scenario-node{margin:.65rem 0;position:relative}.scenario-node>article{background:var(--world-paper);border:1px solid var(--world-line);border-left:.35rem solid var(--world-accent);border-radius:.4rem;padding:.65rem .8rem}.scenario-node--world>article{border-left-color:#315e52}.scenario-node--local>article{border-left-color:#9b6c2f}.scenario-node--dungeon>article{border-left-color:#654b73}.scenario-node__kind{color:var(--world-muted);display:block;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}.scenario-node p,.world-current p{margin:.35rem 0 0}.scenario-secret{color:#704127;font-style:italic}.scenario-routes>li,.scenario-map-list>li,.scenario-manage-group li,.world-destinations>li,.world-events>li{border-bottom:1px solid var(--world-line);padding:.75rem 0}.scenario-editor fieldset,.scenario-browser fieldset,.world-events article{display:grid;gap:.7rem}.scenario-editor label,.scenario-browser label,.world-events label{display:grid;gap:.25rem}.scenario-editor textarea,.world-events textarea{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.world-panel__position{display:grid;gap:.65rem}.world-current{background:linear-gradient(135deg,#eef5ef,#f8f6ef);border:2px solid var(--world-accent);border-radius:.55rem;padding:.85rem 1rem}.world-current>p:first-child{color:var(--world-muted);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}.world-handoff{border-left:.3rem solid #bd7b23;padding:.6rem .8rem}.world-map{margin:0}.world-map__canvas{background:#dfe8df;border:2px solid var(--world-accent);border-radius:.55rem;min-height:10rem;overflow:hidden;position:relative}.world-map__canvas>img{height:100%;top:0;right:0;bottom:0;left:0;object-fit:cover;position:absolute;width:100%}.world-map__backdrop{color:#486158;display:grid;font-size:1.1rem;top:0;right:0;bottom:0;left:0;letter-spacing:.08em;place-items:center;position:absolute;text-transform:uppercase}.world-map__feature{background:#f7e4a4;border:1px solid #5c4c1e;border-radius:999px;font-size:.65rem;padding:.15rem .35rem;position:absolute;transform:translate(-50%,-50%);z-index:1}.world-map__feature:not([style]){display:inline-block;margin:.25rem;position:relative;transform:none}.world-map__feature.is-current{box-shadow:0 0 0 .2rem #fffc,0 0 0 .4rem #9f342b}.world-map figcaption{color:var(--world-muted);padding-top:.4rem}.world-destinations article,.world-events article{background:var(--world-paper);border-radius:.4rem;padding:.75rem}.world-events .is-blocking article{border:2px solid #9f342b}@media(max-width:40rem){.scenario-tree,.scenario-tree ol{padding-left:.45rem}.scenario-tree ol{margin-left:.2rem}}.generation-panel{--generation-ink: #1b211f;--generation-muted: #5e6864;--generation-line: #bcc8c2;--generation-paper: #faf8f1;--generation-accent: #315e52;--generation-danger: #8d302b;color:var(--generation-ink);display:grid;gap:1.25rem}.generation-panel__header>p:first-child,.generation-job>header>p:first-child{color:var(--generation-muted);font-size:.75rem;letter-spacing:.09em;text-transform:uppercase}.generation-form fieldset{display:grid;gap:.75rem}.generation-form label{display:grid;gap:.3rem}.generation-form textarea{resize:vertical}.generation-form__numbers{display:grid;gap:.75rem;grid-template-columns:repeat(3,minmax(0,1fr))}.generation-form__privacy{color:var(--generation-muted);font-size:.9rem;margin:0}.generation-panel__error{border-left:.3rem solid var(--generation-danger);padding:.55rem .8rem}.generation-panel__error p{margin:0 0 .45rem}.generation-job{background:var(--generation-paper);border:1px solid var(--generation-line);border-radius:.65rem;display:grid;gap:1rem;padding:1rem}.generation-job--completed{border-top:.35rem solid var(--generation-accent)}.generation-job--failed,.generation-job--cancelled{border-top:.35rem solid var(--generation-danger)}.generation-job__progress{display:grid;gap:.35rem}.generation-job__progress progress{accent-color:var(--generation-accent);inline-size:100%}.generation-job__progress p{color:var(--generation-muted);margin:0}.generation-job__actions{display:flex;flex-wrap:wrap;gap:.6rem}.generation-visuals{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr))}.generation-visuals figure{margin:0}.generation-visuals img{aspect-ratio:4 / 3;background:#dfe8df;border:1px solid var(--generation-line);border-radius:.45rem;display:block;inline-size:100%;object-fit:cover}.generation-visuals figcaption{color:var(--generation-muted);padding-block-start:.35rem}.generation-result{border-top:1px solid var(--generation-line);display:grid;gap:1rem;padding-top:1rem}.generation-result h5{font-size:1.15rem;margin-block:.25rem}.generation-author{border-top:2px solid var(--generation-accent);padding-top:1rem}@media(max-width:38rem){.generation-form__numbers{grid-template-columns:1fr}}.play-interaction-panel,.narrative-panel{display:grid;gap:1rem}.play-interaction-panel__layout{display:grid;gap:1rem;grid-template-columns:minmax(0,2fr) minmax(16rem,1fr);align-items:start}.message-feed,.journal-list,.play-pings ul{list-style:none;margin:0;padding:0}.message-feed{display:grid;gap:.75rem;max-height:32rem;overflow-y:auto;scroll-behavior:smooth}.message-feed__item,.roll-prompt,.play-pings,.narrative-panel__grid>section,.journal-controls{border:1px solid color-mix(in srgb,currentColor 22%,transparent);border-radius:.75rem;padding:.85rem}.message-feed__item header,.roll-prompt>header{display:flex;justify-content:space-between;gap:.75rem;align-items:baseline}.message-feed__item time{font-size:.78rem;opacity:.7}.message-feed__item--narration{border-inline-start:.35rem solid #7c5cff;background:color-mix(in srgb,#7c5cff 9%,transparent)}.message-feed__item--whisper{border-inline-start:.35rem solid #2d8bba;background:color-mix(in srgb,#2d8bba 9%,transparent)}.message-composer,.roll-rail,.narrative-panel__grid,.journal-controls fieldset{display:grid;gap:.75rem}.message-composer textarea,.journal-controls textarea{display:block;width:100%;box-sizing:border-box}.play-pings{border-color:#b76d00;background:color-mix(in srgb,#f5a623 13%,transparent)}.play-pings li{display:flex;justify-content:space-between;gap:.75rem;align-items:center}.roll-rail{position:sticky;top:1rem}.roll-prompt{display:grid;gap:.5rem}.roll-prompt--pending{border-color:#b76d00;box-shadow:0 0 0 .15rem color-mix(in srgb,#f5a623 20%,transparent)}.roll-prompt__status,.journal-tag{border-radius:999px;background:color-mix(in srgb,currentColor 10%,transparent);font-size:.78rem;padding:.15rem .5rem;text-transform:capitalize}.roll-prompt__action{min-height:2.75rem;font-weight:700}.roll-result__dice{display:flex;flex-wrap:wrap;gap:.55rem;padding-block:.4rem}.roll-result__die{display:grid;place-items:center;width:2.6rem;aspect-ratio:1;border:.16rem solid currentColor;border-radius:.45rem;font-size:1.25rem;font-weight:800;animation:dissy-die-roll .65s cubic-bezier(.2,.8,.2,1);transform-origin:center}.agent-state{border-inline-start:.3rem solid #7c5cff;padding-inline-start:.75rem}.agent-state--error{border-color:#b42318}.narrative-panel__grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));align-items:start}.journal-list{display:grid;gap:.65rem}.journal-list>li+li{border-top:1px solid color-mix(in srgb,currentColor 16%,transparent);padding-top:.65rem}.journal-control{display:flex;flex-wrap:wrap;gap:.5rem;align-items:end}@keyframes dissy-die-roll{0%{opacity:0;transform:translateY(-.8rem) rotate(-25deg) scale(.75)}55%{opacity:1;transform:translateY(.15rem) rotate(8deg) scale(1.08)}to{opacity:1;transform:translateY(0) rotate(0) scale(1)}}@media(max-width:48rem){.play-interaction-panel__layout{grid-template-columns:1fr}.roll-rail{position:static}}@media(prefers-reduced-motion:reduce){.message-feed{scroll-behavior:auto}.roll-result__die{animation:none}}.character-sheet{display:grid;gap:1rem;margin-block:1rem;padding:1rem;border:1px solid color-mix(in srgb,currentColor 25%,transparent);border-radius:.75rem}.character-sheet__header,.character-sheet__actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem}.character-sheet__header h4,.character-sheet__header p{margin-block:0 .25rem}.character-sheet__form-grid,.character-sheet__columns,.character-sheet__abilities{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr))}.character-sheet label{display:grid;gap:.25rem}.character-sheet__abilities{margin-block:.75rem}.character-sheet__abilities>div{padding:.5rem;border-radius:.5rem;background:color-mix(in srgb,currentColor 7%,transparent)}.character-sheet__abilities dt{text-transform:capitalize}.character-sheet__abilities dd{margin:0;font-size:1.25rem;font-weight:700}.play-seat-list{display:grid;gap:.75rem;padding:0;list-style:none}:root{color-scheme:light;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#253029;background:#f4f0e7;font-synthesis:none;text-rendering:optimizeLegibility;--portal-ink: #253029;--portal-muted: #647068;--portal-green: #244b38;--portal-green-deep: #172f24;--portal-gold: #b8843f;--portal-paper: #fffdf8;--portal-line: #d9d1c1;--portal-danger: #9b352d;--portal-shadow: 0 16px 40px rgb(32 43 36 / 10%)}*{box-sizing:border-box}html{min-width:320px;min-height:100%;background:#f4f0e7}body{min-width:320px;min-height:100vh;margin:0;background:radial-gradient(circle at 85% 0%,rgb(184 132 63 / 12%),transparent 30rem),#f4f0e7}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:3px}:focus-visible{outline:3px solid #c28a3f;outline-offset:3px}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}.portal-shell{min-height:100vh}.portal-skip-link{position:fixed;z-index:100;top:.75rem;left:.75rem;padding:.7rem 1rem;color:#fff;background:var(--portal-green-deep);border-radius:.4rem;transform:translateY(-160%)}.portal-skip-link:focus{transform:translateY(0)}.portal-header{position:sticky;z-index:10;top:0;display:flex;min-height:5rem;align-items:center;justify-content:space-between;gap:2rem;padding:.8rem clamp(1rem,4vw,3.5rem);color:#f9f6ef;background:var(--portal-green-deep);border-bottom:3px solid var(--portal-gold);box-shadow:0 5px 18px #0f1b152e}.portal-brand{display:inline-flex;align-items:center;gap:.8rem;color:inherit;text-decoration:none}.portal-brand-mark{display:grid;width:2.75rem;height:2.75rem;place-items:center;font-family:Crimson Pro,Georgia,serif;font-size:1rem;font-weight:700;color:#f7e9cc;border:1px solid #d6a65d;border-radius:.7rem .45rem;transform:rotate(-3deg)}.portal-brand strong,.portal-brand small,.portal-user-copy strong,.portal-user-copy small{display:block}.portal-brand strong{font-family:Crimson Pro,Georgia,serif;font-size:1.35rem;line-height:1;letter-spacing:.02em}.portal-brand small,.portal-user-copy small{margin-top:.2rem;font-size:.72rem;color:#cdd6d0}.portal-identity{display:flex;align-items:center;gap:.7rem}.portal-avatar{width:2.45rem;height:2.45rem;object-fit:cover;border:2px solid rgb(255 255 255 / 70%);border-radius:50%}.portal-avatar-fallback{display:grid;place-items:center;font-size:.75rem;font-weight:700;color:var(--portal-green-deep);background:#f2dfbd}.portal-user-copy strong{max-width:14rem;overflow:hidden;font-size:.9rem;text-overflow:ellipsis;white-space:nowrap}.portal-logout{min-height:2.5rem;margin-left:.4rem;padding:.55rem .9rem;font-weight:600;color:#fff;background:transparent;border:1px solid rgb(255 255 255 / 48%);border-radius:.45rem}.portal-logout:hover{background:#ffffff1a;border-color:#fff}.portal-frame{display:grid;grid-template-columns:minmax(13rem,17rem) minmax(0,1fr);min-height:calc(100vh - 5rem)}.portal-sidebar{display:flex;flex-direction:column;padding:2.25rem clamp(1rem,2.5vw,2rem);background:#fffdf8b8;border-right:1px solid var(--portal-line)}.portal-nav-heading{margin:0 0 .7rem;font-size:.72rem;font-weight:700;color:var(--portal-muted);letter-spacing:.12em;text-transform:uppercase}.portal-nav{display:grid;gap:.35rem}.portal-nav a{padding:.72rem .8rem;font-weight:600;color:var(--portal-ink);text-decoration:none;border-left:3px solid transparent;border-radius:0 .35rem .35rem 0}.portal-nav a:hover{color:var(--portal-green);background:#eee8dc;border-left-color:var(--portal-gold)}.portal-sidebar-note{margin:auto 0 0;padding-top:2rem;font-family:Crimson Pro,Georgia,serif;font-size:1rem;line-height:1.45;color:var(--portal-muted)}.portal-main{width:100%;max-width:92rem;padding:clamp(1.25rem,4vw,3.5rem)}.portal-main h1,.portal-main h2,.portal-main h3{font-family:Crimson Pro,Georgia,serif;color:var(--portal-green-deep)}.portal-main h1{margin-top:0;font-size:clamp(2rem,5vw,3.35rem);line-height:1}.portal-main input,.portal-main select,.portal-main textarea{width:100%;min-height:2.75rem;padding:.65rem .75rem;color:var(--portal-ink);background:var(--portal-paper);border:1px solid #aaa393;border-radius:.4rem}.portal-main label{display:inline-block;margin-bottom:.35rem;font-weight:600}.portal-main button{min-height:2.75rem;padding:.65rem 1rem;font-weight:700;color:#fff;background:var(--portal-green);border:1px solid var(--portal-green);border-radius:.4rem}.portal-main button:hover:not(:disabled){background:var(--portal-green-deep)}.portal-card{padding:clamp(1rem,3vw,1.6rem);background:var(--portal-paper);border:1px solid var(--portal-line);border-radius:.65rem;box-shadow:var(--portal-shadow)}@media(max-width:760px){.portal-header{position:static;align-items:flex-start;gap:.8rem;padding:.8rem 1rem}.portal-brand small,.portal-user-copy{display:none}.portal-identity{gap:.4rem}.portal-logout{margin-left:0}.portal-frame{grid-template-columns:1fr}.portal-sidebar{padding:.65rem 1rem;overflow-x:auto;border-right:0;border-bottom:1px solid var(--portal-line)}.portal-nav-heading,.portal-sidebar-note{display:none}.portal-nav{display:flex;width:max-content;min-width:100%;gap:.25rem}.portal-nav a{padding:.65rem .75rem;white-space:nowrap;border-bottom:3px solid transparent;border-left:0;border-radius:.35rem .35rem 0 0}.portal-nav a:hover{border-bottom-color:var(--portal-gold);border-left:0}.portal-main{padding:1.35rem 1rem 2.5rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}.portal-auth{width:min(100% - 2rem,30rem);margin:clamp(2rem,10vh,7rem) auto;padding:clamp(1.5rem,5vw,2.5rem);border:1px solid var(--portal-line);border-top:4px solid var(--portal-gold);border-radius:1rem;background:var(--portal-paper);box-shadow:var(--portal-shadow)}.portal-login-eyebrow{color:var(--portal-green);font-size:.8rem;letter-spacing:.14em;font-weight:700}.portal-auth h1{margin:.75rem 0}.portal-auth>p{line-height:1.6}.portal-login-form{display:grid;gap:.7rem;margin-top:1.5rem}.portal-login-form label{font-weight:600}.portal-login-form input{width:100%;padding:.8rem;border:1px solid var(--portal-line);border-radius:.4rem}.portal-login-form button,.portal-google-login{padding:.85rem;border-radius:.4rem;text-align:center;font-weight:600}.portal-login-form button{color:#fff;background:var(--portal-green);border:0;margin-top:.5rem}.portal-google-login{color:var(--portal-ink);border:1px solid var(--portal-line);text-decoration:none}.portal-auth [role=alert]{color:var(--portal-danger)}.profile-page,.campaign-resources{display:grid;gap:1.25rem}.resource-categories{display:flex;flex-wrap:wrap;gap:.75rem}.resource-categories button[aria-pressed=true]{outline:2px solid currentColor;outline-offset:2px}.resource-kind{display:inline-block;margin:.25rem .5rem;font-size:.85rem;font-weight:600}
