/* Moved verbatim from templates/_partials/therapy_event_lightbox.html (inline <style>) so it can be
   cached. Keep in sync with that template; cascade position = the
   <link> that replaced the <style> block. */
/* Expand lightbox — slides up as a bottom sheet on mobile, centred
   card on ≥720px. Same visual language the /schedule page uses; this
   partial just makes that available to any therapy-site surface. */
.sched-expand{position:fixed;inset:0;z-index:8500;display:none;align-items:flex-end;justify-content:center;pointer-events:none;}
.sched-expand.is-open{display:flex;pointer-events:auto;}
.sched-expand-scrim{position:fixed;inset:0;background:rgba(14,14,16,0.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);opacity:0;transition:opacity 0.28s ease;}
.sched-expand.is-shown .sched-expand-scrim{opacity:1;}
.sched-expand-card{
  position:relative; background:var(--ts-paper-hi); color:var(--ts-ink);
  width:100%; max-width:520px; margin:0 auto;
  padding:0 0 max(22px, env(safe-area-inset-bottom, 22px));
  border:1px solid rgba(14,14,16,0.18); border-bottom:0;
  border-radius:18px 18px 0 0;
  box-shadow:0 -32px 80px -22px rgba(0,0,0,0.65);
  max-height:90dvh; overflow-y:auto; overflow-x:hidden;
  transform:translateY(100%);
  transition:transform 0.36s cubic-bezier(0.2,0.7,0.2,1);
  will-change:transform;
}
.sched-expand.is-shown .sched-expand-card{transform:translateY(0);}
.sched-expand-card.is-dragging{transition:none;}
.sched-expand-grip{
  position:sticky; top:0; left:0; right:0; z-index:3;
  display:flex; align-items:center; justify-content:center;
  padding:8px 0 4px; background:var(--ts-paper-hi);
  cursor:grab; touch-action:none;
}
.sched-expand-grip-bar{width:46px; height:4px; border-radius:99px; background:rgba(14,14,16,0.18);}
.sched-expand-grip:active{cursor:grabbing;}
@media (min-width:720px){
  .sched-expand{align-items:flex-start; padding:48px 14px 80px;}
  .sched-expand-card{
    margin:0 auto; border-radius:18px; border:1px solid rgba(14,14,16,0.18);
    box-shadow:0 32px 60px -18px rgba(0,0,0,0.65);
    transform:translateY(24px); opacity:0;
    transition:transform 0.28s ease, opacity 0.22s ease;
  }
  .sched-expand.is-shown .sched-expand-card{transform:translateY(0); opacity:1;}
  .sched-expand-grip{display:none;}
}
.sched-expand-close{position:absolute;top:28px;right:18px;background:rgba(14,14,16,0.78);border:0;color:#fff;font-size:1.2rem;cursor:pointer;line-height:1;width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;z-index:4;transition:background .15s;}
.sched-expand-share{position:absolute;top:28px;left:18px;background:rgba(14,14,16,0.78);border:0;color:#fff;font-size:0.95rem;cursor:pointer;line-height:1;width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;z-index:4;transition:background .15s;}
.sched-expand-share:hover,.sched-expand-close:hover{background:var(--ts-rust);}

/* Share sheet — slides up from the bottom over the lightbox. */
.sched-share{position:fixed;inset:0;z-index:9000;display:none;align-items:flex-end;justify-content:center;pointer-events:none;}
.sched-share.is-open{display:flex;pointer-events:auto;}
.sched-share-scrim{position:fixed;inset:0;background:rgba(14,14,16,0.72);backdrop-filter:blur(8px);opacity:0;transition:opacity 0.24s ease;}
.sched-share.is-shown .sched-share-scrim{opacity:1;}
.sched-share-card{
  position:relative;width:100%;max-width:520px;
  background:var(--ts-paper-hi);color:var(--ts-ink);
  border:1px solid rgba(14,14,16,0.14);border-bottom:0;
  border-radius:18px 18px 0 0;
  padding:18px 22px max(22px, env(safe-area-inset-bottom, 22px));
  box-shadow:0 -28px 60px -22px rgba(0,0,0,0.55);
  transform:translateY(100%);
  transition:transform 0.28s cubic-bezier(0.2,0.7,0.2,1);
}
.sched-share.is-shown .sched-share-card{transform:translateY(0);}
.sched-share-title{font-family:var(--slab);font-weight:800;font-size:1.05rem;margin:6px 0 14px;}
.sched-share-row{display:flex;gap:10px;align-items:stretch;background:var(--ts-paper);border:1px solid rgba(14,14,16,0.10);border-radius:10px;padding:8px 10px;margin-bottom:14px;}
.sched-share-url{flex:1 1 auto;font-family:var(--mono);font-size:0.78rem;color:var(--ts-ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;align-self:center;}
.sched-share-copy{flex:0 0 auto;background:var(--ts-ink);color:#fff;border:0;padding:8px 14px;border-radius:6px;font-family:var(--mono);font-size:0.6rem;letter-spacing:0.18em;text-transform:uppercase;cursor:pointer;transition:background 0.15s;}
.sched-share-copy:hover{background:var(--ts-rust);}
.sched-share-copy.is-done{background:var(--ts-rust);color:#fff;}
.sched-share-actions{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:8px;}
.sched-share-actions a{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:14px 8px;border-radius:10px;
  background:var(--ts-paper);border:1px solid rgba(14,14,16,0.10);
  color:var(--ts-ink);text-decoration:none;
  font-family:var(--mono);font-size:0.58rem;letter-spacing:0.16em;text-transform:uppercase;
  transition:border-color 0.15s, transform 0.1s;
}
.sched-share-actions a:hover{border-color:var(--ts-rust); transform:translateY(-1px);}
.sched-share-actions a i{font-size:1.2rem; color:var(--ts-rust);}

/* Flyer area — portrait poster with blurred-self background halo. */
.sched-expand-flyer-wrap{position:relative; width:100%; height:40vh; max-height:40vh; overflow:hidden; background:var(--ts-ink);}
.sched-expand-flyer-bg{position:absolute; inset:-8% -10%; background-position:center; background-size:cover; filter:blur(28px) saturate(1.1) brightness(0.65); transform:scale(1.1); z-index:0;}
.sched-expand-flyer{position:relative; z-index:1; display:block; width:100%; height:100%; object-fit:contain; background:transparent;}
.sched-expand-flyer--ph{position:relative; z-index:1; display:flex; align-items:center; justify-content:center; height:100%; background:linear-gradient(155deg,#5a8a8a 0%,#3f7c7c 60%,#1c4a4a 100%); color:rgba(245,238,221,0.55); font-family:var(--mono); font-size:0.7rem; letter-spacing:0.2em; text-transform:uppercase;}

.sched-expand-meta{padding:12px 22px 0;}
.sched-expand-date{font-family:var(--mono);font-size:0.6rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--ts-rust);margin-bottom:6px;}
.sched-expand-name{font-family:var(--slab);font-weight:800;font-size:clamp(1.35rem,3.6vw,1.9rem);line-height:1.05;letter-spacing:-0.01em;color:var(--ts-ink);margin-bottom:6px;}
.sched-expand-where{font-family:var(--mono);font-size:0.66rem;letter-spacing:0.16em;text-transform:uppercase;color:var(--ts-ink-mute);display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.sched-expand-venue{display:inline-flex; align-items:center; gap:8px; text-decoration:none; color:var(--ts-ink-soft); padding:4px 12px 4px 4px; border:1px solid rgba(14,14,16,0.10); border-radius:999px; background:var(--ts-paper-hi); transition:border-color 0.15s, color 0.15s, transform 0.1s; letter-spacing:0.08em;}
.sched-expand-venue:hover{border-color:var(--ts-rust); color:var(--ts-rust); transform:translateY(-1px);}
.sched-expand-venue-av{width:24px; height:24px; border-radius:50%; overflow:hidden; background:radial-gradient(circle at 30% 30%,var(--ts-teal-mute, #5a8a8a),var(--ts-ink) 75%); color:#f5eedd; display:inline-flex; align-items:center; justify-content:center; font-family:var(--slab); font-weight:900; font-size:0.7rem; letter-spacing:0; flex:0 0 auto;}
.sched-expand-venue-av img{width:100%; height:100%; object-fit:cover; display:block;}

.sched-expand-roster{padding:12px 22px 0;border-top:1px solid rgba(14,14,16,0.08);margin-top:12px;}
.sched-expand-roster-label{font-family:var(--mono);font-size:0.58rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--ts-rust);margin-bottom:8px;display:flex;align-items:center;gap:10px;}
.sched-expand-djs{display:flex;flex-wrap:wrap;gap:10px;}
.sched-expand-dj{display:flex;flex-direction:column;align-items:center;gap:4px;width:58px;text-decoration:none;color:inherit;}
.sched-expand-dj-av{width:46px;height:46px;border-radius:50%;overflow:hidden;background:radial-gradient(circle at 30% 30%,var(--ts-teal-mute),var(--ts-ink) 75%);display:flex;align-items:center;justify-content:center;color:#f5eedd;font-family:var(--slab);font-weight:900;font-size:0.88rem;border:1px solid rgba(14,14,16,0.12);}
.sched-expand-dj-av img{width:100%;height:100%;object-fit:cover;display:block;}
.sched-expand-dj-name{font-family:var(--mono);font-size:0.6rem;letter-spacing:0.06em;text-align:center;color:var(--ts-ink);line-height:1.2;}
.sched-expand-dj:hover .sched-expand-dj-av{border-color:var(--ts-rust);}
.sched-expand-empty{font-family:var(--mono);font-size:0.62rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--ts-ink-mute);}

.sched-expand-actions{
  display:grid; grid-template-columns:1fr 1fr; gap:12px;
  padding:12px 22px max(4px, env(safe-area-inset-bottom, 4px));
  padding-left:max(22px, env(safe-area-inset-left, 22px));
  padding-right:max(22px, env(safe-area-inset-right, 22px));
  margin-top:8px; border-top:1px solid rgba(14,14,16,0.08); box-sizing:border-box;
}
.sched-expand-cta{display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:13px 16px; border-radius:10px; font-family:var(--mono); font-size:0.66rem; font-weight:600; letter-spacing:0.2em; text-transform:uppercase; text-decoration:none; cursor:pointer; border:1px solid transparent; transition:background 0.15s, color 0.15s, border-color 0.15s, transform 0.1s; min-width:0; box-sizing:border-box;}
.sched-expand-cta i{font-size:0.95rem;}
.sched-expand-cta--rsvp{background:var(--ts-rust); border-color:var(--ts-rust); color:#fff;}
.sched-expand-cta--rsvp:hover{background:var(--ts-rust-deep, #C9551F); border-color:var(--ts-rust-deep, #C9551F); transform:translateY(-1px);}
.sched-expand-cta--table{background:transparent; border-color:var(--ts-ink); color:var(--ts-ink);}
.sched-expand-cta--table:hover{background:var(--ts-ink); color:#fff; transform:translateY(-1px);}
.sched-expand-cta span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
@media(max-width:340px){.sched-expand-cta i{display:none;}}
