:root{--ink:#1f2a1a;--ink-soft:#1f2a1a9e;--panel:#fcfbf5eb;--panel-edge:#1f2a1a1f;--accent:#6a9b32;--warn:#d8802f;--danger:#c9432f;--radius:14px;--font:"Trebuchet MS", "Segoe UI", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;background:#aebc9a;margin:0;overflow:hidden}#app{width:100%;height:100%;position:relative}#game-canvas{touch-action:none;width:100%;height:100%;display:block}#hud{pointer-events:none;flex-direction:column;justify-content:space-between;padding:clamp(12px,2.2vw,24px);display:flex;position:absolute;inset:0}#hud[hidden]{display:none}#hud-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}#level-line{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--radius);align-items:baseline;gap:10px;padding:8px 14px;display:flex;box-shadow:0 6px 18px #1f2a1a1f}#level-index{letter-spacing:.08em;color:var(--ink-soft);font-size:.82rem;font-weight:700}#level-name{font-size:1.02rem;font-weight:700}#pattern-chip{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--radius);align-items:center;gap:10px;padding:8px 14px;font-size:.9rem;font-weight:600;display:flex;box-shadow:0 6px 18px #1f2a1a1f}.pattern-icon{border:1px solid var(--panel-edge);background-color:#d9e6c4;background-size:8px 8px;border-radius:6px;width:26px;height:26px}.pattern-icon.pattern-ns{background-image:repeating-linear-gradient(90deg,#9dbd6a 0 4px,#d9e6c4 4px 8px)}.pattern-icon.pattern-ew{background-image:repeating-linear-gradient(0deg,#9dbd6a 0 4px,#d9e6c4 4px 8px)}.pattern-icon.pattern-cross{background-image:repeating-linear-gradient(90deg,#9dbd6ad9 0 4px,#0000 4px 8px),repeating-linear-gradient(0deg,#9dbd6ad9 0 4px,#0000 4px 8px)}#hud-bottom{justify-content:center;align-items:flex-end;gap:14px;display:flex}#fuel-gauge{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--radius);min-width:min(320px,46vw);padding:10px 14px 8px;box-shadow:0 6px 18px #1f2a1a1f}#fuel-track{background:#1f2a1a1f;border-radius:999px;height:12px;overflow:hidden}#fuel-fill{background:var(--accent);transform-origin:0;border-radius:999px;width:100%;height:100%;transition:background-color .22s}#fuel-fill.is-low{background:var(--warn)}#fuel-fill.is-critical{background:var(--danger)}#fuel-label{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-top:5px;font-size:.72rem;font-weight:700;display:block}#coverage-readout{background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--radius);flex-direction:column;align-items:center;min-width:92px;padding:8px 16px;display:flex;box-shadow:0 6px 18px #1f2a1a1f}#coverage-value{font-size:1.32rem;font-weight:800;line-height:1.1}#coverage-readout span{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:.7rem;font-weight:700}#overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#1820146b;place-items:center;display:grid;position:absolute;inset:0}#overlay[hidden]{display:none}#overlay-card{background:var(--panel);border:1px solid var(--panel-edge);text-align:center;border-radius:20px;width:min(460px,88vw);padding:clamp(20px,3vw,34px);box-shadow:0 24px 60px #141c1047}#overlay-card h1{margin:0 0 6px;font-size:1.5rem}#overlay-card h2{margin:0 0 2px;font-size:1.18rem}#overlay-card p{color:var(--ink-soft);margin:0 0 16px;font-size:.95rem;line-height:1.5}.grade-stamp{color:var(--accent);margin:6px 0 10px;font-size:4.2rem;font-weight:900;line-height:1}.grade-stamp.is-fail{color:var(--danger)}.result-rows{text-align:left;gap:6px;margin:0 0 18px;display:grid}.result-row{background:#1f2a1a0f;border-radius:8px;justify-content:space-between;padding:6px 10px;font-size:.92rem;display:flex}.result-row strong{font-variant-numeric:tabular-nums}.result-row.is-miss strong{color:var(--danger)}.key-hints{color:var(--ink-soft);flex-wrap:wrap;justify-content:center;gap:8px;font-size:.84rem;display:flex}.key-hints kbd{font-family:var(--font);color:var(--ink);background:#1f2a1a1a;border-radius:6px;padding:3px 7px;font-weight:700}.controls-grid{text-align:left;grid-template-columns:auto 1fr;gap:6px 14px;margin:0 0 18px;font-size:.9rem;display:grid}.controls-grid dt{font-weight:700}.controls-grid dd{color:var(--ink-soft);margin:0}.is-lowspec #title-screen,.is-lowspec #overlay{-webkit-backdrop-filter:none;backdrop-filter:none}#loading{color:var(--ink-soft);place-items:center;font-weight:700;display:grid;position:absolute;inset:0}#title-screen{overscroll-behavior:contain;background:linear-gradient(#10180e99 0%,#10180e00 24%),linear-gradient(#10180e00 66%,#10180eb8 100%),linear-gradient(90deg,#10180e99 0%,#10180e00 52%);grid-template-rows:auto 1fr auto;display:grid;position:absolute;inset:0;overflow-y:auto}#title-screen[hidden]{display:none}.title-nav{justify-content:space-between;align-items:center;gap:16px;padding:clamp(14px,2.4vw,22px) clamp(16px,3.4vw,40px);display:flex}.nav-mark{color:#f2f7e6;text-shadow:0 2px 10px #0a1008b3;align-items:center;gap:10px;font-size:1.02rem;font-weight:900;display:flex}.nav-stripes{background:repeating-linear-gradient(90deg,#8fc44a 0 4px,#4d7a26 4px 8px);border-radius:5px;width:22px;height:22px;display:block}.nav-links{align-items:center;gap:8px;display:flex}.nav-link{font-family:var(--font);letter-spacing:.06em;text-transform:uppercase;color:#eaf2da;cursor:pointer;background:#141e1080;border:1px solid #e9f4d647;border-radius:999px;padding:9px 18px;font-size:.86rem;font-weight:800;text-decoration:none;transition:background-color .13s,border-color .13s}.nav-link:hover{background:#6a9b328c;border-color:#e9f4d68c}.title-hero{align-self:center;max-width:min(620px,58vw);padding:0 clamp(16px,3.4vw,40px)}.title-hero h1{letter-spacing:-.045em;color:#f4fae7;text-transform:lowercase;text-shadow:0 3px #33501c,0 7px #22380f,0 18px 42px #080e06b8;margin:0;font-size:clamp(3.6rem,12vw,8.4rem);line-height:.86}.title-hero .tagline{color:#dfe9cd;text-shadow:0 2px 14px #0a1008d9;max-width:34ch;margin:20px 0 0;font-size:clamp(.98rem,1.5vw,1.14rem);line-height:1.55}.hero-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:28px;display:flex}.start-button{font-family:var(--font);letter-spacing:.06em;text-transform:uppercase;color:#f7fcee;background:var(--accent);cursor:pointer;border:none;border-radius:999px;padding:16px 40px;font-size:1.12rem;font-weight:900;transition:transform .12s,box-shadow .12s;box-shadow:0 6px #47701d,0 14px 30px #080e0673}.start-button:hover{transform:translateY(-2px);box-shadow:0 8px #47701d,0 18px 34px #080e0680}.start-button:active{transform:translateY(4px);box-shadow:0 2px #47701d,0 8px 18px #080e0673}.ghost-button{font-family:var(--font);letter-spacing:.06em;text-transform:uppercase;color:#eef5e0;cursor:pointer;background:#141e1073;border:1.5px solid #eef5e080;border-radius:999px;padding:14px 26px;font-size:.92rem;font-weight:800;text-decoration:none;transition:background-color .13s,transform .12s}.ghost-button:hover{background:#141e10b8;transform:translateY(-2px)}.start-hint{color:#e2ecd1c7;text-shadow:0 2px 10px #0a1008cc;margin:16px 0 0;font-size:.82rem}.start-hint .key-cap{color:#f2f7e6;background:#f0f6e429;border-color:#f0f6e466}.key-cap{text-align:center;background:#f2f0e6;border:1px solid #1f2a1a38;border-bottom-width:3px;border-radius:6px;min-width:24px;padding:2px 7px;font-size:.78rem;font-weight:800;display:inline-block}.yard-strip{padding:0 clamp(16px,3.4vw,40px) clamp(16px,3vw,30px)}.yard-strip h2{letter-spacing:.24em;text-transform:uppercase;color:#e2ecd1b8;text-shadow:0 2px 10px #0a1008cc;margin:0 0 10px;font-size:.74rem}.yard-list{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.yard-row{text-align:left;font-family:var(--font);color:#eef5e0;cursor:pointer;background:#121b0e9e;border:1px solid #eef5e033;border-radius:13px;gap:5px;padding:12px 14px;transition:background-color .13s,border-color .13s,transform .12s;display:grid}.yard-row:hover:not(:disabled){background:#6a9b3280;border-color:#eef5e080;transform:translateY(-2px)}.yard-row:disabled{cursor:default;opacity:.42}.yard-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.yard-number{letter-spacing:.16em;color:#eef5e0ad;font-size:.7rem;font-weight:800}.yard-grade{color:#b8e070;font-size:1.06rem;font-weight:900}.yard-grade.is-locked,.yard-grade.is-unplayed{color:#eef5e080;letter-spacing:.1em;text-transform:uppercase;font-size:.74rem;font-weight:700}.yard-name{font-size:.98rem;font-weight:800}.yard-pattern{color:#eef5e0b8;align-items:center;gap:7px;font-size:.76rem;display:flex}@media (width<=900px){#title-screen{background:linear-gradient(#10180ea8 0%,#10180e47 40%),linear-gradient(#10180e29 55%,#10180ecc 100%)}.title-hero{text-align:center;max-width:100%}.title-hero .tagline{margin-left:auto;margin-right:auto}.hero-actions{justify-content:center}}#hud-top-right{align-items:center;gap:10px;display:flex}.hud-icon-button{pointer-events:auto;width:42px;height:42px;color:var(--ink);background:var(--panel);border:1px solid var(--panel-edge);border-radius:var(--radius);cursor:pointer;place-items:center;padding:0;transition:transform .13s,background-color .13s;display:grid;box-shadow:0 6px 18px #1f2a1a1f}.hud-icon-button svg{width:22px;height:22px}.hud-icon-button:hover{background:#fffef8}#settings-button:hover{transform:rotate(35deg)}#mute-button .icon-muted,#mute-button[aria-pressed=true] .icon-unmuted{display:none}#mute-button[aria-pressed=true] .icon-muted{display:block}#mute-button[aria-pressed=true]{color:var(--ink-soft)}.dialog-actions{gap:9px;margin:4px 0 16px;display:grid}.dialog-action{width:100%;font-family:var(--font);color:var(--ink);text-align:left;cursor:pointer;background:#1f2a1a0f;border:1px solid #0000;border-radius:11px;justify-content:space-between;align-items:center;gap:12px;padding:12px 15px;font-size:.96rem;font-weight:700;text-decoration:none;transition:background-color .12s,border-color .12s;display:flex}.dialog-action:hover{background:#6a9b3229;border-color:#6a9b3280}.action-key{letter-spacing:.08em;color:var(--ink-soft);font-size:.76rem;font-weight:800}.dialog-action.is-primary{background:var(--accent);color:#f7fcee}.dialog-action.is-primary .action-key{color:#f7fceecc}.dialog-action.is-primary:hover{background:#5d8a2b}
