:root{--sans:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;
  --bg:#F8F6F3;--surf:#FFFFFF;--surf2:#EFEBE5;--ink:#1B1A18;--ink2:#6B6660;--ink3:#948E86;
      --line:#E3DED7;--acc:#2C5F5A;--accSoft:#E4EDEB;--shadow:rgba(30,26,22,.16)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#141513;--surf:#1C1E1C;--surf2:#232522;--ink:#EDEAE4;--ink2:#A09A91;--ink3:#7C766D;
  --line:#2C2F2C;--acc:#7FB6AC;--accSoft:#1E2B29;--shadow:rgba(0,0,0,.55)}}
:root[data-theme="dark"]{--bg:#141513;--surf:#1C1E1C;--surf2:#232522;--ink:#EDEAE4;--ink2:#A09A91;
  --ink3:#7C766D;--line:#2C2F2C;--acc:#7FB6AC;--accSoft:#1E2B29;--shadow:rgba(0,0,0,.55)}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.62;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:var(--sans);font-weight:600;margin:0;text-wrap:balance;letter-spacing:-.028em}
p{margin:0}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0;text-align:left}
a{color:inherit}:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
.in{max-width:1120px;margin:0 auto;padding:0 clamp(1.1rem,4.5vw,2.6rem)}
.mo{font-family:"IBM Plex Mono",monospace;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink3);margin:0}
/* top bar */
.bar{border-bottom:1px solid var(--line);position:sticky;top:0;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);z-index:40}
.bar .in{display:flex;align-items:center;gap:.9rem;padding-top:.75rem;padding-bottom:.75rem}
.bar .wm{font-family:var(--sans);font-size:1.05rem;text-decoration:none;color:var(--ink2)}
.bar .wm:hover{color:var(--ink)}
.bar .sp{margin-left:auto}
.bar .who{font-family:"IBM Plex Mono",monospace;font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3)}
/* video */
.film{position:relative;background:var(--surf2);border:1px solid var(--line);overflow:hidden;aspect-ratio:16/9;width:100%;display:block;cursor:pointer}
.film img,.film iframe{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:0}
.film .sh{position:absolute;inset:0;background:linear-gradient(180deg,rgba(12,10,8,0) 20%,rgba(12,10,8,.85) 100%)}
.film .play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:58px;height:58px;border-radius:50%;background:rgba(248,246,243,.93);display:grid;place-content:center;transition:.18s;box-shadow:0 10px 26px -10px rgba(0,0,0,.5)}
.film .play::after{content:"";width:0;height:0;border-left:17px solid #1B1A18;border-top:11px solid transparent;border-bottom:11px solid transparent;margin-left:4px}
.film:hover .play{transform:translate(-50%,-50%) scale(1.09)}
.film .dur{position:absolute;right:.55rem;bottom:.5rem;font-family:"IBM Plex Mono",monospace;font-size:.62rem;color:#F8F6F3;background:rgba(12,10,8,.72);padding:.12rem .38rem;border-radius:2px}
.film .tag{position:absolute;left:.55rem;top:.5rem;font-family:"IBM Plex Mono",monospace;font-size:.54rem;letter-spacing:.12em;text-transform:uppercase;color:#F8F6F3;background:rgba(12,10,8,.55);padding:.16rem .4rem;border-radius:2px}
.film.empty{cursor:default;display:grid;place-content:center;background:repeating-linear-gradient(135deg,var(--surf2),var(--surf2) 9px,var(--bg) 9px,var(--bg) 18px)}
.film .none{position:relative;font-family:"IBM Plex Mono",monospace;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);background:var(--bg);padding:.35rem .6rem;border:1px solid var(--line)}
.film .fb{}
/* facts */
.fact{display:grid;grid-template-columns:minmax(0,10.5rem) minmax(0,1fr);gap:1rem;padding:.72rem 0;border-bottom:1px solid var(--line);align-items:baseline}
.fact:last-child{border-bottom:0}
.fact .k{font-family:"IBM Plex Mono",monospace;font-size:.62rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink3)}
.fact .v{font-family:var(--sans);font-size:1.22rem;line-height:1.3}
.fact .v.add{font-family:var(--sans);font-size:.86rem;color:var(--ink3);border-bottom:1px dashed var(--line);cursor:pointer}
.fact .v.add:hover{color:var(--acc);border-bottom-color:var(--acc)}
.btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--acc);color:var(--bg);border:1px solid var(--acc);border-radius:2px;padding:.62rem 1.15rem;font-size:.92rem;font-weight:600;text-decoration:none;width:max-content}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--acc)}
footer{border-top:1px solid var(--line);padding:2rem 0 3.2rem;color:var(--ink3);font-size:.83rem;display:flex;flex-direction:column;gap:.3rem;margin-top:2.4rem}
.sec-hd{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1.3rem;max-width:60ch}
.sec-hd h2{font-size:clamp(1.35rem,2.8vw,1.85rem)}
.sec-hd p{color:var(--ink2);font-size:.95rem}
section{padding:clamp(2rem,4.5vw,3.2rem) 0;border-top:1px solid var(--line)}
.geo{display:grid;grid-template-columns:minmax(0,370px) minmax(0,1fr);gap:clamp(1.3rem,3.5vw,2.6rem);align-items:center;background:var(--surf);border:1px solid var(--line);padding:clamp(.9rem,2.2vw,1.4rem)}
@media (max-width:760px){.geo{grid-template-columns:1fr}}
.geo .frame{border:1px solid var(--line);overflow:hidden;background:var(--surf);line-height:0}
.pls{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.pl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.85rem;align-items:start;padding:0 0 .85rem;margin-bottom:.85rem;border-bottom:1px solid var(--line)}
.pl:last-child{padding-bottom:0;margin-bottom:0;border-bottom:0}
.pl .n{width:1.55rem;height:1.55rem;border-radius:50%;background:var(--acc);color:var(--bg);display:grid;place-content:center;font-family:"IBM Plex Mono",monospace;font-size:.72rem;margin-top:.2rem}
.pl:not(:first-child) .n{background:transparent;color:var(--ink2);border:1px solid var(--line)}
.pl .k{display:block;font-family:"IBM Plex Mono",monospace;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3)}
.pl .v{display:block;font-family:var(--sans);font-size:1.28rem;line-height:1.22}
.pl .c{display:block;font-family:"IBM Plex Mono",monospace;font-size:.66rem;color:var(--ink3)}
.geo .m{font-size:.92rem;color:var(--ink2);margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--line)}
.mapsvg{width:100%;height:auto;display:block}
.mapsvg .sea{fill:var(--surf)}
.mapsvg .grid line{stroke:var(--line);stroke-width:1.5;opacity:.75}
.mapsvg .neigh{fill:var(--surf2);stroke:var(--line);stroke-width:2;stroke-linejoin:round}
.mapsvg .land{fill:var(--accSoft);stroke:var(--acc);stroke-width:2.5;stroke-linejoin:round}
.mapsvg text{font-family:"IBM Plex Mono",monospace;paint-order:stroke fill;stroke:var(--surf);stroke-width:7;stroke-linejoin:round}
.mapsvg .ctx circle{fill:var(--ink3);opacity:.5}
.mapsvg .ctx text{fill:var(--ink3);font-size:28px}
.mapsvg .link{fill:none;stroke:var(--acc);stroke-width:3.5;stroke-dasharray:12 12;opacity:.6;stroke-linecap:round}
.mapsvg .halo{fill:var(--acc);opacity:.13}
.mapsvg .ring{fill:none;stroke:var(--acc);stroke-width:3;opacity:.45}
.mapsvg .dot{fill:var(--acc)}
.mapsvg .pin.sm .dot{fill:var(--surf);stroke:var(--acc);stroke-width:3}
.mapsvg .num{fill:var(--bg);font-size:24px;stroke-width:0}
.mapsvg .pin.sm .num{fill:var(--acc)}
.mapsvg .lab{fill:var(--ink);font-size:38px;letter-spacing:.01em}
.mapsvg .pin.sm .lab{fill:var(--ink2);font-size:32px}
.mapsvg .scale path{fill:none;stroke:var(--ink3);stroke-width:2.5}
.mapsvg .scale text{fill:var(--ink3);font-size:24px}
.mapsvg .rose path{fill:var(--ink3);stroke:var(--surf);stroke-width:5;paint-order:stroke fill}
.mapsvg .rose text{fill:var(--ink3);font-size:26px}
