:root{
  --bg:#EEECE6;--surface:#FBFAF7;--ink:#1C1B18;--muted:#5A554C;--line:#D3CEC3;
  --past:#7A5620;--now:#2A5875;--chip:#E3DFD5;--btn:#1C1B18;--btn-ink:#FBFAF7;
  color-scheme:light;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#1A1916;--surface:#24231F;--ink:#F1EDE5;--muted:#B5AEA1;--line:#3A3832;
    --past:#DDBA7A;--now:#9EC5E0;--chip:#2E2C27;--btn:#F1EDE5;--btn-ink:#1A1916;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#1A1916;--surface:#24231F;--ink:#F1EDE5;--muted:#B5AEA1;--line:#3A3832;
  --past:#DDBA7A;--now:#9EC5E0;--chip:#2E2C27;--btn:#F1EDE5;--btn-ink:#1A1916;
  color-scheme:dark;
}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'Manrope','Segoe UI',system-ui,-apple-system,sans-serif;font-size:17px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit}
img,svg{max-width:100%}
:focus-visible{outline:3px solid var(--now);outline-offset:3px}
.wrap{max-width:1240px;margin:0 auto;padding:0 clamp(16px,4vw,40px)}

/* top bar */
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 0}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-family:'Prata',Georgia,serif;font-size:19px}
.brand svg{flex:none}
.topnav{display:flex;gap:8px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;border:1px solid var(--line);text-decoration:none;font-weight:600;font-size:15px;background:transparent;color:var(--ink);cursor:pointer;font-family:inherit}
.pill:hover{border-color:var(--ink)}

/* hero */
.hero{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px;padding:12px 0 28px}
h1{font-family:'Prata',Georgia,serif;font-weight:400;margin:0;line-height:1.02;letter-spacing:-0.01em}
.hero h1{font-size:clamp(44px,7.5vw,96px)}
.lead{margin:0;color:var(--muted);font-size:clamp(17px,1.6vw,20px);max-width:36ch}

/* viewer */
.viewer{--pos:50%;position:relative;aspect-ratio:12/7;border-radius:22px;overflow:hidden;background:#9fb6c6;user-select:none;-webkit-user-select:none;touch-action:pan-y}
@media (max-width:640px){.viewer:not(.photo){aspect-ratio:4/5}.viewer{border-radius:16px}}
.viewer svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.viewer.photo{margin:0 auto;background:#2a2c2e}
.viewer img,.thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.ph{position:absolute;inset:0;background:#2E3A43;color:#DCE6EC;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:12px;padding:0 6%;text-align:right;font-size:15px;line-height:1.35}
.ph svg{position:static!important;width:40px!important;height:40px!important}
.thumb .ph{font-size:0;align-items:center;padding:0 0 0 50%}
.thumb .ph svg{width:28px!important;height:28px!important}
.viewer .past{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--pos)) 0 0)}
.viewer .pl{position:absolute;inset:0;opacity:0;transition:opacity .7s ease}
.viewer .pl.on{opacity:1}
.viewer .divider{position:absolute;top:0;bottom:0;left:var(--pos);width:3px;margin-left:-1.5px;background:#fff;pointer-events:none}
.viewer .knob{position:absolute;top:50%;left:50%;width:58px;height:58px;margin:-29px 0 0 -29px;border-radius:999px;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(0,0,0,.25)}
.viewer input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}
.viewer:has(input:focus-visible){outline:3px solid var(--now);outline-offset:4px}
.tag{position:absolute;top:16px;padding:8px 14px;border-radius:10px;font-size:14px;line-height:1.2;pointer-events:none;display:flex;gap:8px;align-items:baseline}
.tag b{font-size:16px}
.tag.tp{left:16px;background:#4A3826;color:#F7EBD3}
.tag.tn{right:16px;background:#22313D;color:#E6EEF4}
.hint{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);background:rgba(20,18,15,.72);color:#fff;padding:8px 14px;border-radius:999px;font-size:14px;pointer-events:none;transition:opacity .5s;white-space:nowrap}
.viewer.touched .hint{opacity:0}

.heroCap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding:18px 0 0}
.heroCap h2{margin:0;font-family:'Prata',Georgia,serif;font-weight:400;font-size:28px}
.yr{color:var(--past);font-weight:700;font-size:15px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 26px;border-radius:999px;font-weight:700;font-size:16px;text-decoration:none;border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;font-family:inherit}
.btn.primary{background:var(--btn);color:var(--btn-ink);border-color:var(--btn)}
.btn[disabled]{opacity:.55;cursor:not-allowed}

/* places ribbon */
.places{padding:72px 0 24px}
.placesHead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px}
.placesHead h2{margin:0;font-family:'Prata',Georgia,serif;font-weight:400;font-size:clamp(30px,3.6vw,44px)}
.seg{display:inline-flex;background:var(--chip);border-radius:999px;padding:4px}
.seg button{min-height:40px;padding:0 18px;border:0;border-radius:999px;background:transparent;color:var(--ink);font:600 15px/1 'Manrope',system-ui,sans-serif;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.ribbonWrap{position:relative}
.ribbon{list-style:none;margin:0;padding:34px 0 12px;display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin}
.ribbon::before{content:"";position:absolute;left:0;right:0;top:13px;height:2px;background:var(--line)}
.ribbon li{flex:0 0 clamp(220px,24vw,280px);scroll-snap-align:start;position:relative}
.ribbon li::before{content:"";position:absolute;top:-27px;left:4px;width:14px;height:14px;border-radius:999px;background:var(--bg);border:3px solid var(--past)}
.card{display:flex;flex-direction:column;gap:6px;text-decoration:none}
.thumb{position:relative;aspect-ratio:4/3;border-radius:14px;overflow:hidden;margin-bottom:6px}
.thumb svg{position:absolute;inset:0;width:100%;height:100%}
.thumb .half{position:absolute;inset:0;clip-path:inset(0 50% 0 0)}
.thumb::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:2px;margin-left:-1px;background:#fff}
.card .ttl{font-family:'Prata',Georgia,serif;font-size:20px;line-height:1.2}
.card .area{color:var(--muted);font-size:14px}
.card:hover .ttl{text-decoration:underline;text-underline-offset:4px}
.scrollBtns{display:flex;gap:8px}
.round{width:46px;height:46px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.round:hover{border-color:var(--ink)}

/* place page */
.placeHead{padding:8px 0 24px;display:flex;flex-direction:column;gap:12px}
.placeHead h1{font-size:clamp(38px,6vw,72px)}
.meta{display:flex;gap:14px;align-items:baseline;flex-wrap:wrap}
.meta .area{color:var(--muted);font-size:15px}
.ctrl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding:20px 0 8px}
.chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.chips .lbl{color:var(--muted);font-size:15px;margin-right:4px}
.chip{min-height:44px;padding:0 18px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--ink);font:700 15px/1 'Manrope',system-ui,sans-serif;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.chip small{font-weight:400;color:var(--muted);font-size:13px}
.chip[aria-pressed="true"]{background:var(--past);border-color:var(--past);color:var(--bg)}
.chip[aria-pressed="true"] small{color:var(--bg)}
.actions{display:flex;flex-wrap:wrap;gap:10px}
.src{color:var(--muted);font-size:14px;margin:10px 0 0;max-width:80ch}
.pn{display:flex;justify-content:space-between;gap:16px;padding:48px 0 16px;border-top:1px solid var(--line);margin-top:40px}
.pn a{display:flex;flex-direction:column;gap:2px;text-decoration:none;max-width:48%}
.pn a.next{text-align:right;margin-left:auto}
.pn small{color:var(--muted);font-size:14px}
.pn span{font-family:'Prata',Georgia,serif;font-size:22px}
.pn a:hover span{text-decoration:underline;text-underline-offset:4px}

footer{padding:40px 0 48px;color:var(--muted);font-size:14px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;border-top:1px solid var(--line);margin-top:48px}
footer a{color:var(--muted)}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (prefers-reduced-motion:reduce){.viewer .pl{transition:none}.hint{transition:none}}
.src a{color:inherit;text-underline-offset:3px}
