:root{
    --parchment:#EDE6D6;
    --parchment-deep:#E2D9C4;
    --ink:#2A2521;
    --pine:#1B332B;
    --forest:#2C4A3E;
    --forest-light:#3E5F51;
    --brass:#B8935A;
    --brass-light:#D3B37F;
    --line: rgba(42,37,33,0.16);
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--parchment);
    color:var(--ink);
    font-family:'Jost', sans-serif;
    font-weight:400;
    overflow-x:hidden;
  }
  h1,h2,h3, .display{
    font-family:'Fraunces', serif;
    font-weight:500;
    letter-spacing:-0.01em;
  }
  a{color:inherit; text-decoration:none;}
  img{max-width:100%; display:block;}
  .wrap{max-width:1080px; margin:0 auto; padding:0 32px;}

  /* texture */
  .grain{
    position:fixed; inset:0; pointer-events:none; z-index:40;
    opacity:0.05; mix-blend-mode:multiply;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  }

  /* nav */
  header{
    position:fixed; top:0; left:0; right:0; z-index:30;
    padding:22px 0;
    transition:background .4s ease, padding .4s ease, box-shadow .4s ease;
  }
  header.scrolled{
    background:rgba(237,230,214,0.92);
    backdrop-filter:blur(6px);
    padding:14px 0;
    box-shadow:0 1px 0 var(--line);
  }
  header .wrap{display:flex; align-items:center; justify-content:center;}
  .brand{
    font-family:'Fraunces', serif; font-weight:600; font-size:18px;
    color:var(--parchment);
    transition:color .4s ease;
  }
  header.scrolled .brand{color:var(--ink);}
  nav{display:flex; gap:34px;}
  nav a{
    font-family:'Fraunces', serif; font-weight:600;
    font-size:19px; letter-spacing:0.01em;
    color:#F2C94C; opacity:1;
    position:relative; padding-bottom:3px;
    transition:color .4s ease, opacity .2s ease;
  }
  header.scrolled nav a{color:#D4A72C;}
  nav a::after{
    content:""; position:absolute; left:0; right:100%; bottom:0; height:1px;
    background:currentColor; transition:right .25s ease;
  }
  nav a:hover{color:var(--parchment);}
  header.scrolled nav a:hover{color:var(--ink);}
  nav a:hover::after{right:0;}
  @media (max-width:700px){ nav{gap:18px;} }

  /* hero */
  .hero{
    min-height:100svh;
    position:relative;
    overflow:hidden;
    display:flex; flex-direction:column; justify-content:flex-end;
    padding-top:80px; padding-bottom:70px;
  }
  @media (max-width:700px){
    .hero{ min-height:min(100svh, 115vw); padding-top:64px; padding-bottom:56px; }
  }
  @media (max-width:420px){
    .hero{ min-height:min(100svh, 100vw); padding-top:56px; padding-bottom:44px; }
  }
  .hero-photo{
    position:absolute; inset:0; width:100%; height:100%;
    object-fit:cover; object-position:center 28%;
    z-index:0;
  }
  .hero-scrim{
    position:absolute; inset:0; z-index:1;
    background:linear-gradient(180deg, rgba(27,51,43,0.35) 0%, rgba(27,51,43,0.08) 18%, rgba(27,51,43,0.2) 55%, rgba(27,51,43,0.85) 100%);
  }
  .hero-content{position:relative; z-index:2;}
  .hero-actions{
    display:flex; gap:18px; align-items:center; flex-wrap:wrap;
    opacity:0; animation:rise .9s .3s ease forwards;
  }
  @keyframes rise{ from{opacity:0; transform:translateY(16px);} to{opacity:1; transform:translateY(0);} }

  .btn{
    display:inline-flex; align-items:center; gap:10px;
    padding:14px 26px; border-radius:2px;
    font-size:14px; font-weight:500;
    border:1px solid var(--brass-light);
    color:var(--parchment);
    cursor:pointer; background:transparent;
    transition:background .25s ease, color .25s ease, border-color .25s ease;
  }
  .btn:hover{background:var(--brass-light); color:var(--pine);}
  .btn.solid{background:var(--brass); color:var(--pine); border-color:var(--brass);}
  .btn.solid:hover{background:var(--brass-light); border-color:var(--brass-light);}
  .btn.dark{border-color:var(--forest); color:var(--ink);}
  .btn.dark:hover{background:var(--forest); color:var(--parchment);}

  .scroll-cue{
    position:absolute; bottom:34px; left:32px;
    font-size:12px; color:rgba(237,230,214,0.55);
    display:flex; align-items:center; gap:10px;
  }
  .scroll-cue .line{width:34px; height:1px; background:rgba(237,230,214,0.55);}

  /* section shell */
  section{padding:120px 0;}
  .eyebrow-row{
    display:flex; align-items:baseline; justify-content:space-between;
    margin-bottom:56px; flex-wrap:wrap; gap:16px;
  }
  .eyebrow-row h2{font-size:clamp(32px, 4vw, 46px);}
  .num{font-size:14px; color:var(--brass); font-family:'Jost'; }

  /* about */
  .about{background:var(--parchment);}
  .about-grid{
    display:grid; grid-template-columns:1.1fr 0.9fr; gap:80px; align-items:start;
  }
  @media (max-width:800px){ .about-grid{grid-template-columns:1fr;} }
  .about p{font-size:17px; line-height:1.85; color:var(--ink); max-width:52ch;}
  .about p + p{margin-top:20px;}
  .lineup{
    border-top:1px solid var(--line);
  }
  .lineup-row{
    display:flex; justify-content:space-between; padding:16px 0;
    border-bottom:1px solid var(--line);
    font-size:15px;
  }
  .lineup-row span:first-child{font-family:'Fraunces'; font-weight:500;}
  .lineup-row span:last-child{color:rgba(42,37,33,0.6);}

  /* music */
  .music{background:var(--pine); color:var(--parchment);}
  .music .eyebrow-row h2{color:var(--parchment);}
  .music .num{color:var(--brass-light);}
  .track{
    display:grid; grid-template-columns:44px 1fr auto auto; gap:20px; align-items:center;
    padding:20px 0; border-bottom:1px solid rgba(237,230,214,0.14);
    cursor:pointer;
  }
  .track:first-child{border-top:1px solid rgba(237,230,214,0.14);}
  .play-btn{
    width:40px; height:40px; border-radius:50%;
    border:1px solid rgba(237,230,214,0.4);
    display:flex; align-items:center; justify-content:center;
    transition:background .2s ease, border-color .2s ease;
    flex-shrink:0;
  }
  .track.playing .play-btn{background:var(--brass); border-color:var(--brass);}
  .play-btn svg{width:13px; height:13px; fill:var(--parchment);}
  .track.playing .play-btn svg{fill:var(--pine);}
  .track-info .t-title{font-family:'Fraunces'; font-weight:500; font-size:17px;}
  .track-info .t-sub{font-size:13px; color:rgba(237,230,214,0.55); margin-top:3px;}
  .bars{
    display:flex; align-items:flex-end; gap:3px; height:18px; width:26px;
  }
  .bars span{
    width:3px; background:var(--brass-light); border-radius:1px; height:4px;
    transition:height .2s ease;
  }
  .track.playing .bars span{animation:bar 0.9s ease-in-out infinite;}
  .track.playing .bars span:nth-child(1){animation-delay:0s;}
  .track.playing .bars span:nth-child(2){animation-delay:.15s;}
  .track.playing .bars span:nth-child(3){animation-delay:.3s;}
  @keyframes bar{ 0%,100%{height:4px;} 50%{height:18px;} }
  .t-len{font-size:13px; color:rgba(237,230,214,0.5); font-variant-numeric:tabular-nums;}
  .music-note{
    margin-top:28px; font-size:13px; color:rgba(237,230,214,0.45);
  }
  .player-controls{
    display:flex; align-items:center; justify-content:center; gap:16px;
    margin-top:28px; padding-top:28px; border-top:1px solid rgba(237,230,214,0.14);
  }
  .ctrl-btn{
    width:44px; height:44px; border-radius:50%;
    border:1px solid rgba(237,230,214,0.4);
    display:flex; align-items:center; justify-content:center;
    background:transparent; cursor:pointer;
    transition:background .2s ease, border-color .2s ease;
    flex-shrink:0;
  }
  .ctrl-btn:hover{border-color:var(--brass-light);}
  .ctrl-btn svg{width:15px; height:15px; fill:var(--parchment);}
  .ctrl-btn.ctrl-play{
    width:52px; height:52px;
    background:var(--brass); border-color:var(--brass);
  }
  .ctrl-btn.ctrl-play svg{fill:var(--pine); width:17px; height:17px;}
  .ctrl-btn.ctrl-play:hover{background:var(--brass-light); border-color:var(--brass-light);}
  .ctrl-btn:disabled{opacity:0.35; cursor:default;}
  .ctrl-btn:disabled:hover{border-color:rgba(237,230,214,0.4);}
  .now-playing{
    text-align:center; font-size:13px; color:rgba(237,230,214,0.55);
    margin-top:14px; min-height:16px;
  }
  .now-playing span{color:var(--brass-light); font-family:'Fraunces'; font-weight:500;}

  /* shows */
  .shows{background:var(--parchment);}
  .show-row{
    display:grid; grid-template-columns:110px 1fr auto; gap:24px; align-items:center;
    padding:22px 0; border-bottom:1px solid var(--line);
  }
  .show-row:first-of-type{border-top:1px solid var(--line);}
  .show-date{font-family:'Fraunces'; font-size:16px;}
  .show-date .mo{display:block; font-size:11px; letter-spacing:.03em; color:var(--brass); margin-bottom:2px; font-family:'Jost';}
  .show-venue{font-size:16px;}
  .show-city{font-size:13px; color:rgba(42,37,33,0.55); margin-top:3px;}
  .show-address{font-size:12px; color:rgba(42,37,33,0.45); margin-top:2px;}
  .show-row .btn{padding:10px 20px; font-size:13px;}
  .show-row.sold .btn{opacity:.45; pointer-events:none; border-color:var(--line); color:rgba(42,37,33,0.45);}
  .sold-tag{font-size:12px; color:var(--brass);}

  .calendar-link-row{margin-top:44px;}

  /* gallery / quote */
  .quote-section{
    background:var(--forest); color:var(--parchment);
    padding:130px 0;
  }
  .quote-section blockquote{
    font-family:'Fraunces'; font-style:italic; font-weight:500;
    font-size:clamp(26px, 3.4vw, 40px); line-height:1.4;
    max-width:820px;
  }
  .quote-section cite{
    display:block; margin-top:28px; font-style:normal; font-size:14px;
    color:rgba(237,230,214,0.6);
  }

  /* contact */
  .contact{background:var(--parchment); text-align:left;}
  .contact-grid{
    display:grid; grid-template-columns:1.1fr 0.9fr; gap:80px; align-items:end;
  }
  @media (max-width:800px){ .contact-grid{grid-template-columns:1fr; gap:56px;} }
  .contact h2{font-size:clamp(34px,5vw,54px); max-width:14ch; line-height:1.05;}
  .contact-links{display:flex; flex-direction:column; gap:2px; margin-top:34px;}
  .contact-links a{
    font-size:15px; padding:12px 0; border-bottom:1px solid var(--line);
    display:flex; justify-content:space-between; align-items:center;
  }
  .contact-links a span.arrow{transition:transform .2s ease;}
  .contact-links a:hover span.arrow{transform:translateX(5px);}

  .mail-signup{margin-top:34px; max-width:340px;}
  .mail-label{
    display:block; font-size:14px; color:rgba(42,37,33,0.6); margin-bottom:10px;
  }
  .mail-row{display:flex; gap:10px;}
  .mail-row input{
    flex:1; min-width:0; padding:12px 14px; border-radius:2px;
    border:1px solid var(--line); background:transparent; color:var(--ink);
    font-family:'Jost', sans-serif; font-size:14px;
  }
  .mail-row input:focus{outline:none; border-color:var(--brass);}
  .mail-row .btn{padding:12px 20px; font-size:14px; white-space:nowrap;}
  .mail-msg{font-size:13px; margin-top:10px; min-height:16px; color:var(--forest);}
  .mail-msg.error{color:#a33;}

  .card-block{
    background:var(--pine); color:var(--parchment); padding:40px;
    border-radius:2px;
  }
  .card-block .brand-mark{
    font-family:'Fraunces'; font-size:24px; font-weight:500; margin-bottom:8px;
  }
  .card-block .tag{font-size:13px; color:rgba(237,230,214,0.6); margin-bottom:26px;}
  .qr{
    width:88px; height:88px; background:var(--parchment); border-radius:2px;
    display:flex; align-items:center; justify-content:center; margin-bottom:16px;
  }
  .qr svg{width:70px; height:70px;}
  .card-block .qr-label{font-size:12px; color:rgba(237,230,214,0.55);}

  footer{
    padding:30px 0; text-align:left; font-size:12px; color:rgba(42,37,33,0.5);
    border-top:1px solid var(--line);
  }
  footer .wrap{display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px;}
.cal-hero{background:var(--parchment); padding:160px 0 40px;}

  /* quick jump */
  .cal-jump{
    display:flex; flex-wrap:wrap; gap:8px; margin-bottom:56px;
    padding-bottom:40px; border-bottom:1px solid var(--line);
  }
  .jump-pill{
    padding:8px 16px; border-radius:20px; border:1px solid var(--line);
    font-size:13px; color:rgba(42,37,33,0.65); transition:all .2s ease;
  }
  .jump-pill:hover{border-color:var(--brass); color:var(--ink);}
  .jump-pill.has-show{border-color:var(--brass); color:var(--ink);}
  .jump-pill.is-next{background:var(--forest); border-color:var(--forest); color:var(--parchment);}

  /* calendar section */
  .cal-section{background:var(--parchment); padding-top:0; padding-bottom:80px;}

  .cal-month{
    display:grid; grid-template-columns:340px 1fr; gap:48px;
    padding:56px 0; border-bottom:1px solid var(--line);
    scroll-margin-top:100px;
  }
  .cal-month:first-child{border-top:1px solid var(--line);}
  @media (max-width:800px){
    .cal-month{grid-template-columns:1fr; gap:28px;}
  }

  .cal-month-head{
    display:flex; align-items:baseline; gap:12px; margin-bottom:18px; flex-wrap:wrap;
  }
  .cal-month-title{font-size:22px;}
  .next-badge{
    font-size:11px; letter-spacing:.05em; text-transform:uppercase;
    color:var(--brass); border:1px solid var(--brass); border-radius:20px;
    padding:3px 10px;
  }

  .cal-grid{
    display:grid; grid-template-columns:repeat(7,1fr);
    border-top:1px solid var(--line); border-left:1px solid var(--line);
  }
  .cal-weekday{
    padding:6px 4px; font-size:9px; letter-spacing:.06em; text-transform:uppercase;
    color:var(--brass); text-align:center;
    border-right:1px solid var(--line); border-bottom:1px solid var(--line);
  }
  .cal-day{
    min-height:52px; padding:6px; position:relative;
    border-right:1px solid var(--line); border-bottom:1px solid var(--line);
    font-size:12px;
  }
  .cal-day.pad{opacity:.3;}
  .cal-day .day-num{font-family:'Fraunces'; font-weight:500;}
  .cal-day.today .day-num{
    display:inline-block; text-decoration:underline; text-decoration-color:var(--brass); text-underline-offset:3px;
  }
  .cal-day.has-show{background:var(--parchment-deep); cursor:pointer; transition:background .2s ease;}
  .cal-day.has-show:hover{background:var(--brass-light);}
  .cal-day.has-show.selected{background:var(--pine); color:var(--parchment);}
  .cal-day .dot{
    position:absolute; bottom:6px; left:6px; width:5px; height:5px; border-radius:50%;
    background:var(--brass);
  }
  .cal-day.selected .dot{background:var(--brass-light);}

  /* per-month agenda (venue / date / directions) */
  .cal-month-agenda{display:flex; flex-direction:column; justify-content:center;}
  .show-row{
    display:grid; grid-template-columns:90px 1fr auto; gap:20px; align-items:center;
    padding:18px 0; border-bottom:1px solid var(--line);
    transition:background .3s ease;
  }
  .show-row:first-of-type{border-top:1px solid var(--line);}
  .show-row:last-of-type{border-bottom:none;}
  .show-date{font-family:'Fraunces'; font-size:16px;}
  .show-date .mo{display:block; font-size:11px; letter-spacing:.03em; color:var(--brass); margin-bottom:2px; font-family:'Jost';}
  .show-venue{font-size:16px;}
  .show-city{font-size:13px; color:rgba(42,37,33,0.55); margin-top:3px;}
  .show-address{font-size:12px; color:rgba(42,37,33,0.45); margin-top:2px;}
  .show-row .btn{padding:9px 18px; font-size:13px; color:var(--ink); white-space:nowrap;}
  @media (max-width:600px){
    .show-row{grid-template-columns:60px 1fr; row-gap:10px;}
    .show-row .btn{grid-column:2; justify-self:start;}
  }
  .show-row.flash{animation:flash 1.4s ease;}
  @keyframes flash{0%{background:var(--brass-light);} 100%{background:transparent;}}
  .no-shows{color:rgba(42,37,33,0.45); font-size:14px; font-style:italic;}

  /* secret weapon (Luther) */
  .secret-weapon{
    margin-top:96px; display:grid; grid-template-columns:320px 1fr; gap:56px; align-items:center;
    background:var(--pine); color:var(--parchment); padding:48px; border-radius:2px;
  }
  .sw-photo img{width:100%; height:auto; border-radius:2px;}
  .sw-eyebrow{
    display:inline-block; font-size:11px; letter-spacing:.08em; text-transform:uppercase;
    color:var(--brass-light); border:1px solid var(--brass-light); border-radius:20px;
    padding:3px 12px; margin-bottom:18px;
  }
  .secret-weapon h3{font-size:clamp(28px, 3.4vw, 40px); line-height:1.15; margin-bottom:18px;}
  .secret-weapon p{font-size:16px; line-height:1.8; color:rgba(237,230,214,0.85); max-width:52ch;}
  .secret-weapon p.sw-fine{margin-top:16px; font-size:13px; font-style:italic; color:var(--brass-light);}
  @media (max-width:800px){
    .secret-weapon{grid-template-columns:1fr; gap:28px; padding:28px; margin-top:64px;}
    .sw-photo{max-width:280px; margin:0 auto;}
  }

  /* contact form (replaces the mailto link) */
  .contact-links a.open span.arrow{transform:rotate(90deg);}
  .contact-form{
    margin:6px 0 10px; padding:22px 0 8px; max-width:440px;
    border-bottom:1px solid var(--line);
  }
  .contact-form[hidden]{display:none;}
  .contact-form label{
    display:block; font-size:14px; color:rgba(42,37,33,0.6);
    margin:14px 0 8px;
  }
  .contact-form label:first-child{margin-top:0;}
  .contact-form .req{color:var(--brass);}
  .contact-form input,
  .contact-form textarea{
    width:100%; padding:12px 14px; border-radius:2px;
    border:1px solid var(--line); background:transparent; color:var(--ink);
    font-family:'Jost', sans-serif; font-size:15px;
  }
  .contact-form textarea{min-height:130px; resize:vertical; line-height:1.6;}
  .contact-form input:focus,
  .contact-form textarea:focus{outline:none; border-color:var(--brass);}
  .contact-form .invalid{border-color:#a33;}
  .contact-form .cf-hp{position:absolute; left:-9999px; width:1px; height:1px; opacity:0;}
  .cf-actions{display:flex; align-items:center; gap:18px; margin-top:18px;}
  .cf-actions .btn{padding:12px 22px; font-size:14px;}
  .cf-actions .btn:disabled{opacity:.6; cursor:default;}
  .cf-cancel{
    background:none; border:none; cursor:pointer; padding:0;
    font-family:'Jost', sans-serif; font-size:14px; color:rgba(42,37,33,0.6);
  }
  .cf-cancel:hover{color:var(--ink);}
  .cf-msg{font-size:13px; margin-top:12px; min-height:16px; color:var(--forest);}
  .cf-msg.error{color:#a33;}

  /* live recordings sub-section */
  .live-head{
    font-size:clamp(22px, 2.6vw, 28px); color:var(--parchment);
    margin:64px 0 22px;
  }
  .live-note{margin-top:18px; font-style:italic;}
