@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700;800;900&family=DM+Sans:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans',Arial,sans-serif;color:#edf7ee;background:#0c171a}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 50% -30%,#304c42,#0b1519 65%);min-height:100vh}#shell{width:min(1440px,100%);margin:0 auto;padding:14px 22px 20px}.topbar{display:flex;align-items:center;justify-content:space-between;height:62px}.brand{display:flex;gap:12px;align-items:center}.brand-icon{background:#d7f35c;color:#14251d;width:42px;height:42px;display:grid;place-items:center;font-size:25px;border-radius:11px}.brand strong{font-family:'Barlow Condensed',Impact,sans-serif;font-weight:900;font-size:28px;line-height:23px;letter-spacing:1.5px;display:block}.brand em{font-style:normal;color:#d7f35c}.brand small{font-size:9px;letter-spacing:2.1px;font-weight:800;color:#a3bcb0}.tagline{font-size:13px;color:#9cb5a8}.topbtn{font-size:10px;letter-spacing:1.1px;border:1px solid #425c55;color:#c2d8c9;background:#192a29;border-radius:7px;padding:10px 13px;cursor:pointer;font-weight:800}.hud{display:grid;grid-template-columns:1.3fr 1fr 1.14fr 1.2fr 1.35fr;gap:9px;margin:12px 0}.hud-unit{background:#16282a;border:1px solid #28413b;border-radius:10px;padding:11px 15px 12px;min-height:89px;display:flex;flex-direction:column;gap:2px;overflow:hidden}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:800;color:#89a89a}.hud-unit strong{font:800 29px/31px 'Barlow Condensed',Impact,sans-serif;letter-spacing:.9px}.hud-unit.pattern-unit strong{color:#d9f36b}.micro{font-size:10px;font-weight:700;letter-spacing:.6px;color:#8da69a;white-space:nowrap}.battery-line{display:flex;align-items:center;justify-content:space-between}.battery-line span{color:#d7f35c}.meter{background:#32493f;height:7px;border-radius:4px;margin-top:7px;overflow:hidden}.fill{width:100%;height:100%;background:#d4f35a;border-radius:4px;transition:width .15s}.game-wrap{position:relative;border:2px solid #365045;border-radius:12px;overflow:hidden;background:#568b4e;box-shadow:0 15px 60px #0005}#game{display:block;width:100%;aspect-ratio:16/9;touch-action:none}.float-status{position:absolute;left:50%;top:10%;transform:translateX(-50%);background:#102922e5;border:1px solid #9ccf8a;border-radius:8px;color:#dffc8c;padding:9px 16px;font-weight:900;font-size:13px;letter-spacing:1px;opacity:0;pointer-events:none;transition:opacity .2s;white-space:nowrap}.float-status.active{opacity:1}.mission{position:absolute;left:15px;top:14px;border-radius:7px;background:#102820db;padding:10px 14px;display:flex;align-items:center;gap:9px;border:1px solid #a5cf8a65;color:#e7f0d9;max-width:68%;font-size:12px;font-weight:800;box-shadow:0 3px 10px #0003}.mission-icon{font-size:17px;color:#d6ee66}.minimap{position:absolute;right:13px;bottom:13px;border:2px solid #bedba8;background:#173424db;border-radius:6px;padding:5px;line-height:0}#map{width:220px;height:34px}.bottom{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:17px 1px;color:#8ba49b;flex-wrap:wrap;font-size:10px;font-weight:800;letter-spacing:1px}.bottom-left{display:flex;align-items:center;gap:9px}.light{width:7px;height:7px;border-radius:50%;background:#dbef6c;box-shadow:0 0 9px #dfff77}.bottom-sep{color:#496257}.control-list{display:flex;gap:15px}.control-list span{white-space:nowrap}.control-list kbd{font-family:inherit;color:#e2f2e7;background:#1e3633;border:1px solid #41645a;border-radius:4px;padding:4px 6px;margin-right:4px}.overlay{position:absolute;inset:0;background:#06150edc;display:none;align-items:center;justify-content:center;z-index:10;backdrop-filter:blur(4px);padding:14px}.overlay.visible{display:flex}.overlay-box{width:min(625px,97%);background:linear-gradient(153deg,#1d342e,#0d211d);border:1px solid #6a9b6b;border-radius:14px;text-align:center;padding:23px 35px 20px;box-shadow:0 24px 80px #0008;max-height:99%;overflow-y:auto}.overline{font-size:10px;font-weight:900;letter-spacing:3px;color:#cced73}h1{font:900 clamp(42px,6vw,75px)/.98 'Barlow Condensed',Impact,sans-serif;letter-spacing:1.8px;margin:10px 0 8px;color:#f1f6e7}h1 span{color:#d5f067}.overlay-box p{font-size:13px;line-height:1.65;color:#b2caba;max-width:460px;margin:0 auto 13px}.instructions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.instructions div{background:#263e34;border:1px solid #405a45;border-radius:6px;padding:9px 4px;display:flex;align-items:center;gap:4px;flex-direction:column}.instructions b{font-size:12px;color:#e2f4c9}.instructions span{font-size:9px;color:#94b39f;font-weight:800;letter-spacing:.7px}.start-btn{border:none;background:#d7f366;color:#213023;border-radius:8px;padding:14px 35px;font:900 19px 'Barlow Condensed',Impact,sans-serif;letter-spacing:1.1px;cursor:pointer;box-shadow:0 5px 0 #98af49}.start-btn:hover{background:#ebff8c}.start-btn span{padding-left:15px}.overlay-tip{font-size:10px;color:#87ae93;margin-top:15px;line-height:1.5}.summary{color:#d7f366;font-weight:800;font-size:15px}.mobile-controls{display:none}@media(max-width:850px){#shell{padding:5px 7px 8px}.topbar{height:48px}.brand strong{font-size:22px}.brand small{font-size:7px}.brand-icon{height:34px;width:34px}.tagline{display:none}.hud{grid-template-columns:repeat(3,1fr);gap:4px;margin:5px 0}.hud-unit{min-height:69px;padding:6px}.hud-unit strong{font-size:21px;line-height:23px}.eyebrow{font-size:8px}.micro{font-size:8px}.pattern-unit{display:none}.mission{font-size:9px;padding:6px;top:5px;left:5px}.minimap{display:none}.bottom{display:none}.mobile-controls{display:flex;justify-content:space-between;padding:8px 12px}.mobile-controls button{touch-action:none;user-select:none;border:1px solid #62795b;border-radius:7px;padding:10px 14px;background:#26463c;color:#ecf9cd;font-weight:800}.dpad{display:flex;flex-direction:column;align-items:center;gap:3px}.dpad>div{display:flex;gap:3px}.actions{display:flex;align-items:end;gap:4px}.actions button{font-size:11px}.overlay-box{padding:12px 14px}.overlay-box p{font-size:11px}.instructions{gap:4px;margin:8px 0}.instructions div{padding:5px 2px}.instructions b{font-size:9px}.instructions span{font-size:7px}.overlay-tip{display:none}}@media(max-width:480px){.hud{grid-template-columns:repeat(3,1fr)}.hud-unit:nth-child(4){display:none}.game-wrap{border-width:1px}.overlay-box{max-height:100%}.overlay h1{font-size:38px}.overlay-box p{line-height:1.35}.instructions{grid-template-columns:repeat(2,1fr)}.mission{font-size:8px;max-width:85%}.topbtn{font-size:8px;padding:7px}}

/* Control configuration */
.header-actions{display:flex;align-items:center;gap:8px}.settings-modal[hidden]{display:none!important}.settings-modal{position:fixed;inset:0;z-index:50;background:#05120de8;display:flex;justify-content:center;align-items:center;padding:18px;backdrop-filter:blur(5px)}.settings-panel{width:min(520px,100%);background:linear-gradient(145deg,#1c352e,#0e211d);border:1px solid #7a9e72;box-shadow:0 25px 85px #000a;border-radius:14px;padding:26px;color:#f0f6e9}.settings-heading{display:flex;justify-content:space-between;align-items:start;margin-bottom:18px}.settings-heading h2{font:900 38px 'Barlow Condensed',Impact,sans-serif;letter-spacing:1px;margin:5px 0}.settings-x{font-size:20px;line-height:1;background:#294238;color:#edf6e4;border:1px solid #53745e;border-radius:6px;padding:9px 12px;cursor:pointer}.settings-field{display:flex;flex-direction:column;gap:9px;color:#aecaaf;font-size:11px;letter-spacing:1px;font-weight:900;margin-bottom:17px}.settings-field select{width:100%;min-width:0;background:#223d35;color:#f0f8e8;border:1px solid #5e816b;border-radius:7px;padding:12px;font-size:13px;font-weight:700;letter-spacing:0;cursor:pointer}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.settings-help{font-size:12px;line-height:1.6;color:#a6c5af;margin:0 0 12px}.settings-error{color:#ffba9e;font-size:12px;font-weight:700;min-height:18px}.settings-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:11px}.settings-actions .start-btn{font-size:16px;padding:12px 20px}.settings-actions .topbtn{white-space:nowrap}@media(max-width:480px){.header-actions{gap:4px}.header-actions .topbtn{font-size:8px;padding:7px 6px}.settings-panel{padding:18px}.settings-grid{grid-template-columns:1fr;gap:0}.settings-heading h2{font-size:31px}}

/* Autonomous attract mode */
.demo-badge{position:absolute;top:54px;left:14px;z-index:7;background:#19362eea;color:#e6ff84;border:1px solid #d2f76c;border-radius:6px;padding:8px 12px;font-size:12px;font-weight:900;letter-spacing:1px;pointer-events:none}.demo-exit{position:absolute;right:13px;top:14px;z-index:8;background:#d8f46b;color:#172d23;border:none;border-radius:6px;padding:9px 14px;font-size:12px;font-weight:900;cursor:pointer}.demo-badge[hidden],.demo-exit[hidden]{display:none!important}@media(max-width:850px){.demo-badge{font-size:8px;top:35px}.demo-exit{font-size:9px;padding:5px}}

/* v1.2 public-facing navigation and mobile reachability; gameplay presentation preserved */
.site-nav{max-width:1440px;margin:auto;padding:11px 22px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;font-weight:800;letter-spacing:1px;color:#97ad9f}
.site-nav a{color:#d8f466;text-decoration:none}.site-nav a:focus-visible,.topbtn:focus-visible,.start-btn:focus-visible,.mobile-controls button:focus-visible{outline:3px solid #f7ffbe;outline-offset:3px}
.mobile-hint{display:none}
@media(max-width:850px){.site-nav{padding:8px 9px 0;font-size:10px}.site-nav span{display:none}.public-play .header-actions{flex-wrap:wrap;justify-content:flex-end}.public-play .topbar{height:auto;min-height:49px;gap:5px}.public-play .brand{flex-shrink:0}.mobile-hint{display:block;text-align:center;font-size:10px;letter-spacing:1px;color:#c1dba8;padding-top:7px;font-weight:800}.public-play .mobile-controls{gap:8px;padding:10px 4px;align-items:stretch}.public-play .mobile-controls .actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;align-content:end;max-width:57%}.public-play .mobile-controls .actions button{font-size:10px;min-height:41px;padding:6px 3px}.public-play .mobile-controls .actions #mobilePattern{grid-column:span 2}.public-play .game-wrap{width:100%}.public-play .overlay-box{max-height:100%;}.public-play .topbar .header-actions button{white-space:nowrap}}
@media(max-width:480px){.public-play .brand strong{font-size:18px}.public-play .brand small{font-size:6px}.public-play .brand-icon{width:29px;height:29px;font-size:19px}.public-play .header-actions .topbtn{padding:6px 5px;font-size:7px}.public-play .mission{max-width:85%;}.public-play .mobile-controls .dpad button{min-width:43px;min-height:40px}.public-play .overlay{padding:3px}.public-play .overlay-box{width:99%;padding:8px 10px}.public-play .instructions{gap:3px;margin:6px 0}.public-play .instructions div{padding:4px 1px}.public-play .overlay-box p{margin-bottom:3px}.public-play .overlay h1{margin:3px 0}.public-play .start-btn{padding:8px 20px}.public-play .overlay-tip{display:none}}

/* v1.2.2: Mobile start overlay must not be confined to the 16:9 game canvas.
   Show a screen-sized dialog and put its primary action before the keyboard tips. */
@media (max-width: 850px) {
  .public-play .overlay.visible {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom));
    background: rgba(5, 19, 14, .94);
    overflow-y: auto;
  }
  .public-play .overlay-box {
    display: flex;
    flex-direction: column;
    width: min(430px, 100%);
    max-height: calc(100dvh - 24px);
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 22px 18px 18px;
  }
  .public-play .overlay-box .start-btn {
    order: 1;
    flex: 0 0 auto;
    align-self: center;
    min-width: min(270px, 100%);
    margin: 8px 0 10px;
    font-size: 22px;
    padding: 15px 20px;
  }
  .public-play .overlay-box .instructions { order: 2; }
  .public-play .overlay-box .overlay-tip { order: 3; }
}
@media (max-width: 480px) {
  .public-play .overlay-box { padding: 18px 14px 16px; }
  .public-play .overlay-box .overline { font-size: 9px; }
  .public-play .overlay h1 { font-size: 45px; }
  .public-play .overlay-box p { font-size: 12px; line-height: 1.55; margin: 4px auto 8px; }
  .public-play .overlay-box .start-btn { padding: 14px 20px; }
  .public-play .overlay-box .instructions { grid-template-columns: repeat(3, minmax(0,1fr)); gap: 5px; }
  .public-play .overlay-box .instructions div { min-height: 47px; }
}

/* v1.2.3 — Landscape phone arcade layout: game fills the visible viewport;
   translucent touch controls float above the playfield, never below it. */
@media (orientation: landscape) and (max-height: 650px) and (pointer: coarse) {
  html, body { margin: 0; min-height: 100%; overflow: hidden; background: #0b1719; }
  .public-play .site-nav,
  .public-play .topbar,
  .public-play .hud,
  .public-play .bottom,
  .public-play .mobile-hint { display: none !important; }
  .public-play #shell { width: 100%; max-width: none; height: 100dvh; padding: 0; margin: 0; }
  .public-play .game-wrap {
    width: 100vw; height: 100dvh; border: 0; border-radius: 0;
    background: #142623; box-shadow: none; overflow: hidden;
  }
  .public-play #game {
    width: 100%; height: 100%; aspect-ratio: auto;
    object-fit: fill; object-position: center center;
  }
  .public-play .mobile-controls {
    display: flex !important;
    position: fixed; z-index: 12;
    left: 0; right: 0;
    bottom: max(56px, calc(env(safe-area-inset-bottom) + 30px));
    width: 100%; height: auto;
    padding: 0 max(12px, env(safe-area-inset-left)) 0 max(12px, env(safe-area-inset-right));
    justify-content: space-between; align-items: end;
    pointer-events: none; background: none;
  }
  .public-play .mobile-controls .dpad,
  .public-play .mobile-controls .actions { pointer-events: none; }
  .public-play .mobile-controls button {
    pointer-events: auto;
    touch-action: none;
    -webkit-tap-highlight-color: transparent;
    min-width: 49px; min-height: 49px;
    padding: 5px 8px;
    border: 1px solid rgba(214, 247, 173, .62);
    border-radius: 11px;
    background: rgba(13, 37, 29, .67);
    color: #efffda;
    font-size: 14px;
    font-weight: 900;
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    box-shadow: 0 2px 10px #0005;
    user-select: none;
  }
  .public-play .mobile-controls button:active {
    background: rgba(204, 241, 90, .88); color: #153329;
  }
  .public-play .mobile-controls .dpad { display: flex; flex-direction: column; gap: 3px; align-items: center; }
  .public-play .mobile-controls .dpad > div { display: flex; gap: 3px; }
  .public-play .mobile-controls .actions {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
    max-width: min(47vw, 285px); gap: 5px; align-items: stretch;
  }
  .public-play .mobile-controls .actions button { min-width: 0; min-height: 47px; font-size: 11px; padding: 5px 4px; }
  .public-play .mobile-controls .actions #mobilePattern { grid-column: span 2; }
  .public-play .mission { top: 7px; left: 50%; transform: translateX(-50%); max-width: 52%; padding: 5px 9px; font-size: 9px; }
  .public-play .demo-badge { top: 36px; left: 50%; transform: translateX(-50%); }
  .public-play .float-status { top: 17%; }
  .public-play .overlay.visible { z-index: 30; }
  .public-play .overlay-box { width: min(520px, 96vw); max-height: calc(100dvh - 12px); padding: 10px 18px; }
  .public-play .overlay-box .overline { font-size: 8px; }
  .public-play .overlay h1 { font-size: clamp(30px, 9vh, 48px); margin: 3px 0; }
  .public-play .overlay-box p { font-size: 11px; line-height: 1.35; margin: 2px auto 5px; }
  .public-play .overlay-box .start-btn { padding: 9px 23px; margin: 5px auto 9px; font-size: 20px; }
  .public-play .overlay-box .instructions { gap: 4px; margin: 4px 0; grid-template-columns: repeat(3, 1fr); }
  .public-play .overlay-box .instructions div { padding: 3px; min-height: 33px; }
  .public-play .overlay-box .instructions b { font-size: 10px; }
  .public-play .overlay-box .instructions span { font-size: 7px; }
  .public-play .overlay-tip { display: none; }
  .public-play .settings-modal { z-index: 60; }
}
@media (orientation: landscape) and (max-height: 380px) and (pointer: coarse) {
  .public-play .mobile-controls button { min-width: 41px; min-height: 41px; }
  .public-play .mobile-controls .actions button { min-height: 39px; font-size: 9px; }
  .public-play .overlay-box .instructions { display: none; }
  .public-play .overlay-box { padding: 7px 13px; }
  .public-play .mission { display: none; }
}


/* v1.2.5 - immersive mobile overlay and compact in-game HUD. */
.mobile-arcade-hud, .immersive-toggle, .immersive-message { display: none; }
@media (pointer:coarse) {
  .public-play .immersive-toggle {
    display: flex; align-items: center; justify-content: center; gap: 5px;
    position: absolute; right: 10px; top: 10px; z-index: 42;
    border: 1px solid rgba(215,243,102,.7); border-radius: 9px;
    color: #edffd6; background: rgba(12,36,30,.83); padding: 7px 9px;
    font: 800 11px Arial, sans-serif; cursor: pointer;
    backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px);
    touch-action: manipulation;
  }
  .public-play .immersive-message:not([hidden]) {
    display:block; position:absolute; top:52px; right:8px; z-index:45;
    max-width: min(290px,85%); padding:9px 12px; font-size:12px;
    background:rgba(13,32,29,.96); border:1px solid #9aba73; color:#efffd7;
    border-radius:8px; box-shadow:0 6px 16px #0007;
  }
}
@media (orientation:landscape) and (max-height:650px) and (pointer:coarse) {
  .public-play .mobile-arcade-hud {
    display:flex; position:absolute; z-index:13; top:5px;
    left:max(7px, env(safe-area-inset-left));
    width:max-content; max-width:calc(100% - 110px); align-items:stretch; gap:5px;
    pointer-events:none;
  }
  .public-play .arcade-stat {
    background:rgba(10,35,30,.84); border:1px solid rgba(184,231,145,.5);
    color:#f2ffdf; border-radius:8px; padding:4px 9px 5px;
    box-shadow:0 2px 8px #0005; min-width:72px;
    backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px);
    font-family:Arial,sans-serif;
  }
  .public-play .arcade-stat span { display:block; font-size:8px; letter-spacing:.7px; font-weight:800; color:#c5ec9a; white-space:nowrap; }
  .public-play .arcade-stat strong { display:block; font-size:15px; font-weight:900; white-space:nowrap; margin-top:2px; }
  .public-play .arcade-battery { min-width:88px; }
  .public-play .arcade-meter { height:4px; background:#395748; border-radius:3px; overflow:hidden; margin-top:2px; }
  .public-play .arcade-meter i { display:block; height:100%; width:100%; border-radius:3px; background:#d4f35a; }
  .public-play .immersive-toggle { top:5px; right:max(7px, env(safe-area-inset-right)); font-size:16px; padding:4px 8px; min-height:37px; }
  .public-play .immersive-toggle span { font-size:9px; }
  .public-play .mission { top:50px; }
  .public-play .demo-badge { top:54px; }
  .public-play .immersive-message:not([hidden]) {top:47px;}
}
@media (orientation:landscape) and (max-height:370px) and (pointer:coarse) {
  .public-play .arcade-stat {padding:3px 6px;min-width:61px;}
  .public-play .arcade-stat span {font-size:7px;}
  .public-play .arcade-stat strong {font-size:12px;}
  .public-play .arcade-status {display:none;}
  .public-play .immersive-toggle span {display:none;}
  .public-play .mobile-arcade-hud {max-width:calc(100% - 55px);}
}
@media (max-width:470px) and (orientation:portrait) and (pointer:coarse) {
  .public-play .immersive-toggle {top:4px;right:4px;padding:5px 6px;font-size:13px;}
  .public-play .immersive-toggle span {font-size:8px;}
}

/* v1.2.6 — the compact mobile HUD replaces the persistent objective banner.
   Existing short event notifications (including yard completion) remain visible. */
@media (pointer:coarse) {
  .public-play .mission { display: none !important; }
  .public-play .float-status {
    z-index: 18;
    max-width: min(92%, 500px);
    white-space: normal;
    text-align: center;
    line-height: 1.3;
    font-size: clamp(10px, 1.7vw, 13px);
    padding: 7px 12px;
  }
}
@media (orientation:landscape) and (pointer:coarse) {
  .public-play .float-status { top: 18%; }
}

/* v1.2.7 — Keep Android gesture navigation clear of the directional pad.
   The touch UI remains over the playfield, with its lower row lifted away
   from the system navigation edge in fullscreen / installed-app mode. */
@media (orientation: landscape) and (max-height: 650px) and (pointer: coarse) {
  .public-play .mobile-controls { bottom: max(56px, calc(env(safe-area-inset-bottom) + 30px)); }
}
@media (orientation: portrait) and (pointer: coarse) {
  .public-play .mobile-controls { padding-bottom: max(20px, env(safe-area-inset-bottom)); }
}

/* v1.2.9 — Bring landscape mobile buttons slightly closer to the bottom.
   Keep a minimum gesture-safe gap so the Android Down arrow remains usable. */
@media (orientation: landscape) and (max-height: 650px) and (pointer: coarse) {
  .public-play .mobile-controls {
    bottom: max(34px, calc(env(safe-area-inset-bottom) + 22px));
  }
}

/* v1.3 Scores: isolated from live camera and touch controls */
.run-results{margin:9px auto 12px;max-width:470px;color:#e4f5d6}
.results-head{font-weight:900;color:#d7f366;font-size:13px;margin:5px 0}
.results-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:9px 0}
.results-grid>div{padding:7px 4px;border-radius:7px;background:#253c31;border:1px solid #456247;display:flex;flex-direction:column;gap:4px}
.results-grid small{font-size:8px;color:#a9c5ad;font-weight:800;letter-spacing:.4px}
.results-grid strong{font-size:16px;color:#eafa9b}
.result-submit{display:flex;gap:7px;justify-content:center;margin-top:9px}
.result-submit input{max-width:180px;min-width:0;width:50%;padding:9px;border-radius:7px;border:1px solid #78936e;background:#152a24;color:#fff;font-weight:700}
.result-submit button,.lb-view-results{border:0;border-radius:7px;background:#d7f366;color:#14251d;padding:9px;font-weight:900;cursor:pointer;font-size:11px}
.result-submit button:disabled{opacity:.5;cursor:default}
.result-message{font-size:10px!important;margin:6px auto!important;color:#c3dfb5!important}
.lb-view-results{background:#345343;color:#ecffbe;border:1px solid #617a4f;margin-bottom:5px}
.leaderboard-modal .leaderboard-panel{width:min(560px,94vw);max-height:min(84dvh,650px);overflow:auto}
.lb-tabs{display:flex;gap:8px;margin:14px 0}.lb-tabs button{flex:1;padding:10px;border-radius:7px;color:#d4eabf;background:#294137;border:1px solid #496953;font-weight:900;cursor:pointer}.lb-tabs .lb-selected{background:#d7f366;color:#1a3026}
.lb-status{color:#aaccb1;font-size:12px;margin:9px 0 14px}.leaderboard-rows{max-height:40vh;overflow:auto}.lb-row{display:flex;align-items:center;gap:12px;background:#243d32;border:1px solid #41634f;border-radius:7px;margin-bottom:5px;padding:10px;color:#ebf2dc;font-size:13px}.lb-row b{color:#d7f366;min-width:30px}.lb-row span{flex:1;overflow-wrap:anywhere;text-align:left}.lb-row strong{color:#d8ef81}
@media (max-height:650px) and (orientation:landscape) and (pointer:coarse){.public-play .overlay-box:has(.run-results:not([hidden])) .instructions,.public-play .overlay-box:has(.run-results:not([hidden])) .overlay-tip{display:none}.public-play .overlay-box:has(.run-results:not([hidden])){padding:7px 12px;max-height:calc(100dvh - 4px)}.public-play .overlay-box:has(.run-results:not([hidden])) h1{font-size:24px}.public-play .overlay-box:has(.run-results:not([hidden])) p{font-size:10px;line-height:1.15}.results-grid{gap:3px;margin:5px 0}.results-grid>div{padding:4px}.results-grid strong{font-size:13px}.result-submit input,.result-submit button{padding:7px}.public-play .overlay-box:has(.run-results:not([hidden])) .start-btn{padding:7px 15px;margin:3px}}

/* Only shown at /play/?dev=1; usable on small screens. */
.developer-test-actions{margin-top:14px;border-top:1px solid rgba(205,240,155,.25);padding-top:12px}.developer-test-actions .start-btn{width:100%;min-height:46px}


/* v1.3.2 — Results are a dedicated summary, not the start/instruction screen.
   Freeing that space removes the desktop scrollbar without hiding results. */
.public-play .overlay-box:has(#runResults:not([hidden])) {
  padding: clamp(10px, 2vh, 18px) clamp(16px, 3vw, 30px);
  max-height: calc(100dvh - 24px);
}
.public-play .overlay-box:has(#runResults:not([hidden])) .instructions,
.public-play .overlay-box:has(#runResults:not([hidden])) .overlay-tip,
.public-play .overlay-box:has(#runResults:not([hidden])) #summary {
  display: none;
}
.public-play .overlay-box:has(#runResults:not([hidden])) h1 {
  font-size: clamp(34px, 5.5vh, 55px);
  line-height: 0.98;
  margin: 6px auto;
}
.public-play .overlay-box:has(#runResults:not([hidden])) .run-results {
  margin: 7px auto 8px;
}
.public-play .overlay-box:has(#runResults:not([hidden])) .results-grid {
  margin: 7px 0;
}
.public-play .overlay-box:has(#runResults:not([hidden])) .start-btn {
  margin-top: 7px;
}
@media (max-height: 730px) {
  .public-play .overlay-box:has(#runResults:not([hidden])) #overlayDescription {display:none;}
  .public-play .overlay-box:has(#runResults:not([hidden])) .results-grid > div {padding:5px 3px;}
  .public-play .overlay-box:has(#runResults:not([hidden])) .result-submit {margin-top:5px;}
}

/* v1.4.1 — Unified arcade buttons and streamlined challenge dialog. */
.launch-actions{display:flex;justify-content:center;align-items:stretch;gap:10px;margin:16px auto 0;max-width:500px}
.launch-actions > button{flex:1 1 0;min-width:0;min-height:52px;margin:0;font:900 19px/1 'Barlow Condensed',Impact,sans-serif;letter-spacing:.6px;border-radius:8px;cursor:pointer;white-space:nowrap;transition:background-color .15s}
.launch-actions .start-btn{padding:13px 12px}
.launch-actions .daily-menu-button{background:#29463a;color:#e5f7cf;border:1px solid #77945e;box-shadow:0 5px 0 #172f24;padding:13px 10px}
.launch-actions .daily-menu-button:hover{background:#365944}
.launch-actions button:focus-visible,.daily-actions button:focus-visible{outline:3px solid #edff98;outline-offset:3px}
.overlay-box:has(#runResults:not([hidden])) .daily-menu-button{display:none}
.overlay-box:has(#runResults:not([hidden])) .launch-actions{max-width:220px;margin-top:7px}
.overlay-box:has(#runResults:not([hidden])) .launch-actions #start{flex:1}
.daily-panel{width:min(540px,96vw);max-height:calc(100dvh - 22px);overflow-y:auto}
.daily-panel .settings-heading{margin-bottom:11px}
.daily-panel .settings-heading h2{font-size:34px;line-height:1.05;margin:5px 0 0}
.daily-intro{color:#bcd4bb;font-size:12px;line-height:1.5;margin:0 0 13px;min-height:19px}
.daily-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}
.daily-facts>div{background:#243d32;border:1px solid #47664d;border-radius:8px;padding:11px 10px;display:flex;flex-direction:column;gap:8px;min-width:0}
.daily-facts small{font-size:9px;color:#aac4b0;font-weight:900;letter-spacing:.8px;white-space:nowrap}
.daily-facts small span{letter-spacing:0;color:#8ca898}
.daily-facts strong{color:#e3ff83;font:800 21px/1.1 'Barlow Condensed',Impact,sans-serif;letter-spacing:.3px;font-variant-numeric:tabular-nums}
.daily-rule{font-size:12px;color:#c2d8c5;line-height:1.5;margin:0 0 18px}
.daily-actions{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:10px;align-items:stretch}
.daily-actions button{min-height:50px;width:100%;border-radius:8px;cursor:pointer;font:900 18px/1 'Barlow Condensed',Impact,sans-serif;letter-spacing:.6px;white-space:nowrap}
.daily-actions .daily-go{padding:12px 10px;box-shadow:0 4px 0 #98af49}
.daily-actions .daily-go:disabled{opacity:.5;cursor:wait}
.daily-actions .daily-view{background:#29463a;color:#e5f7cf;border:1px solid #77945e;box-shadow:0 4px 0 #172f24}
.daily-actions .daily-view:hover{background:#365944}
.lb-tabs{gap:5px}.lb-tabs button{font-size:11px;padding:9px 4px}
@media(max-width:600px){.launch-actions{max-width:100%;gap:7px;margin-top:10px}.launch-actions>button{font-size:clamp(12px,3.3vw,17px);min-height:43px}.launch-actions .start-btn,.launch-actions .daily-menu-button{padding:10px 5px}.daily-panel{padding:18px}.daily-panel .settings-heading h2{font-size:29px}.daily-facts strong{font-size:18px}.daily-facts>div{padding:9px 6px}.daily-facts small{font-size:8px;letter-spacing:.2px}.daily-actions button{font-size:clamp(13px,3vw,17px)}}
@media(max-height:650px) and (orientation:landscape) and (pointer:coarse){.daily-panel{padding:12px 18px;max-height:96dvh}.daily-panel .settings-heading{margin-bottom:5px}.daily-panel .settings-heading h2{font-size:25px}.daily-intro{font-size:10px;margin-bottom:8px}.daily-facts{gap:6px;margin-bottom:8px}.daily-facts>div{padding:6px;gap:3px}.daily-facts strong{font-size:17px}.daily-rule{font-size:10px;margin-bottom:10px}.daily-actions button{min-height:38px;font-size:14px}.daily-actions .daily-go{padding:8px}.launch-actions{margin-top:8px}}

/* Volt & Turf v1.5: Garage styling reuses the game's established visual language. */
.launch-actions { max-width:650px; }
.launch-actions .garage-menu-button{background:#29463a;color:#e5f7cf;border:1px solid #77945e;box-shadow:0 5px 0 #172f24;padding:13px 10px}
.launch-actions .garage-menu-button:hover{background:#365944}
.overlay-box:has(#runResults:not([hidden])) .garage-menu-button{display:none}
.garage-panel{width:min(640px,100%);max-height:94dvh;overflow:auto;overscroll-behavior:contain}
.garage-wallet{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#294738;border:1px solid #6b8c61;border-radius:9px;padding:12px 15px;margin-bottom:10px;font-weight:900;color:#d6f5a9;letter-spacing:.5px}
.garage-wallet strong{font:900 30px 'Barlow Condensed',Impact,sans-serif;color:#e4fa6b}
.garage-note{color:#b5ceb9;font-size:12px;line-height:1.5;margin:0 0 13px}
.garage-upgrades{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.garage-item{border:1px solid #53745e;border-radius:10px;background:#254034;padding:13px;display:flex;flex-direction:column;gap:7px;min-width:0}
.garage-item h3{margin:0;font:900 21px 'Barlow Condensed',Impact,sans-serif;color:#f0f6e9}
.garage-item p{margin:0;font-size:11px;color:#bbd1bb;line-height:1.4;flex:1}
.garage-item small{color:#daf78b;font-size:11px;font-weight:800}
.garage-item button{border:1px solid #79975b;background:#dafa64;color:#173024;border-radius:6px;padding:10px;font-size:12px;font-weight:900;cursor:pointer;min-height:39px}
.garage-item button:disabled{cursor:not-allowed;opacity:.45;background:#66786b;color:#edf6e9}
.garage-feedback{min-height:18px;margin:12px 0 0;color:#dafa64;font-size:12px;font-weight:800}
@media(max-width:530px){.garage-upgrades{grid-template-columns:1fr}.garage-panel{padding:15px}.garage-item{padding:9px}.garage-item h3{font-size:18px}.launch-actions{gap:5px}.launch-actions>button{font-size:clamp(11px,2.8vw,16px)}}
@media(max-height:530px) and (orientation:landscape){.garage-panel{max-height:94dvh}.garage-upgrades{grid-template-columns:1fr 1fr}.garage-item{padding:8px;gap:5px}.garage-item button{min-height:32px;padding:5px}.garage-panel .settings-heading{margin-bottom:8px}.garage-panel .settings-heading h2{font-size:25px}}

/* v1.5.1: purpose-made icons in each garage upgrade card. */
.garage-item-heading{display:flex;align-items:center;gap:10px;min-height:36px}
.garage-upgrade-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;border:1px solid #7b965b;border-radius:8px;background:#345542;color:#dbf86b}
.garage-upgrade-icon svg{width:23px;height:23px;display:block}
@media(max-height:530px) and (orientation:landscape){.garage-item-heading{min-height:30px;gap:7px}.garage-upgrade-icon{width:30px;height:30px}.garage-upgrade-icon svg{width:20px;height:20px}}

/* v1.5.2 — Compact run rewards: clear total plus exact credit breakdown. */
.run-credit-panel{margin:7px auto 8px;padding:9px 11px;background:#274435;border:1px solid #668653;border-radius:9px;color:#e9f4dc;text-align:left}
.run-credit-head{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;font-weight:900;letter-spacing:.35px;color:#d9f7a3}
.run-credit-earned{color:#e5ff72;font:900 23px/1 'Barlow Condensed',Impact,sans-serif;font-variant-numeric:tabular-nums}
.run-credit-breakdown{display:flex;flex-wrap:wrap;column-gap:9px;row-gap:3px;margin:6px 0 4px;font-size:10px;color:#d7e8d1;line-height:1.3}
.run-credit-breakdown span{white-space:nowrap}
.run-credit-note{color:#a9cbb4;font-size:9px;font-weight:750;letter-spacing:.15px}
@media (max-height:650px) and (orientation:landscape) and (pointer:coarse){.run-credit-panel{padding:5px 9px;margin:4px auto}.run-credit-head{font-size:10px}.run-credit-earned{font-size:18px}.run-credit-breakdown{font-size:9px;margin:3px 0 2px;gap:2px 7px}.run-credit-note{font-size:8px}}

/* v1.5.3: Onboarding guide link; respects existing overlay layout. */
.game-guide-link{display:inline-flex;align-items:center;justify-content:center;color:#daf66e;border:1px solid #567c58;border-radius:7px;background:#1e382f;text-decoration:none;padding:8px 12px;font-size:10px;font-weight:900;letter-spacing:.5px;margin-top:10px;max-width:100%}.game-guide-link:hover,.game-guide-link:focus-visible{background:#335443;outline:2px solid #daf66e;outline-offset:2px}@media(max-width:850px){.game-guide-link{margin-top:6px;padding:6px 8px;font-size:9px}}

/* v1.6: neighborhood selector follows the existing green/lime arcade styling. */
.district-choice-bar{display:flex;justify-content:center;align-items:center;gap:9px;margin:12px 0 -4px;flex-wrap:wrap}
.district-choice-bar span{font-size:10px;letter-spacing:1.2px;font-weight:900;color:#9cc4a3}
.district-choice-bar button{background:#284337;border:1px solid #7b985e;border-radius:7px;color:#dafa64;font:900 15px 'Barlow Condensed',Impact,sans-serif;padding:8px 13px;cursor:pointer}
.district-choice-bar button:hover{background:#365a43}
.overlay-box:has(#runResults:not([hidden])) .district-choice-bar{display:none}
.districts-panel{width:min(790px,100%);max-height:min(92dvh,780px);overflow-y:auto}
.district-intro{color:#bed4c1;font-size:12px;line-height:1.5;margin:0 0 16px}
.district-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.district-card{border:1px solid #506b53;border-radius:11px;background:#233f34;overflow:hidden;min-width:0;display:grid;grid-template-columns:105px 1fr;min-height:170px}
.district-current{border-color:#dafa64;box-shadow:inset 0 0 0 1px #c4eb75}
.district-locked{opacity:.7}
.district-scene{position:relative;overflow:hidden;min-height:100%;background:#71a15d}
.district-scene span{position:absolute;display:block}
.scene-lawn{left:8%;right:8%;top:36%;bottom:24%;background:repeating-linear-gradient(90deg,#91bb68 0 13px,#79a95b 13px 26px);border:4px solid #367341;border-radius:3px}
.scene-road{left:0;right:0;bottom:0;height:21%;background:#506265;border-top:4px solid #d5d8aa}
.scene-road:after{content:'';position:absolute;top:50%;left:8%;right:8%;border-top:2px dashed #d7c9a2}
.scene-house{left:16%;top:6%;width:68%;height:37%;background:#db9771;border-radius:3px;border-top:7px solid #3d514f;box-shadow:inset 14px 13px 0 -5px #b3dbe2,inset -14px 13px 0 -5px #a7d5db}
.scene-sun{top:8%;right:6%;width:18px;height:18px;border-radius:50%;background:#e6e9ad}
.scene-detail{bottom:29%;left:23%;width:33px;height:18px;background:#d2e7a9;border-radius:4px}
.scene-flowers .scene-lawn{background:repeating-linear-gradient(90deg,#89bb62 0 13px,#7fac57 13px 26px)}
.scene-flowers .scene-detail{background:radial-gradient(circle at 20% 50%,#ffe6a1 0 3px,transparent 4px),radial-gradient(circle at 65% 45%,#f5a5ad 0 4px,transparent 5px),#547b40;border-radius:8px}
.scene-pool .scene-detail{background:#5db2bd;border:3px solid #d6decb;width:38px;height:27px;bottom:30%}
.scene-city{background:#829b6c}.scene-city .scene-house{background:#bc8ca6}.scene-city .scene-detail{background:#c8a47d;width:40px;height:22px}
.scene-hill{background:#8fa76b}.scene-hill .scene-house{background:#b7a87a}.scene-hill .scene-detail{background:#6c8c3e;border:3px dotted #e9d88d;width:40px;height:30px}
.district-info{padding:10px;display:flex;flex-direction:column;gap:3px;min-width:0}
.district-info small{color:#dafa64;font-weight:900;font-size:9px;letter-spacing:.7px}
.district-info h3{font:900 22px/1.05 'Barlow Condensed',Impact,sans-serif;color:#f4f9e9;margin:3px 0}
.district-info p{font-size:11px;color:#d1e2cd;margin:0}
.district-feature,.district-best{font-size:10px;color:#a9c6a9}
.district-select{margin-top:auto;background:#dafa64;color:#1a3426;border:0;border-radius:5px;min-height:33px;font:900 12px 'Barlow Condensed',Impact,sans-serif;cursor:pointer}
.district-select:disabled{background:#536b55;color:#e4f1d3;cursor:default}
.district-unlock-note{text-align:center;color:#dafa64;font:900 20px 'Barlow Condensed',Impact,sans-serif;border:1px solid #8aa955;border-radius:8px;padding:9px;margin-top:10px;background:#274638}
@media(max-width:620px){.district-cards{grid-template-columns:1fr}.district-card{min-height:116px}.districts-panel{padding:14px}.district-info h3{font-size:19px}}
@media(max-height:520px) and (orientation:landscape){.districts-panel{max-height:96dvh;padding:10px 15px}.districts-panel .settings-heading{margin-bottom:5px}.districts-panel .settings-heading h2{font-size:26px}.district-intro{font-size:10px;margin:0 0 8px}.district-card{min-height:125px}.district-info{gap:1px;padding:7px}.district-scene{min-height:125px}}


/* v1.6.1 — Polished, cache-busted neighborhood selector.
   Visually consistent with Garage and Daily Challenge buttons. */
.public-play .overlay-box .district-choice-bar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  width:min(552px,100%);
  max-width:100%;
  min-height:48px;
  gap:12px;
  margin:13px auto 14px;
  padding:7px 9px 7px 16px;
  background:#233d34;
  border:1px solid #506e53;
  border-radius:9px;
  flex-wrap:nowrap;
}
.public-play .overlay-box .district-choice-label {
  font:800 11px/1.1 'DM Sans',Arial,sans-serif;
  color:#b9d2bb;
  letter-spacing:1.3px;
  white-space:nowrap;
}
.public-play .overlay-box .district-choice-button {
  appearance:none;
  -webkit-appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:#304e3e;
  border:1px solid #79965d;
  border-radius:7px;
  color:#e8f7bc;
  font:900 17px/1 'Barlow Condensed',Impact,sans-serif;
  letter-spacing:.6px;
  min-width:190px;
  min-height:38px;
  padding:9px 18px;
  box-shadow:0 3px 0 #152e25;
  cursor:pointer;
  white-space:nowrap;
}
.public-play .overlay-box .district-choice-button:hover {background:#3b5e49;color:#dafa64;}
.public-play .overlay-box .district-choice-button:focus-visible {outline:3px solid #dafa64;outline-offset:2px;}
.public-play .overlay-box:has(#runResults:not([hidden])) .district-choice-bar {display:none;}
@media (max-width:620px) {
  .public-play .overlay-box .district-choice-bar{padding:6px 8px 6px 10px;gap:7px;min-height:40px;margin:9px auto 11px;}
  .public-play .overlay-box .district-choice-label {font-size:9px;letter-spacing:.65px;}
  .public-play .overlay-box .district-choice-button {font-size:14px;min-width:0;min-height:32px;padding:7px 9px;}
}
@media (max-width:360px){
  .public-play .overlay-box .district-choice-label {font-size:8px;letter-spacing:.1px;}
  .public-play .overlay-box .district-choice-button {font-size:12px;padding:6px;}
}
@media(max-height:520px) and (orientation:landscape) and (pointer:coarse){
  .public-play .overlay-box .district-choice-bar{min-height:34px;padding:3px 7px;margin:6px auto 7px;}
  .public-play .overlay-box .district-choice-button{min-height:28px;padding:5px 8px;}
}

/* v1.6.2: consistent arcade demo selector. */
.demo-neighborhood-field{display:grid;gap:8px;margin:14px 0 10px;color:#d9eeac;font-weight:800;font-size:12px;letter-spacing:.09em}.demo-neighborhood-field select{width:100%;min-height:46px;background:#263f34;color:#eaf8d9;border:1px solid #688765;border-radius:8px;padding:10px 13px;font:800 15px "Barlow Condensed",sans-serif;letter-spacing:.04em;cursor:pointer}.demo-neighborhood-field select:focus-visible{outline:2px solid #dafa64;outline-offset:2px}
