:root{color-scheme:light;--pine:#183c31;--paper:#f8f6ed;--line:#b9c5b7}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden}
body{font:15px/1.45 system-ui,sans-serif;color:var(--pine);background:#1b2923}
.viewer{height:100%;height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr) auto}
button,select{font:inherit;color:inherit;background:white;border:1px solid var(--line);border-radius:6px;padding:6px 10px;min-height:36px;cursor:pointer}
button:hover,select:hover{border-color:#466b57}
:focus-visible{outline:3px solid #ce8037;outline-offset:2px}
a{color:#205741}
.top,.dock{background:var(--paper);padding:7px max(12px,env(safe-area-inset-right)) 7px max(12px,env(safe-area-inset-left));display:flex;align-items:center;gap:8px}
.top h1{font:600 clamp(18px,2.5vw,27px)/1.1 Georgia,serif;margin:0 auto 0 0}
.back{font-size:23px;text-decoration:none;min-width:32px;text-align:center}
.dock{justify-content:center;flex-wrap:wrap;padding-bottom:max(7px,env(safe-area-inset-bottom))}
.dock label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600}
.dock select{max-width:180px;text-overflow:ellipsis}
.range input{width:clamp(85px,19vw,275px);accent-color:#24583e}
.map{position:relative;overflow:hidden;min-height:0;background:#26382f;touch-action:none;cursor:ew-resize}
.map svg{position:absolute;inset:0;width:100%;height:100%}
.marker{font:16px sans-serif;fill:white;paint-order:stroke;stroke:#18372d;stroke-width:4px;stroke-linejoin:round}
.handle{position:absolute;inset:0 auto 0 50%;border-left:2px solid white;pointer-events:none}
.handle:after{content:'‹ ›';position:absolute;top:50%;left:-1px;transform:translate(-50%,-50%);background:#173a2e;color:white;border:2px solid white;border-radius:22px;white-space:pre;font:700 20px/1 system-ui;padding:4px 7px}
.tag,#msg{position:absolute;top:9px;left:9px;border-radius:4px;background:#173b30e8;color:white;padding:4px 8px;font-size:12px;pointer-events:none}
.right{left:auto;right:9px}#msg{left:50%;top:50%;transform:translate(-50%,-50%)}#msg:empty{display:none}
dialog{border:0;border-left:1px solid var(--line);padding:0;margin:0 0 0 auto;width:min(420px,100%);max-width:100%;height:100%;max-height:100%;overflow:auto;overscroll-behavior:contain;background:var(--paper);color:var(--pine)}
dialog[open]{animation:drawer .18s ease-out}dialog::backdrop{background:#10261e59}
@keyframes drawer{from{transform:translateX(100%)}to{transform:none}}
@media(prefers-reduced-motion:reduce){dialog[open]{animation:none}}
.dhead{position:sticky;top:0;padding:10px 16px;background:var(--paper);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;z-index:1}
.dhead h2{margin:0;font:600 23px Georgia,serif}.inner{padding:14px 18px 28px}.inner p{margin:0 0 14px}.inner h2{font:600 20px Georgia,serif}.inner a{overflow-wrap:anywhere}
.presets{display:grid;gap:8px;margin-bottom:16px}.presets button{text-align:left}.presets button[aria-pressed=true],#play[aria-pressed=true]{background:#234e40;color:white}.inner details,.inner footer{margin-top:18px}.inner summary{cursor:pointer;font-weight:bold}.inner details p{margin-top:12px}
@media(max-width:620px){.top{gap:4px;padding:5px 6px}.top button{padding:4px 7px;font-size:13px}.top h1{font-size:18px}.back{min-width:22px}.dock{display:grid;grid-template-columns:1fr 1fr;gap:3px 10px}.dock label{min-width:0}.dock select{min-width:0;width:100%;max-width:none}.dock .range{grid-column:1/-1}.range input{flex:1;min-width:0}.tag{font-size:11px}}
@media(max-height:480px) and (orientation:landscape){.top,.dock{padding-block:2px}.top h1{font-size:18px}.dock select,.top button{min-height:30px;padding-block:2px}}

.map-focus .viewer{grid-template-rows:minmax(0,1fr)}.map-focus .top,.map-focus .dock{display:none}#exit-focus{position:fixed;bottom:12px;right:12px}
