:root{
  --bg:#0b0f15;
  --panel:rgba(24,30,40,.92);
  --panel-solid:#181e28;
  --panel2:#232b39;
  --panel3:#111720;
  --text:#f5f7fb;
  --muted:#9ca8ba;
  --line:#374255;
  --line-soft:rgba(116,132,157,.22);
  --danger:#ff6b78;
  --warn:#f3c45f;
  --ok:#67d6a0;
  --accent:#f5f7fb;
  --shadow:0 18px 55px rgba(0,0,0,.34);
}
*{box-sizing:border-box}
html{color-scheme:dark}
body{margin:0;min-height:100vh;background:radial-gradient(circle at 50% -10%,rgba(73,91,122,.16),transparent 34rem),linear-gradient(180deg,#090d13,#10161f 58%,#090d13);color:var(--text);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-optical-sizing:auto;-webkit-tap-highlight-color:transparent}
button,select{font:inherit}button{touch-action:manipulation}
.app{width:min(720px,100%);margin:0 auto;padding:1rem 1rem calc(7.4rem + env(safe-area-inset-bottom))}
.appHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.25rem .1rem .1rem}
.brandBlock{min-width:0}
h1{margin:0;font-size:clamp(1.18rem,5vw,1.5rem);line-height:1.05;letter-spacing:-.018em;font-weight:800}
.beta{display:inline-flex;align-items:center;margin-left:.35rem;padding:.15rem .42rem;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.68rem;font-weight:650;letter-spacing:.03em;vertical-align:.18em}
.turnOnly{margin-top:.38rem;color:var(--muted);font-size:.72rem;font-weight:650;letter-spacing:.13em}
.settingsGear{flex:0 0 auto;width:2.75rem;height:2.75rem;border:1px solid var(--line);border-radius:.9rem;background:rgba(28,35,47,.8);color:var(--text);font-size:1.25rem;box-shadow:0 8px 24px rgba(0,0,0,.18);backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%)}
main{display:grid;gap:.8rem;margin-top:.9rem}
.panel{border:1px solid var(--line);border-radius:1.35rem;background:var(--panel);box-shadow:0 12px 36px rgba(0,0,0,.18);backdrop-filter:blur(18px) saturate(125%);-webkit-backdrop-filter:blur(18px) saturate(125%)}
.turnCard{padding:1.1rem}.eventPrimary{order:1}
.eventHeaderRow{display:flex;align-items:center;justify-content:space-between;gap:.65rem;min-height:1.7rem}
.turn{color:var(--muted);font-size:.68rem;font-weight:650;letter-spacing:.11em;white-space:nowrap}
.actorBadge{max-width:68%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.28rem .52rem;border:1px solid var(--line);border-radius:999px;background:rgba(34,43,57,.75);color:#dce4f0;font-size:.68rem;font-weight:700}
.eventType{margin-top:.8rem;font-size:clamp(1.75rem,8vw,2.35rem);line-height:1.02;letter-spacing:-.035em;font-weight:900;text-align:left}
.eventText{margin-top:.72rem;color:#e8edf5;font-size:.98rem;line-height:1.58;text-align:left}
.actionResult{display:none;margin-top:.9rem;padding:.85rem .95rem;border:1px solid var(--line);border-radius:1rem;text-align:left}
.actionResult.show{display:block}.actionResult.need{border-color:rgba(255,107,120,.7);background:rgba(255,107,120,.08)}.actionResult.none{border-color:rgba(103,214,160,.65);background:rgba(103,214,160,.07)}.actionResult.consider{border-color:rgba(243,196,95,.68);background:rgba(243,196,95,.07)}.actionResult.neutral{background:var(--panel3)}
.actionLabel{color:var(--muted);font-size:.62rem;font-weight:700;letter-spacing:.12em}.actionMain{margin-top:.18rem;font-size:1.15rem;line-height:1.2;font-weight:850;letter-spacing:-.015em}.actionSub{margin-top:.3rem;color:#cbd4e2;font-size:.78rem;line-height:1.45}
.responseBox{display:none;margin-top:.7rem;padding:.75rem .82rem;border:1px solid var(--line-soft);border-radius:.9rem;background:rgba(13,18,26,.64);text-align:left}.responseBox.show{display:block}.responseTitle{margin-bottom:.35rem;font-size:.75rem;font-weight:800}.responseLine{color:#cfd7e4;font-size:.74rem;line-height:1.5}.responseFinal{margin-top:.35rem;font-size:.77rem;font-weight:800}
.rollMeta{display:flex;align-items:center;gap:.5rem;margin-top:.8rem;overflow:hidden}.diceWrap{display:flex;align-items:center;gap:.3rem;min-width:0}.die{display:inline-flex;align-items:center;gap:.24rem;min-height:1.7rem;padding:.22rem .42rem;border:1px solid var(--line-soft);border-radius:.55rem;background:rgba(34,43,57,.58);white-space:nowrap}.dieLabel{color:var(--muted);font-size:.56rem;font-weight:650}.dieValue{font-size:.72rem;font-weight:800}.badge{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.25rem .46rem;border:1px solid var(--line-soft);border-radius:999px;color:var(--muted);font-size:.6rem}.rolling{animation:shake .1s linear infinite alternate}@keyframes shake{from{transform:translate(-1px,1px) rotate(-1deg)}to{transform:translate(1px,-1px) rotate(1deg)}}
.subRow{display:flex;gap:.45rem;margin-top:.75rem}.subBtn{flex:1;min-height:2.3rem;border:1px solid var(--line-soft);border-radius:.75rem;background:rgba(34,43,57,.58);color:#dce3ee;font-size:.72rem;font-weight:700}.small{margin-top:.55rem;color:var(--muted);font-size:.64rem;line-height:1.4;text-align:center}
.threatPanel{order:2;padding:.9rem}.threatCompactHead{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.sectionEyebrow{color:var(--muted);font-size:.58rem;font-weight:700;letter-spacing:.13em}.sectionTitle{margin-top:.05rem;font-size:1rem;font-weight:850;letter-spacing:-.015em}.threatInline{display:flex;align-items:center;gap:.45rem}.threatLevel{font-size:.92rem;line-height:1;font-weight:900;letter-spacing:-.01em}.threatScore{display:inline-flex;align-items:center;justify-content:center;min-width:2.45rem;height:2rem;padding:0 .5rem;border:1px solid var(--line);border-radius:.7rem;background:var(--panel2);font-size:.9rem;font-weight:850}
.toggleGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;margin-top:.7rem}.stateToggle{display:flex;align-items:center;justify-content:space-between;gap:.25rem;min-width:0;min-height:2.35rem;padding:.35rem .42rem;border:1px solid var(--line-soft);border-radius:.72rem;background:rgba(34,43,57,.62);color:#e7edf6;font-size:.68rem;font-weight:730;text-align:left}.stateToggle > span{flex:0 0 auto;color:var(--muted);font-size:.56rem;font-weight:700}.stateToggle.on{border-color:#c7d1df;background:#edf1f7;color:#18202b}.stateToggle.on > span{color:#18202b}
.counterGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem;margin-top:.4rem}.counterCard{min-width:0;padding:.42rem;border:1px solid var(--line-soft);border-radius:.75rem;background:rgba(34,43,57,.46)}.counterName{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.58rem;font-weight:650;text-align:center}.counterControl{display:grid;grid-template-columns:1.75rem 1fr 1.75rem;align-items:center;gap:.15rem;margin-top:.24rem;text-align:center;font-size:.88rem;font-weight:850}.counterBtn{width:1.75rem;height:1.75rem;padding:0;border:1px solid var(--line);border-radius:.55rem;background:#151b25;color:var(--text);font-size:1rem;line-height:1}.help{margin-top:.55rem;color:var(--muted);font-size:.62rem;line-height:1.45}
.historyPanel{order:3;padding:.9rem}.historyTitle{font-size:.92rem;font-weight:850;letter-spacing:-.012em}.history{display:grid;gap:.45rem;margin-top:.55rem}.hist{padding:.68rem .72rem;border-radius:.75rem;background:rgba(34,43,57,.55);color:#d7deea;font-size:.7rem;line-height:1.48}
.bottomDock{position:fixed;left:0;right:0;bottom:0;z-index:100;display:flex;justify-content:center;padding:.7rem 1rem calc(.7rem + env(safe-area-inset-bottom));background:linear-gradient(180deg,rgba(9,13,19,0),rgba(9,13,19,.82) 25%,rgba(9,13,19,.94));backdrop-filter:blur(14px) saturate(135%);-webkit-backdrop-filter:blur(14px) saturate(135%)}.next{width:min(688px,100%);min-height:3.5rem;border:1px solid rgba(255,255,255,.62);border-radius:1rem;background:rgba(247,249,252,.96);color:#10141a;font-size:1rem;font-weight:900;letter-spacing:.025em;box-shadow:0 14px 38px rgba(0,0,0,.32)}.next span{margin-left:.18rem}.next:disabled{opacity:.5}
.modalBackdrop{position:fixed;inset:0;z-index:500;display:flex;align-items:flex-end;justify-content:center;padding:0;background:rgba(3,6,10,.58);opacity:0;pointer-events:none;transition:opacity .22s ease-out}.modalBackdrop.show{opacity:1;pointer-events:auto}.settingsModalCard{width:min(680px,100%);max-height:min(88dvh,760px);overflow:auto;padding:.65rem 1rem calc(1rem + env(safe-area-inset-bottom));border:1px solid var(--line);border-bottom:0;border-radius:1.55rem 1.55rem 0 0;background:rgba(24,30,40,.97);box-shadow:0 -18px 70px rgba(0,0,0,.52);backdrop-filter:blur(26px) saturate(145%);-webkit-backdrop-filter:blur(26px) saturate(145%);transform:translateY(1.5rem) scale(.99);opacity:.95;transition:transform .3s cubic-bezier(.2,.75,.25,1),opacity .22s ease-out}.modalBackdrop.show .settingsModalCard{transform:translateY(0) scale(1);opacity:1}.sheetHandle{width:2.4rem;height:.3rem;margin:.05rem auto .65rem;border-radius:999px;background:#687487;opacity:.62}.modalHead{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.modalEyebrow{color:var(--muted);font-size:.58rem;font-weight:700;letter-spacing:.13em}.modalTitle{margin-top:.05rem;font-size:1.6rem;line-height:1;font-weight:900;letter-spacing:-.03em}.modalClose{width:2.55rem;height:2.55rem;border:1px solid var(--line);border-radius:.8rem;background:var(--panel2);color:var(--text);font-size:1.5rem;line-height:1}.modalSettingsGrid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem;margin-top:1rem}label{display:block;color:var(--muted);font-size:.68rem;font-weight:650}select{width:100%;min-height:2.75rem;margin-top:.28rem;padding:.55rem 2.2rem .55rem .72rem;border:1px solid var(--line);border-radius:.8rem;background:var(--panel2);color:var(--text);font-size:.82rem}.playerRoster{margin-top:.8rem;padding:.72rem;border:1px solid var(--line-soft);border-radius:1rem;background:rgba(13,18,26,.58)}.playerRosterTitle{color:var(--muted);font-size:.58rem;font-weight:700;letter-spacing:.13em}.playerRosterGrid{display:grid;gap:.42rem;margin-top:.55rem}.playerRosterItem{display:grid;grid-template-columns:5.5rem 1fr;align-items:center;gap:.65rem;padding:.45rem .5rem;border:1px solid var(--line-soft);border-radius:.75rem;background:rgba(34,43,57,.52)}.playerRosterItem b{color:#dfe6f0;font-size:.74rem}.playerRosterItem select{margin:0;min-height:2.4rem;font-size:.76rem}.playerRosterNote{margin-top:.55rem;color:var(--muted);font-size:.6rem;line-height:1.45}.settingsSummary{margin-top:.8rem;padding:.65rem .72rem;border:1px solid var(--line-soft);border-radius:.8rem;background:rgba(13,18,26,.62);color:var(--muted);font-size:.62rem;line-height:1.55}.modalDone{width:100%;min-height:2.9rem;margin-top:.8rem;border:0;border-radius:.85rem;background:var(--accent);color:#10141a;font-weight:900}
.pressable{transition:transform .1s ease-out,filter .1s ease-out,background-color .16s ease-out,border-color .16s ease-out}.pressable:active{transform:scale(.97);filter:brightness(.96)}
.flash-danger{color:var(--danger)}.flash-warn{color:var(--warn)}.flash-ok{color:var(--ok)}
@media(min-width:700px){.app{padding-top:1.4rem}main{gap:1rem}.eventPrimary{padding:1.35rem}.settingsModalCard{margin:auto;border-bottom:1px solid var(--line);border-radius:1.45rem;max-height:82vh;transform:scale(.97) translateY(.5rem)}.sheetHandle{display:none}.modalBackdrop{align-items:center;padding:1rem}.playerRosterGrid{grid-template-columns:repeat(3,1fr)}.playerRosterItem{display:block;padding:.6rem}.playerRosterItem select{margin-top:.35rem}}
@media(max-width:430px){.app{padding-left:.75rem;padding-right:.75rem}.eventType{font-size:1.9rem}.eventText{font-size:.92rem}.toggleGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.stateToggle{min-height:2.15rem}.counterControl{grid-template-columns:1.65rem 1fr 1.65rem}.counterBtn{width:1.65rem;height:1.65rem}.rollMeta{align-items:flex-start;flex-direction:column;gap:.4rem}.badge{max-width:100%}.modalSettingsGrid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.settingsModalCard{transform:none!important}}
@media(prefers-reduced-transparency:reduce){.panel,.settingsGear,.settingsModalCard,.bottomDock{backdrop-filter:none;-webkit-backdrop-filter:none}.panel,.settingsModalCard{background:var(--panel-solid)}.bottomDock{background:#090d13}}
@media(prefers-contrast:more){:root{--line:#78869c;--muted:#c1c9d5}.panel,.settingsModalCard,.stateToggle,.counterCard,.die,.subBtn{border-width:2px}}
