:root{color-scheme:dark;--bg:#0d1922;--panel:#182936;--border:#3a5667;--text:#edf4f7;--muted:#bfd0d7;--gold:#e8b973;--teal:#94c8bd;--danger:#ffb3a1}
*{box-sizing:border-box}html{background:var(--bg)}body{font:15px/1.55 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:default}a{color:var(--gold)}.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:13px clamp(14px,3vw,28px);border-bottom:1px solid var(--border);background:#162733}.back-link{color:var(--text);text-decoration:none;font-weight:650}.brand{font-weight:850;letter-spacing:.045em}.brand small{font-size:.64rem;padding:3px 5px;color:#162733;background:var(--gold);border-radius:4px;vertical-align:middle}main{max-width:900px;margin:auto;padding:20px 15px 48px}.intro{padding:6px 4px 14px}.eyebrow{text-transform:uppercase;color:var(--gold);font-size:.72rem;letter-spacing:.1em;font-weight:800}.intro h1{font-family:Georgia,serif;font-size:clamp(1.65rem,4vw,2.7rem);line-height:1.13;margin:.45rem 0}.intro p:last-child{max-width:66ch;color:var(--muted)}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:18px;margin:0 0 14px}.section-heading{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:0 0 12px}.section-heading h2{font-size:1.05rem;margin:0;display:flex;gap:9px;align-items:center}.step{display:grid;place-items:center;min-width:29px;height:29px;border:1px solid #a98c5e;border-radius:6px;color:var(--gold);font-size:.75rem}.small-tag{border:1px solid #487166;border-radius:5px;padding:3px 7px;color:var(--teal);font-size:.7rem}.saved-place{background:#12212c;border-left:3px solid var(--gold);padding:9px 11px;border-radius:5px;margin-bottom:13px;font-size:.84rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.form-grid label{display:grid;gap:4px;color:var(--muted);font-size:.8rem;font-weight:650}.form-grid .full{grid-column:1/-1}.form-grid input{width:100%;padding:11px 10px;background:#0d1b26;border:1px solid #587185;border-radius:7px;color:var(--text);min-width:0}.form-grid input:focus,.button:focus-visible,.back-link:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.button-line{display:flex;flex-wrap:wrap;gap:8px;margin:13px 0}.button{border-radius:8px;padding:10px 14px;border:1px solid #a68c66;font-size:.86rem;font-weight:750}.button.main{background:var(--gold);color:#221909;border-color:var(--gold)}.button.secondary{background:#243d49;color:#e4eff0;border-color:#567480}.button.subtle{background:transparent;color:var(--muted);border-color:#52636d}.helper{color:var(--muted);font-size:.78rem;line-height:1.55;margin:10px 0 0}.message{margin:4px 0 0;font-size:.83rem;color:var(--gold);min-height:0}.viewfinder{margin-top:13px;position:relative;width:100%;aspect-ratio:4/3;background:linear-gradient(135deg,#12212a,#2d4452);overflow:hidden;border:1px solid #62818e;border-radius:11px;isolation:isolate}.viewfinder video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:none}.viewfinder.has-camera video{display:block}.fallback-view{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#d0dee0;text-align:center;padding:20px;font-size:.82rem}.fallback-view>span:first-child{font-size:3rem;line-height:1;color:var(--gold)}.fallback-view>span:last-child{color:#abbdc3}.viewfinder.has-camera .fallback-view{display:none}.viewport-scrim{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,.28),transparent 38%,transparent 65%,rgba(0,0,0,.55));pointer-events:none}.reticle{position:absolute;left:50%;top:50%;width:32px;height:32px;border:1px solid rgba(255,255,255,.47);border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}.reticle:before,.reticle:after{content:'';position:absolute;background:rgba(255,255,255,.65)}.reticle:before{height:1px;width:44px;top:15px;left:-7px}.reticle:after{height:44px;width:1px;top:-7px;left:15px}.target-marker{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);border:2px solid #ffcf86;border-radius:10px;background:rgba(26,33,29,.75);padding:6px 10px;min-width:100px;text-align:center;color:#ffebc9;box-shadow:0 2px 18px rgba(0,0,0,.32);pointer-events:none}.target-marker>span{display:block;font-size:1.5rem;line-height:1}.target-marker strong{display:block;font-size:.86rem}.target-marker small{display:block;font-size:.58rem;letter-spacing:.02em}.turn-hint{position:absolute;top:14px;left:12px;right:12px;text-align:center;font-weight:850;font-size:clamp(.87rem,2.7vw,1.1rem);text-shadow:0 1px 7px #000;background:rgba(4,18,24,.49);border:1px solid rgba(255,255,255,.2);border-radius:7px;padding:8px 6px;pointer-events:none}.camera-label{position:absolute;bottom:12px;left:8px;right:8px;text-align:center;color:#e9e9d9;font-size:.61rem;font-weight:780;letter-spacing:.07em;text-shadow:0 1px 5px #000;pointer-events:none}.readout{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:11px}.readout>div{background:#102330;border:1px solid #344e5e;border-radius:7px;padding:8px;min-width:0}.readout span{display:block;color:var(--muted);font-size:.65rem}.readout strong{display:block;color:var(--gold);font-size:.86rem;overflow-wrap:anywhere}.signal-status{background:#263a3e;border-left:3px solid #95bbb0;padding:10px;margin:11px 0 0;border-radius:5px;font-size:.8rem}.signal-status.warning{border-color:#e2ab6c;color:#f3d7b3}.details summary{font-weight:750;cursor:pointer}.details li{margin:.4rem 0;color:var(--muted)}footer{text-align:center;color:#a5bac4;font-size:.72rem;padding:0 14px 22px}@media(max-width:610px){main{padding:12px 10px 32px}.card{padding:12px}.topbar{font-size:.75rem}.section-heading{align-items:flex-start}.viewfinder{aspect-ratio:3/4}.readout{grid-template-columns:repeat(2,1fr)}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Phone-only beta: never launch the camera or finder on desktop. */
.desktop-unavailable { display: block; max-width: 660px; margin: 50px auto; padding: 30px; text-align: center; background: var(--panel); border: 1px solid var(--border); border-radius: 12px; }
.desktop-unavailable h1 { font-family: Georgia, serif; color: var(--gold); }
.desktop-unavailable p { color: var(--muted); margin-bottom: 25px; }
html:not(.wf-phone) #windowFinderApp, html:not(.wf-phone) footer { display:none !important; }
html.wf-phone .desktop-unavailable { display:none !important; }
/* Optional online map picker; never loaded until the user opens it. */
.map-chooser-row { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:13px; }
.map-chooser-row > span {font-size:.78rem;color:var(--muted)}
.map-picker[hidden]{display:none!important}
.map-picker{margin-top:10px;padding:11px;border:1px solid #587185;border-radius:10px;background:#10212c}
.map-actions{display:flex;gap:10px;justify-content:space-between;align-items:center;margin-bottom:8px}
.map-controls{display:flex;gap:5px}.map-controls button{min-width:42px;height:38px;background:#284652;border:1px solid #668693;border-radius:6px;color:#fff;font-size:1.35rem}
.place-map{width:100%;height:300px;position:relative;background:linear-gradient(135deg,#243f4d,#516977);overflow:hidden;border-radius:8px;border:1px solid #6b8490;cursor:grab;touch-action:none;user-select:none}
.place-map:active{cursor:grabbing}
.map-tiles{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.map-tiles img{width:256px;height:256px;position:absolute;max-width:none;user-select:none;pointer-events:none}
.map-crosshair{position:absolute;top:50%;left:50%;transform:translate(-50%,-53%);font-size:36px;font-weight:900;color:#ffcc73;text-shadow:0 2px 6px #000,0 0 3px #000;pointer-events:none}
.map-attribution{margin:5px 0 1px;color:var(--muted);text-align:right;font-size:.67rem}
.map-picker .helper{margin-top:5px}
@media(max-width:610px){.place-map{height:270px}.desktop-unavailable{margin:30px 12px;padding:25px 14px}}

/* Distinguish heading-only arrows from estimated ground position. */
.target-marker.bearing-only {border-style:dashed;background:rgba(15,28,34,.82);border-color:#a6d1cb;box-shadow:none}
.target-marker.bearing-only small{letter-spacing:.03em;color:#e5f3e8}

/* Keep map tiles stable while scrolling; never animate each tile's position. */
.map-tiles img { display:block; max-height:none; -webkit-user-drag:none; }
.target-marker.bearing-only { border-style:dashed; box-shadow:0 2px 12px rgba(0,0,0,.26); }

/* During a zoom, keep the previous loaded map visible until the new central
   tiles are ready, instead of flashing an empty map. */
.map-tiles{z-index:1;}
.map-tiles-preview{z-index:0;transform-origin:50% 50%;}
.place-map.map-zoom-loading #mapTiles{opacity:0;}
#mapTiles{transition:opacity .14s linear;}
.map-crosshair{z-index:3;}
