:root{--bg: #12101a;--bg-raised: #1b1826;--bg-card: #221e30;--bg-inset: #0d0b14;--bg-hover: #2b2640;--border: #332d47;--border-strong: #453d61;--text: #e8e4f2;--text-muted: #a49dbd;--text-faint: #6f6889;--accent: #bb86fc;--accent-dim: #8b5fd6;--accent-glow: rgba(187, 134, 252, .18);--accent-text: #12101a;--ok: #4ade80;--warn: #fbbf24;--crit: #a78bfa;--danger: #f87171;--str: hsl(30 100% 78%);--dex: hsl(100 60% 72%);--int: hsl(210 100% 80%);--apt: hsl(290 100% 84%);--str-dim: hsl(30 55% 64%);--dex-dim: hsl(100 40% 62%);--int-dim: hsl(210 55% 68%);--apt-dim: hsl(290 50% 72%);--combat: #f0937d;--environment: #7dd3a0;--social: #90b8f0;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.5rem;--sp-6: 2rem;--school-air: 236 238 245;--school-water: 58 96 178;--school-earth: 146 100 60;--school-fire: 206 66 54;--school-body: 224 190 70;--school-mind: 150 92 202;--school-chaos: 226 130 46;--school-law: 106 170 228;--school-nature: 88 170 88;--school-death: 46 42 56;--radius: 8px;--radius-sm: 5px;--radius-lg: 14px;--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-xs: .72rem;--fs-sm: .82rem;--fs-md: .92rem;--fs-lg: 1.05rem;--fs-xl: 1.35rem;--shadow: 0 2px 12px rgb(0 0 0 / .35);--shadow-lg: 0 8px 32px rgb(0 0 0 / .5);--speed: .18s}@media(prefers-reduced-motion:reduce){:root{--speed: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-md);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.25}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}button:disabled{cursor:not-allowed}input,textarea,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.app{display:flex;flex-direction:column;height:100%;max-width:1500px;margin:0 auto}.topbar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);background:var(--bg-raised);flex-wrap:wrap}.topbar__brand{font-size:var(--fs-lg);font-weight:700;letter-spacing:.02em;color:var(--accent);margin-right:var(--sp-2)}.topbar__spacer{flex:1}.tabs{display:flex;gap:var(--sp-1);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-sm);color:var(--text-muted);font-size:var(--fs-sm);white-space:nowrap;transition:background var(--speed),color var(--speed)}.tab:hover{background:var(--bg-hover);color:var(--text)}.tab[aria-current=true]{background:var(--accent-glow);color:var(--accent);font-weight:600}.panels{flex:1;min-height:0;display:grid;grid-template-columns:1fr}.panel{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-4)}.panel[hidden]{display:none}.panel>*{flex-shrink:0}.mobile-switch{display:flex;border-bottom:1px solid var(--border);background:var(--bg-raised)}.mobile-switch button{flex:1;padding:var(--sp-3);color:var(--text-muted);font-size:var(--fs-sm);font-weight:600;border-bottom:2px solid transparent}.mobile-switch button[aria-current=true]{color:var(--accent);border-bottom-color:var(--accent)}@media(min-width:900px){.panels{grid-template-columns:1fr 1fr}.panel[hidden]{display:flex}.mobile-switch{display:none}.panel+.panel{border-left:1px solid var(--border)}}@media(min-width:1250px){.panels{grid-template-columns:1.15fr 1fr}}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-4)}.card--flush{padding:0;overflow:hidden}.section__header{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-3) var(--sp-4);text-align:left;font-size:var(--fs-md);font-weight:600}.section__header:hover{background:var(--bg-hover)}.section__chevron{color:var(--text-faint);transition:transform var(--speed);flex-shrink:0}.section__header[aria-expanded=true] .section__chevron{transform:rotate(90deg)}.section__count{margin-left:auto;color:var(--text-faint);font-size:var(--fs-sm);font-weight:400}.section__body{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--speed) ease}.section__body[data-collapsed=true]{grid-template-rows:0fr}.section__body>div{overflow:hidden;min-height:0}.section__inner{padding:0 var(--sp-4) var(--sp-4)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-raised);color:var(--text);font-size:var(--fs-sm);transition:background var(--speed),border-color var(--speed),opacity var(--speed)}.btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent-dim)}.btn:disabled{opacity:.4}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.btn--primary:hover:not(:disabled){background:var(--accent-dim);border-color:var(--accent-dim)}.btn--ghost{border-color:transparent;background:none;color:var(--text-muted)}.btn--icon{padding:var(--sp-2);line-height:1}.btn--sm{padding:var(--sp-1) var(--sp-2);font-size:var(--fs-xs)}.btn-group{display:flex;gap:var(--sp-1);flex-wrap:wrap}.btn-group .btn[aria-pressed=true]{background:var(--accent-glow);border-color:var(--accent-dim);color:var(--accent)}.field{display:flex;flex-direction:column;gap:var(--sp-1)}.field__label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint)}.input{padding:var(--sp-2) var(--sp-3);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);width:100%}.input:focus{border-color:var(--accent-dim);outline:none}.hint{color:var(--text-muted);font-size:var(--fs-sm);margin:0}.error{color:var(--danger);font-size:var(--fs-sm)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.empty{color:var(--text-faint);font-size:var(--fs-sm);font-style:italic;padding:var(--sp-3) 0}.tag{display:inline-block;padding:0 var(--sp-2);border-radius:999px;background:var(--bg-hover);color:var(--text-muted);font-size:var(--fs-xs);line-height:1.6}.tag--wip{background:#fbbf2426;color:var(--warn)}.statblock{display:flex;flex-direction:column;gap:var(--sp-3)}.statblock__identity h2{font-size:var(--fs-xl)}.statblock__subtitle{margin:var(--sp-1) 0 0;color:var(--text-muted);font-size:var(--fs-sm)}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2)}.stat-grid--minor{grid-template-columns:repeat(3,1fr)}.stat{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--sp-2);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm)}.stat__label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint)}.stat__value{font-size:var(--fs-lg);font-weight:700;font-variant-numeric:tabular-nums}.stat__of{font-size:var(--fs-sm);font-weight:400;color:var(--text-faint)}.stat--strength .stat__value{color:var(--str)}.stat--dexterity .stat__value{color:var(--dex)}.stat--intelligence .stat__value{color:var(--int)}.stat--aptitude .stat__value{color:var(--apt)}.stat--hp .stat__value{color:var(--str-dim)}.stat--deflection .stat__value{color:var(--dex-dim)}.stat--resilience .stat__value{color:var(--int-dim)}.stat--mana .stat__value{color:var(--apt-dim)}.stat--perks .stat__value{color:var(--accent)}.action-list,.passive-list,.owned-perks,.item-list,.perk-grid,.shop-grid{list-style:none;margin:0;padding:0}.action-list{display:flex;flex-direction:column;gap:2px;margin-top:var(--sp-3)}.action{display:grid;grid-template-columns:1fr auto;align-items:center;border-radius:var(--radius-sm);transition:background var(--speed)}.action:hover{background:var(--bg-hover)}.action--muted{opacity:.42}.action--unusable .action__main{opacity:.55}.action__mana--discounted{background:#7ed69e2e}.outcome__extra{margin-left:var(--sp-2);padding:0 var(--sp-2);border-radius:999px;background:var(--apt-dim, var(--bg-raised));font-size:var(--fs-xs);white-space:nowrap}.action__blocked{grid-column:1 / -1;padding:0 var(--sp-2) var(--sp-2) calc(var(--sp-2) + 3px + var(--sp-2));color:var(--warn, var(--text-faint));font-size:var(--fs-xs)}.action__main{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);text-align:left;min-width:0}.action__badge{width:3px;height:1.1em;border-radius:2px;flex-shrink:0}.action__badge--combat{background:var(--combat)}.action__badge--environment{background:var(--environment)}.action__badge--social{background:var(--social)}.action__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action__mana{margin-left:auto;padding:1px var(--sp-2);border-radius:999px;background:var(--apt-dim, var(--surface-raised));color:var(--text);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;white-space:nowrap;opacity:.85}.action__mana~.action__check{margin-left:var(--sp-2)}.action__check{margin-left:auto;display:flex;gap:var(--sp-2);color:var(--text-faint);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;white-space:nowrap}.action__dc{color:var(--text-muted)}.action__roll{font-size:var(--fs-md)}.action__detail{grid-column:1 / -1;padding:0 var(--sp-2) var(--sp-3) calc(var(--sp-2) + 3px + var(--sp-2))}.action__description{margin:0 0 var(--sp-2);color:var(--text-faint);font-size:var(--fs-sm);font-style:italic}.action__effect{margin:0 0 var(--sp-2);font-size:var(--fs-sm)}.outcomes{margin:0;display:flex;flex-direction:column;gap:var(--sp-1)}.outcome{display:grid;grid-template-columns:4.5rem 1fr;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border-left:2px solid var(--border-strong);font-size:var(--fs-sm);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.outcome dt,.outcome dd{margin:0}.outcome__band{font-variant-numeric:tabular-nums;font-size:var(--fs-xs);color:var(--text-faint)}.outcome--partial{border-left-color:var(--warn)}.outcome--success{border-left-color:var(--ok)}.outcome--crit{border-left-color:var(--crit)}.outcome--partial .outcome__band{color:var(--warn)}.outcome--success .outcome__band{color:var(--ok)}.outcome--crit .outcome__band{color:var(--crit)}.outcome--active{background:var(--bg-hover);font-weight:500}.keyword{display:inline-block;padding:0 4px;border-radius:3px;background:var(--accent-glow);color:var(--accent);font-size:.92em;font-weight:500}.keyword--known{border:0;font-family:inherit;cursor:help;text-decoration:underline dotted currentColor 1px;text-underline-offset:2px}.school-summary{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);padding:var(--sp-2);border-radius:var(--radius-sm);background:var(--bg-raised);font-size:var(--fs-xs)}.school-summary__label{color:var(--text-faint);text-transform:uppercase;letter-spacing:.08em;font-weight:700}.school-summary__empty{color:var(--text-muted)}.school-summary .btn{margin-left:auto}.school-chip{padding:1px var(--sp-2);border-radius:999px}.perk__unlocks-toggle{display:flex;align-items:baseline;gap:var(--sp-1, 4px);width:100%;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.perk__unlocks-chevron{margin-left:auto;color:var(--text-faint)}.perk-action{margin-top:var(--sp-2);padding:var(--sp-2);border-radius:var(--radius-sm);background:var(--bg-inset)}.perk-action__head{display:flex;align-items:baseline;gap:var(--sp-2);margin-bottom:var(--sp-1, 4px)}.perk-action__name{font-weight:600}.perk-action__head .action__mana{margin-left:auto}.perk-action__text{margin:0 0 var(--sp-1, 4px);color:var(--text-muted);font-size:var(--fs-xs)}.perk-action__band{display:flex;gap:var(--sp-2);margin:0;font-size:var(--fs-xs)}.perk-action__band-label{flex:0 0 4.5em;color:var(--text-faint);text-transform:lowercase}.item--empty{opacity:.28;border-style:dashed}.keyword-wrap{position:relative;display:inline-block}.keyword-tip{position:absolute;bottom:calc(100% + 6px);left:0;z-index:20;display:flex;flex-direction:column;gap:var(--sp-1, 4px);width:max-content;max-width:min(280px,70vw);padding:var(--sp-2);border:1px solid var(--line, rgb(255 255 255 / .12));border-radius:var(--radius-sm);background:var(--bg-card);box-shadow:0 8px 24px #00000073;color:var(--text);font-size:var(--fs-xs);font-weight:400;white-space:normal;text-align:left}.keyword-tip__name{font-weight:700;color:var(--accent)}.keyword-tip__tiers{display:flex;flex-direction:column;gap:2px;margin-top:2px;color:var(--text-muted)}.roll{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);padding:var(--sp-4) 0 var(--sp-5)}.roll__die{display:grid;place-items:center;width:3.2rem;height:3.2rem;border:2px solid var(--accent-dim);border-radius:var(--radius);background:var(--bg-inset);font-size:var(--fs-xl);font-weight:700;font-variant-numeric:tabular-nums;animation:roll-in var(--speed) ease-out}@keyframes roll-in{0%{transform:rotate(-25deg) scale(.7);opacity:0}}.roll__op{color:var(--text-faint);font-size:var(--fs-lg)}.roll__total{font-size:2.2rem;font-weight:700;font-variant-numeric:tabular-nums}.roll__total--partial{color:var(--warn)}.roll__total--success{color:var(--ok)}.roll__total--crit{color:var(--crit)}.passive-list li,.owned-perks li,.item-list li{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px solid var(--border);font-size:var(--fs-sm)}.passive-list li:last-child,.owned-perks li:last-child,.item-list li:last-child{border-bottom:none}.passive-list__name,.owned-perks__name,.item__name{flex:1;min-width:0}.passive-list__effect{color:var(--text-muted);text-align:right}.owned-perks__count,.perk__count{margin-left:var(--sp-2);color:var(--accent);font-size:var(--fs-xs);font-weight:600}.owned-perks__lock,.perk__lock{opacity:.5;font-size:var(--fs-sm)}.item__cost{color:var(--text-faint);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}.item{border-left:2px solid transparent;padding-left:var(--sp-2)!important}.item--weapon{border-left-color:var(--combat)}.item--armor{border-left-color:var(--dex-dim)}.item--spellComponent{border-left-color:var(--apt)}.item--consumable{border-left-color:var(--environment)}.shop-group+.shop-group{margin-top:var(--sp-4)}.shop-group__title{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin-bottom:var(--sp-2)}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));gap:var(--sp-2)}.shop-item{display:flex;justify-content:space-between;gap:var(--sp-2);width:100%;padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);font-size:var(--fs-sm);text-align:left;transition:border-color var(--speed),background var(--speed)}.shop-item:hover:not(:disabled){border-color:var(--accent-dim);background:var(--bg-hover)}.shop-item--owned{opacity:.45}.shop-item__cost{color:var(--text-faint);font-size:var(--fs-xs);flex-shrink:0}.step{display:flex;flex-direction:column;gap:var(--sp-3)}.choice-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:var(--sp-2)}.choice-grid--compact{grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr))}.choice{display:flex;flex-direction:column;gap:2px;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);text-align:left;transition:border-color var(--speed),background var(--speed)}.choice:hover{border-color:var(--accent-dim);background:var(--bg-hover)}.choice__name{font-weight:600}.choice__meta{color:var(--text-muted);font-size:var(--fs-xs);line-height:1.4}.basics{display:flex;gap:var(--sp-3);align-items:flex-end}.basics .field{flex:1}.field--narrow{flex:0 0 7rem!important}.attribute-inputs{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2)}.attribute-input--strength .field__label{color:var(--str)}.attribute-input--dexterity .field__label{color:var(--dex)}.attribute-input--intelligence .field__label{color:var(--int)}.attribute-input--aptitude .field__label{color:var(--apt)}.perk-browser{display:flex;flex-direction:column;gap:var(--sp-3)}.perk-browser__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.perk-budget{padding:var(--sp-1) var(--sp-3);border-radius:999px;background:var(--accent-glow);color:var(--accent);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}.perk-budget--spent{background:var(--bg-hover);color:var(--text-faint)}.toolbar{display:flex;gap:var(--sp-2);justify-content:space-between;flex-wrap:wrap}.perk-browser__groups{display:flex;flex-direction:column;gap:var(--sp-2)}.perk-browser__groups .card{background:var(--bg-raised)}.perk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:var(--sp-2)}.perk{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-3);border:1px solid var(--border);border-left-width:3px;border-radius:var(--radius-sm);background:var(--bg-inset);font-size:var(--fs-sm)}.perk--owned{border-left-color:var(--accent);background:var(--accent-glow)}.perk--available{border-left-color:var(--ok)}.perk--locked{border-left-color:var(--border-strong);opacity:.62}.perk--unreachable{border-left-color:var(--danger);opacity:.42}.perk--wip{border-style:dashed}.perk__head{display:flex;align-items:center;gap:var(--sp-2)}.perk__name{flex:1;font-weight:600;min-width:0}.perk__buttons{display:flex;gap:var(--sp-1)}.perk__effect{margin:0;color:var(--text-muted);font-size:var(--fs-xs);line-height:1.45}.perk__grants{margin:0;color:var(--ok);font-size:var(--fs-xs)}.perk__unlocks{margin:0;color:var(--combat);font-size:var(--fs-xs)}.perk__requires{margin:0;color:var(--text-faint);font-size:var(--fs-xs);font-style:italic}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:var(--sp-4);background:#0009;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{width:min(34rem,100%);max-height:85vh;display:flex;flex-direction:column;background:var(--bg-card);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.modal__header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-4);border-bottom:1px solid var(--border)}.modal__body{padding:var(--sp-4);overflow-y:auto}.modal__footer{display:flex;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-4);border-top:1px solid var(--border)}.code{font-family:var(--font-mono);font-size:var(--fs-xs);word-break:break-all;resize:vertical}.notice{display:flex;align-items:center;gap:var(--sp-3);margin:var(--sp-2) var(--sp-4) 0;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);font-size:var(--fs-sm)}.notice--error{background:#f8717124;color:var(--danger)}.notice--info{background:var(--accent-glow);color:var(--accent)}.notice span{flex:1}.fatal{padding:var(--sp-6);color:var(--danger);text-align:center}@media(max-width:640px){.topbar{gap:var(--sp-2);padding:var(--sp-2) var(--sp-3)}.panel{padding:var(--sp-3)}.perk-grid,.choice-grid{grid-template-columns:1fr}.basics{flex-direction:column;align-items:stretch}.field--narrow{flex:1!important}}.assign{display:flex;flex-direction:column;gap:var(--sp-2)}.assign__row{display:grid;grid-template-columns:7.5rem 1fr;align-items:center;gap:var(--sp-3)}.assign__label{font-size:var(--fs-sm);font-weight:600}.assign__row--strength .assign__label{color:var(--str)}.assign__row--dexterity .assign__label{color:var(--dex)}.assign__row--intelligence .assign__label{color:var(--int)}.assign__row--aptitude .assign__label{color:var(--apt)}.assign__values{display:grid;grid-auto-flow:column;gap:var(--sp-1)}.assign__value{padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);font-variant-numeric:tabular-nums;font-weight:600;transition:background var(--speed),border-color var(--speed),color var(--speed)}.assign__value:hover{border-color:var(--accent-dim);background:var(--bg-hover)}.assign__value[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.statblock__name-row{display:flex;align-items:center;gap:var(--sp-2)}.statblock__name-row h2{flex:1;min-width:0}.stat-grid--editable{position:relative}.stat-grid__edit{position:absolute;top:-1.35rem;right:0;padding:0 var(--sp-1);color:var(--text-faint);font-size:var(--fs-sm);line-height:1;transition:color var(--speed)}.stat-grid__edit:hover{color:var(--accent)}.school-tint--air{--school: var(--school-air)}.school-tint--water{--school: var(--school-water)}.school-tint--earth{--school: var(--school-earth)}.school-tint--fire{--school: var(--school-fire)}.school-tint--body{--school: var(--school-body)}.school-tint--mind{--school: var(--school-mind)}.school-tint--chaos{--school: var(--school-chaos)}.school-tint--law{--school: var(--school-law)}.school-tint--nature{--school: var(--school-nature)}.school-tint--death{--school: var(--school-death)}.school-tint{background:rgb(var(--school) / .09);box-shadow:inset 3px 0 rgb(var(--school) / .55)}.choice--picked{background:rgb(var(--school) / .2);outline:2px solid rgb(var(--school) / .7)}.modal__lead{margin:0 0 var(--sp-3);color:var(--text-muted);font-size:var(--fs-sm)}.group{margin:0 0 var(--sp-3)}.group__head{position:sticky;top:0;z-index:1;display:flex;align-items:baseline;gap:var(--sp-2);padding:var(--sp-2);background:var(--bg-raised);border-radius:var(--radius-sm);font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.group__count{margin-left:auto;font-weight:400;letter-spacing:0;text-transform:none;color:var(--text-faint)}.group__items{margin:0;padding:0;list-style:none}.setup{display:flex;flex-direction:column;gap:var(--sp-3);max-width:30rem}.setup__field{display:flex;flex-direction:column;gap:var(--sp-1, 4px)}.setup__label{font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.setup__hint{margin:0;color:var(--text-muted);font-size:var(--fs-sm)}.encounter{display:flex;flex-direction:column;gap:var(--sp-3)}.encounter__bar{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.encounter__round{font-weight:700;font-size:var(--fs-lg)}.encounter__bar .btn-group{margin-left:auto}.turn-order{display:flex;gap:var(--sp-2);margin:0;padding:0;overflow-x:auto;list-style:none}.turn-order__slot{flex:none;padding:2px var(--sp-2);border-radius:999px;background:var(--bg-raised);color:var(--text-muted);font-size:var(--fs-xs);white-space:nowrap}.turn-order__slot--party{box-shadow:inset 2px 0 0 var(--dex, #6aa9e9)}.turn-order__slot--foes{box-shadow:inset 2px 0 0 var(--str, #d06a5a)}.turn-order__slot--now{background:var(--bg-hover);color:var(--text);font-weight:700}.board{width:min(100%,30rem);overflow-x:auto;padding:var(--sp-2);border-radius:var(--radius);background:var(--bg-inset);border:2px solid var(--line, rgb(255 255 255 / .14))}.board__grid{display:grid;gap:1px;aspect-ratio:var(--board-ratio, 1);background:#ffffff0a}@media(min-width:60rem){.encounter{display:grid;grid-template-columns:30rem minmax(18rem,1fr);grid-template-areas:"bar bar" "order order" "board rosters" "log log";align-items:start}.encounter__bar{grid-area:bar}.turn-order{grid-area:order}.board{grid-area:board}.rosters{grid-area:rosters}.combat-log{grid-area:log}}.cell{background:var(--bg);min-width:0;min-height:0}.roster-rows{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.5rem}.roster-row{display:grid;grid-template-columns:1fr 5rem auto;gap:.4rem;align-items:center}.roster-row__count{text-align:right}.setup__note{margin:-.25rem 0 0;font-size:.8rem;line-height:1.45;color:var(--text-faint);max-width:32rem}.fighter__box>summary{display:block;cursor:pointer;list-style:none}.fighter__box>summary::-webkit-details-marker{display:none}.fighter__box[open]>summary{margin-bottom:.5rem}.fighter__detail{border-top:1px solid var(--border, rgb(255 255 255 / .12));padding-top:.5rem;font-size:.75rem}.fighter__defence{margin:0 0 .4rem;color:var(--text-faint)}.fighter__actions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.fighter__actions li{display:grid;gap:0 .5rem;grid-template-columns:1fr auto}.fighter__action-name{font-weight:600}.fighter__action-meta{color:var(--text-faint);white-space:nowrap}.fighter__action-text{grid-column:1 / -1;color:var(--text-muted, var(--text-faint))}.fighter__mana{color:var(--apt, #a98bd6)}.fighter__mana--dry{color:var(--text-faint)}.cell--wall{background:var(--text-faint);opacity:.5}.token{display:flex;align-items:center;justify-content:center;font-size:.6rem;font-weight:700;line-height:1;overflow:hidden;min-width:0;min-height:0}.token--party{background:color-mix(in srgb,var(--dex, #6aa9e9) 60%,var(--bg));color:var(--bg)}.token--foes{background:color-mix(in srgb,var(--str, #d06a5a) 60%,var(--bg));color:var(--bg)}.token--acting{outline:2px solid var(--accent, #cbb26a);outline-offset:-2px}.token--down{background:var(--bg-raised);color:var(--text-faint);text-decoration:line-through}.rosters{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))}.roster{display:flex;flex-direction:column;gap:var(--sp-2);margin:0;padding:0;list-style:none}.fighter{display:grid;grid-template-columns:1fr auto;gap:2px var(--sp-2);padding:var(--sp-2);border-radius:var(--radius-sm);background:var(--bg-card);font-size:var(--fs-sm)}.fighter--acting{box-shadow:inset 3px 0 0 var(--accent, #cbb26a)}.fighter--down{opacity:.45}.fighter__name{font-weight:600}.fighter__hp{display:block;margin:.25rem 0;position:relative;grid-column:1 / -1;height:1rem;border-radius:3px;background:var(--bg-inset);overflow:hidden}.fighter__bar{position:absolute;inset:0 auto 0 0;background:color-mix(in srgb,var(--str, #d06a5a) 55%,var(--bg))}.fighter__hp-text{position:relative;display:block;text-align:center;font-size:var(--fs-xs);font-variant-numeric:tabular-nums;line-height:1rem}.fighter__meta{color:var(--text-faint);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}.fighter__conditions{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:4px}.chip{padding:0 6px;border-radius:999px;background:var(--bg-raised);color:var(--text-muted);font-size:var(--fs-xs)}.combat-log{display:flex;flex-direction:column;gap:var(--sp-2)}.combat-log__title{margin:0;font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.combat-log__entries{display:flex;flex-direction:column;gap:2px;max-height:16rem;margin:0;padding:var(--sp-2);border-radius:var(--radius-sm);background:var(--bg-inset);overflow-y:auto;list-style:none;font-size:var(--fs-xs)}.combat-log__entries li{display:flex;gap:var(--sp-2)}.combat-log__round{flex:none;color:var(--text-faint);font-variant-numeric:tabular-nums}.combat-log__prompt{color:var(--warn, var(--text-muted))}.panels--single{grid-template-columns:1fr}.benchmark-picker{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-3)}.benchmark-picker__band{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem}.benchmark-picker__tier{min-width:5rem;font-size:.8rem;letter-spacing:.04em;color:var(--text-faint);font-variant-numeric:tabular-nums}.btn--small{padding:.2rem .6rem;font-size:.85rem}.fighter__attrs{display:flex;gap:.6rem;font-size:var(--fs-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.fighter__action>summary{display:flex;justify-content:space-between;gap:.5rem;cursor:pointer;list-style:none}.fighter__action>summary::-webkit-details-marker{display:none}.fighter__action>summary:focus-visible{outline:2px solid var(--accent, #cbb26a);outline-offset:2px}.fighter__action-body{display:grid;grid-template-columns:auto 1fr;gap:.15rem .6rem;margin:.3rem 0 .5rem .6rem;font-size:var(--fs-xs)}.fighter__action-body dt{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em}.fighter__action-body dd{margin:0}.fighter__perks{margin-bottom:.4rem;font-size:var(--fs-xs)}.fighter__perks>summary{cursor:pointer;color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em}.fighter__perks ul{columns:2;margin:.3rem 0 0 .6rem;padding:0;list-style:none}
