/* Visit Salem — site design system */
:root{
  --lake:#0e3a52; --lake-2:#15587a; --lake-3:#0a2b3d; --sky:#dcebf2;
  --terra:#b8562a; --terra-2:#e08a54; --gold:#e6c77a; --gold-2:#e6c77a;
  --pine:#1d3a2a; --pine-2:#2d5a3f; --berry:#8e1b2b; --cherry:#b8562a; --sun:#e0a83c;
  --paper:#f7f2e8; --paper-2:#efe6d4; --ink:#1c1a17; --ink-2:#4a453d; --ink-3:#7a7366; --rule:#ddd2bc;
  --display:'Fraunces', Georgia, serif; --serif:'Source Serif 4', Georgia, serif; --sans:'Archivo', 'Helvetica Neue', Arial, sans-serif;
  --wrap:1200px; --r:4px; --ease:cubic-bezier(.2,.7,.2,1);
  color-scheme:light;
}
*{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{ background:var(--paper); color:var(--ink); font:400 18px/1.62 var(--serif); -webkit-font-smoothing:antialiased; overflow-x:hidden; }
img{ max-width:100%; display:block; }
a{ color:var(--lake-2); text-decoration-thickness:1px; text-underline-offset:3px; }
button{ font:inherit; }
:focus-visible{ outline:3px solid var(--sun); outline-offset:3px; }
.wrap{ max-width:var(--wrap); margin:0 auto; padding:0 28px; }
@media (max-width:640px){ .wrap{ padding:0 16px; } body{ font-size:17px; } }
.sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }

/* ---------- type ---------- */
.eyebrow{ font:800 12px/1 var(--sans); letter-spacing:.26em; text-transform:uppercase; color:var(--terra); display:inline-flex; align-items:center; gap:10px; }
.eyebrow::before{ content:''; width:28px; height:1.5px; background:currentColor; }
.eyebrow.light{ color:var(--gold-2); }
.h-xl{ font:900 clamp(56px,10vw,150px)/.86 var(--display); letter-spacing:-.045em; font-variation-settings:'opsz' 144,'SOFT' 100; }
.h-l{ font:800 clamp(38px,5.4vw,68px)/.98 var(--display); letter-spacing:-.03em; font-variation-settings:'opsz' 144,'SOFT' 50; margin:14px 0 16px; }
.h-l em, .h-xl em, .h-m em{ font-style:italic; font-weight:400; color:var(--terra); }
.h-m{ font:800 clamp(26px,3vw,36px)/1.05 var(--display); letter-spacing:-.02em; font-variation-settings:'opsz' 96; }
.lede{ font:italic 350 clamp(19px,2vw,23px)/1.45 var(--display); color:var(--ink-2); max-width:720px; }
.on-dark .h-l, .on-dark .h-m{ color:#fff; } .on-dark .h-l em, .on-dark .h-m em{ color:var(--gold-2); } .on-dark .lede{ color:rgba(255,255,255,.82); }
.small{ font:500 14px/1.45 var(--sans); color:var(--ink-3); }

/* ---------- buttons ---------- */
.btn{ display:inline-flex; align-items:center; gap:10px; background:var(--terra); color:#fff; padding:15px 24px; border-radius:var(--r); font:700 14.5px/1 var(--sans); letter-spacing:.03em; text-decoration:none; border:0; cursor:pointer; transition:background .2s, transform .2s var(--ease); }
.btn:hover{ background:#9e4721; transform:translateY(-1px); }
.btn .arr{ transition:transform .2s var(--ease); } .btn:hover .arr{ transform:translateX(4px); }
.btn.ghost{ background:rgba(255,255,255,.08); color:#fff; box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.75); backdrop-filter:blur(6px); }
.btn.ghost:hover{ background:rgba(255,255,255,.18); }
.btn.dark{ background:var(--ink); } .btn.dark:hover{ background:#000; }
.btn.lake{ background:var(--lake); } .btn.lake:hover{ background:var(--lake-3); }
.btn.gold{ background:var(--gold-2); color:var(--ink); } .btn.gold:hover{ background:#f0d690; }
.link{ font:700 14px/1 var(--sans); letter-spacing:.06em; text-transform:uppercase; color:var(--terra); text-decoration:none; display:inline-flex; gap:8px; align-items:center; }
.link:hover .arr{ transform:translateX(4px); } .link .arr{ transition:transform .2s var(--ease); }

/* ---------- header ---------- */
.hdr{ position:fixed; inset:0 0 auto 0; z-index:50; transition:background .3s, box-shadow .3s, color .3s; color:#fff; }
.hdr .wrap{ display:flex; align-items:center; justify-content:space-between; height:74px; gap:20px; }
.hdr.solid, body.inner .hdr{ background:rgba(247,242,232,.96); color:var(--ink); box-shadow:0 1px 0 var(--rule); backdrop-filter:blur(10px); }
.logo{ display:flex; align-items:baseline; gap:10px; color:inherit; text-decoration:none; }
.logo b{ font:900 28px/1 var(--display); letter-spacing:-.03em; font-variation-settings:'opsz' 144,'SOFT' 100; }
.logo span{ font:800 10px/1 var(--sans); letter-spacing:.28em; text-transform:uppercase; color:var(--gold-2); }
.hdr.solid .logo span, body.inner .logo span{ color:var(--terra); }
.nav{ display:flex; align-items:center; gap:26px; font:600 14.5px/1 var(--sans); }
.nav a{ color:inherit; text-decoration:none; position:relative; padding:6px 0; }
.nav a:not(.btn)::after{ content:''; position:absolute; left:0; right:0; bottom:-2px; height:2px; background:var(--terra); transform:scaleX(0); transform-origin:left; transition:transform .25s var(--ease); }
.nav a:not(.btn):hover::after, .nav a[aria-current]::after{ transform:scaleX(1); }
.nav .btn{ padding:11px 18px; color:#fff; }
.burger{ display:none; width:44px; height:44px; border:0; background:transparent; color:inherit; cursor:pointer; position:relative; }
.burger i{ position:absolute; left:11px; right:11px; height:2px; background:currentColor; transition:transform .25s, opacity .2s; }
.burger i:nth-child(1){ top:15px; } .burger i:nth-child(2){ top:21px; } .burger i:nth-child(3){ top:27px; }
body.menu-open .burger i:nth-child(1){ transform:translateY(6px) rotate(45deg); } body.menu-open .burger i:nth-child(2){ opacity:0; } body.menu-open .burger i:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }
@media (max-width:900px){
  .burger{ display:block; z-index:60; }
  .nav{ position:fixed; inset:0; background:var(--lake-3); color:#fff; flex-direction:column; justify-content:center; gap:26px; font:800 28px/1 var(--display); opacity:0; pointer-events:none; transition:opacity .25s; }
  .nav a:not(.btn)::after{ display:none; }
  body.menu-open .nav{ opacity:1; pointer-events:auto; }
  body.menu-open .hdr{ color:#fff; background:transparent; box-shadow:none; }
  .nav .btn{ font:700 16px/1 var(--sans); padding:16px 24px; }
}

/* ---------- hero slideshow ---------- */
.hero{ position:relative; height:100vh; min-height:640px; max-height:1100px; background:#0b1a24; color:#fff; overflow:hidden; }
.slide{ position:absolute; inset:0; opacity:0; transition:opacity 1.6s ease; }
.slide.on{ opacity:1; }
.slide img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transform:scale(1.02); }
.slide.on img{ animation:kb 9s linear forwards; }
@keyframes kb{ from{ transform:scale(1.02); } to{ transform:scale(1.12); } }
.hero::after{ content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,.5) 0%, rgba(0,0,0,.08) 22%, rgba(0,0,0,.32) 46%, rgba(0,0,0,.9) 100%), radial-gradient(ellipse at 15% 85%, rgba(0,0,0,.45) 0%, rgba(0,0,0,0) 60%); pointer-events:none; }
.hero .copy{ text-shadow:0 2px 24px rgba(0,0,0,.35); }
.hero .copy{ position:absolute; left:0; right:0; bottom:0; z-index:2; padding-bottom:clamp(36px,7vh,80px); }
.hero .mast{ color:#f6e7c8; }
.hero .tag{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px 20px; max-width:980px; border-top:1px solid rgba(230,199,122,.55); margin-top:18px; padding-top:14px; font:800 13px/1 var(--sans); letter-spacing:.3em; text-transform:uppercase; color:var(--gold-2); }
.hero .say{ font:italic 400 clamp(21px,2.6vw,30px)/1.32 var(--display); max-width:760px; margin:26px 0 28px; color:rgba(255,255,255,.95); }
.hero .ctas{ display:flex; gap:12px; flex-wrap:wrap; }
.hero .meta{ position:absolute; right:28px; bottom:26px; z-index:3; text-align:right; font:600 12px/1.4 var(--sans); color:rgba(255,255,255,.75); }
.hero .meta b{ display:block; color:#fff; letter-spacing:.14em; text-transform:uppercase; font-size:11px; }
.dots{ display:flex; gap:8px; justify-content:flex-end; margin-top:10px; }
.dots button{ width:28px; height:3px; border:0; background:rgba(255,255,255,.35); cursor:pointer; padding:0; }
.dots button.on{ background:var(--gold-2); }
@media (max-width:760px){ .hero .meta{ display:none; } }
.scrollcue{ position:absolute; left:50%; bottom:18px; z-index:3; width:1px; height:44px; background:linear-gradient(rgba(255,255,255,0), rgba(255,255,255,.8)); animation:cue 2.2s ease-in-out infinite; }
@keyframes cue{ 0%,100%{ transform:translateY(-6px); opacity:.3; } 50%{ transform:translateY(4px); opacity:1; } }

/* page hero (inner pages) */
.phero{ position:relative; min-height:62vh; display:flex; align-items:flex-end; color:#fff; background:#000; overflow:hidden; }
.phero img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
body.inner .phero img{ top:74px; height:calc(100% - 74px); }   /* start photos below the solid header */
.phero::after{ content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,.45) 0%, rgba(0,0,0,0) 35%, rgba(0,0,0,.85) 100%); }
.phero .wrap{ position:relative; z-index:2; width:100%; padding-top:130px; padding-bottom:52px; }
.phero h1{ font:900 clamp(48px,8.5vw,112px)/.9 var(--display); letter-spacing:-.04em; margin:14px 0 16px; font-variation-settings:'opsz' 144,'SOFT' 80; }
.phero h1 em{ font-style:italic; font-weight:400; color:var(--gold-2); }
.phero .lede{ color:rgba(255,255,255,.9); }
.phero .credit{ position:absolute; right:14px; bottom:12px; z-index:2; font:400 11px/1 var(--sans); color:rgba(255,255,255,.6); }

/* ---------- ticker ---------- */
.ticker{ background:var(--ink); color:var(--paper); overflow:hidden; white-space:nowrap; border-bottom:1px solid #000; }
.ticker .track{ display:inline-flex; padding:16px 0; animation:tick 46s linear infinite; font:700 14px/1 var(--sans); letter-spacing:.16em; text-transform:uppercase; }
.ticker .track span{ flex:none; }
.ticker .track span::after{ content:'✦'; color:var(--gold-2); margin:0 40px; letter-spacing:0; }
.ticker b{ color:var(--gold-2); font-weight:800; }
@keyframes tick{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }

/* ---------- sections ---------- */
.sec{ padding:clamp(72px,10vw,128px) 0; position:relative; }
.sec.alt{ background:var(--paper-2); }
.sec.dark{ background:var(--lake); color:#fff; }
.sec.night{ background:var(--ink); color:#fff; }
.sec-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:30px; flex-wrap:wrap; margin-bottom:42px; }
.sec-head > div{ max-width:760px; }

/* mood tiles */
.moods{ display:grid; grid-template-columns:repeat(12,1fr); gap:16px; }
.mood{ position:relative; overflow:hidden; border-radius:var(--r); color:#fff; text-decoration:none; min-height:300px; display:flex; align-items:flex-end; isolation:isolate; }
.mood img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; transition:transform .9s var(--ease); }
.mood::before{ content:''; position:absolute; inset:0; z-index:-1; background:linear-gradient(180deg, rgba(0,0,0,0) 35%, rgba(0,0,0,.82) 100%); }
.mood:hover img{ transform:scale(1.07); }
.mood .t{ padding:24px; }
.mood .t small{ font:800 11px/1 var(--sans); letter-spacing:.24em; text-transform:uppercase; color:var(--gold-2); }
.mood .t b{ display:block; font:800 clamp(26px,2.6vw,36px)/1 var(--display); letter-spacing:-.02em; margin:8px 0 6px; }
.mood .t span{ font:400 15px/1.4 var(--sans); color:rgba(255,255,255,.85); display:block; max-width:360px; }
.m-a{ grid-column:span 7; min-height:460px; } .m-b{ grid-column:span 5; min-height:460px; }
.m-c,.m-d,.m-e{ grid-column:span 4; } .m-f{ grid-column:span 12; min-height:260px; }
@media (max-width:900px){ .m-a,.m-b,.m-c,.m-d,.m-e,.m-f{ grid-column:span 12; min-height:300px; } }

/* holiday band */
.holiday{ background:radial-gradient(ellipse at 70% 0%, #2d5a3f 0%, var(--pine) 55%, #11251a 100%); color:#fff; overflow:hidden; }
.snow{ position:absolute; inset:-50% 0 0 0; pointer-events:none; background-image:radial-gradient(rgba(255,255,255,.8) 1.3px, transparent 1.8px), radial-gradient(rgba(255,255,255,.5) 1px, transparent 1.5px), radial-gradient(rgba(255,255,255,.35) 1.6px, transparent 2px); background-size:120px 120px, 80px 80px, 200px 200px; background-position:0 0, 40px 60px, 100px 20px; animation:snow 22s linear infinite; opacity:.55; }
@keyframes snow{ from{ transform:translateY(0); } to{ transform:translateY(50%); } }
.hol-grid{ position:relative; display:grid; grid-template-columns:1.05fr 1fr; gap:60px; align-items:center; }
.count{ display:flex; gap:14px; margin:26px 0 30px; }
.count div{ background:rgba(255,255,255,.07); border:1px solid rgba(230,199,122,.35); border-radius:var(--r); padding:16px 18px 12px; min-width:104px; text-align:center; }
.count b{ display:block; font:900 54px/1 var(--display); color:var(--gold-2); font-variation-settings:'opsz' 144; }
.count span{ font:700 11px/1 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:rgba(255,255,255,.75); }
.hol-list{ list-style:none; border-top:1px solid rgba(230,199,122,.35); }
.hol-list li{ display:grid; grid-template-columns:110px 1fr; gap:18px; padding:16px 0; border-bottom:1px solid rgba(230,199,122,.25); }
.hol-list .d{ font:800 13px/1.3 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--gold-2); }
.hol-list b{ display:block; font:700 20px/1.2 var(--display); }
.hol-list span{ font:400 15px/1.45 var(--sans); color:rgba(255,255,255,.78); }
.hol-photo{ position:relative; border-radius:var(--r); overflow:hidden; aspect-ratio:4/5; box-shadow:0 30px 60px rgba(0,0,0,.4); }
.hol-photo img{ width:100%; height:100%; object-fit:cover; }
.hol-photo figcaption{ position:absolute; left:0; right:0; bottom:0; padding:60px 20px 16px; background:linear-gradient(rgba(0,0,0,0), rgba(0,0,0,.75)); font:500 12px/1.4 var(--sans); color:rgba(255,255,255,.8); }
@media (max-width:900px){ .hol-grid{ grid-template-columns:1fr; gap:40px; } .count div{ min-width:0; flex:1; } .count b{ font-size:42px; } }

/* stats */
.stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:30px; }
.stat{ border-top:2px solid var(--terra); padding-top:14px; }
.stat b{ display:block; font:900 clamp(40px,5vw,64px)/1 var(--display); color:var(--lake); letter-spacing:-.03em; font-variation-settings:'opsz' 144; }
.stat span{ display:block; font:500 15px/1.4 var(--sans); color:var(--ink-2); margin-top:8px; }
@media (max-width:760px){ .stats{ grid-template-columns:1fr 1fr; } }

/* map */
.mapwrap{ display:grid; grid-template-columns:1fr 400px; gap:44px; align-items:start; }
.map{ position:relative; aspect-ratio:1000/1303; max-height:86vh; margin:0 auto; width:100%; }
.map > img{ width:100%; height:100%; object-fit:contain; filter:drop-shadow(0 18px 40px rgba(14,58,82,.18)); }
.pin{ position:absolute; transform:translate(-50%,-50%); width:34px; height:34px; border-radius:50%; border:3px solid #fff; background:var(--cherry); color:#fff; font:800 14px/28px var(--sans); text-align:center; cursor:pointer; box-shadow:0 4px 12px rgba(0,0,0,.25); transition:transform .2s var(--ease), background .2s; padding:0; }
.pin::after{ content:''; position:absolute; inset:-9px; border-radius:50%; border:2px solid var(--cherry); opacity:0; animation:ping 2.4s ease-out infinite; }
.pin:hover, .pin.on{ transform:translate(-50%,-50%) scale(1.22); background:var(--lake); }
.pin.on::after{ border-color:var(--lake); }
@keyframes ping{ 0%{ transform:scale(.6); opacity:.7; } 100%{ transform:scale(1.5); opacity:0; } }
.places{ list-style:none; }
.places li button{ width:100%; display:grid; grid-template-columns:34px 1fr; gap:14px; align-items:start; text-align:left; background:none; border:0; border-bottom:1px solid var(--rule); padding:14px 4px; cursor:pointer; color:var(--ink); }
.places li button i{ width:30px; height:30px; border-radius:50%; background:var(--cherry); color:#fff; font:800 13px/30px var(--sans); text-align:center; font-style:normal; }
.places li button b{ display:block; font:700 18px/1.2 var(--display); }
.places li button span{ display:block; font:400 14px/1.45 var(--sans); color:var(--ink-2); margin-top:3px; }
.places li button .more{ display:none; margin-top:8px; font:400 15px/1.5 var(--serif); color:var(--ink); }
.places li.on button{ background:var(--paper-2); } .places li.on button i{ background:var(--lake); }
.places li.on .more{ display:block; }
@media (max-width:980px){ .mapwrap{ grid-template-columns:1fr; } .map{ max-width:560px; } }

/* calculator */
.calc{ display:grid; grid-template-columns:1fr 1fr; gap:0; border-radius:var(--r); overflow:hidden; box-shadow:0 20px 50px rgba(0,0,0,.12); }
.calc .in{ background:#fff; padding:40px; }
.calc .out{ background:var(--lake); color:#fff; padding:40px; display:flex; flex-direction:column; justify-content:center; }
.calc label{ display:block; font:800 12px/1 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:var(--ink-3); margin-bottom:12px; }
.money{ display:flex; align-items:center; border-bottom:3px solid var(--ink); }
.money span{ font:800 44px/1 var(--display); color:var(--ink-3); }
.money input{ width:100%; border:0; background:transparent; font:800 56px/1.1 var(--display); color:var(--ink); padding:6px 8px; outline:none; letter-spacing:-.02em; }
.chips{ display:flex; flex-wrap:wrap; gap:8px; margin-top:20px; }
.chips button{ border:1.5px solid var(--rule); background:var(--paper); border-radius:999px; padding:9px 15px; font:600 14px/1 var(--sans); cursor:pointer; color:var(--ink); transition:all .15s; }
.chips button:hover{ border-color:var(--ink-3); }
.chips button[aria-pressed="true"]{ background:var(--ink); border-color:var(--ink); color:#fff; }
.calc .out .k{ font:800 12px/1 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:var(--gold-2); }
.calc .out .big{ font:900 clamp(64px,8vw,104px)/.9 var(--display); letter-spacing:-.04em; margin:14px 0 10px; font-variation-settings:'opsz' 144,'SOFT' 100; }
.calc .out p{ font:400 15.5px/1.5 var(--sans); color:#d4e5ee; }
@media (max-width:820px){ .calc{ grid-template-columns:1fr; } .calc .in, .calc .out{ padding:26px; } }

/* stories */
.stories{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
.story{ text-decoration:none; color:var(--ink); display:flex; flex-direction:column; }
.story .im{ overflow:hidden; border-radius:var(--r); aspect-ratio:4/3; }
.story .im img{ width:100%; height:100%; object-fit:cover; transition:transform .8s var(--ease); }
.story:hover .im img{ transform:scale(1.06); }
.story .eyebrow{ margin-top:18px; }
.story h3{ font:800 26px/1.08 var(--display); letter-spacing:-.02em; margin:10px 0 8px; }
.story p{ font:400 16px/1.5 var(--serif); color:var(--ink-2); }
.story.feat{ grid-column:span 2; }
.story.feat .im{ aspect-ratio:16/9; }
.story.feat h3{ font-size:clamp(30px,3.4vw,44px); }
@media (max-width:900px){ .stories{ grid-template-columns:1fr 1fr; } .story.feat{ grid-column:span 2; } }
@media (max-width:600px){ .stories{ grid-template-columns:1fr; } .story.feat{ grid-column:span 1; } }

/* dining */
.filters{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:30px; }
.dgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.dcard{ background:#fff; border-radius:var(--r); padding:24px 24px 20px; box-shadow:0 1px 2px rgba(0,0,0,.06); border-top:3px solid var(--terra); display:flex; flex-direction:column; transition:transform .2s var(--ease), box-shadow .2s; }
.dcard:hover{ transform:translateY(-3px); box-shadow:0 12px 30px rgba(0,0,0,.1); }
.dcard[data-area="Route 28 & the Mall"]{ border-top-color:var(--lake); } .dcard[data-area="Around town"]{ border-top-color:var(--pine-2); }
.dcard .k{ font:800 11px/1.3 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--terra); }
.dcard h3{ font:800 23px/1.1 var(--display); letter-spacing:-.015em; margin:8px 0 8px; }
.dcard p{ font:400 15.5px/1.5 var(--serif); color:var(--ink-2); flex:1; }
.dcard .ft{ display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-top:16px; padding-top:12px; border-top:1px dotted var(--rule); font:600 13.5px/1.35 var(--sans); color:var(--ink-3); }
.dcard .ft a{ color:var(--lake-2); text-decoration:none; font-weight:700; }
.dcard .badge{ display:inline-block; font:800 10px/1 var(--sans); letter-spacing:.12em; text-transform:uppercase; background:var(--berry); color:#fff; padding:5px 7px; border-radius:2px; margin-left:6px; vertical-align:2px; }
.dcard.hide{ display:none; }
@media (max-width:900px){ .dgrid{ grid-template-columns:1fr 1fr; } }
@media (max-width:600px){ .dgrid{ grid-template-columns:1fr; } }

/* events timeline */
.tl{ list-style:none; position:relative; }
.tl::before{ content:''; position:absolute; left:118px; top:0; bottom:0; width:2px; background:var(--rule); }
.tl li{ display:grid; grid-template-columns:100px 1fr; gap:46px; padding:22px 0; position:relative; }
.tl li::before{ content:''; position:absolute; left:112px; top:30px; width:14px; height:14px; border-radius:50%; background:var(--paper); border:3px solid var(--terra); }
.tl li.hol::before{ border-color:var(--berry); background:var(--berry); }
.tl .d{ text-align:right; }
.tl .d b{ display:block; font:900 32px/1 var(--display); color:var(--ink); }
.tl .d span{ font:800 11px/1.3 var(--sans); letter-spacing:.16em; text-transform:uppercase; color:var(--terra); }
.tl h3{ font:800 24px/1.15 var(--display); letter-spacing:-.015em; }
.tl p{ font:400 16.5px/1.55 var(--serif); color:var(--ink-2); margin-top:6px; max-width:720px; }
.tl .meta{ font:600 13.5px/1.4 var(--sans); color:var(--ink-3); margin-top:8px; }
@media (max-width:640px){ .tl::before{ left:8px; } .tl li{ grid-template-columns:1fr; gap:6px; padding-left:34px; } .tl li::before{ left:2px; top:28px; } .tl .d{ text-align:left; } .tl .d b{ display:inline; font-size:24px; margin-right:8px; } }

/* magazine strip */
.mag{ display:grid; grid-template-columns:.9fr 1.1fr; gap:60px; align-items:center; }
.fan{ position:relative; height:520px; }
.fan img{ position:absolute; width:56%; box-shadow:0 24px 50px rgba(0,0,0,.28); border-radius:2px; transition:transform .5s var(--ease); background:#fff; }
.fan img:nth-child(1){ left:0; top:40px; transform:rotate(-7deg); }
.fan img:nth-child(2){ left:22%; top:10px; transform:rotate(1deg); z-index:2; }
.fan img:nth-child(3){ left:44%; top:46px; transform:rotate(8deg); }
.fan:hover img:nth-child(1){ transform:rotate(-10deg) translateX(-16px); } .fan:hover img:nth-child(3){ transform:rotate(11deg) translateX(16px); }
@media (max-width:900px){ .mag{ grid-template-columns:1fr; } .fan{ height:380px; } }

/* advertise band */
.adband{ background:var(--lake-3); color:#fff; position:relative; overflow:hidden; }
.adband .big{ font:900 clamp(110px,18vw,240px)/.8 var(--display); letter-spacing:-.06em; color:var(--gold-2); font-variation-settings:'opsz' 144,'SOFT' 100; }
.adgrid{ display:grid; grid-template-columns:1fr 1fr; gap:60px; align-items:center; }
.rates{ list-style:none; }
.rates li{ display:flex; justify-content:space-between; align-items:baseline; padding:16px 0; border-bottom:1px solid rgba(230,199,122,.3); font:600 17px/1 var(--sans); color:#d9e9f0; }
.rates li b{ font:800 26px/1 var(--display); color:#fff; }
@media (max-width:900px){ .adgrid{ grid-template-columns:1fr; gap:30px; } }

/* plan page: cards */
.cards3{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.pcard{ background:#fff; border-radius:var(--r); padding:28px; box-shadow:0 1px 2px rgba(0,0,0,.06); }
.pcard h3{ font:800 24px/1.1 var(--display); margin:10px 0 10px; }
.pcard ul{ list-style:none; font:400 16px/1.5 var(--sans); }
.pcard li{ padding:9px 0; border-bottom:1px dotted var(--rule); }
.pcard li b{ font-weight:800; }
@media (max-width:900px){ .cards3{ grid-template-columns:1fr; } }

/* article */
.article{ display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:64px; padding:72px 0 90px; }
.prose{ font-size:19.5px; line-height:1.68; max-width:700px; }
.prose > p{ margin-bottom:1.15em; }
.prose > p:first-of-type::first-letter{ float:left; font:800 88px/.8 var(--display); color:var(--terra); padding:10px 12px 0 0; }
.prose h3{ font:800 30px/1.1 var(--display); letter-spacing:-.02em; margin:1.6em 0 .55em; }
.prose ul{ margin:0 0 1.2em 1.1em; } .prose li{ margin:.3em 0; }
.prose figure{ margin:1.8em 0; } .prose figure img{ border-radius:var(--r); }
.prose figcaption{ font:400 13.5px/1.45 var(--sans); color:var(--ink-3); margin-top:8px; }
.prose .timeline{ list-style:none; border-left:2px solid var(--terra); padding-left:22px; margin:1.2em 0 1.6em; }
.prose .timeline li{ position:relative; font:400 17px/1.5 var(--sans); padding:6px 0; }
.prose .timeline li::before{ content:''; position:absolute; left:-30px; top:13px; width:12px; height:12px; background:var(--terra); transform:rotate(45deg); }
.prose .timeline b{ font:800 20px/1 var(--display); color:var(--terra); margin-right:10px; }
.dine-list{ display:grid; grid-template-columns:1fr 1fr; gap:6px 28px; }
.dine-list div{ padding:12px 0; border-bottom:1px dotted var(--rule); }
.dine-list b{ font:700 19px/1.2 var(--display); display:block; }
.dine-list i{ font:800 11px/1.2 var(--sans); letter-spacing:.12em; text-transform:uppercase; color:var(--terra); font-style:normal; display:block; margin:3px 0 4px; }
.dine-list span{ font:400 15px/1.45 var(--serif); display:block; } .dine-list small{ font:500 13px/1.3 var(--sans); color:var(--ink-2); display:block; margin-top:4px; }
.aside .box{ background:var(--paper-2); padding:26px; border-radius:var(--r); position:sticky; top:100px; }
.aside h4{ font:800 12px/1 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:var(--terra); margin-bottom:14px; }
.aside dl{ display:grid; grid-template-columns:auto 1fr; gap:9px 14px; font:400 15.5px/1.4 var(--sans); }
.aside dt{ font-weight:800; }
.aside ul{ list-style:none; font:400 15.5px/1.45 var(--sans); } .aside li{ padding:8px 0; border-bottom:1px dotted var(--rule); }
.next{ display:grid; grid-template-columns:1fr 1fr; gap:20px; padding:0 0 90px; }
.next a{ display:block; padding:26px; background:#fff; border-radius:var(--r); text-decoration:none; color:var(--ink); box-shadow:0 1px 2px rgba(0,0,0,.06); }
.next a small{ font:800 11px/1 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:var(--terra); }
.next a b{ display:block; font:800 24px/1.15 var(--display); margin-top:8px; }
.next a:last-child{ text-align:right; }
@media (max-width:900px){ .article{ grid-template-columns:1fr; gap:34px; } .aside .box{ position:static; } .dine-list{ grid-template-columns:1fr; } .next{ grid-template-columns:1fr; } .next a:last-child{ text-align:left; } }

/* advertise page */
.ratetable{ width:100%; border-collapse:collapse; background:#fff; border-radius:var(--r); overflow:hidden; box-shadow:0 1px 2px rgba(0,0,0,.06); }
.ratetable th{ text-align:left; font:800 12px/1 var(--sans); letter-spacing:.16em; text-transform:uppercase; color:var(--ink-3); padding:16px 20px; border-bottom:2px solid var(--ink); }
.ratetable td{ padding:18px 20px; border-bottom:1px solid var(--rule); font:400 16px/1.3 var(--sans); }
.ratetable td.r, .ratetable th.r{ text-align:right; }
.ratetable .sz{ display:block; font-size:13px; color:var(--ink-3); margin-top:3px; }
.ratetable .cph{ font:800 28px/1 var(--display); color:var(--lake); }
@media (max-width:640px){ .ratetable .hide-sm{ display:none; } .ratetable td, .ratetable th{ padding:13px 10px; } }
.bars{ margin-top:28px; max-width:900px; }
.bars .b{ display:grid; grid-template-columns:minmax(150px,290px) 1fr 74px; gap:16px; align-items:center; margin:14px 0; font:600 15.5px/1.25 var(--sans); }
.bars .b div{ height:20px; border-radius:2px; transform-origin:left; }
.bars .b strong{ font:800 24px/1 var(--display); text-align:right; }
@media (max-width:600px){ .bars .b{ grid-template-columns:1fr 64px; } .bars .b div{ grid-column:1 / -1; grid-row:2; } }
.bcalc{ display:grid; grid-template-columns:1fr 1fr; border-radius:var(--r); overflow:hidden; box-shadow:0 20px 50px rgba(0,0,0,.12); }
.bcalc .in{ background:#fff; padding:36px; } .bcalc .out{ background:var(--lake); color:#fff; padding:36px; }
.bcalc .out .k{ font:800 12px/1 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:var(--gold-2); }
.bcalc .out .big{ font:900 92px/.9 var(--display); letter-spacing:-.04em; margin:14px 0 6px; font-variation-settings:'opsz' 144,'SOFT' 100; }
.bcalc .out dl{ display:grid; grid-template-columns:1fr auto; gap:10px 16px; margin-top:18px; font:500 16px/1.3 var(--sans); color:#d9e9f0; border-top:1px solid rgba(230,199,122,.4); padding-top:16px; }
.bcalc .out dd{ font:800 20px/1.2 var(--display); color:#fff; text-align:right; }
@media (max-width:820px){ .bcalc{ grid-template-columns:1fr; } .bcalc .in, .bcalc .out{ padding:24px; } }
.sizes{ display:flex; gap:28px; flex-wrap:wrap; }
.sizes figure{ width:150px; }
.sizes .pg{ position:relative; width:150px; height:194.8px; background:#fff; border:1px solid var(--rule); box-shadow:0 2px 6px rgba(0,0,0,.08); }
.sizes .u{ position:absolute; display:flex; align-items:center; justify-content:center; color:#fff; font:800 11px/1.2 var(--sans); letter-spacing:.06em; text-transform:uppercase; text-align:center; }
.sizes figcaption{ font:600 13px/1.35 var(--sans); color:var(--ink-3); margin-top:8px; }
.steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; counter-reset:s; }
.steps div{ border-top:2px solid var(--gold-2); padding-top:14px; font:400 16px/1.5 var(--sans); color:#d9e9f0; }
.steps div::before{ counter-increment:s; content:counter(s); display:block; font:900 48px/1 var(--display); color:#fff; margin-bottom:8px; }
.steps b{ display:block; font:700 20px/1.2 var(--display); color:#fff; margin-bottom:6px; }
@media (max-width:820px){ .steps{ grid-template-columns:1fr 1fr; } }
.faq details{ border-bottom:1px solid var(--rule); padding:20px 0; }
.faq summary{ font:700 21px/1.3 var(--display); cursor:pointer; list-style:none; display:flex; justify-content:space-between; gap:20px; }
.faq summary::-webkit-details-marker{ display:none; }
.faq summary::after{ content:'+'; color:var(--terra); font-weight:400; font-size:28px; line-height:.9; }
.faq details[open] summary::after{ content:'−'; }
.faq details p{ margin-top:10px; font-size:17px; color:var(--ink-2); max-width:780px; }
.form{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form label{ font:700 13px/1 var(--sans); letter-spacing:.06em; color:#d9e9f0; display:block; margin-bottom:8px; }
.form input, .form select, .form textarea{ width:100%; padding:14px; font:400 16px/1.3 var(--sans); border:1px solid rgba(255,255,255,.28); background:rgba(255,255,255,.07); color:#fff; border-radius:var(--r); }
.form select option{ color:#000; } .form .full{ grid-column:1 / -1; }
@media (max-width:640px){ .form{ grid-template-columns:1fr; } }

/* share */
.sharegrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
.share{ background:#fff; padding:14px; border-radius:var(--r); box-shadow:0 1px 3px rgba(0,0,0,.08); display:flex; flex-direction:column; }
.share img{ width:100%; aspect-ratio:4/5; object-fit:cover; border-radius:2px; }
.share textarea{ width:100%; min-height:136px; margin-top:12px; font:400 14px/1.45 var(--sans); padding:12px; border:1px solid var(--rule); background:var(--paper); resize:vertical; color:var(--ink); border-radius:var(--r); }
.share .row{ display:flex; gap:10px; margin-top:10px; flex-wrap:wrap; } .share .row .btn{ padding:11px 15px; font-size:13px; }
@media (max-width:900px){ .sharegrid{ grid-template-columns:1fr 1fr; } } @media (max-width:600px){ .sharegrid{ grid-template-columns:1fr; } }

/* footer */
.ftr{ background:#0f0d0a; color:#cfc5ae; padding:80px 0 40px; font:400 15px/1.6 var(--sans); }
.ftr .top{ display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:40px; }
.ftr .logo b{ color:#f6e7c8; font-size:40px; }
.ftr p{ margin-top:14px; max-width:360px; }
.ftr .member{ margin-top:18px; padding-top:14px; border-top:1px solid #2a251e; font-size:13px; color:#8f866f; } .ftr .member a{ color:#cfc5ae; text-decoration:underline; text-underline-offset:2px; }
.ftr h5{ font:800 12px/1 var(--sans); letter-spacing:.22em; text-transform:uppercase; color:var(--gold-2); margin-bottom:16px; }
.ftr ul{ list-style:none; } .ftr li{ padding:4px 0; }
.ftr a{ color:#e8dcc2; text-decoration:none; } .ftr a:hover{ color:#fff; text-decoration:underline; }
.ftr .fine{ margin-top:56px; padding-top:22px; border-top:1px solid #2a251e; font-size:13px; color:#8f866f; display:flex; justify-content:space-between; gap:20px; flex-wrap:wrap; }
@media (max-width:900px){ .ftr .top{ grid-template-columns:1fr 1fr; } } @media (max-width:560px){ .ftr .top{ grid-template-columns:1fr; } }

/* reveal on scroll */
.rv{ opacity:0; transform:translateY(26px); transition:opacity .9s var(--ease), transform .9s var(--ease); }
.rv.in{ opacity:1; transform:none; }
.rv.d1{ transition-delay:.08s; } .rv.d2{ transition-delay:.16s; } .rv.d3{ transition-delay:.24s; } .rv.d4{ transition-delay:.32s; }
@media (prefers-reduced-motion:reduce){
  *, *::before, *::after{ animation:none !important; transition:none !important; }
  .rv{ opacity:1; transform:none; } .slide.on img{ transform:none; }
}
.toast{ position:fixed; left:50%; bottom:24px; transform:translateX(-50%); background:var(--ink); color:#fff; padding:11px 20px; font:600 14px/1 var(--sans); border-radius:var(--r); opacity:0; transition:opacity .2s; pointer-events:none; z-index:80; }
.toast.on{ opacity:1; }
/* fixes */
body.menu-open .hdr{ backdrop-filter:none !important; -webkit-backdrop-filter:none !important; }
body.menu-open{ overflow:hidden; }
@media (max-width:600px){ .hol-list li{ grid-template-columns:1fr; gap:4px; } .tag span:last-child{ display:none; } }
.slide.first{ background-size:cover; background-position:center; }

/* ---------- brand v2 (logo images) ---------- */
.logo img{ display:block; height:42px; width:auto; }
.logo .lc{ display:none; }
.hdr.solid .logo .lr, body.inner .logo .lr{ display:none; }
.hdr.solid .logo .lc, body.inner .logo .lc{ display:block; }
body.menu-open .hdr .logo .lr{ display:block !important; } body.menu-open .hdr .logo .lc{ display:none !important; }
.hero .mast{ margin:18px 0 0; line-height:0; }
.hero .mast img{ width:min(640px, 86vw); height:auto; }
.flogo img{ display:block; width:240px; height:auto; }
.greet{ background:var(--paper-2); padding:clamp(56px,8vw,110px) 0; overflow:hidden; }
.greet .wrap{ display:grid; grid-template-columns:minmax(0,1.55fr) minmax(0,1fr); gap:clamp(28px,4vw,64px); align-items:center; }
.greet .g-art img{ display:block; width:100%; height:auto; }
.g-key{ list-style:none; margin:18px 0 18px; padding:0; border-top:1px solid var(--rule); }
.g-key li{ display:flex; align-items:baseline; gap:14px; padding:9px 0; border-bottom:1px solid var(--rule); font:500 16px/1.35 var(--sans); }
.g-key b{ font:900 22px/1 var(--display); color:var(--terra); width:22px; }
@media (max-width:900px){ .greet .wrap{ grid-template-columns:minmax(0,1fr); } .logo img{ height:36px; } }

/* ---------- booking: /book, /booked, /ad-terms ---------- */
[hidden]{ display:none !important; }
.wrap.narrow{ max-width:880px; }
.bookhead{ padding:150px 0 10px; }
.booksec{ padding-top:36px; }
.book{ display:grid; grid-template-columns:minmax(0,1fr) 360px; gap:56px; align-items:start; }
.bk fieldset{ border:0; margin:0 0 46px; padding:0 0 46px; border-bottom:1px solid var(--rule); min-width:0; }
.bk fieldset:last-of-type{ border-bottom:0; margin-bottom:0; }
.bk legend{ display:flex; align-items:center; gap:14px; padding:0; margin-bottom:24px; font:800 clamp(26px,3vw,34px)/1.1 var(--display); letter-spacing:-.02em; }
.bk legend i{ display:inline-grid; place-items:center; width:36px; height:36px; border-radius:50%; background:var(--lake); color:#fff; font:800 15px/1 var(--sans); font-style:normal; }
.bk .lbl, .bk fieldset > div:not(.opts) > label, .bk .grid2 label, .bk .trio label{ display:block; margin:0 0 9px; font:800 12px/1.2 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--ink-2); }
.bk .lbl span, .bk label:not(.opt):not(.agree) > span{ font-weight:500; letter-spacing:.03em; text-transform:none; color:var(--ink-3); }
.bk input[type=text], .bk input:not([type]), .bk input[type=email], .bk input[type=tel], .bk select, .bk textarea{ width:100%; padding:13px 14px; font:400 16px/1.3 var(--sans); color:var(--ink); background:#fff; border:1.5px solid var(--rule); border-radius:var(--r); }
.bk textarea{ resize:vertical; }
.bk input:focus-visible, .bk select:focus-visible, .bk textarea:focus-visible{ outline:none; border-color:var(--lake-2); box-shadow:0 0 0 3px rgba(21,88,122,.2); }
.bk .bad{ border-color:var(--berry) !important; background:#fff7f7 !important; }
.grid2{ display:grid; grid-template-columns:1fr 1fr; gap:18px 18px; } .grid2 .full{ grid-column:1 / -1; }
.trio{ display:grid; grid-template-columns:minmax(0,1fr) 92px 140px; gap:18px; }
.opts{ display:grid; gap:12px; margin-bottom:24px; }
.opts.sizes{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.opts.iss, .opts.two{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.opts.pay{ grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); }
.opt{ position:relative; display:block; cursor:pointer; }
.opt input{ position:absolute; inset:0; width:100%; height:100%; margin:0; opacity:0; cursor:pointer; z-index:1; }
.opt input:disabled{ cursor:not-allowed; }
.opt .card{ position:relative; display:flex; flex-direction:column; gap:5px; height:100%; padding:16px 44px 16px 16px; background:#fff; border:1.5px solid var(--rule); border-radius:6px; transition:border-color .15s, background .15s, box-shadow .15s; }
.opt .card::after{ content:''; position:absolute; top:15px; right:15px; width:20px; height:20px; border-radius:50%; border:1.5px solid var(--rule); background:#fff center/12px no-repeat; }
.opt input[type=checkbox] + .card::after{ border-radius:4px; }
.opt b{ font:700 18px/1.15 var(--display); color:var(--ink); }
.opt small{ font:500 13.5px/1.4 var(--sans); color:var(--ink-3); }
.opt .px{ margin-top:auto; padding-top:6px; font:600 14px/1.3 var(--sans); color:var(--ink-2); }
.opt .px em{ font:800 22px/1 var(--display); font-style:normal; color:var(--lake); }
.opt:hover .card{ border-color:var(--ink-3); }
.opt input:checked + .card{ border-color:var(--lake); background:#f2f7fa; box-shadow:inset 0 0 0 1.5px var(--lake); }
.opt input:checked + .card::after{ border-color:var(--lake); background-color:var(--lake); background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3 4.7-5' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.opt input:focus-visible + .card{ outline:3px solid var(--gold); outline-offset:2px; }
.opt input:disabled + .card{ opacity:.55; background:var(--paper-2); }
.opt .tag{ align-self:flex-start; margin-top:6px; padding:5px 9px; border-radius:99px; background:var(--terra); color:#fff; font:800 10.5px/1 var(--sans); letter-spacing:.14em; text-transform:uppercase; }
.opt .tag.out{ background:var(--ink-3); }
.bk[data-art=own] .design-only, .bk[data-art=design] .own-only{ display:none; }
.bk .design-only{ margin-bottom:18px; }
.drop{ position:relative; margin:0 0 12px; padding:28px 22px; text-align:center; background:#fff; border:2px dashed var(--rule); border-radius:8px; transition:border-color .15s, background .15s; }
.drop:hover, .drop.over{ border-color:var(--lake-2); background:#f2f7fa; }
.drop input{ position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.drop:focus-within{ outline:3px solid var(--gold); outline-offset:2px; }
.drop b{ display:block; margin-bottom:6px; font:700 19px/1.2 var(--display); color:var(--ink); }
.drop span{ font:500 14px/1.45 var(--sans); color:var(--ink-3); }
.files{ list-style:none; margin:0 0 14px; padding:0; display:grid; gap:8px; }
.files li{ display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:center; gap:6px 14px; padding:10px 12px; background:#fff; border:1px solid var(--rule); border-radius:6px; font:500 14px/1.3 var(--sans); }
.files .nm{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.files .st{ color:var(--ink-3); font-size:13px; }
.files li.done .st{ color:var(--pine-2); font-weight:700; } .files li.fail{ border-color:var(--berry); } .files li.fail .st{ color:var(--berry); }
.files .bar{ grid-column:1 / -1; height:4px; background:var(--paper-2); border-radius:2px; overflow:hidden; }
.files .bar i{ display:block; width:0; height:100%; background:var(--lake-2); transition:width .2s; }
.files li.done .bar, .files li.fail .bar{ display:none; }
.files button{ padding:0; border:0; background:none; color:var(--ink-3); font:600 13px/1 var(--sans); text-decoration:underline; cursor:pointer; }
.bk .promo{ margin:6px 0 24px; } .promo-row{ display:flex; gap:10px; } .promo-row input{ flex:1; min-width:0; text-transform:uppercase; letter-spacing:.06em; } .promo-row .btn{ flex:none; padding-left:22px; padding-right:22px; }
.promo-msg{ margin-top:8px; font:600 14px/1.4 var(--sans); } .promo-msg:empty{ display:none; } .promo-msg.ok{ color:var(--lake-2); } .promo-msg.no{ color:var(--berry); }
.agree{ display:flex; align-items:flex-start; gap:12px; margin:8px 0 20px; font:500 15.5px/1.45 var(--sans); color:var(--ink-2); cursor:pointer; }
.agree input{ flex:none; width:20px; height:20px; margin-top:2px; accent-color:var(--lake); }
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.notice{ margin:0 0 30px; padding:14px 16px; background:#fff4de; border:1px solid #e8cf98; border-radius:6px; color:#5e430f; font:500 15px/1.45 var(--sans); }
.notice a{ color:inherit; }
.err{ margin:0 0 14px; color:var(--berry); font:700 15px/1.4 var(--sans); } .err:empty{ display:none; }
.mtotal{ display:none; margin:0 0 14px; font:500 16px/1.4 var(--sans); color:var(--ink-2); } .mtotal b{ font:800 22px/1 var(--display); color:var(--ink); }
.btn.big{ width:100%; justify-content:center; padding:19px 28px; font-size:16.5px; }
.btn[disabled]{ opacity:.65; cursor:progress; transform:none; }
.secure{ margin-top:12px; text-align:center; }
.sum{ position:sticky; top:96px; }
.sumbox{ padding:30px; background:var(--lake); color:#fff; border-radius:8px; box-shadow:0 20px 50px rgba(0,0,0,.14); }
.sumbox .k{ font:800 12px/1 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:var(--gold-2); }
.sumbox .sum-name{ margin-top:12px; font:700 23px/1.2 var(--display); }
.sumbox .big{ margin:12px 0 4px; font:900 78px/.9 var(--display); letter-spacing:-.04em; font-variation-settings:'opsz' 144,'SOFT' 100; }
.sumbox .sub{ font:500 14px/1.3 var(--sans); color:#d9e9f0; }
.sum-iss{ list-style:none; margin:20px 0 0; padding:0; display:grid; gap:8px; font:700 15px/1.3 var(--sans); }
.sum-iss li span{ display:block; font-weight:500; font-size:13px; color:#bcd3df; }
.sum-iss li.none{ color:#bcd3df; font-weight:500; }
.sumbox dl{ display:grid; grid-template-columns:1fr auto; gap:10px 16px; margin:20px 0 0; padding-top:16px; border-top:1px solid rgba(230,199,122,.4); font:500 15px/1.3 var(--sans); color:#d9e9f0; }
.sumbox dd{ margin:0; text-align:right; font:800 18px/1.2 var(--display); color:#fff; }
.sumbox dt.tot{ align-self:center; color:#fff; font-weight:700; } .sumbox dd.tot{ font-size:28px; color:var(--gold-2); }
.sumbox .note{ margin-top:20px; font:500 13.5px/1.45 var(--sans); color:#bcd3df; } .sumbox .note a{ color:var(--gold-2); }
.bdbox{ margin-top:30px; padding:26px 28px; background:#fff; border:1px solid var(--rule); border-radius:8px; }
.bdbox dl{ display:grid; grid-template-columns:auto 1fr; gap:12px 28px; margin:0; font:500 16px/1.35 var(--sans); }
.bdbox dt{ font:800 12px/1.6 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3); }
.bdbox dd{ margin:0; font-weight:700; }
.nextsteps{ margin:18px 0 0; padding-left:22px; display:grid; gap:12px; font:400 17px/1.5 var(--serif); color:var(--ink-2); }
.nextsteps b{ color:var(--ink); }
.terms{ margin:34px 0 0; padding-left:24px; display:grid; gap:22px; }
.terms h3{ font:700 21px/1.25 var(--display); margin-bottom:6px; }
.terms p{ font:400 17px/1.55 var(--serif); color:var(--ink-2); }
@media (max-width:1000px){ .book{ grid-template-columns:minmax(0,1fr); gap:0; } .sum{ display:none; } .mtotal{ display:block; } }
@media (max-width:720px){ .opts.sizes, .opts.iss, .opts.two, .grid2{ grid-template-columns:minmax(0,1fr); } .trio{ grid-template-columns:minmax(0,1fr) 72px 110px; gap:12px; } .bookhead{ padding-top:120px; } }

/* SEO articles (10/9/26) */
.prose h2{ font:800 34px/1.08 var(--display); letter-spacing:-.02em; margin:1.5em 0 .5em; }
.prose h2 + h3{ margin-top:.6em; }
.prose ol{ margin:0 0 1.2em 1.3em; }
.prose a{ color:var(--terra); text-decoration-thickness:1px; text-underline-offset:3px; }
.prose table{ width:100%; border-collapse:collapse; font:400 16px/1.45 var(--sans); margin:1em 0 1.6em; }
.prose th, .prose td{ text-align:left; padding:10px 12px 10px 0; border-bottom:1px dotted var(--rule); vertical-align:top; }
.prose th{ font-weight:800; border-bottom:1.5px solid var(--ink-3); }
.crumbs{ font:600 13px/1.4 var(--sans); color:var(--ink-3); margin-bottom:10px; }
.crumbs a{ color:var(--ink-2); text-decoration:none; } .crumbs a:hover{ color:var(--terra); } .crumbs span{ margin:0 4px; }
.byline{ font:500 14px/1.4 var(--sans); color:var(--ink-3); margin-bottom:26px; padding-bottom:18px; border-bottom:1px solid var(--rule); }
.faq{ margin-top:2.4em; border-top:2px solid var(--ink); padding-top:6px; }
.faq details{ border-bottom:1px dotted var(--rule); padding:16px 0; }
.faq summary{ font:700 19px/1.3 var(--display); cursor:pointer; list-style:none; display:flex; justify-content:space-between; gap:16px; }
.faq summary::-webkit-details-marker{ display:none; }
.faq summary::after{ content:'+'; font:400 26px/1 var(--sans); color:var(--terra); }
.faq details[open] summary::after{ content:'–'; }
.faq details p{ margin-top:10px; font-size:17.5px; }
.related{ padding:10px 0 70px; border-top:1px solid var(--rule); }
.related h2{ margin:44px 0 26px; }
.gjump{ display:flex; flex-wrap:wrap; gap:8px; margin-top:24px; }
.gjump a{ font:700 13px/1 var(--sans); color:#fff; text-decoration:none; border:1.5px solid rgba(255,255,255,.6); border-radius:999px; padding:9px 14px; backdrop-filter:blur(6px); background:rgba(0,0,0,.15); }
.gjump a:hover{ background:rgba(255,255,255,.18); }
@media (max-width:640px){ .prose h2{ font-size:28px; } .prose table{ font-size:14.5px; } }

/* ---------- The Salem Weekender: signup forms (js/weekender.js) ---------- */
.wk-k{ font:800 12px/1 var(--sans); letter-spacing:.24em; text-transform:uppercase; color:var(--terra); }
.wk-form{ position:relative; }
.wk-row{ display:flex; gap:10px; }
.wk-row input, .wk-2 input{ flex:1; min-width:0; width:100%; padding:14px 15px; font:400 16px/1.3 var(--sans); color:var(--ink); background:#fff; border:1.5px solid var(--rule); border-radius:var(--r); }
.wk-row input:focus-visible, .wk-2 input:focus-visible{ outline:none; border-color:var(--lake-2); box-shadow:0 0 0 3px rgba(21,88,122,.2); }
.wk-row input.bad{ border-color:var(--berry); }
.wk-row .btn{ flex:none; padding:15px 22px; font-size:15px; }
.wk-row .btn:disabled{ opacity:.7; cursor:wait; }
.wk-2{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:14px 0; }
.wk-l{ display:block; font:700 13px/1.3 var(--sans); color:var(--ink); margin-bottom:6px; }
.wk-2 label{ display:block; font:700 13px/1.3 var(--sans); color:var(--ink); margin-bottom:6px; }
.wk-2 label span{ font-weight:500; color:var(--ink-3); }
.wk-fine{ font:500 13px/1.45 var(--sans); color:var(--ink-3); margin:10px 0 0; }
.wk-msg{ font:500 15px/1.5 var(--sans); margin:0; }
.wk-msg:empty{ display:none; }
.wk-msg.err{ color:var(--berry); margin-top:10px; }
.wk-msg.ok{ color:var(--pine); background:#e8f1ea; border-radius:var(--r); padding:14px 16px; }
@media (max-width:520px){ .wk-row{ flex-direction:column; } .wk-row .btn{ justify-content:center; } .wk-2{ grid-template-columns:1fr; } }

/* end of every guide */
.prose .wk-end{ margin:56px 0 8px; padding:30px 30px 28px; background:var(--lake); color:#fff; border-radius:14px; font-size:17px; line-height:1.55; }
.prose .wk-end .wk-k{ color:var(--gold); }
.prose .wk-end h2{ font:800 30px/1.08 var(--display); letter-spacing:-.02em; margin:12px 0 10px; color:#fff; }
.prose .wk-end h2 em{ color:var(--gold); }
.prose .wk-end p{ margin:0 0 18px; color:rgba(255,255,255,.86); font-family:var(--sans); }
.prose .wk-end .wk-fine{ color:rgba(255,255,255,.7); margin:10px 0 0; }
.prose .wk-end .wk-row input{ border-color:transparent; }
.prose .wk-end .wk-msg{ margin:0; }
.prose .wk-end .wk-msg.err{ color:#ffd9c7; margin-top:10px; }
.prose .wk-end .wk-msg.ok{ color:var(--pine); }
@media (max-width:640px){ .prose .wk-end{ padding:24px 18px; margin-top:44px; } .prose .wk-end h2{ font-size:25px; } }

/* band above the footer on other pages */
.wk-band{ background:var(--paper-2); border-top:1px solid var(--rule); padding:56px 0; }
.wk-band-in{ display:grid; grid-template-columns:1.1fr 1fr; gap:24px 56px; align-items:center; }
.wk-band h2{ font:800 clamp(26px,3vw,34px)/1.08 var(--display); letter-spacing:-.02em; margin:12px 0 10px; color:var(--lake); }
.wk-band h2 em{ color:var(--terra); }
.wk-band p{ font:400 16px/1.55 var(--sans); color:var(--ink-2); margin:0; max-width:520px; }
.wk-band .wk-fine{ margin-top:10px; }
@media (max-width:860px){ .wk-band{ padding:44px 0; } .wk-band-in{ grid-template-columns:1fr; } }

/* /weekender landing page */
.wk-hero{ padding-top:150px; }
.wk-hero-in{ display:grid; grid-template-columns:1.15fr 1fr; gap:40px 64px; align-items:start; }
.wk-list{ list-style:none; margin:30px 0 0; padding:0; display:grid; gap:14px; }
.wk-list li{ display:grid; gap:2px; padding:0 0 14px 18px; border-left:3px solid var(--gold); font:400 16px/1.5 var(--sans); color:var(--ink-2); }
.wk-list b{ font:800 13px/1.3 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--lake); }
.wk-card{ background:#fff; border-radius:14px; padding:30px 28px; box-shadow:0 1px 0 rgba(28,26,23,.08),0 16px 40px -22px rgba(28,26,23,.4); }
.wk-card h2{ font:800 30px/1.05 var(--display); letter-spacing:-.02em; color:var(--lake); margin:0 0 4px; }
.wk-card .small{ margin:0 0 20px; }
.wk-card .wk-row{ flex-direction:column; }
.wk-card .wk-row .btn{ justify-content:center; padding:17px 22px; font-size:16px; }
@media (max-width:900px){ .wk-hero{ padding-top:120px; } .wk-hero-in{ grid-template-columns:1fr; } .wk-card{ padding:24px 18px; } }
