/* ============================================================
   HOLIDAY REVIEWS — Shared Design System · v2.0 Polish
============================================================ */

/* ----- Type ----- */
@font-face{font-family:'Canela';src:url('../fonts/CanelaText-Light.otf') format('opentype');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'Canela';src:url('../fonts/CanelaText-LightItalic.otf') format('opentype');font-weight:300;font-style:italic;font-display:swap}
@font-face{font-family:'Canela';src:url('../fonts/Canela-Regular.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Canela';src:url('../fonts/Canela-RegularItalic.otf') format('opentype');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'Canela';src:url('../fonts/Canela-Medium.otf') format('opentype');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Canela';src:url('../fonts/Canela-MediumItalic.otf') format('opentype');font-weight:500;font-style:italic;font-display:swap}

/* ----- Tokens ----- */
:root{
  --ivory:#FAFAF6;
  --ivory-deep:#F2F0E8;
  --bone:#EBE7DC;
  --paper:#F4F2EB;
  --ink:#0E0E0E;
  --ink-soft:#1E1E1C;
  --charcoal:#161410;
  --charcoal-2:#1C1A14;
  --taupe:#A89B8C;
  --taupe-soft:#C9BFAF;
  --taupe-warm:#B8AB97;
  --rule:#D9D1C2;
  --rule-soft:#E4DCC9;
  --rule-dark:#3a342c;

  --serif:'Canela','Cormorant Garamond','Times New Roman',serif;
  --sans:'Inter','Helvetica Neue',Arial,sans-serif;

  --max:1480px;
  --gutter:clamp(20px,4vw,72px);
  --section-y:clamp(64px,8.4vw,128px);
}

/* ----- Reset ----- */
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--ivory);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"ss01","ss02","kern","liga"}
body{font-family:var(--sans);font-size:15px;line-height:1.55;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:var(--ink);color:var(--ivory)}

.container{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
.container--narrow{max-width:920px;margin:0 auto;padding:0 var(--gutter)}

/* ----- Editorial primitives ----- */
.label{
  font-family:var(--sans);font-size:10.5px;letter-spacing:0.26em;
  text-transform:uppercase;font-weight:500;color:var(--ink)
}
.label--taupe{color:var(--taupe)}
.label--ivory{color:var(--taupe-soft)}
.chapter{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:13px;letter-spacing:0.04em;color:var(--taupe)
}
.display{
  font-family:var(--serif);font-weight:400;letter-spacing:-0.024em;
  line-height:0.92;font-size:clamp(42px,5.6vw,80px);color:var(--ink)
}
.display-xl{
  font-family:var(--serif);font-weight:400;letter-spacing:-0.028em;
  line-height:0.9;font-size:clamp(54px,7.6vw,116px);color:var(--ink)
}
.lede{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(17px,1.4vw,20px);line-height:1.5;color:#2a2a2a;max-width:58ch
}
.inline-cta{
  font-family:var(--sans);font-size:11px;letter-spacing:0.28em;text-transform:uppercase;
  font-weight:500;display:inline-flex;align-items:center;gap:14px;
  border-bottom:1px solid currentColor;padding-bottom:8px;
  transition:gap .3s cubic-bezier(.2,0,0,1),opacity .25s ease
}
.inline-cta:hover{gap:22px;opacity:.7}
hr.rule{height:1px;background:var(--rule);border:0}

/* ============================================================
   AUTHORITY BAR
============================================================ */
.authority{background:var(--ivory);border-bottom:1px solid var(--rule)}
.authority-inner{
  display:flex;align-items:center;justify-content:space-between;
  padding:13px 0;font-size:10px;letter-spacing:0.26em;text-transform:uppercase;
  color:var(--ink);font-weight:500
}
.authority-left{display:flex;align-items:center;gap:24px}
.authority-left .vol{color:var(--taupe);font-style:italic;font-family:var(--serif);font-size:13px;letter-spacing:0.04em;text-transform:none}
.authority-right{display:flex;align-items:center;gap:28px}
.authority-right a{transition:opacity .2s ease}
.authority-right a:hover{opacity:.55}
.search-icon{width:13px;height:13px;display:inline-block}
@media (max-width:780px){.authority-left .statement{display:none}.authority-right .hidemobile{display:none}}

/* ============================================================
   MASTHEAD
============================================================ */
.masthead{
  text-align:center;
  padding:clamp(26px,3.4vw,44px) 0 clamp(16px,2.2vw,28px);
  line-height:0
}
.masthead .lockup{display:inline-block;width:clamp(240px,28vw,420px);line-height:0;font-size:0}
.masthead .lockup img{display:block;width:100%;height:auto;margin:-3% 0}

/* ============================================================
   NAVIGATION
============================================================ */
nav.primary{
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
  background:var(--ivory);position:sticky;top:0;z-index:50;
  backdrop-filter:saturate(1.05)
}
.nav-inner{
  display:flex;justify-content:center;align-items:center;
  gap:clamp(20px,3.4vw,52px);padding:16px 0;
  font-size:10.5px;letter-spacing:0.26em;text-transform:uppercase;font-weight:500
}
.nav-inner a{position:relative;padding:8px 0;transition:opacity .2s ease}
.nav-inner a::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:var(--ink);transform:scaleX(0);transform-origin:center;
  transition:transform .3s cubic-bezier(.2,0,0,1)
}
.nav-inner a:hover::after,.nav-inner a.current::after{transform:scaleX(1)}
.mobile-nav-toggle{display:none}
.mobile-drawer{display:none}
@media (max-width:920px){
  nav.primary .nav-inner{display:none}
  .mobile-nav-toggle{display:flex;align-items:center;justify-content:space-between;padding:14px var(--gutter);width:100%;font-size:10.5px;letter-spacing:0.26em;text-transform:uppercase;font-weight:500;background:var(--ivory)}
  .mobile-nav-toggle .vol{font-family:var(--serif);font-style:italic;font-size:13px;letter-spacing:0.04em;color:var(--taupe);text-transform:none}
  .mobile-drawer{display:block;position:fixed;inset:0;background:var(--ivory);z-index:100;transform:translateX(100%);transition:transform .4s cubic-bezier(.65,0,.35,1);padding:24px var(--gutter)}
  .mobile-drawer.open{transform:translateX(0)}
  .mobile-drawer .top{display:flex;justify-content:space-between;align-items:center;padding:14px 0 36px;font-size:10.5px;letter-spacing:0.26em;text-transform:uppercase;font-weight:500}
  .mobile-drawer .top .brand{width:140px;display:inline-block;text-transform:none;font-size:0}
  .mobile-drawer .top .brand img{display:block;width:100%;height:auto}
  .mobile-drawer ul{list-style:none;display:flex;flex-direction:column;gap:18px}
  .mobile-drawer ul a{font-family:var(--serif);font-size:34px;font-weight:400;letter-spacing:-0.018em;line-height:1}
  .mobile-drawer .drawer-foot{position:absolute;bottom:28px;left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;font-size:10.5px;letter-spacing:0.26em;text-transform:uppercase;border-top:1px solid var(--rule);padding-top:22px}
}

/* ============================================================
   BREADCRUMB
============================================================ */
.breadcrumb{padding:clamp(28px,3.4vw,44px) 0 0}
.bc-inner{display:flex;align-items:center;gap:10px;font-size:10px;letter-spacing:0.26em;text-transform:uppercase;color:var(--taupe);font-weight:500;flex-wrap:wrap}
.bc-inner a{color:var(--taupe);transition:color .2s ease}
.bc-inner a:hover{color:var(--ink)}
.bc-inner .sep{opacity:.5}
.bc-inner .current{color:var(--ink)}

/* ============================================================
   PAGE HEADER
============================================================ */
.page-head{padding:clamp(36px,5vw,80px) 0 clamp(40px,5vw,72px);border-bottom:1px solid var(--rule)}
.page-head .chapter{display:block;margin-bottom:12px}
.page-head .label{display:block;margin-bottom:20px;color:var(--taupe)}
.page-head h1{
  font-family:var(--serif);font-weight:400;letter-spacing:-0.028em;
  line-height:0.9;font-size:clamp(54px,7.6vw,116px);
  color:var(--ink);margin-bottom:28px;max-width:14ch
}
.page-head .lede{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(17px,1.4vw,21px);line-height:1.5;color:#2a2a2a;
  max-width:58ch;margin-bottom:34px
}
.page-head .meta-row{
  display:flex;align-items:center;gap:18px;
  font-size:10px;letter-spacing:0.26em;text-transform:uppercase;color:var(--taupe);font-weight:500;
  flex-wrap:wrap;padding-top:26px;border-top:1px solid var(--rule)
}
.page-head .meta-row .ital{font-family:var(--serif);font-style:italic;font-size:13px;letter-spacing:0.04em;text-transform:none;color:var(--ink)}
.page-head .meta-row .dot{width:3px;height:3px;border-radius:50%;background:var(--taupe);display:inline-block}

/* ============================================================
   HOTEL CARD — refined hierarchy
============================================================ */
.card{display:block;position:relative;color:var(--ink)}
.card .imgwrap{
  position:relative;width:100%;aspect-ratio:4/5;overflow:hidden;
  background:var(--bone)
}
.card .imgwrap img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transition:opacity .6s ease,transform 1.6s cubic-bezier(.2,0,0,1)
}
.card:hover .imgwrap img{opacity:.94;transform:scale(1.028)}

.card .rank{
  position:absolute;left:6px;bottom:-12px;z-index:3;
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(82px,8.6vw,124px);line-height:0.82;letter-spacing:-0.05em;
  color:transparent;-webkit-text-stroke:1px var(--ivory);
  pointer-events:none
}

/* Holiday Score badge — brand signature */
.card .score{
  position:absolute;bottom:0;right:0;z-index:3;
  width:74px;height:74px;background:var(--ink);color:var(--ivory);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding-top:4px
}
.card .score .num{
  font-family:var(--serif);font-style:italic;font-weight:500;
  font-size:27px;line-height:1;letter-spacing:-0.02em
}
.card .score .of{
  font-family:var(--sans);font-size:8px;letter-spacing:0.28em;
  text-transform:uppercase;color:var(--taupe-soft);margin-top:5px;font-weight:500
}

.card .meta{padding-top:18px}
.card .top-meta{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px}
.card .loc{font-size:10px;letter-spacing:0.24em;text-transform:uppercase;color:var(--taupe);font-weight:500}
.card .no{font-family:var(--serif);font-style:italic;color:var(--taupe);font-size:13px;letter-spacing:0.02em}
.card .name{
  font-family:var(--serif);font-size:clamp(23px,2vw,28px);font-weight:400;
  line-height:1.02;letter-spacing:-0.02em;margin-bottom:10px;color:var(--ink)
}
.card .verdict{
  font-family:var(--serif);font-weight:300;font-size:15px;
  color:#2c2c2c;line-height:1.5;max-width:38ch
}
.card .byline{
  margin-top:14px;display:flex;justify-content:space-between;align-items:center;
  gap:12px;padding-top:14px;border-top:1px solid var(--rule)
}
.card .by{font-family:var(--serif);font-style:italic;font-size:12.5px;color:var(--taupe);letter-spacing:0.02em}
.card .cats{display:flex;gap:14px;font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;color:var(--taupe);font-weight:500}

@media (max-width:580px){
  .card .meta{padding-top:14px}
  .card .name{font-size:22px}
  .card .verdict{font-size:14.5px}
}

/* ============================================================
   NEWSLETTER — split layout, more cinematic, more conversion
============================================================ */
.newsletter{background:var(--paper);padding:0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.nl-grid{display:grid;grid-template-columns:1.1fr 1fr;align-items:stretch}
.nl-img{position:relative;overflow:hidden;background:#181614;min-height:520px}
.nl-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.88)}
.nl-img::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(140deg,rgba(0,0,0,.32) 0%,rgba(0,0,0,.05) 50%,rgba(0,0,0,0) 70%)
}
.nl-img .imgcap{
  position:absolute;bottom:20px;left:24px;z-index:2;
  font-size:10px;letter-spacing:0.26em;text-transform:uppercase;
  color:var(--ivory);font-weight:500;opacity:.88
}
.nl-text{
  padding:clamp(52px,6.5vw,104px) clamp(36px,5vw,84px);
  display:flex;flex-direction:column;justify-content:center
}
.nl-text .chapter{display:block;margin-bottom:14px}
.nl-text .label{margin-bottom:22px;color:var(--taupe);display:block}
.nl-text h2{
  font-family:var(--serif);font-weight:400;letter-spacing:-0.028em;
  line-height:0.92;font-size:clamp(40px,4.8vw,68px);margin-bottom:22px;max-width:14ch
}
.nl-text .lede{margin-bottom:30px;max-width:42ch;font-size:18px}
.nl-text .what{
  display:flex;flex-direction:column;gap:8px;margin-bottom:34px;
  padding-top:22px;border-top:1px solid var(--rule)
}
.nl-text .what li{
  list-style:none;font-family:var(--serif);font-weight:300;font-size:15.5px;line-height:1.5;
  color:#2a2a2a;padding-left:22px;position:relative
}
.nl-text .what li::before{
  content:"—";position:absolute;left:0;top:0;color:var(--taupe);font-family:var(--serif);font-weight:300
}
.nl-form{display:flex;border-bottom:1px solid var(--ink);max-width:480px}
.nl-form input{
  flex:1;border:0;background:transparent;padding:18px 4px;
  font:inherit;font-family:var(--sans);font-size:15px;color:var(--ink);outline:none
}
.nl-form input::placeholder{color:var(--taupe)}
.nl-form button{
  font-family:var(--sans);font-size:11px;letter-spacing:0.28em;text-transform:uppercase;
  font-weight:500;padding:0 6px;color:var(--ink);transition:opacity .25s ease
}
.nl-form button:hover{opacity:.55}
.nl-text .fine{
  margin-top:20px;font-size:10px;letter-spacing:0.24em;text-transform:uppercase;
  color:var(--taupe);font-weight:500;max-width:46ch
}
.nl-text .fine em{font-style:italic;font-family:var(--serif);text-transform:none;letter-spacing:0.02em;font-size:13px;color:var(--ink-soft)}
@media (max-width:900px){.nl-grid{grid-template-columns:1fr}.nl-img{aspect-ratio:5/4;min-height:280px}.nl-text{padding-block:64px}}

/* ============================================================
   FOOTER — refined authority
============================================================ */
footer{background:var(--charcoal);color:var(--ivory);padding:clamp(72px,8.4vw,120px) 0 32px}
.f-top{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  gap:24px;margin-bottom:56px;padding-bottom:48px;border-bottom:1px solid var(--rule-dark)
}
.f-top .left,.f-top .right{font-size:10px;letter-spacing:0.28em;text-transform:uppercase;font-weight:500;color:var(--taupe-warm)}
.f-top .right{text-align:right}
.f-top .center{text-align:center}
.f-top .lockup{display:inline-block;width:clamp(240px,28vw,420px);line-height:0;font-size:0}
.f-top .lockup img{display:block;width:100%;height:auto;margin:-4% 0;filter:brightness(1.02)}
.f-top .descriptor{
  margin-top:12px;font-size:10.5px;letter-spacing:0.28em;text-transform:uppercase;
  color:var(--taupe-warm);font-weight:500
}
@media (max-width:780px){.f-top{grid-template-columns:1fr;text-align:center;gap:32px}.f-top .left,.f-top .right{text-align:center}}

.f-rule{display:none}

.f-cols{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(36px,4vw,56px);margin-bottom:64px}
@media (max-width:880px){.f-cols{grid-template-columns:repeat(2,1fr);gap:40px}}
@media (max-width:480px){.f-cols{grid-template-columns:1fr;gap:32px}}
.f-cols h4{
  font-size:10px;letter-spacing:0.28em;text-transform:uppercase;
  font-weight:500;color:var(--taupe-warm);margin-bottom:22px
}
.f-cols ul{list-style:none;display:flex;flex-direction:column;gap:11px}
.f-cols ul a{font-family:var(--sans);font-size:13.5px;color:#E8E2D5;transition:color .25s ease;letter-spacing:0.005em}
.f-cols ul a:hover{color:var(--ivory)}

.f-bottom{
  display:flex;justify-content:space-between;align-items:center;gap:24px;
  font-size:10px;letter-spacing:0.28em;text-transform:uppercase;
  font-weight:500;color:#8a8174;flex-wrap:wrap;
  border-top:1px solid var(--rule-dark);padding-top:32px
}
.f-bottom .ital{font-family:var(--serif);font-style:italic;font-size:13px;letter-spacing:0.04em;text-transform:none;color:var(--taupe-warm)}
.f-bottom .mono{
  font-family:var(--serif);font-weight:400;letter-spacing:-0.02em;
  font-size:18px;text-transform:none;color:var(--ivory);line-height:1
}

/* ============================================================
   UTILITY
============================================================ */
.hide-mobile{display:initial}
@media (max-width:720px){.hide-mobile{display:none}}
.section{padding:var(--section-y) 0}
.section--paper{background:var(--paper)}
.section--bone{background:var(--bone)}
.section--charcoal{background:var(--charcoal);color:var(--ivory)}
.section-rule{border-top:1px solid var(--rule)}
.section-header{
  display:grid;grid-template-columns:1fr auto;gap:48px;align-items:end;
  margin-bottom:clamp(40px,5vw,68px)
}
.section-header .chapter{margin-bottom:14px;display:block}
.section-header .label{margin-bottom:20px;display:block}
.section-header .display{margin-bottom:24px}
.section-header .lede{margin-top:6px}
.section-header .right{padding-bottom:8px;flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:12px}
.section-header .right .meta{font-family:var(--serif);font-style:italic;font-size:13px;color:var(--taupe)}
@media (max-width:760px){.section-header{grid-template-columns:1fr;gap:24px}.section-header .right{align-items:flex-start}}

/* ============================================================
   Selection / focus polish
============================================================ */
:focus-visible{outline:1px dashed var(--ink);outline-offset:3px}
button:focus-visible,a:focus-visible{outline:1px dashed var(--ink);outline-offset:4px}
