/* ═══════════════════════════════════════════════════════════
   Fjord Queen — shared design system
   Direction: cold water, warm brass.
   ═══════════════════════════════════════════════════════════ */

:root{
  --abyss:#060B0E;
  --deep:#0A1216;
  --slate:#111D23;
  --line:#1E2E36;
  --line-soft:#16242B;
  --mist:#D2DCDE;
  --fog:#80939B;
  --dim:#70848C;
  --brass:#C08F4C;
  --brass-lt:#DCB077;

  --display:"Fraunces",Georgia,serif;
  --body:"Archivo",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;

  --gut:clamp(20px,5vw,64px);
  --maxw:1320px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0; background:var(--abyss); color:var(--mist);
  font-family:var(--body); font-size:17px; line-height:1.65;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
img,video{display:block; max-width:100%;}
a{color:inherit;}

.shell{max-width:var(--maxw); margin:0 auto; padding-inline:var(--gut);}
.shell-narrow{max-width:1080px; margin:0 auto; padding-inline:var(--gut);}

/* ══ type ══ */
.eyebrow{
  font-family:var(--mono); font-size:11px; letter-spacing:.22em;
  text-transform:uppercase; color:var(--brass); margin:0;
}
h1,h2,h3{font-family:var(--display); font-weight:300; letter-spacing:-.02em; text-wrap:balance; margin:0;}
h2{font-size:clamp(30px,4.4vw,52px); line-height:1.08;}
h3{font-size:clamp(21px,2.2vw,27px); line-height:1.2; font-weight:400;}
p{margin:0;}
.lede{color:var(--fog); max-width:60ch;}

.sec{padding-block:clamp(76px,11vw,150px);}
.sec-head{display:flex; flex-direction:column; gap:16px; margin-bottom:clamp(38px,5vw,64px);}

/* ══ nav ══ */
.nav{
  position:fixed; inset:0 0 auto 0; z-index:60;
  padding-block:clamp(14px,1.3vw,22px);
  transition:background .5s ease, border-color .5s ease, padding-block .4s ease;
  border-bottom:1px solid transparent;
}
/* the bar spans the viewport, but its contents sit on the same column
   as .shell — otherwise the logo drifts into the corner on wide screens */
.nav-inner{
  max-width:var(--maxw); margin:0 auto; padding-inline:var(--gut);
  display:flex; align-items:center; justify-content:space-between; gap:clamp(20px,2vw,36px);
}
.nav.stuck{background:rgba(6,11,14,.86); backdrop-filter:blur(14px); border-bottom-color:var(--line-soft); padding-block:clamp(11px,1vw,15px);}
.brand{
  display:inline-flex; align-items:center; min-height:44px;
  text-decoration:none; white-space:nowrap;
}
.brand img{
  height:clamp(30px,2.5vw,44px); width:auto; display:block;
  transition:opacity .3s ease;
}
.brand:hover img,.brand:focus-visible img{opacity:.72;}
.foot .brand img{height:clamp(34px,2.8vw,48px);}
@media(max-width:600px){ .brand img{height:26px;} }
.navlinks{display:flex; gap:clamp(22px,2.1vw,42px); align-items:center;}
.navlinks a{
  display:inline-flex; align-items:center; min-height:44px;
  font-size:clamp(14px,1.02vw,17px); letter-spacing:.04em; text-decoration:none; color:var(--mist);
  opacity:.78; transition:opacity .25s, color .25s;
}
.navlinks a:hover,.navlinks a:focus-visible{opacity:1; color:var(--brass-lt);}
/* ══ charters dropdown ══════════════════════════════════════
   Ten charters is too many for a flat menu bar. They live in a
   panel that cascades open — rows stagger down 26 ms apart, so
   it reads as a list arriving rather than a box appearing.
   ═════════════════════════════════════════════════════════ */
.navdrop{position:relative;}
.navdrop-trigger{display:inline-flex; align-items:center; gap:7px;}
.navdrop-trigger .caret{
  font-size:8px; line-height:1; transform:translateY(1px);
  transition:transform .4s cubic-bezier(.22,.61,.36,1), color .25s;
}
.navdrop.open .navdrop-trigger .caret{transform:translateY(1px) rotate(180deg); color:var(--brass-lt);}
.navdrop.open .navdrop-trigger{opacity:1; color:var(--brass-lt);}

.navdrop-panel{
  position:absolute; top:calc(100% + 10px); left:50%; translate:-50% 0;
  width:min(680px,84vw); padding:10px 12px;
  display:grid; grid-template-columns:1fr 1fr; gap:0 26px;
  background:rgba(10,18,22,.97); backdrop-filter:blur(18px);
  border:1px solid var(--line);
  opacity:0; visibility:hidden; transform:translateY(-8px);
  transition:opacity .38s ease, transform .38s cubic-bezier(.22,.61,.36,1), visibility 0s .38s;
  z-index:70;
}
.navdrop.open .navdrop-panel{
  opacity:1; visibility:visible; transform:none;
  transition:opacity .38s ease, transform .38s cubic-bezier(.22,.61,.36,1), visibility 0s;
}
/* invisible bridge so the pointer can travel from trigger to panel */
.navdrop-panel::before{content:""; position:absolute; left:0; right:0; top:-12px; height:12px;}

.navdrop-panel a{
  display:flex; align-items:baseline; justify-content:space-between; gap:16px;
  padding:11px 10px; min-height:44px; text-decoration:none;
  border-bottom:1px solid var(--line-soft);
  opacity:0; transform:translateY(-6px);
  transition:opacity .4s ease, transform .4s cubic-bezier(.22,.61,.36,1),
             background .28s ease, padding-left .28s ease;
}
.navdrop.open .navdrop-panel a{opacity:1; transform:none;}
/* the cascade */
.navdrop.open .navdrop-panel a:nth-child(1){transition-delay:.04s,.04s,0s,0s;}
.navdrop.open .navdrop-panel a:nth-child(2){transition-delay:.07s,.07s,0s,0s;}
.navdrop.open .navdrop-panel a:nth-child(3){transition-delay:.10s,.10s,0s,0s;}
.navdrop.open .navdrop-panel a:nth-child(4){transition-delay:.13s,.13s,0s,0s;}
.navdrop.open .navdrop-panel a:nth-child(5){transition-delay:.16s,.16s,0s,0s;}
.navdrop.open .navdrop-panel a:nth-child(6){transition-delay:.055s,.055s,0s,0s;}
.navdrop.open .navdrop-panel a:nth-child(7){transition-delay:.085s,.085s,0s,0s;}
.navdrop.open .navdrop-panel a:nth-child(8){transition-delay:.115s,.115s,0s,0s;}
.navdrop.open .navdrop-panel a:nth-child(9){transition-delay:.145s,.145s,0s,0s;}
.navdrop.open .navdrop-panel a:nth-child(10){transition-delay:.175s,.175s,0s,0s;}

.navdrop-panel a:nth-child(5),
.navdrop-panel a:nth-child(10){border-bottom:none;}
.navdrop-panel a:hover,.navdrop-panel a:focus-visible{
  background:rgba(192,143,76,.09); padding-left:16px; outline:none;
}
.navdrop-panel .n{
  font-family:var(--display); font-size:15.5px; font-weight:400; color:var(--mist);
  letter-spacing:-.01em; line-height:1.25; transition:color .25s;
}
.navdrop-panel a:hover .n,.navdrop-panel a:focus-visible .n{color:var(--brass-lt);}
.navdrop-panel .p{
  font-family:var(--mono); font-size:11px; color:var(--dim);
  font-variant-numeric:tabular-nums; white-space:nowrap;
}
.navdrop-panel .n em{
  font-style:normal; display:block; margin-top:4px;
  font-family:var(--mono); font-size:8.5px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--brass);
}
@media(prefers-reduced-motion:reduce){
  .navdrop-panel,.navdrop-panel a{transition:none !important; transform:none !important;}
  .navdrop-trigger .caret{transition:none;}
}

.nav-cta{
  display:inline-flex; align-items:center; min-height:clamp(44px,3.4vw,52px);
  font-family:var(--mono); font-size:clamp(11px,.82vw,13px); letter-spacing:.16em; text-transform:uppercase;
  border:1px solid var(--line); padding:0 clamp(18px,1.6vw,28px); text-decoration:none;
  transition:border-color .3s, color .3s, background .3s;
}
.nav-cta:hover,.nav-cta:focus-visible{border-color:var(--brass); color:var(--brass-lt); background:rgba(192,143,76,.07);}
@media(max-width:880px){ .navlinks{display:none;} }

/* ══ buttons ══ */
.btn{
  display:inline-flex; align-items:center; justify-content:center; min-height:52px;
  font-family:var(--mono); font-size:11.5px; letter-spacing:.2em;
  text-transform:uppercase; text-decoration:none; padding:0 40px;
  border:1px solid var(--brass); color:var(--brass-lt); background:transparent;
  cursor:pointer; transition:background .35s ease, color .35s ease;
}
.btn:hover,.btn:focus-visible{background:var(--brass); color:var(--abyss);}
.btn-solid{background:var(--brass); color:var(--abyss); border-color:var(--brass); width:100%;}
.btn-solid:hover,.btn-solid:focus-visible{background:var(--brass-lt); border-color:var(--brass-lt); color:var(--abyss);}

/* ══ footer ══ */
.foot{border-top:1px solid var(--line-soft); padding-block:clamp(44px,6vw,72px) 40px;}
.foot-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:36px; align-items:start;}
.foot h4{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--dim); font-weight:400; margin:0 0 16px;
}
.foot ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2px;}
.foot li a{display:inline-flex; align-items:center; min-height:44px;}
.foot a{font-size:14.5px; text-decoration:none; color:var(--fog); transition:color .25s;}
.foot a:hover,.foot a:focus-visible{color:var(--brass-lt);}
.foot .blurb{color:var(--dim); font-size:14px; max-width:34ch; margin-top:14px; line-height:1.6;}
.foot-base{
  margin-top:clamp(36px,5vw,60px); padding-top:24px; border-top:1px solid var(--line-soft);
  display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
  font-family:var(--mono); font-size:10.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--dim);
}
@media(max-width:820px){ .foot-grid{grid-template-columns:1fr 1fr;} .foot-grid > div:first-child{grid-column:1/-1;} }

/* ══ motion ═════════════════════════════════════════════════
   Restraint is the point. One orchestrated moment on load,
   slow drift on scroll, and hover states that respond rather
   than perform. Everything below is disabled under
   prefers-reduced-motion.
   ═════════════════════════════════════════════════════════ */
.rise{opacity:0; transform:translateY(26px); transition:opacity .9s cubic-bezier(.22,.61,.36,1), transform .9s cubic-bezier(.22,.61,.36,1);}
.rise.in{opacity:1; transform:none;}

/* hairline scroll indicator */
.progress{
  position:fixed; top:0; left:0; height:1px; width:100%; z-index:80;
  background:var(--brass); transform:scaleX(0); transform-origin:0 50%;
  opacity:.85; pointer-events:none;
}

/* hero: staggered entrance, then a slow parallax drift */
.hero-media img,.hero-media video{will-change:transform;}
.lift{opacity:0; transform:translateY(20px);}
.lift.on{
  opacity:1; transform:none;
  transition:opacity 1.1s cubic-bezier(.22,.61,.36,1), transform 1.1s cubic-bezier(.22,.61,.36,1);
}

/* buttons lean very slightly toward the cursor */
.btn{will-change:transform; transition:background .35s ease, color .35s ease, transform .35s cubic-bezier(.22,.61,.36,1);}

@media(prefers-reduced-motion:reduce){
  .lift{opacity:1 !important; transform:none !important;}
  .progress{display:none;}
  .hero-media img,.hero-media video{transform:none !important;}
  .btn{transform:none !important;}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .rise{opacity:1; transform:none; transition:none;}
  *{animation-duration:.001ms !important; transition-duration:.001ms !important;}
}
::selection{background:var(--brass); color:var(--abyss);}
:focus-visible{outline:2px solid var(--brass); outline-offset:3px;}

/* ══ skip link ══ */
.skip{
  position:absolute; left:var(--gut); top:-100px; z-index:90;
  display:inline-flex; align-items:center; min-height:44px; padding:0 20px;
  background:var(--brass); color:var(--abyss); text-decoration:none;
  font-family:var(--mono); font-size:11px; letter-spacing:.16em; text-transform:uppercase;
  transition:top .25s ease;
}
.skip:focus{top:12px;}
