
    :root{
      --onyx:#0F1117;--ink:#E8E6E3;--muted:#B8BDC9;--gold:#C9A86A;--rose:#E9B4B7;
      --panel:#141824;--edge:#2A2F3A;--radius:16px;--shadow:0 16px 44px rgba(0,0,0,.35);--maxw:1200px
    }
    *{box-sizing:border-box}
    html,body{margin:0;padding:0}
    body{font:16px/1.65 Inter, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial;color:var(--ink);background:var(--onyx)}
    a{color:var(--ink);text-decoration:none}
    a:hover{text-decoration:underline}
    img{max-width:100%;display:block}
    .container{max-width:var(--maxw);margin:auto;padding:0 20px}

    header.top{position:sticky;top:0;z-index:60;background:rgba(20,24,36,.65);backdrop-filter:blur(10px);border-bottom:1px solid var(--edge)}
    .nav{height:70px;display:flex;align-items:center;justify-content:space-between}
    .brand{display:flex;align-items:center;gap:14px;font-weight:700}
    .brand svg{width:36px;height:36px}
    .controls{display:flex;gap:10px;align-items:center}
    .cta{display:inline-block;padding:10px 16px;border-radius:999px;background:linear-gradient(135deg,var(--gold),#b8935c);color:#111;border:1px solid #b8935c;font-weight:600;transition:transform .18s ease, box-shadow .18s ease}
    .cta.secondary{background:#1a2030;color:var(--ink);border-color:#394356}
    .cta:hover{opacity:.92;text-decoration:none;transform:translateY(-1px);box-shadow:0 8px 24px rgba(0,0,0,.32)}

    .lang{position:relative;display:inline-grid;grid-auto-flow:column;gap:0;border:1px solid var(--edge);border-radius:999px;overflow:hidden}
    .lang button{position:relative;padding:8px 12px;background:transparent;border:0;color:var(--muted);font-weight:600;cursor:pointer}
    .lang .slider{position:absolute;inset:2px auto 2px 2px;width:50%;background:#111523;border-radius:999px;border:1px solid #30384a;transition:transform .25s ease}
    .lang[data-active="fr"] .slider{transform:translateX(100%)}
    .lang[data-active="en"] .btn-en{color:var(--gold)}
    .lang[data-active="fr"] .btn-fr{color:var(--gold)}

    [data-obs]{opacity:0;transform:translateY(16px);transition:opacity .6s ease, transform .6s ease}
    [data-obs].in{opacity:1;transform:none}

    :focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:6px}
    ::selection{background:rgba(201,168,106,.35);color:var(--ink)}



    /* Hero */
    .hero{position:relative;padding:0 0 36px;border-bottom:1px solid var(--edge)}
    /* wider on larger screens */
    .hero > .container{max-width:min(1600px,96vw)}
    .stage{position:relative;border-radius:18px;overflow:hidden;border:1px solid var(--edge);box-shadow:var(--shadow);margin-top:14px}
    .hero .media-wrap{position:relative;width:100%;height:62vh;min-height:420px;overflow:hidden}

    /* full-bleed hero on phones (edge-to-edge), keep text padded */
    @media (max-width:640px){
      .hero > .container{max-width:100vw;padding:0}
      .hero .stage{margin-top:0;border-radius:0;border-left:0;border-right:0}
      .hero .content{padding:16px 16px calc(18px + env(safe-area-inset-bottom))}
    }

    /* HERO FILL & ZOOM FIX */
    .hero .media-wrap picture{position:absolute;inset:0;display:block;z-index:0}
    .hero .media-wrap img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(15%) brightness(90%);will-change:transform;backface-visibility:hidden;transform-origin:center}
    .hero .media-wrap .veil{position:absolute;inset:0;z-index:3;
      background:
        radial-gradient(1200px 520px at 50% 80%, rgba(201,168,106,.10), rgba(20,24,36,.25) 65%, rgba(20,24,36,.45) 100%),
        linear-gradient(180deg, rgba(15,17,23,0) 0%, rgba(15,17,23,.32) 58%, rgba(15,17,23,.62) 100%);
    }
    .hero .content{position:absolute;inset:auto 0 0 0;padding:20px;background:linear-gradient(180deg, rgba(12,14,20,.18), rgba(12,14,20,.55));pointer-events:auto;z-index:4}

    /* kicker removed */

    h1{font-family:"Playfair Display", Georgia, serif;font-size:clamp(30px,5vw,50px);line-height:1.15;margin:10px 0 6px;color:var(--ink)}
    /* subhead: single-span (no duplicates) */
    .hero .subhead{margin:6px 0 0 0;color:var(--muted);font-size:clamp(14px,2.6vw,18px);min-height:1.6em}
    .hero .subhead span{display:inline-block;opacity:1;transition:opacity .4s ease}
    .hero .subhead span.fadeout{opacity:0}

    /* minimalist bottom link + arrow (hide on small screens) */
    .hero .bottom-link{
      position:absolute; left:50%; bottom:calc(env(safe-area-inset-bottom) + 12px); transform:translateX(-50%);
      display:flex; flex-direction:column; align-items:center; gap:6px; z-index:5;
      pointer-events:auto;
    }
    .hero .bottom-link a{
      font-weight:600; letter-spacing:.2px; color:#e8e6e3; text-decoration:none; padding:8px 12px;
      background:rgba(15,17,23,.42); border:1px solid #2a3040; border-radius:999px;
    }
    .hero .bottom-link a:hover{ text-decoration:underline }
    .hero .bottom-link svg{ width:16px; height:16px; opacity:.85 }
    @media (max-width:768px){ .hero .bottom-link{ display:none } }

    section{padding:56px 0;scroll-margin-top:72px}
    .card{background:var(--panel);border:1px solid var(--edge);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}
    .section-title{font-family:"Playfair Display", Georgia, serif;color:var(--ink);font-size:clamp(22px,3.4vw,32px);margin:0 0 8px;text-wrap:balance}
    .muted{color:var(--muted)}
    .rule{height:1px;background:#2a3040;margin:24px 0} .tiny{font-size:12px;line-height:1.45}

    .gallery{display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:14px}
    .portrait{position:relative;border-radius:14px;overflow:hidden;border:1px solid #2d3340;background:#0f1320;min-height:200px;aspect-ratio:3/4;transform:translateY(10px);opacity:0;content-visibility:auto;contain-intrinsic-size:480px 640px}
    .portrait.in{opacity:1;transform:none;transition:opacity .5s ease, transform .5s ease}
    .portrait img{width:100%;height:100%;object-fit:cover;filter:contrast(100%) saturate(96%)}
    figcaption{position:absolute;inset:auto 0 0 0;color:#fff;padding:12px 12px 10px;background:linear-gradient(180deg, rgba(0,0,0,.55), rgba(0,0,0,0));font-weight:600;letter-spacing:.2px}

    .rates-table{width:100%;border-collapse:collapse;margin-top:8px}
    .rates-table th,.rates-table td{padding:14px 10px;border-bottom:1px dashed #384152;text-align:left}
    .pill-note{display:flex;gap:12px;align-items:flex-start;margin:16px 0;padding:10px 12px;border-radius:12px;border:1px dashed #3a4152;background:#121726}
    .badge{display:inline-block;padding:4px 10px;border-radius:999px;background:var(--rose);color:#1c1a1a;font-size:12px;border:1px solid #7b5a61}

    footer{padding-bottom:40px}
    footer .tiny{color:var(--muted)}

    /* Gentle hero entrance (kicker removed) */
    @keyframes riseFade { from { opacity:0; transform: translateY(8px); } to { opacity:1; transform:none; } }
    @media (prefers-reduced-motion: no-preference) {
      .hero h1 { animation: riseFade .7s ease .22s both; }
    }
    .cta { position: relative; isolation:isolate; box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 8px 24px rgba(0,0,0,.18); }
    .cta::after { content:""; position:absolute; inset:-2px; border-radius:inherit; pointer-events:none; opacity:0; transition:opacity .25s ease;
                  background: radial-gradient(120px 40px at 50% 120%, rgba(201,168,106,.28), rgba(201,168,106,0)); z-index:-1; }
    .cta:hover::after { opacity:.8; }
    .cta:active { transform: translateY(0) scale(.98); box-shadow: 0 6px 18px rgba(0,0,0,.26); }
  

  @media (prefers-reduced-motion: no-preference){
    .hero .media-wrap .layer { position:absolute; inset:0; object-fit:cover; opacity:0; will-change:transform,opacity; transition:opacity 1s ease; }
    .hero .media-wrap .layer.show { opacity:1; }
    .kenburnsA { animation: kbA 18s ease-in-out infinite alternate; }
    .kenburnsB { animation: kbB 18s ease-in-out infinite alternate; }
    .fadeA     { animation: fadeA 18s ease-in-out infinite; }
    .fadeB     { animation: fadeB 18s ease-in-out infinite; }
    @keyframes kbA { 0%{ transform: scale(1) translateY(0) } 100%{ transform: scale(1.06) translateY(2%) } }
    @keyframes kbB { 0%{ transform: scale(1.06) translateY(0) } 100%{ transform: scale(1) translateY(-2%) } }
    @keyframes fadeA{ 0%,40%{ opacity:1 } 50%,90%{ opacity:0 } 100%{ opacity:1 } }
    @keyframes fadeB{ 0%,40%{ opacity:0 } 50%,90%{ opacity:1 } 100%{ opacity:0 } }
  }
  @media (prefers-reduced-motion: reduce){
    .kenburnsA,.kenburnsB,.fadeA,.fadeB{ animation: none !important; }
  }
  

  @media (prefers-reduced-motion: no-preference){
    .hero .media-wrap .veil{ background-position:50% 80%,50% 0%; background-size:140% 140%,100% 100%; animation: auroraShift 32s ease-in-out infinite alternate; }
    @keyframes auroraShift{ 0%{background-position:50% 80%,50% 0%;filter:saturate(1) brightness(1)} 50%{background-position:58% 72%,50% 0%;filter:saturate(1.03) brightness(1.01)} 100%{background-position:44% 66%,50% 0%;filter:saturate(1.06) brightness(1.02)} }
  }
  @media (prefers-reduced-motion: reduce){ .hero .media-wrap .veil{ animation:none !important } }

  header.top .cta{ position:relative; padding-left:42px; }
  header.top .cta::before{
    content:""; position:absolute; left:12px; top:50%; width:18px; height:18px; transform: translateY(-50%) translateX(-6px) scale(.9);
    background-repeat:no-repeat; background-size:contain; background-position:center;
    opacity:0; filter: drop-shadow(0 0 8px rgba(233,180,183,.22)); animation: iconSlide 6s ease-in-out infinite;
  }
  header.top .cta[href^="tel:"]::before{ background-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="%23E9B4B7" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5.4 2.8h3a1.6 1.6 0 0 1 1.6 1.5l.2 2a1.6 1.6 0  0 1-.5 1.3L8.6 9a12.6 12.6 0  0 0 6.4 6.4l1.4-1.1c.4-.3.9-.5 1.3-.5l2 .2a1.6 1.6 0  0  1 1.5 1.6v3a1.6 1.6 0  0 1-1.6 1.6h-.8C10.6 21.2 2.8 13.4 2.8 4.4v-.8A1.6 1.6 0  0 1 4.4 2h1z"/></g></svg>'); animation-delay:.2s; }
  @keyframes iconSlide{ 0%,10%{ transform:translateY(-50%) translateX(-8px) scale(.9); opacity:0 } 18%,30%{ transform:translateY(-50%) translateX(0) scale(1); opacity:.95 } 38%,80%{ transform:translateY(-50%) translateX(0) scale(1); opacity:.95 } 88%,100%{ transform:translateY(-50%) translateX(-8px) scale(.9); opacity:0 } }
  @media (hover:hover){ header.top .cta::after{ content:""; position:absolute; inset:-2px; border-radius:inherit; pointer-events:none; background: radial-gradient(60% 60% at 50% 50%, rgba(233,180,183,.20), transparent 60%); opacity:0; filter: blur(8px); transition: opacity .3s ease; } header.top .cta:hover::after, header.top .cta:focus-visible::after{ opacity:.35 } }
  

    .brand .lunar-logo{ width:36px; height:36px; display:inline-block; vertical-align:middle; margin-right:2px; }
    .brand .lunar-logo svg{ width:100%; height:100%; display:block; }
    @media (prefers-reduced-motion: reduce){ .brand .lunar-logo .ring{ stroke-width: .6 !important; } }
  

    header.top .cta[href^="tel:"]{
      background: linear-gradient(135deg, #1A2030, #111523) !important;
      border-color: #4a556e !important;
      color: var(--ink) !important;
    }
    header.top .cta[href^="tel:"]::before{
      background-image: url('data:image/svg+xml;utf8,<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="%23C9A86A" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5.4 2.8h3a1.6 1.6 0 0 1 1.6 1.5l.2 2a1.6 1.6 0  0 1-.5 1.3L8.6 9a12.6 12.6 0  0 0 6.4 6.4l1.4-1.1c.4-.3.9-.5 1.3-.5l2 .2a1.6 1.6 0  0 1 1.5 1.6v3a1.6 1.6 0  0 1-1.6 1.6h-.8C10.6 21.2 2.8 13.4 2.8 4.4v-.8A1.6 1.6 0  0 1 4.4 2h1z"/></g></svg>');
    }
    header.top .cta[href^="tel:"]::after{
      background: radial-gradient(60% 60% at 50% 50%, rgba(201,168,106,.25), transparent 60%);
    }
  

    #contact .card > div:nth-child(2)::after{
      content:""; display:block; width:100%; aspect-ratio:16/9;
      background: url('images/storefront_hero_16x9.jpg') center/cover no-repeat;
      border-radius:12px; border:1px solid var(--edge); box-shadow: var(--shadow);
      margin-top:12px;
    }
  

  @media (prefers-reduced-motion: no-preference){
    body::before{
      content:"";
      position:fixed; inset:0;
      pointer-events:none;
      background: radial-gradient(circle at 50% 30%, rgba(233,180,183,0.18), transparent 60%);
      animation: pinkPulse 36s ease-in-out infinite alternate;
      z-index:0;
    }
    @keyframes pinkPulse{
      0%{opacity:0.0} 50%{opacity:0.2} 100%{opacity:0.0}
    }
  }
  @media (prefers-reduced-motion: reduce){
    body::before{ display:none !important; }
  }
  

  /* Spa de la Lune — 30-day calendar styles (modular) */
  #calendarView{display:none;margin-top:8px}
  .cal-chips{display:flex;gap:8px;flex-wrap:wrap}
  .cal-chip{background:#111523;border:1px solid #30384a;border-radius:999px;padding:6px 10px;font-size:13px;color:#b8bdc9;cursor:pointer}
  .cal-chip.active{color:#e8e6e3;border-color:#3a4152;background:#1a2030}

  .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px}
  .cal-cell{position:relative;min-height:72px;border:1px solid #2a3040;background:#0f1320;border-radius:10px;padding:8px;cursor:pointer;text-align:left;overflow:hidden}
  .cal-cell .dow{font-size:11px;color:#b8bdc9;letter-spacing:.2px}
  .cal-cell .day{font-weight:700;font-size:16px}
  .cal-cell .count{position:absolute;right:8px;top:8px;font-size:11px;padding:3px 7px;border-radius:999px;background:#182035;border:1px solid #2a3040;color:#b8bdc9}
  .cal-cell.is-today{outline:1px solid #3a4152;box-shadow:0 0 0 2px rgba(201,168,106,.18) inset}
  .cal-cell.has-people{background:linear-gradient(180deg,#101628,#0f1320);border-color:#3a4152}
  .cal-cell.is-selected{box-shadow:0 0 0 2px rgba(201,168,106,.38)}
  .cal-cell .names{position:absolute;left:8px;right:8px;bottom:8px;display:flex;flex-wrap:wrap;gap:4px}
  .cal-cell .names .nm{font-size:11px;line-height:1;border:1px solid #2a3040;background:#121726;border-radius:6px;padding:2px 6px;white-space:nowrap}

  #dayDrawer{margin-top:12px;border:1px solid #2a3040;border-radius:12px;background:#0f1320;display:none}
  #dayDrawerHeader{padding:12px 12px 0 12px}
  #dayDrawerList{padding:12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
  .roster-card{border:1px solid #2a3040;border-radius:10px;overflow:hidden;background:#0f1320}
  .roster-card img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block}
  .roster-card .meta{padding:8px;display:flex;align-items:center;justify-content:space-between}
  .roster-card .name{font-weight:600}
  .roster-card .fav{border:0;background:transparent;color:#E9B4B7;cursor:pointer;font-size:18px}

  /* tiny badges next to the Today/All tabs */
  .tab-badge{display:inline-flex;min-width:22px;height:22px;align-items:center;justify-content:center;padding:0 6px;margin-left:6px;border-radius:999px;font-size:12px;border:1px solid #2a3040;background:#111523;color:#b8bdc9}

  /* Responsiveness */
  @media (max-width:1199px){.cal-grid{grid-template-columns:repeat(5,1fr)}}
  @media (max-width:991px){.cal-grid{grid-template-columns:repeat(4,1fr)}}
  @media (max-width:767px){.cal-grid{grid-template-columns:repeat(3,1fr)}}
  @media (max-width:479px){.cal-grid{grid-template-columns:repeat(2,1fr)}}

  /* Motion polish + accessibility */
  @media (prefers-reduced-motion:no-preference){
    .cal-cell{transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
    .cal-cell:hover{transform:translateY(-2px)}
  }
  @media (prefers-reduced-motion:reduce){.cal-cell{transition:none}}

  /* Skeletons while loading */
  .skel{background:linear-gradient(90deg,#131827 25%,#1a2030 37%,#131827 63%);background-size:400% 100%;animation:skel 1.2s ease-in-out infinite;border-radius:8px;height:72px}
  @keyframes skel{0%{background-position:100% 0}100%{background-position:0 0}}

  /* --- Calendar: compact, count-only tiles with stronger contrast and density tint --- */
  .cal-cell{ min-height:84px; }
  .cal-cell .dow{ color:#cfd6e4; }
  .cal-cell .day{ color:#ffffff; font-weight:700; font-size:18px; margin-top:2px; }
  .cal-cell .count{ background:#1b2334; border-color:#3a4152; color:#e8e6e3; font-weight:600; }
  .cal-cell .names{ display:none !important; } /* keep names in drawer only */

  /* density backgrounds (busier = brighter) */
  .cal-cell.d1 { background:linear-gradient(180deg,#0f1320,#0f1526); }
  .cal-cell.d2 { background:linear-gradient(180deg,#11172a,#0f1628); }
  .cal-cell.d3 { background:linear-gradient(180deg,#141c34,#0f182c); }
  .cal-cell.d4 { background:linear-gradient(180deg,#17213e,#101a30); }

  @media (hover:hover){ .cal-cell:hover{ outline:1px solid #3a4152; } }
  .cal-cell:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }
  

  /* keep hero height; only widen via .hero > .container (set above) */
  .hero .media-wrap img{ filter:grayscale(12%) brightness(92%); }

  /* Subhead single-span animation (no duplicates) */
  .hero .subhead{ margin:6px 0 0 0; color:var(--muted); font-size:clamp(14px,2.6vw,18px); min-height:1.6em; }
  .hero .subhead > span{ display:inline-block; opacity:1; transition:opacity .4s ease; }

  /* Minimal bottom link centered (safe-area aware) */
  .hero .bottom-link{
    position:absolute; left:50%; bottom:calc(env(safe-area-inset-bottom) + 12px); transform:translateX(-50%);
    display:flex; flex-direction:column; align-items:center; gap:6px; z-index:5;
  }
  .hero .bottom-link a{
    font-weight:600; letter-spacing:.2px; color:#e8e6e3; text-decoration:none; padding:8px 12px;
    background:rgba(15,17,23,.42); border:1px solid #2a3040; border-radius:999px;
  }
  .hero .bottom-link a:hover{ text-decoration:underline }
  .hero .bottom-link svg{ width:16px; height:16px; opacity:.85 }
  @media (max-width:768px){ .hero .bottom-link{ display:none } }


  /* keep default 18s timings; no extra overrides needed */


/* Page-wide background video layer (below all content) */
#page-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
#page-bg video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: .18;
  filter: saturate(105%) brightness(90%) contrast(95%);
}
#page-bg::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(120% 120% at 50% 20%, rgba(20,24,36,.18), rgba(20,24,36,.45) 60%, rgba(20,24,36,.62)),
    linear-gradient(180deg, rgba(15,17,23,.42), rgba(15,17,23,.66));
}

/* Keep page content above video, but exclude modal roots */
body > *:not(#page-bg):not(#hostessModal):not(#profileModal):not(.hostess-modal):not([data-modal-root]) {
  position: relative;
  z-index: 1;
}

/* Ensure modals stay fixed and on top */
#hostessModal,
#profileModal,
.hostess-modal,
[data-modal-root] {
  position: fixed !important;
  inset: 0;
  z-index: 10000 !important;
}

/* Hide video background on small screens or reduced motion */
@media (max-width: 768px){
  #page-bg { display: none !important; }
}
@media (prefers-reduced-motion: reduce){
  #page-bg { display: none !important; }
}


  .brand span{
    font-family: "eds-market-main-script", "Playfair Display", Georgia, serif;
    font-weight: 400;
    font-style: normal;
    font-size: clamp(22px, 3.6vw, 34px);
    letter-spacing: .4px;
    line-height: 1;
  }


  .hamburger{ display:none; position:relative; width:44px; height:44px; margin-left:8px;
    border:1px solid var(--edge); border-radius:10px; background:#111523; }
  .hamburger .bar{ position:absolute; left:10px; right:10px; height:2px; background:#e8e6e3; border-radius:2px; }
  .hamburger .bar:nth-child(1){ top:13px } .hamburger .bar:nth-child(2){ top:21px } .hamburger .bar:nth-child(3){ top:29px }
  .hamburger[aria-expanded="true"] .bar:nth-child(1){ transform:translateY(8px) rotate(45deg) }
  .hamburger[aria-expanded="true"] .bar:nth-child(2){ opacity:0 }
  .hamburger[aria-expanded="true"] .bar:nth-child(3){ transform:translateY(-8px) rotate(-45deg) }

  #navDrawer{ position:fixed; inset:auto 0 0 0; top:70px; z-index:80; background:rgba(15,17,23,.85); backdrop-filter: blur(8px);
    border-top:1px solid var(--edge); padding:12px; }
  #navDrawer[hidden]{ display:none !important; }
  #navDrawer .drawer-inner{ max-width:var(--maxw); margin:auto; padding:0 20px; display:grid; gap:12px; }
  #navDrawer .drawer-row{ display:flex; gap:8px; flex-wrap:wrap; }
  #navDrawer .btn-en, #navDrawer .btn-fr{
    padding:10px 14px; border-radius:999px; background:#111523; border:1px solid #30384a; color:var(--ink); font-weight:600;
  }

  @media (max-width: 768px){
    header.top .controls{ display:none !important; }
    .hamburger{ display:inline-block; }
    header.top .brand{ gap:10px }
  }

  @media (max-width: 768px){
    .brand span.sms-mode{ position:relative; padding-left:26px; }
    .brand span.sms-mode::before{
      content:""; position:absolute; left:0; top:50%; width:18px; height:18px; transform:translateY(-50%);
      background: url('data:image/svg+xml;utf8,<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="%23E9B4B7" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="14" rx="2"/><path d="M3.5 6l7.7 6a2 2 0 0 0 2.6 0L21 6"/></g></svg>') center/contain no-repeat;
      filter: drop-shadow(0 0 6px rgba(233,180,183,.35));
      opacity:.9;
      animation: smsPing 6s ease-in-out infinite;
    }
    @media (prefers-reduced-motion: reduce){
      .brand span.sms-mode::before{ animation: none; }
    }
    @keyframes smsPing{
      0%,70%{ transform:translateY(-50%) scale(1); opacity:.9 }
      73%{ transform:translateY(-48%) scale(1.08); opacity:1 }
      76%{ transform:translateY(-50%) scale(1); opacity:.9 }
      100%{ transform:translateY(-50%) scale(1); opacity:.9 }
    }
  }


  /* One source of truth for header height */
  :root{ --header-h: 70px; }

  /* Ensure sticky header always beats hero/webgl/video */
  header.top{ z-index: 120 !important; }
  /* The hamburger should never be covered */
  .hamburger{ z-index: 121; }

  /* Drawer sits EXACTLY under the header and is on top of everything */
  #navDrawer{
    position: fixed;
    left: 0; right: 0;
    top: var(--header-h) !important;
    z-index: 200 !important;              /* above header (120), hero, page video */
    transform: translateY(-6px);
    opacity: 0;
    transition: transform .18s ease, opacity .18s ease;
  }
  #navDrawer[hidden]{ display:none !important; visibility:hidden !important; opacity:0 !important; }

  /* Visible state (JS toggles [hidden]) */
  #navDrawer:not([hidden]){
    transform: none;
    opacity: 1;
  }

  /* Prevent background scroll when drawer is open */
  body.nav-open{ overflow: hidden; }

  /* iOS safe-area nicety */
  @supports (padding: max(0px)){
    #navDrawer .drawer-inner{ padding-bottom: max(16px, env(safe-area-inset-bottom)); }
  }


  /* Center the gallery heading/copy and the tabs row */
  #gallery .section-title,
  #gallery .card > p.muted{ text-align:center; }

  #galleryTabs{
    display:flex !important;            /* keep your inline style’s display */
    justify-content:center;             /* center the buttons */
    gap:12px !important;                /* tidy spacing */
    margin:12px auto 18px !important;   /* center the row itself */
    flex-wrap:wrap;
  }

  /* Equal-size, neon-outline buttons (only in the gallery tabs row) */
  #galleryTabs .cta{
    min-width:120px;                    /* same width for Today / Calendar / All */
    padding:10px 16px;
    text-align:center;
    border-radius:999px;
    background:rgba(20,24,36,.55);
    color:#e8e6e3;
    border:1px solid rgba(233,180,183,.45);
    box-shadow:
      0 0 0 2px rgba(233,180,183,.20) inset,
      0 0 12px rgba(255, 0, 170, .55),
      0 0 28px rgba(255, 0, 170, .28);
    transition:transform .15s ease, box-shadow .2s ease, opacity .2s ease;
  }
  #galleryTabs .cta:hover{
    transform:translateY(-1px);
    box-shadow:
      0 0 0 2px rgba(233,180,183,.30) inset,
      0 0 16px rgba(255, 0, 170, .70),
      0 0 36px rgba(255, 0, 170, .36);
    text-decoration:none;
  }
  #galleryTabs .cta:active{ transform:translateY(0) scale(.98); }

  /* Make the gallery card ready for a background layer */
  #gallery .card{ position:relative; overflow:hidden; }
  #gallery .card > *{ position:relative; z-index:1; }

  /* Page-internal video background for the gallery card */
  #gallery .gallery-bg{
    position:absolute; inset:0; z-index:0; pointer-events:none; border-radius:inherit;
  }
  #gallery .gallery-bg video{
    position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
    opacity:.12; filter:saturate(105%) brightness(88%) contrast(98%);
    border-radius:inherit;
  }
  #gallery .gallery-bg::after{
    content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
    background:
      radial-gradient(120% 110% at 50% 15%, rgba(20,24,36,.16), rgba(20,24,36,.45) 60%, rgba(20,24,36,.62)),
      linear-gradient(180deg, rgba(15,17,23,.35), rgba(15,17,23,.65));
  }

  /* Respect small screens / reduced motion */
  @media (max-width: 768px){ #gallery .gallery-bg{ display:none !important; } }
  @media (prefers-reduced-motion: reduce){ #gallery .gallery-bg{ display:none !important; } }


/* === Global Neon Pill Style for ALL .cta.secondary buttons === */
.cta.secondary {
  min-width: 180px;                 /* consistent presence */
  text-align: center;
  border-radius: 999px;
  background: rgba(20,24,36,.55);
  color: #e8e6e3 !important;
  border: 1px solid rgba(233,180,183,.45);
  box-shadow:
    0 0 0 2px rgba(233,180,183,.20) inset,
    0 0 12px rgba(255, 0, 170, .55),
    0 0 28px rgba(255, 0, 170, .28);
  transition: transform .15s ease, box-shadow .2s ease, opacity .2s ease;
}

.cta.secondary:hover {
  text-decoration: none;
  transform: translateY(-1px);
  box-shadow:
    0 0 0 2px rgba(233,180,183,.30) inset,
    0 0 16px rgba(255, 0, 170, .70),
    0 0 36px rgba(255, 0, 170, .36);
}

.cta.secondary:active {
  transform: translateY(0) scale(.98);
}

/* Optional: center secondary buttons inside the contact card on small screens */
@media (max-width: 768px){
  #contact .card > div:last-child {
    display: grid;
    gap: 10px;
    justify-items: center;
  }
}


  /* Let the card breathe and avoid clipping neon glows */
  #contact .card{
    overflow: visible;                              /* allow button glow */
    grid-template-columns: minmax(0,1.1fr) minmax(0,0.9fr);
    gap: clamp(16px, 3vw, 32px);
    align-items: start;
  }
  /* Don’t let columns collapse */
  #contact .card > div{ min-width: 0; }

  /* Right column: align content neatly, keep button inside */
  #contact .card > div:last-child{
    display: flex;
    flex-direction: column;
    gap: 12px;
    align-items: flex-end;                          /* right-align on desktop */
    padding-right: clamp(0px, 2vw, 12px);          /* tiny space for glow */
  }

  /* Make the neon pill behave like a proper button */
  #contact .card > div:last-child .cta{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 180px;                               /* same presence as tabs */
    max-width: 100%;
    text-align: center;
    white-space: nowrap;
  }

  /* Tighten headings in this card */
  #contact .section-title{ margin-bottom: 10px; }

  /* Stack nicely on tablets/phones */
  @media (max-width: 900px){
    #contact .card{
      grid-template-columns: 1fr;                   /* single column */
      gap: 18px;
    }
    #contact .card > div:last-child{
      align-items: center;                          /* center button on mobile */
      padding-right: 0;
    }
    #contact .card > div:last-child .cta{
      width: min(260px, 80%);                       /* keep it tidy */
    }
    /* Keep the photo pleasant below the details */
    #contact .card > div:nth-child(2)::after{
      margin-top: 14px;
      border-radius: 12px;
    }
  }


  /* phones: fix the inline grid that keeps two columns */
  @media (max-width: 560px){
    #contact .card{
      display:block !important;                 /* override inline grid */
      overflow:visible !important;              /* don't clip neon glow */
      padding:16px;                             /* a bit more breathing room */
      border-radius:14px;
    }
    #contact .card > div{ width:100%; min-width:0; }
    #contact .card > div + div{ margin-top:16px; }  /* space between the two halves */

    /* Headings & text rhythm */
    #contact .section-title{
      text-align:center;
      font-size:clamp(20px, 6.5vw, 28px);
      margin-bottom:10px;
    }
    #contact .card p,
    #contact .card li{ line-height:1.55; }

    /* Neon pill: full-width-ish, centered, no clipping */
    #contact .card > div:last-child{
      display:grid;
      gap:12px;
      justify-items:center;                     /* center the button & map */
      padding-right:0 !important;
    }
    #contact .card > div:last-child .cta{
      width:min(92%, 320px);
      min-width:unset;
      white-space:nowrap;
    }

    /* Map image (::after) keeps nice margin on phones */
    #contact .card > div:nth-child(2)::after{
      margin-top:12px !important;
      border-radius:12px !important;
    }

    /* Prevent odd number wrapping for phone links */
    #contact a[href^="tel:"]{
      word-break:keep-all;
      white-space:nowrap;
    }
  }

  /* extra small handsets */
  @media (max-width: 360px){
    #contact .card{ padding:14px; }
    #contact .card > div:last-child .cta{ width:100%; }
  }


  /* === Neon pill style for HEADER CTA (Call) ===
     Keep the left icon padding from your design-enhancements */
  header.top .cta,
  header.top .cta.secondary{
    min-width: 150px;                  /* consistent size */
    text-align: center;
    border-radius: 999px;
    background: rgba(20,24,36,.55) !important;
    color: #e8e6e3 !important;
    border: 1px solid rgba(233,180,183,.45) !important;
    box-shadow:
      0 0 0 2px rgba(233,180,183,.20) inset,
      0 0 12px rgba(255, 0, 170, .55),
      0 0 28px rgba(255, 0, 170, .28) !important;
    transition: transform .15s ease, box-shadow .2s ease, opacity .2s ease;
    padding-left: 42px !important;     /* preserve space for the icon ::before */
  }
  header.top .cta:hover,
  header.top .cta.secondary:hover{
    text-decoration: none;
    transform: translateY(-1px);
    box-shadow:
      0 0 0 2px rgba(233,180,183,.30) inset,
      0 0 16px rgba(255, 0, 170, .70),
      0 0 36px rgba(255, 0, 170, .36) !important;
  }
  header.top .cta:active,
  header.top .cta.secondary:active{
    transform: translateY(0) scale(.98);
  }

  /* If you previously forced a dark gradient for CALL (cta-contrast-fix),
     this line neutralizes it so the neon wins */
  header.top .cta[href^="tel:"]{
    background: rgba(20,24,36,.55) !important;
    border-color: rgba(233,180,183,.45) !important;
    color: #e8e6e3 !important;
  }

  /* Optional: on very narrow screens, make both header CTAs equal width */
  @media (max-width: 768px){
    header.top .controls{ gap: 8px; }
    header.top .cta, header.top .cta.secondary{
      min-width: 160px;
    }
  }


  /* Reserve space for the vertical scrollbar to avoid layout shift */
  html { overflow-y: scroll; scrollbar-gutter: stable; }

  /* Firefox: simple color pairing (thumb track) */
  html {
    scrollbar-width: thin;
    scrollbar-color: #ff38ce rgba(20,24,36,0.35); /* thumb, track */
  }

  /* Chromium/WebKit (Chrome, Edge, Safari) */
  ::-webkit-scrollbar {
    width: 12px;            /* visible, but not bulky */
    height: 12px;           /* for any horizontal bars that appear */
  }

  ::-webkit-scrollbar-track {
    background: rgba(20,24,36,0.35);             /* dark, semi-transparent track */
    border-radius: 8px;
  }

  ::-webkit-scrollbar-thumb {
    border-radius: 8px;
    /* Neon pink thumb with a subtle glow */
    background: linear-gradient(180deg, #ff4ad5, #ff2fcf);
    border: 3px solid rgba(20,24,36,0.35);       /* creates an inset gutter so it pops */
    box-shadow:
      0 0 10px rgba(255, 47, 207, 0.55),
      0 0 18px rgba(255, 47, 207, 0.35) inset;
  }

  ::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(180deg, #ff67dc, #ff42d4);
    box-shadow:
      0 0 12px rgba(255, 47, 207, 0.75),
      0 0 22px rgba(255, 47, 207, 0.45) inset;
  }

  /* Optional: slightly thinner on very small screens (where overlay scrollbars may be used anyway) */
  @media (max-width: 600px) {
    ::-webkit-scrollbar { width: 10px; height: 10px; }
  }


  /* Keep the layout stable and reserve gutter */
  html, body { scrollbar-gutter: stable; }

  /* Edge/Chromium: visible track + solid neon thumb */
  ::-webkit-scrollbar {
    width: 14px;
    height: 14px; /* in case a horizontal bar appears */
  }
  ::-webkit-scrollbar-track {
    background: #101521;              /* dark track for contrast */
    border-radius: 999px;
  }
  ::-webkit-scrollbar-thumb {
    background-color: #ff38ce !important;  /* solid neon so it doesn't blend */
    border-radius: 999px;
    border: 3px solid #101521;             /* inset gutter so the thumb pops */
    min-height: 64px;                      /* ensure visibility on long pages */
    box-shadow: 0 0 8px rgba(255, 56, 206, .55);
  }
  ::-webkit-scrollbar-thumb:hover {
    background-color: #ff66dd !important;
    box-shadow: 0 0 10px rgba(255, 56, 206, .75);
  }

  /* Optional: slightly darken the button caps so the pink stands out */
  ::-webkit-scrollbar-button { background: #1b2233; }
  ::-webkit-scrollbar-corner { background: #101521; }


  /* Hide the header when scrolled down (JS toggles header-auto-hide) */
  body.header-auto-hide header.top{
    transform: translateY(-100%);
    transition: transform .18s ease;
    will-change: transform;
    pointer-events: none; /* don't block the hotspot while hidden */
  }

  /* Show the header (JS toggles header-show) */
  body.header-show header.top{
    transform: translateY(0);
    pointer-events: auto;
  }

  /* The thin, invisible hover strip at the very top that reveals header */
  .header-hotspot{
    position: fixed;
    top: 0; left: 0; right: 0;
    height: 14px;               /* easy to hit */
    z-index: 10000;             /* above everything, incl. header when hidden */
    pointer-events: auto;
  }


  /* Invisible hover strip at the very top that "catches" the pointer */
  .header-hotspot{
    position: fixed !important;   /* override any global rules */
    left: 0; right: 0; top: 0;
    height: 24px;                 /* slightly taller for easier hit */
    z-index: 10000 !important;    /* always above page content & hidden header */
    pointer-events: auto;
    background: transparent;
  }

  /* Smooth slide for the header */
  header.top{
    transition: transform .18s ease;
    will-change: transform;
  }

  /* Hidden when scrolled and not actively showing */
  body.header-auto-hide:not(.header-show) header.top{
    transform: translateY(-100%);
    pointer-events: none; /* avoid fighting the hotspot while hidden */
  }

  /* Visible near the top, or when hovering/focused */
  body.header-show header.top,
  body:not(.header-auto-hide) header.top{
    transform: translateY(0);
    pointer-events: auto;
  }


  /* Make header always visible & fixed */
  header.top{
    position: fixed !important;
    left: 0; right: 0; top: 0;
    transform: none !important;
    z-index: 200 !important; /* above everything else you have */
  }

  /* Neutralize any auto-hide transforms */
  body.header-auto-hide header.top,
  body.header-show header.top{
    transform: none !important;
    pointer-events: auto !important;
  }

  /* Kill the hover strip */
  .header-hotspot{ display: none !important; }
  
  /* Keep anchor scrolling tidy with a fixed header */
  :root{ --header-h: 70px; }
  section, [id]{ scroll-margin-top: var(--header-h); }


/* Desktop nav links */
header.top .links{
  display:flex; gap:36px; align-items:center; margin-left:40px;
}
header.top .links a{ font-weight:600; color:var(--ink); text-decoration:none; }
header.top .links a:hover{ text-decoration:underline; }

/* Hide the inline links on small screens */
@media (max-width: 900px){
  header.top .links{ display:none !important; }
}

/* Neon hamburger bars */
.hamburger{
  position:relative; width:44px; height:44px; margin-left:8px;
  border:1px solid #30384a; border-radius:10px; background:#111523;
  box-shadow: inset 0 0 12px rgba(255,56,206,.20), 0 0 14px rgba(255,56,206,.18);
}
.hamburger .bar{
  position:absolute; left:10px; right:10px; height:2px; border-radius:2px;
  background:#ff38ce;
  box-shadow: 0 0 6px rgba(255,56,206,.9), 0 0 14px rgba(255,56,206,.45);
  transition: transform .18s ease, opacity .18s ease;
}
.hamburger .bar:nth-child(1){ top:13px }
.hamburger .bar:nth-child(2){ top:21px }
.hamburger .bar:nth-child(3){ top:29px }
.hamburger[aria-expanded="true"] .bar:nth-child(1){ transform:translateY(8px) rotate(45deg) }
.hamburger[aria-expanded="true"] .bar:nth-child(2){ opacity:0 }
.hamburger[aria-expanded="true"] .bar:nth-child(3){ transform:translateY(-8px) rotate(-45deg) }

/* Neon drawer polish + backdrop */
#navDrawer{
  position:fixed; left:0; right:0; top:var(--header-h,70px);
  z-index:200 !important; padding:16px 0;
  background: rgba(12,14,20,.86);
  backdrop-filter: blur(10px);
  border-top:1px solid #2c3242;
  box-shadow: 0 -10px 30px rgba(0,0,0,.35), inset 0 0 0 1px rgba(255,56,206,.15);
  transform: translateY(-6px);
  opacity: 0; transition: transform .18s ease, opacity .18s ease;
}
#navDrawer:not([hidden]){ transform:none; opacity:1; }
#navDrawer .drawer-inner{ max-width:var(--maxw); margin:auto; padding:0 20px; display:grid; gap:14px; }
#navDrawer .drawer-row{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; }

/* Neon chips for links inside drawer */
#navDrawer .drawer-row a{
  display:inline-flex; align-items:center; gap:10px;
  padding:10px 14px; border-radius:999px; text-decoration:none;
  background: rgba(20,24,36,.55);
  color:#e8e6e3; border:1px solid rgba(233,180,183,.45);
  box-shadow:
    inset 0 0 0 2px rgba(233,180,183,.20),
    0 0 12px rgba(255,0,170,.55),
    0 0 28px rgba(255,0,170,.28);
}

/* Subtle neon flicker when opening */
@keyframes neonFlicker{
  0%,19%,21%,23%,25%,54%,56%,100% { opacity:1 }
  20%,24%,55% { opacity:.7 }
  22% { opacity:.4 }
}
#navDrawer.neon-flicker{ animation: neonFlicker .9s ease-out 1; }


/* ============================
   Portrait overlay (meta card)
   ============================ */
.portrait{ position:relative; overflow:hidden; }
.portrait.hostess-card{ cursor:pointer; } /* click affordance for modal */

.portrait .meta-card{
  position:absolute; inset:0; display:flex; align-items:flex-end;
  padding:14px; color:#fff; opacity:0; transform:translateY(8%);
  transition:opacity .35s ease, transform .35s ease, box-shadow .5s ease;
  background: radial-gradient(120% 110% at 50% 80%,
    rgba(217,74,140,.35), rgba(197,63,122,.55) 60%, rgba(167,47,99,.75));
}
.portrait:hover .meta-card{
  opacity:1; transform:translateY(0);
  box-shadow: inset 0 0 40px rgba(217,74,140,.45);
  animation: pinkPulse 3s ease-in-out infinite alternate;
}
@media (hover:none){
  .portrait .meta-card{ opacity:0; pointer-events:none; }
  .portrait.show-meta .meta-card{ opacity:1; pointer-events:auto; transform:none; }
}

/* Glassy spec panel */
.meta-card .spec{
  width:100%; padding:12px; border:1px solid rgba(255,255,255,.18);
  border-radius:12px; backdrop-filter:blur(6px);
  background:rgba(217,74,140,.22);
  font-size:clamp(11px,2.8vw,14px); line-height:1.45;
}
/* label | value (value flexible) */
.meta-card .spec .row{
  display:grid; grid-template-columns:auto minmax(0,1fr);
  gap:10px; align-items:center; padding:6px 0;
}
.meta-card .spec .row + .row{ border-top:1px dashed rgba(255,255,255,.25); }

.meta-card .spec .k{
  font-size:clamp(11px,2.4vw,13px); letter-spacing:.5px; text-transform:uppercase;
  color:#fff; opacity:.9; white-space:nowrap;
}
.meta-card .spec .v{
  font-weight:700; color:#fff; font-size:clamp(12px,3.2vw,15px);
  white-space:normal !important; word-break:keep-all !important;
  overflow-wrap:normal !important; hyphens:auto;
}

.meta-card .name{ display:none !important; }
.portrait figcaption{ z-index:5; }

/* Phones: stack value under label */
@media (max-width:560px){
  .meta-card .spec .row{ grid-template-columns:1fr !important; }
  .meta-card .spec .v{ display:block; margin-top:2px; justify-self:start; }
}

/* ============================
   Hover chip (small pill)
   ============================ */
.hostess-card, .portrait.hostess-card{ position:relative; } /* for width cap */

.hostess-card .hover-chip,
.hostess-card .hover-chip *{
  writing-mode:horizontal-tb !important;
  text-orientation:mixed !important;
  transform:none !important;
}

.hostess-card .hover-chip{
  display:inline-flex; flex-wrap:wrap;               /* allow wrap */
  align-items:center; gap:8px; padding:6px 10px;
  border-radius:999px; background:rgba(255,255,255,.08);
  backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  color:#fff; box-sizing:border-box;

  /* keep chip inside portrait – prevents clipping on right edge */
  max-inline-size:calc(100% - 24px);
  max-width:calc(100% - 24px);
  margin-inline:12px;
}

.hostess-card .hover-chip .k{
  font-weight:600; text-transform:uppercase; letter-spacing:.08em;
  white-space:nowrap; opacity:.9; font-size:clamp(11px,1.6vw,12px);
}
.hostess-card .hover-chip .v{
  min-width:0; font-weight:700; line-height:1.1;
  font-size:clamp(12px,2.4vw,16px);
  white-space:normal !important; word-break:keep-all !important;
  overflow-wrap:normal !important; hyphens:auto;
}

/* Narrow screens: put value below label */
@media (max-width:420px){
  .hostess-card .hover-chip{
    flex-direction:column; align-items:flex-start; border-radius:12px;
    max-inline-size:calc(100% - 20px); max-width:calc(100% - 20px);
    margin-inline:10px;
  }
  .hostess-card .hover-chip .v{ margin-top:2px; }
}

/* Pulse */
@keyframes pinkPulse{
  from{ box-shadow: inset 0 0 25px rgba(217,74,140,.25); }
  to  { box-shadow: inset 0 0 60px rgba(197,63,122,.55); }
}


/* Don’t let the page-wide stacking rule touch dialog/modal roots */
body > *:not(#page-bg):not(#hostessModal):not(#profileModal):not(.hostess-modal):not([data-modal-root]):not([role="dialog"][aria-modal="true"]) {
  position: relative;
  z-index: 1;
}

/* Force all common hostess modal roots to be fixed and above everything */
#hostessModal,
#profileModal,
.hostess-modal,
[data-modal-root],
[role="dialog"][aria-modal="true"].hostess-modal,
[role="dialog"][aria-modal="true"][data-hostess-modal]{
  position: fixed !important;
  inset: 0 !important;
  z-index: 10000 !important;
  display: none;
}
#hostessModal[aria-hidden="false"],
#profileModal[aria-hidden="false"],
.hostess-modal[aria-hidden="false"],
[data-modal-root][aria-hidden="false"],
[role="dialog"][aria-modal="true"].hostess-modal:not([aria-hidden="true"]),
[role="dialog"][aria-modal="true"][data-hostess-modal]:not([aria-hidden="true"]){
  display: block !important;
}

/* Backdrop/card safety (optional; your modal CSS already sets these) */
#hostessModal .modal-backdrop{ position:absolute; inset:0; }
#hostessModal .modal-card{ position:absolute; inset:clamp(8px,5vh,40px) clamp(8px,5vw,40px); z-index:1; }


  /* Rolling Days strip (Schedule) */
  #scheduleBox { margin-top: 10px; }
  #scheduleBox .board { position: relative; padding: 8px 72px; } /* room for chevrons */
  #scheduleBox .rail { display: flex; gap: clamp(10px, 1.6vw, 16px); overflow: hidden; }

  .day-tile {
    min-width: 150px; flex: 0 0 auto; padding: 12px 14px; border-radius: 14px;
    border: 1px solid rgba(255,255,255,0.12);
    background: radial-gradient(120% 150% at 30% 20%, rgba(242,166,179,0.18), rgba(242,166,179,0.06) 60%, rgba(242,166,179,0.04));
    color: #fff; cursor: pointer; user-select: none;
    display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;
    transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease;
  }
  .day-tile:hover { transform: translateY(-1px); box-shadow: 0 6px 20px rgba(242,166,179,0.12); }
  .day-tile.active { border-color: rgba(242,166,179,0.55); box-shadow: 0 8px 28px rgba(242,166,179,0.18); }
  .day-tile .dow  { font: 700 15px/1.15 system-ui, -apple-system, Segoe UI, Roboto; color:#e7fbff; opacity:0.92; }
  .day-tile .date { font: 600 14px/1.2  system-ui, -apple-system, Segoe UI, Roboto; color:#fff;     opacity:0.96; }
  .day-tile .today {
    margin-top: 8px; font: 800 12px/1 system-ui, -apple-system;
    color: #ff30cf; text-shadow: 0 0 12px rgba(255,23,206,0.65);
  }
  .day-tile.disabled { opacity: 0.45; pointer-events: none; }

  /* Neon chevrons (namespaced to avoid header .nav rules) */
  .rollNav {
    all: unset;
    position: absolute; top: 50%; transform: translateY(-50%);
    width: 56px; height: 56px; display: flex; align-items: center; justify-content: center;
    cursor: pointer; z-index: 5;
  }
  .rollNav svg { width: 100%; height: 100%;
    filter: drop-shadow(0 0 6px rgba(255,0,200,0.65)) drop-shadow(0 0 14px rgba(255,0,200,0.45));
  }
  .rollNav path { stroke: #ff33cc; stroke-width: 5; fill: none; }
  .rollNav:hover path { stroke: #ff66dd; }
  .rollNav.left  { left: 10px; }
  .rollNav.right { right: 10px; }
  .rollNav[aria-disabled="true"]{ opacity: 0.35; pointer-events: none; }

  #scheduleBox .well {
    margin-top: 12px; background: rgba(18,20,28,0.55); border: 1px solid rgba(255,255,255,0.06);
    border-radius: 16px; padding: 12px;
  }
  #scheduleBox .well .title { color:#eaeaf0; font-weight:700; margin-bottom:8px; }
  #rdGrid.gallery { margin-top: 8px; }
  #rdEmpty { color:#9aa0a6; font-style: italic; margin: 8px 4px 0 4px; display: none; }

  @media (max-width: 640px){
    #scheduleBox .board { padding: 6px 58px; }
    .rollNav { width: 48px; height: 48px; }
    .day-tile { min-width: 130px; }
  }


/* --- Safari mobile tap fix (buttons over SVG) --- */
#scheduleBox .rollNav{
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
  touch-action: manipulation;
}
#scheduleBox .rollNav svg, 
#scheduleBox .rollNav path { pointer-events: none; }
/* Provide visible focus outline for keyboard users */
#scheduleBox .rollNav:focus-visible { outline: 2px solid #ff66dd; outline-offset: 2px; }
