:root{--bg:#efe6d8;--surface:#f1e7d8db;--surface-strong:#f5eee4f2;--line:#362b2033;--text:#221a13;--muted:#625548;--accent:#3f7665;--accent-strong:#24473d;--success:#2e6b58;--warning:#a46e22;--danger:#8f3f2e;--idle:#8d7d6d;--shadow:#140c061f;--sans:"Aptos", "Trebuchet MS", sans-serif;--display:"Bahnschrift", "Arial Narrow", sans-serif;--mono:"Consolas", "Lucida Console", monospace;color:var(--text);font:17px / 1.45 var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(#ffffff2e,#0000 28%),linear-gradient(90deg,#54433508 0 1px,#0000 1px 40px),linear-gradient(#f5eee0 0%,#e7dccb 100%)}*{box-sizing:border-box}html,body,#app{min-height:100%}body{margin:0}button,input,textarea,select{font:inherit}button{background:var(--accent);color:#f6f7f3;cursor:pointer;border:1px solid #0000;padding:.9rem 1rem;transition:background .12s,color .12s,border-color .12s,opacity .12s}button:hover:enabled{background:var(--accent-strong)}button:disabled{opacity:.45;cursor:not-allowed}button.ghost{border-color:var(--line);color:var(--text);background:#ffffff73}input{border:1px solid var(--line);width:100%;min-width:0;color:var(--text);background:#ffffff8c;padding:.62rem .65rem}input:focus,button:focus-visible{outline-offset:1px;outline:2px solid #3f766559}input.is-invalid,input[aria-invalid=true]{border-color:var(--danger);color:var(--danger);box-shadow:inset 0 0 0 1px #8f3f2e26}#app{min-height:100vh}.app-shell{min-height:100vh;padding:max(.35rem, env(safe-area-inset-top)) max(.35rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(.35rem, env(safe-area-inset-left))}.control-deck{gap:.45rem;width:min(1200px,100%);margin:0 auto;display:grid}.status-strip,.mode-inputs,.result-hero,.primary-actions,.lower-deck,.tools-panel{border-top:1px solid var(--line);border-right:0;border-bottom:1px solid var(--line);box-shadow:none;background:#ffffff2e;border-left:0}.status-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem;width:min(1200px,100%);margin:0 auto .35rem;padding:.3rem 0;display:grid}.die-chip,.reconnect-chip{background:#ffffff57;border:1px solid #221a131f;justify-content:space-between;align-items:center;gap:.45rem;min-height:2.7rem;padding:.4rem .5rem;display:flex}.die-chip.state-connected,.telemetry-row.state-connected{background:#3f76652e}.die-chip.state-busy,.telemetry-row.state-busy{background:#a46e222e}.die-chip.state-idle,.telemetry-row.state-idle,.reconnect-chip.state-idle{background:#6255481f}.reconnect-chip.state-active{background:#3f76652e}.reconnect-chip.state-warning{background:#a46e222e}.reconnect-chip{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;justify-content:center;font-size:.68rem;font-weight:700}.die-chip-icons{align-items:center;gap:.55rem;display:flex}.die-glyph{flex:none;width:2.1rem;height:2.1rem;display:inline-flex}.die-glyph svg{width:100%;height:100%;overflow:visible}.die-glyph .die-side-face{fill:#ffffff0d;stroke:currentColor;stroke-width:1.2px;stroke-linecap:round;stroke-linejoin:round;opacity:.82}.die-glyph .die-face{fill:#ffffff1f;stroke:currentColor;stroke-width:1.45px;stroke-linecap:round;stroke-linejoin:round}.die-glyph .die-bottom-seams{fill:none;stroke:currentColor;stroke-width:1.2px;stroke-linecap:round;stroke-linejoin:round;opacity:.82}.die-glyph text{fill:currentColor;stroke:none;font-size:11.5px;font-family:var(--display);letter-spacing:.03em;font-weight:700}.die-glyph.is-single text{letter-spacing:.01em;font-size:14.8px}.die-glyph.is-double text{letter-spacing:.02em;font-size:11.2px}.signal-bars{align-items:end;gap:.14rem;height:1rem;display:inline-flex}.signal-bar{background:#221a132e;border-radius:1px;width:.22rem}.signal-bar:first-child{height:.35rem}.signal-bar:nth-child(2){height:.62rem}.signal-bar:nth-child(3){height:.92rem}.signal-bar.is-on{background:currentColor}.battery-glyph{color:currentColor;align-items:center;display:inline-flex;position:relative}.battery-shell{border:1px solid;grid-template-columns:repeat(5,.18rem);gap:.07rem;min-height:.82rem;padding:.12rem;display:grid}.battery-segment{background:#221a1324}.battery-segment.is-on{background:currentColor}.battery-glyph.is-low{color:var(--danger)}.battery-glyph.is-unknown{color:var(--idle)}.battery-bolt{margin-left:.18rem;font-size:.66rem;font-weight:700}.mode-inputs,.result-hero,.primary-actions,.lower-deck{padding:.5rem 0}.mode-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem;margin-bottom:.45rem;display:grid}.mode-pill{min-width:0;padding:.6rem .4rem}.mode-pill.is-hidden{display:none}.mode-pill.is-active{background:var(--accent-strong)}.input-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;display:grid}.input-grid.attack-active{grid-template-columns:repeat(4,minmax(0,1fr))}.compact-field{gap:.14rem;display:grid}.compact-field span,.telemetry-label,.tools-kicker,.tools-label,.result-details dt{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;font-size:.68rem}.compact-field.is-disabled{opacity:.45}.result-hero{background:linear-gradient(180deg, #ffffff14, transparent), var(--surface-strong);border-right:1px solid var(--line);border-left:1px solid var(--line);gap:.9rem;padding:1.15rem .95rem 1rem;display:grid;box-shadow:0 8px 24px #140c0614}.result-mainline{grid-template-columns:auto 1fr;align-items:center;gap:1rem;display:grid}.result-roll{font:700 clamp(3.8rem, 11vw, 6.8rem) / .9 var(--display);letter-spacing:-.05em;margin:0}.result-copy{align-content:center;gap:.22rem;min-width:0;display:grid}.result-summary-line{font:700 clamp(1.2rem, 3vw, 1.65rem) / 1.08 var(--display);text-wrap:balance;margin:0}.result-detail-line{color:var(--muted);flex-wrap:wrap;gap:.75rem;margin:0;font-size:1.05rem;display:flex}.result-facts-line{border-top:1px solid var(--line);color:var(--text);flex-wrap:wrap;gap:.55rem 1rem;margin:0;padding-top:.9rem;font-size:1.06rem;display:flex}.result-facts-line.muted-details{gap:.45rem 1rem}.result-facts-line span{white-space:nowrap}.result-facts-line strong{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-right:.35rem;font-size:.82rem}.result-note,.error-banner,.tools-copy{margin:0}.result-note{color:var(--muted);font-size:.94rem}.error-banner{color:var(--danger);font-weight:700}.result-success{border-color:#2e6b5852}.result-failure{border-color:#8f3f2e57}.result-warning{border-color:#a46e2257}.primary-actions{flex-wrap:wrap;gap:.35rem;display:flex}.primary-actions button{flex:1 1 0}.tools-trigger{align-items:center;gap:.45rem;display:inline-flex}.lower-deck{grid-template-columns:minmax(0,1.05fr) minmax(280px,.95fr);gap:.45rem;display:grid}.dice-telemetry{background:#ffffff1f;border-top:1px solid #221a131f;border-bottom:1px solid #221a131f;gap:.2rem;padding:.45rem .55rem;display:grid}.telemetry-columns,.telemetry-row{grid-template-columns:minmax(4.9rem,.9fr) minmax(0,1.55fr) minmax(3rem,.5fr) minmax(4.6rem,.7fr) minmax(5.4rem,.75fr);align-items:center;gap:.75rem;display:grid}.telemetry-columns{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;padding:0 .1rem .2rem;font-size:.72rem}.telemetry-label-short{display:none}.telemetry-row{padding:.35rem .1rem}.telemetry-cell{min-width:0}.telemetry-cell-label,.telemetry-label,.telemetry-name,.telemetry-status,.telemetry-value{margin:0}.telemetry-cell-label{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-size:.68rem;display:none}.telemetry-label{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-size:.76rem}.telemetry-name{font:700 .98rem / 1.15 var(--display);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.telemetry-status{color:var(--muted);text-align:right;white-space:nowrap;text-overflow:ellipsis;font-size:.84rem;overflow:hidden}.telemetry-value{white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.log-section{background:#ffffff2e;border:1px solid #221a131f;border-left:0;border-right:0}.log-toggle{width:100%;color:var(--text);background:0 0;border:0;justify-content:space-between;align-items:center;padding:.75rem;font-weight:700;display:flex}.event-log{gap:.55rem;margin:0;padding:0 .75rem .75rem;list-style:none;display:grid}.event-log li{border-top:1px solid #221a1314;gap:.15rem;padding-top:.55rem;display:grid}.timestamp{color:var(--muted);font-family:var(--mono);font-size:.78rem}.tools-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#140c0647;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.tools-panel{background:var(--surface-strong);border-right:1px solid var(--line);border-left:1px solid var(--line);width:min(720px,100%);padding:1rem;box-shadow:0 14px 36px #140c0629}.tools-header{justify-content:space-between;align-items:start;gap:.75rem;margin-bottom:.9rem;display:flex}.tools-header h2{font:700 1.55rem / 1.1 var(--display);margin:.12rem 0 0}.icon-button{justify-content:center;align-items:center;width:2.5rem;height:2.5rem;padding:0;display:inline-flex}.tools-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.tools-grid section{background:#ffffff6b;border:1px solid #221a131f;gap:.28rem;padding:.75rem;display:grid}.tools-actions{justify-content:flex-end;margin-top:.9rem;display:flex}@media (width<=980px){.lower-deck,.tools-grid{grid-template-columns:1fr}.telemetry-columns,.telemetry-row{grid-template-columns:minmax(4.6rem,.9fr) minmax(0,1.35fr) minmax(2.7rem,.45fr) minmax(4.3rem,.65fr) minmax(5rem,.65fr);gap:.55rem}}@media (width<=720px){:root{font-size:16px}.status-strip{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(4.7rem,.82fr)}.input-grid,.input-grid.attack-active,.result-facts-line,.result-facts-line.muted-details{gap:.4rem .8rem}.mode-row{grid-template-columns:repeat(3,minmax(0,1fr))}.critical-reroll-field{grid-column:1/-1}}@media (width<=520px){.app-shell{padding-left:.2rem;padding-right:.2rem}.status-strip,.mode-inputs,.result-hero,.primary-actions,.lower-deck,.tools-panel{padding-top:.35rem;padding-bottom:.35rem}.status-strip{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(4.15rem,.72fr);gap:.25rem;padding-top:.4rem;padding-bottom:.4rem}.die-chip,.reconnect-chip{min-height:3.05rem;padding:.42rem .48rem}.die-glyph{width:2.45rem;height:2.45rem}.die-glyph text{font-size:12.5px}.die-glyph.is-single text{font-size:15.6px}.die-glyph.is-double text{font-size:12px}.reconnect-chip{font-size:.8rem}.signal-bars{height:1.15rem}.signal-bar{width:.24rem}.battery-shell{grid-template-columns:repeat(5,.2rem);min-height:.92rem}.input-grid,.result-facts-line,.result-facts-line.muted-details{grid-template-columns:repeat(2,minmax(0,1fr))}.dice-telemetry{gap:.3rem;padding:.35rem .45rem}.telemetry-columns,.telemetry-row{grid-template-columns:minmax(3.7rem,.9fr) minmax(0,1.28fr) minmax(2rem,.4fr) minmax(2.9rem,.55fr) minmax(3.8rem,.6fr);gap:.35rem}.telemetry-columns{letter-spacing:.1em;padding-bottom:.12rem;font-size:.64rem}.telemetry-label-long{display:none}.telemetry-label-short{display:inline}.telemetry-cell-label{display:none}.telemetry-row{padding:.24rem 0}.telemetry-label{letter-spacing:.08em;font-size:.68rem}.telemetry-name{font-size:.88rem}.telemetry-value,.telemetry-status{font-size:.8rem}.input-grid.attack-active{grid-template-columns:repeat(3,minmax(0,1fr))}.input-grid.attack-active .critical-reroll-field{grid-column:1/-1}.mode-row{gap:.25rem}.mode-pill,.primary-actions button,.log-toggle{padding-left:.58rem;padding-right:.58rem}.mode-pill{min-height:3.05rem;font-size:1.12rem}.compact-field span{letter-spacing:.08em;font-size:.72rem}.compact-field input{min-height:3rem;padding:.62rem .55rem;font-size:1.08rem}.primary-actions button{min-width:0}.result-roll{font-size:clamp(4.1rem,18vw,5.9rem)}.result-summary-line{font-size:1.32rem}.result-detail-line,.result-facts-line{font-size:1.18rem}.result-facts-line strong{font-size:.84rem}.result-hero{padding:1.28rem 1rem 1.1rem}.result-mainline{gap:1.1rem}}
