*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{color:#1a1a1a;background:radial-gradient(circle at top,#f3efe6 0%,#e7e0d2 45%,#d9d0bf 100%);margin:0;font-family:Georgia,Times New Roman,serif}.shell{text-align:center;place-content:center;gap:.75rem;min-height:100dvh;padding:1.5rem;display:grid}.brand{letter-spacing:.08em;margin:0;font-size:clamp(2rem,8vw,3.5rem);font-weight:700}.phase{letter-spacing:.18em;text-transform:uppercase;color:#5a5348;margin:0;font-size:clamp(.95rem,3.5vw,1.15rem)}.status{color:#2f2a24;margin:.5rem 0 0;font-size:clamp(1rem,3.8vw,1.25rem)}.status-connecting{letter-spacing:.06em}.status-error{color:#7a2e24}.error-block{justify-items:center;gap:.6rem;max-width:22rem;margin-inline:auto;display:grid}.error-code{color:#5a5348;margin:0;font-family:ui-monospace,Consolas,monospace;font-size:.85rem}.retry-button{color:#f3efe6;min-width:9rem;min-height:44px;font:inherit;letter-spacing:.08em;cursor:pointer;background:#2f2a24;border:1px solid #2f2a24;border-radius:0;margin-top:.35rem;padding:.65rem 1.25rem}.retry-button:disabled{opacity:.55;cursor:not-allowed}.retry-button:focus-visible{outline-offset:3px;outline:2px solid #2f2a24}.home{justify-items:center;gap:1.75rem;width:min(100%,22rem);margin-inline:auto;display:grid}.home-header{justify-items:center;gap:.45rem;display:grid}.total-dp{letter-spacing:.06em;color:#2f2a24;margin:.35rem 0 0;font-size:clamp(1.05rem,4vw,1.35rem)}.home-message{justify-items:center;gap:.35rem;display:grid}.home-tagline{letter-spacing:.1em;margin:0;font-size:clamp(1.15rem,4.2vw,1.45rem);font-weight:700}.home-tagline-sub{letter-spacing:.12em;color:#5a5348;margin:0;font-size:clamp(.95rem,3.5vw,1.15rem)}.action-slot{place-items:center;width:100%;min-height:5.5rem;display:grid}.roll-button{color:#f3efe6;width:100%;min-height:44px;font:inherit;letter-spacing:.1em;cursor:not-allowed;opacity:.55;background:#2f2a24;border:1px solid #2f2a24;border-radius:0;padding:.85rem 1.25rem;font-size:clamp(1rem,3.8vw,1.2rem)}.roll-button-active:not(:disabled){opacity:1;cursor:pointer}.roll-button:disabled{opacity:.55;cursor:not-allowed}.roll-button-active:focus-visible{outline-offset:3px;outline:2px solid #2f2a24}.recharge-panel{border:1px solid #2f2a24;place-content:center;gap:.35rem;width:100%;min-height:5.5rem;padding:.75rem 1rem;display:grid}.recharge-label{letter-spacing:.14em;color:#5a5348;margin:0;font-size:clamp(.85rem,3.2vw,1rem)}.recharge-countdown{letter-spacing:.08em;font-variant-numeric:tabular-nums;margin:0;font-family:ui-monospace,Consolas,monospace;font-size:clamp(1.6rem,6vw,2.1rem)}.reset-info{letter-spacing:.04em;color:#5a5348;font-variant-numeric:tabular-nums;margin:0;font-size:clamp(.9rem,3.3vw,1.05rem)}.roll-result{justify-items:center;gap:.75rem;width:100%;display:grid}.dice-row{grid-template-columns:1fr 1fr;gap:.75rem;width:100%;display:grid}.dice-card{background:#f3efe6;border:1px solid #2f2a24;place-items:center;min-height:5.5rem;display:grid}.dice-value{font-variant-numeric:tabular-nums;letter-spacing:.04em;font-family:ui-monospace,Consolas,monospace;font-size:clamp(2rem,8vw,2.75rem)}.roll-outcome{letter-spacing:.14em;margin:0;font-size:clamp(1.05rem,4vw,1.25rem);font-weight:700}.roll-dp-award{letter-spacing:.08em;color:#2f2a24;margin:0;font-size:clamp(.95rem,3.5vw,1.1rem)}.roll-balance-transition{align-content:center;justify-items:center;gap:.35rem;width:100%;min-height:4.5rem;display:grid}.roll-balance-value{letter-spacing:.06em;font-variant-numeric:tabular-nums;margin:0;font-family:ui-monospace,Consolas,monospace;font-size:clamp(1.75rem,7vw,2.35rem);font-weight:700}.roll-balance-delta{letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:clamp(.9rem,3.4vw,1.05rem)}.roll-balance-spent{color:#5a5348;font-weight:700}.roll-balance-bonus{color:#2f2a24;border-bottom:1px solid #2f2a24;padding-bottom:.1rem;font-weight:700}.action-slot-filler{width:100%;min-height:5.5rem}.roll-status-panel{align-content:center;justify-items:center;gap:.55rem;width:100%;min-height:5.5rem;display:grid}.roll-status-title{letter-spacing:.08em;margin:0;font-size:clamp(1rem,3.8vw,1.2rem)}@media (width>=480px){.shell{padding:2rem}.home{gap:2rem;width:min(100%,26rem)}}
