  :root{
    --deep:#0c1410; --moss:#1d3226; --canopy:#2f4a37; --bark:#4a3b2e;
    --sage:#8ba888; --fern:#a9c4a0; --mist:#dfe7d8;
    --sun:#f4e7bf; --sun-2:#e9d49a; --amber:#d9a441; --lantern:#E8B45A;
    --text:#ecefe4; --muted:rgba(236,239,228,0.60); --faint:rgba(236,239,228,0.34);
    --line:rgba(236,239,228,0.12); --line-2:rgba(236,239,228,0.22);
    --glass:rgba(13,21,16,0.62); --glass-hov:rgba(18,30,22,0.74);
    --serif:'Fraunces',Georgia,serif; --sans:'Instrument Sans',system-ui,sans-serif; --mono:'Space Mono',monospace;
    --ease:cubic-bezier(.2,.8,.2,1); --spring:cubic-bezier(.34,1.56,.64,1);
    --focus:#3A8A9C;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html.lenis,html.lenis body{height:auto}
  .lenis.lenis-smooth{scroll-behavior:auto!important}
  html{scroll-behavior:smooth}
  body{background:var(--deep);color:var(--text);font-family:var(--sans);font-size:15.5px;
    line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased}
  a{color:inherit;text-decoration:none}
  :focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:6px}
  .vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

  /* ---------- the forest (engine layers) ---------- */
  #sky{position:fixed;inset:0;z-index:-7;
    background:radial-gradient(130% 100% at 50% -20%, #eaf0e0 0%, #c7d6bd 16%, #7c9a76 34%, #3d5b43 56%, #15251a 82%, #0c1410 100%)}
  #fog{position:fixed;inset:0;z-index:-6;opacity:.9}
  #rays{position:fixed;inset:0;z-index:-5;opacity:.85}
  #trees-far,#trees-mid,#trees-near{position:fixed;left:0;right:0;bottom:0;width:100%;pointer-events:none;will-change:transform}
  #trees-far{z-index:-4;opacity:.55}#trees-mid{z-index:-3;opacity:.8}#trees-near{z-index:-2}
  #life{position:fixed;inset:0;z-index:-2;pointer-events:none}
  #motes{position:fixed;inset:0;z-index:-1;pointer-events:none}
  .depth-blur{position:fixed;z-index:-1;inset:auto 0 0 0;height:40%;pointer-events:none}
  .depth-blur>div,.depth-blur::before{position:absolute;inset:0}
  .depth-blur::before{content:"";backdrop-filter:blur(.6px);-webkit-backdrop-filter:blur(.6px);
    -webkit-mask:linear-gradient(to top,#0000 0%,#000 18%,#000 34%,#0000 50%);
            mask:linear-gradient(to top,#0000 0%,#000 18%,#000 34%,#0000 50%)}
  .depth-blur>div:nth-of-type(1){backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);
    -webkit-mask:linear-gradient(to top,#0000 30%,#000 50%,#000 68%,#0000 84%);
            mask:linear-gradient(to top,#0000 30%,#000 50%,#000 68%,#0000 84%)}
  .depth-blur>div:nth-of-type(2){backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);
    -webkit-mask:linear-gradient(to top,#0000 58%,#000 78%,#000 100%);
            mask:linear-gradient(to top,#0000 58%,#000 78%,#000 100%)}
  #floorfade{position:fixed;left:0;right:0;bottom:0;height:36vh;z-index:-1;pointer-events:none;
    background:linear-gradient(180deg,transparent,rgba(12,20,16,.8) 78%,#0c1410)}
  #scrim{position:fixed;inset:0;z-index:-1;pointer-events:none;
    background:radial-gradient(130% 95% at 50% 30%, transparent 40%, rgba(12,20,16,.55) 100%)}
  #grain{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.045;mix-blend-mode:overlay}
  #progress{position:fixed;top:0;left:0;height:2px;width:0;z-index:60;
    background:linear-gradient(90deg,var(--sage),var(--sun),var(--amber))}

  /* ---------- layout & nav ---------- */
  .col{width:100%;max-width:760px;margin:0 auto;padding:0 20px}
  nav.site{position:absolute;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;
    justify-content:space-between;padding:22px clamp(20px,4vw,44px);font-size:13px}
  .wordmark{font-family:var(--serif);font-weight:500;font-size:29px;display:inline-flex;align-items:center;gap:11px;color:var(--text)}
  .wordmark em{font-style:italic;font-weight:400;color:inherit}
  .wordmark .icn{color:var(--sage);width:20px;height:20px}
  .sound{display:inline-flex;align-items:center;gap:9px;color:var(--muted);border:1px solid var(--line);
    border-radius:100px;padding:9px 15px;min-height:44px;cursor:pointer;font-size:12px;letter-spacing:.03em;
    background:rgba(29,50,38,.28);backdrop-filter:blur(12px) saturate(150%);
    -webkit-backdrop-filter:blur(12px) saturate(150%);transition:color .4s,border-color .4s;font-family:var(--sans)}
  .sound:hover{color:var(--text);border-color:var(--faint)}
  .sound .wave{display:flex;align-items:flex-end;gap:2px;height:12px}
  .sound .wave i{width:2px;background:var(--sage);border-radius:2px;height:4px}
  .sound.on .wave i{animation:eq 1.1s ease-in-out infinite}
  .sound.on .wave i:nth-child(2){animation-delay:.18s}.sound.on .wave i:nth-child(3){animation-delay:.36s}
  @keyframes eq{0%,100%{height:3px}50%{height:12px}}

  main{padding:120px 0 20px}
  section{margin:64px 0}
  .kicker{font-family:var(--mono);font-size:12px;letter-spacing:.26em;text-transform:uppercase;
    color:var(--mist);display:flex;align-items:center;gap:12px;margin-bottom:16px}  /* wayfinding, not decoration: mist, was sage@11px */
  .kicker::before{content:"";width:28px;height:1px;background:var(--sage);opacity:.6}
  .icn{width:15px;height:15px;flex:none;stroke:currentColor;fill:none;stroke-width:2;
    stroke-linecap:round;stroke-linejoin:round;display:inline-block;vertical-align:-2px}

  /* ---------- masthead ---------- */
  .masthead{margin:0 0 44px}
  .masthead h2.display{font-family:var(--serif);font-weight:300;font-size:clamp(2.6rem,7.5vw,4.8rem);
    line-height:1.02;letter-spacing:-0.02em;margin:18px 0 20px;max-width:16ch}
  .masthead h2.display em{font-style:italic;font-weight:400;color:var(--sun)}
  .masthead .l{display:block;overflow:hidden}
  .masthead .l>span{display:block;transform:translateY(105%);transition:transform 1.6s var(--ease)}
  .masthead .l:nth-child(2)>span{transition-delay:.15s}
  body.in .masthead .l>span{transform:translateY(0)}
  .masthead p{font-family:var(--serif);font-weight:300;font-size:clamp(1.02rem,1.5vw,1.25rem);
    color:var(--mist);max-width:46ch;opacity:0;transform:translateY(14px);
    transition:opacity 1.6s ease .6s,transform 1.6s ease .6s;line-height:1.65}
  body.in .masthead p{opacity:.92;transform:none}

  /* ---------- reveal (Grove pace) ---------- */
  .reveal{opacity:0;transform:translateY(30px);transition:opacity 1.4s ease,transform 1.4s var(--ease)}
  .reveal.seen{opacity:1;transform:none}
  @supports (animation-timeline: view()){
    body.sda .reveal{opacity:0;transform:translateY(30px);transition:none;
      animation:rise-in linear both;animation-timeline:view();animation-range:entry 5% entry 42%}
  }
  @keyframes rise-in{to{opacity:1;transform:none}}
  body.still .reveal{opacity:1!important;transform:none!important;transition:none!important;animation:none!important}

  /* ---------- stub card, Grove skin ---------- */
  .stub{display:block;position:relative;border:1px solid var(--line);border-radius:20px;overflow:hidden;
    background:var(--glass);backdrop-filter:blur(14px) saturate(150%) brightness(0.96);
    -webkit-backdrop-filter:blur(14px) saturate(150%) brightness(0.96);
    transition:transform .9s var(--ease),border-color .8s,background .8s}
  .stub::after{content:"";position:absolute;inset:0;border-radius:20px;pointer-events:none;
    background:linear-gradient(140deg,rgba(255,255,255,.09),transparent 42%);opacity:.7}
  .stub:hover{transform:translateY(-5px);border-color:var(--faint);background:var(--glass-hov)}
  .stub:active{transform:scale(.975)}
  .banner{position:relative;overflow:hidden;
    background:linear-gradient(165deg,#c2d2b4 -18%,#8fae87 6%,#4d6850 36%,#26402e 70%,#0f1a10 104%)}
  .banner::before{content:"";position:absolute;inset:-40%;filter:blur(30px);opacity:.42;pointer-events:none;
    animation:dawnDrift 26s var(--ease) infinite alternate;
    background:radial-gradient(42% 55% at 28% 25%, var(--g1), transparent 70%),
               radial-gradient(46% 60% at 76% 60%, var(--g2), transparent 70%)}
  .hero-stub .banner::before{animation:dawnDrift 19s var(--ease) infinite alternate}
  @keyframes dawnDrift{from{transform:translate(-4%,-3%) rotate(-2deg)}to{transform:translate(4%,4%) rotate(2deg)}}
  .hero-stub .banner{height:360px}
  .feed .banner{height:184px}
  .banner .sprig{position:absolute;top:12px;right:14px;width:58px;height:58px;opacity:.55;
    stroke:var(--sun);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .feed .banner .sprig{width:38px;height:38px;top:9px;right:11px}
  .eyebrow-pill{position:absolute;top:12px;left:14px;display:inline-flex;align-items:center;gap:7px;
    font-family:var(--mono);font-size:10px;letter-spacing:1.8px;color:var(--mist);
    background:rgba(10,17,12,.6);border:1px solid rgba(223,231,216,.3);border-radius:100px;
    padding:6px 12px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
  .eyebrow-pill .icn{width:11px;height:11px;color:var(--sun-2)}
  .banner::after{content:"";position:absolute;left:0;right:0;bottom:0;height:58%;pointer-events:none;z-index:1;
    background:linear-gradient(180deg,rgba(6,10,7,0) 0%,rgba(6,10,7,.55) 55%,rgba(6,10,7,.82) 100%)}
  .banner .eyebrow-pill,.banner .sprig{z-index:2}
  .banner h2{position:absolute;z-index:2;left:16px;right:16px;bottom:12px;font-family:var(--serif);
    font-weight:400;color:#f6f2e4;text-shadow:0 1px 12px rgba(6,10,7,.6);line-height:1.1;letter-spacing:-0.01em}
  .banner h2 em{font-style:italic;color:var(--sun)}
  .hero-stub .banner h2{font-size:clamp(1.5rem,4.4vw,1.9rem);font-weight:300}
  .feed .banner h2{font-size:17.5px}
  .hero-stub .banner h2 .wipe{display:inline-block;clip-path:inset(0 100% 0 0)}
  .hero-stub.played .banner h2 .wipe{animation:titleWipe 1.1s var(--ease) .4s forwards}
  @keyframes titleWipe{to{clip-path:inset(0 0 0 0)}}

  .perf{position:relative;border-top:1px solid var(--line)}
  .perf::before,.perf::after{content:none}
  

  .stub-body{padding:15px 18px 17px}
  .meta{display:flex;align-items:center;gap:9px;color:var(--mist);font-size:13.5px;margin-bottom:7px}
  .meta .icn{color:var(--sage)}
  .social{display:flex;align-items:center;gap:10px;margin:11px 0 13px;min-height:30px}
  .avstack{display:flex}
  .avstack .av{width:28px;height:28px;border-radius:50%;margin-left:-9px;
    background:linear-gradient(135deg,var(--moss),var(--sage));border:2px solid rgba(20,32,24,.9);
    opacity:0;transform:scale(.4)}
  .avstack .av:first-child{margin-left:0}
  .seen .avstack .av,.sda .avstack .av{animation:avatarIn .6s var(--spring) forwards}
  .avstack .av:nth-child(2){animation-delay:.1s}.avstack .av:nth-child(3){animation-delay:.2s}
  @keyframes avatarIn{to{opacity:1;transform:scale(1)}}
  .coming{font-size:12.5px;color:rgba(236,239,228,0.8)}
  .spots{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;
    color:var(--lantern);margin-left:auto}
  .chip-full{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;
    color:var(--sage);border:1px solid var(--sage);border-radius:100px;padding:4px 10px;margin-left:auto}
  .buyrow{display:flex;align-items:center;gap:14px;justify-content:space-between}
  .price{font-family:var(--serif);font-weight:400;font-size:22px;color:var(--lantern);line-height:1.1;white-space:nowrap}
  .price small{display:block;font-family:var(--sans);font-weight:400;font-size:12px;color:var(--muted);margin-top:3px;white-space:nowrap;line-height:1.3}
  .btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;
    border-radius:100px;padding:14px 28px;font-family:var(--serif);font-style:italic;font-weight:400;
    font-size:15.5px;cursor:pointer;border:1px solid var(--line-2);color:var(--text);
    background:rgba(29,50,38,.42);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    transition:transform .5s var(--ease),border-color .4s,background .4s,color .4s}
  .btn:active{transform:scale(.96)}
  .btn-primary{flex:0 1 auto;max-width:55%;text-align:center;border-color:rgba(233,212,154,.5);color:var(--sun);
    animation:breathe 6.5s ease-in-out infinite}
  .btn-primary:hover{border-color:var(--sun-2);background:rgba(45,64,49,.55)}
  @keyframes breathe{0%,100%{box-shadow:0 0 0 0 rgba(244,231,191,0)}50%{box-shadow:0 0 24px 2px rgba(244,231,191,.28)}}
  .btn-primary span{display:inline-block;transition:transform .5s var(--ease)}
  .btn-secondary{color:var(--sage);border-color:rgba(139,168,136,.5)}
  .btn-secondary:hover{color:var(--fern);border-color:var(--fern)}

  /* ---------- chips ---------- */
  .chips{display:flex;gap:9px;overflow-x:auto;padding:2px 2px 12px;margin-bottom:10px;scrollbar-width:none}
  .chips::-webkit-scrollbar{display:none}
  .chip{flex:none;display:inline-flex;align-items:center;gap:7px;border-radius:100px;padding:9px 16px;
    font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
    color:rgba(236,239,228,0.72);background:rgba(16,26,20,.5);border:1px solid var(--line);cursor:pointer;
    min-height:44px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
  .chip .icn{width:12px;height:12px;display:none;color:var(--sun-2)}
  .chip[aria-pressed="true"]{border-color:rgba(233,212,154,.55);color:var(--sun);background:rgba(37,62,46,.4)}
  .chip[aria-pressed="true"] .icn{display:inline-block}
  .chip.pop{animation:chipPop .38s var(--spring)}
  @keyframes chipPop{0%{transform:scale(.9)}60%{transform:scale(1.06)}100%{transform:scale(1)}}
  .feedlist{display:flex;flex-direction:column;gap:20px}
  .more{display:flex;justify-content:center;margin-top:22px}

  /* ---------- the space / hosts ---------- */
  .space-card{border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--glass);
    backdrop-filter:blur(14px) saturate(150%) brightness(0.96);-webkit-backdrop-filter:blur(14px) saturate(150%) brightness(0.96)}
  .space-photo{height:160px;position:relative;
    background:linear-gradient(165deg,#dfe7d8 -20%,#a9c4a0 4%,#5d7a5b 34%,#2f4a37 70%,#15251a 106%)}
  .space-photo::after{content:"";position:absolute;inset:0;
    background:radial-gradient(55% 75% at 70% 25%, rgba(244,231,191,.28), transparent 70%)}
  .space-body{padding:18px}
  .space-body p{font-family:var(--serif);font-weight:300;color:var(--mist);font-size:1.02rem;line-height:1.62}
  .addr{display:flex;align-items:center;gap:9px;margin-top:14px;font-size:13.5px;color:var(--text);min-height:44px}
  .addr .icn{color:var(--sage)}
  /* v1.2: --faint (alpha .34) measures 2.8:1 — it fails AA the moment it carries
     real words. It stays for hairlines and decoration; every INFORMATIONAL label
     that used it moves to --muted (6.3:1). See decisions log. */
  .addr small{color:var(--muted);margin-left:4px}
  .hosts{display:flex;gap:20px;overflow-x:auto;padding:6px 2px 10px;scrollbar-width:none}
  .hosts::-webkit-scrollbar{display:none}
  .host{flex:none;display:flex;flex-direction:column;align-items:center;gap:9px;width:78px;text-align:center}
  .host .hav{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,var(--moss),var(--sage));
    display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:500;
    font-size:19px;color:#15170F;border:2px solid var(--line);
    animation:hostFloat 7s ease-in-out infinite;transition:box-shadow .5s ease,transform .5s var(--ease)}
  .hav-img{background-size:cover;background-position:center;color:transparent}
  .host:nth-child(2) .hav{animation-delay:1.1s}.host:nth-child(3) .hav{animation-delay:2.3s}
  .host:nth-child(4) .hav{animation-delay:3.4s}.host:nth-child(5) .hav{animation-delay:4.6s}
  .host:nth-child(6) .hav{animation-delay:5.7s}
  @keyframes hostFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
  .host:hover .hav{transform:translateY(-3px) scale(1.06);
    box-shadow:0 0 0 2px rgba(232,180,90,.55),0 8px 20px rgba(0,0,0,.35)}
  .host .hname{font-size:12px;color:var(--mist);line-height:1.3}

  /* ---------- footer ---------- */
  footer.site{margin-top:52px;padding:0 0 40px}
  .closing-line{font-family:var(--serif);font-weight:300;text-align:center;
    font-size:clamp(1.9rem,5.5vw,3.2rem);letter-spacing:-0.02em;line-height:1.12;margin-bottom:40px}
  .closing-line em{font-style:italic;color:var(--sun)}
  .channel{border:1px solid var(--line);border-radius:20px;background:var(--glass);padding:20px 18px;margin-bottom:24px;
    backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%)}
  .channel h2{font-family:var(--serif);font-weight:400;font-size:19px;margin-bottom:7px}
  .channel p{font-size:13.5px;color:rgba(236,239,228,0.7);margin-bottom:15px;max-width:52ch}
  .quietlinks{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
  .findticket{font-size:13px;color:rgba(236,239,228,0.7);display:inline-flex;align-items:center;gap:8px;min-height:44px;transition:color .4s}
  .findticket:hover{color:var(--text)}
  .findticket .icn{color:var(--sage)}
  .housekeeping{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--muted);margin-top:16px}
  .housekeeping a{color:var(--muted)}.housekeeping a:hover{color:var(--text)}

  /* calendar */
  /* ---- the agenda programme (v1.7) — day rail + compact rows ---- */
  .mo-head{display:flex;align-items:baseline;gap:12px;margin:20px 2px 10px;
    font-family:var(--serif);font-style:italic;font-weight:300;font-size:1.5rem;color:var(--muted)}  /* quieter than the rows it introduces */
  .mo-head small{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--muted)}
  a.arow{display:grid;grid-template-columns:54px 1fr;gap:12px;margin-bottom:12px;
    text-decoration:none;color:inherit}
  /* rows carry .stub for the spec/tracker contract, but the CARD look belongs
     to .acard alone — undo the .stub base glass so the day rail sits on the
     page, not inside a second box */
  a.arow.stub{border:0;border-radius:0;overflow:visible;background:none;
    backdrop-filter:none;-webkit-backdrop-filter:none}
  a.arow.stub:hover{transform:none;border:0;background:none}
  a.arow.stub::after{content:none}  /* the card-sheen pseudo would ghost a 20px box over the rail */
  .arow .rail{text-align:center;padding-top:13px}
  .arow .rail b{display:block;font-family:var(--serif);font-weight:400;font-size:1.4rem;color:var(--text);line-height:1.05}
  .arow .rail span{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--muted)}
  .acard{display:flex;flex-direction:column;gap:8px;padding:15px 18px;border:1px solid var(--line);
    border-radius:16px;background:var(--glass);
    transition:transform .35s var(--ease),border-color .35s,background .35s}
  .arow:hover .acard{transform:translateY(-3px);border-color:var(--faint);background:var(--glass-hov)}
  .acard h3{font-family:var(--serif);font-weight:400;font-size:1.16rem;letter-spacing:.005em;color:var(--sun);margin:0}
  .ameta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;
    font-family:var(--mono);font-size:12px;letter-spacing:.05em;color:var(--muted)}
  .ameta .fchip{display:inline-flex;align-items:center;gap:7px;text-transform:uppercase;letter-spacing:.12em;color:var(--mist)}
  .ameta .fchip i{width:7px;height:7px;border-radius:50%;display:inline-block}
  .ameta .px{margin-left:auto;color:var(--sun-2)}
  .cal{border:1px solid var(--line);border-radius:20px;background:var(--glass);padding:18px 18px 14px;
    backdrop-filter:blur(14px) saturate(150%) brightness(0.96);-webkit-backdrop-filter:blur(14px) saturate(150%) brightness(0.96)}
  .cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:10px}
  .cal-head .mo{font-family:var(--serif);font-weight:300;font-size:1.45rem;letter-spacing:-0.01em;text-align:center;flex:1}
  .cal-head .yr{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.12em;margin-left:8px}
  .cal-nav{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;
    border-radius:50%;border:1px solid var(--line);background:rgba(16,26,20,.5);color:var(--mist);
    cursor:pointer;transition:border-color .3s,color .3s}
  .cal-nav:hover:not(:disabled){border-color:var(--sun-2);color:var(--sun)}
  .cal-nav:disabled{opacity:.3;cursor:default}
  .cal-nav .icn{width:16px;height:16px}
  .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
  .cal-grid .wd{font-family:var(--mono);font-size:11px;color:var(--mist);text-align:center;letter-spacing:.1em;padding:4px 0}
  .cal-day{height:44px;display:flex;align-items:center;justify-content:center;font-size:13.5px;
    color:rgba(236,239,228,0.55);border-radius:10px;position:relative;border:1px solid transparent;
    background:none;font-family:var(--sans)}
  .cal-day.past{opacity:.35}
  .cal-day.today{border-color:var(--line-2);color:var(--text)}
  button.cal-day.has{color:var(--text);background:rgba(37,62,46,.45);border:1px solid rgba(233,212,154,.32);
    cursor:pointer;transition:border-color .3s,background .3s}
  button.cal-day.has:hover{border-color:var(--sun-2);background:rgba(45,72,53,.55)}
  .cal-day.has::after{content:"";position:absolute;bottom:5px;left:50%;transform:translateX(-50%);
    width:4px;height:4px;border-radius:50%;background:var(--lantern)}
  .cal-note{font-family:var(--mono);font-size:12.5px;letter-spacing:.06em;color:var(--muted);margin-top:12px}
  .cal-note .join-wa,#feed .join-wa{color:var(--fern);text-decoration:underline;text-underline-offset:3px}
  .cal{position:relative}
  .cal-pop{position:absolute;z-index:5;min-width:198px;max-width:244px;padding:12px 14px;border-radius:14px;
    border:1px solid rgba(232,180,90,.4);background:rgba(9,15,11,.94);
    backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    box-shadow:0 12px 32px rgba(0,0,0,.45);opacity:0;pointer-events:none;
    transform:translate(-50%,-100%) translateY(2px);transition:opacity .35s ease,transform .35s var(--ease)}
  .cal-pop.show{opacity:1;pointer-events:auto;transform:translate(-50%,-100%) translateY(-8px)}
  .cal-pop::after{content:"";position:absolute;left:50%;bottom:-5px;width:9px;height:9px;
    transform:translateX(-50%) rotate(45deg);background:rgba(9,15,11,.94);
    border-right:1px solid rgba(232,180,90,.4);border-bottom:1px solid rgba(232,180,90,.4)}
  .cal-pop-link{display:block;color:inherit;text-decoration:none;min-height:44px}
  .cal-pop-link:hover .pt{color:var(--sun)}
  .cal-pop .pt{font-family:var(--serif);font-weight:400;font-size:15px;letter-spacing:-0.01em;margin-bottom:3px}
  .cal-pop .pm{font-size:12px;color:var(--mist);line-height:1.5}
  .cal-pop .pp{font-family:var(--mono);font-size:10px;color:var(--lantern);letter-spacing:.08em;text-transform:uppercase;margin-top:7px}
  .cal-pop .ph{font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:.05em;margin-top:7px}
  .stub.flash{animation:cardFlash 1.8s ease}
  @keyframes cardFlash{0%,100%{box-shadow:0 0 0 0 rgba(244,231,191,0)}25%{box-shadow:0 0 34px 3px rgba(244,231,191,.35)}}
  /* hold a gathering */
  .space-more{overflow:hidden;max-height:0;opacity:0;transition:max-height .9s var(--ease),opacity .8s ease}
  .space-more.open{max-height:480px;opacity:1}
  .space-more p{font-family:var(--serif);font-weight:300;color:var(--mist);font-size:.98rem;line-height:1.62;margin-top:13px}
  .hold-card{border:1px solid var(--line);border-radius:20px;background:var(--glass);padding:20px 18px;
    backdrop-filter:blur(14px) saturate(150%) brightness(0.96);-webkit-backdrop-filter:blur(14px) saturate(150%) brightness(0.96)}
  .hold-card p{font-family:var(--serif);font-weight:300;color:var(--mist);font-size:1.02rem;line-height:1.62;
    max-width:52ch;margin-bottom:16px}
  /* recently gathered — quiet, no CTA */
  .pastlist{display:flex;flex-direction:column;gap:12px}
  .past-stub{display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:16px;
    background:rgba(13,21,16,.5);padding:12px 14px}
  .past-stub .pb{width:64px;height:44px;border-radius:10px;flex:none;
    background:linear-gradient(165deg,#8fae87,#3d5443 60%,#16241a);filter:saturate(.4) brightness(.7)}
  .past-stub h3{font-family:var(--serif);font-weight:400;font-size:15.5px;letter-spacing:-0.01em}
  .past-stub .pm{font-size:12px;color:var(--muted);margin-top:2px}
  /* holder surface */
  .greeting{font-family:var(--serif);font-style:italic;font-weight:300;color:var(--mist);
    font-size:1.05rem;margin-bottom:14px}
  .ribbon{display:flex;align-items:center;gap:12px;border:1px solid rgba(232,180,90,.45);border-radius:100px;
    background:var(--glass);backdrop-filter:blur(12px) saturate(150%);-webkit-backdrop-filter:blur(12px) saturate(150%);
    padding:10px 12px 10px 20px;margin:0 0 30px;flex-wrap:wrap}
  .ribbon .rk{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--sun-2)}
  .ribbon .rt{font-family:var(--serif);font-weight:300;font-size:15px;color:var(--mist)}
  .ribbon .btn{min-height:40px;padding:9px 18px;font-size:13.5px;margin-left:auto}

  /* ---- poster illustrations: layered land per format (style guide §Posters) ---- */
  .poster{position:absolute;inset:0;overflow:hidden;border-radius:inherit}
  .poster svg{width:100%;height:100%;display:block;transform-origin:center;
    animation:posterFloat 17s var(--ease) infinite alternate}
  @keyframes posterFloat{from{transform:scale(1.05) translateY(3px)}to{transform:scale(1.05) translateY(-5px)}}
  .p-star{fill:rgba(244,231,191,.9);animation:starTw 7s ease-in-out infinite}
  @keyframes starTw{0%,100%{opacity:.12}50%{opacity:.9}}
  .p-ring{transform-box:fill-box;transform-origin:center;animation:ripple 5.6s ease-out infinite;
    fill:none;stroke:rgba(223,231,216,.5);stroke-width:1.3}
  @keyframes ripple{0%{transform:scale(.25);opacity:.7}100%{transform:scale(2.5);opacity:0}}
  .p-glow{transform-box:fill-box;transform-origin:center;animation:glowPulse 5.5s ease-in-out infinite}
  @keyframes glowPulse{0%,100%{opacity:.45;transform:scale(.92)}50%{opacity:.95;transform:scale(1.1)}}
  .p-frond{transform-box:fill-box;transform-origin:bottom left;animation:frondSway 7.5s ease-in-out infinite}
  @keyframes frondSway{0%,100%{transform:rotate(-2.2deg)}50%{transform:rotate(2.2deg)}}
  /* per-format skies + aurora tints */
  .banner{--g1:rgba(244,231,191,.5);--g2:rgba(169,196,160,.3)}
  .banner.b-breathwork{background:linear-gradient(165deg,#dcd6ae -12%,#a9c4a0 10%,#5d7a5b 42%,#26402e 74%,#0f1a10 104%)}
  .banner.b-sound{background:linear-gradient(165deg,#b9cfc6 -12%,#7fa392 8%,#3f6152 40%,#1c352b 72%,#0b1712 104%);
    --g1:rgba(223,231,216,.35);--g2:rgba(127,163,146,.32)}
  .banner.b-circle{background:linear-gradient(165deg,#9fb2a4 -16%,#5c7a68 6%,#2c4a3c 38%,#142920 70%,#071108 104%);
    --g1:rgba(244,231,191,.26);--g2:rgba(92,122,104,.3)}
  .banner.b-talks{background:linear-gradient(165deg,#dccdaa -12%,#a3a67e 10%,#55603f 42%,#262f1e 74%,#0e120a 104%);
    --g1:rgba(232,180,90,.4);--g2:rgba(163,166,126,.3)}
  .banner.b-music{background:linear-gradient(165deg,#b3c4b4 -12%,#6a8573 8%,#35503f 40%,#16281c 72%,#091108 104%);
    --g1:rgba(223,231,216,.32);--g2:rgba(106,133,115,.3)}
  .host-note{font-family:var(--sans);font-style:italic;font-weight:400;font-size:14px;
    color:rgba(223,231,216,.85);line-height:1.55;margin:2px 0 13px;max-width:48ch;
    padding-left:11px;border-left:2px solid rgba(232,180,90,.35)}

  /* ---------- mobile type scale · v1.2 (≤640px) ----------
     Client v1.2, and the reason for it: nobody with impaired eyesight should be
     deterred from a gathering because they can't read the page on a phone. The
     whole mobile scale goes up ~20%, the file's internal hierarchy intact, with
     hard floors that nothing may go under:
       · reading text ................ ≥ 17.5px
       · informational / interactive .. ≥ 14px  (no exceptions)
       · card meta rows ............... ≥ 14.5px
       · kickers (letterspaced mono) .. ≥ 13px
       · touch targets ................ ≥ 44px, buttons 52px
     Desktop is deliberately left as designed — the change lives below 640px. */
  @media (max-width:640px){
    body{font-size:17.5px;line-height:1.62}
    .kicker{font-size:14px;letter-spacing:.22em;margin-bottom:18px}  /* phone: at the legibility floor */
    .mo-head{font-size:1.35rem}
    .arow{grid-template-columns:46px 1fr}
    .acard h3{font-size:1.13rem}
    .ameta{font-size:13.5px}
    .arow .rail span{font-size:12px}
    .masthead{margin:0 0 40px}
    .masthead p{font-size:17.5px;line-height:1.7}

    /* cards — the handshake. Titles up with the scale; meta rows readable. */
    .hero-stub .banner{height:280px}
    .hero-stub .banner h2{font-size:clamp(1.75rem,6.4vw,2.15rem)}
    .feed .banner{height:150px}
    .feed .banner h2{font-size:20.5px}
    .eyebrow-pill{font-size:15.5px;letter-spacing:1.4px;padding:8px 14px;gap:8px}
    .eyebrow-pill .icn{width:15px;height:15px}
    .stub-body{padding:17px 18px 19px}
    .meta{font-size:16.5px;gap:11px;margin-bottom:10px}
    .icn{width:19px;height:19px}
    .social{margin:13px 0 15px}
    .coming{font-size:16px}
    .spots,.chip-full{font-size:15px;letter-spacing:.06em}
    .chip-full{padding:5px 12px}
    .host-note{font-size:16px;line-height:1.6;margin:2px 0 15px}
    .price{font-size:25px}
    .price small{font-size:15px}

    /* targets */
    .btn{min-height:52px;font-size:16.5px;padding:15px 30px}
    .chip{min-height:44px;font-size:14px;letter-spacing:.08em;padding:11px 18px}
    .chip .icn{width:14px;height:14px}
    .sound{min-height:44px;font-size:14px;padding:10px 16px}

    /* breathing room — each card sits alone in air, and the section rhythm
       around the feed grows with it so the vertical music stays even. */
    .feedlist{gap:32px}
    section{margin:80px 0}
    .more{margin-top:26px}

    /* the calendar reads as a full instrument, not a widget: 7 × ~44px cells
       across a 390px phone (card padding 10px + 3px gutters make that fit). */
    .cal{padding:16px 10px 14px}
    .cal-head{margin-bottom:16px}
    .cal-head .mo{font-size:1.8rem}
    .cal-head .yr{font-size:13px}
    .cal-nav{width:46px;height:46px}
    .cal-nav .icn{width:19px;height:19px}
    .cal-grid{gap:3px}
    .cal-grid .wd{font-size:14px;letter-spacing:.06em;padding:6px 0}
    .cal-day{height:46px;font-size:15.5px;border-radius:12px}
    .cal-day.has::after{width:5px;height:5px;bottom:6px}
    .cal-note{font-size:14px;line-height:1.5;margin-top:14px}
    .cal-pop{min-width:224px;max-width:270px;padding:14px 16px}
    .cal-pop .pt{font-size:17px}
    .cal-pop .pm{font-size:14.5px}
    .cal-pop .pp{font-size:14px}
    .cal-pop .ph{font-size:14px}

    /* the space · people · hold · recently */
    .space-body{padding:20px}
    .space-body p{font-size:1.12rem}
    .space-more p{font-size:1.08rem}
    .space-more.open{max-height:760px}
    .addr{font-size:15.5px}
    .addr small{font-size:14px}
    .host{width:88px}
    .host .hav{width:62px;height:62px;font-size:21px}
    .host .hname{font-size:14px}
    .hold-card{padding:22px 20px}
    .hold-card p{font-size:1.12rem}
    .past-stub{padding:14px}
    .past-stub h3{font-size:17px}
    .past-stub .pm{font-size:14px}

    /* footer */
    .channel{padding:22px 20px}
    .channel h2{font-size:21px}
    .channel p{font-size:15px}
    .findticket{font-size:15px}
    .housekeeping{font-size:14px;line-height:1.75}

    /* holder surface */
    .greeting{font-size:1.15rem}
    .ribbon .rk{font-size:13px}
    .ribbon .rt{font-size:16px}
    .ribbon .btn{min-height:48px;font-size:15px}
  }

  @media(prefers-reduced-motion:reduce){
    *{animation:none!important;scroll-behavior:auto}
    .masthead .l>span{transform:none}.masthead p{opacity:.92;transform:none}
    .avstack .av{opacity:1!important;transform:none!important}
    .hero-stub .banner h2 .wipe{clip-path:inset(0 0 0 0)!important}
  }
