/* Full-screen, touch-first career navigation. All rules are scoped to the menu. */
#overlay.menu-open{padding:0;align-items:stretch;background:#142938;overflow:auto;overscroll-behavior:contain;touch-action:pan-y}
#card.menu-card{--menu-cream:#fff7e8;--menu-navy:#0c2339;--menu-orange:#ff6d0a;position:relative;display:block;width:100%;max-width:620px;min-height:100%;max-height:none;margin:0 auto;padding:0;border:0;border-radius:0;background:var(--menu-cream);color:var(--menu-navy);box-shadow:0 0 80px #001a3080;overflow:visible;text-align:center;touch-action:pan-y}
#card.menu-card *{box-sizing:border-box}
#card.menu-card :where(button){appearance:none;font-family:inherit;touch-action:manipulation;cursor:pointer;min-height:44px;min-width:44px;margin:0;line-height:1.15;text-shadow:none;transition:transform .12s,filter .12s}
#card.menu-card :where(button):hover{filter:brightness(1.05)}
#card.menu-card :where(button):active{transform:translateY(1px)}
#card.menu-card :where(button):focus-visible{outline:4px solid #168cbd;outline-offset:3px;z-index:3}
#card.menu-card :where(button)[disabled]{cursor:default;opacity:1;filter:none}
#card.menu-card :where(h1,h2,h3,p){margin:0}
#card.menu-card h2,#card.menu-card h3{font-weight:950;letter-spacing:-1px;color:var(--menu-navy)}
#card.menu-card h2:focus{outline:0}
#card.menu-card svg{display:block;flex:none}
.menu-home{min-height:100svh;display:flex;flex-direction:column}
.menu-depot{position:relative;min-height:310px;height:52svh;max-height:640px;background:#eacba3 url('../assets/menu/depot.webp') center 48%/cover no-repeat;overflow:hidden}
.menu-depot:after{content:'';position:absolute;inset:auto 0 0;height:60px;background:linear-gradient(transparent,#a9683240);pointer-events:none}
.menu-home-header{position:absolute;z-index:2;top:0;left:0;right:0;display:flex;align-items:flex-start;gap:8px;padding:calc(14px + var(--safe-t)) calc(14px + var(--safe-r)) 8px calc(14px + var(--safe-l))}
#card .menu-logo{margin:0 auto 0 0;display:flex;flex-direction:column;line-height:.82;letter-spacing:-2px;font-style:italic;font-weight:950;font-size:clamp(30px,9vw,53px);text-align:left;filter:drop-shadow(0 3px 2px #04213d80);transform:skew(-5deg)}
.menu-logo span{color:#fff}.menu-logo strong{color:#ff990d;font-weight:950}
.menu-wallet{display:flex;align-items:center;justify-content:center;gap:5px;padding:11px 10px;border:1px solid #f8ead5;border-radius:17px;background:#fff7e8ed;font-size:clamp(13px,3.8vw,20px);font-weight:850;white-space:nowrap;box-shadow:0 2px 3px #40200018;font-variant-numeric:tabular-nums}
.menu-wallet>span{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;color:#ffcf4c;background:#f5a70c;border:2px solid #ffd760;border-radius:50%;box-shadow:inset 0 -2px 1px #b7781c;font-size:16px}.menu-wallet small{font-size:.75em}
#card .menu-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:10px;border:1px solid #d6ccbc;border-radius:15px;background:#fff7e8ee;color:#132b42;box-shadow:0 3px 3px #25150015;flex:none}
.menu-icon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.menu-van{position:absolute;inset:18% -10% -3%;pointer-events:none}
.menu-van canvas{display:block;width:100%;height:100%}
.menu-van-fallback{position:absolute;inset:18% 15% 1%;display:grid;place-items:center}
.menu-van-fallback svg{width:100%;height:100%;filter:drop-shadow(0 12px 4px #13263860)}
.menu-van.has-render .menu-van-fallback{display:none}
.menu-equipped{position:absolute;z-index:1;bottom:20px;right:15px;max-width:85%;padding:6px 9px;background:#102638c9;color:#fff6df;border-radius:8px;font-size:10px;font-weight:750;letter-spacing:.2px}.menu-equipped span{color:#ffb854}
.menu-home-console{position:relative;z-index:2;padding:20px 20px calc(10px + var(--safe-b));margin-top:-12px;border-radius:28px 28px 0 0;background:var(--menu-cream);flex:1}
#card .menu-eyebrow{font-size:11px;line-height:1.3;letter-spacing:2px;font-weight:850;color:#40566a;text-transform:uppercase;margin-bottom:7px}
#card .menu-home-console h2{font-size:clamp(27px,8.2vw,46px);line-height:1.05}
#card .menu-assignment{font-size:clamp(13px,3.9vw,19px);font-weight:650;line-height:1.35;color:#435b71;margin:8px 0 18px}
#card .menu-primary{width:100%;display:flex;gap:10px;align-items:center;justify-content:center;padding:17px 13px;border:1px solid #e55b00;border-radius:18px;color:white;background:linear-gradient(150deg,#ff8b11,#ff6207);font-size:22px;font-weight:950;box-shadow:0 3px 0 #c74f09,0 5px 12px #b45e2d30;text-shadow:0 1px 1px #bd500033}
.menu-primary svg{width:23px;height:23px;stroke:currentColor;stroke-width:4;fill:none;stroke-linecap:round;stroke-linejoin:round}
#card .menu-continue{font-size:clamp(25px,7.6vw,38px);min-height:66px;justify-content:space-between;padding:18px 23px}.menu-continue span{flex:1}
.menu-home-links{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
#card .menu-secondary{display:flex;align-items:center;justify-content:center;gap:9px;min-height:60px;padding:8px 10px;background:#fff9ef;color:#112d44;border:1.5px solid #d6cfc1;border-radius:16px;box-shadow:0 3px 1px #d4cabb8a;font-size:15px;font-weight:900}
.menu-secondary svg{width:42px;height:37px}.menu-secondary:nth-child(2) svg{width:50px}
#card .menu-next{position:relative;width:100%;display:block;text-align:left;margin-top:15px;padding:15px 35px 15px 14px;min-height:73px;border:0;border-radius:15px;background:linear-gradient(90deg,#143846fa 20%,#133644d9 65%,#1336443a),url('../assets/menu/connected-city.webp') center 35%/cover;color:#fff6dd;box-shadow:none}
.menu-next>span{display:block;font-size:16px;font-weight:750}.menu-next b{color:#ffd772}.menu-next small{display:block;font-size:12px;font-weight:500;line-height:1.35;margin-top:5px}.menu-next>svg{position:absolute;right:12px;top:25px;width:18px;height:18px;stroke:#fff;stroke-width:3;fill:none}
.menu-utility{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:5px}
#card .menu-text{min-height:44px;padding:8px 6px;background:transparent;color:#526676;border:0;border-radius:8px;font-size:12px;font-weight:700;box-shadow:none;text-decoration:underline;text-underline-offset:3px}
#card .menu-speech{font-size:12px;line-height:1.35;color:#4a3625;background:#f3e5cf;border-left-color:#e69222;margin:6px 0;padding:5px 8px}
.menu-map-shell{min-height:100svh;display:flex;flex-direction:column}
.menu-map-header{display:flex;align-items:center;justify-content:space-between;gap:8px;position:relative;z-index:2;padding:calc(12px + var(--safe-t)) calc(12px + var(--safe-r)) 12px calc(12px + var(--safe-l));background:var(--menu-cream)}
.menu-map-header>div:not(.menu-wallet){flex:1;min-width:0}
#card .menu-map-header h2{font-size:clamp(23px,7vw,35px);line-height:1.05;overflow-wrap:anywhere}
#card .menu-map-header p{margin-top:4px;font-size:12px;line-height:1.2;color:#697b8a;font-weight:600}
.menu-map-header .menu-wallet{font-size:12px;padding:10px 7px;gap:4px}.menu-map-header .menu-wallet>span{width:18px;height:18px;font-size:12px}
.menu-city-map{position:relative;flex:1;min-height:410px;height:calc(100svh - 220px);overflow:hidden;background:#a3b498}
.menu-city-map>img,.menu-shift-map>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}
#card .menu-district{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:max-content;max-width:46%;padding:8px 10px;min-height:49px;border:1px solid #ffffff83;border-radius:13px;color:#fff;background:#233341e8;box-shadow:0 3px 0 #1123338a,0 6px 12px #00111d33;text-align:center}
#card .menu-district:active{transform:translate(-50%,-49%)}
.menu-district strong{display:block;font-size:clamp(13px,3.9vw,20px);font-weight:900;line-height:1.05;text-transform:uppercase;letter-spacing:-.3px}.menu-district span{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:4px;font-size:11px;font-weight:700}.menu-district svg{height:12px;width:10px;fill:#d5dae0;stroke:#d5dae0;stroke-width:2}
#card .menu-district.is-current{background:linear-gradient(#ff931d,#ff6506);border:2px solid #ffdf98;box-shadow:0 3px 0 #c24e08,0 5px 20px #ff8a0060}.menu-district.is-completed span{color:#87f48b}.menu-district.is-available span{color:#ffe39b}#card .menu-district.is-selected{outline:3px solid #fff9df;outline-offset:3px}
.menu-city-legend{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:center;gap:20px;padding:9px;background:linear-gradient(transparent,#172e36d9);color:#fff;font-size:10px;font-weight:750}.menu-city-legend>span{display:flex;align-items:center;gap:4px}.menu-city-legend svg{width:8px;height:11px;fill:white;stroke:white;stroke-width:2}
.menu-map-footer{position:relative;z-index:1;margin-top:-8px;padding:17px 18px calc(18px + var(--safe-b));background:var(--menu-cream);border-radius:24px 24px 0 0;box-shadow:0 -4px 15px #15313b20}
#card .menu-map-footer h3{font-size:27px;line-height:1.05;margin-bottom:6px}.menu-map-footer p:not(.menu-eyebrow){font-size:13px;line-height:1.35;color:#536b7d}#card .menu-map-footer .menu-primary{margin-top:12px;font-size:18px;min-height:51px;padding:12px}
#card .menu-map-footer .menu-eyebrow{font-size:10px;letter-spacing:1.3px;margin-bottom:5px}.menu-shift-progress{position:relative;z-index:2;padding:0 20px 9px;background:var(--menu-cream);font-size:11px;color:#5b6e7d;font-weight:750}.menu-shift-progress progress{display:block;appearance:none;height:8px;width:80%;margin:0 auto 5px;border:0;border-radius:10px;overflow:hidden;background:#e5d6bf}.menu-shift-progress progress::-webkit-progress-bar{background:#e5d6bf}.menu-shift-progress progress::-webkit-progress-value{background:#ff7410;border-radius:8px}.menu-shift-progress progress::-moz-progress-bar{background:#ff7410;border-radius:8px}
.menu-shift-map{position:relative;flex:1;height:calc(100svh - 278px);min-height:530px;overflow:hidden;background:#788a58}
.menu-shift-map>img{object-fit:cover}.menu-shifts:not(.district-maplewood) .menu-shift-map>img{filter:saturate(.75) brightness(.77)}
.menu-shift-road{position:absolute;inset:0;width:100%;height:100%;overflow:visible;opacity:.9;filter:drop-shadow(0 1px 1px #172d3480)}.menu-shift-road path{fill:none;stroke:#fff8e1;stroke-width:1;stroke-dasharray:1 1.4}
#card .menu-shift-node{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:56px;height:56px;padding:5px;border-radius:50%;border:3px solid #d5d1c2;color:#fff;background:linear-gradient(#56616c,#34404d);box-shadow:0 4px 0 #8e928c,0 8px 10px #19303966}
#card .menu-shift-node:active{transform:translate(-50%,-49%)}.menu-shift-node strong{display:block;font-size:22px;font-weight:900}.menu-shift-node span{display:flex;justify-content:center;font-size:12px;line-height:12px;margin-top:1px}.menu-shift-node svg{width:9px;height:12px;fill:#e0e5eb;stroke:#e0e5eb;stroke-width:2}
#card .menu-shift-node.is-current{width:65px;height:65px;border-color:#fff2bf;background:linear-gradient(#ff961c,#ff6a0b);box-shadow:0 4px 0 #bd6918,0 0 0 5px #ffcf4655,0 8px 14px #50380b55}#card .menu-shift-node.is-completed{background:linear-gradient(#65b956,#388d42);border-color:#eaffd3}#card .menu-shift-node.is-selected{outline:3px solid #fff;outline-offset:4px}
#card .menu-shift-node.is-available{border-color:#ffe6a0}.menu-shift-summary h3{min-height:1em}.menu-shift-summary .menu-eyebrow span{letter-spacing:.4px;text-transform:none}
#card .menu-unavailable{background:#d6d9d6;color:#435766;border-color:#bac3c1;box-shadow:0 2px 0 #bac3c1;font-size:16px}.menu-unavailable svg{fill:currentColor;stroke:currentColor;stroke-width:1;width:12px;height:17px}
@media(max-width:350px){.menu-home-header{padding-left:10px;padding-right:10px;gap:6px}.menu-home-header .menu-wallet{padding:10px 7px}.menu-home-console{padding:16px 14px 6px}.menu-depot{min-height:260px;height:46svh}.menu-home-console .menu-eyebrow{font-size:10px}.menu-home-console .menu-assignment{margin:7px 0 12px}.menu-home-links{gap:8px}.menu-secondary span{font-size:13px}.menu-secondary svg{width:32px}.menu-map-header{gap:6px}.menu-map-header .menu-wallet{padding:8px 5px;font-size:10px}.menu-map-header .menu-wallet>span{display:none}.menu-map-header .menu-wallet small{font-size:9px}#card .menu-map-header h2{font-size:24px}#card .menu-district{padding:7px 8px}.menu-city-map{min-height:390px}.menu-map-footer{padding:15px 14px}.menu-next{min-height:68px}}
@media(min-width:700px) and (min-height:600px){#card.menu-card{max-width:560px}.menu-depot{height:48svh}.menu-shift-map{min-height:590px}.menu-city-map{min-height:550px}}
@media(orientation:landscape) and (max-height:600px){#card.menu-card{max-width:1100px}.menu-home{min-height:100svh;display:grid;grid-template-columns:46% 54%;align-items:stretch}.menu-depot{height:100%;min-height:100svh;max-height:none}.menu-home-header{flex-wrap:wrap;padding:calc(9px + var(--safe-t)) 9px 6px}.menu-logo{width:100%;font-size:38px!important}.menu-home-header .menu-wallet{font-size:12px;padding:8px}.menu-home-header .menu-icon{margin-left:auto}.menu-van{inset:25% -18% 0}.menu-equipped{bottom:14px;font-size:9px;right:9px}.menu-home-console{margin:0;border-radius:20px 0 0 20px;padding:calc(13px + var(--safe-t)) 14px calc(8px + var(--safe-b))}.menu-home-console h2{font-size:29px!important}.menu-home-console .menu-assignment{font-size:12px;margin:6px 0 12px}#card .menu-continue{min-height:54px;padding:12px 14px;font-size:26px}.menu-home-links{margin-top:10px}#card .menu-secondary{min-height:49px;padding:6px;font-size:12px;gap:5px}.menu-secondary svg{width:28px!important;height:29px}#card .menu-next{min-height:59px;margin-top:10px;padding:10px 25px 10px 10px}.menu-next>span{font-size:13px}.menu-next small{font-size:10px}.menu-next>svg{top:19px;right:7px}.menu-utility{margin-top:1px}.menu-map-shell{display:grid;grid-template-columns:58% 42%;grid-template-rows:auto 1fr;min-height:100svh}.menu-map-header{grid-column:1 / -1;padding:calc(8px + var(--safe-t)) calc(12px + var(--safe-r)) 8px calc(12px + var(--safe-l))}.menu-map-header h2{font-size:25px!important}.menu-map-header p{font-size:11px!important}.menu-city-map{min-height:560px;height:calc(100svh - 65px);grid-column:1;grid-row:2}.menu-map-footer{grid-column:2;grid-row:2;border-radius:0;margin:0;padding:18px 14px;align-self:start;position:sticky;top:0;box-shadow:none}.menu-shifts{grid-template-rows:auto auto 1fr}.menu-shift-progress{grid-column:1;grid-row:2;padding:0 12px 8px}.menu-shift-map{grid-row:3;min-height:570px;height:calc(100svh - 90px)}.menu-shift-footer{grid-row:2 / 4;top:0;padding:12px}.menu-map-footer h3{font-size:25px!important}.menu-map-footer p:not(.menu-eyebrow){font-size:12px}#card .menu-shift-footer .menu-primary{font-size:16px}.menu-district strong{font-size:15px}.menu-district span{font-size:10px}}
@media(prefers-reduced-motion:reduce){#card.menu-card :where(button){transition:none}}

/* The real Maplewood road supplies the route line; its markers follow the asphalt. */
.district-maplewood .menu-shift-map{min-height:630px}
.district-maplewood .menu-shift-road{display:none}

#card .menu-text{width:auto}
.menu-van-fallback{inset:15% 7% -1%}
.menu-van-fallback small{position:absolute;left:50%;bottom:0;transform:translateX(-50%);font-size:9px;letter-spacing:.4px;color:#fff8e5;background:#142c3a99;padding:3px 7px;border-radius:5px;white-space:nowrap}

/* Header columns reserve real space for the logo, wallet and settings. */
.menu-home-header{display:grid;grid-template-columns:minmax(0,1fr) auto 44px;gap:8px}
#card.menu-card .menu-logo{margin:0 auto 0 0;flex:none;font-size:clamp(28px,8.5vw,50px);width:max-content;letter-spacing:-1.5px}
#card .menu-next{background-image:linear-gradient(90deg,#143846fa 20%,#133644d9 65%,#1336443a),var(--next-image,url('../assets/menu/connected-city.webp'));background-position:center,var(--next-position,center 35%)}
@media(orientation:landscape) and (max-height:600px){.menu-home-header{grid-template-columns:minmax(0,1fr) 44px}#card.menu-card .menu-logo{grid-column:1 / -1;width:auto;font-size:38px}.menu-home-header .menu-wallet{justify-self:start}}

html #overlay.menu-open{padding:0}
@media(orientation:portrait){.menu-city-map{height:calc(100svh - 240px);min-height:315px}}
.menu-map-footer{padding-left:max(18px,var(--safe-l));padding-right:max(18px,var(--safe-r))}

.menu-van-fallback small{bottom:28px;left:8%;transform:none}

/* Keep the complete landscape menu inside either side's notch inset. The
   artwork still fills its panel, while headers, map markers and CTAs are safe. */
@media(orientation:landscape) and (max-height:600px){
  html #overlay.menu-open{padding-left:var(--safe-l);padding-right:var(--safe-r)}
  .menu-map-header{padding-left:12px;padding-right:12px}
  .menu-map-footer{padding-left:18px;padding-right:18px;padding-bottom:calc(18px + var(--safe-b))}
  .menu-shift-footer{padding-left:12px;padding-right:12px;padding-bottom:calc(12px + var(--safe-b))}
}
/* Size both background layers explicitly so a district crop cannot silently
   fall back to the whole-width city and show the neighboring harbor. */
#card .menu-next{background-size:100% 100%,var(--next-size,cover);background-repeat:no-repeat}
