/* Hallmark · pre-emit critique: P5 H4 E5 S5 R5 V4 */
.navigation-section{--nav-blue:#287ac3;--nav-yellow:#ffc400;--nav-goal:#228465;--nav-goal-fill:rgb(34 132 101 / 14%);--nav-blue-hover:#1f649f;--nav-cyan:#00bce7;--nav-footprint:rgb(0 188 231 / 9%);--nav-red:#ef526a;--nav-line:#d9e1e7;--nav-soft:#f4f7f9;--nav-white:#fff;width:min(1100px,calc(100% - 48px));margin:0 auto 88px;color:var(--ink)}
.navigation-intro{max-width:860px;margin:0 auto 30px}
.navigation-section{--task-blue-soft:#edf5fc;--task-green-soft:#edf7f1;--task-yellow-soft:#fff7da;--task-yellow-ink:#8c6500;--task-blue-ink:#216cae;--task-green-ink:#217650;--task-accent:var(--task-blue-ink);--task-tint:var(--task-blue-soft)}
.navigation-section[data-task=landmark]{--task-accent:var(--task-green-ink);--task-tint:var(--task-green-soft)}
.navigation-section[data-task=route]{--task-accent:var(--task-yellow-ink);--task-tint:var(--task-yellow-soft)}
.navigation-tasks{display:flex;justify-content:center;gap:6px;width:fit-content;max-width:100%;margin:0 auto 24px;padding:5px;background:var(--nav-soft);border:1px solid var(--nav-line);border-radius:12px}
.navigation-task{--task-color:var(--task-blue-ink);--task-background:var(--task-blue-soft);display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;min-width:140px;padding:9px 18px;border:1px solid transparent;border-radius:8px;color:var(--secondary);background:transparent;font-family:var(--font-body);font-size:15px;font-weight:600;white-space:nowrap;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.task-landmark{--task-color:var(--task-green-ink);--task-background:var(--task-green-soft)}
.task-route{--task-color:var(--task-yellow-ink);--task-background:var(--task-yellow-soft)}
.navigation-task svg{width:19px;height:19px;flex:none;fill:none;stroke:var(--task-color);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.navigation-task[aria-pressed=true]{background:var(--task-background);color:var(--task-color);border-color:var(--task-color)}
.navigation-task:hover{background:var(--task-background);color:var(--task-color)}
.navigation-task:active{transform:translateY(1px)}
.navigation-task:focus-visible{outline:2px solid var(--task-color);outline-offset:3px}
.navigation-task:disabled{opacity:.5;cursor:wait}
@media(max-width:520px){.navigation-tasks{width:100%;gap:3px;padding:4px}.navigation-task{flex:1;min-width:0;padding:8px 5px;font-size:13px;gap:5px}.navigation-task svg{width:16px;height:16px}}
.navigation-intro h2{margin:0 0 24px;text-align:center;font-family:var(--font-heading);font-size:32px;font-weight:600;line-height:1.25;letter-spacing:-.5px;overflow-wrap:anywhere}
.navigation-intro p,.navigation-explanation{font-size:17px;line-height:1.8;margin:0}
.navigation-instruction{max-width:860px;margin:0 auto 32px;padding:18px 0;border-block:1px solid var(--nav-line)}
.navigation-instruction>span{display:block;font-size:13px;color:var(--task-accent);font-weight:600;margin-bottom:6px}
.navigation-instruction p{margin:0;font-size:18px;line-height:1.65}
.navigation-views{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:28px;width:100%;max-width:900px;margin:0 auto}
.navigation-views figure{margin:0;min-width:0}
.navigation-views figcaption{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}
.navigation-views h3{margin:0;font-size:18px;line-height:1.4;font-weight:600}
.navigation-views figcaption>span{font-size:13px;color:var(--secondary);text-align:right}
.navigation-image{position:relative;aspect-ratio:1;background:var(--nav-soft);overflow:clip}
.navigation-map img,.navigation-map svg,.navigation-observation canvas{position:absolute;inset:0;display:block;width:100%;height:100%}
.navigation-map img:not([src]){visibility:hidden}
.navigation-map svg{visibility:hidden}
.navigation-section[data-ready] .navigation-map svg{visibility:visible}
.navigation-observation::after{content:"";position:absolute;inset:0;border:2px solid var(--nav-cyan);pointer-events:none}
.navigation-section{--nav-overlay:rgb(255 255 255 / 60%)}
.navigation-north,.navigation-scale{background:var(--nav-overlay)}
.navigation-move-hint{position:absolute;left:50%;top:23%;transform:translate(-50%,-50%);border:2px solid var(--nav-white);border-radius:48px;padding:18px 30px;max-width:88%;background:var(--nav-blue);color:var(--nav-white);font:inherit;font-size:clamp(17px,2.2vw,24px);font-weight:600;white-space:nowrap;cursor:pointer;visibility:hidden;animation:navigation-invite 2.2s ease-in-out infinite}
@keyframes navigation-invite{0%,100%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.08)}}
@media(prefers-reduced-motion:reduce){.navigation-move-hint{animation:none}}
@media(max-width:374px){.navigation-move-hint{padding:14px 20px}}
.navigation-section[data-ready] .navigation-move-hint{visibility:visible}
.navigation-move-hint[hidden]{display:none}
.navigation-move-hint:hover{background:var(--nav-blue-hover)}
.navigation-move-hint:focus-visible{outline:3px solid var(--nav-white);outline-offset:3px}
.navigation-move-hint:active{background:var(--nav-blue-hover)}
.navigation-observation::after{border-width:5px}
.navigation-reference{fill:none;stroke:var(--nav-blue);stroke-width:26;stroke-opacity:.8;stroke-linecap:round;stroke-linejoin:round}
[data-navigation-surface]{cursor:pointer}
[data-navigation-surface]:focus-visible{outline:2px solid var(--focus);outline-offset:5px}
.navigation-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.navigation-trail{fill:none;stroke:var(--nav-yellow);stroke-width:16;stroke-linecap:round;stroke-linejoin:round}
.navigation-footprint{fill:var(--nav-footprint);stroke:var(--nav-cyan);stroke-width:10}
.navigation-start{fill:var(--nav-red);stroke:var(--nav-white);stroke-width:5;stroke-linejoin:round}
.navigation-heading{fill:none;stroke:var(--nav-red);stroke-width:12;stroke-linecap:round;stroke-linejoin:round}
.navigation-agent{fill:var(--nav-red);stroke:var(--nav-white);stroke-width:8}
.navigation-north{position:absolute;top:12px;right:12px;background:var(--nav-overlay);color:var(--ink);padding:4px 9px;font-size:20px;font-weight:600}
.navigation-scale{position:absolute;bottom:12px;left:12px;color:var(--ink);background:var(--nav-overlay);padding:7px 10px 5px;font-size:11px;text-align:center;line-height:1.2;min-width:48px}
.navigation-scale>span{display:block;border:solid var(--ink);border-width:0 1px 2px;height:5px;margin-bottom:3px}
.navigation-view-loading{position:absolute;inset:0;display:grid;place-content:center;color:var(--secondary);font-size:14px;padding:20px;text-align:center}
.navigation-view-loading[hidden]{display:none}
.navigation-caption{font-size:14px;color:var(--secondary);line-height:1.6;margin:12px 0 0}
.navigation-metric-help{max-width:900px;margin:20px auto 0;font-size:14px;line-height:1.7;color:var(--secondary)}
.navigation-metric-help summary{width:fit-content;cursor:pointer;color:var(--ink)}
.navigation-metric-help summary:focus-visible{outline:2px solid var(--focus);outline-offset:4px}
.navigation-metric-help p{margin:10px 0 0}
/* Observation and controls share the compact right column. */
.navigation-right{min-width:0}
@media(min-width:768px){.navigation-observation,.navigation-interaction{width:min(100%,var(--observation-side,100%))}}
.navigation-interaction{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(0,1fr);gap:20px;align-items:start;margin:22px 0 0}
.navigation-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.navigation-actions button{display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid var(--nav-line);border-radius:5px;background:var(--paper);color:var(--ink);padding:10px 5px;min-height:44px;font:inherit;font-size:14px;white-space:nowrap;cursor:pointer;touch-action:manipulation}
.navigation-actions button small{font-size:11px;opacity:.8}
.navigation-actions button[data-action=forward]{grid-column:1 / -1;grid-row:1;background:var(--nav-blue);color:var(--nav-white);border-color:var(--nav-blue)}
.navigation-actions button:hover{background:var(--nav-soft)}
.navigation-actions button[data-action=forward]:hover{background:var(--nav-blue-hover)}
.navigation-actions button:active{transform:translateY(1px)}
.navigation-actions button:disabled{opacity:.45;cursor:default;transform:none}
.navigation-actions button:focus-visible,.navigation-interaction:focus-visible{outline:2px solid var(--focus);outline-offset:4px}
.navigation-results{display:grid;gap:6px;border-left:1px solid var(--nav-line);padding-left:20px;margin:0}
.navigation-results[hidden]{display:none}
.navigation-results>div{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:32px}
.navigation-results span{font-size:12px;color:var(--secondary)}
.navigation-results strong{font-size:22px;font-weight:600;color:var(--nav-blue);font-variant-numeric:tabular-nums}
.navigation-results strong[data-metric=ne]{font-size:16px;white-space:nowrap}
@media(min-width:768px) and (max-width:850px){.navigation-right .navigation-interaction{gap:8px}.navigation-right .navigation-actions button{padding-inline:2px;font-size:11px;gap:2px}.navigation-right .navigation-actions button>span{display:none}.navigation-right .navigation-actions button small{font-size:9px}.navigation-right .navigation-results{padding-left:6px}.navigation-right .navigation-results strong{font-size:14px}.navigation-right .navigation-results strong[data-metric=ne]{font-size:12px}.navigation-right .navigation-results span{font-size:10px}}
.navigation-success-radius{fill:var(--nav-goal-fill);stroke:var(--nav-goal);stroke-width:7;stroke-dasharray:18 12}
.navigation-goal{fill:var(--nav-goal);stroke:var(--nav-white);stroke-width:5;stroke-linejoin:round}
.navigation-goal text,.navigation-start text{font-family:var(--font-heading);font-size:40px;font-weight:600;stroke-width:7;paint-order:stroke fill}
@media(max-width:950px){.navigation-views{gap:24px;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}.navigation-interaction{gap:12px;grid-template-columns:minmax(0,1.8fr) minmax(0,1fr)}.navigation-actions{gap:6px}.navigation-actions button{font-size:12px;gap:3px}.navigation-actions button small{font-size:10px}.navigation-results{padding-left:10px}.navigation-results strong{font-size:18px}.navigation-results>div{gap:4px}.navigation-views h3{font-size:17px}.navigation-views figcaption>span{font-size:11px}}
@media(max-width:767px){.navigation-section{width:calc(100% - 40px);margin-bottom:56px}.navigation-views{gap:24px;grid-template-columns:minmax(0,1fr)}.navigation-right{width:min(100%,420px);justify-self:center}.navigation-intro h2{font-size:28px}.navigation-intro p{font-size:16px;line-height:1.75}.navigation-instruction p{font-size:16px}.navigation-instruction{margin-bottom:24px}.navigation-views figcaption{gap:8px}.navigation-actions button{font-size:13px}.navigation-actions button small{font-size:10px}.navigation-results strong{font-size:20px}}



/* Task palette for the scene, observation and controls. */
.navigation-section{--demo-main:var(--nav-blue);--demo-hover:var(--nav-blue-hover);--demo-frame:var(--nav-cyan);--demo-fill:var(--nav-footprint);--demo-on-main:var(--nav-white);--demo-score:var(--task-accent);--demo-trail:var(--nav-yellow)}
.navigation-section[data-task=landmark]{--demo-main:#228465;--demo-hover:#19694f;--demo-frame:#32b887;--demo-fill:rgb(50 184 135 / 9%)}
.navigation-section[data-task=route]{--demo-main:#f2bd19;--demo-hover:#dda90c;--demo-frame:#efc43c;--demo-fill:rgb(239 196 60 / 9%);--demo-on-main:#3c300b;--demo-trail:#ec7024}
.navigation-reference{stroke:var(--demo-main)}
.navigation-trail{stroke:var(--demo-trail)}
.navigation-footprint{stroke:var(--demo-frame);fill:var(--demo-fill)}
.navigation-observation::after{border-color:var(--demo-frame)}
.navigation-move-hint,.navigation-actions button[data-action=forward]{background:var(--demo-main);color:var(--demo-on-main)}
.navigation-actions button[data-action=forward]{border-color:var(--demo-main)}
.navigation-move-hint:hover,.navigation-move-hint:active,.navigation-actions button[data-action=forward]:hover{background:var(--demo-hover)}
.navigation-results strong{color:var(--demo-score)}

.navigation-reference{transition:stroke-opacity .25s ease}
.navigation-section[data-started=true] .navigation-reference{stroke-opacity:.3}
@media(prefers-reduced-motion:reduce){.navigation-reference{transition:none}}
