.eg-shell{max-width:980px;margin:0 auto;color:var(--ink)}
.eg-campaign-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 12px}
.eg-campaign-copy{display:grid;gap:3px;min-width:0}
.eg-campaign-copy strong{font-size:clamp(1.2rem,4vw,1.7rem);letter-spacing:-.02em}
.eg-campaign-copy span:last-child{color:var(--muted);font-size:.92rem;line-height:1.5}
.eg-kicker{font-family:"DM Mono",monospace;text-transform:uppercase;letter-spacing:.09em;font-size:.7rem;color:var(--muted)}
.eg-status{flex:0 0 auto;border:1.5px solid var(--line-strong);border-radius:999px;padding:8px 13px;font:700 .72rem "DM Mono",monospace;letter-spacing:.06em;background:var(--paper);color:var(--ink)}
.eg-status.is-good{border-color:var(--teal);background:var(--card)}
.eg-status.is-warn{border-style:dashed}
.eg-status.is-bad{border-width:2px}
.eg-controls-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap;scroll-margin-top:96px}
.eg-controls-spacer{flex:1 1 auto}
.eg-level-open{min-height:44px;border:1.5px solid var(--line-strong);border-radius:12px;background:var(--paper);color:var(--ink);padding:9px 14px;font-weight:800;cursor:pointer}
.eg-level-now{font:500 .78rem "DM Mono",monospace;color:var(--muted)}
.eg-seg{display:flex;border:1.5px solid var(--line-strong);border-radius:12px;overflow:hidden;background:var(--paper)}
.eg-seg button{min-height:44px;min-width:44px;border:0;border-right:1.5px solid var(--line-strong);background:transparent;color:var(--ink);padding:9px 12px;font-weight:800;cursor:pointer}
.eg-seg button:last-child{border-right:0}
.eg-seg button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.eg-settings-toggle{min-height:44px;min-width:44px;border:1.5px solid var(--line-strong);border-radius:12px;background:var(--paper);color:var(--ink);padding:9px 14px;font-weight:800;cursor:pointer}
.eg-settings{display:grid;gap:10px;margin-bottom:12px;padding:14px;border:1.5px solid var(--line);border-radius:16px;background:var(--card)}
.eg-settings[hidden]{display:none}
.eg-settings-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.eg-settings-label{font:700 .78rem "DM Mono",monospace;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);min-width:96px}
.eg-settings .eg-btn{min-height:44px}
.eg-level-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px;padding:12px;border:1.5px solid var(--line);border-radius:16px;background:var(--card)}
.eg-level-card{min-height:72px;display:grid;grid-template-columns:30px minmax(0,1fr);grid-template-rows:auto auto;text-align:left;gap:2px 8px;border:1.5px solid var(--line);border-radius:12px;background:var(--paper);padding:10px;color:var(--ink);cursor:pointer}
.eg-level-card b{grid-row:1/3;align-self:center;font:800 1rem "DM Mono",monospace}
.eg-level-card span{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.eg-level-card small{color:var(--muted);font:500 .68rem "DM Mono",monospace}
.eg-level-card.is-current{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.eg-level-card:disabled{opacity:.45;cursor:not-allowed}
.eg-stage{scroll-margin-top:84px;background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);padding:clamp(12px,3vw,20px);box-shadow:0 2px 0 var(--line);min-width:0}
.eg-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}
.eg-btn,.eg-tool{min-height:44px;border:1.5px solid var(--line-strong);border-radius:12px;background:var(--paper);color:var(--ink);padding:9px 13px;font-weight:800;cursor:pointer;touch-action:manipulation}
.eg-tool[aria-pressed="true"],.eg-btn.is-primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.eg-btn:disabled,.eg-tool:disabled{opacity:.45;cursor:not-allowed}
.eg-canvas-wrap{position:relative;border:1.5px solid var(--line-strong);border-radius:16px;overflow:hidden;background:var(--paper);min-width:0}
.eg-canvas-wrap canvas{display:block;width:100%;height:auto;max-width:100%;touch-action:none;-webkit-touch-callout:none}
.eg-hud{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0;padding:7px 9px;border-top:1.5px solid var(--line);background:var(--paper)}
.eg-hud-chip{display:inline-grid;grid-auto-flow:column;align-items:baseline;gap:6px;border:1.5px solid var(--line);border-radius:10px;padding:4px 9px;background:var(--card)}
.eg-hud-chip small{color:var(--muted);font-size:.6rem;text-transform:uppercase;letter-spacing:.07em}
.eg-hud-chip b{font:700 .78rem "DM Mono",monospace;color:var(--ink)}
.eg-hud-chip.eg-hud-mobile{display:none}
.eg-hud.is-compact .eg-hud-chip.eg-hud-mobile{display:inline-grid}
.eg-chip{display:inline-grid;gap:1px;min-width:84px;border:1.5px solid var(--line);border-radius:12px;padding:8px 11px;background:var(--paper)}
.eg-chip b{font:800 .96rem "DM Mono",monospace}
.eg-chip small{color:var(--muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.06em}
.eg-objective{margin:0 0 10px;padding:12px 14px;border:1.5px dashed var(--line-strong);border-radius:14px;background:var(--paper);line-height:1.55}
.eg-objective strong{display:block;margin-bottom:3px}
.eg-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:10px 0}
.eg-field{display:grid;gap:6px;padding:10px;border:1.5px solid var(--line);border-radius:12px;background:var(--paper)}
.eg-field label{font-weight:800;font-size:.82rem}
.eg-field output,.eg-field small{color:var(--muted);font:500 .72rem "DM Mono",monospace}
.eg-field input[type="range"]{width:100%;min-height:32px}
.eg-field select{min-height:44px;border:1.5px solid var(--line-strong);border-radius:10px;background:var(--card);color:var(--ink);font:inherit;padding:8px}
.eg-result{margin-top:16px;border:1.5px solid var(--ink);border-radius:var(--radius);padding:clamp(16px,4vw,24px);background:var(--card);box-shadow:0 3px 0 var(--ink)}
.eg-result-top{display:flex;gap:12px;align-items:flex-start}
.eg-result-icon{width:38px;height:38px;border:2px solid var(--ink);border-radius:50%;display:grid;place-items:center;font-weight:900;flex:0 0 auto}
.eg-result h3{margin:2px 0 4px;font-size:1.35rem}
.eg-stars{font-size:1.1rem;letter-spacing:.1em}
.eg-result-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0}
.eg-result-metrics span{display:grid;gap:3px;padding:10px;border:1.5px solid var(--line);border-radius:12px;background:var(--paper)}
.eg-result-metrics b{font:800 .9rem "DM Mono",monospace}
.eg-result-metrics small{color:var(--muted);font-size:.72rem}
.eg-result p{line-height:1.65}
.eg-result-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.eg-grid-editor{display:grid;gap:4px;touch-action:manipulation}
.eg-grid-cell{min-height:44px;border:1.5px solid var(--line);background:var(--paper);border-radius:8px;color:var(--ink);font-size:.72rem;cursor:pointer}
.eg-grid-cell.is-on{background:var(--ink);color:var(--paper)}
.eg-panel-row{display:grid;grid-template-columns:1.2fr .8fr;gap:12px}
.eg-mini-card{border:1.5px solid var(--line);border-radius:14px;background:var(--paper);padding:12px}
.eg-mini-card h3{margin:0 0 8px;font-size:1rem}
.eg-warning{padding:9px 12px;border:1.5px dashed var(--line-strong);border-radius:12px;font-size:.86rem;background:var(--paper)}
@media(max-width:700px){
 .eg-level-panel{grid-template-columns:repeat(2,minmax(0,1fr))}
 .eg-panel-row,.eg-form{grid-template-columns:1fr}
 .eg-result-metrics{grid-template-columns:1fr 1fr}
 .eg-campaign-head{align-items:flex-start}
 .eg-controls-spacer{flex-basis:100%;height:0}
 .eg-difficulty{flex:1 1 auto}
 .eg-difficulty button{flex:1}
}
@media(max-width:390px){
 .eg-level-panel{grid-template-columns:1fr}
 .eg-result-metrics{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){
 .eg-shell *{scroll-behavior:auto!important;transition:none!important;animation:none!important}
}
html[data-motion="reduced"] .eg-shell *{scroll-behavior:auto!important;transition:none!important;animation:none!important}
/* Keep play in the foreground; HUD values are readings, not separate cards. */
.eg-stage{background:var(--paper);box-shadow:none}
.eg-objective{border:0;border-left:3px solid var(--ink);border-radius:0;padding:8px 12px;background:transparent;margin-bottom:12px}
.eg-objective strong{font-size:1.15rem}
.eg-warning{border:0;border-radius:0;background:transparent;padding:6px 0 12px;line-height:1.5;color:var(--muted)}
.eg-hud{gap:0;border-block:1px solid var(--line);margin:12px 0}
.eg-chip{flex:1;border:0;border-radius:0;background:transparent;min-width:90px;padding:10px}
.eg-chip small{font-size:.72rem}
.eg-field{border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:10px 0}
.eg-field input[type="range"]{min-height:44px;accent-color:var(--ink)}
.eg-field.is-locked{display:none}
.eg-canvas-wrap{border-radius:12px}
.eg-canvas-wrap canvas{user-select:none;-webkit-user-select:none}
.eg-shell :is(button,input,select,canvas):focus-visible{outline:3px solid var(--ink);outline-offset:4px}
.eg-result.is-success{border-top:6px solid var(--teal)}
.eg-result.is-fail{border-top:6px solid var(--ink)}
.eg-level-card span{white-space:normal}
@media(max-width:700px){
 #play>.shell{width:100%;padding-inline:12px}
 .eg-stage{padding:10px 8px}
 .eg-canvas-wrap{margin-inline:-8px;border-inline:0;border-radius:0}
 .eg-toolbar{gap:6px}
 .eg-btn{padding-inline:10px}
 .eg-campaign-copy>span:last-child{display:none}
 .eg-result{scroll-margin-top:80px}
}
.eg-field{min-width:0}
.eg-field select{min-width:0;max-width:100%;width:100%}
@media(max-width:700px){
 .eg-form{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:16px}
 .eg-field:has(select){grid-column:1/-1}
 .eg-result-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* --- Foundation 2: replay transport, tutorial overlay, dashboard wrap --- */
.eg-car-picker{display:grid;gap:8px;margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--card);min-width:0}
.eg-car-picker>strong{font-size:1rem}
.eg-car-tabs{display:flex;gap:6px;flex-wrap:wrap}
.eg-car-tabs button{min-height:44px;padding:8px 10px;border:1px solid var(--line-strong);border-radius:10px;background:var(--paper);color:var(--ink);cursor:pointer;font-weight:700}
.eg-car-tabs button[aria-pressed=true]{background:var(--ink);color:var(--paper)}
.eg-car-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:8px;max-height:280px;overflow-y:auto;overscroll-behavior:contain}
.eg-car-card{min-height:112px;padding:6px;display:grid;gap:3px;text-align:left;align-content:start;grid-template-rows:60px 2.2em auto;border:2px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);cursor:pointer}
.eg-car-card canvas{width:100%;height:60px;object-fit:contain;border-radius:6px}
.eg-car-card strong{font-size:.82rem;line-height:1.25;min-height:2.2em;max-height:2.2em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.eg-car-card small{font-size:.7rem;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eg-car-card[aria-pressed=true]{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}
.eg-car-card:focus-visible,.eg-car-tabs button:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
.eg-car-summary{font-size:.8rem;color:var(--muted);line-height:1.5}
@media(max-width:390px){.eg-car-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.eg-factory-goal{display:grid;gap:8px;border:2px solid var(--teal);border-radius:14px;padding:14px;margin:12px 0;background:var(--paper)}
.eg-factory-goal strong{font-size:1.05rem}.eg-factory-goal span{font-size:.9rem;color:var(--ink)}
.eg-factory-goal progress{width:100%;height:20px;accent-color:var(--teal)}
.eg-grid-event{border:2px solid #ae693c;border-radius:12px;padding:12px;font-weight:800;background:var(--paper);color:var(--ink)}
.eg-grid-event[hidden]{display:none}
.eg-replay{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0;padding:10px;border:1.5px solid var(--line);border-radius:14px;background:var(--card)}
.eg-replay-btn{min-height:44px;min-width:44px;font:700 .82rem "DM Mono",monospace}
.eg-replay-scrub{flex:1;min-width:120px;min-height:44px;accent-color:var(--ink)}
.eg-replay-time{font:500 .82rem "DM Mono",monospace;color:var(--muted);min-width:64px;text-align:right}
.eg-tutorial-toggle{min-height:44px;min-width:44px;border:1.5px solid var(--line-strong);border-radius:12px;background:var(--paper);color:var(--ink);padding:9px 14px;font-weight:800;cursor:pointer}
.eg-tutorial{position:fixed;inset:0;z-index:120;pointer-events:none}
.eg-tutorial-dim{position:fixed;background:rgba(12,14,18,.55);pointer-events:auto}
html[data-theme="dark"] .eg-tutorial-dim{background:rgba(0,0,0,.65)}
.eg-tutorial-card{position:fixed;z-index:121;pointer-events:auto;max-width:340px;border:1.5px solid var(--ink);border-radius:16px;background:var(--card);color:var(--ink);box-shadow:0 4px 0 var(--ink),0 18px 48px rgba(10,12,16,.28);padding:14px;display:flex;gap:10px}
.eg-tutorial-pip{flex:0 0 56px;width:56px;align-self:flex-start}
.eg-tutorial-pip svg{display:block;width:56px;height:auto}
.eg-tutorial-body{min-width:0}
.eg-tutorial-count{margin:0 0 4px;font:700 .68rem "DM Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.eg-tutorial-title{margin:0 0 4px;font-size:1.02rem}
.eg-tutorial-text{margin:0 0 10px;font-size:.88rem;line-height:1.5;color:var(--ink)}
.eg-tutorial-row{display:flex;gap:8px;flex-wrap:wrap}
.eg-tutorial-row .eg-btn{min-height:44px}
.eg-tutorial-finger{position:fixed;z-index:120;pointer-events:none;user-select:none;font-size:34px;line-height:1;transform:translate(-50%,-50%);filter:drop-shadow(0 2px 2px rgba(0,0,0,.5));animation:eg-tutorial-tap 1.7s ease-in-out infinite}
.eg-tutorial-finger[hidden]{display:none}
.eg-tutorial-finger.is-drag{animation-name:eg-tutorial-drag;animation-duration:2.5s}
@keyframes eg-tutorial-tap{0%,100%{transform:translate(-50%,-50%) scale(1)}45%{transform:translate(-50%,-50%) scale(.77)}}
@keyframes eg-tutorial-drag{0%,15%,100%{transform:translate(-90%,-50%)}70%{transform:translate(-5%,-50%)}}
@media(prefers-reduced-motion:reduce){.eg-tutorial-finger{animation:none!important}}
html[data-motion="reduced"] .eg-tutorial-finger{animation:none!important}
.eg-dashboard-wrap{margin:10px 0;border:1.5px solid var(--line);border-radius:14px;background:var(--card);padding:8px;overflow:hidden}
.eg-dashboard-wrap canvas{display:block;width:100%;height:auto}
@media(max-width:700px){
 .eg-tutorial-card{left:12px!important;right:12px;width:auto!important;max-width:none}
 .eg-replay{gap:6px}
}
@media(prefers-reduced-motion:reduce){
 .eg-tutorial-card{transition:none!important;animation:none!important}
}
.eg-field-hint{display:block;color:var(--muted);font-size:.72rem;margin-top:2px}
.eg-hint{color:var(--muted);font-size:.85rem;margin:6px 0}
.eg-cost.is-over b{color:#b3261e}

/* Setup collapse: once a run starts, the tune form + car picker hide so the
 * game fills the screen (fishing-game pattern). A small toggle brings it back. */
.eg-setup-hidden .eg-setup{display:none!important}
.eg-setup-toggle{font-size:.78rem!important;padding:.3rem .8rem!important;border-radius:999px!important;opacity:.8}
.eg-setup-toggle:hover{opacity:1}
