:root{
  --ink:#f6f8f2;
  --muted:#aeb8bd;
  --void:#070a10;
  --panel:#111821;
  --panel-2:#18232b;
  --cyan:#6ce6e7;
  --gold:#f4c95d;
  --coral:#ff6f61;
  --violet:#a58ae8;
  --green:#72d6a0;
  --safe-t:env(safe-area-inset-top,0px);
  --safe-r:env(safe-area-inset-right,0px);
  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-l:env(safe-area-inset-left,0px);
}

*{box-sizing:border-box;margin:0;padding:0;letter-spacing:0}
html,body{width:100%;height:100%;overflow:hidden;background:var(--void)}
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);touch-action:none;user-select:none;-webkit-user-select:none}
button{font:inherit;color:inherit;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
button:focus-visible{outline:3px solid #fff;outline-offset:2px}
button[aria-disabled="true"]{cursor:default}
[hidden]{display:none!important}
.svg-defs{position:fixed;width:0;height:0;overflow:hidden}
svg{display:block;width:24px;height:24px}

#stage{position:fixed;inset:0;overflow:hidden;background:#070a10 url("./assets/storm-sanctuary-v18.webp") center/cover no-repeat;isolation:isolate}
#gc{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:none;z-index:0}
[data-dfl-overlay]:not(.dfl-overlay){display:none!important}
.overlay{z-index:10}
.dfl-overlay{background:rgba(5,8,13,.82);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.dfl-overlay .dfl-panel{border-radius:8px;color:var(--ink)}

.icon-btn{width:44px;height:44px;min-width:44px;min-height:44px;display:grid;place-items:center;border-radius:50%;background:rgba(8,13,19,.82);border:1px solid rgba(255,255,255,.22);box-shadow:0 8px 24px rgba(0,0,0,.24)}
.icon-btn:active{transform:scale(.96)}

/* Gameplay HUD keeps the top-center reaction field clear below 82px. */
#hud{position:absolute;z-index:5;top:calc(var(--safe-t) + 8px);left:calc(var(--safe-l) + 8px);right:calc(var(--safe-r) + 8px);height:68px;display:none;grid-template-columns:44px minmax(0,1fr) 44px;gap:8px;align-items:start;pointer-events:none}
#hud.show{display:grid}
#hud button{pointer-events:auto}
.hud-button{background:rgba(7,11,16,.78)}
.hud-route{height:62px;min-width:0;padding:7px 10px 6px;background:rgba(8,13,19,.74);border:1px solid rgba(255,255,255,.16);border-radius:8px;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
.hud-line{display:flex;justify-content:space-between;gap:8px;white-space:nowrap;font-size:11px;font-weight:800;line-height:15px;color:var(--cyan)}
.hud-line span{min-width:0;overflow:hidden;text-overflow:ellipsis}
.hud-line span:last-child{text-align:right;color:var(--gold)}
.hud-line.compact{font-size:10px;line-height:13px;color:var(--muted)}
.hud-line.compact span:last-child{color:var(--muted)}
.route-meter{height:5px;margin:4px 0;background:rgba(255,255,255,.12);border-radius:3px;overflow:hidden}
.route-meter span{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--cyan),var(--gold));border-radius:3px;transition:width .16s linear}
.life-rail{position:absolute;top:52px;left:0;display:flex;gap:4px;padding:4px 6px;border-radius:8px;background:rgba(7,11,16,.7)}
.life-rail svg{width:14px;height:14px;color:var(--gold)}
.life-rail svg.empty{color:rgba(255,255,255,.22)}

.tool-btn{position:absolute;z-index:6;bottom:calc(var(--safe-b) + 12px);display:none;align-items:center;justify-content:center;gap:6px;width:112px;height:50px;min-height:44px;padding:0 10px;border-radius:8px;font-size:12px;font-weight:900;box-shadow:0 9px 24px rgba(0,0,0,.28)}
.tool-btn.show{display:flex}
.tool-btn.focus{left:calc(var(--safe-l) + 12px);background:#87eff0;color:#061c20}
.tool-btn.pulse{right:calc(var(--safe-r) + 68px);background:#f5d36f;color:#211704}
.tool-btn b{display:grid;place-items:center;min-width:22px;height:22px;border-radius:50%;background:rgba(0,0,0,.18);font-size:11px}
.tool-btn[aria-disabled="true"]{filter:saturate(.35);opacity:.62}
.tool-btn.ready{animation:tool-ready .8s ease-out}

.airdrop-cta{position:absolute;z-index:7;right:calc(var(--safe-r) + 10px);top:calc(var(--safe-t) + 96px);min-height:44px;max-width:188px;padding:8px 10px;display:flex;align-items:center;gap:7px;border-radius:8px;background:#152128;border:1px solid rgba(108,230,231,.7);color:var(--cyan);font-size:10px;font-weight:900;box-shadow:0 8px 24px rgba(0,0,0,.32)}
.airdrop-cta svg{width:21px;height:21px;flex:0 0 21px}
.airdrop-cta span{line-height:13px;text-align:left}

.coach{position:absolute;z-index:7;left:50%;bottom:calc(var(--safe-b) + 82px);transform:translateX(-50%);width:190px;min-height:74px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border-radius:8px;background:rgba(7,12,18,.88);border:1px solid rgba(108,230,231,.6);color:var(--cyan);font-size:12px;pointer-events:none}
.coach-gesture{position:relative;width:84px;height:20px}
.coach-gesture:before{content:"";position:absolute;left:6px;right:6px;top:9px;height:2px;background:rgba(108,230,231,.36)}
.coach-gesture span{position:absolute;left:7px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--gold);animation:coach-drag 1.4s ease-in-out infinite}

.stage-banner,.toast{position:absolute;z-index:8;left:50%;transform:translateX(-50%);pointer-events:none;text-align:center;opacity:0;transition:opacity .16s ease}
.stage-banner{top:calc(var(--safe-t) + 88px);width:min(82%,360px);padding:8px 12px;border-radius:8px;background:rgba(7,12,18,.78);font-size:15px;font-weight:900;color:var(--gold)}
.toast{bottom:calc(var(--safe-b) + 84px);width:min(88%,340px);min-height:44px;padding:10px 14px;border-radius:8px;background:rgba(17,24,33,.96);border:1px solid rgba(255,255,255,.22);font-size:12px;font-weight:800;line-height:18px}
.stage-banner.show,.toast.show{opacity:1}

/* Full-bleed game home. No hero card: identity, mode, start, and system dock are
   anchored directly to the storm scene. */
#startOv{background:linear-gradient(180deg,rgba(4,7,12,.3),rgba(4,7,12,.18) 38%,rgba(4,7,12,.72) 72%,rgba(4,7,12,.92)),url("./assets/storm-sanctuary-v18.webp") center/cover no-repeat;padding:0}
#startOv .dfl-panel{position:absolute;inset:0;width:100%;max-width:none;height:100%;max-height:none;padding:0;gap:0;overflow:hidden;border:0;background:transparent;box-shadow:none;border-radius:0}
.start-hero{position:absolute;top:calc(var(--safe-t) + 6%);left:12px;right:12px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px}
.storm-seal{position:relative;width:92px;height:74px;filter:drop-shadow(0 10px 18px rgba(0,0,0,.4))}
.seal-core{position:absolute;left:50%;top:31px;width:14px;height:26px;transform:translateX(-50%);border-radius:50% 50% 42% 42%;background:linear-gradient(180deg,#fff,var(--gold) 45%,#d78b41);box-shadow:0 0 18px rgba(244,201,93,.8)}
.seal-wing{position:absolute;top:19px;width:38px;height:42px;background:linear-gradient(145deg,#fff7cc,var(--gold) 42%,#a58ae8);box-shadow:0 0 18px rgba(108,230,231,.22)}
.seal-wing.left{left:5px;border-radius:70% 16% 65% 30%;transform:rotate(-20deg);clip-path:polygon(0 0,100% 24%,70% 100%,28% 72%)}
.seal-wing.right{right:5px;border-radius:16% 70% 30% 65%;transform:rotate(20deg);clip-path:polygon(100% 0,0 24%,30% 100%,72% 72%)}
.eyebrow{font-size:10px;font-weight:900;color:var(--cyan);text-transform:uppercase}
#startOv h1{font-family:Georgia,"Times New Roman",serif;font-size:43px;line-height:45px;font-weight:700;color:#fff8d9;text-shadow:0 4px 24px rgba(0,0,0,.75),0 0 20px rgba(108,230,231,.35)}
.home-goal{max-width:290px;font-size:13px;font-weight:800;color:#e8edf0;text-shadow:0 2px 10px #000}
.gesture-hint{display:flex;align-items:center;gap:6px;height:26px;font-size:10px;color:var(--cyan)}
.gesture-dot{width:10px;height:10px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px rgba(244,201,93,.8)}
.gesture-path{width:34px;height:2px;background:var(--cyan);position:relative;opacity:.7}
.gesture-path:after{content:"";position:absolute;right:-1px;top:-3px;width:7px;height:7px;border-top:2px solid var(--cyan);border-right:2px solid var(--cyan);transform:rotate(45deg)}

.start-actions{position:absolute;z-index:2;top:69%;left:50%;transform:translate(-50%,-50%);width:min(86%,310px);display:flex;flex-direction:column;align-items:stretch;gap:7px}
.mode-switch{display:grid;grid-template-columns:1fr 1fr;height:52px;padding:3px;border-radius:8px;background:rgba(7,11,16,.82);border:1px solid rgba(255,255,255,.22)}
.mode-switch button{min-width:0;border-radius:5px;background:transparent;color:var(--muted);font-size:11px;font-weight:900;white-space:nowrap;display:flex;align-items:center;justify-content:center;gap:4px}
.mode-switch button[aria-pressed="true"]{background:#e8edf0;color:#111821;box-shadow:0 3px 10px rgba(0,0,0,.28)}
.mode-switch button[aria-disabled="true"]{opacity:.62}
.mini-lock{width:14px;height:14px}
.ad-compact{min-height:44px;padding:7px 10px;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:7px;background:rgba(18,31,35,.92);border:1px solid rgba(108,230,231,.56);color:var(--cyan);font-size:10px;font-weight:900}
.ad-compact svg{width:20px;height:20px}
.start-btn{width:100%;height:58px;display:flex;align-items:center;justify-content:center;gap:10px;border-radius:8px;background:linear-gradient(180deg,#f7d87f,var(--gold));color:#211704;box-shadow:0 12px 30px rgba(0,0,0,.36),0 0 24px rgba(244,201,93,.22)}
.start-btn:active{transform:translateY(1px)}
.start-btn>span:last-child{display:flex;flex-direction:column;align-items:flex-start;gap:1px}
.start-btn b{font-size:16px;line-height:18px}
.start-btn small{font-size:10px;font-weight:800;opacity:.68;white-space:nowrap}
.start-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:rgba(33,23,4,.13)}
.start-icon svg{width:19px;height:19px}

.home-dock{position:absolute;z-index:2;left:50%;bottom:calc(var(--safe-b) + 10px);transform:translateX(-50%);display:grid;grid-template-columns:repeat(3,76px);gap:8px}
.dock-btn{height:58px;min-height:44px;border-radius:8px;background:rgba(9,14,20,.86);border:1px solid rgba(255,255,255,.2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#dce4e7}
.dock-btn:active{transform:translateY(1px)}
.dock-btn.locked{color:#77838a;border-color:rgba(255,255,255,.1)}
.dock-icon{position:relative;display:grid;place-items:center;width:33px;height:29px}
.dock-icon>svg:first-child{width:25px;height:25px}
.lock-badge{position:absolute;right:0;bottom:0;width:15px;height:15px;padding:2px;border-radius:50%;background:#222c33;color:#c4cdd1}
.dock-btn:not(.locked) .lock-badge{display:none}
.dock-btn b{max-width:72px;overflow:hidden;text-overflow:ellipsis;font-size:9px;line-height:11px;white-space:nowrap}

/* System sheets are single framed tools. Rows are unframed list bands. */
.sheet-overlay{padding:calc(var(--safe-t) + 10px) calc(var(--safe-r) + 10px) calc(var(--safe-b) + 10px) calc(var(--safe-l) + 10px)}
.sheet-overlay .dfl-panel{width:min(100%,430px);height:min(100%,720px);max-width:430px;max-height:720px;display:flex;align-items:stretch;text-align:left;gap:8px;padding:14px;background:rgba(14,21,28,.97);border:1px solid rgba(255,255,255,.18);box-shadow:0 24px 60px rgba(0,0,0,.48);overflow:hidden}
.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;height:48px}
.sheet-head h2,.dialog-overlay h2{font-family:Georgia,"Times New Roman",serif;font-size:28px;line-height:30px;color:#fff5d4}
.sheet-head .icon-btn{box-shadow:none;background:#1a252d}
.bank-strip{height:44px;display:flex;align-items:center;gap:8px;padding:0 10px;border-radius:8px;background:#202a25;color:var(--gold);font-size:12px;font-weight:900}
.bank-strip svg{width:21px;height:21px}.bank-strip b{margin-left:auto;font-size:17px}
.rank-strip{height:36px;display:flex;align-items:center;gap:8px;padding:0 10px;border-radius:8px;background:#1a2d32;color:var(--cyan);font-size:10px;font-weight:900}.rank-strip svg{width:19px;height:19px}
.mission-list,.upgrade-list{min-height:0;flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;border-top:1px solid rgba(255,255,255,.12)}
.mission-row,.upgrade-row{min-height:66px;display:grid;align-items:center;gap:9px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,.12)}
.mission-row{grid-template-columns:38px minmax(0,1fr) 54px}
.mission-glyph{width:36px;height:36px;display:grid;place-items:center;border-radius:8px;background:#1b2a30;color:var(--cyan)}
.mission-glyph svg{width:20px;height:20px}
.mission-copy,.upgrade-copy{min-width:0;display:flex;flex-direction:column;gap:3px}
.mission-copy b,.upgrade-copy b{font-size:12px;line-height:14px}.mission-copy small,.upgrade-copy small,.rental-row small{font-size:10px;line-height:13px;color:var(--muted)}
.mission-bar{height:4px;border-radius:2px;background:rgba(255,255,255,.12);overflow:hidden}.mission-bar span{display:block;height:100%;background:var(--cyan)}
.mission-value{font-size:11px;text-align:right;color:var(--gold);font-weight:900}
.upgrade-row{grid-template-columns:38px minmax(0,1fr) 74px}
.upgrade-glyph{width:36px;height:36px;display:grid;place-items:center;border-radius:8px;background:#282315;color:var(--gold)}
.upgrade-glyph svg{width:21px;height:21px}
.buy-btn{min-height:44px;padding:5px 7px;border-radius:8px;background:var(--gold);color:#211704;font-size:10px;font-weight:900;line-height:12px}
.buy-btn[aria-disabled="true"]{background:#263138;color:#819099}
.rental-row{min-height:68px;display:grid;grid-template-columns:46px minmax(0,1fr) 72px;align-items:center;gap:8px;border-top:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12);padding:7px 0}
.rental-row>div:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:3px}.rental-row b{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rental-art{position:relative;width:44px;height:44px;border-radius:50%;background:radial-gradient(circle,#eafcff 0 13%,#a58ae8 14% 32%,#17202b 33% 100%);box-shadow:0 0 16px rgba(165,138,232,.35)}
.rental-art span:before,.rental-art span:after{content:"";position:absolute;top:12px;width:16px;height:22px;background:linear-gradient(150deg,#fff,#a58ae8);clip-path:polygon(0 0,100% 30%,72% 100%,20% 68%)}
.rental-art span:before{left:4px;transform:rotate(-15deg)}.rental-art span:after{right:4px;transform:scaleX(-1) rotate(-15deg)}
.ad-icon-btn{min-height:44px;border-radius:8px;background:#183036;color:var(--cyan);border:1px solid rgba(108,230,231,.55);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font-size:9px;font-weight:900}.ad-icon-btn svg{width:20px;height:20px}
.feedback-note{min-height:16px;font-size:10px;line-height:14px;color:var(--coral);text-align:center}

.codex-progress{height:38px;display:grid;grid-template-columns:52px minmax(0,1fr);align-items:center;gap:8px;font-size:12px;font-weight:900;color:var(--gold)}
.codex-progress>div{height:6px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}.codex-progress span span,.codex-progress>div span{display:block;height:100%;background:linear-gradient(90deg,var(--violet),var(--gold))}
.codex-grid{min-height:0;flex:1 1 auto;display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:minmax(78px,1fr);gap:8px;overflow-y:auto;touch-action:pan-y}
.codex-card{position:relative;min-width:0;padding:9px;border-radius:8px;background:#17212a;border:1px solid rgba(255,255,255,.12);display:flex;flex-direction:column;justify-content:flex-end;gap:3px;overflow:hidden}
.codex-card.locked{filter:saturate(.25);color:#768188}.codex-card b{font-size:11px;line-height:13px}.codex-card small{font-size:9px;line-height:12px;color:var(--muted)}
.pattern-art{position:absolute;top:7px;right:8px;width:42px;height:30px;opacity:.9}.pattern-art i{position:absolute;display:block;background:var(--violet);box-shadow:0 0 7px currentColor}.pattern-art.ring i{width:7px;height:7px;border-radius:50%}.pattern-art.ring i:nth-child(1){left:2px;top:11px}.pattern-art.ring i:nth-child(2){left:13px;top:2px}.pattern-art.ring i:nth-child(3){right:3px;top:8px}.pattern-art.wall i{width:6px;height:22px;top:4px;transform:skewX(-12deg);background:var(--cyan)}.pattern-art.wall i:nth-child(2){left:10px}.pattern-art.wall i:nth-child(3){right:4px}.pattern-art.fan i{width:15px;height:4px;right:2px;top:13px;transform-origin:right}.pattern-art.fan i:nth-child(1){transform:rotate(-28deg)}.pattern-art.fan i:nth-child(2){transform:rotate(0)}.pattern-art.fan i:nth-child(3){transform:rotate(28deg)}.pattern-art.spiral i{width:6px;height:6px;border-radius:50%}.pattern-art.spiral i:nth-child(1){left:18px;top:12px}.pattern-art.spiral i:nth-child(2){left:5px;top:8px}.pattern-art.spiral i:nth-child(3){right:2px;top:2px}.pattern-art.gale i{width:29px;height:3px;right:1px;background:var(--coral)}.pattern-art.gale i:nth-child(1){top:6px}.pattern-art.gale i:nth-child(2){top:14px;right:8px}.pattern-art.gale i:nth-child(3){top:22px}

/* Dialog overlays use one compact card, valid for stage, unlock, reward and terminal. */
.dialog-overlay{padding:calc(var(--safe-t) + 12px) calc(var(--safe-r) + 12px) calc(var(--safe-b) + 12px) calc(var(--safe-l) + 12px)}
.dialog-overlay .dfl-panel{width:min(100%,368px);max-width:368px;max-height:calc(100% - 12px);padding:20px 16px;gap:9px;background:rgba(14,21,28,.98);border:1px solid rgba(255,255,255,.18);box-shadow:0 24px 64px rgba(0,0,0,.5);overflow-y:auto;touch-action:pan-y}
.dialog-mark,.front-seal,.unlock-burst,.reward-art{width:62px;height:62px;display:grid;place-items:center;border-radius:50%;background:#193038;color:var(--cyan);border:1px solid rgba(108,230,231,.5);box-shadow:0 0 24px rgba(108,230,231,.2)}
.dialog-mark.danger{background:#3a2022;color:var(--coral);border-color:rgba(255,111,97,.55)}
.dialog-mark svg,.front-seal svg,.unlock-burst svg,.reward-art svg{width:31px;height:31px}
.front-seal{background:#332c18;color:var(--gold);border-color:rgba(244,201,93,.55)}
.unlock-burst{background:#25203a;color:var(--violet);border-color:rgba(165,138,232,.62);animation:unlock-pop .48s ease-out}
.reward-art{background:#1a3032;color:var(--gold)}
.dialog-copy,.final-stats,.next-goal{max-width:310px;font-size:12px;line-height:17px;color:var(--muted);text-align:center}
.reward-line{font-size:15px;line-height:19px;font-weight:900;color:var(--gold);text-align:center}
.primary-btn,.secondary-btn,.ad-btn{width:100%;min-height:48px;border-radius:8px;padding:9px 12px;font-size:12px;font-weight:900;line-height:15px;display:flex;align-items:center;justify-content:center;gap:8px;text-align:center}
.primary-btn{background:var(--gold);color:#211704}.secondary-btn{background:#222e36;border:1px solid rgba(255,255,255,.22);color:#e8edef}.secondary-btn svg{width:20px;height:20px}.ad-btn{background:#173238;border:1px solid rgba(108,230,231,.66);color:var(--cyan)}.ad-btn svg{width:22px;height:22px;flex:0 0 22px}.ad-btn[aria-disabled="true"]{opacity:.5;filter:saturate(.4)}
.text-btn{min-width:120px;min-height:44px;background:transparent;color:var(--muted);font-size:11px;font-weight:900;text-decoration:underline;text-underline-offset:3px}

@keyframes coach-drag{0%,100%{left:7px}50%{left:65px}}
@keyframes unlock-pop{0%{transform:scale(.55);opacity:.1}70%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}
@keyframes tool-ready{0%{transform:scale(.9)}50%{transform:scale(1.08)}100%{transform:scale(1)}}

@media (max-width:340px){
  #startOv h1{font-size:36px;line-height:38px}
  .start-actions{width:90%}
  .home-dock{grid-template-columns:repeat(3,72px);gap:5px}
  .tool-btn{width:102px}
  .hud-route{padding-left:7px;padding-right:7px}
}

@media (max-height:560px){
  .sheet-overlay .dfl-panel{height:100%;max-height:100%;padding:8px 10px;gap:5px}
  .sheet-head{height:44px}.sheet-head h2,.dialog-overlay h2{font-size:23px;line-height:25px}
  .mission-row,.upgrade-row{min-height:58px;padding:4px 2px}
  .dialog-overlay .dfl-panel{padding:10px 13px;gap:5px;max-height:100%}
  .dialog-mark,.front-seal,.unlock-burst,.reward-art{width:48px;height:48px}.dialog-mark svg,.front-seal svg,.unlock-burst svg,.reward-art svg{width:25px;height:25px}
  .primary-btn,.secondary-btn,.ad-btn{min-height:44px;padding:6px 10px}
}

@media (max-height:460px) and (orientation:portrait){
  .start-hero{top:calc(var(--safe-t) + 5px);gap:3px}
  .storm-seal{width:64px;height:48px}.seal-core{top:19px;width:10px;height:20px}.seal-wing{top:11px;width:27px;height:30px}.seal-wing.left{left:4px}.seal-wing.right{right:4px}
  #startOv h1{font-size:30px;line-height:34px}
  .home-goal{font-size:11px}.gesture-hint{height:20px}.eyebrow{font-size:9px}
  .start-actions{top:58%;width:90%;gap:4px}.mode-switch{height:52px}.start-btn{height:50px}
  .ad-compact{min-height:44px}
  .home-dock{bottom:calc(var(--safe-b) + 3px);grid-template-columns:repeat(3,70px);gap:5px}.dock-btn{height:55px}
  #hud{top:calc(var(--safe-t) + 4px);left:4px;right:4px;gap:4px}
  .tool-btn{bottom:calc(var(--safe-b) + 5px);height:44px;width:98px}.tool-btn.focus{left:5px}.tool-btn.pulse{right:65px}
  .coach{bottom:calc(var(--safe-b) + 4px);min-height:56px}
}

@media (orientation:landscape){
  #startOv{background:linear-gradient(90deg,rgba(4,7,12,.26),rgba(4,7,12,.45) 48%,rgba(4,7,12,.9)),url("./assets/storm-sanctuary-v18.webp") center 38%/cover no-repeat}
  .start-hero{top:50%;left:7%;right:auto;width:41%;transform:translateY(-50%)}
  .storm-seal{width:78px;height:60px}
  #startOv h1{font-size:38px;line-height:40px}
  .start-actions{top:47%;left:72%;width:min(38%,310px)}
  .home-dock{left:72%;bottom:calc(var(--safe-b) + 8px)}
  .sheet-overlay .dfl-panel{width:min(92%,700px);max-width:700px;height:min(94%,350px);max-height:350px}
  .mission-list,.upgrade-list{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
  .codex-grid{grid-template-columns:repeat(5,1fr);grid-auto-rows:1fr;overflow:hidden}
  .dialog-overlay .dfl-panel{width:min(92%,620px);max-width:620px;display:grid;grid-template-columns:64px minmax(0,1fr) minmax(180px,240px);grid-auto-rows:auto;align-items:center;text-align:left;column-gap:14px;overflow:hidden}
  .dialog-overlay .dialog-mark,.dialog-overlay .front-seal,.dialog-overlay .unlock-burst,.dialog-overlay .reward-art{grid-column:1;grid-row:1/4}
  .dialog-overlay .eyebrow,.dialog-overlay h2,.dialog-overlay .dialog-copy,.dialog-overlay .final-stats,.dialog-overlay .reward-line,.dialog-overlay .next-goal{grid-column:2;text-align:left}
  .dialog-overlay .primary-btn,.dialog-overlay .secondary-btn,.dialog-overlay .ad-btn,.dialog-overlay .text-btn,.dialog-overlay .feedback-note{grid-column:3}
  .tool-btn{bottom:calc(var(--safe-b) + 8px)}
}

@media (prefers-reduced-motion:reduce){
  *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
