:root{
    /* Viking palette, mapped from the reference: 1 base / 2 secondary / 3 accent (minimal) / 4+5 text */
    --base:#263238;        /* 1 Slate Shadow — primary background */
    --base-deep:#1B252A;   /* darker derivative of 1, for footer/depth */
    --surface:#37474F;      /* 2 Charcoal Ash — secondary background/surface */
    --accent:#8F333B;       /* 3 accent — minimal accent only */
    --accent-soft:#B0525A;  /* lighter accent for hover/legible-on-dark text */
    --frost:#78909C;        /* 4 Dark Frost — secondary text, labels, icons */
    --text:#ECEFF1;         /* 5 Cool White — primary text color */
    --ink:#263238;          /* dark text/icons for use on the light surface color */
    --ink-muted:rgba(38,50,56,0.62);
    --line:rgba(236,239,241,0.14);
    --line-soft:rgba(236,239,241,0.08);
    --serif:'Fraunces', Georgia, 'Times New Roman', serif;
    --sans:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --mono:'JetBrains Mono', ui-monospace, Menlo, monospace;
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--base);
    color:var(--text);
    font-family:var(--sans);
    -webkit-font-smoothing:antialiased;
  }
  img{max-width:100%;}
  a{color:inherit;}
  .container{
    max-width:1180px;
    margin:0 auto;
    padding-inline:24px;
  }
  h1,h2,h3{
    font-family:var(--serif);
    font-weight:600;
    letter-spacing:-0.01em;
    text-wrap:balance;
    margin:0;
  }
  .eyebrow{
    font-family:var(--mono);
    font-size:11.5px;
    letter-spacing:0.16em;
    text-transform:uppercase;
    display:inline-flex;
    align-items:center;
    gap:8px;
  }
  .eyebrow::before{
    content:"";
    width:16px;height:1px;
    background:currentColor;
  }
  .btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    padding:14px 26px;
    border-radius:2px;
    font-family:var(--sans);
    font-weight:600;
    font-size:14px;
    letter-spacing:0.02em;
    text-decoration:none;
    border:1px solid transparent;
    cursor:pointer;
    transition:transform .15s ease, background .2s ease, color .2s ease, border-color .2s ease;
  }
  .btn:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
  .btn-gold{background:var(--accent); color:var(--text);}
  .btn-gold:hover{background:var(--accent-soft);}
  .btn-outline{background:transparent; color:var(--text); border-color:rgba(236,239,241,0.35);}
  .btn-outline:hover{border-color:var(--text);}
  .btn-outline-dark{background:transparent; color:var(--text); border-color:var(--frost);}
  .btn-outline-dark:hover{background:var(--frost); color:var(--base);}

  /* placeholder photo tiles */
  .ph{
    position:relative;
    overflow:hidden;
    border-radius:4px;
    background:
      repeating-linear-gradient(135deg, rgba(255,255,255,0.04) 0 2px, transparent 2px 14px),
      linear-gradient(160deg, var(--frost) 0%, #3E4C54 60%, var(--base-deep) 100%);
  }
  .ph.alt{
    background:
      repeating-linear-gradient(135deg, rgba(255,255,255,0.04) 0 2px, transparent 2px 14px),
      linear-gradient(160deg, #3E4C54 0%, var(--base-deep) 100%);
  }
  .ph-label{
    position:absolute;
    left:14px; bottom:14px;
    display:inline-flex;
    align-items:center;
    gap:6px;
    padding:6px 10px;
    background:rgba(19,25,28,0.6);
    backdrop-filter:blur(2px);
    color:var(--text);
    font-family:var(--mono);
    font-size:10.5px;
    letter-spacing:0.06em;
    text-transform:uppercase;
    border-radius:2px;
  }
  .ph-label svg{width:12px;height:12px;flex:none;}

  /* reveal on scroll */
  .reveal{opacity:1; transform:none; transition:opacity .6s ease, transform .6s ease;}
  .reveal.in{opacity:1; transform:none;}
  @media (prefers-reduced-motion:reduce){
    .reveal{opacity:1; transform:none; transition:none;}
    html{scroll-behavior:auto;}
  }

  /* ===== NAV ===== */
  header.nav{
    position:sticky; top:0; z-index:50;
    background:rgba(38,50,56,0.92);
    backdrop-filter:blur(8px);
    border-bottom:1px solid var(--line);
  }
  .nav-inner{
    display:flex; align-items:center; justify-content:space-between;
    padding-block:16px;
  }
  .wordmark{
    display:flex;
    flex-direction:column;
    line-height:1;
    gap:4px;
    text-decoration:none;
    color:var(--text);
  }
  .wordmark .fj-main{
    font-family:var(--serif);
    font-size:22px;
    font-weight:700;
    letter-spacing:0.01em;
  }
  .wordmark .fj-sub{
    font-family:var(--mono);
    font-size:9px;
    font-weight:500;
    letter-spacing:0.22em;
    text-transform:uppercase;
    color:var(--frost);
  }
  nav.links{
    display:flex; align-items:center; gap:32px;
  }
  nav.links a{
    font-size:13.5px;
    font-weight:500;
    text-decoration:none;
    color:var(--text);
    letter-spacing:0.01em;
    position:relative;
  }
  nav.links a::after{
    content:"";
    position:absolute; left:0; right:0; bottom:-6px;
    height:1px; background:var(--accent);
    transform:scaleX(0); transform-origin:left;
    transition:transform .2s ease;
  }
  nav.links a:hover::after{transform:scaleX(1);}
  .nav-cta{display:flex; align-items:center; gap:18px;}
  .nav-cta .btn{padding:11px 20px; font-size:13px;}

  .menu-toggle{
    display:none;
    background:none; border:none; cursor:pointer;
    width:34px; height:34px;
    flex-direction:column; align-items:center; justify-content:center; gap:5px;
  }
  .menu-toggle span{width:22px; height:2px; background:var(--text); display:block;}

  @media (max-width:880px){
    nav.links{display:none;}
    .nav-cta .btn-outline{display:none;}
    .menu-toggle{display:flex;}
  }
  .mobile-menu{
    display:none;
    flex-direction:column;
    gap:2px;
    padding:8px 24px 20px;
    border-top:1px solid var(--line);
  }
  .mobile-menu.open{display:flex;}
  .mobile-menu a{
    padding:12px 0;
    font-size:15px;
    text-decoration:none;
    color:var(--text);
    border-bottom:1px solid var(--line);
  }

  /* ===== HERO ===== */
  .hero{
    background:linear-gradient(180deg, var(--base) 0%, var(--base-deep) 100%);
    color:var(--text);
    padding-block:88px 96px;
    overflow:hidden;
    position:relative;
  }
  .hero .container{
    display:grid;
    grid-template-columns:1.05fr 0.95fr;
    gap:56px;
    align-items:center;
  }
  .hero .eyebrow{color:var(--frost); margin-bottom:20px;}
  .hero h1{
    font-size:clamp(34px,4.6vw,54px);
    line-height:1.08;
    margin-bottom:22px;
  }
  .hero h1 em{color:var(--accent-soft); font-style:normal;}
  .hero p.lede{
    font-size:16.5px;
    line-height:1.65;
    color:rgba(236,239,241,0.78);
    max-width:46ch;
    margin:0 0 32px;
  }
  .hero-actions{display:flex; gap:14px; flex-wrap:wrap; margin-bottom:34px;}
  .hero-stats{
    display:flex; gap:32px; flex-wrap:wrap;
    padding-top:26px;
    border-top:1px solid var(--line);
  }
  .hero-stats div b{
    display:block;
    font-family:var(--serif);
    font-size:26px;
    color:var(--text);
  }
  .hero-stats div span{
    font-size:12px;
    color:var(--frost);
    letter-spacing:0.02em;
  }
  .hero .ph{aspect-ratio:4/5; border:1px solid var(--line);}
  .hero::after{
    content:"";
    position:absolute; inset:auto 0 0 0; height:64px;
    background:
      linear-gradient(135deg, transparent 49%, rgba(143,51,59,0.5) 49%, rgba(143,51,59,0.5) 51%, transparent 51%),
      linear-gradient(45deg, transparent 49%, rgba(143,51,59,0.5) 49%, rgba(143,51,59,0.5) 51%, transparent 51%);
    background-size:46px 64px, 46px 64px;
    background-position:0 0, 23px 0;
    opacity:0.28;
    pointer-events:none;
  }

  @media (max-width:880px){
    .hero .container{grid-template-columns:1fr;}
    .hero .ph{aspect-ratio:16/10;}
  }

  /* ===== SECTION HEADERS ===== */
  .sec{padding-block:96px;}
  .sec-head{
    max-width:640px;
    margin-bottom:52px;
  }
  .sec-head .eyebrow{color:var(--frost); margin-bottom:14px;}
  .sec-head h2{font-size:clamp(26px,3.2vw,36px); margin-bottom:14px; color:var(--text);}
  .sec-head p{font-size:15.5px; line-height:1.65; color:var(--frost); margin:0;}

  /* ===== ABOUT ===== */
  .about{background:var(--surface);}
  .about .container{
    display:grid;
    grid-template-columns:0.85fr 1.15fr;
    gap:64px;
    align-items:center;
  }
  .about .ph{aspect-ratio:3/4;}
  .about-cred{
    display:flex; flex-direction:column; gap:12px;
    margin:26px 0 30px;
  }
  .about-cred li{
    list-style:none;
    display:flex; gap:10px; align-items:flex-start;
    font-size:14.5px; color:var(--text);
  }
  .about-cred svg{flex:none; margin-top:3px; color:var(--frost);}
  .about blockquote{
    margin:0 0 28px;
    padding-left:18px;
    border-left:2px solid var(--accent);
    font-family:var(--serif);
    font-size:19px;
    font-style:italic;
    color:var(--text);
    line-height:1.5;
  }
  @media (max-width:880px){
    .about .container{grid-template-columns:1fr;}
  }

  /* ===== PROGRAMS ===== */
  .programs{background:var(--base);}
  .cards3{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:22px;
  }
  .prog-card{
    background:var(--surface);
    border:1px solid var(--line);
    border-radius:4px;
    padding:32px 26px;
    display:flex; flex-direction:column; gap:14px;
    position:relative;
  }
  .prog-card.featured{
    border-color:var(--accent);
    box-shadow:0 18px 40px -22px rgba(0,0,0,0.4);
  }
  .badge{
    position:absolute; top:-13px; left:26px;
    background:var(--accent); color:var(--text);
    font-family:var(--mono); font-size:10.5px; letter-spacing:0.08em;
    text-transform:uppercase;
    padding:5px 10px; border-radius:2px;
  }
  .prog-card h3{font-size:20px; margin-bottom:2px; color:var(--text);}
  .prog-signature{
    display:inline-block;
    font-family:var(--serif); font-style:italic; font-size:13px;
    color:var(--frost); margin-top:-8px;
  }
  .prog-card .price{
    font-family:var(--serif); font-size:15px; color:var(--text);
  }
  .prog-card p{font-size:14px; line-height:1.6; color:var(--frost); margin:0;}
  .prog-card ul{
    list-style:none; padding:0; margin:6px 0 8px;
    display:flex; flex-direction:column; gap:8px;
  }
  .prog-card ul li{
    font-size:13.5px; color:var(--text);
    display:flex; gap:8px; align-items:flex-start;
  }
  .prog-card ul li svg{flex:none; margin-top:3px; color:var(--frost);}
  .prog-card .btn{margin-top:auto; align-self:flex-start;}
  .prog-divider{height:1px; background:var(--line); margin:2px 0 0;}
  .miss-label{
    font-family:var(--mono); font-size:10px; letter-spacing:0.08em; text-transform:uppercase;
    color:var(--frost); opacity:0.75; margin:2px 0 0;
  }
  .prog-card ul.miss{margin:6px 0 0;}
  .prog-card ul.miss li{color:var(--frost);}
  .prog-card ul.miss li svg{color:var(--accent-soft);}

  @media (max-width:880px){.cards3{grid-template-columns:1fr;}}

  /* ===== RESULTS ===== */
  .results{background:var(--surface);}
  .results-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:18px;
  }
  .result-card{
    background:var(--base);
    border:1px solid var(--line);
    border-radius:4px;
    overflow:hidden;
  }
  .result-card .ph{aspect-ratio:1/1; border-radius:0;}
  .result-body{padding:18px 18px 20px;}
  .result-body .stat{
    font-family:var(--serif); font-size:22px; color:var(--text);
    display:block; margin-bottom:4px;
  }
  .result-body .who{font-size:12.5px; color:var(--frost);}
  @media (max-width:980px){.results-grid{grid-template-columns:repeat(2,1fr);}}

  /* ===== TESTIMONIALS ===== */
  .testimonials{background:var(--base);}
  .testimonials .sec-head .eyebrow{color:var(--frost);}
  .testimonials .sec-head h2{color:var(--text);}
  .testimonials .sec-head p{color:var(--frost);}
  .t-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:20px;
  }
  .t-card{
    background:var(--surface);
    border:1px solid var(--line);
    border-radius:4px;
    padding:26px 24px;
    display:flex; flex-direction:column; gap:16px;
  }
  .t-quote{font-size:14.5px; line-height:1.65; color:var(--text); margin:0;}
  .t-who{display:flex; align-items:center; gap:12px;}
  .t-avatar{
    width:38px; height:38px; border-radius:50%; flex:none;
    background:linear-gradient(160deg, var(--frost), var(--surface));
  }
  .t-who b{display:block; font-size:13.5px; color:var(--text);}
  .t-who span{font-size:12px; color:var(--frost);}
  @media (max-width:880px){.t-grid{grid-template-columns:1fr;}}

  /* ===== WRITE A REVIEW MODAL ===== */
  .review-modal-overlay{
    display:none; position:fixed; inset:0; z-index:100;
    background:rgba(15,20,23,0.72); backdrop-filter:blur(3px);
    align-items:center; justify-content:center; padding:20px;
  }
  .review-modal-overlay.open{display:flex;}
  .review-modal{
    background:var(--surface); border:1px solid var(--line); border-radius:6px;
    padding:30px; max-width:460px; width:100%;
    max-height:88vh; overflow-y:auto;
    display:flex; flex-direction:column; gap:14px;
    position:relative;
  }
  .review-modal h3{color:var(--text); font-size:20px; padding-right:20px;}
  .review-modal .close-x{
    position:absolute; top:16px; right:16px;
    background:none; border:none; color:var(--frost); cursor:pointer;
    width:28px; height:28px; display:flex; align-items:center; justify-content:center;
  }
  .review-modal .close-x:hover{color:var(--text);}
  .review-modal form{display:flex; flex-direction:column; gap:14px;}
  .review-modal label{
    display:flex; flex-direction:column; gap:6px;
    font-size:12.5px; color:var(--frost);
  }
  .review-modal input, .review-modal select, .review-modal textarea{
    background:rgba(236,239,241,0.06);
    border:1px solid rgba(236,239,241,0.2);
    border-radius:2px; padding:11px 12px; color:var(--text);
    font-family:var(--sans); font-size:14px; resize:vertical;
  }
  .review-modal select option{color:#111;}
  .google-row{
    display:flex; align-items:center; gap:10px; flex-wrap:wrap;
    padding:12px; border:1px dashed var(--line); border-radius:4px;
    background:rgba(236,239,241,0.03);
  }
  .google-btn{
    display:inline-flex; align-items:center; gap:8px;
    background:#fff; color:#1f1f1f; font-family:var(--sans); font-weight:600; font-size:13px;
    padding:9px 14px; border-radius:3px; border:1px solid rgba(0,0,0,0.1); cursor:pointer;
  }
  .google-verified{
    display:flex; align-items:center; gap:10px; font-size:13px; color:var(--text);
  }
  .google-verified .g-avatar{
    width:32px; height:32px; border-radius:50%; flex:none;
    display:flex; align-items:center; justify-content:center;
    background:linear-gradient(160deg, var(--frost), var(--surface));
    font-family:var(--serif); font-weight:600; font-size:13px; color:var(--text);
  }
  .preview-tag{
    font-family:var(--mono); font-size:9.5px; letter-spacing:0.06em; text-transform:uppercase;
    color:var(--frost); opacity:0.8;
  }
  .t-card.new-review{border-color:var(--accent-soft);}
  .t-verified{
    display:flex; align-items:center; gap:4px;
    font-family:var(--mono); font-size:10px; letter-spacing:0.04em; text-transform:uppercase;
    color:var(--accent-soft); margin-top:2px;
  }

  /* ===== PRICING ===== */
  .pricing{background:var(--surface);}
  .price-grid{
    display:grid; grid-template-columns:repeat(3,1fr); gap:22px;
    align-items:start;
  }
  .price-card{
    border:1px solid var(--line); border-radius:4px;
    padding:30px 26px;
    display:flex; flex-direction:column; gap:16px;
    text-align:left;
    background:var(--base);
  }
  .price-card h3{color:var(--text);}
  .price-card.featured{
    background:var(--base-deep); border-color:var(--accent);
  }
  .price-card.featured .eyebrow{color:var(--frost);}
  .price-card.featured p{color:var(--frost);}
  .price-card h3{font-size:19px;}
  .price-card .amount{font-family:var(--serif); font-size:28px; color:var(--text);}
  .price-card .amount span{font-size:13px; font-family:var(--sans); font-weight:400; opacity:0.65;}
  .price-card p{font-size:13.5px; line-height:1.6; color:var(--frost); margin:0;}
  .price-card ul{list-style:none; padding:0; margin:2px 0 0; display:flex; flex-direction:column; gap:8px;}
  .price-card ul li{font-size:13px; color:var(--text); display:flex; gap:8px; align-items:flex-start;}
  .price-card ul li svg{flex:none; margin-top:2px; color:var(--frost);}
  .price-card .btn{margin-top:auto; align-self:flex-start;}
  .price-card.elite{border-color:var(--accent);}
  .spots-line{
    display:inline-flex; align-items:center; gap:5px;
    font-family:var(--mono); font-size:11.5px; letter-spacing:0.03em;
    color:var(--accent-soft);
  }
  .tier-result{
    font-size:12.5px; line-height:1.5; color:var(--frost);
    padding-top:12px; border-top:1px solid var(--line);
  }
  .tier-result b{color:var(--text); font-weight:600;}
  .elite-notice{
    font-size:12px; line-height:1.55; color:var(--frost);
    background:rgba(143,51,59,0.12); border:1px solid rgba(143,51,59,0.4);
    border-radius:3px; padding:10px 12px;
  }
  .pricing-disclaimer{
    margin-top:28px; font-size:12px; color:var(--frost); line-height:1.6; max-width:74ch;
  }
  @media (max-width:880px){.price-grid{grid-template-columns:1fr;}}

  /* ===== BOOKING CTA ===== */
  .booking{
    background:
      radial-gradient(circle at 15% 20%, rgba(143,51,59,0.14), transparent 45%),
      var(--base);
    color:var(--text);
  }
  .booking .container{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:60px;
    align-items:start;
  }
  .booking h2{font-size:clamp(26px,3.4vw,34px); margin-bottom:16px;}
  .booking p.lede{font-size:15px; line-height:1.65; color:var(--frost); max-width:44ch;}
  .booking .limited{
    display:inline-flex; align-items:center; gap:8px;
    margin-top:22px; padding:8px 14px;
    border:1px solid rgba(143,51,59,0.55); border-radius:2px;
    font-family:var(--mono); font-size:11.5px; letter-spacing:0.04em; color:var(--accent-soft);
  }
  form.book{
    display:flex; flex-direction:column; gap:16px;
    background:var(--surface);
    border:1px solid var(--line);
    padding:28px; border-radius:4px;
  }
  form.book label{
    display:flex; flex-direction:column; gap:6px;
    font-size:12.5px; letter-spacing:0.02em; color:var(--frost);
  }
  form.book input, form.book select{
    background:rgba(236,239,241,0.06);
    border:1px solid rgba(236,239,241,0.2);
    border-radius:2px;
    padding:11px 12px;
    color:var(--text);
    font-family:var(--sans); font-size:14px;
  }
  form.book input::placeholder{color:rgba(236,239,241,0.4);}
  form.book input:focus, form.book select:focus{outline:2px solid var(--accent); outline-offset:1px;}
  form.book select option{color:#111;}
  @media (max-width:880px){.booking .container{grid-template-columns:1fr;}}

  /* ===== FOOTER ===== */
  footer.site{
    background:var(--base-deep); color:var(--frost);
    padding-block:56px 32px;
  }
  .footer-top{
    display:flex; justify-content:space-between; gap:40px; flex-wrap:wrap;
    padding-bottom:36px; border-bottom:1px solid var(--line);
  }
  .footer-top .wordmark{color:var(--text);}
  .foot-links{display:flex; gap:40px; flex-wrap:wrap;}
  .foot-col h4{
    font-size:11.5px; letter-spacing:0.1em; text-transform:uppercase;
    color:var(--frost); margin:0 0 12px;
  }
  .foot-col a{
    display:block; font-size:13.5px; text-decoration:none;
    color:rgba(236,239,241,0.75); margin-bottom:9px;
  }
  .foot-col a:hover{color:var(--accent-soft);}
  .foot-bottom{
    display:flex; justify-content:space-between; align-items:center; gap:16px;
    flex-wrap:wrap; padding-top:22px; font-size:12px; color:rgba(236,239,241,0.4);
  }
  .socials{display:flex; gap:14px;}
  .socials a{
    width:32px; height:32px; border-radius:50%;
    border:1px solid var(--line);
    display:flex; align-items:center; justify-content:center;
    color:var(--frost); text-decoration:none;
  }
  .socials a:hover{border-color:var(--accent); color:var(--accent-soft);}

  .placeholder-note{
    background:var(--accent);
    color:var(--text);
    text-align:center;
    font-family:var(--mono);
    font-size:12px;
    letter-spacing:0.03em;
    padding:9px 16px;
  }
