:root{--ds-neutral-0: #ffffff;--ds-neutral-10: #f2f1ec;--ds-neutral-50: #f6f5f1;--ds-neutral-100: #f0efeb;--ds-neutral-200: #e4e2da;--ds-neutral-300: #b9b8b0;--ds-neutral-400: #8a8880;--ds-neutral-450: #85847d;--ds-neutral-500: #5f5e5a;--ds-neutral-600: #4a4945;--ds-neutral-700: #2a2a28;--ds-neutral-800: #1f1f1e;--ds-neutral-900: #1a1a19;--ds-neutral-950: #161615;--ds-blue-100: #e6f1fb;--ds-blue-400: #5b9be0;--ds-blue-500: #2a78d6;--ds-blue-900: #12304f;--ds-green-100: #e4f4ea;--ds-green-400: #3fbf7f;--ds-green-500: #0f8a4c;--ds-green-900: #10321f;--ds-red-100: #fceaea;--ds-red-400: #e57373;--ds-red-500: #cf3535;--ds-red-900: #3a1717;--ds-amber-100: #faf0d8;--ds-amber-400: #d9a94a;--ds-amber-500: #9a6a08;--ds-amber-900: #3a2d0e;--ds-font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--ds-font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;--ds-text-xs: 12px;--ds-text-sm: 13px;--ds-text-base: 15px;--ds-text-lg: 17px;--ds-text-xl: 21px;--ds-space-1: 4px;--ds-space-2: 8px;--ds-space-3: 12px;--ds-space-4: 16px;--ds-space-5: 24px;--ds-space-6: 32px;--ds-radius-sm: 8px;--ds-radius: 10px;--ds-radius-lg: 12px;--ds-radius-pill: 999px;--bg: var(--ds-neutral-50);--surface: var(--ds-neutral-0);--surface-2: var(--ds-neutral-100);--text: var(--ds-neutral-900);--text-2: var(--ds-neutral-500);--text-3: var(--ds-neutral-400);--border: rgba(20, 20, 18, .12);--accent: var(--ds-blue-500);--accent-bg: var(--ds-blue-100);--green: var(--ds-green-500);--green-bg: var(--ds-green-100);--red: var(--ds-red-500);--red-bg: var(--ds-red-100);--amber: var(--ds-amber-500);--amber-bg: var(--ds-amber-100);--radius: var(--ds-radius);--font-sans: var(--ds-font-sans);--font-mono: var(--ds-font-mono)}[data-theme=dark]{--bg: var(--ds-neutral-950);--surface: var(--ds-neutral-800);--surface-2: var(--ds-neutral-700);--text: var(--ds-neutral-10);--text-2: var(--ds-neutral-300);--text-3: var(--ds-neutral-450);--border: rgba(255, 255, 255, .12);--accent: var(--ds-blue-400);--accent-bg: var(--ds-blue-900);--green: var(--ds-green-400);--green-bg: var(--ds-green-900);--red: var(--ds-red-400);--red-bg: var(--ds-red-900);--amber: var(--ds-amber-400);--amber-bg: var(--ds-amber-900)}@media (prefers-color-scheme: dark){:root:not([data-theme]){--bg: var(--ds-neutral-950);--surface: var(--ds-neutral-800);--surface-2: var(--ds-neutral-700);--text: var(--ds-neutral-10);--text-2: var(--ds-neutral-300);--text-3: var(--ds-neutral-450);--border: rgba(255, 255, 255, .12);--accent: var(--ds-blue-400);--accent-bg: var(--ds-blue-900);--green: var(--ds-green-400);--green-bg: var(--ds-green-900);--red: var(--ds-red-400);--red-bg: var(--ds-red-900);--amber: var(--ds-amber-400);--amber-bg: var(--ds-amber-900)}}.ds-root{font-family:var(--font-sans);color:var(--text);background:var(--bg);font-size:var(--ds-text-base);line-height:1.5}.ds-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--ds-radius-lg);padding:var(--ds-space-4) var(--ds-space-5)}.ds-btn{font:inherit;font-size:var(--ds-text-sm);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--ds-radius-sm);padding:var(--ds-space-2) var(--ds-space-4);cursor:pointer;transition:background .12s ease,transform .05s ease}.ds-btn:hover{background:var(--surface-2)}.ds-btn:active{transform:scale(.98)}.ds-btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.ds-btn--primary:hover{filter:brightness(1.08);background:var(--accent)}.ds-btn--danger{color:var(--red);border-color:var(--red)}.ds-btn--danger:hover{background:var(--red-bg)}.ds-badge{display:inline-block;padding:2px var(--ds-space-2);border-radius:var(--ds-radius-pill);font-size:11px;font-weight:600;background:var(--surface-2);color:var(--text-2)}.ds-badge--accent{background:var(--accent-bg);color:var(--accent)}.ds-badge--success{background:var(--green-bg);color:var(--green)}.ds-badge--danger{background:var(--red-bg);color:var(--red)}.ds-badge--warning{background:var(--amber-bg);color:var(--amber)}.ds-metric{background:var(--surface);border:1px solid var(--border);border-radius:var(--ds-radius-lg);padding:var(--ds-space-3) var(--ds-space-4)}.ds-metric__label{font-size:var(--ds-text-xs);color:var(--text-3)}.ds-metric__value{font-size:var(--ds-text-xl);font-weight:650;font-variant-numeric:tabular-nums;margin-top:2px}.ds-metric__sub{font-size:var(--ds-text-xs);color:var(--text-2)}.ds-metric__value.is-pos{color:var(--green)}.ds-metric__value.is-neg{color:var(--red)}.ds-input,.ds-select,.ds-textarea{font:inherit;font-size:var(--ds-text-sm);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--ds-radius-sm);padding:var(--ds-space-2) var(--ds-space-3);outline:none}.ds-input:focus,.ds-select:focus,.ds-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.ds-table{width:100%;border-collapse:collapse;font-size:var(--ds-text-sm)}.ds-table th{font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);text-align:left;padding:var(--ds-space-2) var(--ds-space-3);border-bottom:1px solid var(--border)}.ds-table td{padding:var(--ds-space-2) var(--ds-space-3);border-bottom:1px solid var(--border)}.ds-table tbody tr:last-child td{border-bottom:none}.ds-table tbody tr:hover{background:var(--surface-2)}.ds-table .is-num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}.ds-theme-switch{display:inline-flex;gap:2px;padding:2px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--ds-radius-pill)}.ds-theme-switch button{margin:0;padding:4px 10px;font:inherit;font-size:12.5px;line-height:1;border:none;border-radius:var(--ds-radius-pill);background:transparent;color:var(--text-2);cursor:pointer}.ds-theme-switch button:hover{color:var(--text)}.ds-theme-switch button.is-active{background:var(--surface);color:var(--accent);font-weight:600}.ds-text-pos{color:var(--green)}.ds-text-neg{color:var(--red)}.ds-text-muted{color:var(--text-2)}.ds-text-hint{color:var(--text-3);font-size:var(--ds-text-xs)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}#root{min-height:100dvh}button,input,select,textarea{font:inherit}.app-shell{display:flex;flex-direction:column;min-height:100dvh}.app-topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-3);padding:calc(var(--ds-space-3) + env(safe-area-inset-top)) var(--ds-space-4) var(--ds-space-3);background:var(--surface);border-bottom:1px solid var(--border)}.app-topbar h1{font-size:var(--ds-text-lg);margin:0}.app-topbar__meta{font-size:var(--ds-text-xs);color:var(--text-3);margin:2px 0 0}.app-topbar__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--ds-radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--text-2);cursor:pointer;flex-shrink:0}.app-main{flex:1;padding:var(--ds-space-4);padding-bottom:calc(88px + env(safe-area-inset-bottom));max-width:720px;width:100%;margin:0 auto}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav__tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--ds-space-2) var(--ds-space-1);min-height:56px;border:none;background:transparent;color:var(--text-3);cursor:pointer}.bottom-nav__tab.is-active{color:var(--accent)}.bottom-nav__icon{font-size:20px;line-height:1}.bottom-nav__label{font-size:11px;font-weight:600}.alert-bar{display:flex;flex-direction:column;gap:var(--ds-space-2);padding:var(--ds-space-3) var(--ds-space-4);background:var(--surface-2);border-bottom:1px solid var(--border);max-height:40dvh;overflow-y:auto}.alert{display:flex;gap:var(--ds-space-2);align-items:flex-start;padding:var(--ds-space-2) var(--ds-space-3);border-radius:var(--radius);border:1px solid transparent;font-size:var(--ds-text-sm)}.alert--danger{background:var(--red-bg);border-color:var(--red);color:var(--text)}.alert--warning{background:var(--amber-bg);border-color:var(--amber);color:var(--text)}.alert--info{background:var(--green-bg);border-color:var(--green);color:var(--text)}.alert__title{font-weight:700;display:block}.alert__detail{color:var(--text-2)}.stack{display:flex;flex-direction:column;gap:var(--ds-space-3)}.stack--tight{gap:var(--ds-space-2)}.row{display:flex;align-items:center;gap:var(--ds-space-2);flex-wrap:wrap}.row--between{justify-content:space-between}.grow{flex:1;min-width:0}.page-title{font-size:var(--ds-text-xl);margin:0 0 var(--ds-space-2)}.page-intro{color:var(--text-2);font-size:var(--ds-text-sm);margin:0 0 var(--ds-space-4);line-height:1.5}.section-title{font-size:var(--ds-text-base);margin:var(--ds-space-4) 0 var(--ds-space-2);color:var(--text)}.section-title:first-child{margin-top:0}.empty-state{color:var(--text-3);text-align:center;padding:var(--ds-space-6) 0;font-size:var(--ds-text-sm)}.muted{color:var(--text-3);font-size:var(--ds-text-sm)}.chip-row{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-bottom:var(--ds-space-3)}.chip{border:1px solid var(--border);background:var(--surface);color:var(--text-2);border-radius:var(--ds-radius-pill);padding:4px var(--ds-space-3);font-size:var(--ds-text-sm);cursor:pointer}.chip.is-active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent);font-weight:600}.rule-text p{margin:0 0 var(--ds-space-2);color:var(--text-2);line-height:1.55}.rule-text p:last-child{margin-bottom:0}.rule-text ul{margin:0 0 var(--ds-space-2);padding-left:var(--ds-space-4);color:var(--text-2);line-height:1.55}.rule-text li{margin-bottom:var(--ds-space-1)}.checklist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--ds-space-2)}.checklist__item{display:flex;gap:var(--ds-space-2);align-items:flex-start;cursor:pointer;color:var(--text-2);line-height:1.5}.checklist__item input{margin-top:3px;flex-shrink:0;accent-color:var(--accent);width:18px;height:18px}.checklist__item.is-done span{text-decoration:line-through;color:var(--text-3)}.counter{display:flex;align-items:center;gap:var(--ds-space-2)}.counter__btn{width:34px;height:34px;flex-shrink:0;border-radius:var(--ds-radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;font-weight:700;line-height:1}.counter__btn:disabled{opacity:.4;cursor:not-allowed}.counter__value{min-width:2.5ch;text-align:center;font-variant-numeric:tabular-nums;font-weight:700;font-size:var(--ds-text-lg)}.counter__label{font-size:var(--ds-text-sm);color:var(--text-2)}.counter--over .counter__value{color:var(--red)}.triskelion{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--ds-space-2)}.tri-dial{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);padding:var(--ds-space-2);text-align:center}.tri-dial--over{border-color:var(--red);background:var(--red-bg)}.tri-dial__label{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--text-3);text-transform:uppercase}.tri-dial__value{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1;margin:2px 0}.tri-dial--over .tri-dial__value{color:var(--red)}.tri-dial__controls{display:flex;gap:4px;justify-content:center}.tri-dial__controls button{flex:1;height:30px;border-radius:var(--ds-radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;font-weight:700}.stepper__head{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-2);margin-bottom:var(--ds-space-3)}.stepper__progress{display:flex;gap:3px;flex:1}.stepper__pip{flex:1;height:5px;border-radius:3px;background:var(--border)}.stepper__pip.is-done{background:var(--accent);opacity:.45}.stepper__pip.is-current{background:var(--accent)}.stepper__nav{display:flex;gap:var(--ds-space-2);margin-top:var(--ds-space-3)}.stepper__nav .ds-btn{flex:1}.step-eyebrow{font-size:var(--ds-text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:700}.step-title{font-size:var(--ds-text-lg);margin:2px 0 var(--ds-space-1)}.step-summary{color:var(--text-2);font-size:var(--ds-text-sm);margin:0 0 var(--ds-space-3);line-height:1.5}.keyword-refs{display:flex;flex-wrap:wrap;gap:var(--ds-space-1);margin-top:var(--ds-space-3);padding-top:var(--ds-space-3);border-top:1px dashed var(--border)}.keyword-refs__label{width:100%;font-size:var(--ds-text-xs);color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;font-weight:700;margin-bottom:2px}.keyword-chip{border:1px solid var(--border);background:var(--surface-2);color:var(--text-2);border-radius:var(--ds-radius-pill);padding:3px 10px;font-size:var(--ds-text-xs);font-family:var(--font-mono);cursor:pointer}.keyword-chip:hover{border-color:var(--accent);color:var(--accent)}details.ds-card{padding:0}details.ds-card>summary{list-style:none;cursor:pointer;padding:var(--ds-space-3) var(--ds-space-4);display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-2);font-weight:600}details.ds-card>summary::-webkit-details-marker{display:none}details.ds-card>summary:after{content:"▾";color:var(--text-3);flex-shrink:0}details.ds-card[open]>summary:after{content:"▴"}details.ds-card>.details-body{padding:0 var(--ds-space-4) var(--ds-space-4)}.field{display:flex;flex-direction:column;gap:4px}.field__label{font-size:var(--ds-text-xs);font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em}.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--ds-space-3)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--ds-space-2)}.stat-box{border:1px solid var(--border);border-radius:var(--radius);padding:var(--ds-space-2) var(--ds-space-3);background:var(--surface-2)}.stat-box__label{font-size:var(--ds-text-xs);font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-wrap table{min-width:100%}.table-note{font-size:var(--ds-text-sm);color:var(--text-3);margin:0 0 var(--ds-space-2);line-height:1.5}.timeline{display:flex;flex-wrap:wrap;gap:3px}.timeline__box{width:16px;height:16px;border-radius:3px;border:1px solid var(--border);background:var(--surface);padding:0;cursor:pointer}.timeline__box.is-marked{background:var(--accent);border-color:var(--accent)}.timeline__box.is-current{outline:2px solid var(--amber);outline-offset:1px}.diplomacy-track{display:flex;align-items:center;gap:var(--ds-space-2)}.diplomacy-track__bar{flex:1;height:8px;border-radius:4px;background:linear-gradient(90deg,var(--red),var(--amber),var(--green));position:relative}.diplomacy-track__marker{position:absolute;top:-4px;width:4px;height:16px;border-radius:2px;background:var(--text);transform:translate(-50%)}.titan-card__head{display:flex;align-items:center;gap:var(--ds-space-2);margin-bottom:var(--ds-space-3)}.titan-card__name{font-weight:700;font-size:var(--ds-text-base)}.titan-card__sub{font-size:var(--ds-text-xs);color:var(--text-3)}.titan-card--dead{opacity:.55}.token-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--ds-space-2);margin-top:var(--ds-space-3)}.toggle-row{display:flex;flex-wrap:wrap;gap:var(--ds-space-2);margin-top:var(--ds-space-3)}.toggle{border:1px solid var(--border);background:var(--surface);color:var(--text-3);border-radius:var(--ds-radius-pill);padding:4px 12px;font-size:var(--ds-text-sm);cursor:pointer}.toggle.is-on{background:var(--amber-bg);border-color:var(--amber);color:var(--text);font-weight:600}.escalation{display:flex;align-items:baseline;gap:var(--ds-space-2)}.escalation__count{font-size:28px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--amber);line-height:1}.wound-bar{height:10px;border-radius:5px;background:var(--surface-2);border:1px solid var(--border);overflow:hidden;margin-top:var(--ds-space-2)}.wound-bar__fill{height:100%;background:var(--red);transition:width .2s ease}.battle-log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--ds-space-1);max-height:260px;overflow-y:auto}.battle-log li{font-size:var(--ds-text-sm);color:var(--text-2);padding:4px 0;border-bottom:1px solid var(--border);line-height:1.4}.battle-log__round{font-family:var(--font-mono);font-size:var(--ds-text-xs);color:var(--text-3);margin-right:var(--ds-space-2)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#00000073;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--bg);border-radius:var(--radius) var(--radius) 0 0;width:100%;max-width:720px;max-height:88dvh;overflow-y:auto;padding:var(--ds-space-4);padding-bottom:calc(var(--ds-space-4) + env(safe-area-inset-bottom))}@media (min-width: 640px){.sheet-backdrop{align-items:center}.sheet{border-radius:var(--radius);max-height:80dvh}}
