/*
  The Quarry Restaurant at Weir Mountain — Stylesheet
  ====================================================
  Color palette is defined once at the top under :root as CSS variables
  (--stone-900, --rust, --gold, etc). Change a color there and it updates
  everywhere it's used.

  Sections below are labeled with ---------- SECTION ---------- comments
  and roughly follow the order they appear on the page: nav, hero, about,
  menu, experience, gallery, voices, visit/hours, footer.
*/

:root{
    --stone-900:#211f1c;
    --stone-800:#2b2824;
    --stone-700:#433d36;
    --limestone:#efe8d8;
    --limestone-dim:#d8cfba;
    --rust:#bf4f27;
    --rust-bright:#e0692f;
    --gold:#e8a33d;
    --dusk:#5c4a68;
    --pine:#3c4a37;
    --line: rgba(239,232,216,0.14);
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--stone-900);
    color:var(--limestone);
    font-family:'Karla',sans-serif;
    font-size:17px;
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,h4{
    font-family:'Fraunces',serif;
    font-weight:600;
    margin:0;
    letter-spacing:-0.01em;
  }
  .eyebrow{
    font-family:'IBM Plex Mono',monospace;
    font-size:0.72rem;
    letter-spacing:0.18em;
    text-transform:uppercase;
    color:var(--gold);
  }
  a{color:inherit;}
  img{max-width:100%;display:block;}
  .wrap{max-width:1120px;margin:0 auto;padding:0 28px;}
  @media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}}

  /* ---------- NAV ---------- */
  header{
    position:fixed;top:0;left:0;right:0;z-index:50;
    background:linear-gradient(to bottom, rgba(33,31,28,0.92), rgba(33,31,28,0));
    padding:18px 0;
    transition:background .3s ease, padding .3s ease, box-shadow .3s ease;
  }
  header.scrolled{background:rgba(33,31,28,0.96);padding:12px 0;box-shadow:0 1px 0 var(--line);backdrop-filter:blur(6px);}
  nav{display:flex;align-items:center;justify-content:space-between;}
  .brand{display:flex;align-items:center;}
  .brand-logo{height:54px;width:54px;object-fit:cover;border-radius:50%;background:#fff;padding:3px;border:1px solid var(--line);}
  .navlinks{display:flex;gap:30px;font-size:0.88rem;}
  .navlinks a{text-decoration:none;color:var(--limestone-dim);position:relative;padding-bottom:3px;}
  .navlinks a:hover{color:var(--limestone);}
  .navlinks{display:none;}
  @media(min-width:820px){.navlinks{display:flex;}}
  .nav-cta{
    font-family:'IBM Plex Mono',monospace;font-size:0.75rem;letter-spacing:0.06em;
    border:1px solid var(--rust-bright);color:var(--limestone);text-decoration:none;
    padding:9px 16px;white-space:nowrap;
  }
  .nav-cta:hover{background:var(--rust-bright);}

  /* ---------- HERO ---------- */
  .hero{
    position:relative;
    min-height:100vh;
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    overflow:hidden;
    background:
      radial-gradient(120% 60% at 50% 8%, #3a2f3f 0%, transparent 60%),
      linear-gradient(180deg, #2a2233 0%, #4b3348 22%, #a24a3a 46%, #d98337 62%, #e8a33d 72%, var(--stone-900) 100%);
  }
  .hero-sun{
    position:absolute;left:50%;top:38%;
    width:220px;height:220px;border-radius:50%;
    transform:translate(-50%,-50%);
    background:radial-gradient(circle at 50% 50%, #fbe4b0 0%, var(--gold) 45%, rgba(232,163,61,0) 72%);
    filter:blur(1px);
    animation:rise 2.4s ease-out;
  }
  @keyframes rise{from{opacity:0;transform:translate(-50%,-30%) scale(0.85);}to{opacity:1;transform:translate(-50%,-50%) scale(1);}}
  .ridge{position:absolute;bottom:0;left:0;width:100%;display:block;}
  .ridge path{fill:var(--stone-900);}
  .ridge-mid{position:absolute;bottom:0;left:0;width:100%;opacity:0.55;}
  .ridge-mid path{fill:#1c1a17;}
  .hero-inner{position:relative;z-index:3;padding:0 28px 64px;text-align:center;}
  .hero-inner::before{
    content:"";position:absolute;z-index:-1;
    left:50%;bottom:-20px;transform:translateX(-50%);
    width:min(900px, 130%);height:calc(100% + 60px);
    background:radial-gradient(60% 90% at 50% 100%, rgba(13,14,20,0.62) 0%, rgba(13,14,20,0.38) 45%, rgba(13,14,20,0) 78%);
    pointer-events:none;
  }
  .hero-eyebrow{font-family:'IBM Plex Mono',monospace;color:var(--limestone);font-size:0.75rem;letter-spacing:0.24em;text-transform:uppercase;opacity:0.9;margin-bottom:18px;text-shadow:0 2px 14px rgba(0,0,0,0.55);}
  .hero h1{
    font-size:clamp(2.6rem, 8vw, 6rem);
    color:var(--limestone);
    line-height:0.95;
    text-shadow:0 4px 24px rgba(0,0,0,0.5), 0 2px 8px rgba(0,0,0,0.4);
  }
  .hero h1 em{font-style:italic;color:var(--limestone);opacity:0.92;font-weight:300;}
  .hero-sub{
    font-family:'Karla',sans-serif;color:var(--limestone);
    font-size:1.05rem;max-width:480px;margin:22px auto 0;opacity:0.95;
    text-shadow:0 2px 12px rgba(0,0,0,0.5);
  }
  .hero-ctas{display:flex;gap:14px;justify-content:center;margin-top:34px;flex-wrap:wrap;}
  .btn{
    font-family:'IBM Plex Mono',monospace;font-size:0.8rem;letter-spacing:0.05em;
    text-decoration:none;padding:14px 26px;display:inline-block;border:1px solid transparent;
  }
  .btn-solid{background:var(--limestone);color:var(--stone-900);}
  .btn-solid:hover{background:#fff;}
  .btn-ghost{border-color:rgba(239,232,216,0.55);color:var(--limestone);}
  .btn-ghost:hover{border-color:var(--limestone);background:rgba(239,232,216,0.08);}
  .scroll-cue{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);z-index:3;font-family:'IBM Plex Mono',monospace;font-size:0.65rem;letter-spacing:0.2em;color:var(--limestone);opacity:0.75;}
  .scroll-cue::after{content:"";display:block;width:1px;height:26px;background:var(--limestone);margin:8px auto 0;opacity:0.6;animation:pulse 2s infinite;}
  @keyframes pulse{0%,100%{opacity:0.15;}50%{opacity:0.7;}}

  /* ---------- SECTION SCAFFOLD ---------- */
  section{padding:100px 0;position:relative;}
  .divider{height:1px;background:var(--line);width:100%;}
  .section-head{max-width:640px;margin-bottom:56px;}
  .section-head h2{font-size:clamp(2rem,4vw,2.8rem);margin-top:10px;}
  .section-head p{color:var(--limestone-dim);margin-top:16px;font-size:1.02rem;}

  /* ---------- ABOUT ---------- */
  .about{background:var(--stone-900);}
  .about-grid{display:grid;grid-template-columns:1fr;gap:48px;align-items:start;}
  @media(min-width:860px){.about-grid{grid-template-columns:1.1fr 0.9fr;}}
  .about-copy p{color:var(--limestone-dim);margin:0 0 18px;}
  .about-copy p:last-child{margin-bottom:0;}
  .strata{border:1px solid var(--line);padding:32px;background:var(--stone-800);}
  .strata-row{display:flex;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line);font-family:'IBM Plex Mono',monospace;font-size:0.82rem;}
  .strata-row:last-child{border-bottom:none;}
  .strata-row span:first-child{color:var(--limestone-dim);}
  .strata-row span:last-child{color:var(--gold);text-align:right;}
  .about-aerial{width:100%;margin:0 0 48px;position:relative;}
  .about-aerial .frame{
    position:relative;overflow:hidden;line-height:0;padding:26px;
    -webkit-mask-image:linear-gradient(to right, transparent, black 6%, black 94%, transparent), linear-gradient(to bottom, transparent, black 10%, black 90%, transparent);
    -webkit-mask-composite:source-in, source-in;
    mask-image:linear-gradient(to right, transparent, black 6%, black 94%, transparent), linear-gradient(to bottom, transparent, black 10%, black 90%, transparent);
    mask-composite:intersect;
  }
  .about-aerial img{width:100%;height:auto;display:block;filter:saturate(0.94) contrast(1.04);}
  .about-aerial .frame::after{
    content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(180deg, rgba(33,31,28,0.32) 0%, rgba(33,31,28,0) 16%, rgba(33,31,28,0) 78%, rgba(33,31,28,0.42) 100%);
  }
  .about-aerial figcaption{font-family:'IBM Plex Mono',monospace;font-size:0.72rem;color:var(--limestone-dim);letter-spacing:0.04em;margin-top:12px;padding:0 4px;text-align:center;}

  /* ---------- MENU ---------- */
  .menu{background:var(--stone-800);}
  .menu-grid{display:grid;grid-template-columns:1fr;gap:1px;background:var(--line);border:1px solid var(--line);}
  @media(min-width:700px){.menu-grid{grid-template-columns:1fr 1fr;}}
  .menu-item{background:var(--stone-800);}
  .menu-item .menu-copy{padding:26px 28px 28px;}
  .menu-item img{width:100%;height:210px;object-fit:cover;display:block;}
  .menu-item h3{font-size:1.3rem;color:var(--limestone);display:flex;justify-content:space-between;align-items:baseline;gap:12px;}
  .menu-item .tag{font-family:'IBM Plex Mono',monospace;font-size:0.65rem;color:var(--rust-bright);letter-spacing:0.1em;text-transform:uppercase;}
  .menu-item p{color:var(--limestone-dim);font-size:0.92rem;margin:10px 0 0;}
  .menu-note{margin-top:28px;color:var(--limestone-dim);font-size:0.88rem;font-family:'IBM Plex Mono',monospace;}

  .menu-page-header{padding:150px 0 40px;border-bottom:1px solid var(--line);}
  .menu-page-header .back-link{font-family:'IBM Plex Mono',monospace;font-size:0.78rem;color:var(--limestone-dim);text-decoration:none;display:inline-block;margin-bottom:24px;}
  .menu-page-header .back-link:hover{color:var(--rust-bright);}
  .menu-page-header h1{font-size:clamp(2.2rem,5vw,3.2rem);margin-top:10px;}
  .menu-page-header p{color:var(--limestone-dim);margin-top:16px;max-width:640px;font-size:1.02rem;}
  .menu-cta-row{margin-top:32px;}

  .full-menu{margin-top:64px;}
  .full-menu-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:24px;}
  .full-menu-head h3{font-size:1.4rem;}
  .accordion{border-top:1px solid var(--line);}
  .accordion details{border-bottom:1px solid var(--line);}
  .accordion summary{
    cursor:pointer;list-style:none;padding:20px 4px;
    display:flex;justify-content:space-between;align-items:center;gap:16px;
    font-family:'IBM Plex Mono',monospace;font-size:0.85rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--limestone);
  }
  .accordion summary::-webkit-details-marker{display:none;}
  .accordion summary .cat-price{color:var(--limestone-dim);font-size:0.72rem;text-transform:none;letter-spacing:0.02em;}
  .accordion summary::after{content:"+";font-family:'Karla',sans-serif;font-size:1.3rem;color:var(--gold);}
  .accordion details[open] summary::after{content:"–";}
  .cat-items{padding:0 4px 26px;display:grid;grid-template-columns:1fr;gap:16px 40px;}
  @media(min-width:760px){.cat-items{grid-template-columns:1fr 1fr;}}
  .cat-item{display:flex;justify-content:space-between;gap:14px;padding-bottom:14px;border-bottom:1px solid var(--line);}
  .cat-item:last-child{border-bottom:none;}
  .cat-item .ci-name{font-size:0.98rem;color:var(--limestone);}
  .cat-item .ci-desc{color:var(--limestone-dim);font-size:0.84rem;margin-top:4px;}
  .cat-item .ci-price{font-family:'IBM Plex Mono',monospace;font-size:0.85rem;color:var(--gold);white-space:nowrap;}
  .sides-list{padding:0 4px 26px;display:grid;grid-template-columns:repeat(2,1fr);gap:8px 20px;font-size:0.92rem;color:var(--limestone-dim);}
  @media(min-width:600px){.sides-list{grid-template-columns:repeat(3,1fr);}}

  /* ---------- EXPERIENCE / EVENTS ---------- */
  .experience{background:var(--stone-900);}
  .exp-grid{display:grid;grid-template-columns:1fr;gap:1px;background:var(--line);border:1px solid var(--line);}
  @media(min-width:760px){.exp-grid{grid-template-columns:repeat(3,1fr);}}
  .exp-card{background:var(--stone-900);padding:34px 28px;min-height:220px;display:flex;flex-direction:column;justify-content:space-between;}
  .exp-card.has-photo{padding:0;position:relative;min-height:280px;}
  .exp-card.has-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;}
  .exp-card.has-photo::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg, rgba(33,31,28,0.05) 30%, rgba(33,31,28,0.92) 100%);z-index:1;}
  .exp-card.has-photo .exp-body{position:relative;z-index:2;padding:34px 28px;margin-top:auto;}
  .exp-card.has-photo h3,.exp-card.has-photo p{color:var(--limestone);}
  .exp-card .glyph{width:34px;height:34px;}
  .exp-card h3{font-size:1.15rem;margin-top:18px;}
  .exp-card p{color:var(--limestone-dim);font-size:0.92rem;margin-top:10px;}

  /* ---------- VOICES (reviews, paraphrased) ---------- */
  .voices{background:var(--stone-800);}

  .gallery{background:var(--stone-800);padding-top:0;}
  .gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-auto-rows:220px;gap:6px;}
  @media(min-width:700px){.gallery-grid{grid-template-columns:repeat(4,1fr);grid-auto-rows:200px;}}
  .gallery-grid img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(1.02);transition:transform .5s ease;}
  .gallery-grid a{overflow:hidden;display:block;}
  .gallery-grid a:hover img{transform:scale(1.06);}
  .g-tall{grid-row:span 2;}
  .voice-track{display:grid;grid-template-columns:1fr;gap:28px;}
  @media(min-width:760px){.voice-track{grid-template-columns:repeat(3,1fr);}}
  .voice{border-left:2px solid var(--rust-bright);padding-left:20px;}
  .voice p{color:var(--limestone);font-size:1rem;font-family:'Fraunces',serif;font-weight:300;font-style:italic;line-height:1.5;}
  .voice cite{display:block;margin-top:14px;font-style:normal;font-family:'IBM Plex Mono',monospace;font-size:0.72rem;color:var(--limestone-dim);letter-spacing:0.05em;}

  /* ---------- VISIT / HOURS ---------- */
  .visit{background:var(--stone-900);}
  .visit-grid{display:grid;grid-template-columns:1fr;gap:1px;background:var(--line);border:1px solid var(--line);}
  @media(min-width:860px){.visit-grid{grid-template-columns:1.1fr 1fr;}}
  .visit-panel{background:var(--stone-900);padding:40px;}
  .hours-row{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line);font-size:0.95rem;}
  .hours-row:last-child{border-bottom:none;}
  .hours-row span:first-child{font-family:'IBM Plex Mono',monospace;font-size:0.78rem;color:var(--limestone-dim);letter-spacing:0.05em;}
  .hours-row.closed span:last-child{color:var(--limestone-dim);}
  .hours-row span:last-child{color:var(--gold);}
  .contact-line{display:flex;flex-direction:column;gap:14px;margin-top:26px;}
  .contact-line a{text-decoration:none;font-size:1rem;display:flex;gap:10px;align-items:center;}
  .contact-line a:hover{color:var(--rust-bright);}
  .map-frame{width:100%;height:100%;min-height:340px;border:0;filter:grayscale(0.35) contrast(1.05);}

  /* ---------- CTA STRIP ---------- */
  .cta-strip{
    background:linear-gradient(120deg, var(--rust) 0%, var(--dusk) 100%);
    padding:64px 0;text-align:center;
  }
  .cta-strip h2{color:var(--limestone);font-size:clamp(1.6rem,3.4vw,2.3rem);}
  .cta-strip p{color:rgba(239,232,216,0.85);margin-top:12px;}
  .cta-strip .hero-ctas{margin-top:28px;}
  .cta-strip .btn-ghost{border-color:rgba(239,232,216,0.7);}

  /* ---------- FOOTER ---------- */
  footer{background:var(--stone-900);padding:56px 0 32px;border-top:1px solid var(--line);}
  .foot-grid{display:flex;flex-wrap:wrap;justify-content:space-between;gap:36px;}
  .foot-brand h3{font-size:1.3rem;}
  .foot-brand p{color:var(--limestone-dim);font-size:0.88rem;margin-top:10px;max-width:260px;}
  .foot-col h4{font-family:'IBM Plex Mono',monospace;font-size:0.72rem;letter-spacing:0.12em;text-transform:uppercase;color:var(--limestone-dim);margin-bottom:14px;}
  .foot-col a{display:block;text-decoration:none;color:var(--limestone);font-size:0.92rem;margin-bottom:9px;}
  .foot-col a:hover{color:var(--rust-bright);}
  .foot-bottom{margin-top:48px;padding-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-family:'IBM Plex Mono',monospace;font-size:0.7rem;color:var(--limestone-dim);letter-spacing:0.03em;}

  /* reveal on scroll */
  .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease, transform .7s ease;}
  .reveal.in{opacity:1;transform:translateY(0);}
