:root{
    --ink:#15171A;
    --ink-soft:#33373B;
    --paper:#F6F4EF;
    --paper-2:#EFEBE1;
    --paper-3:#FCFAF5;
    --mid:#B7B2A8;
    --line:#D8D1C3;
    --pine:#1D5C4B;
    --pine-light:#79BEA6;
    --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
    --serif:"Source Serif 4",Georgia,"Times New Roman",serif;
    --sans:"Public Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
    --wrap:1180px;
  }
  *{box-sizing:border-box}
  html{-webkit-text-size-adjust:100%}
  body{
    margin:0;background:var(--paper);color:var(--ink);
    font-family:var(--sans);font-size:17px;line-height:1.6;
    -webkit-font-smoothing:antialiased;text-wrap:pretty;
  }
  img,svg{display:block;max-width:100%}
  a{color:inherit}
  .wrap{max-width:var(--wrap);margin:0 auto;padding:0 32px}
  .eyebrow{
    font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
    color:var(--ink-soft);display:flex;align-items:center;gap:10px;
  }
  .eyebrow::before{content:"";width:7px;height:7px;background:var(--pine);flex:none}
  h1,h2,h3{font-family:var(--serif);font-weight:600;letter-spacing:-.015em;margin:0}
  h1{font-size:clamp(46px,6.4vw,78px);line-height:.98}
  h2{font-size:clamp(30px,3.6vw,44px);line-height:1.06}
  h3{font-size:22px;line-height:1.2}
  p{margin:0}
  .lede{font-size:clamp(18px,1.5vw,20px);line-height:1.55;color:var(--ink-soft);max-width:34ch}

  /* ---------- buttons ---------- */
  .btn{
    display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 26px;
    font-family:var(--sans);font-size:15px;font-weight:600;letter-spacing:.01em;
    text-decoration:none;border:1.5px solid var(--ink);border-radius:2px;
    transition:transform .12s ease,background .12s ease,color .12s ease;
  }
  .btn-primary{background:var(--ink);color:var(--paper)}
  .btn-primary:hover{background:var(--pine);border-color:var(--pine);transform:translateY(-1px)}
  .btn-ghost{background:transparent;color:var(--ink)}
  .btn-ghost:hover{background:var(--ink);color:var(--paper);transform:translateY(-1px)}
  :focus-visible{outline:2.5px solid var(--pine);outline-offset:3px}

  /* ---------- header ---------- */
  header.site{
    position:sticky;top:0;z-index:20;background:rgba(246,244,239,.94);
    backdrop-filter:saturate(120%) blur(6px);border-bottom:1px solid var(--line);
  }
  .bar{display:flex;align-items:center;gap:36px;height:78px}
  .lockup{display:flex;align-items:center;gap:12px;text-decoration:none}
  .lockup .mark{width:34px;height:34px;flex:none}
  .lockup .name{font-family:var(--serif);font-size:21px;font-weight:600;letter-spacing:-.01em;line-height:1}
  .lockup .name span{display:block;font-family:var(--mono);font-size:8.5px;font-weight:400;letter-spacing:.2em;color:var(--ink-soft);margin-top:4px}
  nav.main{display:flex;gap:28px;margin-left:auto}
  nav.main a{
    font-size:14px;font-weight:500;text-decoration:none;color:var(--ink-soft);
    padding:6px 0;border-bottom:1.5px solid transparent;
  }
  nav.main a:hover{color:var(--ink);border-bottom-color:var(--pine)}
  .bar .phone{
    font-family:var(--mono);font-size:13px;font-weight:500;text-decoration:none;
    border:1.5px solid var(--ink);padding:9px 14px;border-radius:2px;white-space:nowrap;
  }
  .bar .phone:hover{background:var(--ink);color:var(--paper)}

  /* ---------- hero ---------- */
  .hero{display:grid;grid-template-columns:1.06fr .94fr;gap:64px;align-items:center;padding-block:84px 88px}
  .hero-copy>*+*{margin-top:22px}
  .hero h1 em{font-style:normal;color:var(--pine)}
  .hero .ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
  .hero .fine{
    font-family:var(--mono);font-size:12px;letter-spacing:.03em;color:var(--ink-soft);
    margin-top:26px;padding-top:18px;border-top:1px solid var(--line);
  }

  /* ---------- ticket ---------- */
  .ticket{
    background:var(--paper-3);border:1.5px solid var(--ink);border-radius:2px;
    box-shadow:9px 9px 0 var(--line);max-width:410px;justify-self:end;width:100%;
  }
  .ticket-head{
    display:flex;justify-content:space-between;align-items:baseline;gap:12px;
    padding:14px 20px;border-bottom:1.5px solid var(--ink);
    font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  }
  .ticket-head .no{color:var(--pine);font-weight:500}
  .ticket dl{margin:0}
  .ticket .row{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:baseline;padding:15px 20px;border-bottom:1px solid var(--line)}
  .ticket dt{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
  .ticket dd{margin:0;font-family:var(--serif);font-size:16px;text-align:right}
  .perf{position:relative;border-top:1.5px dashed #C2BAA9;margin:0 0 0}
  .ticket .price{padding:18px 20px 20px}
  .ticket .price p{display:flex;justify-content:space-between;gap:16px;font-family:var(--mono);font-size:12.5px;letter-spacing:.02em}
  .ticket .price p+p{margin-top:9px;color:var(--ink-soft)}
  .ticket .price strong{font-weight:500}
  .ticket .fine{
    padding:14px 20px;border-top:1px solid var(--line);
    font-family:var(--mono);font-size:10.5px;line-height:1.5;color:var(--ink-soft);
  }

  /* ---------- services ---------- */
  .services{background:var(--ink);color:var(--paper);padding:88px 0 92px}
  .services .eyebrow{color:rgba(246,244,239,.7)}
  .services .eyebrow::before{background:var(--pine-light)}
  .services h2{margin-top:18px;max-width:22ch}
  .services .intro{margin-top:16px;max-width:52ch;color:rgba(246,244,239,.72);font-size:17px}
  .cols{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:56px;border-top:1px solid rgba(246,244,239,.22)}
  .col{padding:34px 40px 8px 0}
  .col+.col{border-left:1px solid rgba(246,244,239,.22);padding-left:40px;padding-right:0}
  .col h3{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--pine-light)}
  .col .sub{font-family:var(--serif);font-size:24px;margin-top:12px;line-height:1.2}
  .col ul{list-style:none;margin:22px 0 0;padding:0}
  .col li{padding:11px 0;border-bottom:1px solid rgba(246,244,239,.14);font-size:16px;color:rgba(246,244,239,.9)}
  .col li:last-child{border-bottom:0}
  .services .note{
    margin-top:44px;padding-top:24px;border-top:1px solid rgba(246,244,239,.22);
    font-family:var(--mono);font-size:12px;line-height:1.7;color:rgba(246,244,239,.62);max-width:64ch;
  }

  /* ---------- how it works ---------- */
  .how{background:var(--paper-2);padding:88px 0}
  .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:52px;border-top:1.5px solid var(--ink)}
  .step{padding:28px 34px 0 0;position:relative}
  .step+.step{border-left:1px solid var(--line);padding-left:34px}
  .step .n{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--pine)}
  .step h3{margin-top:14px;font-size:21px}
  .step p{margin-top:10px;font-size:16px;color:var(--ink-soft)}

  /* ---------- service area ---------- */
  .area{padding-block:88px;border-top:1px solid var(--line)}
  .area-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:64px;margin-top:34px;align-items:start}
  .towns{display:grid;grid-template-columns:repeat(2,1fr);gap:0 32px;border-top:1.5px solid var(--ink)}
  .towns li{list-style:none;display:flex;align-items:baseline;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:16px}
  .towns li .t{flex:1;min-width:0}
  .towns li .d{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ink-soft);white-space:nowrap;flex:none}
  .area .kicker{font-family:var(--serif);font-size:23px;line-height:1.35;max-width:26ch}
  .area .kicker b{font-weight:600;background:linear-gradient(transparent 62%,rgba(29,92,75,.22) 62%)}
  .area p.body{margin-top:18px;color:var(--ink-soft);font-size:16px;max-width:40ch}
  .area .link{
    display:inline-block;margin-top:24px;font-family:var(--mono);font-size:12px;
    letter-spacing:.08em;text-transform:uppercase;text-decoration:none;border-bottom:1.5px solid var(--pine);
    padding-bottom:3px;color:var(--ink)
  }
  .area .link:hover{color:var(--pine)}

  /* ---------- about ---------- */
  .about{padding-block:0 88px}
  .about-inner{
    display:grid;grid-template-columns:.85fr 1.15fr;gap:64px;
    border-top:1.5px solid var(--ink);padding-top:34px;
  }
  .about p+p{margin-top:18px}
  .about .big{font-family:var(--serif);font-size:clamp(22px,2.3vw,28px);line-height:1.35;letter-spacing:-.01em}
  .about .small{font-size:16px;color:var(--ink-soft);max-width:46ch}

  /* ---------- cta ---------- */
  .cta{background:var(--pine);color:var(--paper);padding:78px 0}
  .cta-inner{display:grid;grid-template-columns:1.2fr .8fr;gap:56px;align-items:center}
  .cta h2{font-size:clamp(32px,4vw,50px);max-width:20ch}
  .cta .eyebrow{color:rgba(246,244,239,.75)}
  .cta .eyebrow::before{background:var(--paper)}
  .cta h2{margin-top:16px}
  .cta .tel{
    display:inline-block;margin-top:8px;font-family:var(--serif);font-size:clamp(28px,3.4vw,42px);
    text-decoration:none;letter-spacing:-.01em;border-bottom:2px solid rgba(246,244,239,.4);
  }
  .cta .tel:hover{border-bottom-color:var(--paper)}
  .cta .meta{border-left:1.5px solid rgba(246,244,239,.35);padding-left:28px}
  .cta .meta p{font-family:var(--mono);font-size:12.5px;line-height:1.9;color:rgba(246,244,239,.85)}
  .cta .meta p+p{margin-top:14px}

  /* ---------- footer ---------- */
  footer.site{background:var(--ink);color:rgba(246,244,239,.78);padding:44px 0 40px}
  .foot{display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between}
  .foot .lockup .name{color:var(--paper)}
  .foot .lockup .name span{color:rgba(246,244,239,.55)}
  .foot .legal{font-family:var(--mono);font-size:11px;letter-spacing:.06em;line-height:1.9;text-align:right}

  @media (max-width:900px){
    .wrap{padding:0 22px}
    nav.main{display:none}
    .bar{gap:16px;height:70px}
    .bar .phone{margin-left:auto;font-size:12px;padding:8px 11px}
    .lockup .name span{display:none}
    .lockup .name{font-size:19px}
    .hero{grid-template-columns:1fr;gap:40px;padding-block:48px 60px}
    .ticket{justify-self:start;max-width:100%}
    .cols,.steps,.area-grid,.about-inner,.cta-inner{grid-template-columns:1fr}
    .col{padding-right:0}
    .col+.col{border-left:0;border-top:1px solid rgba(246,244,239,.22);padding-left:0;margin-top:8px}
    .step+.step{border-left:0;border-top:1px solid var(--line);padding-left:0;margin-top:8px}
    .step{padding-bottom:22px}
    .about-inner,.area-grid,.cta-inner{gap:34px}
    .towns{grid-template-columns:1fr}
    .cta .meta{border-left:0;border-top:1.5px solid rgba(246,244,239,.35);padding-left:0;padding-top:22px}
    .foot .legal{text-align:left}
    .services,.how{padding-block:64px}
    .area{padding-block:64px}
    .about{padding-block:0 64px}
  }
  @media (prefers-reduced-motion:reduce){*{transition:none!important}}
