:root{font-family:Arial,Helvetica,sans-serif;color:#122d32;background:#dcece2;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:320px}button{font:inherit;cursor:pointer}button:focus-visible{outline:3px solid #ffbb26;outline-offset:3px}[hidden]{display:none!important}.app{min-height:100svh;display:flex;flex-direction:column;padding:0 24px}.topbar,.footer{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.topbar{height:76px;max-width:1800px;width:100%;margin:auto}.logotype{display:flex;align-items:center;gap:9px;font-size:19px;font-weight:950;letter-spacing:-1px}.logotype sup{font-size:9px;position:relative;top:-5px;margin-left:2px}.logomark{display:grid;place-items:center;background:#182d33;color:#ffd455;font-size:27px;width:35px;height:35px;border-radius:10px;transform:rotate(-9deg)}.brand-accent{color:#e87d50}.topbar-right{display:flex;align-items:center;gap:10px}.edition{font-weight:800;font-size:10px;letter-spacing:1.5px;opacity:.6;margin-right:24px}.icon-button{border:2px solid #24373a;background:transparent;width:36px;height:36px;border-radius:11px;font-weight:900;font-size:19px;color:#122d32;transition:transform .15s,background .15s}.icon-button:hover{transform:translateY(-2px);background:#ffe6a5}.game-frame{position:relative;overflow:hidden;isolation:isolate;border:6px solid #162e33;border-radius:24px;flex:1;min-height:520px;width:100%;max-width:1800px;margin:0 auto;background:#cfe4d4;box-shadow:0 12px 0 #b2c6b7,0 20px 46px #2b574b23}canvas{width:100%;height:100%;position:absolute;inset:0;display:block;touch-action:none}.vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 120px #384f4b14}.footer{height:57px;width:100%;max-width:1800px;margin:0 auto;gap:16px;font-size:9px;font-weight:800;letter-spacing:1.2px;opacity:.55}.overlay{position:absolute;inset:0;z-index:10;background:linear-gradient(115deg,#f9f3ddef 0%,#f8f3deed 49%,#e9efe3d7 100%);display:flex;align-items:center;justify-content:center;overflow:hidden}.cover-copy{width:min(52%,630px);z-index:2;margin-left:36%;padding:28px 28px 50px;position:relative}.eyebrow,.result-eyebrow{font-size:11px;font-weight:950;letter-spacing:2.3px;display:flex;align-items:center;gap:11px}.eyebrow-dot{height:10px;width:10px;background:#ed7650;border-radius:50%;box-shadow:0 0 0 4px #ed765022}h1{font-size:clamp(70px,9vw,152px);font-weight:1000;line-height:.79;letter-spacing:-.085em;margin:23px 0 25px;transform:scaleX(.99);transform-origin:left}h1>span{color:#eb7951}.title-period{color:#182f34}.cover-copy p{font-size:clamp(14px,1.3vw,19px);line-height:1.58;max-width:450px;font-weight:600;margin:0 0 29px}.cover-copy p em{font-style:normal;text-decoration:underline;text-decoration-thickness:3px;text-decoration-color:#f3c94d;text-underline-offset:4px}.primary-button{font-size:14px;letter-spacing:.7px;font-weight:1000;border:3px solid #182e33;border-radius:13px;background:#ffd15b;color:#152d32;padding:17px 22px;box-shadow:5px 5px 0 #152d32;transition:transform .14s,box-shadow .14s;display:inline-flex;gap:32px;align-items:center;justify-content:space-between}.primary-button span{font-size:24px;line-height:16px}.primary-button:hover{transform:translate(2px,2px);box-shadow:3px 3px 0 #152d32}.primary-button:active{transform:translate(5px,5px);box-shadow:none}.intro-stats{display:flex;gap:16px;align-items:center;font-size:10px;letter-spacing:.5px;margin-top:32px;font-weight:850}.intro-stats strong{font-size:15px}.intro-stats .stat-dot{font-size:5px;opacity:.4}.cover-serial{position:absolute;bottom:28px;right:30px;opacity:.45;font-weight:800;font-size:10px;letter-spacing:2px}.controls-guide{position:absolute;bottom:28px;left:30px;display:flex;gap:24px;flex-wrap:wrap;z-index:3;color:#375251;font-weight:850;font-size:10px;letter-spacing:1px;max-width:740px}.controls-guide>span{display:flex;gap:4px;align-items:center}kbd{display:inline-grid;place-items:center;min-width:19px;height:21px;padding:0 4px;border:1px solid #8ea199;border-radius:4px;background:#fff7e8;font-family:inherit;font-weight:900;font-size:10px}.cover-art{position:absolute;top:50%;left:29%;width:min(40vw,620px);aspect-ratio:1;transform:translate(-50%,-50%);z-index:1}.halo{position:absolute;border:2px dashed #b9cdbe;border-radius:50%;inset:3%;animation:orbit 42s linear infinite}.halo-two{inset:15%;border-style:solid;opacity:.4;animation-direction:reverse}.face-storm{position:absolute;inset:19% 21% 17%;border-radius:52% 44% 50% 49%;background:radial-gradient(circle at 28% 23%,#ffefa7 0 8%,transparent 18%),radial-gradient(circle at 40% 34%,#ffcd47,#faaf3f 65%,#df7b3f);box-shadow:20px 27px 0 #e5a23f44,inset -20px -30px 0 #d96e3433;transform:rotate(-12deg);animation:bob 3s ease-in-out infinite}.face-storm:before,.face-storm:after{content:"";position:absolute;border-radius:50%;border:20px solid #ffe080;opacity:.75;inset:-19% 0 34%;transform:rotate(30deg);border-right-color:transparent;border-bottom-color:transparent}.face-storm:after{inset:32% -22% -19% 8%;border-width:22px;transform:rotate(195deg);opacity:.8}.eye{position:absolute;z-index:2;top:43%;height:10%;width:5%;border-radius:50%;background:#19353a}.eye.left{left:35%}.eye.right{left:58%}.mouth{position:absolute;z-index:2;top:57%;left:43%;height:6%;width:15%;border-radius:0 0 45px 45px;border-bottom:5px solid #19353a}.art-star,.flying-object{position:absolute;animation:bob 3.5s ease-in-out infinite}.art-star{font-size:48px;color:#e8794d}.star-a{left:10%;top:2%}.star-b{right:7%;bottom:10%;color:#edd155}.star-c{left:1%;bottom:19%;font-size:28px}.flying-object{font-size:50px;filter:drop-shadow(5px 7px 1px #183a3420)}.item-a{bottom:15%;left:3%;transform:rotate(-27deg)}.item-b{top:10%;right:4%;animation-delay:-1.2s}.item-c{top:20%;left:7%;animation-delay:-.5s}@keyframes bob{0%,100%{translate:0 0}50%{translate:0 -14px}}@keyframes orbit{to{rotate:360deg}}
.hud{position:absolute;z-index:5;inset:20px 24px auto;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none}.hud-card,.time-card{padding:13px 17px;border-radius:13px;border:2px solid #183439;background:#fff9eafa;box-shadow:3px 4px 0 #1b39372b;min-width:160px}.hud-card strong{display:block;font-size:31px;font-weight:1000;letter-spacing:-1px;line-height:1.12;margin:5px 0}.hud-label,.hud-caption{font-weight:950;font-size:10px;letter-spacing:1px}.hud-caption{color:#d86f4f;font-size:8px}.time-card{min-width:145px;text-align:center;background:#17383a;color:#fff9e6;border-color:#17383a}.time-card .hud-label{color:#b9d1cb}.time-card strong{font-size:43px;letter-spacing:-2px;font-weight:1000;display:block;line-height:1.2}.mission{position:absolute;z-index:5;top:137px;left:24px;background:#f4c557;border:2px solid #253d3d;border-radius:8px;padding:9px 12px;font-weight:950;font-size:10px;letter-spacing:.9px;display:flex;gap:8px;align-items:center;box-shadow:3px 3px 0 #223e3a22;pointer-events:none}.mission-dot{width:8px;height:8px;background:#e46a48;border:2px solid #273638;border-radius:50%}.game-bottom{position:absolute;bottom:20px;left:23px;right:23px;z-index:6;display:flex;gap:18px;align-items:end;pointer-events:none}.level-info{min-width:210px;display:flex;flex-direction:column;gap:6px;background:#fff6e7ed;border:2px solid #19373a;border-radius:12px;padding:12px 13px}.level-kicker,.charge-header,.charge-hint{font-size:10px;letter-spacing:.8px;font-weight:950}.level-info strong{font-weight:1000;letter-spacing:-.25px;font-size:15px}.level-info strong span{color:#dc8051}.charge-wrap{padding:13px 15px;background:#fff8e9ed;border:2px solid #19373a;border-radius:12px;min-width:170px;max-width:400px;flex:1}.charge-header{display:flex;justify-content:space-between;margin-bottom:6px}.charge-track{height:12px;background:#ced9ca;border-radius:10px;overflow:hidden;border:1px solid #334b48}.charge-fill{height:100%;width:0;background:repeating-linear-gradient(45deg,#e99a4b 0 12px,#f6c34d 12px 24px);transition:width .18s}.charge-hint{display:block;margin-top:5px;font-size:8px;color:#627b72}.special-button{pointer-events:auto;align-self:stretch;min-width:175px;border:2px solid #19373a;background:#f6c84d;border-radius:11px;font-weight:950;font-size:12px;letter-spacing:.4px;box-shadow:3px 4px 0 #19373a;color:#18373a;transition:transform .15s}.special-button:not(:disabled):hover{transform:translateY(-3px)}.special-button:disabled{background:#d3dcd0;color:#72877f;box-shadow:none}.keycap{border:1px solid currentColor;padding:5px;border-radius:4px;font-size:10px;margin-right:5px}.level-toast,.announcer{position:absolute;z-index:7;top:29%;left:50%;transform:translateX(-50%);text-align:center;pointer-events:none;font-weight:1000;letter-spacing:-1px;white-space:nowrap;text-shadow:3px 4px 0 #173b3bb8}.level-toast{font-size:clamp(30px,6vw,70px);color:#ffdb64;-webkit-text-stroke:2px #1b3c40;opacity:0;transition:opacity .2s}.level-toast.visible{opacity:1}.announcer{top:39%;font-size:clamp(17px,3vw,37px);color:#fffef3;-webkit-text-stroke:1px #173b3b;opacity:0;transition:opacity .12s}.announcer.visible{opacity:1}.damage-ticker{position:absolute;inset:0;pointer-events:none;z-index:4}.floating-score{position:absolute;font-weight:1000;font-size:19px;color:#fff4ab;-webkit-text-stroke:1px #254648;text-shadow:2px 3px 0 #21383388;animation:float-score .8s ease-out forwards;will-change:transform,opacity}@keyframes float-score{to{transform:translateY(-46px) scale(1.25);opacity:0}}.mobile-controls{position:absolute;z-index:7;bottom:122px;left:24px;display:flex;flex-direction:column;gap:8px;align-items:center;user-select:none;pointer-events:none}.joystick{width:115px;height:115px;border-radius:50%;background:#fff4d17a;border:3px solid #19363d6e;display:grid;place-items:center;pointer-events:auto;touch-action:none}.joystick-ring{width:83px;height:83px;border:2px dashed #1a393b88;border-radius:50%;display:grid;place-items:center}.joystick-knob{height:49px;width:49px;border-radius:50%;background:#f4c85b;border:3px solid #19373a;box-shadow:2px 4px 0 #183b3b44;transform:translate(0,0)}.mobile-hint{font-size:9px;font-weight:900;letter-spacing:1px;background:#fff8e6af;padding:3px 6px;border-radius:5px}.result-overlay,.pause-overlay{background:#eaf2e8f0}.result-card,.pause-card{text-align:center;width:min(580px,94%);border:4px solid #1b3839;background:#fff5df;border-radius:25px;box-shadow:12px 13px 0 #23484233;padding:35px 38px 41px;transform:rotate(-1deg)}.result-eyebrow{justify-content:center;color:#e17955}.result-card h2,.pause-card h2{font-size:clamp(63px,8vw,104px);font-weight:1000;line-height:.83;letter-spacing:-6px;margin:25px 0 14px}.result-card h2 span{color:#e47d54}.result-card p,.pause-card p{font-size:15px;font-weight:700;color:#44625a}.result-score{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;text-align:left;margin:28px 0}.result-score>div{border:2px solid #d1d8ca;background:#fffdf2;border-radius:10px;padding:15px 12px}.result-score span{display:block;font-size:9px;font-weight:950;letter-spacing:.7px}.result-score strong{display:block;font-size:clamp(20px,3vw,35px);margin-top:5px;font-weight:1000}.record-stamp{margin:-5px 0 20px;color:#d66c47;font-weight:1000;letter-spacing:2px}.pause-card .primary-button,.result-card .primary-button{margin:8px auto}.secondary-button{display:block;margin:22px auto 0;border:0;background:transparent;font-size:12px;font-weight:950;letter-spacing:1px;text-decoration:underline;text-underline-offset:5px;color:#31514f}
@media (max-width:900px){.app{padding:0 10px}.topbar{height:55px}.edition{display:none}.game-frame{border-width:4px;border-radius:16px;min-height:550px}.cover-art{left:26%;width:53vw;opacity:.7}.cover-copy{margin-left:26%;width:72%}.cover-copy h1{font-size:clamp(60px,11vw,100px)}.controls-guide{bottom:18px;gap:9px}.footer{height:38px;font-size:8px}.footer span:nth-child(2){display:none}.hud{inset:12px 10px auto}.hud-card,.time-card{min-width:100px;padding:10px}.hud-card strong{font-size:25px}.time-card strong{font-size:34px}.hud-label{font-size:8px}.mission{top:105px;left:10px}.game-bottom{left:10px;right:10px;bottom:12px;gap:8px}.level-info{min-width:160px}.special-button{min-width:125px}.keycap{display:none}}
@media (max-width:600px){.topbar{height:53px}.logotype{font-size:14px}.logomark{height:29px;width:29px;font-size:21px}.game-frame{min-height:600px;max-height:none}.footer{height:31px;font-size:7px}.footer span:last-child{display:none}.cover-art{width:280px;left:51%;top:25%;opacity:.52}.cover-copy{position:absolute;top:34%;margin:0;padding:12px 22px 65px;width:100%;text-align:center}.eyebrow{justify-content:center;font-size:9px;letter-spacing:1.5px}.cover-copy h1{font-size:clamp(58px,14.7vw,90px);margin:17px 0}.cover-copy p{font-size:14px;line-height:1.4;margin:0 auto 21px;max-width:330px}.primary-button{padding:15px 13px;font-size:12px;gap:12px}.intro-stats{justify-content:center;gap:12px;font-size:9px;margin-top:23px}.controls-guide{bottom:15px;left:50%;transform:translateX(-50%);width:95%;align-items:center;justify-content:center;gap:8px 12px;font-size:8px}.controls-guide>span:first-child{display:none}.cover-serial{display:none}.hud{inset:10px 8px auto;gap:7px}.hud-card{min-width:0;flex:1;padding:8px}.hud-card strong{font-size:22px}.hud-caption{font-size:6px}.time-card{min-width:80px;padding:8px 5px;flex:0 0 85px}.time-card strong{font-size:29px}.hud-label{font-size:7px;letter-spacing:.1px}.mission{top:94px;left:8px;font-size:8px;max-width:75%;padding:7px}.game-bottom{bottom:9px;left:8px;right:8px;gap:7px;align-items:stretch}.level-info{min-width:0;padding:9px 8px;flex:1}.level-kicker{font-size:7px}.level-info strong{font-size:11px}.charge-wrap{min-width:0;flex:1.2;padding:9px 8px}.charge-header{font-size:8px}.charge-hint{font-size:7px}.charge-track{height:10px}.special-button{min-width:65px;max-width:80px;font-size:9px;padding:5px}.mobile-controls{left:12px;bottom:114px}.joystick{width:96px;height:96px}.joystick-ring{width:76px;height:76px}.joystick-knob{width:44px;height:44px}.result-card,.pause-card{padding:26px 16px}.result-card h2,.pause-card h2{font-size:72px;letter-spacing:-4px}.result-score{gap:5px}.result-score>div{padding:10px 6px}.result-score span{font-size:7px}.result-score strong{font-size:21px}}
@media (prefers-reduced-motion:reduce){.face-storm,.halo,.art-star,.flying-object{animation:none}.floating-score{animation-duration:.4s}}

/* v0.2 / City Dispatch & Daily Disaster */
.mission{align-items:flex-start;min-width:272px;max-width:min(370px,calc(100% - 20px));padding:10px 12px;background:#fff5d6f2;box-shadow:4px 4px 0 #18363936}
.mission-dot{flex:none;margin-top:4px;background:#ed8a52;width:11px;height:11px}
.dispatch-copy{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.dispatch-mode{color:#c86c48;font-size:9px;font-weight:1000;letter-spacing:1.6px}
.dispatch-copy strong{font-weight:1000;font-size:11px;letter-spacing:.15px;line-height:1.25}
.dispatch-note{font-size:8px;letter-spacing:.2px;color:#587069;font-weight:900;line-height:1.25}
.dispatch-track{height:6px;border-radius:8px;background:#d8dfcb;overflow:hidden;margin-top:3px}
.dispatch-fill{height:100%;width:0;background:#e47b52;border-radius:8px;transition:width .22s}
.mode-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.daily-button{border:2px solid #1c3a3c;background:#e9f0de;color:#213e3d;min-height:57px;border-radius:12px;box-shadow:3px 3px 0 #203c3d;font-weight:1000;letter-spacing:.7px;padding:10px 15px;display:flex;align-items:center;gap:9px;cursor:pointer}
.daily-button>span{font-size:24px;color:#d97953}.daily-button small{display:block;font-size:8px;letter-spacing:.2px;color:#738076;margin-left:-4px}
.daily-button:hover{background:#fff0b5;transform:translateY(-1px)}
.final-contracts{font-size:12px;font-weight:1000;letter-spacing:1.3px;margin:0 0 13px;color:#2f645c}
@media (max-width:900px){.mission{min-width:250px;top:105px}}
@media (max-width:600px){.mission{top:94px;max-width:calc(100% - 16px);min-width:210px;padding:8px}.dispatch-copy strong{font-size:10px}.dispatch-mode{font-size:8px}.dispatch-note{font-size:7px}.dispatch-track{height:5px}.mode-actions{justify-content:center;gap:10px}.daily-button{min-height:48px;padding:8px 10px;font-size:10px;box-shadow:2px 2px 0 #203c3d}.daily-button>span{font-size:18px}.daily-button small{font-size:7px}.cover-copy{top:30%}.intro-stats{margin-top:17px}}
/* Long victory headings must not clip on narrow phone screens. */
@media (max-width:600px){.result-card h2{font-size:clamp(43px,12.4vw,62px);letter-spacing:-3px;overflow-wrap:normal}}
@media (max-width:370px){.result-card h2{font-size:43px;letter-spacing:-2.5px}}

/* v0.3 — in-run mutations. Two short, deliberate power choices. */
.mutation-badge{font-size:9px;font-weight:950;color:#b96040;letter-spacing:1px}
.upgrade-overlay{z-index:20;background:rgba(20,43,45,.86);padding:20px;overflow-y:auto;align-items:center}
.upgrade-panel{background:#fff7dd;border:5px solid #142f35;box-shadow:13px 13px 0 #101d24;max-width:1000px;width:100%;padding:clamp(18px,3vw,37px);border-radius:18px;text-align:center}
.upgrade-eyebrow{font-size:11px;letter-spacing:2.1px;font-weight:950;color:#d27649}
.upgrade-panel h2{font-size:clamp(36px,5.2vw,73px);line-height:.95;letter-spacing:-2px;font-weight:1000;margin:12px auto 11px}
.upgrade-panel h2 span{color:#e37d51}
.upgrade-panel p{font-size:14px;font-weight:750;color:#526962;margin:0 auto 21px}
.upgrade-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
.upgrade-card{min-height:192px;display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:18px;gap:12px;background:#f2e4bd;border:3px solid #1a393c;border-radius:13px;color:#19353a;box-shadow:4px 5px 0 #254043;transition:transform .12s,background .12s}
.upgrade-card:nth-child(2){background:#d8e7d3}.upgrade-card:nth-child(3){background:#f6d7bb}
.upgrade-card:hover,.upgrade-card:focus-visible{transform:translate(2px,2px);box-shadow:2px 3px 0 #254043;background:#ffe29a}
.upgrade-card small{font-size:10px;font-weight:950;letter-spacing:1.5px;opacity:.6}
.upgrade-card strong{font-size:clamp(18px,2.25vw,29px);font-weight:1000;line-height:1.04;letter-spacing:-.7px}
.upgrade-card span{font-size:12px;font-weight:750;line-height:1.4;flex:1}
.upgrade-card b{font-size:10px;letter-spacing:1px;font-weight:1000}
.upgrade-footnote{display:block;margin-top:22px;font-size:10px;font-weight:900;letter-spacing:.7px;color:#76867b}
@media(max-width:650px){.upgrade-overlay{padding:8px}.upgrade-panel{padding:14px 12px;box-shadow:5px 6px 0 #101d24;border-width:3px;max-height:calc(100% - 8px);overflow-y:auto}.upgrade-panel h2{font-size:clamp(31px,8.9vw,51px);margin:9px auto}.upgrade-panel p{font-size:11px;margin-bottom:10px}.upgrade-eyebrow{font-size:9px}.upgrade-grid{grid-template-columns:1fr;gap:8px}.upgrade-card{min-height:0;padding:10px 13px;gap:4px;box-shadow:2px 2px 0 #254043}.upgrade-card strong{font-size:18px}.upgrade-card span{font-size:11px}.upgrade-card small,.upgrade-card b{font-size:9px}.upgrade-footnote{font-size:8px;line-height:1.3;margin-top:9px}.mutation-badge{font-size:7px}}

/* v0.4: a readable secondary objective without another fullscreen HUD. */
.front-badge{display:inline-flex;align-items:center;max-width:230px;margin-top:4px;padding:5px 9px;border:2px solid #1b5870;border-radius:9px;background:#c9f3f8;color:#14556c;font-size:10px;letter-spacing:.5px;font-weight:950;white-space:nowrap;box-shadow:2px 2px 0 #1b5870}
.front-badge.is-frenzy{background:#ffe39b;color:#5b491f;border-color:#574525;box-shadow:2px 2px 0 #574525}
.final-fronts{margin:5px auto 12px;font-size:12px;letter-spacing:1px;font-weight:900;color:#2c8496}
@media(max-width:650px){.front-badge{font-size:8px;padding:4px 6px;max-width:180px}.final-fronts{font-size:10px}}
/* The bottom status column is narrow on portrait phones: contain the badge. */
.front-badge{max-width:100%;white-space:normal;overflow-wrap:anywhere;align-self:flex-start;line-height:1.2}
@media(max-width:650px){.front-badge{font-size:7px;letter-spacing:0;padding:3px 4px;box-shadow:1px 1px 0 #1b5870}}


/* v0.5: feedback, not HUD clutter. Streak lifetime is visible at a glance. */
.combo-meter{height:5px;margin-top:7px;background:#dce3d7;border-radius:6px;overflow:hidden}
.combo-meter-fill{height:100%;width:0;background:#ed8e4b;transition:width .08s linear}
.tip-ribbon{position:absolute;z-index:6;left:50%;top:clamp(174px,25%,245px);transform:translateX(-50%);max-width:calc(100% - 24px);padding:9px 16px;border:2px solid #30454a;border-radius:100px;background:#fff6dbea;color:#244144;box-shadow:3px 3px 0 #182f3438;pointer-events:none;text-align:center;white-space:normal;font-size:11px;letter-spacing:.5px;line-height:1.3;font-weight:950}
@media(max-width:600px){.combo-meter{height:4px;margin-top:4px}.tip-ribbon{top:170px;font-size:9px;padding:7px 10px;width:max-content;max-width:calc(100% - 22px)}}
/* QA regression: portrait HUD cards extend below the earlier mission offset.
   Keep mission and intro prompt in separate vertical bands. */
@media(max-width:600px){.mission{top:136px}.tip-ribbon{top:225px}}

/* v0.7: optional, zero-network, locally generated playtest feedback. */
.report-button{margin:11px auto 0;display:block;font-size:11px;padding:6px 4px;min-height:32px}
.report-status{font-size:10px!important;letter-spacing:.5px!important;font-weight:850!important;min-height:14px;margin:5px auto!important}
.report-fallback{display:block;width:min(100%,450px);height:74px;margin:8px auto;border:2px solid #35545a;border-radius:8px;padding:8px;font:11px/1.3 monospace;color:#243d42;background:#fffef7;resize:vertical}
.report-fallback[hidden]{display:none}
@media(max-width:600px){.report-button{font-size:10px!important;margin-top:7px!important}.report-status{font-size:9px!important;max-width:300px}}

/* Portal embeds are often short landscape iframes (e.g. 907x510, 800x450).
   Do not let the default 550px canvas floor hide the start CTA or final result. */
@media (max-height:650px) and (min-width:601px){
  .app{height:100svh;min-height:0;padding:0 8px}
  .topbar{height:38px}
  .footer{height:18px;letter-spacing:.5px;font-size:7px}
  .game-frame{min-height:0;flex:1;border-width:3px;border-radius:12px;box-shadow:none}
  .cover-copy{margin-left:38%;width:61%;padding:6px 10px 25px}
  .cover-copy h1{font-size:clamp(43px,6.5vw,66px);margin:10px 0 12px;letter-spacing:-.07em}
  .cover-copy p{font-size:12px;line-height:1.3;margin:0 0 12px}
  .primary-button{font-size:11px;gap:10px;padding:9px 12px;box-shadow:3px 3px 0 #152d32}
  .intro-stats{margin-top:10px;gap:9px}
  .controls-guide{bottom:6px;font-size:8px;gap:7px}
  .cover-serial{bottom:7px;right:9px;font-size:7px}
  .cover-art{width:min(34vw,310px);left:21%}
  .result-overlay,.pause-overlay,.upgrade-overlay{overflow-y:auto;overscroll-behavior:contain;align-items:flex-start}
  .result-card,.pause-card{width:min(570px,95%);padding:10px 17px;margin:auto;transform:none;border-width:3px;box-shadow:4px 5px 0 #23484233}
  .result-card h2,.pause-card h2{font-size:clamp(42px,5vw,58px);letter-spacing:-2px;margin:9px 0 7px}
  .result-card p,.pause-card p{font-size:11px;margin:4px 0}
  .result-score{margin:10px 0;gap:6px}
  .result-score>div{padding:5px 8px}
  .result-score strong{font-size:20px}
  .result-card .primary-button{margin:3px auto}
  .final-fronts,.final-contracts{margin:4px auto}
  .upgrade-panel{margin:auto;max-height:none}
}

/* v0.8 · Storm Passport: repeat-play goals without accounts or overlays during play. */
.passport-entry{display:inline-flex;gap:12px;align-items:center;margin-top:14px;padding:8px 11px;border:2px solid #244644;background:#e9eec8;color:#193b3a;font-size:11px;font-weight:1000;letter-spacing:.35px;border-radius:9px;cursor:pointer;box-shadow:3px 3px 0 #24464433}
.passport-entry span{color:#bd6245;font-size:10px}
.passport-entry:hover,.passport-result-top button:hover{background:#ffdd83}
.passport-result{background:#eaf0d8;border:2px dashed #6b8172;padding:9px 12px;border-radius:10px;margin:9px auto 10px;text-align:left}
.passport-result-top{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px;font-weight:1000;letter-spacing:.2px}
.passport-result-top span{color:#b75c3b;font-size:10px}
.passport-result-top button{cursor:pointer;border:1px solid #274946;background:#fff8dd;border-radius:6px;padding:5px 8px;font-size:10px;font-weight:950;white-space:nowrap}
.passport-result small{display:block;margin-top:5px;color:#51695a;font-size:9px;font-weight:800;line-height:1.35}
.passport-result #passportResultNew{color:#b45b38;font-weight:1000;font-size:10px;margin:6px 0}
.passport-overlay{z-index:30;background:rgba(19,42,44,.88);padding:18px;overflow-y:auto;align-items:center}
.passport-panel{width:min(770px,100%);max-height:100%;overflow-y:auto;background:#fff7dd;border:4px solid #19393d;border-radius:17px;box-shadow:10px 10px 0 #0c252a55;padding:clamp(16px,3vw,28px)}
.passport-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}
.passport-eyebrow{font-size:10px;letter-spacing:1px;font-weight:950;color:#a96042}
.passport-head h2{font-size:clamp(30px,5vw,51px);line-height:1;letter-spacing:-2px;margin:9px 0;font-weight:1000}
.passport-head h2 span{color:#d97951}
.passport-head p{font-size:11px;font-weight:1000;color:#4b6b60;margin:0 0 13px}
.passport-close{flex:none;padding:10px;border-radius:8px;border:2px solid #19393d;background:#f4cf65;font-weight:1000;cursor:pointer}
.passport-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.passport-stamp{padding:12px;min-height:103px;border-radius:9px;border:2px solid #20433d;display:flex;flex-direction:column;gap:7px;background:#ffe2a4}
.passport-stamp.locked{opacity:.56;background:#e2e7d8;filter:grayscale(.75)}
.passport-stamp-num{font-size:9px;font-weight:1000;letter-spacing:.65px;color:#b36946}
.passport-stamp strong{font-size:clamp(12px,1.4vw,16px);line-height:1.08}
.passport-stamp small{font-size:10px;font-weight:800;line-height:1.2;color:#53675e}
.passport-local-note{font-size:9px;text-align:center;font-weight:900;letter-spacing:.5px;color:#587268;margin:14px 0 0}
@media(max-width:600px){.passport-entry{margin-top:9px;font-size:10px;padding:6px 9px}.passport-panel{padding:14px;max-height:100%}.passport-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.passport-stamp{min-height:90px;padding:9px}.passport-head h2{font-size:29px;letter-spacing:-1.5px}.passport-close{padding:8px;font-size:11px}.passport-result{margin:6px auto;padding:6px 8px}.passport-result-top{font-size:9px}.passport-result-top button{font-size:8px}}
@media(max-height:650px){.passport-overlay{align-items:flex-start}.passport-panel{margin:auto;max-height:none}.passport-entry{margin-top:4px;padding:5px 8px;font-size:9px}.passport-result{margin:5px auto;padding:4px 8px}.passport-result #passportResultNew{margin:2px 0}.passport-result small{margin-top:2px}}
/* Embedded 800×450: keep the new stamp summary and report actions reachable. */
@media(max-height:500px){
 .result-card{padding:5px 12px 7px;max-height:100%;overflow-y:auto}
 .result-card h2{font-size:38px;line-height:.82;margin:2px 0 3px}
 .result-card p{margin:2px 0;font-size:9px}
 .result-score{margin:4px 0;gap:4px}
 .result-score>div{padding:3px 5px}
 .result-score span{font-size:7px}
 .result-score strong{font-size:17px;margin-top:1px}
 .final-contracts,.final-fronts{font-size:9px;margin:1px auto}
 .passport-result{margin:2px auto;padding:3px 5px}
 .passport-result-top{font-size:9px}
 .passport-result #passportResultNew{font-size:8px}
 .passport-result small{font-size:8px}
 .result-card .primary-button{padding:8px 12px;margin:2px auto;font-size:11px}
 .result-card .secondary-button{margin:6px auto 0;font-size:9px}
 .record-stamp{margin:2px 0}
}.is-portal .report-button,.is-portal #reportStatus,.is-portal #reportFallback{display:none!important}

/* v0.8.1 portal fit: small 16:9 iframes (Poki 640x360 / 836x470, CrazyGames 800x450).
   Keep the storm visible: compact HUD, drop secondary captions and menu key hints. */
@media (max-height:500px) and (min-width:601px){
 .topbar{height:40px}.logotype{font-size:14px}.logomark{width:26px;height:26px;font-size:18px}.icon-button{width:30px;height:30px}
 .footer{display:none}
 .game-frame{min-height:0}
 .controls-guide,.cover-serial{display:none}
 .hud{inset:8px auto auto 8px;gap:6px;justify-content:flex-start;width:auto}
 .hud-card,.time-card{min-width:0;padding:5px 9px}
 .hud-card strong{font-size:18px}.time-card strong{font-size:22px}
 .hud-label{font-size:7px}
 .hud-caption,.best-card,.dispatch-note,.charge-hint,.mutation-badge,.level-kicker{display:none}
 .combo-meter{height:3px;margin-top:3px}
 .mission{top:8px;left:auto;right:8px;min-width:0;max-width:44%;padding:5px 8px}
 .dispatch-mode{font-size:7px}.dispatch-copy strong{font-size:9px}
 .game-bottom{left:8px;right:8px;bottom:8px;gap:6px}
 .level-info,.charge-wrap{padding:5px 9px;min-width:0}
 .level-info strong{font-size:11px}
 .charge-header{font-size:8px}.charge-track{height:7px}
 .special-button{min-width:96px;padding:6px 8px;font-size:10px}
 .tip-ribbon{top:auto;bottom:62px;font-size:9px;padding:5px 9px}
}

/* ux-mobile-1106: phone targets */
@media(max-width:600px){
 .icon-button{width:44px!important;height:44px!important}
 .passport-entry{min-height:44px!important}
}
/* ux-mobile-1106: compact, readable HUD on phones — numbers big, captions gone */
@media(max-width:600px){
 .hud-card .hud-caption{display:none}
 .best-card .hud-caption{display:none}
 .hud-label{font-size:11px!important;letter-spacing:.06em}
 .hud-card strong{font-size:26px!important;line-height:1.1}
 .hud-card{padding-bottom:8px!important}
 .charge-header{font-size:11px!important}
 .charge-wrap .charge-hint,#chargeHint{display:none}
 .mobile-controls .joystick-label,.drag-label{font-size:11px!important}
}

/* ===== ux-mobile-1106b: phone game screen, redesigned =====
   1) HUD = one slim dark scoreboard strip (damage · time · best) with big numbers.
   2) Dispatch = one readable line + progress under the strip.
   3) Bottom = big round CHAOS BLAST under the right thumb, chaos meter beside it,
      joystick under the left thumb; menace card reduced to a level chip. */
@media (max-width:600px){
 .hud{inset:8px 8px auto!important;display:grid!important;grid-template-columns:1fr auto 1fr;gap:0!important;background:#17383a;border:2px solid #17383a;border-radius:16px;box-shadow:0 6px 18px #17383a40;padding:6px 4px;overflow:hidden}
 .hud-card,.time-card{background:transparent!important;border:0!important;box-shadow:none!important;padding:2px 10px!important;min-width:0!important;flex:none!important;color:#fff9e6;text-align:center}
 .time-card{border-left:1px solid #ffffff26!important;border-right:1px solid #ffffff26!important;padding:2px 14px!important}
 .hud-label{font-size:11px!important;letter-spacing:.08em!important;color:#f6c84d!important;display:block;white-space:nowrap}
 .hud-card strong,.time-card strong{font-size:28px!important;line-height:1.05;color:#fff9e6}
 .hud-caption,.combo-meter{display:none!important}
 .mission{top:84px!important;left:8px!important;right:8px!important;max-width:none!important;min-width:0!important;padding:8px 12px!important;border-radius:12px;align-items:center!important}
 .dispatch-mode,.dispatch-note{display:none!important}
 .dispatch-copy strong{font-size:14px!important;letter-spacing:.02em}
 .dispatch-track{height:6px!important;margin-top:5px}
 .tip-ribbon{top:142px!important;font-size:13px!important}
 .game-bottom{left:8px!important;right:8px!important;bottom:10px!important;display:grid!important;grid-template-columns:1fr 96px;grid-template-rows:auto auto;gap:6px 10px!important;align-items:end!important}
 .level-info{grid-column:1;grid-row:1;justify-self:end;display:flex!important;align-items:center;gap:6px;padding:6px 10px!important;border-radius:999px!important;flex:none!important}
 .level-kicker,.mutation-badge{display:none!important}
 .level-info strong{font-size:13px!important;white-space:nowrap}
 .charge-wrap{grid-column:1;grid-row:2;padding:10px 12px!important;border-radius:14px!important}
 .charge-header{font-size:13px!important}
 .charge-track{height:12px!important}
 .special-button{grid-column:2;grid-row:1/3;width:96px!important;height:96px!important;min-width:0!important;max-width:none!important;border-radius:50%!important;font-size:13px!important;line-height:1.1;padding:8px!important;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
 .special-button .keycap{display:none}
 .mobile-controls{left:14px!important;bottom:118px!important}
 .joystick{width:118px!important;height:118px!important}
 .joystick-ring{width:96px!important;height:96px!important}
 .joystick-knob{width:50px!important;height:50px!important}
 .mobile-hint{font-size:12px!important}
}
@media (max-width:600px){
 .hud .hud-label{font-size:0!important}
 .hud .hud-label::after{font-size:11px;letter-spacing:.1em}
 .score-card .hud-label::after{content:"DAMAGE"}
 .time-card .hud-label::after{content:"TIME"}
 .best-card .hud-label::after{content:"BEST"}
 .dispatch-copy{min-width:0;flex:1}
 .dispatch-copy strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
