:root{--paper:#161b1c;--paper-2:#222a2c;--sea:#0c1011;--ink:#e8e4da;--muted:#9ca9ab;--hair:#e8e4da33;--rule:#e8e4da80;--signal:#ff5a3d;--signal-dark:#ff8068;--focus:#7aa5ff;--ink-hover:#cdc9bf;--scrim:#0009;--r:2px;--gutter:14px;--bar:56px;--ease:cubic-bezier(.2, .8, .2, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--paper:#f6f5f0;--paper-2:#e9e8e0;--sea:#e8eded;--ink:#15252b;--muted:#53646a;--hair:#15252b38;--rule:#15252b;--signal:#c2321d;--signal-dark:#a42a18;--focus:#1a56db;--ink-hover:#2e464e;--scrim:#15252b80;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--sea);height:100%;color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font:400 16px/1.4 Familjen Grotesk Variable,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}#map{position:fixed;inset:0}#map:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}.maplibregl-canvas{outline:none}.sr,.skip:not(:focus){clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip:focus{z-index:100;background:var(--ink);color:var(--paper);border-radius:var(--r);padding:8px 14px;position:fixed;top:10px;left:10px}a{color:var(--signal-dark)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}button{font:inherit;color:inherit}.ico{flex:none;width:20px;height:20px}.panel{background:var(--paper);border:1px solid var(--rule)}#boot{z-index:5;color:var(--muted);font-size:.95rem;transition:opacity .5s}#boot.gone{opacity:0}.boot-title{letter-spacing:-.03em;color:var(--ink);font-size:2.2rem;font-weight:700}.noscript{top:calc(var(--bar) + 14px);left:var(--gutter);right:var(--gutter);border-radius:var(--r);padding:14px;position:fixed}:root:not([data-theme=light]) .i-moon,:root[data-theme=light] .i-sun{display:none}.topbar{z-index:10;height:calc(var(--bar) + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);background:var(--paper);border-bottom:1px solid var(--rule);align-items:stretch;display:flex;position:fixed;top:0;left:0;right:0}.topbar>*{border-left:1px solid var(--hair)}.topbar>:first-child{border-left:0}.brand{color:var(--ink);flex:none;align-items:center;gap:9px;padding:0 16px;text-decoration:none;display:flex}.brand img{display:block}.brand-name{letter-spacing:-.03em;font-size:1.2rem;font-weight:700}.search{min-width:0;color:var(--muted);flex:auto;align-items:center;gap:10px;padding:0 16px;display:flex;position:relative}.search:focus-within{box-shadow:inset 0 -3px 0 var(--signal);color:var(--ink)}#search{min-width:0;height:100%;color:var(--ink);font:inherit;background:0 0;border:0;outline:none;flex:1;padding:0;font-size:1rem}#search::placeholder{color:var(--muted);opacity:1;text-overflow:ellipsis}#search::-webkit-search-cancel-button{display:none}#search:disabled{opacity:.6}#results{border-top:0;max-height:min(60vh,420px);margin:0;padding:0;list-style:none;position:absolute;top:100%;left:-1px;right:-1px;overflow:auto}#results li{cursor:pointer;border-top:1px solid var(--hair);flex-direction:column;justify-content:center;min-height:50px;padding:9px 16px;display:flex}#results li:first-child{border-top:0}#results li[aria-selected=true],#results li:hover{background:var(--paper-2);box-shadow:inset 4px 0 0 var(--signal)}#results .r-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}#results .r-sub,.sub{color:var(--muted);font-size:.88rem}#results .r-empty{color:var(--muted);cursor:default}.btn{border:1px solid var(--rule);border-radius:var(--r);background:var(--paper);min-height:44px;color:var(--ink);cursor:pointer;flex:none;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-weight:600;transition:background .12s,color .12s;display:inline-flex}.btn:hover:not(:disabled){background:var(--paper-2)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default}.btn-solid{background:var(--ink);color:var(--paper)}.btn-solid:hover:not(:disabled){background:var(--ink-hover)}.btn-square{width:44px;padding:0}.topbar .btn{border:0;border-radius:0;min-height:0;padding:0 20px}.topbar .btn-solid:hover:not(:disabled){background:var(--ink-hover)}.topbar .btn-square{width:var(--bar);padding:0}.dock{z-index:20;padding-bottom:env(safe-area-inset-bottom);animation:rise .3s var(--ease);max-height:calc(100% - var(--bar) - 8px);border-width:1px 0 0;position:fixed;bottom:0;left:0;right:0;overflow:auto}.dock[hidden]{display:none}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}.dial{border-bottom:1px solid var(--hair);height:50px;color:var(--muted);font-size:.72rem;line-height:1;position:relative}.dial span{position:absolute;bottom:6px}.dial .l-w{left:14px}.dial .l-0{left:50%;translate:-50%}.dial .l-e{right:14px}.scale{border-right:1px solid var(--rule);background:linear-gradient(90deg, var(--rule) 1px, transparent 1px) left bottom / calc(100% / 6) 13px repeat-x, linear-gradient(90deg, var(--rule) 1px, transparent 1px) left bottom / calc(100% / 36) 6px repeat-x;height:13px;position:absolute;bottom:22px;left:14px;right:14px}.needle{top:0;bottom:22px;left:calc(14px + (100% - 28px) * var(--at,.5));background:var(--signal);width:2px;transition:left .7s var(--ease);margin-left:-1px;position:absolute}.needle:after{content:"";border:4px solid #0000;border-top:6px solid var(--signal);border-bottom:0;position:absolute;top:0;left:-3px}.dock:has(.state[data-s=loading]) .needle{animation:1s ease-in-out infinite alternate seek}@keyframes seek{to{opacity:.25}}:is(.dock:has(.state[data-s=paused]) .needle,.dock:has(.state[data-s=error]) .needle){background:var(--muted)}.dock:has(.state[data-s=paused]) .needle:after{border-top-color:var(--muted)}.dock:has(.state[data-s=error]) .needle:after{border-top-color:var(--muted)}.dock-main{align-items:center;gap:14px;padding:14px;display:flex}.art{border:1px solid var(--hair);border-radius:var(--r);background:var(--paper-2);width:52px;height:52px;color:var(--muted);flex:none;place-items:center;font-size:1.4rem;font-weight:700;display:grid;overflow:hidden}.art img{object-fit:cover;background:#fff;width:100%;height:100%}.dock-text{flex:1;min-width:0}.dock-text h2{letter-spacing:-.015em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1.3rem;font-weight:650;line-height:1.2;overflow:hidden}.dock-text p{white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.state{color:var(--ink);align-items:center;gap:8px;min-height:1.2em;font-size:.9rem;font-weight:600;display:flex;margin-top:4px!important}.state.is-error{color:var(--signal-dark)}.state.is-quiet{color:var(--muted)}.dot{background:var(--signal);border-radius:50%;flex:none;width:8px;height:8px}.state[data-s=loading] .dot{border:2px solid var(--signal);background:0 0;animation:.6s ease-in-out infinite alternate seek}.state[data-s=paused] .dot{border:2px solid var(--muted);background:0 0}.state[data-s=idle] .dot,.state[data-s=error] .dot{display:none}.play{border-radius:var(--r);border:1px solid var(--rule);background:var(--ink);width:56px;height:56px;color:var(--paper);cursor:pointer;flex:none;place-items:center;transition:background .12s;display:grid;position:relative}.play:hover{background:var(--ink-hover)}.play:active{transform:translateY(1px)}.play svg{grid-area:1/1;width:26px;height:26px}.play .i-pause,.play .spinner,.play[data-state=playing] .i-play,.play[data-state=loading] .i-play{display:none}.play[data-state=playing] .i-pause{display:block}.play[data-state=loading] .spinner{grid-area:1/1;display:block}.spinner{border:3px solid color-mix(in srgb, currentColor 30%, transparent);border-top-color:currentColor;border-radius:50%;width:24px;height:24px;animation:.75s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dock-tools{border-top:1px solid var(--hair);display:flex}.tool{border:0;border-left:1px solid var(--hair);min-height:46px;color:var(--ink);cursor:pointer;background:0 0;border-radius:0;align-items:center;gap:8px;padding:0 16px;font-size:.92rem;font-weight:600;text-decoration:none;transition:background .12s;display:inline-flex}.tool:first-child{border-left:0}.tool:hover{background:var(--paper-2)}.tool .ico{width:18px;height:18px}.tool-end{margin-left:auto}#d-fav[aria-pressed=true]{color:var(--signal-dark)}#d-fav[aria-pressed=true] use{fill:currentColor}#d-fav.pop .ico{animation:pop .3s var(--ease)}@keyframes pop{40%{transform:scale(1.3)}}.tool .chev{transition:transform .2s var(--ease)}#d-toggle[aria-expanded=true] .chev{transform:rotate(180deg)}.dock-details{border-top:1px solid var(--hair);gap:14px;padding:14px;display:grid}.dock-details[hidden]{display:none}.tags{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tags li{border:1px solid var(--hair);border-radius:var(--r);padding:3px 9px;font-size:.82rem;font-weight:500}.meta{color:var(--muted);margin:0;font-size:.9rem}.meta:empty{display:none}.vol{color:var(--muted);align-items:center;gap:12px;display:flex}.vol input{--v:80%;appearance:none;cursor:pointer;background:0 0;flex:1;height:28px;margin:0}.vol input::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--ink) var(--v), var(--hair) var(--v));height:3px}.vol input::-moz-range-track{background:var(--hair);height:3px}.vol input::-moz-range-progress{background:var(--ink);height:3px}.vol input::-webkit-slider-thumb{-webkit-appearance:none;border-radius:var(--r);background:var(--ink);border:0;width:12px;height:20px;margin-top:-8.5px}.vol input::-moz-range-thumb{border-radius:var(--r);background:var(--ink);border:0;width:12px;height:20px}.err{border:1px solid var(--signal);border-radius:var(--r);border-left-width:4px;padding:12px}.err p{color:var(--ink);margin:0 0 12px;font-size:.95rem}.err strong{color:var(--signal-dark);margin-right:6px}.row{flex-wrap:wrap;gap:8px;display:flex}.msg{color:var(--muted);min-height:1.2em;margin:0;font-size:.88rem}.msg:empty{display:none}dialog{width:min(460px, calc(100vw - 2 * var(--gutter)));border-radius:var(--r);max-height:78vh;color:var(--ink);background:var(--paper);padding:0}dialog[open]{animation:rise .25s var(--ease)}dialog::backdrop{background:var(--scrim)}.dlg-head{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;padding:8px 8px 8px 18px;display:flex}.dlg-head h2{letter-spacing:-.015em;margin:0;font-size:1.2rem;font-weight:650}.tabs{border-bottom:1px solid var(--hair);display:flex}.tabs button{min-height:46px;color:var(--muted);cursor:pointer;background:0 0;border:0;flex:1;font-weight:600;box-shadow:inset 0 -3px #0000}.tabs button:hover{background:var(--paper-2)}.tabs button[aria-selected=true]{color:var(--ink);box-shadow:inset 0 -3px 0 var(--signal)}.lib-list{max-height:48vh;margin:0;padding:0;list-style:none;overflow:auto}.lib-list li+li{border-top:1px solid var(--hair)}.lib-list button{text-align:left;cursor:pointer;background:0 0;border:0;width:100%;min-height:56px;padding:11px 18px}.lib-list button:hover{background:var(--paper-2)}.lib-list .r-name{font-weight:600;display:block}.lib-list .r-sub{color:var(--muted);font-size:.88rem;display:block}.lib-list .empty{color:var(--muted);padding:26px 18px}.note{border-top:1px solid var(--hair);color:var(--muted);margin:0;padding:12px 18px;font-size:.85rem}.foot{z-index:4;padding-bottom:env(safe-area-inset-bottom);background:var(--paper);border:1px solid var(--rule);border-width:1px 1px 0 0;position:fixed;bottom:0;left:0}.foot a{min-height:40px;color:var(--ink);align-items:center;padding:0 16px;font-size:.88rem;font-weight:600;text-decoration:none;display:inline-flex}.foot a:hover{background:var(--paper-2)}body:has(.dock:not([hidden])) .foot{display:none}.maplibregl-ctrl-bottom-right{bottom:0}.maplibregl-ctrl-attrib{border-top:1px solid var(--hair);background:var(--paper)!important;color:var(--muted)!important}:root:not([data-theme=light]) .maplibregl-ctrl-attrib-button{filter:invert()}.maplibregl-ctrl-attrib a{color:var(--muted)!important}body:has(.dock:not([hidden])) .maplibregl-ctrl-bottom-right{display:none}@media (max-width:640px){.brand-name{display:none}.brand{padding:0 12px}#surprise span{display:none}#surprise{width:var(--bar);padding:0}.foot .more{display:none}.art{width:46px;height:46px}.play{width:52px;height:52px}.dock-main{gap:12px;padding:12px}.tool{padding:0 12px}}@media (min-width:900px){.dock{border-width:1px 1px 0 0;width:440px;right:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.dock:has(.state[data-s=loading]) .needle{opacity:.5}.spinner{opacity:.7;animation:none}}[hidden]{display:none!important}
