@charset "UTF-8";
:root{color-scheme:dark;--bg:#11151d;--panel:#1a202b;--line:#303846;--text:#e9ecf0;--muted:#929eae;--mint:#b5f5c2;--gold:#ffd77d;--red:#ff837c;font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:#0c1016;color:var(--text);min-height:100dvh;background-image:radial-gradient(ellipse at 50% 20%,#252e3c66,transparent 65%)}button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation;border:0;color:inherit}button:disabled{cursor:default;opacity:.4}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:3px}button:active:not(:disabled){transform:translateY(1px)}#game{max-width:460px;margin:0 auto;background:var(--bg);min-height:100dvh;padding:20px 20px max(18px,env(safe-area-inset-bottom));position:relative;overflow:hidden;border-left:1px solid #222a35;border-right:1px solid #222a35}.top{display:flex;align-items:center;justify-content:space-between}.brand{font-size:20px;letter-spacing:2px;font-weight:900}.brand small{font-size:9px;color:var(--mint);letter-spacing:1px;display:block;margin-top:4px;font-weight:500}.tools{display:flex;gap:6px}.tool{background:#222936;border:1px solid var(--line);border-radius:8px;min-width:34px;height:34px;font-size:12px;color:var(--muted)}.route{display:flex;align-items:center;justify-content:space-between;gap:5px;margin:22px 0 16px}.route-step{display:flex;gap:6px;align-items:center;font-size:9px;color:#788497;white-space:nowrap}.route-step b{width:21px;height:21px;border:1px solid #37404f;border-radius:50%;display:grid;place-items:center;font-size:10px}.route-step.current{color:var(--mint)}.route-step.current b{background:var(--mint);color:#17261c;border-color:var(--mint)}.route-step.done b{background:#304339;color:var(--mint)}.route-line{height:1px;flex:1;background:var(--line)}.player{display:flex;gap:12px;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 0 12px}.hp{font-size:13px}.hp b{font-size:21px;margin:0 4px;color:var(--red);font-variant-numeric:tabular-nums}.hp span{color:var(--muted);font-size:12px}.shield{color:#aacbff;font-size:12px}.build-pill{max-width:180px;font-size:10px;border:1px solid var(--line);padding:6px 9px;border-radius:20px;color:var(--gold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.enemy-head{display:flex;justify-content:space-between;align-items:center;margin-top:16px}.eyebrow{color:var(--muted);font-size:10px;letter-spacing:1.5px}.enemy-name{font-size:18px;font-weight:700;margin-top:3px}.enemy-hp{font-size:13px;font-variant-numeric:tabular-nums}.enemy-hp small{color:var(--muted)}.health-track{height:5px;background:#34313a;margin-top:9px;border-radius:4px;overflow:hidden}.health-track div{height:100%;background:var(--red);transition:width .35s}.enemy-stage{height:108px;display:flex;align-items:center;justify-content:center;position:relative}.enemy-mark{color:#a7b1c0;position:relative;display:grid;place-items:center;width:76px;height:76px;border:1px solid #444e5e;transform:rotate(8deg);background:#242c38;box-shadow:8px 8px 0 #080b1033}.enemy-mark .glyph{font-size:47px;line-height:1;transform:rotate(-8deg)}.enemy-mark:before,.enemy-mark:after{content:"";width:5px;height:5px;background:var(--red);position:absolute;top:29px}.enemy-mark:before{left:26px}.enemy-mark:after{right:26px}.enemy-mark.boss{border-color:var(--gold);color:var(--gold);background:#393027}.enemy-level{position:absolute;left:0;bottom:16px;font-size:10px;color:var(--muted);max-width:140px;line-height:1.6}.enemy-armor{position:absolute;right:0;bottom:16px;color:#aacbff;font-size:12px}.intent{background:#28242b;border:1px solid #453137;border-radius:8px;padding:10px 12px;display:flex;align-items:center;gap:9px;font-size:12px;min-height:38px}.intent .symbol{color:var(--red);font-size:16px}.intent small{margin-left:auto;color:var(--muted);font-size:10px}.edict{padding:8px 0 0;font-size:11px;color:var(--gold)}.board-head{display:flex;align-items:center;justify-content:space-between;margin:21px 0 14px;font-size:11px;color:var(--muted)}.board-head b{color:var(--text);font-size:13px}.dice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px 15px;padding:0 12px}.die-wrap{text-align:center;min-width:0}.die{width:100%;aspect-ratio:1;max-height:104px;border-radius:13px;background:#e9e7de;color:#283244;border:2px solid #faf9ef;box-shadow:0 5px 0 #aaa99f,0 9px 12px #0004;position:relative;transition:transform .13s,border-color .13s;display:flex;align-items:center;justify-content:center;isolation:isolate}.die.locked{transform:translateY(-5px);border-color:var(--gold);box-shadow:0 5px 0 #c5a45d,0 0 18px #ffd77d35}.die.unused{opacity:.53}.die .lock{position:absolute;right:5px;top:4px;font-size:11px;color:#a86d0b}.die .special{position:absolute;left:6px;top:4px;font-size:12px}.die .number{font-size:38px;font-weight:800}.die.wild{background:#e1d7f8;border-color:#c9afff}.die.bomb{background:#f7d0c7;border-color:#ff9384;color:#9c3529}.die.blood{background:#f1ccdf;border-color:#ec91ba;color:#923c68}.die.echo,.die.mad{background:#d1e8eb;color:#24646d}.die.gold{background:#f0dfb7;color:#886727}.die.frozen{background:#d3e6ff;color:#376c9e}.die.polluted{background:#cad8a9;border-color:#91b765;color:#4a641f}.die-name{font-size:9px;color:var(--muted);margin-top:11px;min-height:13px}.die-name.locked-label{color:var(--gold)}.pips{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:54%;height:54%;gap:4px}.pip{width:10px;height:10px;max-width:100%;max-height:100%;background:currentColor;border-radius:50%;align-self:center;justify-self:center}.hint{color:var(--mint);font-size:11px;text-align:center;min-height:30px;padding:10px 0 7px}.combo-head{display:flex;align-items:center;justify-content:space-between;margin:10px 0;font-size:12px}.combo-head small{font-size:10px;color:var(--muted)}.combos{display:flex;gap:7px;overflow-x:auto;padding:2px 0 8px;scrollbar-width:thin;scrollbar-color:#505b6a transparent}.combo{flex:0 0 116px;text-align:left;background:#202735;border:1px solid #374254;border-radius:9px;padding:10px 11px;position:relative}.combo.selected{border-color:var(--mint);background:#253b32}.combo .cname{display:block;font-size:12px;font-weight:600}.combo .cmult{float:right;color:var(--gold);font-size:11px}.combo .cdamage{font-size:20px;font-weight:750;display:block;margin:5px 0 3px;font-variant-numeric:tabular-nums}.combo .cdamage small{font-size:10px;color:var(--muted);font-weight:400}.combo .ceffect{font-size:9px;color:var(--muted);white-space:nowrap}.formula{text-align:center;font-size:11px;color:var(--muted);min-height:25px;padding:5px 0;line-height:1.6}.formula b{color:var(--gold)}.attack{width:100%;min-height:49px;border-radius:9px;background:var(--mint);color:#17271d;font-weight:800;display:flex;align-items:center;justify-content:space-between;padding:0 16px;letter-spacing:.5px}.attack strong{font-size:22px}.attack small{font-size:10px;font-weight:500}.roll-buttons{display:flex;gap:10px;margin-top:10px}.reroll,.mad-roll{flex:1;min-height:48px;border-radius:9px;background:#293244;border:1px solid #41516a;display:flex;align-items:center;justify-content:center;gap:9px;font-size:13px;font-weight:600}.reroll small{font-size:11px;color:#b1bfd3}.mad-roll{background:#38272d;border-color:#704049;color:var(--red)}.mad-roll small{font-size:11px}.mad-roll.ready{box-shadow:0 0 16px #ff837c18;border-color:#ff837c}.foot{font-size:9px;color:#707d91;text-align:center;margin:12px 0 0;line-height:1.6}.last-log{margin-top:10px;color:var(--muted);font-size:10px;line-height:1.6;border-top:1px solid var(--line);padding-top:9px;min-height:24px}.feedback{position:absolute;inset:120px 12px auto;text-align:center;pointer-events:none;background:#11151deF;z-index:5;border:1px solid #586958;border-radius:15px;padding:30px 10px;animation:feedback .8s both}.feedback .fname{font-size:24px;color:var(--gold);font-weight:850}.feedback .fmath{font-size:13px;color:var(--muted);margin-top:9px}.feedback .fvalue{font-size:58px;color:var(--mint);font-weight:900;line-height:1.25}.feedback.frenzy{border-color:var(--gold);box-shadow:0 0 35px #ffd77d22}.feedback.frenzy .fname{font-size:28px}.rolling .die:not(.locked){animation:roll .5s ease both}.mad-animation{animation:shake .45s}.mad-animation .die:not(.locked){animation:madRoll .5s ease both}.hurt-mark{animation:hit .5s}.modal-backdrop{position:fixed;inset:0;background:#06090dd9;z-index:20;overflow-y:auto;display:flex;align-items:flex-start;justify-content:center;padding:30px 14px;backdrop-filter:blur(5px)}.modal{width:100%;max-width:440px;background:#171d27;border:1px solid #3a4454;border-radius:16px;padding:22px;box-shadow:0 22px 100px #0008}.modal-header{display:flex;align-items:center;justify-content:space-between}.modal h2{font-size:24px;margin:6px 0 9px;letter-spacing:1px}.modal p{font-size:12px;color:var(--muted);line-height:1.8;margin:6px 0 18px}.modal .close{width:30px;height:30px;border-radius:8px;background:#2c3544;color:var(--muted)}.rewards{display:grid;gap:12px;margin:19px 0}.reward-card{width:100%;text-align:left;border:1px solid #404a5c;background:#202937;border-radius:12px;padding:16px;display:grid;grid-template-columns:42px 1fr;gap:13px;transition:border-color .15s}.reward-card:hover{border-color:var(--mint)}.reward-icon{height:42px;background:#313d4d;color:var(--gold);border-radius:8px;display:grid;place-items:center;font-weight:800;font-size:20px}.reward-title{font-size:15px;font-weight:750}.tag{float:right;font-size:9px;padding:3px 6px;border:1px solid #51624a;border-radius:4px;color:var(--mint);font-weight:500}.reward-desc{font-size:11px;color:#b0bbca;line-height:1.65;display:block;margin-top:7px}.secondary{padding:11px 14px;background:#2a3443;border:1px solid #414e61;border-radius:8px;font-size:12px}.wide{width:100%;margin-top:12px}.reward-footer{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted)}.editor-dice{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0}.editor-die{padding:10px 5px;background:#252e3d;border:1px solid #424e61;border-radius:8px;font-size:11px;line-height:1.8}.editor-die.selected{border-color:var(--gold);background:#393428}.mini-faces{display:flex;gap:3px;flex-wrap:wrap;margin-top:5px}.mini-face{min-width:21px;height:24px;display:inline-grid;place-items:center;background:#e4e1d6;color:#2b3546;border-radius:4px;font-size:10px;position:relative}.mini-face.special-face{background:#d7c6e8;color:#513b72}.face-selector{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:14px 0}.face-choice{padding:12px 0;background:#e4e1d6;color:#253144;border:2px solid transparent;border-radius:8px;font-size:17px}.face-choice.selected{border-color:var(--gold);box-shadow:0 0 0 2px #ffd77d4d}.preview-change{padding:12px;background:#22362d;color:var(--mint);font-size:12px;border-radius:8px;line-height:1.7}.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:18px 0}.stat{background:#222b38;border-radius:8px;padding:12px}.stat label{display:block;font-size:10px;color:var(--muted);margin-bottom:6px}.stat b{font-size:20px;font-variant-numeric:tabular-nums}.stat.highlight b{color:var(--gold)}.final-die{border-bottom:1px solid var(--line);padding:9px 0;display:flex;gap:12px;align-items:center;font-size:11px}.final-die .mini-faces{margin:0;flex:1}.final-die .mini-face{flex:1;max-width:42px}.upgrades-list{font-size:11px;line-height:1.9;color:var(--gold)}.rules-list{margin:14px 0;display:grid;gap:8px}.rules-row{display:flex;gap:12px;align-items:center;font-size:11px;border-bottom:1px solid var(--line);padding:8px 0}.rules-row span{width:84px;color:var(--gold)}.rules-row p{margin:0;flex:1;font-size:10px}.debug-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.debug-grid button{margin:0}.field{margin:14px 0;font-size:11px;color:var(--muted)}.field label{display:block;margin-bottom:7px}.field input,.field select{width:100%;padding:10px;background:#0d131d;border:1px solid #414e61;color:var(--text);border-radius:7px}.field-row{display:flex;gap:8px}.field-row input,.field-row select{min-width:0;flex:1}.debug-note{color:var(--red)!important}.toast{font-size:11px;color:var(--gold);min-height:19px;margin-top:8px}.small-heading{font-size:11px;color:var(--muted);letter-spacing:1px;margin:18px 0 8px}.saved-run{padding:9px 0;border-bottom:1px solid var(--line);font-size:10px;display:flex;justify-content:space-between;color:var(--muted)}
@keyframes roll{0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-12px) rotate(-12deg)}55%{transform:translateY(-4px) rotate(15deg)}80%{transform:translateY(-7px) rotate(-6deg)}100%{transform:none}}
@keyframes madRoll{20%{transform:translateY(-17px) rotate(-20deg);background:#ffb1a6}60%{transform:translateY(-4px) rotate(19deg)}100%{transform:none}}
@keyframes shake{20%,60%{transform:translateX(-3px)}40%,80%{transform:translateX(3px)}}
@keyframes hit{30%{background:#9e453f;transform:rotate(-6deg) scale(.9)}100%{transform:rotate(8deg)}}
@keyframes feedback{0%{opacity:0;transform:translateY(15px) scale(.94)}20%,80%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-10px)}}
@media(min-width:700px){body{padding:24px 0}#game{min-height:820px;border:1px solid #303a48;border-radius:18px;box-shadow:0 30px 90px #0007}.modal-backdrop{padding-top:65px}}
@media(max-width:370px){#game{padding:14px 12px}.route{gap:3px;margin-top:17px}.route-step{gap:3px;font-size:8px}.route-step b{width:18px;height:18px}.dice-grid{gap:12px;padding:0 7px}.die{border-radius:10px}.pip{width:8px;height:8px}.enemy-stage{height:90px}.board-head{margin-top:17px}.modal{padding:17px}.build-pill{max-width:145px}}
/* Keep the main decisions together on a common 9:16 handset. Smaller screens scroll vertically. */
@media(max-width:699px),(max-height:850px){
  #game{padding-top:13px;padding-bottom:13px;min-height:100dvh}.brand{font-size:18px;line-height:1.2}.brand small{font-size:8px;line-height:1.2}.tool{height:31px;min-width:31px}.route{margin:12px 0 11px}.route-step b{height:19px;width:19px}.player{padding-bottom:9px}.hp b{font-size:20px}.enemy-head{margin-top:10px}.enemy-name{font-size:16px}.health-track{margin-top:7px}.enemy-stage{height:66px}.enemy-mark{width:48px;height:48px}.enemy-mark .glyph{font-size:31px}.enemy-mark:before,.enemy-mark:after{top:17px;width:4px;height:4px}.enemy-mark:before{left:15px}.enemy-mark:after{right:15px}.enemy-level,.enemy-armor{bottom:10px}.intent{min-height:34px;padding:8px 10px;font-size:11px}.board-head{margin:14px 0 10px}.dice-grid{gap:12px 15px}.die{max-width:90px;max-height:90px;margin:0 auto}.die-name{margin-top:8px;font-size:9px}.hint{min-height:26px;padding:8px 0 4px}.combo-head{margin:8px 0;font-size:11px}.combo-head small{font-size:9px}.combo{padding:8px 9px;flex-basis:112px}.combo .cname{font-size:11px}.combo .cdamage{font-size:18px;margin:3px 0 2px}.combo .ceffect{font-size:9px}.combos{padding-bottom:5px}.formula{font-size:10px;min-height:23px;padding:3px 0}.roll-buttons{margin-top:8px}.reroll,.mad-roll{min-height:45px}.foot{margin-top:8px;font-size:8px}.last-log{margin-top:7px;padding-top:7px;font-size:9px}.edict{font-size:10px;padding-top:5px}
}
@media(max-width:699px),(max-height:850px){.enemy-stage{height:54px}.die{max-height:83px;max-width:83px}.die-name{margin-top:5px}.board-head{margin-top:12px}.route{margin-top:10px;margin-bottom:10px}}
@media(max-width:340px){.die{max-height:76px;max-width:76px}.combo-head small{max-width:165px;text-align:right}.dice-grid{gap:12px 9px}.tools{gap:4px}.tool{min-width:28px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
