/* ===================== DESIGN TOKENS ===================== */
  :root{
    --paper:#FAF8F2;
    --paper-warm:#F4EFE3;
    --ink:#22271F;
    --ink-soft:#4A5045;
    --forest:#3E4F3B;
    --forest-deep:#2B3627;
    --sage:#8FA084;
    --sand:#E7DFC9;
    --sand-deep:#DCD0B4;
    --wood:#9C7C52;
    --sunset:#E4713F;
    --sunset-soft:#F0A472;
    --dusk:#2B3A4A;
    --warm-yellow:#F5C15A;
    --sky-blue:#8FB8C9;
    --bg-sky-photo: url("/assets/img/bg-sky-photo.jpg");
    --soft-pink:#E8B8AE;
    --deep-blue:#1F2E3D;
    --line:rgba(34,39,31,0.14);
    --line-soft:rgba(34,39,31,0.08);
    --font-display:'Zen Old Mincho', serif;
    --font-body:'Zen Kaku Gothic New', sans-serif;
    --tick-color:#F5D48A;
    --container:1280px;
    --section-pad:124px;
  }
  @media (max-width:768px){ :root{ --section-pad:64px; } }

  *,*::before,*::after{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:0.001ms !important; transition-duration:0.001ms !important;}
  }
  body{
    font-family:var(--font-body);
    color:var(--ink);
    background:var(--paper);
    line-height:1.8;
    font-weight:400;
    overflow-x:hidden;
    position:relative;
  }
  img,svg{display:block; max-width:100%;}
  a{color:inherit; text-decoration:none;}
  ul{list-style:none;}
  button{font-family:inherit; cursor:pointer; border:none; background:none; color:inherit;}
  .container{max-width:var(--container); margin:0 auto; padding:0 24px;}
  @media (min-width:768px){ .container{padding:0 40px;} }

  /* film-grain overlay ties every placeholder + section together */
  body::after{
    content:"";
    position:fixed; inset:0; z-index:9998; pointer-events:none;
    opacity:0.035; mix-blend-mode:overlay;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  }

  /* ===================== BOTANICAL ACCENTS ===================== */
  .botanical{
    position:absolute; pointer-events:none; z-index:1; color:var(--sage);
  }
  .botanical.sway{ animation:sway 8s ease-in-out infinite alternate; transform-origin:bottom center; }
  @keyframes sway{ from{ transform:rotate(-2deg); } to{ transform:rotate(2deg); } }

  .leaf-divider{
    display:flex; align-items:center; justify-content:center; gap:14px;
    color:var(--sage); margin:0 auto;
  }
  .leaf-divider::before, .leaf-divider::after{
    content:""; height:1px; width:56px; background:var(--line);
  }

  .yoga-badge{
    width:56px; height:56px; border-radius:50%; background:rgba(250,248,242,0.92);
    display:flex; align-items:center; justify-content:center; color:var(--forest);
  }

  /* ===================== HORIZONTAL SCROLL CAROUSEL ===================== */
  .hscroll{
    display:flex; gap:18px; overflow-x:auto; scroll-snap-type:x mandatory;
    padding:6px 2px 18px; margin:0 -2px;
    scrollbar-width:none; -webkit-overflow-scrolling:touch;
  }
  .hscroll::-webkit-scrollbar{ display:none; }
  .hscroll > *{ flex:0 0 auto; scroll-snap-align:start; }

  .item-card{
    width:250px; border:1px solid var(--line); border-radius:2px;
    background:var(--paper); padding:26px 24px; display:flex; flex-direction:column; gap:10px;
    transition:border-color .3s ease, transform .3s ease, box-shadow .3s ease;
  }
  .item-card:hover{ border-color:var(--wood); transform:translateY(-4px); box-shadow:0 12px 28px rgba(34,39,31,0.08); }

  /* Wellness / Music / Pickleball 横並びカード */
  .highlights-grid{ display:grid; gap:24px; }
  @media (min-width:900px){ .highlights-grid{ grid-template-columns:repeat(3,1fr); gap:28px; } }
  .highlight-card{
    border:1px solid var(--line); border-radius:2px; background:var(--paper);
    padding:30px 26px; display:flex; flex-direction:column; gap:14px; height:100%;
    overflow:hidden;
    transition:border-color .3s ease, transform .3s ease, box-shadow .3s ease;
  }
  .highlight-card:hover{ border-color:var(--wood); transform:translateY(-4px); box-shadow:0 12px 28px rgba(34,39,31,0.08); }
  .highlight-icon{
    width:52px; height:52px; border-radius:50%; background:var(--sand);
    display:flex; align-items:center; justify-content:center; font-size:22px; flex:0 0 auto;
  }
  img.highlight-icon{ object-fit:cover; }
  .highlight-card h3{ margin:2px 0 0; font-size:20px; }
  .highlight-card p{ font-size:14px; line-height:1.7; color:var(--ink-soft); }
  .highlight-card .chips{ margin-top:auto; padding-top:4px; }
  .promo-banner{ display:block; overflow:hidden; line-height:0; }
  .promo-banner img{ width:100%; height:auto; display:block; transition:transform .6s ease; }
  .promo-banner:hover img{ transform:scale(1.02); }
  .promo-banner--dynamic{ position:relative; }
  .promo-banner-fallback-label{
    position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
    background:rgba(10,10,8,0.45); color:#fff; font-size:clamp(16px,2.4vw,22px); font-weight:700;
    letter-spacing:0.06em; text-align:center; padding:24px;
  }
  .card-link{
    display:inline-flex; align-items:center; gap:6px; margin-top:14px;
    font-size:12px; letter-spacing:0.08em; text-transform:uppercase; color:var(--wood); font-weight:700;
  }
  .card-link .card-link-arrow{ transition:transform .3s ease; }
  .card-link:hover .card-link-arrow{ transform:translateX(4px); }
  .highlight-ph{ position:relative; overflow:hidden; aspect-ratio:4/3; margin:-30px -26px 4px; border-radius:2px 2px 0 0; }
  .highlight-ph img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; transition:transform .5s ease; }
  .highlight-card:hover .highlight-ph img{ transform:scale(1.05); }
  .highlight-ph.is-comingsoon img{ filter:grayscale(55%) brightness(0.6); }
  .coming-soon-badge{
    position:absolute; inset:0; z-index:3; display:flex; align-items:center; justify-content:center;
  }
  .coming-soon-badge span{
    border:1px solid rgba(250,248,242,0.75); color:var(--paper); font-size:11px; letter-spacing:0.16em;
    text-transform:uppercase; padding:9px 20px; border-radius:999px; background:rgba(34,39,31,0.4);
  }
  .chip--soon{ border-color:var(--sunset); color:var(--sunset); }
  @media (min-width:640px){ .item-card{ width:290px; } }
  .item-card .event-arrow{ margin-top:auto; }
  .item-card .news-excerpt{ font-size:13px; }

  .scroll-hint{
    display:flex; align-items:center; justify-content:space-between; gap:16px;
    margin-bottom:24px;
  }
  .scroll-hint .hint-text{ font-size:11px; letter-spacing:0.12em; text-transform:uppercase; color:var(--ink-soft); opacity:0.7; }
  .scroll-nav{ display:none; gap:8px; }
  .scroll-nav button{
    width:38px; height:38px; border-radius:50%; border:1px solid var(--line);
    display:flex; align-items:center; justify-content:center; font-size:15px;
    transition:border-color .3s ease, background .3s ease;
  }
  .scroll-nav button:hover{ border-color:var(--wood); background:var(--sand); }
  @media (min-width:640px){ .scroll-nav{ display:flex; } }

  .eyebrow{
    font-size:12px; letter-spacing:0.22em; text-transform:uppercase;
    color:var(--forest); font-weight:700; display:inline-block; margin-bottom:14px;
  }
  h1,h2,h3{ font-family:var(--font-display); font-weight:600; color:var(--ink); letter-spacing:0.01em; }
  h2{ font-size:clamp(30px,4.8vw,54px); line-height:1.32; }
  h3{ font-size:clamp(21px,2.6vw,29px); line-height:1.5; }
  p{ color:var(--ink-soft); }
  .lede{ font-size:19px; line-height:1.85; max-width:620px; }

  .btn{
    display:inline-flex; align-items:center; gap:10px;
    padding:15px 30px; border:1px solid var(--ink); border-radius:999px;
    font-size:13px; letter-spacing:0.12em; text-transform:uppercase; font-weight:700;
    transition:background .35s ease, color .35s ease, border-color .35s ease, transform .35s cubic-bezier(.22,1,.36,1);
  }
  .btn:hover{ background:var(--ink); color:var(--paper); transform:translateY(-2px); }
  @media (prefers-reduced-motion: reduce){ .btn:hover{ transform:none; } }
  .btn--solid{ background:var(--forest); border-color:var(--forest); color:var(--paper); }
  .btn--solid:hover{ background:var(--forest-deep); border-color:var(--forest-deep); }
  .btn--sunset{ background:var(--sunset); border-color:var(--sunset); color:#fff; }
  .btn--sunset:hover{ background:#c85a2b; border-color:#c85a2b; }

  /* ===================== SCROLL SIGNATURE: day → night ===================== */
  #dn-bar{
    position:fixed; top:0; left:0; height:3px; width:100%; z-index:9999;
    background:var(--tick-color); transform-origin:left;
    transition:background-color .2s linear;
  }


  /* ===================== NAV ===================== */
  header{
    position:fixed; top:0; left:0; width:100%; z-index:200;
    padding:14px 0; transition:background .4s ease, box-shadow .4s ease, padding .4s ease;
  }
  header.scrolled{ background:var(--paper); box-shadow:0 1px 0 var(--line); padding:8px 0; }
  header.menu-open{ background:var(--paper); box-shadow:0 1px 0 var(--line); }
  header .container{ display:flex; align-items:center; justify-content:space-between; padding-right:16px; }
  @media (min-width:768px){ header .container{ padding-right:24px; } }
  .logo{ font-family:var(--font-display); font-size:20px; font-weight:700; letter-spacing:0.04em; }
  .logo span{ color:var(--sunset); }
  .desk-group{ display:none; align-items:center; gap:28px; margin-left:auto; }
  @media (min-width:1024px){ .desk-group{ display:flex; } }

  nav.desk-nav{ display:flex; gap:26px; align-items:center; }
  nav.desk-nav a{ font-size:12px; font-weight:700; color:rgba(0,0,0,0.6); letter-spacing:0.14em; text-transform:uppercase; position:relative; }
  nav.desk-nav a::after{
    content:""; position:absolute; left:0; bottom:-6px; width:0; height:1px; background:var(--ink);
    transition:width .3s ease;
  }
  nav.desk-nav a:hover::after{ width:100%; }

  .desk-social{ display:flex; align-items:center; gap:16px; padding-left:24px; border-left:1px solid var(--line); }

  .ig-link{
    display:inline-flex; align-items:center; justify-content:center;
    width:18px; height:18px; transition:transform .3s ease; color:var(--ink);
  }
  .ig-link:hover{ transform:scale(1.1); }
  .ig-link svg{ width:100%; height:100%; display:block; }

  .burger{ width:26px; height:18px; position:relative; z-index:210; }
  .burger span{ position:absolute; left:0; width:100%; height:1px; background:var(--ink); transition:transform .3s ease, opacity .3s ease; }
  .burger span:nth-child(1){ top:0; }
  .burger span:nth-child(2){ top:8px; }
  .burger span:nth-child(3){ top:16px; }
  .burger.open span:nth-child(1){ transform:translateY(8px) rotate(45deg); }
  .burger.open span:nth-child(2){ opacity:0; }
  .burger.open span:nth-child(3){ transform:translateY(-8px) rotate(-45deg); }
  @media (min-width:1024px){ .burger{ display:none; } }

  #mnav{
    position:fixed; inset:0; background:var(--paper); z-index:190;
    display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-start; gap:26px;
    padding:96px 40px 40px; transform:translateY(-100%); transition:transform .5s ease;
    overflow-y:auto; -webkit-overflow-scrolling:touch; height:100vh; height:100dvh;
  }
  #mnav.open{ transform:translateY(0); }
  #mnav a{ font-family:var(--font-display); font-size:28px; }
  @media (min-width:1024px){ #mnav{ display:none; } }
  .mnav-social{ margin-top:12px; }
  .mnav-social-label{ display:block; font-family:var(--font-body); font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:14px; }
  .mnav-social-icons{ display:flex; gap:16px; }

  /* ===================== PHOTO PLACEHOLDER SYSTEM ===================== */
  .ph{
    position:relative; overflow:hidden; border-radius:2px;
    display:flex; align-items:flex-end;
  }
  .ph::before{ content:""; position:absolute; inset:0; }
  .ph img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
  .ph .ph-cap{
    position:relative; z-index:2; color:rgba(255,255,255,0.82); font-size:11px;
    letter-spacing:0.1em; padding:16px; text-transform:uppercase;
  }
  .ph--1::before{ background:radial-gradient(120% 90% at 75% 15%, #F5D48A 0%, #E4713F 42%, #2B3627 100%); }
  .ph--2::before{ background:linear-gradient(160deg, #DCD0B4 0%, #9C7C52 60%, #3E4F3B 100%); }
  .ph--3::before{ background:linear-gradient(200deg, #8FA084 0%, #3E4F3B 70%, #22271F 100%); }
  .ph--4::before{ background:linear-gradient(135deg, #F0A472 0%, #E4713F 55%, #2B3A4A 100%); }
  .ph--5::before{ background:linear-gradient(160deg, #E7DFC9 0%, #8FA084 65%, #2B3627 100%); }
  .ph--6::before{ background:linear-gradient(200deg, #9C7C52 0%, #3E4F3B 65%, #2B3A4A 100%); }
  .ph--7::before{ background:radial-gradient(100% 80% at 20% 20%, #F5D48A 0%, #9C7C52 50%, #22271F 100%); }
  .ph--8::before{ background:linear-gradient(150deg, #8FA084 0%, #2B3627 80%); }

  /* ===================== REVEAL ===================== */
  .reveal{ opacity:0; transform:translateY(26px); transition:opacity .8s ease, transform .8s ease; }
  .reveal.in{ opacity:1; transform:translateY(0); }

  /* ===================== HERO ===================== */
  .hero{
    position:relative; min-height:100svh; display:flex; align-items:flex-end;
    padding-bottom:64px; padding-top:120px;
  }
  .hero .ph{ position:absolute; inset:0; z-index:0; }
  .hero .ph::after{
    content:""; position:absolute; inset:0;
    background:linear-gradient(0deg, rgba(20,22,16,0.55) 0%, rgba(20,22,16,0.05) 55%);
  }
  .hero-content{ position:relative; z-index:2; color:#fff; }
  .hero-content .eyebrow{ color:var(--sunset-soft); }
  .hero-content h1{
    font-size:clamp(46px,9vw,104px); color:#fff; line-height:0.95; letter-spacing:0.01em;
  }
  .hero-content .sub{ margin-top:18px; max-width:520px; color:rgba(255,255,255,0.88); font-size:16px; }
  .hero-actions{ margin-top:36px; display:flex; gap:16px; flex-wrap:wrap; }
  .hero-actions .btn{ border-color:rgba(255,255,255,0.7); color:#fff; }
  .hero-actions .btn:hover{ background:#fff; color:var(--ink); }
  .scroll-cue{
    position:absolute; bottom:26px; left:50%; transform:translateX(-50%); z-index:2;
    color:rgba(255,255,255,0.75); font-size:10px; letter-spacing:0.2em; text-transform:uppercase;
    display:flex; flex-direction:column; align-items:center; gap:10px;
  }
  .scroll-cue::after{
    content:""; width:1px; height:34px; background:rgba(255,255,255,0.6);
    animation:scrollcue 1.8s ease-in-out infinite;
  }
  @keyframes scrollcue{ 0%{transform:scaleY(0); transform-origin:top;} 50%{transform:scaleY(1); transform-origin:top;} 51%{transform-origin:bottom;} 100%{transform:scaleY(0); transform-origin:bottom;} }

  /* ===================== SECTION GENERIC ===================== */
  section{ padding:var(--section-pad) 0; position:relative; }
  .section-head{ margin-bottom:56px; max-width:720px; }
  .divider{ border-top:1px solid var(--line); }

  /* ===================== ABOUT ===================== */
  #about{ background:var(--paper); }
  .about-grid{ display:grid; gap:36px; align-items:center; }
  .about-grid .ph{ aspect-ratio:4/5; width:100%; }
  @media (min-width:900px){
    .about-grid{ grid-template-columns:11fr 9fr; gap:72px; }
  }
  .about-copy p + p{ margin-top:16px; }

  .chips{ display:flex; flex-wrap:wrap; gap:10px; margin-top:32px; }
  .chip{
    border:1px solid var(--wood); border-radius:999px; padding:8px 18px;
    font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--wood);
  }

  /* ===================== EVENTS ===================== */
  #events{ background:var(--sand); }
  .event-row{
    display:flex; flex-wrap:wrap; align-items:center; gap:16px 28px;
    padding:26px 0; border-top:1px solid var(--line);
  }
  .event-row:last-child{ border-bottom:1px solid var(--line); }
  .event-date{ font-family:var(--font-display); font-size:22px; min-width:96px; }
  .event-tag{
    font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--forest);
    font-weight:700; min-width:96px;
  }
  .event-title{ font-family:var(--font-display); font-size:20px; flex:1; min-width:200px; }
  .event-arrow{ font-size:13px; letter-spacing:0.1em; text-transform:uppercase; opacity:0.6; transition:opacity .3s ease, transform .3s ease; }
  .event-row:hover .event-arrow{ opacity:1; transform:translateX(4px); }
  .events-foot{ margin-top:40px; }

  /* ===================== EVENTS: FULL-BLEED FLYER WALL ===================== */
  #events{ position:relative; padding:var(--section-pad) 0; overflow:hidden; background:var(--forest-deep); }
  #events::before{
    content:""; position:absolute; inset:0; z-index:0;
    background-image:var(--events-bg-image, linear-gradient(160deg, var(--sunset) 0%, var(--dusk) 100%));
    background-size:cover; background-position:center 30%;
    filter:saturate(1.05);
  }
  #events::after{
    content:""; position:absolute; inset:0; z-index:0;
    background:linear-gradient(180deg, rgba(15,17,12,0.72) 0%, rgba(15,17,12,0.4) 30%, rgba(15,17,12,0.55) 70%, rgba(15,17,12,0.88) 100%);
  }
  #events .container{ position:relative; z-index:2; }
  #events .eyebrow{ color:var(--sunset-soft); }
  #events h2{ color:#fff; }
  .event-card{
    position:relative; z-index:2; display:block; border-radius:16px; overflow:hidden;
    box-shadow:0 20px 60px rgba(0,0,0,0.45); border:1px solid rgba(255,255,255,0.12);
    background:#0a0a08; color:#fff;
  }
  .event-card-media{ position:relative; aspect-ratio:16/9; overflow:hidden; }
  .event-card-media img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s ease; }
  .event-card:hover .event-card-media img{ transform:scale(1.03); }
  .event-card-body{ padding:28px 30px 32px; }
  .event-card-body h3{ color:#fff; font-size:clamp(22px,3.2vw,32px); margin:6px 0 10px; }
  .event-card-sub{ color:rgba(255,255,255,0.75); font-size:14px; line-height:1.6; }
  .ra-widget-wrap{
    position:relative; z-index:2; border-radius:16px; overflow:hidden;
    box-shadow:0 20px 60px rgba(0,0,0,0.45); border:1px solid rgba(255,255,255,0.12);
    background:#0a0a08;
  }
  .ra-widget-wrap iframe{ display:block; width:100%; }
  .flyer-card{
    display:flex; flex-direction:column; width:220px; border-radius:3px; overflow:hidden;
    background:var(--paper); box-shadow:0 14px 32px rgba(34,39,31,0.14); transition:transform .4s ease, box-shadow .4s ease;
  }
  .flyer-card:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(34,39,31,0.2); }
  .flyer-card img{ width:100%; height:auto; display:block; }
  .flyer-card.flyer-fallback{
    background:linear-gradient(160deg, var(--sand) 0%, var(--wood) 60%, var(--forest-deep) 100%);
    min-height:220px;
  }
  .flyer-inner{ padding:14px 16px 16px; display:flex; flex-direction:column; gap:4px; }
  .flyer-date{ font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--forest); font-weight:700; }
  .flyer-inner h3{ color:var(--ink); font-size:16px; margin-top:2px; line-height:1.35; }
  .flyer-inner p{ color:var(--ink-soft); font-size:12px; margin-top:2px; line-height:1.5; }
  .flyer-cta{ font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--wood); margin-top:8px; opacity:0.85; transition:opacity .3s ease; }
  .flyer-card:hover .flyer-cta{ opacity:1; }
  @media (min-width:640px){ .flyer-card{ width:250px; } }
  .ra-iframe-wrap{
    position:relative; z-index:1; width:100%; max-width:100%;
    overflow:visible; isolation:isolate;
    border-radius:16px; overflow:hidden;
    box-shadow:0 20px 60px rgba(0,0,0,0.45); border:1px solid rgba(255,255,255,0.12);
    background:#0a0a08;
  }
  .ra-iframe-wrap iframe{ position:relative; z-index:1; display:block; width:100%; height:650px; pointer-events:auto; }
  @media (max-width:640px){ .ra-iframe-wrap iframe{ height:600px; } }

  .ra-callout{
    display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:28px;
    background:var(--dusk); border-radius:4px; padding:40px 36px;
    box-shadow:0 16px 40px rgba(34,39,31,0.1);
  }
  .ra-callout-icon{
    width:46px; height:46px; border-radius:50%; background:rgba(255,255,255,0.08);
    display:flex; align-items:center; justify-content:center; flex-shrink:0; color:#fff;
  }
  .ra-callout-text{ display:flex; align-items:center; gap:18px; flex:1; min-width:240px; }
  .ra-callout .eyebrow{ color:rgba(255,255,255,0.55); }
  .ra-callout h3{ color:#fff; font-size:20px; margin-top:4px; }
  .ra-callout p{ color:rgba(255,255,255,0.7); font-size:13px; margin-top:6px; line-height:1.6; }
  .ra-callout .btn{ border-color:rgba(255,255,255,0.35); color:#fff; }
  .ra-callout .btn:hover{ border-color:#fff; }
  @media (max-width:640px){ .ra-callout{ padding:32px 26px; } .ra-callout .btn{ width:100%; text-align:center; justify-content:center; } }

  /* ===== RA API ライブイベントカード ===== */
  .ra-events-loading{
    text-align:center; padding:60px 24px; color:var(--ink-soft); font-size:14px;
  }
  .ra-events-grid{
    display:grid; gap:18px;
    grid-template-columns:repeat(auto-fill, minmax(250px, 1fr));
  }
  .ra-event-card{
    position:relative;
    display:flex; flex-direction:column; gap:10px;
    background:#0a0a08; border:1px solid rgba(255,255,255,0.1); border-radius:6px;
    padding:24px 22px; text-decoration:none; color:#fff;
    transition:transform .3s ease, border-color .3s ease, box-shadow .3s ease;
  }
  .ra-event-card:hover{ transform:translateY(-4px); border-color:var(--accent, var(--sunset)); }
  .ra-event-card.is-collab{
    border-color:var(--sunset);
    box-shadow:0 0 0 1px var(--sunset), 0 16px 36px rgba(228,113,63,0.3);
    background:linear-gradient(165deg, #1a1108 0%, #0a0a08 60%);
  }
  .ra-event-card.is-collab:hover{ transform:translateY(-6px); box-shadow:0 0 0 1px var(--sunset), 0 22px 44px rgba(228,113,63,0.4); }
  .ra-collab-flag{
    position:absolute; top:-11px; left:20px;
    background:var(--sunset); color:#fff; font-size:10px; font-weight:800;
    letter-spacing:0.08em; text-transform:uppercase;
    padding:5px 12px; border-radius:999px;
    box-shadow:0 6px 16px rgba(228,113,63,0.45);
  }
  .ra-event-date{
    font-size:12px; letter-spacing:0.1em; text-transform:uppercase; color:var(--sunset); font-weight:700;
  }
  .ra-event-card h3{ color:#fff; font-size:17px; line-height:1.4; margin:0; }
  .ra-event-lineup{ font-size:12px; color:rgba(255,255,255,0.65); line-height:1.6; }
  .ra-event-venue{ font-size:11px; color:rgba(255,255,255,0.45); margin-top:auto; padding-top:6px; }
  .ra-collab-badge{
    display:flex; align-items:center; gap:8px; margin-top:12px; padding-top:12px;
    border-top:1px dashed rgba(255,255,255,0.15);
  }
  .ra-collab-badge .label{ font-size:10px; letter-spacing:0.06em; text-transform:uppercase; color:rgba(255,255,255,0.5); white-space:nowrap; }
  .ra-collab-badge img{ height:16px; width:auto; display:block; background:#fff; border-radius:5px; padding:4px 9px; }

  /* ===================== GALLERY ===================== */
  #gallery{ background:var(--sky-blue); }
  #gallery .section-head h2, #gallery .section-head .eyebrow{ color:var(--paper); }
  #gallery .section-head p{ color:rgba(250,248,242,0.7); }
  .gal-grid{ display:grid; grid-auto-flow:column; grid-auto-columns:78%; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:8px; }
  .gal-grid .ph{ scroll-snap-align:start; aspect-ratio:4/5; }
  @media (min-width:900px){
    .gal-grid{ grid-auto-flow:row; grid-template-columns:repeat(4,1fr); grid-auto-rows:180px; overflow:visible; }
    .gal-grid .ph{ aspect-ratio:auto; }
    .gal-grid .ph:nth-child(1){ grid-column:span 2; grid-row:span 2; }
    .gal-grid .ph:nth-child(4){ grid-row:span 2; }
    .gal-grid .ph:nth-child(6){ grid-column:span 2; }
  }

  /* ---- Instagram widget (LightWidget) ---- */
  .ig-widget-wrap{ margin-top:8px; }
  .ig-widget-head{
    display:flex; align-items:center; justify-content:center; gap:10px;
    margin-bottom:22px; color:var(--paper);
    font-family:var(--font-display); font-size:clamp(18px,2.2vw,22px); letter-spacing:0.02em;
  }
  .ig-widget-head svg{ color:var(--sunset-soft); flex:0 0 auto; }
  .ig-widget-frame{ width:100%; overflow:visible; border-radius:16px; }
  .ig-widget-frame iframe.lightwidget-widget{ display:block; height:420px; border-radius:16px; }
  @media (min-width:640px){ .ig-widget-frame iframe.lightwidget-widget{ height:520px; } }
  @media (min-width:1024px){ .ig-widget-frame iframe.lightwidget-widget{ height:640px; } }

  /* ===================== VENUE ===================== */
  #venue{ background:var(--sky-blue); }
  .venue-grid{ display:grid; gap:40px; }
  .venue-grid .ph{ aspect-ratio:4/5; }
  @media (min-width:900px){ .venue-grid{ grid-template-columns:1fr 1fr; align-items:start; } }
  .dl-row{ display:flex; justify-content:space-between; gap:20px; padding:18px 0; border-top:1px solid var(--line); }
  .dl-row:last-child{ border-bottom:1px solid var(--line); }
  .dl-row dt{ font-size:12px; letter-spacing:0.1em; text-transform:uppercase; color:var(--ink-soft); min-width:120px; }
  .dl-row dd{ text-align:right; font-family:var(--font-display); font-size:17px; }

  /* ===================== ACCESS ===================== */
  #access{ background:var(--sky-blue); }
  .access-grid{ display:grid; gap:32px; }
  @media (min-width:900px){ .access-grid{ grid-template-columns:1.1fr 0.9fr; gap:56px; } }
  .map-box{
    aspect-ratio:16/11; border:1px solid var(--wood); border-radius:2px; position:relative;
    overflow:hidden; background:var(--sand-deep);
  }
  #leaflet-map{ position:absolute; inset:0; z-index:0; filter:saturate(0.9) contrast(1.02); }
  .leaflet-container{ font-family:var(--font-body); background:var(--sand-deep) !important; }
  .map-pin{ width:16px; height:16px; border-radius:50% 50% 50% 0; background:var(--sunset); transform:rotate(-45deg); box-shadow:0 0 0 6px rgba(228,113,63,0.18); }
  .map-open-btn{
    position:absolute; bottom:14px; left:14px; z-index:500;
    font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--wood);
    background:rgba(250,248,242,0.92); padding:8px 14px; border-radius:2px;
    box-shadow:0 4px 12px rgba(34,39,31,0.12);
  }
  .access-list li{ display:flex; justify-content:space-between; gap:16px; padding:16px 0; border-top:1px solid var(--line); }
  .access-list li:last-child{ border-bottom:1px solid var(--line); }
  .access-list dt, .access-list .k{ font-size:12px; letter-spacing:0.08em; color:var(--ink-soft); min-width:88px; }

  /* ===================== NEWS ===================== */
  .news-row{ display:flex; flex-wrap:wrap; gap:12px 24px; padding:22px 0; border-top:1px solid var(--line); align-items:baseline; }
  .news-row:last-child{ border-bottom:1px solid var(--line); }
  .news-date{ font-size:12px; letter-spacing:0.08em; color:var(--ink-soft); min-width:90px; }
  .news-title{ flex:1; min-width:220px; font-family:var(--font-display); font-size:17px; }
  .news-excerpt{ width:100%; font-size:14px; color:var(--ink-soft); max-width:640px; }

  /* ===================== CONTACT ===================== */
  #contact{ background:var(--dusk); color:var(--paper); }
  #contact .eyebrow{ color:var(--sunset-soft); }
  #contact h2{ color:var(--paper); }
  #contact p{ color:rgba(250,248,242,0.75); }
  .contact-info a{ display:inline-block; margin-top:6px; border-bottom:1px solid rgba(250,248,242,0.4); }
  .copy-email-btn{
    font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--paper);
    border:1px solid rgba(250,248,242,0.4); border-radius:999px; padding:6px 14px;
    transition:background .3s ease, border-color .3s ease;
  }
  .copy-email-btn:hover{ background:rgba(250,248,242,0.12); }
  .copy-email-btn.copied{ background:var(--sunset); border-color:var(--sunset); color:#fff; }
  .social-row{ display:flex; gap:18px; margin-top:28px; }
  .social-row a{ font-size:12px; letter-spacing:0.1em; text-transform:uppercase; border-bottom:1px solid rgba(250,248,242,0.4); padding-bottom:2px; }
  .form-note{ font-size:12px; color:rgba(250,248,242,0.55); margin-top:10px; }

  /* ===================== FOOTER ===================== */
  footer{ background:var(--forest-deep); color:rgba(250,248,242,0.75); padding:56px 0 28px; }
  .foot-grid{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:32px; padding-bottom:36px; border-bottom:1px solid rgba(250,248,242,0.14); }
  .foot-logo{ font-family:var(--font-display); font-size:20px; color:var(--paper); }
  .foot-nav{ display:flex; flex-wrap:wrap; gap:20px 28px; font-size:13px; }
  .foot-social-label{ display:block; font-size:11px; letter-spacing:0.12em; text-transform:uppercase; color:rgba(250,248,242,0.6); margin-bottom:12px; }
  .foot-bottom{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; padding-top:24px; font-size:12px; }
  .to-top{ font-size:12px; letter-spacing:0.1em; text-transform:uppercase; border-bottom:1px solid rgba(250,248,242,0.35); padding-bottom:2px; }

  :focus-visible{ outline:2px solid var(--sunset); outline-offset:3px; }

  /* ===================== IMMERSIVE SECTION BACKGROUNDS ===================== */
  :root{
    --bg-sky-blue: url("/assets/img/bg-sky-blue.png");
    --bg-about-sky: url("/assets/img/bg-about-sky.jpg");
    --bg-venue: url("/assets/img/bg-venue.jpg");
    --bg-sky-purple: url("/assets/img/bg-sky-purple.png");
    --bg-sky-orange: url("/assets/img/bg-sky-orange.png");
  }

  /* about / experiences / gallery / venue / access / news / contact
     share the same "full-bleed photo + dark gradient overlay" treatment
     used on the EVENTS flyer wall above. */
  #about, #experiences, #gallery, #venue, #access, #contact{
    position:relative; overflow:hidden; isolation:isolate;
  }
  #about::before, #experiences::before, #gallery::before, #venue::before,
  #access::before, #contact::before{
    content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
    background-size:cover; background-position:center;
    filter:saturate(1.35) contrast(1.12) brightness(1.08);
  }
  #about::after, #experiences::after, #gallery::after, #venue::after,
  #access::after, #contact::after{
    content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
    background:linear-gradient(180deg, rgba(15,17,12,0.42) 0%, rgba(15,17,12,0.18) 45%, rgba(15,17,12,0.5) 100%);
  }
  #about > .container, #experiences > .container, #gallery > .container,
  #venue > .container, #access > .container, #contact > .container{
    position:relative; z-index:2;
  }

  /* image assignments: about=blue sky / experiences=purple dusk / gallery+venue=orange sunset(Fuji) */
  #about::before{ background-image:var(--bg-about-sky); }
  #experiences::before{ background-image:var(--bg-sky-purple); }
  #gallery::before{ background-image:var(--bg-sky-photo); }
  #venue::before{ background-image:var(--bg-sky-photo); }
  /* access / news / contact reuse the three images (no dedicated photo was supplied) */
  #access::before{ background-image:var(--bg-sky-photo); }
  #contact::before{ background-image:var(--bg-sky-photo); }

  /* text needs to stay legible on the new dark photo backgrounds */
  #about h1, #about h2, #about h3, #experiences h1, #experiences h2, #experiences h3,
  #gallery h1, #gallery h2, #gallery h3, #venue h1, #venue h2, #venue h3,
  #access h1, #access h2, #access h3,
  #contact h1, #contact h2, #contact h3{
    color:#fff;
    text-shadow:0 2px 18px rgba(15,17,12,0.55), 0 1px 3px rgba(15,17,12,0.6);
  }
  #about p, #experiences p, #gallery p, #venue p, #access p, #contact p{
    color:rgba(250,248,242,0.92);
    text-shadow:0 1px 10px rgba(15,17,12,0.55);
  }
  #about .eyebrow, #experiences .eyebrow, #gallery .eyebrow, #venue .eyebrow,
  #access .eyebrow, #contact .eyebrow{
    color:var(--sunset-soft);
    text-shadow:0 1px 8px rgba(15,17,12,0.6);
  }
  #about .chip{ border-color:rgba(250,248,242,0.5); color:rgba(250,248,242,0.95); text-shadow:0 1px 6px rgba(15,17,12,0.5); }
  #access .access-list li{ border-top-color:rgba(250,248,242,0.3); }
  #access .access-list li:last-child{ border-bottom-color:rgba(250,248,242,0.3); }
  #access .access-list dt, #access .access-list .k{ color:rgba(250,248,242,0.75); text-shadow:0 1px 6px rgba(15,17,12,0.5); }
  #contact .contact-info a{ border-bottom-color:rgba(250,248,242,0.5); }
