/* Scroll & Seek — parchment light / deep-violet dark, Picker's Rock liquid glass */
:root{
  --page:#F4ECDA;--card:#FBF6EA;--line:#E3D6BC;--text:#2B2330;--muted:#6B6070;
  --accent:#7A1F3D;--accent2:#5B3FB5;--gilt:#8A6516;--orn:#C9A24A;--teal:#2F7F72;
  --glass:rgba(251,246,234,.55);--glass-edge:linear-gradient(160deg,rgba(255,255,255,.9),rgba(255,255,255,.25) 40%,rgba(201,162,74,.45));
  --glass-shadow:inset 0 1px 0 rgba(255,255,255,.85),0 10px 30px -14px rgba(74,48,20,.35);
  --lens:linear-gradient(180deg,rgba(255,255,255,.75),rgba(255,255,255,.25) 55%,rgba(255,255,255,.45)),linear-gradient(135deg,rgba(122,31,61,.22),rgba(91,63,181,.22));
  --lens-shadow:inset 0 1px 0 rgba(255,255,255,.95),inset 0 0 0 1px rgba(201,162,74,.35),0 6px 18px -6px rgba(122,31,61,.45),0 1px 3px rgba(60,40,20,.18);
  --serif:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--display:"Plus Jakarta Sans",Inter,system-ui,sans-serif;--sans:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --fx1:#C9A24A;--fx2:#7A1F3D;--fx3:#5B3FB5;--fx4:#2F7F72;--fx5:#E9B949;--fxdove:#fffdf6;--fxdark:#3b2f45;--fxlight:#fff7e0;
  --vs:1;--r:22px;--header-h:64px;color-scheme:light}
html[data-theme="dark"]{
  --page:#16131F;--card:#201B2E;--line:rgba(255,255,255,.09);--text:#E6DFD0;--muted:#A9A1B6;
  --accent:#EE9AB3;--accent2:#B9A3FA;--gilt:#E3C26F;--orn:#E3C26F;--teal:#7FDCCB;
  --glass:rgba(20,16,40,.42);--glass-edge:linear-gradient(160deg,rgba(255,255,255,.28),rgba(255,255,255,.06) 40%,rgba(167,139,250,.38));
  --glass-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 16px 40px -16px rgba(0,0,0,.8);
  --lens:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 55%,rgba(255,255,255,.14)),linear-gradient(135deg,rgba(167,139,250,.50),rgba(94,234,212,.24));
  --lens-shadow:inset 0 1px 0 rgba(255,255,255,.65),inset 0 -1px 1px rgba(255,255,255,.18),inset 0 0 0 1px rgba(255,255,255,.18),0 6px 18px -6px rgba(167,139,250,.85),0 1px 3px rgba(0,0,0,.35);
  --fx1:#E3C26F;--fx2:#EE9AB3;--fx3:#B9A3FA;--fx4:#7FDCCB;--fx5:#ffd98a;--fxdove:#f4efff;--fxdark:#0b0912;--fxlight:#fff4d6;color-scheme:dark}
*{box-sizing:border-box}
html{background-color:var(--page);-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;background:var(--page);color:var(--text);font:calc(16px*var(--vs))/1.5 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:clip}
button,select{font:inherit;color:inherit}
[hidden]{display:none!important}
.status-strip{position:fixed;top:0;left:0;right:0;height:max(env(safe-area-inset-top,0px),1px);background-color:var(--page);z-index:1000;pointer-events:none}
@media (display-mode:standalone){html{overscroll-behavior-y:none}}
/* background: parchment grain (light) / violet glow (dark) */
.bg{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;
  background:radial-gradient(120% 70% at 50% -10%,rgba(201,162,74,.20),transparent 60%),radial-gradient(90% 60% at 100% 100%,rgba(122,31,61,.08),transparent 60%),linear-gradient(var(--page),var(--page))}
.bg::after{content:"";position:absolute;inset:0;opacity:.35;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .33 0 0 0 0 .18 0 0 0 .22 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.orb{position:absolute;border-radius:50%;filter:blur(60px);opacity:.0}
html[data-theme="dark"] .bg{background:radial-gradient(100% 60% at 50% -10%,rgba(167,139,250,.22),transparent 60%),radial-gradient(80% 50% at 0% 100%,rgba(94,234,212,.10),transparent 60%),radial-gradient(70% 50% at 100% 80%,rgba(238,154,179,.10),transparent 60%),linear-gradient(var(--page),var(--page))}
html[data-theme="dark"] .bg::after{opacity:.12;mix-blend-mode:screen}
html[data-theme="dark"] .orb{opacity:.35}
.o1{width:340px;height:340px;left:-80px;top:120px;background:#6d4bd6}.o2{width:300px;height:300px;right:-90px;top:40%;background:#2aa89a;opacity:.18!important}.o3{width:260px;height:260px;left:30%;bottom:-120px;background:#c2577c;opacity:.2!important}

/* header */
.topbar{position:sticky;top:0;z-index:30;height:calc(var(--header-h) + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left));display:flex;align-items:center;justify-content:space-between;
  background:linear-gradient(var(--page),var(--page));border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font:800 20px/1 var(--display);letter-spacing:-.02em}
.brand svg{width:30px;height:30px}.brand em,.dr-title em,.sp-title em{font-style:normal;color:var(--accent);font-weight:800}
.burger{width:44px;height:44px;border-radius:14px;border:1px solid var(--line);background:var(--card);display:grid;place-content:center;gap:4px;cursor:pointer;box-shadow:var(--glass-shadow);-webkit-tap-highlight-color:transparent}
.burger i{display:block;width:18px;height:2px;border-radius:2px;background:var(--text);transition:transform .25s,opacity .2s}
.burger[aria-expanded="true"] i:nth-child(1){transform:translateY(6px) rotate(45deg)}.burger[aria-expanded="true"] i:nth-child(2){opacity:0}.burger[aria-expanded="true"] i:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* ---------- glass pill (Picker's Rock GlassSegmented, no-library port) ---------- */
.nav-wrap{position:fixed;z-index:40;top:calc(env(safe-area-inset-top) + 10px);left:0;right:0;display:flex;justify-content:center;pointer-events:none}
.gpill{position:relative;display:inline-flex;padding:4px;border-radius:999px;touch-action:pan-y;user-select:none;-webkit-user-select:none;pointer-events:auto;-webkit-tap-highlight-color:transparent;
  background:linear-gradient(160deg,rgba(255,255,255,.16),rgba(255,255,255,.04)) padding-box,linear-gradient(var(--glass),var(--glass)) padding-box,var(--glass-edge) border-box;border:1px solid transparent;
  -webkit-backdrop-filter:blur(22px) saturate(175%);backdrop-filter:blur(22px) saturate(175%);box-shadow:var(--glass-shadow)}
.gp-lens{position:absolute;top:4px;bottom:4px;left:0;width:0;border-radius:999px;pointer-events:none;z-index:0;will-change:transform,width;contain:layout paint;opacity:0;overflow:hidden;background:var(--lens);box-shadow:var(--lens-shadow);transition:box-shadow .2s,filter .2s}
.gp-lens.is-dragging{filter:brightness(1.08) saturate(1.15)}
.gp-sheen{position:absolute;top:0;bottom:0;left:50%;width:60%;margin-left:-30%;background:radial-gradient(50% 60% at 50% 30%,rgba(255,255,255,.55),transparent 70%);opacity:.7}
.gp-opt{position:relative;z-index:1;display:inline-flex;align-items:center;gap:7px;border:0;background:none;color:var(--muted);cursor:pointer;font-weight:650;font-size:14px;padding:9px 18px;border-radius:999px;white-space:nowrap;touch-action:pan-y;-webkit-tap-highlight-color:transparent}
.gp-opt span{transition:transform .18s cubic-bezier(.2,.9,.3,1.3)}
.gp-opt.is-active{color:var(--text)}.gp-opt:hover{color:var(--text)}
.gp-opt.is-lensed span,.gp-opt.is-lensed .tab-icon{transform:scale(1.1)}
.gp-opt:focus-visible{outline:2px solid var(--accent2);outline-offset:1px}
.tab-icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .18s}
@media (min-width:701px){.topbar{justify-content:space-between}}
@media (max-width:700px){
  .nav-wrap{top:auto;left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom))}
  .gpill{width:min(420px,100%);padding:5px;border-radius:30px;box-shadow:var(--glass-shadow),0 18px 40px -12px rgba(0,0,0,.45)}
  .gp-opt{flex:1;flex-direction:column;gap:2px;padding:7px 4px;font-size:11px;justify-content:center}
  .tab-icon{width:22px;height:22px}
  .gp-lens{top:5px;bottom:5px;border-radius:24px}
  .topbar{background:var(--page)}
  .main{padding-bottom:calc(112px + env(safe-area-inset-bottom))!important}
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.gpill{background:linear-gradient(var(--card),var(--card)) padding-box,var(--glass-edge) border-box}}
@media (prefers-reduced-transparency:reduce){.gpill{-webkit-backdrop-filter:none;backdrop-filter:none;background:linear-gradient(var(--card),var(--card)) padding-box,var(--glass-edge) border-box}}

/* layout */
.main{max-width:980px;margin:0 auto;padding:22px max(16px,env(safe-area-inset-left)) 60px}
.view{animation:view-in .35s ease both}
@keyframes view-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 1px 0 rgba(255,255,255,.4) inset,0 12px 30px -22px rgba(60,35,10,.45)}
html[data-theme="dark"] .card{box-shadow:0 1px 0 rgba(255,255,255,.05) inset,0 18px 40px -26px rgba(0,0,0,.9)}
.sec-h{font:750 calc(22px*var(--vs))/1.2 var(--display);letter-spacing:-.015em;margin:28px 4px 12px;display:flex;align-items:center;gap:12px}
.sec-h::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--orn),transparent);opacity:.6}
.sec-h--soft{color:var(--muted);font-style:italic}
.lede{color:var(--muted);margin:-4px 4px 14px}
.hint{color:var(--muted);font-size:13px;text-align:center;margin:14px 0 0}
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:11px 18px;border:1px solid var(--line);background:var(--card);cursor:pointer;font-weight:650;font-size:14px;-webkit-tap-highlight-color:transparent;transition:transform .12s}
.btn:active,.icon-btn:active{transform:scale(.96)}
.btn svg,.icon-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.btn.gold{border:0;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent2));box-shadow:0 8px 20px -10px var(--accent)}
html[data-theme="dark"] .btn.gold{color:#1a1426;background:linear-gradient(135deg,var(--gilt),#f0d9a0)}
.btn.ghost{background:transparent}
.icon-btn{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--card);display:inline-grid;place-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .12s,color .2s}
.icon-btn[aria-pressed="true"]{color:var(--accent)}.icon-btn[aria-pressed="true"] svg{fill:currentColor}

/* verse card */
.verse-card{display:grid;grid-template-columns:minmax(0,1fr);overflow:hidden;border-radius:28px;background:var(--card);border:1px solid var(--line);position:relative;box-shadow:0 30px 60px -40px rgba(60,35,10,.6)}
html[data-theme="dark"] .verse-card{box-shadow:0 30px 60px -36px rgba(0,0,0,.95)}
.vc-art{margin:0;position:relative;aspect-ratio:4/3;background:#d9cbb0;overflow:hidden}
.vc-art img{width:100%;height:100%;object-fit:cover;display:block;filter:sepia(.35) contrast(1.02);transition:opacity .4s,transform 6s ease-out;transform:scale(1.04)}
.vc-art img.in{transform:scale(1)}
html[data-theme="dark"] .vc-art img{filter:sepia(.25) brightness(.85) contrast(1.05)}
.vc-art::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,color-mix(in srgb,var(--card) 92%,transparent));pointer-events:none}
.vc-art figcaption{position:absolute;left:14px;bottom:10px;z-index:1;font-size:11.5px;color:var(--muted);font-style:italic;max-width:90%}
.vc-body{padding:6px 22px 22px;position:relative}
.vc-mood{margin:0 0 4px;font-size:11.5px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--gilt)}
.vc-text{margin:0;font:450 calc(23px*var(--vs))/1.5 var(--serif);letter-spacing:-.005em;cursor:pointer;border-radius:12px;outline-offset:6px;text-wrap:pretty}
.vc-text::first-letter{color:var(--accent);font-weight:650}
.vc-ref{margin:14px 0 0;font:700 calc(17px*var(--vs))/1.3 var(--display);color:var(--accent)}.vc-ver{color:var(--muted);font:600 11px/1 var(--sans);letter-spacing:.12em;margin-left:6px}
.vc-actions{display:flex;gap:10px;align-items:center;margin-top:18px;flex-wrap:wrap}
@media (min-width:760px){.verse-card{grid-template-columns:1.05fr 1fr}.vc-art{aspect-ratio:auto;min-height:420px}.vc-art::after{background:linear-gradient(90deg,transparent 60%,color-mix(in srgb,var(--card) 85%,transparent))}.vc-body{padding:34px 30px;align-self:center}.vc-text{font-size:calc(26px*var(--vs))}}
.moods{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px}
.mood{position:relative;display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:16px;border:1px solid var(--line);background:var(--card);cursor:pointer;text-align:left;font-weight:600;-webkit-tap-highlight-color:transparent;transition:transform .15s,border-color .2s,box-shadow .2s}
.mood:hover{transform:translateY(-1px)}
.mood i{width:28px;height:28px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--mc) 16%,transparent);color:var(--mc);flex:none}
.mood i svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.mood[aria-checked="true"]{border-color:var(--mc);box-shadow:0 0 0 3px color-mix(in srgb,var(--mc) 22%,transparent)}
.moods--soft .mood{background:color-mix(in srgb,var(--card) 70%,transparent)}

/* reader */
.reader-bar{display:grid;grid-template-columns:2fr 1fr 2fr;gap:10px;padding:12px;position:sticky;top:calc(var(--header-h) + env(safe-area-inset-top) + 64px);z-index:5}
@media (max-width:700px){.reader-bar{top:calc(var(--header-h) + env(safe-area-inset-top) + 8px)}}
.sel{display:flex;flex-direction:column;gap:3px;font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);min-width:0}
.sel select{appearance:none;-webkit-appearance:none;width:100%;border:1px solid var(--line);background:var(--page) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center/16px;border-radius:12px;padding:10px 30px 10px 12px;font-size:16px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--text)}
.chapter{margin-top:14px;padding:26px 22px 30px;font:400 calc(21px*var(--vs))/1.72 var(--serif)}
.chapter h2{font:800 30px/1.1 var(--display);letter-spacing:-.02em;margin:0 0 4px;text-align:center}
.chapter .ch-sub{text-align:center;color:var(--muted);font:600 11px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;margin:0 0 18px}
.chapter .orn{display:block;text-align:center;color:var(--orn);letter-spacing:.6em;margin:-6px 0 14px}
.vs{cursor:pointer;border-radius:6px;transition:background .2s;-webkit-tap-highlight-color:transparent}
.vs:hover,.vs:focus-visible{background:color-mix(in srgb,var(--orn) 18%,transparent);outline:none}
.vs sup{font:700 .55em/1 var(--sans);color:var(--accent);margin-right:3px;vertical-align:.5em}
.vs.read-flash{background:color-mix(in srgb,var(--accent2) 20%,transparent)}
.chap-foot{display:flex;justify-content:space-between;gap:8px;margin-top:14px;flex-wrap:wrap}
.chap-foot .btn.gold.done{background:linear-gradient(135deg,#2F7F72,#5b9f6a)}
.empty{color:var(--muted);text-align:center;font-style:italic;padding:30px 10px}

/* versions */
.versions{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.ver{position:relative;text-align:left;padding:16px 16px 14px;border-radius:18px;border:1px solid var(--line);background:var(--card);cursor:pointer;-webkit-tap-highlight-color:transparent}
.ver b{font:750 calc(19px*var(--vs))/1.2 var(--display);display:block}.ver .yr{font-size:12px;color:var(--gilt);font-weight:700;letter-spacing:.06em}
.ver p{margin:6px 0 0;font-size:13px;color:var(--muted)}
.ver .lic{display:inline-block;margin-top:8px;font-size:11px;font-weight:700;color:var(--teal)}
.ver[aria-checked="true"]{border-color:var(--accent2);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent2) 22%,transparent)}
.ver[aria-checked="true"]::after{content:"✓";position:absolute;right:14px;top:12px;color:var(--accent2);font-weight:800}
.ver .sample{font:italic calc(15.5px*var(--vs))/1.45 var(--serif);color:var(--text);margin-top:8px}
.eth{padding:18px}.eth p{margin:0 0 10px;color:var(--muted)}

/* map */
html[data-theme="dark"] .map .leaflet-tile-pane{filter:invert(1) hue-rotate(200deg) brightness(.92) contrast(.9) saturate(.6)}
.leaflet-container{font:inherit;background:var(--page)!important}
.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--card)!important;color:var(--text)!important;border:1px solid var(--line)}
.leaflet-popup-content{margin:12px 14px!important;font-size:14px}
.leaflet-popup-content b{font:750 18px/1.2 var(--display)}
.leaflet-control-attribution{background:color-mix(in srgb,var(--card) 80%,transparent)!important;color:var(--muted)!important}
.leaflet-control-attribution a{color:var(--accent2)!important}
.places{list-style:none;padding:0;margin:14px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.places button{width:100%;text-align:left;padding:12px 14px;border-radius:16px;border:1px solid var(--line);background:var(--card);cursor:pointer}
.places b{font:750 calc(17.5px*var(--vs))/1.2 var(--display);display:block}.places small{color:var(--muted)}
.linkish{border:0;background:none;color:var(--accent2);font-weight:700;cursor:pointer;padding:6px 0;text-decoration:underline;text-underline-offset:3px}

/* drawer (Donnelly) */
.drawer{position:fixed;inset:0;z-index:80;visibility:hidden;pointer-events:none}
.drawer.is-active{visibility:visible;pointer-events:auto}
.dr-scrim{position:absolute;inset:0;background:rgba(20,12,30,.42);opacity:0;transition:opacity .3s ease;touch-action:none}
.drawer.is-open .dr-scrim{opacity:1}
.dr-panel{position:absolute;top:0;right:0;bottom:0;width:min(370px,88vw);display:flex;flex-direction:column;transform:translate3d(104%,0,0);transition:transform .42s cubic-bezier(.2,.9,.25,1);outline:none;
  background:linear-gradient(160deg,rgba(255,255,255,.12),rgba(255,255,255,.02)) padding-box,linear-gradient(var(--card),var(--card)) padding-box,var(--glass-edge) border-box;border-left:1px solid transparent;
  box-shadow:-30px 0 60px -30px rgba(0,0,0,.5);contain:layout paint style;backface-visibility:hidden;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
.drawer.is-open .dr-panel{transform:none}
.dr-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px 22px}
.dr-title{font:800 22px/1 var(--display);letter-spacing:-.02em}
.dr-body{overflow-y:auto;padding:0 12px 28px;overscroll-behavior:contain}
.dr-sec{margin:14px 0 4px 10px;font-size:10.5px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--gilt)}
.dr-link{display:flex;align-items:center;gap:12px;width:100%;padding:11px 12px;border:0;border-radius:14px;background:none;cursor:pointer;text-align:left;font-weight:600;color:var(--text)}
.dr-link:hover,.dr-link:focus-visible{background:color-mix(in srgb,var(--accent2) 12%,transparent);outline:none}
.dr-link small{display:block;font-weight:500;color:var(--muted);font-size:12px}
.dr-link .ic{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent2) 14%,transparent);color:var(--accent2);flex:none}
.dr-link .ic svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.dr-group{border-radius:14px}
.dr-group summary{list-style:none;cursor:pointer}.dr-group summary::-webkit-details-marker{display:none}
.dr-group summary .chev{margin-left:auto;transition:transform .2s;color:var(--muted)}.dr-group[open] summary .chev{transform:rotate(90deg)}
.dr-group .dr-link{padding-left:56px;font-weight:550;font-size:14px}
.seg3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px 10px}
.seg3 button{border:1px solid var(--line);background:var(--page);border-radius:12px;padding:9px 4px;cursor:pointer;font-weight:650;font-size:13px}
.seg3 button[aria-pressed="true"]{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-color:transparent}
html[data-theme="dark"] .seg3 button[aria-pressed="true"]{color:#1a1426;background:linear-gradient(135deg,var(--gilt),#f0d9a0)}
.toggle{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;font-weight:600}
.toggle input{width:44px;height:26px;appearance:none;-webkit-appearance:none;border-radius:20px;background:var(--line);position:relative;cursor:pointer;transition:background .2s;flex:none}
.toggle input::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.toggle input:checked{background:var(--accent2)}.toggle input:checked::after{transform:translateX(18px)}
html.dr-lock,html.dr-lock body{overflow:hidden}

/* sheet (compare + pages) */
.sheet{position:fixed;inset:0;z-index:90;visibility:hidden;pointer-events:none}
.sheet.is-active{visibility:visible;pointer-events:auto}
.sh-scrim{position:absolute;inset:0;background:rgba(20,12,30,.38);opacity:0;transition:opacity .3s}
.sheet.is-open .sh-scrim{opacity:1}
.sh-panel{position:absolute;left:0;right:0;bottom:0;max-height:92vh;height:92vh;display:flex;flex-direction:column;background:var(--card);border-radius:26px 26px 0 0;border:1px solid var(--line);transform:translate3d(0,104%,0);transition:transform .42s cubic-bezier(.2,.9,.25,1);outline:none;box-shadow:0 -30px 60px -30px rgba(0,0,0,.5);padding-bottom:env(safe-area-inset-bottom)}
.sheet.is-open .sh-panel{transform:none}
@media (min-width:860px){.sh-panel{left:50%;right:auto;top:5vh;bottom:5vh;height:auto;width:min(1100px,92vw);border-radius:26px;transform:translate3d(-50%,30px,0) scale(.98);opacity:0;transition:transform .35s cubic-bezier(.2,.9,.25,1),opacity .25s}.sheet.is-open .sh-panel{transform:translate3d(-50%,0,0);opacity:1}}
.sh-head{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}
.sh-head h2{flex:1;margin:0;font:750 20px/1.2 var(--display);text-align:center}.sh-sp{width:44px}
.sh-body{overflow-y:auto;padding:16px 18px 30px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.cmp{display:grid;grid-template-columns:1fr;gap:10px}
@media (min-width:860px){.cmp{grid-template-columns:repeat(3,minmax(0,1fr))}}
.cmp-item{padding:14px 16px;border-radius:16px;border:1px solid var(--line);background:var(--page)}
.cmp-item h3{margin:0 0 6px;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--gilt);display:flex;justify-content:space-between;gap:8px}
.cmp-item h3 span{color:var(--muted);font-weight:600;letter-spacing:.04em;text-transform:none}
.cmp-item p{margin:0;font:400 calc(19.5px*var(--vs))/1.55 var(--serif)}
.cmp-item.is-current{border-color:var(--accent2)}
.cmp-item.na p{color:var(--muted);font-style:italic;font-size:15px}
.page h3{font:750 calc(21px*var(--vs))/1.25 var(--display);margin:22px 0 8px}
.page p{font:400 calc(19.5px*var(--vs))/1.65 var(--serif);margin:0 0 12px}
.page .meta{font:500 13px/1.5 var(--sans);color:var(--muted);padding:12px 14px;border:1px dashed var(--line);border-radius:14px;margin-bottom:16px}
.page .meta a{color:var(--accent2)}
.page .part{font:700 13px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--gilt);text-align:center;margin:30px 0 10px}
.page .notes p{font-size:14px;font-family:var(--sans);color:var(--muted)}
.page .toc{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.page .toc button{border:1px solid var(--line);background:var(--page);border-radius:999px;padding:5px 10px;font-size:12px;cursor:pointer}
.credit{padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}.credit b{font-family:var(--display);font-size:16px}.credit a{color:var(--accent2);word-break:break-all}
.saved-item{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--line)}
.saved-item p{flex:1;margin:0;font:400 calc(19px*var(--vs))/1.5 var(--serif)}.saved-item p b{display:block;font-size:14px;color:var(--accent);margin-top:4px}
.eth-v{padding:12px 0;border-bottom:1px solid var(--line)}.eth-v p{margin:0;font:400 calc(19px*var(--vs))/1.55 var(--serif)}.eth-v b{color:var(--accent);font:600 15px var(--serif)}

@media (min-width:701px){.toast{bottom:30px}}

/* ---------- splash ---------- */
.splash{position:fixed;inset:0;z-index:200;display:grid;place-items:center;align-content:center;gap:10px;cursor:pointer;overflow:hidden;
  background:radial-gradient(80% 60% at 50% 45%,#fff8e6,var(--page) 70%);transition:opacity .45s ease,visibility .45s}
html[data-theme="dark"] .splash{background:radial-gradient(80% 60% at 50% 45%,#2c2147,#16131F 70%)}
html.splash-seen .splash{display:none}
.splash.is-leaving{opacity:0;visibility:hidden;pointer-events:none}
.sp-rays{position:absolute;left:50%;top:44%;width:180vmax;height:180vmax;margin:-90vmax 0 0 -90vmax;opacity:0;
  background:repeating-conic-gradient(from 0deg,rgba(201,162,74,.16) 0 6deg,transparent 6deg 18deg);-webkit-mask:radial-gradient(closest-side,#000,transparent 70%);mask:radial-gradient(closest-side,#000,transparent 70%);animation:sp-rays 2.2s ease-out forwards,sp-spin 30s linear infinite}
html[data-theme="dark"] .sp-rays{background:repeating-conic-gradient(from 0deg,rgba(227,194,111,.12) 0 6deg,transparent 6deg 18deg)}
.sp-glow{position:absolute;left:50%;top:44%;width:60vmin;height:60vmin;margin:-30vmin 0 0 -30vmin;border-radius:50%;background:radial-gradient(circle,rgba(233,185,73,.55),rgba(233,185,73,0) 65%);animation:sp-glow 2s ease-out forwards}
.sp-scroll{position:relative;width:150px;display:grid;justify-items:center;margin-bottom:6px}
.sp-rod{display:block;width:170px;height:14px;border-radius:8px;background:linear-gradient(180deg,#d7b25e,#8a6516);box-shadow:0 3px 8px -3px rgba(0,0,0,.4);position:relative;z-index:2}
.sp-rod::before,.sp-rod::after{content:"";position:absolute;top:-3px;width:12px;height:20px;border-radius:6px;background:#7a5512}.sp-rod::before{left:-8px}.sp-rod::after{right:-8px}
.sp-paper{width:150px;height:0;background:linear-gradient(90deg,#efe1bf,#fbf3df 20%,#fbf3df 80%,#efe1bf);display:grid;place-items:center;overflow:hidden;animation:sp-unroll 1s .25s cubic-bezier(.3,.8,.3,1) forwards;box-shadow:inset 0 6px 8px -6px rgba(0,0,0,.35),inset 0 -6px 8px -6px rgba(0,0,0,.35)}
.sp-orn{color:#8a6516;font-size:28px;opacity:0;animation:sp-fade .5s .9s forwards}
.sp-title{position:relative;margin:8px 0 0;font:800 clamp(38px,9vw,60px)/1 var(--display);letter-spacing:-.03em;color:var(--text);opacity:0;transform:translateY(8px);animation:sp-title .8s .55s ease-out forwards;letter-spacing:.01em}
.sp-sub{position:relative;margin:0;color:var(--muted);font:500 17px/1 var(--sans);opacity:0;animation:sp-fade .7s 1s forwards}
@keyframes sp-rays{0%{opacity:0;transform:scale(.6)}100%{opacity:1;transform:scale(1)}}
@keyframes sp-spin{to{rotate:360deg}}
@keyframes sp-glow{0%{opacity:0;transform:scale(.3)}60%{opacity:1}100%{opacity:.85;transform:scale(1.15)}}
@keyframes sp-unroll{to{height:110px}}
@keyframes sp-title{to{opacity:1;transform:none}}
@keyframes sp-fade{to{opacity:1}}
@media (prefers-reduced-motion:reduce){.sp-rays,.sp-glow,.sp-paper,.sp-orn,.sp-title,.sp-sub{animation-duration:.01s!important;animation-delay:0s!important}.sp-paper{height:110px}.view{animation:none}}

/* ---------- FX particle layer (Savannah Tour GhostBurst technique) ---------- */
.fx-layer{position:fixed;inset:0;z-index:150;pointer-events:none;overflow:hidden}
.fx-o{position:absolute;width:0;height:0}
.fx-p{position:absolute;left:0;top:0;width:var(--s,20px);height:var(--s,20px);margin:calc(var(--s,20px)/-2) 0 0 calc(var(--s,20px)/-2);color:var(--c,var(--fx1));opacity:0;will-change:transform,opacity;
  animation:var(--a,fx-spray) var(--dur,1300ms) cubic-bezier(.2,.7,.3,1) var(--d,0ms) forwards}
.fx-p svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 4px color-mix(in srgb,currentColor 55%,transparent))}
.fx-p.blob{border-radius:50%;background:radial-gradient(circle,currentColor,transparent 68%)}
.fx-p.ring{border-radius:50%;border:2px solid currentColor}
.fx-p.rays{background:repeating-conic-gradient(from 0deg,color-mix(in srgb,currentColor 45%,transparent) 0 8deg,transparent 8deg 24deg);border-radius:50%;-webkit-mask:radial-gradient(closest-side,#000 20%,transparent 75%);mask:radial-gradient(closest-side,#000 20%,transparent 75%)}
.fx-p.dark{border-radius:50%;background:radial-gradient(circle,var(--fxdark),transparent 70%)}
.fx-p.bar{width:var(--w,160px);margin-left:calc(var(--w,160px)/-2);height:var(--s);border-radius:50%;background:radial-gradient(50% 100% at 50% 100%,currentColor,transparent 70%)}
@keyframes fx-spray{0%{opacity:0;transform:translate(0,0) scale(.35) rotate(0)}14%{opacity:1}60%{opacity:.95;transform:translate(var(--dx),var(--dy)) scale(1) rotate(var(--rot,0deg))}100%{opacity:0;transform:translate(calc(var(--dx)*1.12),calc(var(--dy) - 30px)) scale(.9) rotate(calc(var(--rot,0deg)*-.5))}}
@keyframes fx-rise{0%{opacity:0;transform:translate(0,10px) scale(.5)}20%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1) rotate(var(--rot,0deg))}}
@keyframes fx-fall{0%{opacity:0;transform:translate(var(--dx),calc(var(--dy) * -1)) scale(.8)}20%{opacity:.9}100%{opacity:0;transform:translate(calc(var(--dx)*1.1),40px) scale(1) rotate(var(--rot,0deg))}}
@keyframes fx-bounce{0%{opacity:0;transform:translate(0,0) scale(.3)}15%{opacity:1}45%{transform:translate(calc(var(--dx)*.6),var(--dy)) scale(1.1) rotate(var(--rot))}70%{transform:translate(calc(var(--dx)*.85),calc(var(--dy)*.45)) scale(.9)}85%{opacity:1;transform:translate(var(--dx),calc(var(--dy)*.6)) scale(1)}100%{opacity:0;transform:translate(calc(var(--dx)*1.05),calc(var(--dy)*.4)) scale(.6)}}
@keyframes fx-ripple{0%{opacity:.9;transform:scale(.2)}100%{opacity:0;transform:scale(var(--k,4))}}
@keyframes fx-pulse{0%{opacity:0;transform:scale(.4)}20%{opacity:1;transform:scale(1.15)}35%{transform:scale(.95)}50%{transform:scale(1.2)}65%{transform:scale(1)}100%{opacity:0;transform:translate(0,-40px) scale(1.05)}}
@keyframes fx-glow{0%{opacity:0;transform:scale(.3)}35%{opacity:.85}100%{opacity:0;transform:scale(var(--k,3))}}
@keyframes fx-rays{0%{opacity:0;transform:scale(.3) rotate(0)}30%{opacity:.9}100%{opacity:0;transform:scale(var(--k,3)) rotate(40deg)}}
@keyframes fx-settle{0%{opacity:0;transform:translateY(-40px) scale(.6) rotate(0)}15%{opacity:1;transform:translateY(-56px) scale(1) rotate(140deg)}35%{transform:translateY(-56px) rotate(-60deg)}55%{transform:translateY(-56px) rotate(25deg)}72%{transform:translateY(-56px) rotate(-8deg)}86%{opacity:1;transform:translateY(-56px) rotate(0)}100%{opacity:0;transform:translateY(-70px) rotate(0)}}
@keyframes fx-untangle{0%{opacity:0;transform:translate(0,-50px) scale(.7) scaleY(1)}20%{opacity:1;transform:translate(0,-60px) scale(1) rotate(-6deg)}70%{opacity:1;transform:translate(0,-70px) scale(1.1) scaleY(.08) rotate(0)}100%{opacity:0;transform:translate(0,-80px) scale(1.2) scaleY(.04)}}
@keyframes fx-shrink{0%{opacity:.9;transform:scale(var(--k,3))}100%{opacity:0;transform:scale(.1)}}
@keyframes fx-shake{0%{opacity:0;transform:translate(0,-60px)}10%{opacity:1}15%{transform:translate(-6px,-60px) rotate(-4deg)}25%{transform:translate(6px,-60px) rotate(4deg)}35%{transform:translate(-4px,-60px)}45%{transform:translate(3px,-60px)}60%{transform:translate(0,-62px);filter:saturate(.6) brightness(1.3)}100%{opacity:0;transform:translate(0,-80px) scale(1.15);filter:brightness(1.6)}}
@keyframes fx-lift{0%{opacity:0;transform:translate(0,10px) scale(.8)}20%{opacity:1;transform:translate(0,0) scale(1)}35%{transform:translate(0,4px) scale(1.05,.95)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.6)}}
@keyframes fx-clear{0%{opacity:0;transform:translate(0,-60px) scale(.8);filter:blur(6px)}25%{opacity:1;filter:blur(5px)}75%{opacity:1;filter:blur(0);transform:translate(0,-64px) scale(1)}100%{opacity:0;transform:translate(0,-72px) scale(1.06)}}
@keyframes fx-dawn{0%{opacity:0;transform:translateY(30px) scaleX(.4)}40%{opacity:1}100%{opacity:0;transform:translateY(-30px) scaleX(1.4)}}
@keyframes fx-flutter{0%{opacity:0;transform:translate(0,0) scale(.4)}15%{opacity:1}30%{transform:translate(calc(var(--dx)*.3),calc(var(--dy)*.3)) scaleX(.4)}45%{transform:translate(calc(var(--dx)*.5),calc(var(--dy)*.5)) scaleX(1)}60%{transform:translate(calc(var(--dx)*.7),calc(var(--dy)*.7)) scaleX(.4)}80%{opacity:1;transform:translate(calc(var(--dx)*.9),calc(var(--dy)*.9)) scaleX(1)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scaleX(.5)}}
@keyframes fx-fade{0%{opacity:0}25%{opacity:.9}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.fx-p{animation:fx-fade 900ms ease-out forwards!important;transform:translate(calc(var(--dx,0px)*.5),calc(var(--dy,0px)*.5))}.fx-p:nth-child(n+4){display:none}}
.fx-p[style*="fxdove"] svg{filter:drop-shadow(0 1px 2px rgba(138,101,22,.7)) drop-shadow(0 0 6px rgba(201,162,74,.5))}
@media (max-width:430px){.vc-actions .btn.gold{flex:1 1 100%;justify-content:center}.vc-actions .icon-btn{flex:1 1 0;border-radius:999px}}

/* =====================================================================================================
   Oct 23 round 2: status bar, drawer perf, More button, Donnelly lens, Chef Lynn toast, Savannah strip +
   cards, responsive tablet/desktop, modern sans + larger text, vibrant refresh, trophies, page turn, pickers
   ===================================================================================================== */
:root{--sat:env(safe-area-inset-top,0px);--ui:calc(.6 + var(--vs)*.4);
  --g-rose:linear-gradient(135deg,#ff8fab,#c2185b);--g-sun:linear-gradient(135deg,#ffd166,#f77f00);--g-sky:linear-gradient(135deg,#7dd3fc,#3b5bdb);
  --g-mint:linear-gradient(135deg,#8ce99a,#0ca678);--g-grape:linear-gradient(135deg,#b197fc,#6741d9);--g-ember:linear-gradient(135deg,#ffa94d,#d9480f);
  --g-teal:linear-gradient(135deg,#66d9e8,#0b7285);--g-gold:linear-gradient(135deg,#ffe08a,#c9a24a);--g-wine:linear-gradient(135deg,#f783ac,#7a1f3d);
  --shadow-c:rgba(122,31,61,.28)}
html[data-theme="dark"]{--shadow-c:rgba(0,0,0,.6)}

/* ---- iOS status bar / standalone (Chef Lynn fix: solid strip in the page colour, html/body solid, gradients-only
   fixed background, sticky header with no blur, parked below the iOS 26 top-edge blur zone in standalone) ---- */
html,body{background-color:var(--page)}
.status-strip{height:max(var(--sat),1px);background-color:var(--page)}
.topbar{-webkit-backdrop-filter:none;backdrop-filter:none}
@media (display-mode:standalone){
  :root{--sat:max(env(safe-area-inset-top,0px),2px)}
  html{overscroll-behavior-y:none}
  .topbar{height:calc(var(--header-h) + var(--sat) + 10px);padding-top:calc(var(--sat) + 10px)}
  .topbar .brand{transform:translateZ(0)}
  @media (min-width:701px){.nav-wrap{top:calc(var(--sat) + 20px)}}   /* desktop/tablet only: the phone pill lives at the bottom */
}

/* ---- modern sans wordmark ---- */
.brand span{font-family:var(--display);font-weight:800;letter-spacing:-.025em}
.brand svg{width:34px;height:34px;border-radius:10px;box-shadow:0 6px 14px -6px var(--shadow-c)}

/* ---- glass pill: More button (phones) + Donnelly Yachts lens (clear glass, grows under the finger) ---- */
.gp-sep,.gp-more{display:none}
.gp-opt.is-lensed span,.gp-opt.is-lensed .tab-icon{transform:scale(1.08)}
.gp-lens{background:radial-gradient(120% 140% at 50% 50%,rgba(255,255,255,.04) 50%,rgba(255,255,255,.22) 82%,rgba(255,255,255,.4) 100%);
  -webkit-backdrop-filter:blur(2px) saturate(180%) brightness(1.1) contrast(1.05);backdrop-filter:blur(2px) saturate(180%) brightness(1.1) contrast(1.05);
  box-shadow:inset 1.5px 1.5px 1px -.5px rgba(255,255,255,.95),inset -1px -1px 1px -.5px rgba(255,255,255,.7),inset 0 -3px 4px -2px rgba(91,63,181,.22),inset 0 0 9px 0 rgba(255,255,255,.35),inset 0 0 0 .5px rgba(201,162,74,.5),0 6px 16px -8px var(--shadow-c);
  transition:opacity .2s,box-shadow .32s cubic-bezier(.34,1.56,.64,1),filter .32s cubic-bezier(.34,1.56,.64,1),top .34s cubic-bezier(.34,1.56,.64,1),bottom .34s cubic-bezier(.34,1.56,.64,1)}
html[data-theme="dark"] .gp-lens{background:radial-gradient(120% 140% at 50% 50%,rgba(255,255,255,0) 52%,rgba(255,255,255,.08) 78%,rgba(185,163,250,.2) 100%);
  -webkit-backdrop-filter:blur(3px) saturate(170%) brightness(1.28) contrast(1.05);backdrop-filter:blur(3px) saturate(170%) brightness(1.28) contrast(1.05);
  box-shadow:inset 1.5px 1.5px 1px -.5px rgba(255,255,255,.6),inset -1px -1px 1px -.5px rgba(255,255,255,.35),inset 0 -3px 4px -2px rgba(0,0,0,.35),inset 0 0 9px 0 rgba(185,163,250,.25),inset 0 0 0 .5px rgba(255,255,255,.25),0 6px 16px -8px rgba(0,0,0,.7)}
.gp-lens.is-dragging{top:1px;bottom:1px;filter:brightness(1.06) saturate(1.1);
  box-shadow:inset 1.5px 1.5px 1px -.5px #fff,inset -1px -1px 1px -.5px #fff,inset 0 -3px 5px -2px rgba(91,63,181,.3),inset 0 0 12px 0 rgba(255,255,255,.4),inset 0 0 0 .5px rgba(255,255,255,.7),0 0 0 1px rgba(255,255,255,.55),0 0 18px 2px rgba(201,162,74,.45),0 14px 26px -10px var(--shadow-c)}
.gpill{overflow:visible}
@media (max-width:700px){
  .gp-lens.is-dragging{top:2px;bottom:2px}
  .gp-sep{display:block;flex:none;width:1px;margin:10px 2px;background:linear-gradient(transparent,var(--line),transparent)}
  .gp-more{display:inline-flex;flex:0 0 58px;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;background:none;color:var(--muted);font:650 11px/1 var(--sans);padding:7px 2px;border-radius:24px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .18s cubic-bezier(.2,.9,.3,1.3)}
  .gp-more:active{transform:scale(.92)}
  .gp-more[aria-expanded="true"]{color:var(--accent)}
}
@media (prefers-reduced-motion:reduce){.gp-lens{transition:none!important}}

/* ---- drawer: transform/opacity only; no glass blur layers (iPhone lag) ---- */
.dr-panel{will-change:auto}
.drawer.is-open .dr-panel{transform:translate3d(0,0,0)}
.dr-body{contain:content}
@media (min-width:1100px){.dr-panel{width:400px}}

/* ---- toast: Chef Lynn's drop-in glass pill (top, under the header, safe-area aware) ---- */
.toast{position:fixed;left:50%;top:var(--toast-top,calc(var(--sat) + 76px));bottom:auto;z-index:130;opacity:0;pointer-events:none;transform:translate(-50%,-24px);
  padding:.75rem 1.25rem;border-radius:999px;font-weight:650;font-size:calc(15px*var(--ui));color:var(--text);white-space:nowrap;max-width:calc(100vw - 24px);overflow:hidden;text-overflow:ellipsis;
  transition:transform .45s cubic-bezier(.34,1.56,.64,1),opacity .25s;
  background:linear-gradient(160deg,rgba(255,255,255,.62),rgba(255,255,255,.14)) padding-box,linear-gradient(rgba(251,246,234,.6),rgba(251,246,234,.6)) padding-box,var(--glass-edge) border-box;
  border:1px solid transparent;-webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%);box-shadow:var(--glass-shadow)}
html[data-theme="dark"] .toast{color:#F6F1E9;background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.03)) padding-box,linear-gradient(rgba(32,27,46,.72),rgba(32,27,46,.72)) padding-box,var(--glass-edge) border-box}
.toast.show{transform:translate(-50%,0);opacity:1}
.toast .t-ic{display:inline-grid;place-items:center;width:22px;height:22px;margin-right:8px;border-radius:50%;background:var(--g-gold);color:#4a2c00;vertical-align:-5px}
.toast .t-ic svg{width:13px;height:13px;fill:currentColor}

/* ---- Savannah Tour place strip (components/PlaceStrip.tsx + globals.css .strip-*) ---- */
.strip-frame{position:relative;border-radius:22px;padding:6px 0 6px 6px;margin:0 0 12px;background:color-mix(in srgb,var(--card) 70%,transparent);border:1px solid var(--line);box-shadow:0 10px 26px -18px var(--shadow-c)}
.place-strip{overflow:hidden;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;border-radius:15px;isolation:isolate}
.place-strip-track{list-style:none;margin:0;padding:0;display:flex;width:max-content;will-change:transform}
.place-strip-track li{flex:none;margin-right:8px}
.strip-tile{position:relative;display:block;width:132px;height:88px;padding:0;border-radius:15px;overflow:hidden;border:2px solid rgba(255,255,255,.9);background:#c9b48a;cursor:pointer;
  box-shadow:0 6px 14px -8px rgba(12,22,40,.6);transition:transform .3s cubic-bezier(.2,1.3,.4,1);-webkit-user-drag:none}
html[data-theme="dark"] .strip-tile{border-color:rgba(255,255,255,.18)}
.strip-tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;-webkit-user-drag:none;pointer-events:none;filter:sepia(.15) saturate(1.1)}
.strip-tile .strip-name{position:absolute;inset:auto 0 0 0;padding:14px 8px 5px;font:750 12px/1.15 var(--sans);color:#fff;text-align:left;background:linear-gradient(180deg,transparent,rgba(0,0,0,.66))}
.strip-tile:hover,.strip-tile:focus-visible{transform:translateY(-2px) scale(1.04)}
.place-strip.dragging .strip-tile{transform:none}

/* ---- map layout + Savannah PlaceCard (bottom sheet on phones, floating card on tablets, docked on desktop) ---- */
.leaflet-container{background:#cfe0ea;font-family:var(--sans)}
html[data-theme="dark"] .leaflet-container{background:#121a2c}
.map .leaflet-tile-pane{filter:none!important}
.bm-land{fill:#f3e6c8;stroke:#c9b48a}
.bm-lake{fill:#cfe0ea;stroke:#9fb9c9}
.bm-river{stroke:#7fa6c2;stroke-opacity:.9}
html[data-theme="dark"] .bm-land{fill:#2a2340;stroke:#4a3f6b}
html[data-theme="dark"] .bm-lake{fill:#121a2c;stroke:#2f3a5a}
html[data-theme="dark"] .bm-river{stroke:#4f6d9a}
.bm-lbl{pointer-events:none}
.bm-lbl span{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;font:650 12px/1 var(--sans);color:#6b5a3a;text-shadow:0 0 3px #f3e6c8,0 0 6px #f3e6c8}
.bm-region span{font:800 11px/1 var(--display);letter-spacing:.22em;color:rgba(122,31,61,.55)}
.bm-sea span{font:italic 600 13px/1 var(--sans);color:#4c7593;text-shadow:0 0 4px #cfe0ea}
.bm-small span{font-size:10.5px}
.bm-river-l span{font:italic 600 10px/1 var(--sans);color:#4c7593;transform:translate(-50%,-50%) rotate(-80deg)}
html[data-theme="dark"] .bm-lbl span{color:#cfc4e6;text-shadow:0 0 3px #2a2340,0 0 6px #2a2340}
html[data-theme="dark"] .bm-region span{color:rgba(238,154,179,.6)}
html[data-theme="dark"] .bm-sea span,html[data-theme="dark"] .bm-river-l span{color:#86a4d6;text-shadow:0 0 4px #121a2c}
.leaflet-control-attribution{font:11px/1.4 var(--sans)!important;background:color-mix(in srgb,var(--card) 85%,transparent)!important;color:var(--muted)!important}
.leaflet-control-attribution a{color:var(--accent2)!important}
@keyframes card-in{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
.card-grab{position:absolute;left:50%;top:0;z-index:5;width:96px;height:26px;margin-left:-48px;display:grid;place-items:center}
.card-grab i{display:block;width:44px;height:5px;border-radius:3px;background:rgba(255,255,255,.92);box-shadow:0 1px 4px rgba(0,0,0,.45)}
.places button{display:flex;gap:12px;align-items:center;padding:10px;border-radius:20px}
.places img{width:64px;height:64px;border-radius:14px;object-fit:cover;flex:none;background:#c9b48a}
.places small{display:block;font-size:calc(13.5px*var(--vs));line-height:1.35;margin-top:2px}

/* ---- sheets: grab handle (Savannah) ---- */
.sh-grab{display:none}
@media (max-width:859px){
  .sh-grab{display:grid;place-items:center;height:18px;margin-bottom:-6px;touch-action:none;cursor:grab}
  .sh-grab i{width:44px;height:5px;border-radius:3px;background:var(--line)}
  .sh-head{touch-action:none}
}

/* ---- reader: two columns + side panel on wide screens; comfortable line length ---- */
.rd-layout{display:block}
.rd-side{display:none}
.chapter > p{max-width:68ch;margin-left:auto;margin-right:auto}
@media (min-width:1024px){
  .rd-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}
  .rd-side{display:block;position:sticky;top:calc(var(--header-h) + 150px);margin-top:14px;padding:18px}
  .rd-side h3{margin:0 0 10px;font:800 20px/1.1 var(--display)}
  .rs-prog{height:8px;border-radius:5px;background:color-mix(in srgb,var(--line) 80%,transparent);overflow:hidden;margin:0}
  .rs-prog span{display:block;height:100%;background:var(--g-gold);border-radius:5px}
  .rs-meta{margin:6px 0 12px;color:var(--muted);font-size:13px}
  .rs-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;max-height:46vh;overflow-y:auto;padding:2px}
  .rs-grid button{aspect-ratio:1;border-radius:50%;border:1px solid var(--line);background:var(--page);font:700 13px/1 var(--sans);cursor:pointer;color:var(--text);transition:transform .15s}
  .rs-grid button:hover{transform:scale(1.08)}
  .rs-grid button.is-read{background:var(--g-mint);color:#fff;border-color:transparent}
  .rs-grid button[aria-current="true"]{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent2) 45%,transparent);border-color:var(--accent2)}
  .rs-tip{margin:14px 0 0;color:var(--muted);font-size:13px}
}

/* ---- responsive: tablet (768-1099) and desktop (>=1100 / 1280) ---- */
@media (min-width:768px) and (max-width:1099px){
  .main{max-width:940px;padding-left:24px;padding-right:24px}
  .moods{grid-template-columns:repeat(3,minmax(0,1fr))}

}
@media (min-width:1100px){
  .main{max-width:1240px;padding-left:32px;padding-right:32px}
  #view-moods{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);column-gap:28px;align-items:start}
  #view-moods[hidden]{display:none}
  #view-moods > .view-hero{grid-column:1/-1}
  #view-moods > .verse-card{grid-column:1;grid-row:2 / span 6;position:sticky;top:calc(var(--header-h) + 76px)}
  #view-moods > :not(.verse-card):not(.view-hero){grid-column:2}
  #view-moods > .sec-h:first-of-type{margin-top:0}
  .verse-card{grid-template-columns:1fr}
  .vc-art{aspect-ratio:16/10;min-height:0}
  .vc-art::after{background:linear-gradient(180deg,transparent 55%,color-mix(in srgb,var(--card) 92%,transparent))}
  .vc-body{padding:10px 30px 28px}
  .moods{grid-template-columns:repeat(2,minmax(0,1fr))}
  .versions{grid-template-columns:repeat(3,minmax(0,1fr))}
  .sh-panel{width:min(1180px,92vw)}
}
@media (min-width:1440px){.main{max-width:1320px}}

/* =====================================================================
   MAP: ported from the Savannah Tour app (app/globals.css: .glass-chip/.glass-panel, .pin*, .chrome-glass, .strip-*,
   .locate-btn, .card-grab, .details-btn, card-in; components/search/search.css: .map-fab-wrap, .search-fab, .q-*),
   re-themed to Scroll & Seek (parchment/violet/burgundy, light + dark). No tour-only features.
   ===================================================================== */
:root{--nav-clear:16px}
@media (max-width:700px){:root{--nav-clear:calc(84px + env(safe-area-inset-bottom))}}
html.on-map,html.on-map body{overflow:hidden;overscroll-behavior:none}
html.on-map .main{padding-bottom:0!important}
.view.view-map{position:static;animation:none;transform:none}
.view-map .map-root{animation:view-in .35s ease both}
.map-root{position:fixed;left:0;right:0;bottom:0;top:calc(var(--header-h) + var(--sat,env(safe-area-inset-top)));overflow:hidden;z-index:5}
.map-box{position:absolute;inset:0}
.map-box .map,#map{position:absolute;inset:0;height:auto;width:auto}
.map-panel{display:none}
@media (min-width:1024px){
  .map-panel{display:flex;flex-direction:column;position:absolute;inset:0 auto 0 0;width:380px;z-index:20;background:var(--page);border-right:1px solid var(--line)}
  .map-box{left:380px}
}
@media (min-width:1280px){.map-panel{width:420px}.map-box{left:420px}}
/* glass materials (globals.css) */
.glass-chip{background:linear-gradient(180deg,rgba(255,252,244,.66),rgba(255,250,240,.46));-webkit-backdrop-filter:blur(14px) saturate(1.8);backdrop-filter:blur(14px) saturate(1.8);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),inset 0 0 0 .75px rgba(255,255,255,.6),0 8px 20px -10px rgba(74,48,20,.4),0 1px 3px rgba(74,48,20,.12);border:.5px solid rgba(60,40,20,.10)}
.glass-panel{background:linear-gradient(180deg,rgba(255,252,244,.86),rgba(251,246,234,.76));-webkit-backdrop-filter:blur(22px) saturate(1.8);backdrop-filter:blur(22px) saturate(1.8);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.95),inset 0 0 0 .75px rgba(255,255,255,.6),0 24px 50px -20px rgba(74,48,20,.5),0 2px 8px rgba(74,48,20,.12);border:.5px solid rgba(60,40,20,.10)}
html[data-theme="dark"] .glass-chip{background:linear-gradient(180deg,rgba(40,33,58,.78),rgba(28,23,42,.66));border-color:rgba(255,255,255,.09);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 8px 20px -10px rgba(0,0,0,.7)}
html[data-theme="dark"] .glass-panel{background:linear-gradient(180deg,rgba(36,30,52,.92),rgba(26,22,38,.88));border-color:rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 24px 50px -20px rgba(0,0,0,.85)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.glass-chip{background:var(--card)}.glass-panel{background:var(--card)}}
.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}
/* pins (PlacePin.tsx + .pin rules): teardrop SVG, shadow on the static SVG only, spring scale, selected 1.28, close pulse */
.pin-marker{background:none;border:0}
.pin{position:relative;display:block;cursor:pointer;transform-origin:50% 100%;transform:scale(.9);transition:transform .25s cubic-bezier(.2,1.6,.4,1)}
.pin svg{display:block;overflow:visible;filter:drop-shadow(0 4px 6px rgba(40,20,30,.38))}
.pin:hover{transform:scale(1.04)}
.pin.is-selected{transform:scale(1.28);z-index:3}
.pin.is-selected::before{content:"";position:absolute;left:50%;top:15px;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--era) 45%,transparent),transparent);pointer-events:none}
html[data-theme="dark"] .pin svg{filter:drop-shadow(0 0 1px rgba(0,0,0,.9)) drop-shadow(0 3px 6px rgba(0,0,0,.6))}
.map-moving .pin{transition:none}
.pin-pulse{animation:pin-pulse .8s ease-in-out 3}
.pin-pulse::after{content:"";position:absolute;z-index:-1;left:50%;top:40%;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;background:radial-gradient(closest-side,rgba(233,185,73,.75),rgba(233,185,73,0));animation:pin-pulse-glow .8s ease-in-out 3}
@keyframes pin-pulse{0%,100%{transform:scale(.9)}45%{transform:scale(1.3) translateY(-3px)}}
@keyframes pin-pulse-glow{0%,100%{opacity:0;transform:scale(.6)}45%{opacity:1;transform:scale(1.1)}}
@media (prefers-reduced-motion:reduce){.pin{transition:none}.pin-pulse,.pin-pulse::after{animation:none}}
/* top chrome: one faint static glass panel; toggle, chips, strip (globals.css .chrome-glass) */
.map-chrome{position:absolute;left:0;right:0;top:0;z-index:10;pointer-events:none}
.chrome-glass{position:relative;display:grid;gap:10px;padding:12px 12px 8px;pointer-events:none;
  background:linear-gradient(180deg,rgba(244,236,218,.18),rgba(244,236,218,.34));-webkit-backdrop-filter:blur(5px) saturate(1.3);backdrop-filter:blur(5px) saturate(1.3);
  box-shadow:0 10px 22px -18px rgba(74,48,20,.45);transition:padding-bottom .4s cubic-bezier(.2,.8,.2,1)}
.chrome-glass>*{pointer-events:auto}
.chrome-glass::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;pointer-events:none;background:linear-gradient(180deg,rgba(201,162,74,.55) 0 1px,rgba(255,255,255,.55) 1px 2px)}
.chrome-glass.is-collapsed{padding-bottom:2px}
.chrome-glass.is-collapsed::after{-webkit-mask-image:linear-gradient(90deg,#000 calc(50% - 52px),transparent calc(50% - 52px) calc(50% + 52px),#000 calc(50% + 52px));mask-image:linear-gradient(90deg,#000 calc(50% - 52px),transparent calc(50% - 52px) calc(50% + 52px),#000 calc(50% + 52px))}
html[data-theme="dark"] .chrome-glass{background:linear-gradient(180deg,rgba(22,19,31,.42),rgba(22,19,31,.58));box-shadow:0 10px 22px -18px rgba(0,0,0,.8)}
html[data-theme="dark"] .chrome-glass::after{background:linear-gradient(180deg,rgba(227,194,111,.4) 0 1px,rgba(255,255,255,.08) 1px 2px)}
@media (min-width:760px){.chrome-glass{padding:14px 20px 8px}}
@media (min-width:701px) and (max-width:1023px){.map-chrome{top:0}}
.mc-row{display:flex;align-items:center;gap:8px}
.cat-toggle{display:inline-flex;border-radius:999px;padding:4px;font:650 13px/1 var(--sans)}
.cat-toggle button{display:flex;align-items:center;gap:6px;border:0;background:none;border-radius:999px;padding:8px 12px;color:var(--muted);cursor:pointer;font:inherit;transition:background-color .2s,color .2s}
.cat-toggle button i{width:8px;height:8px;border-radius:50%}
.cat-toggle button[aria-checked="true"]{background:#fff;color:var(--text);box-shadow:0 1px 4px rgba(40,20,30,.18),inset 0 1px 0 #fff}
html[data-theme="dark"] .cat-toggle button[aria-checked="true"]{background:rgba(255,255,255,.16);box-shadow:inset 0 1px 0 rgba(255,255,255,.12)}
.mc-chips{display:flex;gap:8px;overflow-x:auto;margin:0 -12px;padding:0 12px 2px}
@media (min-width:760px){.mc-chips{margin:0;padding:0 0 2px}}
.mc-chip{flex:none;border-radius:999px;padding:9px 14px;font:650 13px/1 var(--sans);color:var(--text);cursor:pointer;transition:transform .15s}
.mc-chip:active{transform:scale(.95)}
.mc-chip.is-on{border:0;color:#fff;background:linear-gradient(135deg,var(--accent2),var(--accent));box-shadow:0 8px 18px -10px rgba(0,0,0,.6)}
/* photo strip in the chrome (globals.css .strip-wrap/.strip-frame/.strip-tab/.strip-grab) */
.strip-wrap{display:grid;grid-template-rows:1fr;transition:grid-template-rows .42s cubic-bezier(.2,.8,.2,1),opacity .3s ease}
.strip-wrap>.strip-inner{min-height:0;overflow:hidden;padding-top:2px}
.strip-wrap.is-collapsed{grid-template-rows:0fr;opacity:0;pointer-events:none}
.map-chrome .strip-frame{display:flex;align-items:center;margin:0;border-radius:22px;padding:6px 0 6px 6px;background:rgba(255,252,244,.8);border:1px solid rgba(255,255,255,.85);box-shadow:0 6px 18px -12px rgba(74,48,20,.35),inset 0 1px 0 rgba(255,255,255,.9)}
html[data-theme="dark"] .map-chrome .strip-frame{background:rgba(32,27,46,.84);border-color:rgba(255,255,255,.08);box-shadow:0 6px 18px -12px rgba(0,0,0,.8),inset 0 1px 0 rgba(255,255,255,.06)}
.map-chrome .place-strip{flex:1;min-width:0;border-radius:15px;isolation:isolate}
.map-chrome .strip-tile{width:104px;height:70px}
@media (min-width:760px){.map-chrome .strip-tile{width:124px;height:82px}}
.strip-era{position:absolute;top:5px;left:5px;width:10px;height:10px;border-radius:50%;border:1.5px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.4)}
.strip-hide{flex:none;margin:0 6px 0 8px;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);background:var(--card);color:var(--text);box-shadow:0 2px 8px rgba(40,20,30,.2);cursor:pointer}
.strip-hide svg,.strip-tab svg{fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.strip-grab{display:flex;justify-content:center;padding:5px 0 1px}
.strip-grab i{display:block;width:36px;height:4px;border-radius:2px;background:rgba(43,35,48,.28)}
html[data-theme="dark"] .strip-grab i{background:rgba(255,255,255,.3)}
.strip-tab-row{display:flex;justify-content:center}
.strip-tab{pointer-events:auto;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:5px;width:104px;height:25px;padding-bottom:4px;border-radius:0 0 14px 14px;font:700 11.5px/1 var(--sans);color:var(--text);
  background:rgba(244,236,218,.34);-webkit-backdrop-filter:blur(5px) saturate(1.3);backdrop-filter:blur(5px) saturate(1.3);border:1px solid rgba(201,162,74,.55);border-top:0;box-shadow:inset 0 -1px 0 rgba(255,255,255,.55),0 8px 16px -12px rgba(74,48,20,.5);animation:tab-in .35s cubic-bezier(.2,.8,.2,1);cursor:pointer}
.strip-tab[hidden]{display:none}
.strip-tab-grab{position:absolute;left:50%;bottom:3px;width:22px;height:3px;margin-left:-11px;border-radius:2px;background:currentColor;opacity:.3}
html[data-theme="dark"] .strip-tab{background:rgba(22,19,31,.6);border-color:rgba(227,194,111,.4)}
@keyframes tab-in{from{transform:translateY(-100%);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.strip-tab{animation:none}.chrome-glass,.strip-wrap{transition:none}}
/* phones: while a card is open, fold the strip + chips away so the selected pin has room above the card */
@media (max-width:759px){.map-chrome.card-open .strip-wrap,.map-chrome.card-open .strip-tab-row,.map-chrome.card-open .mc-chips{display:none}}
/* Leaflet controls under the chrome; recentre button below them (globals.css .locate-btn) */
.map-box .leaflet-top{top:calc(var(--map-chrome,150px))}
.map-box .leaflet-top.leaflet-right .leaflet-control-zoom{margin-top:10px;margin-right:10px;border:0;box-shadow:0 0 0 2px rgba(0,0,0,.1);border-radius:6px;overflow:hidden}
.leaflet-control-zoom a{background:var(--card)!important;color:var(--text)!important;border-color:var(--line)!important}
.leaflet-top.leaflet-left{display:none}
.locate-btn{position:absolute;right:10px;top:calc(var(--map-chrome,150px) + 78px);z-index:12;width:30px;height:30px;border-radius:6px;display:grid;place-items:center;border:0;background:var(--card);box-shadow:0 0 0 2px rgba(0,0,0,.1);color:var(--accent2);cursor:pointer;transition:top .4s cubic-bezier(.2,.8,.2,1)}
.locate-btn svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.map-box .leaflet-bottom.leaflet-right{bottom:calc(var(--nav-clear) - 6px)}
@media (max-width:759px){.map-box .leaflet-control-attribution{max-width:calc(100vw - 92px);white-space:normal}}
/* floating list button bottom-left (search.css .map-fab-wrap/.search-fab) */
.map-fab-wrap{position:absolute;z-index:15;bottom:calc(var(--nav-clear) + 2px);display:flex;gap:8px;align-items:center;pointer-events:none}
.map-fab-wrap>*{pointer-events:auto}
.map-fab-wrap--left{left:max(12px,calc(50% - 276px))}
@media (min-width:701px){.map-fab-wrap--left{left:16px;bottom:22px}}
@media (max-width:759px){.map-root:has(.map-card-host:not([hidden])) .map-fab-wrap{display:none}}
.search-fab{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;color:var(--accent2);-webkit-tap-highlight-color:transparent;touch-action:manipulation;cursor:pointer;
  background:linear-gradient(180deg,rgba(255,252,244,.92),rgba(246,238,220,.84));border:1px solid rgba(255,255,255,.75);
  box-shadow:0 10px 26px -12px rgba(74,48,20,.55),0 1px 0 rgba(255,255,255,.9) inset,0 0 0 .5px rgba(60,40,20,.12);-webkit-backdrop-filter:blur(14px) saturate(1.6);backdrop-filter:blur(14px) saturate(1.6);transition:transform .15s ease}
.search-fab svg{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round}
.search-fab svg circle{fill:currentColor;stroke:none}
.search-fab:active{transform:scale(.94)}
html[data-theme="dark"] .search-fab{background:linear-gradient(180deg,rgba(44,37,64,.92),rgba(30,25,45,.88));border-color:rgba(255,255,255,.12);color:#cdbcff}
/* pin card host (MapExplorer data-map-card): bottom sheet above the nav on phones, floating left card on tablets */
.map-card-host{position:absolute;z-index:20;left:0;right:0;bottom:calc(var(--nav-clear) - 2px);display:flex;justify-content:center;padding:0 12px;pointer-events:none}
.map-card-host[hidden]{display:none}
@media (min-width:760px){.map-card-host{left:20px;right:auto;bottom:auto;top:calc(var(--map-chrome,150px) + 10px);width:420px;padding:0;display:block}}
@media (min-width:701px) and (max-width:759px){.map-card-host{bottom:16px}}
@keyframes card-in{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
@keyframes card-side-r{from{opacity:0;transform:translateX(26px)}to{opacity:1;transform:none}}
@keyframes card-side-l{from{opacity:0;transform:translateX(-26px)}to{opacity:1;transform:none}}
/* PlaceCard.tsx */
.pc{pointer-events:auto;position:relative;width:100%;max-width:420px;overflow:hidden;border-radius:28px;color:var(--text);animation:card-in .38s cubic-bezier(.2,1.2,.4,1)}
.pc.from-right{animation-name:card-side-r}.pc.from-left{animation-name:card-side-l}
.pc--docked{max-width:none;border-radius:24px;background:var(--card);box-shadow:0 18px 40px -24px rgba(74,48,20,.5);border:1px solid var(--line)}
@media (max-width:759px){.map-card-host .pc{max-height:calc(100dvh - var(--header-h) - var(--sat,0px) - var(--nav-clear) - 70px);overflow-y:auto;overscroll-behavior:contain}}
@media (min-width:760px){.map-card-host .pc{max-height:calc(100% - var(--map-chrome,150px) - 30px);overflow-y:auto;overscroll-behavior:contain}}
.pc-gallery{position:relative;aspect-ratio:2/1;background:#c9b48a;touch-action:pan-y;overflow:hidden}
@media (min-width:760px){.pc-gallery{aspect-ratio:16/9}}
.pc--docked .pc-gallery{aspect-ratio:4/3}
.pc-gallery img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;-webkit-user-drag:none;user-select:none}
.pc-gallery::after{content:"";position:absolute;inset:auto 0 0 0;height:56%;background:linear-gradient(transparent,rgba(0,0,0,.45));pointer-events:none}
.card-grab{position:absolute;left:50%;top:0;z-index:5;width:96px;height:26px;margin-left:-48px;display:grid;place-items:center}
.card-grab i{display:block;width:44px;height:5px;border-radius:3px;background:rgba(255,255,255,.92);box-shadow:0 1px 4px rgba(0,0,0,.45)}
@media (min-width:768px){.card-grab{display:none}}
.pc-tags{position:absolute;left:12px;top:12px;z-index:4;display:flex;gap:6px}
.pc-tags span{border-radius:999px;padding:5px 10px;font:800 11px/1 var(--sans);letter-spacing:.05em;text-transform:uppercase;color:#fff}
.pc-tags .pc-tag2{background:rgba(20,14,30,.55)}
.pc-tr{position:absolute;right:12px;top:12px;z-index:4;display:flex;gap:8px}
.pc-round{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--text);cursor:pointer}
.pc-round svg,.pc-step svg{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.pc-bl{position:absolute;left:12px;right:12px;bottom:12px;z-index:4;display:flex;justify-content:space-between;gap:8px}
.pc-step{display:inline-flex;align-items:center;gap:4px;max-width:48%;border-radius:999px;padding:7px 11px;font:700 12.5px/1 var(--sans);color:var(--text);cursor:pointer}
.pc-step span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-step:active,.pc-round:active{transform:scale(.94)}
.pc-body{padding:12px 16px 16px;display:grid;gap:8px}
.pc-title{margin:0;font:800 calc(23px*var(--vs))/1.15 var(--display);letter-spacing:-.02em}
.pc-tagline{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font:700 calc(13.5px*var(--ui))/1.3 var(--sans);color:var(--era)}
html[data-theme="dark"] .pc-tagline{color:color-mix(in srgb,var(--era) 55%,#fff)}
.pc-visited{display:inline-flex;align-items:center;gap:4px;margin-left:auto;border-radius:999px;padding:4px 9px;font-size:11.5px;color:var(--muted);background:color-mix(in srgb,var(--text) 7%,transparent)}
.pc-visited svg{fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.pc-visited.is-on{color:#fff;background:var(--g-mint)}
.pc-story{margin:0;font-size:calc(16px*var(--vs));line-height:1.55;color:var(--text)}
.pc-h{margin:6px 0 0;font:800 11.5px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.pc-verses{display:grid;gap:8px}
.pc-v{display:block;width:100%;text-align:left;border:0;border-left:4px solid var(--era);background:color-mix(in srgb,var(--era) 8%,var(--card));border-radius:14px;padding:10px 12px;cursor:pointer;color:var(--text);transition:transform .15s}
.pc-v:active{transform:scale(.98)}
.pc-v b{display:block;font:800 13px/1.2 var(--display);color:var(--era);margin-bottom:3px}
html[data-theme="dark"] .pc-v b{color:color-mix(in srgb,var(--era) 50%,#fff)}
.pc-v span{display:block;font:400 calc(16px*var(--vs))/1.45 var(--serif)}
.pc-v em{display:block;margin-top:4px;font:700 11.5px/1 var(--sans);font-style:normal;color:var(--muted)}
.pc-trophy{display:grid;grid-template-columns:1fr auto;gap:6px 10px;align-items:center;padding:10px 12px;border-radius:14px;background:color-mix(in srgb,var(--gilt) 10%,transparent);font:700 13px/1.2 var(--sans)}
.pc-trophy span{display:flex;gap:6px;align-items:center}.pc-trophy svg{fill:none;stroke:var(--gilt);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pc-trophy i{grid-column:1/-1;height:6px;border-radius:3px;background:color-mix(in srgb,var(--text) 10%,transparent);overflow:hidden}
.pc-trophy i b{display:block;height:100%;border-radius:3px;background:var(--g-gold)}
/* globals.css .details-btn (brass outline CTA) */
.details-btn{position:relative;display:flex;width:100%;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 18px;margin-top:4px;border:0;border-radius:999px;cursor:pointer;
  font:750 calc(15.5px*var(--ui))/1 var(--sans);color:var(--accent);background:linear-gradient(180deg,#fffdf7,#f8efda);box-shadow:inset 0 0 0 1.5px rgba(201,162,74,.85),0 6px 14px -10px rgba(74,48,20,.6)}
.details-btn svg{fill:none;stroke:var(--gilt);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .18s}
.details-btn:active{transform:scale(.97)}
@media (hover:hover){.details-btn:hover svg{transform:translateX(2px)}}
html[data-theme="dark"] .details-btn{color:#f3e9d2;background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.03));box-shadow:inset 0 0 0 1.5px rgba(227,194,111,.75),0 6px 14px -10px rgba(0,0,0,.8)}
.pc-credit{margin:2px 0 0;font-size:11px;color:var(--muted)}
/* desktop side panel (MapExplorer <aside>) */
.mp-head{padding:16px 16px 12px;border-bottom:1px solid var(--line)}
.mp-count{margin:0;font:800 12px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.mp-head input{margin-top:10px;width:100%;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--text);padding:11px 16px;font:500 14.5px/1 var(--sans);outline:none}
.mp-head input:focus{border-color:var(--accent2)}
.mp-list{list-style:none;margin:0;padding:8px;overflow-y:auto;flex:1}
.mp-list .q-row{min-height:68px}
.mp-card{padding:16px;overflow-y:auto;flex:1}
.mp-back{display:inline-flex;gap:6px;align-items:center;margin-bottom:12px;border:0;background:none;padding:4px;border-radius:999px;font:650 14px/1 var(--sans);color:var(--muted);cursor:pointer}
.mp-back:hover{color:var(--text)}
/* list overlay (search.css .q-*): solid band under the status bar, blurred backdrop shown instantly (no fade) */
html.q-lock,html.q-lock body{overflow:hidden;overscroll-behavior:none}
.q-overlay{position:fixed;inset:0;z-index:90}
.q-overlay[hidden]{display:none}
.q-overlay::before{content:"";position:absolute;top:0;left:0;right:0;height:var(--sat,env(safe-area-inset-top));z-index:3;background-color:var(--page);pointer-events:none;transform:translateZ(0)}
.q-backdrop{position:absolute;inset:0;top:var(--sat,env(safe-area-inset-top));width:100%;border:0;cursor:default;touch-action:none;background:rgba(43,20,40,.55);-webkit-backdrop-filter:blur(18px) saturate(115%);backdrop-filter:blur(18px) saturate(115%)}
html[data-theme="dark"] .q-backdrop{background:rgba(8,6,14,.72)}
.q-panel{position:absolute;z-index:2;left:50%;top:calc(var(--sat,env(safe-area-inset-top)) + 10px);width:min(680px,calc(100% - 20px));transform:translateX(-50%);display:grid;grid-template-columns:minmax(0,1fr);gap:10px;pointer-events:none;outline:none}
.q-panel>*{pointer-events:auto}
.q-bar-row{display:flex;align-items:center;gap:8px;min-width:0;transform:translateZ(0)}
.q-form{flex:1;min-width:0;display:flex;align-items:center;gap:8px;height:58px;padding:0 6px 0 18px;border-radius:999px;margin:0;
  background:linear-gradient(180deg,rgba(255,252,244,.97),rgba(250,245,232,.94)) padding-box,linear-gradient(160deg,rgba(255,246,222,.95),rgba(201,162,74,.75) 55%,rgba(255,246,222,.85)) border-box;border:1.5px solid transparent;
  box-shadow:0 0 0 4px rgba(233,212,160,.16),0 0 22px rgba(240,222,170,.28),0 16px 36px -18px rgba(0,0,0,.6),inset 0 1px 0 #fff}
html[data-theme="dark"] .q-form{background:linear-gradient(180deg,rgba(40,33,58,.97),rgba(28,23,42,.95)) padding-box,linear-gradient(160deg,rgba(240,222,170,.7),rgba(201,162,74,.45) 55%,rgba(240,222,170,.6)) border-box}
.q-icon{color:var(--accent2);flex:none;display:grid}.q-icon svg{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round}
.q-form input{flex:1;min-width:0;height:100%;border:0;outline:none;background:transparent;color:var(--text);font:600 max(17px,1.0625rem) var(--sans);-webkit-appearance:none;appearance:none}
.q-form input::-webkit-search-cancel-button{display:none}
.q-form input::placeholder{color:var(--muted);font-weight:500}
.q-clear{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:var(--muted);font-size:16px;border:0;background:none;cursor:pointer}
.q-clear[hidden]{display:none}
.q-cancel{flex:none;height:50px;padding:0 18px;border-radius:999px;font:750 1.0625rem/1 var(--sans);color:#fbf3e2;cursor:pointer;background:linear-gradient(180deg,rgba(255,255,255,.2),rgba(255,255,255,.08));border:1px solid rgba(240,222,170,.45);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 10px 24px -14px rgba(0,0,0,.6)}
.q-results{position:relative;border-radius:24px;padding:6px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;max-height:calc(100dvh - var(--sat,0px) - 100px);background:rgba(255,252,246,.97);border:1px solid rgba(255,255,255,.7);box-shadow:0 24px 50px -22px rgba(0,0,0,.65)}
html[data-theme="dark"] .q-results{background:rgba(28,23,42,.97);border-color:rgba(255,255,255,.1)}
.q-grab{display:none}
@media (max-width:759px){.q-grab{display:flex;justify-content:center;padding:6px 0 2px}.q-grab i{display:block;width:40px;height:5px;border-radius:3px;background:color-mix(in srgb,var(--text) 25%,transparent)}}
.q-count,.q-hint{margin:0;padding:10px 12px 4px;font:700 .875rem/1.2 var(--sans);color:var(--muted)}
.q-hint{padding:14px 12px;font-weight:600}
.q-list{list-style:none;margin:0;padding:0}
.q-row{display:flex;align-items:center;gap:12px;min-height:72px;padding:8px 10px;border-radius:18px;cursor:pointer;animation:q-in .3s cubic-bezier(.2,1,.4,1) both;animation-delay:calc(var(--i,0)*18ms)}
@keyframes q-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.q-row{animation:none}}
.q-row.is-sel,.q-row:hover{background:color-mix(in srgb,var(--accent2) 10%,transparent)}
.q-thumb{width:56px;height:56px;flex:none;border-radius:14px;overflow:hidden;background:#c9b48a}
.q-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.q-text{min-width:0;display:flex;flex-direction:column;gap:2px}
.q-name{font:750 1.0625rem/1.2 var(--sans);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.q-name mark{background:rgba(246,198,74,.55);color:inherit;border-radius:3px;padding:0 1px}
.q-visited{font-style:normal;color:#0ca678;font-size:.9em}
.q-type{display:flex;align-items:center;gap:6px;font:650 .875rem/1.2 var(--sans);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-dot{width:8px;height:8px;border-radius:50%;flex:none}
.q-addr{font-size:.8125rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.q-lock .map-root *{animation-play-state:paused!important}
@media print{.q-overlay,.map-fab-wrap{display:none!important}}

/* =====================================================================
   Pickers (js/pickers.js): Book -> Chapter flow, Version cards. Phone: glass bottom sheet (SheetDrag swipe-down);
   >=768px: popover under the trigger.
   ===================================================================== */
.reader-bar{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,.9fr) minmax(0,1.5fr);gap:8px;padding:0;background:none;border:0;box-shadow:none}
.pk-btn{--g:linear-gradient(135deg,#7048e8,#c2185b);position:relative;display:flex;align-items:center;gap:10px;min-width:0;min-height:58px;padding:8px 12px;border-radius:20px;border:1px solid var(--line);background:var(--card);color:var(--text);cursor:pointer;text-align:left;
  box-shadow:0 10px 24px -16px var(--shadow-c),inset 0 1px 0 rgba(255,255,255,.5);transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.pk-btn:active{transform:scale(.96)}
.pk-btn:focus-visible{outline:3px solid var(--accent2);outline-offset:2px}
.pk-btn-ic{flex:none;width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:var(--g);color:#fff;box-shadow:0 6px 14px -8px rgba(0,0,0,.5)}
.pk-btn-ic svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pk-btn-t{display:flex;flex-direction:column;min-width:0;gap:2px}
.pk-btn-t small{font:800 10.5px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.pk-btn-t b{font:800 calc(16.5px*var(--ui))/1.15 var(--display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pk-btn .chev{margin-left:auto;color:var(--muted);font-size:20px;transform:rotate(90deg)}
.pk-btn--chap{justify-content:center;text-align:center}.pk-btn--chap .pk-btn-t{align-items:center}
.pk-btn--chap b{font-size:calc(20px*var(--ui))}
@media (max-width:420px){.pk-btn{padding:8px;gap:7px}.pk-btn .chev{display:none}.pk-btn-ic{width:30px;height:30px;border-radius:10px}}
.pk{position:fixed;inset:0;z-index:95;visibility:hidden;pointer-events:none}
.pk.is-active{visibility:visible;pointer-events:auto}
.pk-scrim{position:absolute;inset:0;background:rgba(20,12,30,.4);opacity:0;transition:opacity .28s;touch-action:none}
.pk.is-open .pk-scrim{opacity:1}
.pk-panel{position:absolute;left:0;right:0;bottom:0;max-height:88vh;display:flex;flex-direction:column;outline:none;border-radius:28px 28px 0 0;
  background:linear-gradient(180deg,color-mix(in srgb,var(--card) 96%,transparent),color-mix(in srgb,var(--page) 96%,transparent));border:1px solid var(--line);box-shadow:0 -20px 50px -20px rgba(0,0,0,.5);
  transform:translate3d(0,104%,0);transition:transform .42s cubic-bezier(.2,.9,.25,1);padding-bottom:env(safe-area-inset-bottom);contain:layout paint}
.pk.is-open .pk-panel{transform:none}
.pk-panel .sh-grab{display:grid;place-items:center;height:20px;touch-action:none}
.pk-panel .sh-grab i{width:44px;height:5px;border-radius:3px;background:color-mix(in srgb,var(--text) 22%,transparent)}
@media (min-width:768px){
  .pk-scrim{background:transparent}
  .pk-panel{right:auto;bottom:auto;border-radius:24px;max-height:70vh;transform:translate3d(0,-8px,0) scale(.97);opacity:0;transform-origin:top left;transition:transform .26s cubic-bezier(.2,1.2,.4,1),opacity .18s;box-shadow:0 30px 70px -24px rgba(40,20,40,.55)}
  .pk.is-open .pk-panel{transform:none;opacity:1}
  .pk-panel .sh-grab{display:none}
}
.pk-head{display:flex;align-items:center;gap:8px;padding:6px 12px 8px 18px}
.pk-head h2{flex:1;margin:0;font:800 calc(20px*var(--ui))/1.2 var(--display);letter-spacing:-.01em}
.pk-back[hidden]{display:none}
.pk-body{overflow-y:auto;overscroll-behavior:contain;padding:0 14px 18px}
.pk-tools{position:sticky;top:0;z-index:2;display:grid;gap:8px;padding:2px 0 10px;background:linear-gradient(var(--card) 80%,transparent)}
.pk-seg{position:relative;display:grid;grid-template-columns:1fr 1fr;padding:4px;border-radius:999px;background:color-mix(in srgb,var(--text) 7%,transparent)}
.pk-seg button{position:relative;z-index:1;border:0;background:none;padding:10px;border-radius:999px;font:750 14px/1 var(--sans);color:var(--muted);cursor:pointer;transition:color .2s}
.pk-seg button[aria-selected="true"]{color:#fff}
.pk-seg-lens{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:999px;background:linear-gradient(135deg,#f59f00,#e8590c);box-shadow:0 6px 14px -6px rgba(0,0,0,.4);transition:transform .38s cubic-bezier(.34,1.4,.5,1),background .3s}
.pk-seg:has(button[data-pk-t="NT"][aria-selected="true"]) .pk-seg-lens{transform:translateX(100%);background:linear-gradient(135deg,#c2185b,#7048e8)}
.pk-search{display:flex;align-items:center;gap:8px;border-radius:999px;padding:0 14px;height:46px;background:var(--card);border:1px solid var(--line)}
.pk-search svg,.pl-search svg{width:18px;height:18px;fill:none;stroke:var(--muted);stroke-width:2.2;stroke-linecap:round}
.pk-search input{flex:1;min-width:0;border:0;outline:0;background:none;color:var(--text);font:500 16px/1 var(--sans)}
.pk-sec{margin-top:12px}
.pk-sec h3{display:inline-block;margin:0 0 8px 2px;font:800 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;background:var(--g);-webkit-background-clip:text;background-clip:text;color:transparent}
.pk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px}
.pk-book{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-height:84px;padding:10px 10px 9px;border:0;border-radius:18px;background:var(--g);color:#fff;text-align:left;cursor:pointer;overflow:hidden;
  box-shadow:0 10px 20px -14px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.35);animation:pk-in .42s cubic-bezier(.2,1.3,.4,1) both;animation-delay:calc(min(var(--i),30)*14ms)}
.pk-book::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.18),transparent 45%);pointer-events:none}
.pk-book b{font:800 14.5px/1.15 var(--display);margin-top:auto;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.pk-book small{font:600 11.5px/1 var(--sans);opacity:.88}
.pk-book[aria-current="true"]{box-shadow:0 0 0 3px var(--card),0 0 0 6px color-mix(in srgb,var(--gilt) 80%,transparent),0 0 24px 4px color-mix(in srgb,var(--gilt) 45%,transparent)}
.pk-book.is-done b::after{content:" ✓"}
.pk-ring{position:absolute;right:8px;top:8px;width:26px;height:26px;transform:rotate(-90deg)}
.pk-ring circle{fill:none;stroke:rgba(255,255,255,.3);stroke-width:4}
.pk-ring .pk-ring-on{stroke:#fff;stroke-linecap:round}
@keyframes pk-in{from{opacity:0;transform:translateY(10px) scale(.94)}to{opacity:1;transform:none}}
.pk-chap-head{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center;margin:2px 2px 12px;font:700 13px/1 var(--sans)}
.pk-chap-head span{font-weight:800;letter-spacing:.12em;text-transform:uppercase;font-size:11.5px;background:var(--g);-webkit-background-clip:text;background-clip:text;color:transparent}
.pk-chap-head i{grid-column:1/-1;height:7px;border-radius:4px;background:color-mix(in srgb,var(--text) 10%,transparent);overflow:hidden}
.pk-chap-head i b{display:block;height:100%;background:var(--g);border-radius:4px}
.pk-bubbles{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:8px}
.pk-bubbles.in-right{animation:pk-slide .34s cubic-bezier(.2,1,.3,1)}
@keyframes pk-slide{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
.pk-bubbles button{position:relative;aspect-ratio:1;border-radius:50%;border:1.5px solid var(--line);background:var(--card);color:var(--text);font:750 15px/1 var(--sans);cursor:pointer;display:grid;place-items:center;
  animation:pk-in .36s cubic-bezier(.2,1.4,.4,1) both;animation-delay:calc(var(--i)*9ms)}
.pk-bubbles button.is-read{border-color:transparent;background:var(--g);color:#fff}
.pk-bubbles button svg{position:absolute;right:-2px;top:-2px;width:18px;height:18px;padding:2px;border-radius:50%;background:#0ca678;fill:none;stroke:#fff;stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round}
.pk-bubbles button[aria-current="true"]{box-shadow:0 0 0 3px var(--card),0 0 0 6px color-mix(in srgb,var(--gilt) 85%,transparent),0 0 20px 2px color-mix(in srgb,var(--gilt) 50%,transparent)}
.pk-vers{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.pk-ver{position:relative;display:flex;align-items:center;gap:12px;padding:10px 12px 10px 10px;border-radius:20px;border:1px solid var(--line);background:var(--card);color:var(--text);cursor:pointer;text-align:left;
  box-shadow:0 10px 22px -16px var(--shadow-c);animation:pk-in .4s cubic-bezier(.2,1.3,.4,1) both;animation-delay:calc(var(--i)*30ms)}
.pk-ver-art{flex:none;position:relative;width:58px;height:58px;border-radius:16px;background:var(--g);display:grid;place-items:center;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 8px 16px -10px rgba(0,0,0,.6)}
.pk-ver-art svg,.ver-ic svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.pk-ver-art em{position:absolute;bottom:-7px;left:50%;transform:translateX(-50%);white-space:nowrap;font:800 10.5px/1 var(--sans);font-style:normal;padding:4px 7px;border-radius:999px;background:var(--card);color:var(--text);box-shadow:0 2px 6px rgba(0,0,0,.2)}
.pk-ver-txt{display:flex;flex-direction:column;gap:3px;min-width:0}
.pk-ver-txt b{font:800 15.5px/1.2 var(--display)}
.pk-ver-txt small{font:600 12.5px/1.25 var(--sans);color:var(--muted)}
.pk-ver-on{position:absolute;right:10px;top:10px;font:800 10px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;padding:4px 7px;border-radius:999px;background:var(--g);color:#fff}
.pk-ver[aria-current="true"]{border-color:transparent;box-shadow:0 0 0 2px color-mix(in srgb,var(--gilt) 85%,transparent),0 0 26px 2px color-mix(in srgb,var(--gilt) 35%,transparent)}
.pk-book:active,.pk-ver:active,.pk-bubbles button:active{transform:scale(.94)}
.pk-book:focus-visible,.pk-ver:focus-visible,.pk-bubbles button:focus-visible{outline:3px solid var(--accent2);outline-offset:3px}
@media (prefers-reduced-motion:reduce){.pk-book,.pk-ver,.pk-bubbles button,.pk-bubbles.in-right{animation:none}.pk-panel,.pk-seg-lens{transition:none}}

/* ---- Versions tab: era cards with gradient header + icon + year badge ---- */
.ver{padding:0;overflow:hidden;border-radius:22px;box-shadow:0 14px 30px -20px var(--shadow-c);animation:pk-in .45s cubic-bezier(.2,1.3,.4,1) both;animation-delay:calc(var(--i,0)*40ms);transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.ver:active{transform:scale(.97)}
.ver-head{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--g);color:#fff;position:relative}
.ver-head::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.2),transparent 60%);pointer-events:none}
.ver-ic{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;background:rgba(255,255,255,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
.ver-id{display:flex;flex-direction:column;gap:2px;font:800 17px/1 var(--display)}
.ver-id small{font:600 12px/1.2 var(--sans);opacity:.9}
.ver-yr{margin-left:auto;font:800 13px/1 var(--sans);font-style:normal;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.92);color:#2b2330}
.ver-in{display:block;padding:12px 16px 14px}
.ver-on{position:absolute;right:12px;bottom:12px;font:800 10.5px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;padding:5px 8px;border-radius:999px;background:var(--g);color:#fff}
.ver[aria-checked="true"]{box-shadow:0 0 0 2px color-mix(in srgb,var(--gilt) 85%,transparent),0 0 28px 2px color-mix(in srgb,var(--gilt) 35%,transparent)}
.ver[aria-checked="true"]::after{display:none}

/* ---- Moods: colourful gradient chips (hue per mood), press bounce, staggered entrance ---- */
.mood{--mg:linear-gradient(135deg,hsl(var(--h) 85% 64%),hsl(calc(var(--h) + 28) 72% 46%));border-radius:18px;padding:12px;font-size:calc(15.5px*var(--ui));box-shadow:0 10px 22px -18px hsl(var(--h) 60% 35%);
  animation:pk-in .45s cubic-bezier(.2,1.3,.4,1) both;animation-delay:calc(var(--i,0)*22ms);transition:transform .22s cubic-bezier(.34,1.56,.64,1),box-shadow .2s}
.mood i{width:34px;height:34px;border-radius:12px;background:var(--mg);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 6px 12px -6px hsl(var(--h) 60% 35%)}
.mood i svg{width:19px;height:19px}
.mood:active{transform:scale(.94)}
.mood[aria-checked="true"]{border-color:transparent;background:var(--mg);color:#fff;box-shadow:0 14px 26px -12px hsl(var(--h) 65% 38%)}
.mood[aria-checked="true"] i{background:rgba(255,255,255,.24)}
@media (hover:hover){.mood:hover{transform:translateY(-2px) rotate(-.6deg)}}
@media (prefers-reduced-motion:reduce){.mood,.ver{animation:none}}

/* ---- text size: 4 options ---- */
.seg3[aria-label="Text size"]{grid-template-columns:repeat(4,1fr)}

/* ---- toast icon (Chef Lynn toast + a themed badge) ---- */
.toast{display:inline-flex;align-items:center;gap:9px}
.toast-ic{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;color:#fff;background:var(--g-grape)}
.toast-ic svg{width:14px;height:14px}
.toast-ic--heart{background:var(--g-rose)}.toast-ic--check{background:var(--g-mint)}.toast-ic--star,.toast-ic--crown{background:var(--g-gold);color:#4a2c00}
.toast-ic--copy{background:var(--g-sky)}.toast-ic--book{background:var(--g-grape)}.toast-ic--spark{background:var(--g-ember)}

/* =====================================================================
   Game layer (js/game.js): celebration = Savannah TrophyCelebration (.cel* from components/routes/routes.css), awards grid
   ===================================================================== */
.cel{position:fixed;left:0;right:0;top:calc(var(--sat,0px) + 70px);z-index:140;display:flex;justify-content:center;padding:0 14px;pointer-events:none}
.cel-card{pointer-events:auto;position:relative;width:min(360px,100%);padding:22px 20px 18px;border-radius:28px;text-align:center;color:var(--text);
  background:linear-gradient(180deg,color-mix(in srgb,var(--card) 96%,transparent),color-mix(in srgb,var(--page) 94%,transparent));border:1px solid var(--line);
  box-shadow:0 30px 60px -24px rgba(40,20,40,.6),0 0 0 1px color-mix(in srgb,var(--ring) 30%,transparent);animation:cel-pop .5s cubic-bezier(.2,1.5,.4,1) both}
.cel.is-out .cel-card{animation:cel-out .22s ease-in both}
@keyframes cel-pop{from{opacity:0;transform:translateY(-16px) scale(.86)}to{opacity:1;transform:none}}
@keyframes cel-out{to{opacity:0;transform:translateY(-12px) scale(.96)}}
.cel-medal{position:relative;display:inline-block;animation:cel-medal .9s cubic-bezier(.2,1.5,.4,1) .08s both}
@keyframes cel-medal{0%{transform:scale(.3) rotate(-25deg);opacity:0}60%{transform:scale(1.12) rotate(6deg);opacity:1}100%{transform:none}}
.cel-burst{position:absolute;left:50%;top:74px;width:0;height:0;pointer-events:none}
.cel-burst span{position:absolute;left:-7px;top:-7px;color:#e9b949;opacity:0;animation:cel-star .9s cubic-bezier(.2,.8,.3,1) both;animation-delay:calc(.2s + var(--d))}
.cel-burst span svg{fill:currentColor}
@keyframes cel-star{0%{opacity:0;transform:rotate(var(--a)) translateY(0) scale(.4)}30%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateY(-78px) scale(1)}}
.cel-kicker{margin:10px 0 2px;font:800 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--gilt)}
.cel-name{margin:4px 0;font:800 24px/1.15 var(--display);letter-spacing:-.02em}
.cel-need{margin:0 0 14px;color:var(--muted);font-size:15px}
.cel-btns{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
@media (prefers-reduced-motion:reduce){.cel-card,.cel-medal,.cel-burst span{animation:none}.cel-burst{display:none}}
.medal.is-locked{opacity:.75}
.aw-hero{display:flex;gap:16px;align-items:center;padding:18px;border-radius:24px;color:#fff;background:linear-gradient(135deg,#5f3dc4,#c2185b 60%,#f59f00);box-shadow:0 18px 36px -20px rgba(95,61,196,.8)}
.aw-level{flex:none;width:76px;height:76px;border-radius:50%;display:grid;place-content:center;text-align:center;background:rgba(255,255,255,.18);box-shadow:inset 0 0 0 3px rgba(255,255,255,.5)}
.aw-level b{font:800 30px/1 var(--display)}.aw-level span{font:700 10px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;opacity:.9}
.aw-hero-text{flex:1;min-width:0}.aw-hero-text h3{margin:0 0 6px;font:800 24px/1.1 var(--display)}
.aw-xp{margin:0}.aw-xp i{display:block;height:9px;border-radius:5px;background:rgba(255,255,255,.25);overflow:hidden}.aw-xp i b{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#ffe08a,#fff)}
.aw-xp span{display:block;margin-top:5px;font:600 13px/1.2 var(--sans);opacity:.95}
.aw-stats{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0 0;font:700 13px/1 var(--sans)}
.aw-flame{display:inline-flex;align-items:center;gap:4px}.aw-flame svg{width:16px;height:16px;color:#ffd166}
.aw-daily{display:flex;gap:12px;align-items:center;margin-top:12px;padding:14px 16px;border-radius:20px;border:1.5px dashed color-mix(in srgb,var(--gilt) 60%,transparent);background:color-mix(in srgb,var(--gilt) 8%,transparent)}
.aw-daily>svg{width:28px;height:28px;flex:none;color:var(--gilt)}.aw-daily b{font:800 15px/1.2 var(--display)}.aw-daily p{margin:2px 0 0;color:var(--muted);font-size:14.5px}
.aw-daily.is-done{border-style:solid;border-color:#0ca678;background:color-mix(in srgb,#0ca678 10%,transparent)}.aw-daily.is-done>svg{color:#0ca678}
.aw-track{display:flex;justify-content:space-between;align-items:baseline;margin:22px 2px 10px;font:800 16px/1.2 var(--display)}
.aw-track small{font:700 13px/1 var(--sans);color:var(--muted)}
.aw-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.aw-trophy{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:14px 10px 12px;border-radius:20px;background:var(--card);border:1px solid var(--line);animation:pk-in .4s cubic-bezier(.2,1.3,.4,1) both;animation-delay:calc(var(--i)*40ms)}
.aw-trophy.is-on{border-color:color-mix(in srgb,var(--ring) 40%,transparent);box-shadow:0 12px 24px -16px var(--ring)}
.aw-name{font:800 14.5px/1.2 var(--display)}.aw-need{font-size:12.5px;color:var(--muted);line-height:1.3}
.aw-when{font:700 11.5px/1 var(--sans);color:var(--muted);margin-top:2px}
.aw-bar{width:80%;height:6px;border-radius:3px;background:color-mix(in srgb,var(--text) 10%,transparent);overflow:hidden;margin-top:4px}
.aw-bar span{display:block;height:100%;background:var(--ring);border-radius:3px}
.dr-awards .ic{background:var(--g-gold)!important;color:#4a2c00!important}

/* =====================================================================
   Page turn (js/pageturn.js): leaf = clone of the visible page rotating on the spine; transform/opacity only
   ===================================================================== */
#rd-text{touch-action:pan-y}
.pt-hidden{visibility:hidden}
.pt-stage{position:fixed;z-index:25;perspective:1800px;pointer-events:none}
.pt-under,.pt-front,.pt-back{position:absolute;inset:0;overflow:hidden;border-radius:var(--r);background:var(--card);border:1px solid var(--line)}
.pt-under-in{padding:26px 22px 30px;font:400 calc(21px*var(--vs))/1.72 var(--serif)}
.pt-spine{position:absolute;top:0;bottom:0;width:40%;pointer-events:none;opacity:1}
.pt-next .pt-spine{left:0;background:linear-gradient(90deg,rgba(40,20,10,.28),transparent)}
.pt-prev .pt-spine{right:0;background:linear-gradient(270deg,rgba(40,20,10,.28),transparent)}
.pt-leaf{position:absolute;inset:0;transform-style:preserve-3d}
.pt-next .pt-leaf{transform-origin:0 50%}.pt-prev .pt-leaf{transform-origin:100% 50%}
.pt-front{backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 20px 40px -20px rgba(0,0,0,.5)}
.pt-clone{position:absolute;left:0;top:0;margin:0!important;border:0!important;border-radius:0!important;visibility:visible!important}
.pt-curl{position:absolute;inset:0;pointer-events:none;opacity:0}
.pt-next .pt-curl{background:linear-gradient(270deg,rgba(0,0,0,.34),rgba(0,0,0,.08) 18%,rgba(255,255,255,.22) 26%,transparent 46%)}
.pt-prev .pt-curl{background:linear-gradient(90deg,rgba(0,0,0,.34),rgba(0,0,0,.08) 18%,rgba(255,255,255,.22) 26%,transparent 46%)}
.pt-back{transform:rotateY(180deg);backface-visibility:hidden;-webkit-backface-visibility:hidden;opacity:0;
  background:linear-gradient(90deg,rgba(0,0,0,.12),transparent 30%,rgba(255,255,255,.25) 70%,rgba(0,0,0,.08)),repeating-linear-gradient(0deg,transparent 0 3px,rgba(120,90,40,.04) 3px 4px),#efe3c6}
html[data-theme="dark"] .pt-back{background:linear-gradient(90deg,rgba(0,0,0,.35),transparent 30%,rgba(255,255,255,.06) 70%,rgba(0,0,0,.25)),#2a2340}
html[data-theme="dark"] .pt-next .pt-spine{background:linear-gradient(90deg,rgba(0,0,0,.55),transparent)}
html[data-theme="dark"] .pt-prev .pt-spine{background:linear-gradient(270deg,rgba(0,0,0,.55),transparent)}
.sh-body.page{touch-action:pan-y}
.pt-under.sh-page .pt-under-in{font:400 calc(18px*var(--vs))/1.65 var(--serif);padding:18px 20px}
.map-box #map{z-index:0}
.chrome-glass{grid-template-columns:minmax(0,1fr)}
.chrome-glass>*{min-width:0}
@media (max-width:759px){.map-card-host .pc{max-height:min(64dvh,calc(100dvh - var(--header-h) - var(--sat,0px) - var(--nav-clear) - 90px))}}
@media (max-width:440px){.cat-toggle .lg{display:none}.cat-toggle button{padding:8px 11px}}
.pk-panel{background:var(--card)}
/* hero header with a Doré engraving (public domain) */
.view-hero{position:relative;overflow:hidden;margin:4px 0 16px;padding:26px 20px 34px;min-height:190px;display:flex;align-items:flex-end;border-radius:28px;color:#fff;
  background:linear-gradient(180deg,rgba(26,16,54,.15),rgba(26,16,54,.85)),linear-gradient(135deg,rgba(91,63,181,.55),rgba(194,24,91,.45)),var(--hero) center 30%/cover,#3a237f;box-shadow:0 22px 44px -26px rgba(58,35,127,.9)}
.view-hero h2{margin:4px 0 6px;font:800 calc(32px*var(--vs))/1.05 var(--display);letter-spacing:-.025em}
.view-hero p{margin:0;max-width:56ch;font-size:calc(15.5px*var(--ui));line-height:1.45;color:#f3ecff}
.vh-kicker{font:800 11.5px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:#ffd98a}
.view-hero small{position:absolute;right:14px;bottom:8px;font-size:10px;color:rgba(255,255,255,.7)}
.pt-under.chapter,.pt-front.chapter{margin:0;padding:0}
.pt-under.chapter .pt-under-in{padding:26px 22px 30px;font:inherit}
.ver[aria-checked="true"] .ver-in{padding-bottom:40px}

/* =====================================================================================================
   Oct 23 round 3: iOS Safari drawer lag. Built for WebKit compositing, not Chrome timings:
   - page background had a fixed full-screen grain layer with mix-blend-mode (forces WebKit to re-blend
     everything above it whenever an overlay animates) + dark-mode orbs using filter:blur(60px) → static PNG
     grain without blending, orbs as plain radial gradients (no filter)
   - drawer stays painted as its own pre-rasterised layer (never visibility-toggled), slides with
     translate3d only, scrim fades with opacity only; no backdrop-filter anywhere in the drawer
   - while the drawer is open: bursts hidden, looping animations behind it paused; no blur layer is created or removed
   - no html/body overflow toggling (no full-page relayout on the tap frame)
   ===================================================================================================== */
.bg::after{mix-blend-mode:normal;opacity:1;background-image:url("../img/ui/grain-light.png");background-size:160px 160px}
html[data-theme="dark"] .bg::after{mix-blend-mode:normal;opacity:1;background-image:url("../img/ui/grain-dark.png")}
.orb{filter:none;background:none!important}
html[data-theme="dark"] .o1{background:radial-gradient(closest-side,rgba(109,75,214,.55),rgba(109,75,214,0))!important}
html[data-theme="dark"] .o2{background:radial-gradient(closest-side,rgba(42,168,154,.5),rgba(42,168,154,0))!important}
html[data-theme="dark"] .o3{background:radial-gradient(closest-side,rgba(194,87,124,.5),rgba(194,87,124,0))!important}
html[data-theme="dark"] .orb{transform:scale(1.6)}

.drawer{visibility:visible;pointer-events:none}
.drawer.is-active{pointer-events:auto}
.dr-scrim{opacity:0;pointer-events:none;transition:opacity .32s ease;-webkit-backdrop-filter:none;backdrop-filter:none}
.drawer.is-open .dr-scrim,.drawer.is-dragging .dr-scrim{pointer-events:auto}
.dr-panel{will-change:transform;transform:translate3d(105%,0,0);contain:layout paint style;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;
  background:linear-gradient(90deg,rgba(0,0,0,.06),rgba(0,0,0,0) 14px) padding-box,linear-gradient(160deg,rgba(255,255,255,.5),rgba(255,255,255,0) 40%) padding-box,linear-gradient(var(--card),var(--card)) padding-box,var(--glass-edge) border-box}
html[data-theme="dark"] .dr-panel{background:linear-gradient(90deg,rgba(0,0,0,.25),rgba(0,0,0,0) 14px) padding-box,linear-gradient(160deg,rgba(255,255,255,.08),rgba(255,255,255,0) 40%) padding-box,linear-gradient(var(--card),var(--card)) padding-box,var(--glass-edge) border-box}
.drawer.is-open .dr-panel{transform:translate3d(0,0,0)}
.drawer.is-dragging .dr-panel,.drawer.is-dragging .dr-scrim{transition:none}
.dr-body{contain:content;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.dr-head{touch-action:none}
.burger,.gp-more,.dr-link,.dr-close,.seg3 button{touch-action:manipulation}
/* (measured in WebKit: removing the pill's backdrop-filter on the tap frame itself costs a ~30-130ms layer rebuild, so the
   few small blurred chips stay untouched; they sit under an opaque panel and a static scrim, nothing behind them moves) */
html.dr-open .sp-rays,html.dr-open .pin-pulse,html.dr-open .pin-pulse::after,html.dr-open .strip-tab{animation-play-state:paused}
html.dr-open .fx-layer{display:none}
/* right-edge swipe-to-open zone (below the header, above the bottom pill; never on Read or Map) */
.dr-edge{position:fixed;right:0;width:20px;top:calc(var(--sat,env(safe-area-inset-top)) + var(--header-h));bottom:calc(env(safe-area-inset-bottom) + 92px);z-index:79;touch-action:none;-webkit-tap-highlight-color:transparent}
html.no-edge .dr-edge{display:none}
@media (pointer:fine){.dr-edge{display:none}}
@media (prefers-reduced-motion:reduce){.dr-panel,.dr-scrim{transition-duration:.01s!important}}
.dr-panel{touch-action:pan-y}

/* standalone (home-screen) phone pill fix: the standalone rule above used to set top on the nav as well as the phone
   bottom → top+bottom stretched the pill to full height. Phone nav now has an explicit height and top:auto everywhere. */
@media (max-width:700px){
  .nav-wrap,html.is-standalone .nav-wrap{top:auto!important;height:68px;bottom:calc(10px + env(safe-area-inset-bottom));align-items:flex-end}
  .gpill{height:68px;max-height:68px;align-items:stretch;box-sizing:border-box}
  .gp-opt,.gp-more{height:56px;max-height:56px}
  .gp-lens{top:5px!important;bottom:auto!important;height:56px}
  .gp-lens.is-dragging{top:3px!important;height:60px}
}

/* ---- page turn v2: corner-peel curl (js/pageturn.js). Layers: static front, clipped under page, clipped+mirrored flap.
   Shading strips are fixed gradients positioned with transforms (origin on the fold, x axis along the fold normal). ---- */
.pt3{perspective:1400px;overflow:visible}
.pt3 .pt-front{box-shadow:none;backface-visibility:visible;-webkit-backface-visibility:visible}
.pt3 .pt-under{z-index:1;will-change:clip-path}
.pt3 .pt-flap{position:absolute;left:0;top:0;width:100%;height:100%;z-index:3;transform-origin:0 0;will-change:transform;overflow:hidden;border-radius:var(--r);
  background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(120,90,40,.035) 3px 4px),linear-gradient(135deg,#f6ecd4,#e9dbb8)}
html[data-theme="dark"] .pt3 .pt-flap{background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(255,255,255,.02) 3px 4px),linear-gradient(135deg,#3a3152,#2a2340)}
.pt3 .pt-cast,.pt3 .pt-cyl,.pt3 .pt-lip{position:absolute;left:0;top:0;transform-origin:0 50%;pointer-events:none;will-change:transform}
/* cast shadow on the revealed page: darkest at the fold, fading toward the corner */
.pt3 .pt-cast{background:linear-gradient(90deg,rgba(30,15,5,.42),rgba(30,15,5,.16) 26px,rgba(30,15,5,0) 70px)}
/* cylinder on the back of the sheet: shadow in the crease, bright highlight where it rolls, slight darkening toward the tip */
.pt3 .pt-cyl{background:linear-gradient(90deg,rgba(60,35,10,.34) 0,rgba(60,35,10,.08) 8px,rgba(255,255,255,.55) 20px,rgba(255,255,255,.12) 44px,rgba(255,255,255,0) 90px,rgba(60,35,10,0) 160px,rgba(60,35,10,.16) 420px)}
html[data-theme="dark"] .pt3 .pt-cyl{background:linear-gradient(90deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.2) 8px,rgba(200,185,255,.22) 20px,rgba(200,185,255,.05) 44px,rgba(0,0,0,0) 90px,rgba(0,0,0,0) 160px,rgba(0,0,0,.3) 420px)}
/* soft shadow the lifted flap throws onto the front page just past the fold */
.pt3 .pt-lip{z-index:2;background:linear-gradient(90deg,rgba(30,15,5,.3),rgba(30,15,5,.1) 14px,rgba(30,15,5,0) 36px);opacity:0}
html[data-theme="dark"] .pt3 .pt-cast{background:linear-gradient(90deg,rgba(0,0,0,.6),rgba(0,0,0,.25) 26px,rgba(0,0,0,0) 70px)}
html[data-theme="dark"] .pt3 .pt-lip{background:linear-gradient(90deg,rgba(0,0,0,.5),rgba(0,0,0,.18) 14px,rgba(0,0,0,0) 36px)}

/* ---- centred celebration (trophies, level-ups, daily): medal pop where the eyes already are ---- */
.cel.cel-center{top:0;bottom:0;align-items:center;pointer-events:auto;cursor:pointer;padding:0 18px;-webkit-tap-highlight-color:transparent}
.cel-center .cel-glow{position:absolute;inset:0;background:radial-gradient(60% 42% at 50% 48%,rgba(255,214,120,.42),rgba(255,214,120,.12) 45%,rgba(20,12,30,.28) 100%);animation:cel-fade .35s ease both}
html[data-theme="dark"] .cel-center .cel-glow{background:radial-gradient(60% 42% at 50% 48%,rgba(185,151,252,.4),rgba(185,151,252,.1) 45%,rgba(0,0,0,.45) 100%)}
.cel-center .cel-card{width:min(320px,100%);padding:26px 20px 16px;border-radius:32px;animation:cel-pop-c .62s cubic-bezier(.2,1.6,.4,1) both;
  box-shadow:0 30px 70px -24px rgba(40,20,40,.65),0 0 0 1px color-mix(in srgb,var(--ring) 35%,transparent),0 0 60px -10px color-mix(in srgb,var(--ring) 70%,transparent)}
.cel-center.is-out .cel-card{animation:cel-out-c .24s ease-in both}.cel-center.is-out .cel-glow{animation:cel-fade .24s ease-in reverse both}
@keyframes cel-pop-c{0%{opacity:0;transform:scale(.4)}55%{opacity:1;transform:scale(1.06)}100%{transform:none}}
@keyframes cel-out-c{to{opacity:0;transform:scale(.88)}}
@keyframes cel-fade{from{opacity:0}to{opacity:1}}
.cel-medal-wrap{position:relative;display:grid;place-items:center;height:124px}
.cel-medal-wrap::before{content:"";position:absolute;left:50%;top:50%;width:170px;height:170px;margin:-85px 0 0 -85px;border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,var(--ring) 55%,transparent),transparent 68%);animation:cel-halo 1.6s ease-out .1s both}
@keyframes cel-halo{0%{opacity:0;transform:scale(.3)}40%{opacity:1}100%{opacity:.55;transform:scale(1)}}
.cel-center .cel-medal{animation:cel-medal 1s cubic-bezier(.2,1.6,.4,1) .12s both}
.cel-orb{width:104px;height:104px;border-radius:50%;display:grid;place-items:center;color:#fff;box-shadow:inset 0 -6px 12px rgba(0,0,0,.18),inset 0 4px 8px rgba(255,255,255,.5),0 14px 26px -12px rgba(0,0,0,.45)}
.cel-orb svg{fill:currentColor}
.cel-conf{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none}
.cel-conf span{position:absolute;left:calc(var(--w)/-2);top:-4px;width:var(--w);height:8px;border-radius:2px;background:var(--c);opacity:0;
  animation:cel-conf 1.15s cubic-bezier(.15,.75,.3,1) both;animation-delay:calc(.22s + var(--d))}
@keyframes cel-conf{0%{opacity:0;transform:rotate(var(--a)) translateY(0) scale(.5)}15%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateY(calc(var(--r)*-1)) rotate(540deg) scale(1)}}
.cel-conf b{position:absolute;left:-7px;top:-7px;color:#e9b949;opacity:0;animation:cel-star .95s cubic-bezier(.2,.8,.3,1) both;animation-delay:calc(.3s + var(--d))}
.cel-conf b svg{fill:currentColor}
.cel-hint{margin:10px 0 0;font-size:11.5px;color:var(--muted);letter-spacing:.04em}
@media (prefers-reduced-motion:reduce){.cel-center .cel-card,.cel-center .cel-medal,.cel-medal-wrap::before,.cel-center .cel-glow{animation:none}.cel-conf{display:none}}

/* ---- Verse of the Day card (top of Moods): engraving + sunrise gradient, no blur; turns like a page for earlier days ---- */
.votd{position:relative;overflow:hidden;margin:4px 0 18px;border-radius:28px;color:#fff;isolation:isolate;touch-action:pan-y;
  background:#3a237f;box-shadow:0 26px 50px -30px rgba(58,35,127,.95)}
.votd-art{position:absolute;inset:0;z-index:-1}
.votd-art img{width:100%;height:100%;object-fit:cover;object-position:center 30%;display:block;opacity:.55}
.votd-art::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg,rgba(91,63,181,.88) 0%,rgba(150,40,110,.78) 48%,rgba(247,127,0,.62) 100%),linear-gradient(180deg,rgba(20,10,40,.1),rgba(20,10,40,.55))}
.votd.is-past .votd-art::after{background:linear-gradient(160deg,rgba(60,48,120,.9) 0%,rgba(110,50,110,.8) 55%,rgba(170,110,60,.7) 100%),linear-gradient(180deg,rgba(20,10,40,.1),rgba(20,10,40,.6))}
.votd-in{position:relative;padding:20px 20px 16px}
.votd-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.votd-kicker{display:inline-flex;align-items:center;gap:7px;font:800 calc(12px*var(--ui))/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:#ffe08a}
.votd-kicker svg{width:16px;height:16px;fill:#ffd166}
.votd-date{font:650 calc(12.5px*var(--ui))/1.2 var(--sans);color:rgba(255,255,255,.85);padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22)}
.votd-text{margin:16px 0 10px;font:600 calc(23px*var(--vs))/1.42 var(--display);letter-spacing:-.01em;cursor:pointer;text-wrap:pretty;text-shadow:0 1px 14px rgba(30,10,40,.35)}
.votd-text::before{content:"“";color:#ffd98a;margin-right:2px}.votd-text::after{content:"”";color:#ffd98a;margin-left:1px}
.votd-text:focus-visible{outline:2px solid #ffe08a;outline-offset:4px;border-radius:8px}
.votd-ref{margin:0 0 14px;font:800 calc(16px*var(--ui))/1.2 var(--display);color:#ffe8b0}
.votd-ver{font:700 11px/1 var(--sans);letter-spacing:.14em;color:rgba(255,255,255,.75);margin-left:6px}
.votd-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.votd-actions .btn{border:0;color:#3a1d00;background:linear-gradient(135deg,#ffe08a,#f6b73c);box-shadow:0 10px 22px -12px rgba(0,0,0,.6);font-weight:750}
.votd-actions .btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.votd-actions .icon-btn{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.3);color:#fff}
.votd-actions .icon-btn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.votd-actions .icon-btn[aria-pressed="true"]{background:#fff;color:#c2185b}
.votd-actions .icon-btn[aria-pressed="true"] svg{fill:currentColor}
.votd-actions .btn:active,.votd-actions .icon-btn:active{transform:scale(.94)}
.votd-hint{margin:12px 0 0;font-size:calc(12px*var(--ui));color:rgba(255,255,255,.7)}
@media (min-width:760px){.votd-in{padding:28px 30px 22px}.votd-text{font-size:calc(28px*var(--vs));max-width:40ch}}
#vc{touch-action:pan-y}
/* page-turn layers for the two cards (the turning page is a pre-rendered copy of the card) */
.pt-stage .pt-vc,.pt-stage .pt-votd{border-radius:28px;border:0}
.pt-under.pt-vc .pt-under-in{display:grid;grid-template-columns:minmax(0,1fr);padding:0;font:inherit;height:100%}
@media (min-width:760px){.pt-under.pt-vc .pt-under-in{grid-template-columns:1.05fr 1fr}}
.pt-under.pt-votd{background:#3a237f;color:#fff}
.pt-under.pt-votd .pt-under-in{position:relative;padding:0;font:inherit;height:100%;isolation:isolate}
.pt-front.pt-votd .pt-clone,.pt-front.pt-vc .pt-clone{margin:0!important}

/* ---- pill: continuous magnify wave (glass.js sets --mag 0..1 per item from its distance to the lens centre) ---- */
.gp-opt,.gp-more{--mag:0;color:color-mix(in srgb,var(--accent) calc(var(--mag)*100%),var(--muted))!important}
.gp-opt>span,.gp-opt>.tab-icon,.gp-more>span,.gp-more>.tab-icon{transition:none!important;transform:scale(calc(.92 + var(--mag)*.22))!important;transform-origin:50% 70%}
@media (max-width:700px){.gp-opt>.tab-icon,.gp-more>.tab-icon{transform:translateY(calc(var(--mag)*-1px)) scale(calc(.9 + var(--mag)*.26))!important}}
.gp-more:active{transform:none}
/* while the lens is being dragged it rides above the drawer so you can slide back off More */
html.pill-drag .nav-wrap{z-index:86}
.cel-btns .btn{min-width:96px;justify-content:center}
.cel-timer{position:absolute;left:22px;right:22px;bottom:9px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ring) 18%,transparent);overflow:hidden}
.cel-timer b{position:absolute;inset:0;border-radius:2px;background:var(--ring);transform-origin:0 50%;animation:cel-timer 7s linear .3s both}
@keyframes cel-timer{from{transform:scaleX(1)}to{transform:scaleX(0)}}
.cel-center .cel-card{padding-bottom:24px}
@media (prefers-reduced-motion:reduce){.cel-timer{display:none}}

/* ---- press feel (js/fun.js): grow under the finger + soft glass highlight; no 300 ms delay ---- */
.vc-actions button,.votd-actions button,.ver-chip,.reader-bar button,.pk-book,.pk-bubbles button,.pk-ver,.pk-seg button,.brand,.search-fab,.locate-btn,.cel-btns .btn{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.is-pressing{position:relative}
.vc-actions .is-pressing,.votd-actions .is-pressing,.reader-bar .is-pressing,.pk .is-pressing,.ver-chip.is-pressing{box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 0 0 3px color-mix(in srgb,var(--accent2) 18%,transparent),0 10px 22px -12px var(--shadow-c)!important}
.search-fab:active,.vc-actions .btn:active,.votd-actions .btn:active,.votd-actions .icon-btn:active{transform:none}
.fx-check{fill:none!important;stroke:currentColor;stroke-width:2.4!important;stroke-linecap:round;stroke-linejoin:round}
.icon-btn.is-copied{color:#0ca678}
/* version chip on the cards (opens the version picker; flips to the new translation) */
.ver-chip{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:4px 9px 4px 10px;border-radius:999px;border:1px solid var(--line);background:color-mix(in srgb,var(--accent2) 8%,var(--card));
  font:750 11px/1 var(--sans);letter-spacing:.12em;color:var(--muted);cursor:pointer;vertical-align:middle;backface-visibility:hidden}
.ver-chip::after{content:"";width:6px;height:6px;margin-left:2px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:translateY(-2px) rotate(45deg);opacity:.7}
.votd .ver-chip{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.3);color:rgba(255,255,255,.88)}
.vc-keep svg,.votd-read svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.vc-keep{border-color:color-mix(in srgb,var(--accent2) 35%,var(--line));color:var(--accent2)}
@media (max-width:430px){.vc-actions .vc-keep{flex:1 1 100%;justify-content:center}}
/* reader: the verse you arrived at glows softly, twice */
.vs.vs-hl{border-radius:6px;animation:vs-hl 1.5s ease-in-out 2;background:color-mix(in srgb,var(--gilt) 0%,transparent)}
@keyframes vs-hl{0%,100%{background:color-mix(in srgb,var(--gilt) 0%,transparent);box-shadow:0 0 0 0 transparent}45%{background:color-mix(in srgb,var(--gilt) 30%,transparent);box-shadow:0 0 0 4px color-mix(in srgb,var(--gilt) 22%,transparent)}}
@media (prefers-reduced-motion:reduce){.vs.vs-hl{animation:none;background:color-mix(in srgb,var(--gilt) 24%,transparent)}}

/* ---- dog-ear on the mood verse card: a small folded corner that breathes now and then (transform only).
   Dragging from it starts the corner-peel page turn (js/pageturn.js picks the nearest corner). ---- */
.vc-ear{position:absolute;top:0;right:0;z-index:4;width:54px;height:54px;pointer-events:none;overflow:hidden;border-top-right-radius:28px}
.vc-ear i{position:absolute;top:0;right:0;width:40px;height:40px;transform-origin:100% 0;will-change:transform;
  background:linear-gradient(225deg,var(--page) 0 49%,rgba(0,0,0,.18) 49.5%,#fbf3df 52%,#efe1bf 72%,#e2cfa4 100%);border-bottom-left-radius:10px;
  box-shadow:-3px 4px 6px -3px rgba(60,35,10,.35);transform:scale(0);animation:ear-open .9s cubic-bezier(.3,1.35,.5,1) .5s both,ear-idle 2.6s ease-in-out 1.4s infinite alternate;animation-play-state:paused}
#vc.ear-on .vc-ear i{animation-play-state:running}
html[data-theme="dark"] .vc-ear i{background:linear-gradient(225deg,var(--page) 0 49%,rgba(0,0,0,.4) 49.5%,#3b3354 52%,#2f2845 75%,#262038 100%);box-shadow:-3px 4px 7px -3px rgba(0,0,0,.7)}
/* the corner folds out once, then stirs gently: lifts a few degrees and settles, on a constant ~2.6 s ease loop */
@keyframes ear-open{0%{transform:scale(0) rotate(-14deg)}70%{transform:scale(1.12) rotate(2deg)}100%{transform:scale(1) rotate(0deg)}}
@keyframes ear-idle{0%{transform:scale(1) rotate(0deg)}100%{transform:scale(1.07) rotate(-4deg)}}
.pt-stage .vc-ear{display:none}
html.dr-open #vc .vc-ear i{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){.vc-ear i{animation:none;transform:none}}

/* ---- Map: the list button reads "Locations" until discovered (label chip + nudging arrow), transform-only motion ---- */
.search-fab .fab-label{display:none;font:750 15px/1 var(--sans);letter-spacing:-.01em;color:var(--accent2);white-space:nowrap}
.search-fab.is-label{width:auto;padding:0 20px 0 16px;border-radius:28px;display:inline-flex;align-items:center;gap:9px;transform-origin:0 50%;animation:fab-grow .55s cubic-bezier(.3,1.5,.5,1) both}
.search-fab.is-label .fab-label{display:inline;animation:fab-label .4s ease-out .12s both}
@keyframes fab-grow{0%{transform:scale(.55,.92)}60%{transform:scale(1.05,1)}100%{transform:none}}
@keyframes fab-label{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
.fab-nudge{position:absolute;left:calc(100% + 10px);top:50%;margin-top:-17px;width:34px;height:34px;border-radius:50%;display:none;place-items:center;color:#fff;pointer-events:none;
  background:linear-gradient(135deg,var(--accent),var(--accent2));box-shadow:0 8px 18px -8px var(--shadow-c)}
.fab-nudge svg{fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.search-fab.is-nudge+.fab-nudge{display:grid;animation:fab-nudge 2.4s ease-in-out .7s infinite}
@keyframes fab-nudge{0%,55%,100%{transform:translateX(0)}65%{transform:translateX(-9px)}75%{transform:translateX(0)}85%{transform:translateX(-6px)}}
@media (prefers-reduced-motion:reduce){.search-fab.is-label,.search-fab.is-label .fab-label,.search-fab.is-nudge+.fab-nudge{animation:none}}
.splash-replay .fx-layer{z-index:210}

/* ---- "Keep reading": full-screen Bible opening (js/bibleopen.js) — transform/opacity only, no blur ---- */
.bo{position:fixed;inset:0;z-index:220;display:grid;place-items:center;overflow:hidden;cursor:pointer;
  background:radial-gradient(90% 70% at 50% 45%,#3a2556 0%,#1d1430 55%,#0f0b19 100%)}
.bo.bo-quick{background:var(--page)}
.bo-glow{position:absolute;left:50%;top:48%;width:120vmin;height:120vmin;margin:-60vmin 0 0 -60vmin;border-radius:50%;opacity:0;
  background:radial-gradient(circle,rgba(255,226,150,.55) 0%,rgba(255,200,110,.22) 30%,rgba(255,190,90,0) 62%)}
.bo-cam{position:relative;perspective:1600px;transform-origin:50% 50%}
.bo-book{position:relative;width:min(56vw,250px);aspect-ratio:3/4;transform-style:preserve-3d}
.bo-back,.bo-page,.bo-leaf,.bo-cover{position:absolute;inset:0;border-radius:4px 12px 12px 4px}
.bo-back{background:linear-gradient(90deg,#3d1022,#6d1f3d);transform:translateZ(-6px);box-shadow:0 40px 70px -30px rgba(0,0,0,.8)}
.bo-page{background:linear-gradient(90deg,#e9dcbc 0,#fbf4e2 8%,#fffaf0 60%,#f3e8cc 100%);box-shadow:inset 6px 0 10px -6px rgba(80,50,10,.35)}
.bo-page::after{content:"";position:absolute;top:3px;bottom:3px;right:-4px;width:5px;border-radius:0 3px 3px 0;background:repeating-linear-gradient(0deg,#f6edd5 0 1px,#d9c79c 1px 2px)}
.bo-txt{position:absolute;inset:14% 12% 12% 14%;display:flex;flex-direction:column;gap:7%}
.bo-txt b{font:800 clamp(11px,3.6vw,16px)/1.1 var(--display);color:#7A1F3D;letter-spacing:-.01em}
.bo-txt i{display:block;height:5px;border-radius:3px;background:rgba(60,40,20,.2)}.bo-txt i:nth-child(3n){width:82%}.bo-txt i:nth-child(4n){width:64%}
.bo-leaf{transform-origin:0 50%;background:linear-gradient(90deg,#efe3c4,#fdf7e9 40%,#f4e9cf);backface-visibility:visible;transform:translateZ(calc(var(--k) * 1px))}
.bo-cover{transform-origin:0 50%;transform-style:preserve-3d;transform:translateZ(4px)}
.bo-cover-front,.bo-cover-in{position:absolute;inset:0;border-radius:4px 12px 12px 4px;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.bo-cover-front{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8%;
  background:radial-gradient(120% 90% at 30% 20%,rgba(255,255,255,.14),transparent 50%),linear-gradient(135deg,#8a2346 0%,#5b1430 55%,#3e0c22 100%);
  box-shadow:inset 10px 0 14px -8px rgba(0,0,0,.55),inset -1px 0 0 rgba(255,255,255,.12),0 30px 60px -24px rgba(0,0,0,.85)}
.bo-frame{position:absolute;inset:7%;border:1.5px solid rgba(227,194,111,.75);border-radius:3px 8px 8px 3px;box-shadow:inset 0 0 0 4px rgba(227,194,111,.12)}
.bo-emb{width:30%;height:auto}
.bo-title{font:800 clamp(13px,4.4vw,19px)/1 var(--display);letter-spacing:.28em;color:#e9c977;text-shadow:0 1px 0 rgba(0,0,0,.4);margin-left:.28em}
.bo-sub{font:600 clamp(9px,2.6vw,11px)/1 var(--sans);letter-spacing:.2em;color:rgba(233,201,119,.7);text-transform:uppercase}
.bo-cover-in{opacity:0;transform:rotateY(180deg);background:linear-gradient(90deg,#f1e4c3,#e3d1a5);box-shadow:inset -8px 0 12px -8px rgba(80,50,10,.4)}
.bo-motes{position:absolute;left:62%;top:40%;width:0;height:0;transform:translateZ(20px)}
.bo-motes i{position:absolute;width:var(--s);height:var(--s);margin:calc(var(--s)/-2);border-radius:50%;opacity:0;
  background:radial-gradient(circle,#fff6d6 0%,#f2cf6b 45%,rgba(242,207,107,0) 72%)}
/* trophy popup: no countdown; the Amen!/Awesome! button shines, bounces, then the card pops out */
.cel-timer{display:none!important}
.cel-amen{position:relative;overflow:hidden;min-width:132px!important;padding:13px 26px!important;font-size:16px!important;font-weight:800!important;letter-spacing:.01em}
.cel-shine{position:absolute;top:0;bottom:0;left:-60%;width:45%;pointer-events:none;background:linear-gradient(100deg,rgba(255,255,255,0),rgba(255,255,255,.65),rgba(255,255,255,0));transform:skewX(-18deg) translateX(0);opacity:0}
.cel.is-amen .cel-shine{animation:cel-shine .45s ease-out both}
@keyframes cel-shine{0%{opacity:1;transform:skewX(-18deg) translateX(0)}100%{opacity:1;transform:skewX(-18deg) translateX(420%)}}
.cel-center.is-pop .cel-card{animation:cel-pop-out .42s cubic-bezier(.3,1.5,.5,1) both}
@keyframes cel-pop-out{0%{transform:scale(1);opacity:1}45%{transform:scale(1.08);opacity:1}100%{transform:scale(.2);opacity:0}}
.cel-center.is-out .cel-glow{animation:cel-fade .3s ease-in reverse both}
@media (prefers-reduced-motion:reduce){.cel.is-amen .cel-shine{animation:none}.cel-center.is-pop .cel-card{animation:cel-out-c .2s ease-in both}}
