* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: #f0eee7; color: #14221e; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
.site { --ink:#17261f; --paper:#f2f0e9; --accent:#3f6556; --line:rgba(23,38,31,.2); --display:Georgia,"Times New Roman",serif; --body:Arial,Helvetica,sans-serif; min-height:100vh; background:var(--paper); color:var(--ink); font-family:var(--body); transition:background .45s,color .45s; }
.shell { width:min(1440px,calc(100% - 7vw)); margin-inline:auto; }
.hero { position:relative; min-height:900px; overflow:hidden; color:var(--hero-ink,#182821); }
.hero-image { position:absolute; inset:0; background-image:var(--hero-image,url('/assets/nordic-hero.png')); background-size:cover; background-position:center; transform:scale(1.01); transition:background-image .5s,filter .5s; }
.hero-shade { position:absolute; inset:0; background:var(--shade,linear-gradient(90deg,rgba(245,242,234,.94) 0%,rgba(245,242,234,.64) 40%,rgba(245,242,234,.05) 70%)); }
.header { position:relative; z-index:5; min-height:112px; display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:42px; border-bottom:1px solid var(--hero-line,rgba(24,40,33,.2)); }
.site-header { color:var(--ink); border-color:var(--line); }
.brand { display:flex; align-items:center; gap:13px; font:500 clamp(21px,2vw,32px)/1 var(--display); letter-spacing:-.02em; white-space:nowrap; }
.brand-copy { display:flex; flex-direction:column; gap:7px; }
.brand-domain { font:600 10px/1 var(--body); letter-spacing:.18em; text-transform:uppercase; opacity:.66; }
.fish-mark { color:var(--accent); font:700 34px/1 Arial; transform:rotate(8deg); }
nav { display:flex; gap:38px; font-size:17px; }
nav a { padding:15px 0; border-bottom:2px solid transparent; }
nav a:hover,nav a.active { border-color:var(--accent); }
.theme-picker { display:flex; align-items:center; gap:10px; padding-left:28px; border-left:1px solid var(--hero-line,rgba(24,40,33,.2)); }
.picker-label { font-size:11px; text-transform:uppercase; letter-spacing:.16em; opacity:.7; }
.theme-options { display:flex; padding:4px; border:1px solid var(--hero-line,rgba(24,40,33,.22)); border-radius:999px; background:var(--picker-bg,rgba(255,255,255,.45)); backdrop-filter:blur(12px); }
.theme-options button { border:0; background:transparent; color:inherit; display:flex; align-items:center; gap:7px; padding:8px 10px; border-radius:999px; font-size:12px; cursor:pointer; opacity:.62; transition:.2s; }
.theme-options button:hover { opacity:1; }
.theme-options button.selected { opacity:1; background:var(--picker-selected,rgba(255,255,255,.85)); box-shadow:0 2px 12px rgba(0,0,0,.08); }
.swatch { width:9px; height:9px; border-radius:50%; box-shadow:0 0 0 1px rgba(255,255,255,.55); }
.morning-swatch { background:#d9a97f; }
.day-swatch { background:#6f927f; }
.evening-swatch { background:#17344a; }
.hero-content { position:relative; z-index:2; padding-top:120px; }
.eyebrow { margin:0 0 20px; color:var(--accent); text-transform:uppercase; letter-spacing:.2em; font-size:13px; font-weight:700; }
h1,h2,h3,p { margin-top:0; }
h1 { max-width:780px; margin-bottom:35px; font:400 clamp(72px,8vw,128px)/.86 var(--display); letter-spacing:-.055em; }
.intro { max-width:560px; margin-bottom:36px; font-size:21px; line-height:1.55; }
.primary-button { display:inline-flex; gap:42px; align-items:center; padding:20px 28px; background:var(--accent); color:#fff; font:500 18px/1 var(--display); transition:transform .2s,filter .2s; }
.primary-button:hover { transform:translateY(-2px); filter:brightness(1.08); }
.hero-foot { position:absolute; z-index:2; bottom:0; left:50%; transform:translateX(-50%); display:flex; gap:0; border-top:1px solid var(--hero-line,rgba(24,40,33,.2)); padding:24px 0; text-transform:uppercase; letter-spacing:.14em; font-size:11px; }
.hero-foot span { padding-right:42px; margin-right:42px; border-right:1px solid var(--hero-line,rgba(24,40,33,.2)); }
.hero-foot span:last-child { border:0; }
.trips { padding:110px 0 130px; }
.section-heading { display:flex; justify-content:space-between; align-items:end; gap:60px; margin-bottom:48px; }
.section-heading h2,.about h2 { margin-bottom:0; font:400 clamp(48px,5.4vw,82px)/.98 var(--display); letter-spacing:-.04em; }
.section-heading>p { max-width:430px; line-height:1.7; opacity:.68; }
.featured-meta { display:flex; flex-wrap:wrap; gap:12px 34px; margin-bottom:32px; color:var(--accent); font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.11em; }
.trip-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(28px,4vw,60px); }
.trip-card { border-top:1px solid var(--line); padding-top:18px; }
.trip-card-image { display:block; overflow:hidden; background:var(--about-bg); }
.trip-card-image img { display:block; width:100%; aspect-ratio:16/10; object-fit:cover; object-position:center; filter:var(--photo-filter,none); transition:transform .45s ease,filter .45s; }
.trip-card-image:hover img { transform:scale(1.025); }
.trip-card-body { padding-top:26px; }
.trip-card .featured-meta { margin-bottom:18px; gap:10px 20px; }
.trip-card h3 { margin-bottom:16px; font:400 clamp(30px,3.2vw,50px)/1.05 var(--display); letter-spacing:-.035em; }
.trip-card p { max-width:650px; font-size:16px; line-height:1.7; opacity:.76; }
.text-link,.back-link { display:inline-flex; gap:18px; color:var(--accent); font-weight:700; border-bottom:1px solid currentColor; padding-bottom:5px; }
.text-link:hover,.back-link:hover { opacity:.7; }
.trip-page { padding-top:75px; padding-bottom:130px; }
.trip-page-heading { max-width:1120px; padding:70px 0 50px; }
.trip-page-heading .featured-meta { margin-bottom:25px; }
.trip-page h1 { max-width:1100px; margin:0; font:400 clamp(54px,7vw,104px)/.94 var(--display); letter-spacing:-.05em; }
.trip-page-story { max-width:760px; margin-left:auto; padding-bottom:90px; }
.trip-page-story p { font:400 19px/1.8 var(--body); }
.trip-page-story p:last-child { color:var(--accent); font-weight:700; }
.gallery { width:min(100%,1120px); margin-inline:auto; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:42px 24px; }
.gallery figure { margin:0; }
.gallery button { position:relative; display:block; width:100%; padding:0; border:0; overflow:hidden; background:var(--about-bg); color:white; cursor:zoom-in; }
.gallery img { display:block; width:100%; aspect-ratio:4/3; object-fit:cover; filter:var(--photo-filter,none); transition:transform .35s,filter .35s; }
.gallery button:hover img { transform:scale(1.018); filter:var(--photo-filter,none) brightness(.82); }
.zoom-hint { position:absolute; right:18px; bottom:18px; padding:10px 13px; background:rgba(4,14,20,.72); font-size:12px; letter-spacing:.08em; text-transform:uppercase; opacity:0; transform:translateY(6px); transition:.25s; }
.gallery button:hover .zoom-hint,.gallery button:focus-visible .zoom-hint { opacity:1; transform:none; }
.gallery figcaption { margin-top:12px; padding-top:12px; border-top:1px solid var(--line); font-size:12px; opacity:.72; }
.lightbox { position:fixed; inset:0; z-index:100; display:grid; grid-template-columns:80px minmax(0,1fr) 80px; align-items:center; background:rgba(2,8,12,.96); color:#fff; }
.lightbox figure { margin:0; display:flex; flex-direction:column; align-items:center; min-width:0; }
.lightbox figure img { display:block; max-width:100%; max-height:calc(100vh - 105px); object-fit:contain; }
.lightbox figure figcaption { padding-top:13px; font-size:13px; opacity:.72; text-align:center; }
.lightbox-close,.lightbox-prev,.lightbox-next { border:0; background:transparent; color:#fff; cursor:pointer; }
.lightbox-close { position:absolute; top:15px; right:22px; font-size:44px; font-weight:200; }
.lightbox-prev,.lightbox-next { height:100%; font-size:34px; opacity:.75; }
.lightbox-prev:hover,.lightbox-next:hover,.lightbox-close:hover { opacity:1; }
.lightbox[hidden] { display:none; }
.about { background:var(--about-bg,#dce2dc); padding:130px 0; }
.about-inner { display:grid; grid-template-columns:.65fr 1.4fr 1fr; gap:60px; align-items:start; }
.about-inner>p:last-child { font-size:18px; line-height:1.8; opacity:.75; }
.footer { min-height:110px; display:flex; justify-content:flex-start; align-items:center; text-align:left; font:16px var(--display); opacity:.7; }
.back-to-top { position:fixed; right:clamp(20px,3vw,46px); bottom:clamp(20px,3vw,42px); z-index:20; width:52px; height:52px; display:grid; place-items:center; border:1px solid var(--line); border-radius:50%; background:color-mix(in srgb,var(--paper) 88%,transparent); color:var(--ink); box-shadow:0 10px 30px rgba(0,0,0,.16); backdrop-filter:blur(12px); cursor:pointer; opacity:0; visibility:hidden; transform:translateY(14px); transition:opacity .25s,visibility .25s,transform .25s,background .2s; }
.back-to-top span { font-size:25px; line-height:1; transform:translateY(-1px); }
.back-to-top.visible { opacity:1; visibility:visible; transform:translateY(0); }
.back-to-top:hover { background:var(--accent); color:#fff; transform:translateY(-3px); }
.back-to-top:focus-visible { outline:3px solid var(--accent); outline-offset:4px; }

html[data-theme="morning"] .site { --ink:#302820; --paper:#f4e8d8; --accent:#945f3f; --line:rgba(75,53,38,.22); --hero-ink:#33261f; --hero-line:rgba(63,42,29,.22); --hero-image:url('/assets/morning-hero.png'); --shade:linear-gradient(90deg,rgba(246,229,207,.94),rgba(246,229,207,.58) 46%,rgba(246,229,207,.08) 78%); --picker-bg:rgba(255,245,230,.6); --picker-selected:rgba(255,250,241,.92); --about-bg:#e3cdb6; --photo-filter:sepia(.18) saturate(.82) brightness(.98); }

html[data-theme="day"] .site { --hero-image:url('/assets/day-hero.png'); --about-bg:#dce2dc; }

html[data-theme="evening"] .site { --ink:#f3f8f7; --paper:#071725; --accent:#c4eee5; --line:rgba(220,242,238,.34); --hero-ink:#f7fbfa; --hero-line:rgba(225,244,241,.34); --hero-image:url('/assets/dark-hero.png'); --shade:linear-gradient(90deg,rgba(4,19,31,.96),rgba(4,19,31,.6) 46%,rgba(4,19,31,.14) 78%); --picker-bg:rgba(5,24,37,.82); --picker-selected:rgba(196,238,229,.25); --about-bg:#102b3b; --display:"Arial Narrow",Impact,sans-serif; --photo-filter:saturate(.84) brightness(.9) contrast(1.04); }
html[data-theme="evening"] .brand,html[data-theme="evening"] h1,html[data-theme="evening"] h2 { text-transform:none; }
html[data-theme="evening"] h1 { font-weight:700; letter-spacing:-.045em; }
html[data-theme="evening"] .primary-button { color:#102b3b; }
html[data-theme="evening"] .brand-domain,
html[data-theme="evening"] .picker-label { opacity:.82; }
html[data-theme="evening"] .theme-options button { opacity:.78; }
html[data-theme="evening"] .theme-options button.selected { opacity:1; color:#fff; }
html[data-theme="evening"] .section-heading>p,
html[data-theme="evening"] .trip-card p,
html[data-theme="evening"] .trip-page-story p,
html[data-theme="evening"] .gallery figcaption,
html[data-theme="evening"] .about-inner>p:last-child,
html[data-theme="evening"] .footer { opacity:.94; }

@media (max-width:1050px) {
  .header { grid-template-columns:1fr auto; gap:18px; }
  nav { display:none; }
  .hero-content { padding-top:150px; }
  .theme-picker { border:0; padding:0; }
  .gallery { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:720px) {
  .shell { width:min(100% - 36px,1440px); }
  .hero { min-height:800px; }
  .header { min-height:138px; align-content:center; }
  .brand { grid-column:1/-1; }
  .theme-picker { grid-column:1/-1; justify-content:space-between; }
  .theme-options { flex:1; justify-content:space-between; }
  .theme-options button { padding:8px; }
  .hero-content { padding-top:90px; }
  h1 { font-size:62px; }
  .intro { font-size:17px; max-width:90%; }
  .hero-foot { display:none; }
  .section-heading { display:block; }
  .section-heading>p { margin-top:24px; }
  .trip-grid { grid-template-columns:1fr; }
  .trip-page { padding-top:45px; }
  .trip-page-heading { padding:50px 0 35px; }
  .trip-page-story { padding-bottom:55px; }
  .gallery { grid-template-columns:1fr; gap:38px; }
  .gallery img { aspect-ratio:4/3; }
  .lightbox { grid-template-columns:52px minmax(0,1fr) 52px; }
  .about-inner { grid-template-columns:1fr; gap:30px; }
  .footer { align-items:center; justify-content:flex-start; }
  .back-to-top { width:46px; height:46px; }
}

@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  .back-to-top { transition:none; }
}
