/* Activate site. Room A / Front Stage = green, Room B / Back Stage = blue.
   Bright colors are used as fills with dark navy text; the -dk shades are for text on white (WCAG AA contrast). */
:root{
  --navy:#0a1c28; --navy2:#12303f; --ink:#16252e; --muted:#4a5b65; --line:#d9e2e7; --bg:#f3f7f9; --white:#fff;
  --green:#3bb384; --green-dk:#17694a; --blue:#4db8ec; --blue-dk:#0a6798; --gold:#f5b301;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{margin:0;font-family:Roboto,Arial,sans-serif;font-size:18px;line-height:1.55;color:var(--ink);background:var(--white);-webkit-text-size-adjust:100%}
h1,h2,h3,h4{font-family:Barlow,Arial,sans-serif;line-height:1.15;margin:0 0 .5em;color:var(--navy)}
h1{font-size:clamp(2rem,6vw,3.4rem)} h2{font-size:clamp(1.6rem,4vw,2.3rem)} h3{font-size:1.35rem}
p{margin:0 0 1em} a{color:var(--blue-dk)} a:hover{color:var(--navy)}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.skip{position:absolute;left:-999px;top:0;background:var(--gold);color:var(--navy);padding:12px 16px;z-index:100;font-weight:700}
.skip:focus{left:8px;top:8px}
.wrap{max-width:1100px;margin:0 auto;padding:0 16px}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* header */
.site-head{background:var(--navy);color:#fff}
.site-head .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 24px;padding-top:12px;padding-bottom:12px}
.logo img{display:block;height:44px;width:auto}
.nav ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}
.nav a{color:#fff;text-decoration:none;font-family:Barlow,Arial,sans-serif;font-weight:600;font-size:1.05rem;padding:10px 12px;display:inline-block;border-bottom:3px solid transparent;min-height:44px}
.nav a:hover,.nav a[aria-current=page]{border-bottom-color:var(--green)}
.btn{display:inline-block;background:var(--green);color:var(--navy)!important;font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:1.1rem;text-decoration:none;padding:12px 24px;border-radius:8px;border:2px solid var(--green);min-height:48px;cursor:pointer}
.btn:hover{background:#fff;border-color:#fff}
.btn.alt{background:transparent;color:#fff!important;border-color:#fff}
.btn.alt:hover{background:#fff;color:var(--navy)!important}
.nav .btn{padding:8px 18px;min-height:44px;border-bottom:2px solid var(--green)}

/* hero */
.hero{background:radial-gradient(1200px 500px at 70% -10%,#1c4a5e 0,var(--navy) 60%);color:#fff;text-align:center;padding:64px 0 72px}
.hero h1{color:#fff;margin-bottom:.2em}
.hero .date{font-family:Barlow,Arial,sans-serif;font-size:clamp(1.4rem,4vw,2rem);margin:0 0 1.2em;color:#cfe8f2}
.hero .lead{max-width:760px;margin:0 auto 1.6em;font-size:1.2rem;color:#e6f1f6}
.hero .tracks-mini{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:28px}

section{padding:56px 0}
section.alt{background:var(--bg)}
.intro{max-width:780px}
.intro .pull{font-family:Barlow,Arial,sans-serif;font-size:1.6rem;font-weight:600;color:var(--navy);line-height:1.25}

/* tracks */
.tracks{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:760px){.tracks{grid-template-columns:1fr}}
.track{background:#fff;border:1px solid var(--line);border-top:10px solid var(--green);border-radius:12px;padding:24px}
.track.b{border-top-color:var(--blue)}
.tag{display:inline-block;font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;padding:4px 12px;border-radius:999px;background:var(--green);color:var(--navy)}
.tag.b{background:var(--blue)}
.track h3{margin-top:10px}
.track .sub{font-size:1.1rem;color:var(--muted);margin-bottom:12px}
.track ul{padding-left:20px;margin:0}
.track li{margin-bottom:.45em}

/* speakers */
.sgrid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px}
.scard{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;height:100%;display:flex;flex-direction:column}
.scard img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;background:#cbd7de}
.scard .body{padding:14px 16px 18px}
.scard .name{font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:1.15rem;color:var(--navy);margin:0}
.scard .stitle{font-size:.95rem;color:var(--muted);margin:.3em 0 0}
.scard a{color:inherit;text-decoration:none}
.scard a:hover .name{text-decoration:underline}

/* price band */
.band{background:var(--navy);color:#fff;text-align:center}
.band h2{color:#fff}
.prices{display:flex;gap:20px;justify-content:center;flex-wrap:wrap;margin:20px 0 28px}
.price{background:var(--navy2);border-radius:12px;padding:20px 36px;min-width:200px}
.price .who{display:block;font-size:1rem;color:#cfe8f2}
.price .amt{font-family:Barlow,Arial,sans-serif;font-size:2.6rem;font-weight:700}

/* tables */
.tbl{width:100%;border-collapse:collapse;background:#fff}
.tbl caption{text-align:left;font-family:Barlow,Arial,sans-serif;font-size:1.5rem;font-weight:700;color:var(--navy);padding:0 0 10px}
.tbl th,.tbl td{border:1px solid var(--line);padding:12px;text-align:left;vertical-align:top}
.tbl thead th{background:var(--navy);color:#fff;font-family:Barlow,Arial,sans-serif}
.tbl thead th.a{background:var(--green-dk)} .tbl thead th.b{background:var(--blue-dk)}
.tbl tbody th{white-space:nowrap;font-weight:500;background:var(--bg)}
.tbl td.span{background:#eef6f9;font-weight:600;text-align:center}
.tbl td .t{font-weight:700;display:block}
.tbl td .w{color:var(--muted);font-size:.95rem}
/* public schedule: no header row (read by screen readers only); each two-track cell carries its own track tag */
.tbl.sched thead{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.tbl.sched{table-layout:fixed}
.tbl.sched td{height:1px}
.tbl.sched .cc{display:flex;flex-direction:column;align-items:flex-start;height:100%}
.tbl.sched .cc .sp{margin-top:auto;padding-top:10px}
.tbl.sched .trk{display:inline-block;color:#fff;font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;padding:3px 11px;border-radius:999px;margin-bottom:8px}
.tbl.sched .trk.f{background:var(--green-dk)}
.tbl.sched .trk.b{background:var(--blue-dk)}
.tbl.sched td.bk .sp img{border-color:var(--blue)}
.tbl.sched td.none{background:#e3e9ed}
.tbl td.kick{background:#fff;text-align:left}
.tbl td .sp{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}
.tbl td .sp img{width:40px;height:40px;border-radius:50%;object-fit:cover;object-position:center 20%;border:2px solid var(--green);flex:none;margin-left:-14px;background:#fff}
.tbl td .sp img:first-child{margin-left:0}
.tbl td[data-room^="Back"] .sp img{border-color:var(--blue)}
.tbl td .sp .w{margin-left:2px}
@media(max-width:700px){
  .tbl,.tbl tbody,.tbl tr,.tbl th,.tbl td{display:block;width:100%}
  .tbl thead{position:absolute;left:-999px}
  .tbl tr{margin-bottom:14px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
  .tbl th,.tbl td{border:0;border-bottom:1px solid var(--line)}
  .tbl td[data-room]::before{content:attr(data-room);display:block;font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}
  .tbl td[data-room^="Room A"]::before{color:var(--green-dk)} .tbl td[data-room^="Room B"]::before{color:var(--blue-dk)}
}
.tbl-wrap{margin-bottom:44px}
.note{background:#fff6dd;border:1px solid #e9cf86;border-radius:10px;padding:12px 16px;margin:0 0 28px}

/* speaker detail */
.session{background:#fff;border:1px solid var(--line);border-left:10px solid var(--green);border-radius:12px;padding:24px;margin-bottom:24px;display:grid;grid-template-columns:200px 1fr;gap:24px}
.session.b{border-left-color:var(--blue)}
@media(max-width:760px){.session{grid-template-columns:1fr}}
.session .pics{display:flex;flex-direction:column;gap:10px}
.session .pics img{width:100%;max-width:200px;aspect-ratio:1/1;object-fit:cover;border-radius:10px}
.session h2{font-size:1.7rem;margin-top:8px}
.session .who{font-weight:700;font-size:1.1rem;margin:0 0 .6em}
.session .when{color:var(--muted);margin:0 0 1em}
.session h3{font-size:1.1rem;text-transform:uppercase;letter-spacing:.04em;margin:1.2em 0 .4em;color:var(--muted)}
details{border-top:1px solid var(--line);padding-top:10px;margin-top:12px}
summary{cursor:pointer;font-weight:700;color:var(--blue-dk);padding:6px 0;min-height:44px}

/* footer */
.site-foot{background:var(--navy);color:#cfe0e8;padding:36px 0;font-size:.95rem}
.site-foot a{color:#fff}
.site-foot ul{list-style:none;display:flex;gap:18px;padding:0;margin:0 0 12px;flex-wrap:wrap}

/* ---- v2: dark page, white reading boxes, sticky menu (Jenelle 2026-11-03) ---- */
html{scroll-padding-top:90px}
body{background:var(--navy);color:#e6f1f6}
.site-head{position:sticky;top:0;z-index:50;box-shadow:0 2px 10px rgba(0,0,0,.35);border-bottom:3px solid var(--green)}
main section{color:#e6f1f6}
main section h1,main section h2{color:#fff}
main section a:not(.btn){color:#9fdcf7}
main section a:not(.btn):hover{color:#fff}
section.alt{background:var(--navy2)}
main>section>.wrap>h1::after,main>section>.wrap>h2::after{content:"";display:block;width:84px;height:6px;border-radius:3px;margin-top:.35em;background:linear-gradient(90deg,var(--green),var(--blue))}
.card,.track,.session,.tbl-wrap{background:#fff;color:var(--ink)}
.card{border-radius:12px;padding:28px}
.card h1,.card h2,.card h3,.track h3,.session h2,.session h3{color:var(--navy)}
.card a:not(.btn),.track a,.session a:not(.btn){color:var(--blue-dk)}
.session h3{color:var(--muted)}
.tbl-wrap{border-radius:12px;padding:18px}
.tbl caption{color:var(--navy)}
.tbl td,.tbl th{color:var(--ink)} .tbl thead th{color:#fff}
.note{color:var(--ink)}
.band{background:var(--navy2);border-top:6px solid var(--green);border-bottom:6px solid var(--blue)}
.band a:not(.btn){color:#9fdcf7}
.hero{border-bottom:6px solid var(--blue)}
@media(max-width:700px){.tbl-wrap{padding:10px;background:transparent}}
@media(max-width:640px){.logo img{height:34px;width:auto}.nav a{padding:8px;font-size:1rem}.site-head .wrap{padding-top:8px;padding-bottom:8px}html{scroll-padding-top:120px}}
main section .tbl a:not(.btn),main section .card a:not(.btn),main section .track a:not(.btn),main section .session a:not(.btn),main section .note a{color:var(--blue-dk)}
main section .tbl a:not(.btn):hover,main section .session a:not(.btn):hover{color:var(--navy)}

/* ---- v3 ---- */
.site-head{border-bottom:0;position:sticky}
.site-head::after{content:"";display:block;height:4px;background:linear-gradient(90deg,var(--blue),var(--green))}
.tzbar{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin:0 0 24px;color:#e6f1f6}
.tzbar select{font:inherit;padding:10px 12px;border-radius:8px;border:2px solid #fff;background:#fff;color:var(--ink);min-height:44px;max-width:100%}
.tzbar .w{font-size:.95rem;color:#cfe0e8}
.tbl td[data-room^="Front"]::before{color:var(--green-dk)} .tbl td[data-room^="Back"]::before{color:var(--blue-dk)}
.when a{white-space:nowrap}

/* ---- v4: no gradient in the header; Join Live button; join bars ---- */
.site-head::after{display:block}
.site-head{border-bottom:0}
.hero h1::after{margin-left:auto!important;margin-right:auto!important}
.btn.blue{background:var(--blue);border-color:var(--blue);color:var(--navy)!important}
.btn.blue:hover,.nav .btn.blue[aria-current=page]{background:#fff;border-color:#fff}
.btn.off{background:#6f7f88;border-color:#6f7f88;color:#fff!important;cursor:default}
.btn.ja{background:var(--green)} .btn.jb{background:var(--blue);border-color:var(--blue)}
.joinbar{margin:28px 0 12px}
.joinbar h2{margin:0 0 .4em}
.joinbar p{display:flex;flex-wrap:wrap;gap:12px;margin:0}
.joinbar h2::after{display:none}
.joinbar+.tbl-wrap .tbl caption{position:absolute;left:-999px}

/* ---- v5: one continuous gradient page, plain nav/footer, one left edge (Jenelle 2026-11-03) ---- */
body{background:
  radial-gradient(1100px 700px at 100% 100%,rgba(59,179,132,.26),transparent 70%),
  radial-gradient(900px 600px at 100% 40%,rgba(77,184,236,.12),transparent 70%),
  linear-gradient(160deg,#0a1c28 0%,#0a1c28 38%,#0d2837 68%,#133a42 100%) fixed;
  background-color:#0a1c28;min-height:100vh}
section,section.alt,.hero,.band{background:none;border:0}
section{padding:44px 0}
.hero{padding:64px 0 44px;text-align:left}
.hero .lead{margin:0 0 1.6em;max-width:700px;color:#fff}
.hero .date{color:#fff}
.hero h1::after{margin-left:0!important;margin-right:0!important}
.grad{background:linear-gradient(90deg,var(--green),var(--blue));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:var(--green)}
.intro{max-width:none}
.intro p{max-width:760px}
.intro .pull{color:#fff;font-size:1.5rem}
.band{text-align:left}
.prices{justify-content:flex-start}
.price{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18)}

/* v5b: the intro block must keep the same 1100px column as every other block */
.intro{max-width:1100px}

/* ---- v6: home page rows (credits, speakers, promo carousel) ---- */
.facts{display:flex;flex-wrap:wrap;gap:16px;margin:16px 0 20px}
.fact{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:12px;padding:16px 22px;display:flex;align-items:center;gap:16px;max-width:420px}
.fact .num{font-family:Barlow,Arial,sans-serif;font-size:3rem;font-weight:700;line-height:1;color:var(--green)}
.fact+.fact .num{color:var(--blue)}
.fact .num{min-width:1.1ch;text-align:center}
.fact{flex-direction:column;align-items:flex-start;gap:12px}
.fact .frow{display:flex;align-items:center;gap:14px}
.fact strong{font-size:1.6rem;font-weight:600;line-height:1.1}
.fact>a{color:#fff;text-decoration:underline;text-underline-offset:3px;font-size:.95rem}
.fact>a:hover{text-decoration-thickness:2px}
.spkrow{list-style:none;margin:20px 0 28px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:20px 16px}
.spkrow a{display:block;text-align:center;text-decoration:none;color:#fff!important}
.spkrow img{width:100%;max-width:150px;aspect-ratio:1/1;object-fit:cover;border-radius:50%;border:3px solid var(--green);display:block;margin:0 auto 8px}
.spkrow li.tb img{border-color:var(--blue)} .spkrow li.tf img{border-color:var(--green)}
.spkrow a:hover .n{text-decoration:underline}
.spkrow .n{font-family:Barlow,Arial,sans-serif;font-weight:600;line-height:1.2;display:block}
.carctl{display:flex;gap:10px;margin:0 0 12px}
.carctl .btn{min-width:56px;padding:8px 18px}
.cartrack{list-style:none;margin:0;padding:0 0 12px;display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory}
.pcard{flex:0 0 min(320px,80%);scroll-snap-align:start;background:#fff;color:var(--ink);border-radius:12px;overflow:hidden;padding:0 0 14px}
.pmedia{position:relative;aspect-ratio:16/9;background:var(--navy2);overflow:hidden}
.pmedia img{width:100%;height:100%;object-fit:cover;opacity:.6;display:block}
.pmedia iframe{width:100%;height:100%;border:0;display:block}
.play,.soon{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:Barlow,Arial,sans-serif;font-weight:700;border-radius:8px;padding:10px 18px;white-space:nowrap}
.play{background:var(--green);color:var(--navy);border:2px solid var(--green);font-size:1.05rem;cursor:pointer;min-height:44px}
.play:hover{background:#fff;border-color:#fff}
.soon{background:rgba(10,28,40,.85);color:#fff}
.pcard .pt{font-family:Barlow,Arial,sans-serif;font-weight:700;color:var(--navy);margin:12px 14px 2px;line-height:1.2}
.pcard .pn{margin:0 14px;color:var(--muted);font-size:.95rem}

/* ---- v7: circular headshots, MCs, caps headings (Jenelle 2026-11-03) ---- */
.caps{text-transform:uppercase;letter-spacing:.03em}
.spkrow img{height:auto;object-position:50% 12%}
.mcrow{list-style:none;margin:20px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px}
.mc{display:flex;gap:20px;align-items:flex-start;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:12px;padding:20px}
.mc img{width:130px;height:130px;flex:0 0 130px;aspect-ratio:1/1;object-fit:cover;object-position:50% 12%;border-radius:50%;border:3px solid var(--green)}
.mc+.mc img{border-color:var(--blue)}
.mc h3{color:#fff;margin:0 0 .3em;font-size:1.3rem}
.mc details{border-top:0;padding-top:0;margin-top:0}
.mc summary{color:#9fdcf7}
.mc details p{color:#e6f1f6}
@media(max-width:480px){.mc{flex-direction:column;align-items:center;text-align:left}}

/* v8: MCs and speakers live inside the "peers" section */
.peers h3.caps{color:#fff;font-size:1.5rem;margin:1.8em 0 .4em}
.peers .mcrow{margin-top:12px}

.spkrow .role{display:block;font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--green);margin-top:2px}

/* v9: "peers" section (Jenelle 2026-11-03): pull line = marketing green, same size as body text, no gradient */
:root{--green-lt:#55cc94}
.intro .pull{font-size:inherit;font-weight:700;color:var(--green-lt);line-height:inherit}

/* v10: promo cards with real videos (preview test 2026-11-03): same media height, portrait cards narrow, widescreen cards wide */
.pcard.v,.pcard.h{display:block}
.pcard.v{flex:0 0 260px} .pcard.h{flex:0 0 min(604px,85vw)}
.pcard.v .pmedia,.pcard.h .pmedia{aspect-ratio:auto;height:340px;background:var(--navy)}
.pcard.h .pmedia{height:auto;aspect-ratio:16/9}
.pmedia video{width:100%;height:100%;object-fit:contain;display:block;background:#000}
.pcard.v .pmedia img,.pcard.h .pmedia img{object-fit:contain;opacity:1}
.cartrack{align-items:flex-start}

/* v11: preview carousel (Jenelle 2026-11-03): arrows beside the videos, no scrollbar */
.carousel{position:relative}
.cartrack{scrollbar-width:none;-ms-overflow-style:none}
.cartrack::-webkit-scrollbar{display:none}
.carbtn{position:absolute;top:36%;transform:translateY(-50%);z-index:5;width:52px;height:52px;border-radius:50%;border:2px solid #fff;background:rgba(10,28,40,.92);color:#fff;font-size:1.5rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(0,0,0,.5)}
.carbtn:hover{background:var(--green);color:var(--navy);border-color:var(--green)}
.carbtn.prev{left:-10px} .carbtn.next{right:-10px}
.carbtn[disabled]{opacity:.35;cursor:default}
@media(max-width:700px){.carbtn{width:44px;height:44px}.carbtn.prev{left:-4px}.carbtn.next{right:-4px}}

/* v12: arrows sit in their own columns beside the videos; all tiles same height; tile width = video width (portrait narrow, widescreen wide) */
.carousel{display:grid;grid-template-columns:52px minmax(0,1fr) 52px;column-gap:14px;align-items:start;--mh:360px}
.carbtn{position:static;transform:none;top:auto;margin-top:calc(var(--mh)/2 - 26px)}
.carbtn.prev{grid-column:1;grid-row:1;left:auto} .carbtn.next{grid-column:3;grid-row:1;right:auto}
.cartrack{grid-column:2;grid-row:1;align-items:stretch}
.pcard.v{flex:0 0 calc(var(--mh)*9/16)}
.pcard.h{flex:0 0 min(calc(var(--mh)*16/9),100%)}
.pcard.v .pmedia,.pcard.h .pmedia{height:var(--mh);aspect-ratio:auto}
.pcard.v .pmedia img,.pcard.h .pmedia img{object-fit:cover}
@media(max-width:700px){.carousel{grid-template-columns:40px minmax(0,1fr) 40px;column-gap:8px;--mh:300px}.carbtn{width:40px;height:40px;margin-top:calc(var(--mh)/2 - 20px)}}

/* v13 (2026-11-04): play icon on videos, centered Browse button, tighter section spacing */
.play{width:76px;height:76px;min-height:0;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(59,179,132,.95);border:3px solid #fff;box-shadow:0 2px 14px rgba(0,0,0,.45)}
.play svg{width:34px;height:34px;margin-left:5px;fill:var(--navy)}
.play:hover,.play:focus-visible{background:#fff}
.moretracks{text-align:center;margin:40px 0 0}
main>section{padding:26px 0}
main>section.hero{padding:56px 0 26px}

/* ---- v13: Join Live program page (cards, day tabs, favorites, filters) ---- */
.ltabs{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch;margin:18px 0 14px;border-bottom:1px solid rgba(255,255,255,.2);padding-bottom:12px}
.ltabs button{font-family:Barlow,Arial,sans-serif;background:rgba(255,255,255,.08);color:#fff;border:2px solid rgba(255,255,255,.25);border-radius:10px;padding:10px 22px;min-height:56px;cursor:pointer;text-align:left;display:flex;flex-direction:column;justify-content:center;line-height:1.1}
.ltabs button .k{font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;opacity:.85}
.ltabs button .v{font-size:1.25rem;font-weight:700}
.ltabs button[aria-selected=true]{background:#fff;color:var(--navy);border-color:#fff;box-shadow:inset 0 -5px 0 var(--green)}
.ltabs button#t-favs{margin-left:auto}
.ltabs .count{display:inline-block;background:var(--green);color:var(--navy);border-radius:999px;padding:0 10px;margin-left:8px;font-size:1rem}
.lfilters{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 8px}
.lfilters button{font-family:Barlow,Arial,sans-serif;font-weight:600;font-size:1rem;background:transparent;color:#fff;border:2px solid rgba(255,255,255,.35);border-radius:999px;padding:8px 18px;min-height:44px;cursor:pointer}
.lfilters button[aria-pressed=true]{background:#fff;color:var(--navy);border-color:#fff}
.lnote{margin:0 0 6px;color:#cfe3ec;font-size:.95rem}
.lpanel[hidden]{display:none}
.lrow{margin:26px 0}
.ltime{font-family:Barlow,Arial,sans-serif;color:#fff;font-size:1.5rem;margin:0 0 10px;display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline}
.ltime .lblock{font-size:1rem;font-weight:500;color:#9fdcf7}
.lcards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.lcard{position:relative;background:#fff;color:var(--ink);border:1px solid var(--line);border-top:8px solid var(--green);border-radius:12px;padding:20px 22px 18px;display:flex;flex-direction:column}
.lcard[data-track=back]{border-top-color:var(--blue)}
.lcard[data-track=gen]{border-top-color:#8aa0ab}
.ltag{font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--green-dk);margin:0 56px 8px 0}
.lcard[data-track=back] .ltag{color:var(--blue-dk)}
.lcard[data-track=gen] .ltag{color:#4a5b65}
.lcard h4{font-family:Barlow,Arial,sans-serif;color:var(--navy);font-size:1.3rem;line-height:1.2;margin:0 0 14px}
.lpeople{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:10px}
.lpeople li{display:flex;align-items:center;gap:12px}
.lpeople img{width:52px;height:52px;border-radius:50%;object-fit:cover;object-position:50% 12%;border:2px solid var(--green);flex:0 0 52px}
.lcard[data-track=back] .lpeople img{border-color:var(--blue)}
.lpeople .pn{display:block;font-family:Barlow,Arial,sans-serif;font-weight:700;color:var(--navy)}
.lpeople .pc{display:block;font-size:.9rem;color:var(--muted)}
.lfoot{margin-top:auto;border-top:1px solid var(--line);padding-top:14px;display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center}
.zoom{display:inline-flex;align-items:center;gap:6px;font-family:Barlow,Arial,sans-serif;font-weight:700;text-decoration:none;border-radius:8px;padding:9px 16px;min-height:44px;background:#e5f5ee;color:var(--green-dk)!important;border:1px solid #9ad4bc}
.zoom.rb{background:#e6f2fa;color:var(--blue-dk)!important;border-color:#9cc9e4}
.zoom:hover{text-decoration:underline}
.lfoot .len{color:var(--muted);font-size:.95rem}
.lfoot .det{margin-left:auto;font-family:Barlow,Arial,sans-serif;font-weight:700;color:var(--navy)}
.heart{position:absolute;top:14px;right:14px;width:48px;height:48px;border-radius:50%;border:1px solid var(--line);background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.heart svg{width:24px;height:24px;fill:none;stroke:var(--navy);stroke-width:2}
.heart[aria-pressed=true]{background:#e5f5ee;border-color:#9ad4bc}
.heart[aria-pressed=true] svg{fill:var(--green-dk);stroke:var(--green-dk)}
.lband{margin:14px 0;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:12px 18px;color:#fff;display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline}
.lband .bn{font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:1.1rem}
.lpanel[data-filter=front] .lcard[data-track=back],.lpanel[data-filter=back] .lcard[data-track=front],.lpanel[data-filter=front] .lcard[data-track=gen],.lpanel[data-filter=back] .lcard[data-track=gen]{display:none}
.lempty{color:#fff;margin:20px 0}
.lbtn{display:inline-block;font-family:Barlow,Arial,sans-serif;font-weight:700;background:var(--green);color:var(--navy);border:2px solid var(--green);border-radius:8px;padding:10px 20px;min-height:44px;cursor:pointer;margin:6px 0 0}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#fff;color:var(--navy);border-radius:10px;padding:12px 20px;box-shadow:0 4px 18px rgba(0,0,0,.5);z-index:200;max-width:90vw}
.toast[hidden]{display:none}
@media(max-width:600px){.ltabs button{padding:8px 14px}.ltabs button#t-favs{margin-left:0}.lcards{grid-template-columns:1fr}}

/* gate landing page */
.gate{max-width:640px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);border-radius:14px;padding:26px 28px;margin:20px 0}
.gate label{display:block;font-family:Barlow,Arial,sans-serif;font-weight:700;margin:14px 0 6px}
.gate input[type=email],.gate input[type=text]{width:100%;max-width:420px;font-size:1.1rem;padding:11px 14px;border-radius:8px;border:2px solid #fff;min-height:48px}
.gate .note{background:#fff7d6;color:#3b2f00;border-radius:8px;padding:10px 14px;margin:14px 0 0;font-size:.95rem}
.gate .reg{margin-top:26px;padding-top:20px;border-top:1px solid rgba(255,255,255,.25)}

/* v14: Speakers page: preview button + preview window; two-headshot cards */
.pbtn{display:inline-flex;align-items:center;gap:10px;font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:1.05rem;background:var(--green);color:var(--navy);border:2px solid var(--green);border-radius:8px;padding:10px 20px;min-height:46px;cursor:pointer}
.pbtn svg{width:22px;height:22px;fill:var(--navy)}
.pbtn:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.pbtn:hover svg{fill:#fff}
.pdlg{border:0;padding:0;background:transparent;max-width:96vw;max-height:96vh;overflow:visible}
.pdlg::backdrop{background:rgba(5,14,20,.82)}
.pdbox{position:relative;background:#000;border-radius:12px;padding:0}
.pdclose{position:absolute;top:-18px;right:-18px;width:44px;height:44px;border-radius:50%;border:2px solid #fff;background:var(--navy);color:#fff;font-size:1.6rem;line-height:1;cursor:pointer;z-index:2}
.pdmedia video,.pdmedia iframe{display:block;border:0;background:#000;border-radius:12px}
.pdmedia.h video,.pdmedia.h iframe{width:min(90vw,960px);aspect-ratio:16/9;height:auto}
.pdmedia.v video,.pdmedia.v iframe{height:min(82vh,820px);aspect-ratio:9/16;width:auto;max-width:90vw}
.session details+details{margin-top:6px}

/* v15 (2026-11-04): lighter Join Live program page: real tabs, airy cards, details window */
.ltabs{display:flex;flex-wrap:wrap;gap:4px;align-items:flex-end;margin:22px 0 0;padding:0;border-bottom:2px solid rgba(255,255,255,.22)}
.ltabs button{font-family:Barlow,Arial,sans-serif;flex:1 1 220px;max-width:300px;min-height:0;background:rgba(255,255,255,.04);color:#c9dbe4;border:1px solid rgba(255,255,255,.18);border-bottom:0;border-radius:12px 12px 0 0;padding:14px 26px 12px;margin:0;margin-bottom:-2px;text-align:left;box-shadow:none;cursor:pointer;display:flex;flex-direction:column;gap:2px;line-height:1.15}
.ltabs button#t-favs{margin-left:0}
.ltabs button .k{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;opacity:.85}
.ltabs button .v{font-size:1.1rem;font-weight:600}
.ltabs button:hover{background:rgba(255,255,255,.1);color:#fff}
.ltabs button[aria-selected=true]{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.35);border-top:4px solid var(--green);padding-top:11px;border-bottom:2px solid #123241;box-shadow:none}
.ltabs button#t-favs[aria-selected=true]{border-top-color:var(--blue)}
.ltabs .count{display:inline-block;min-width:1.6em;text-align:center;background:var(--green);color:var(--navy);border-radius:999px;padding:0 8px;margin:0 4px 0 0;font-size:.95rem;font-weight:700}
.lnote{margin:16px 0 4px;color:#b8cdd8;font-size:.95rem}
.lrow{margin:22px 0 8px}
.ltime{font-family:Barlow,Arial,sans-serif;font-weight:600;color:#fff;font-size:1.2rem;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.16);display:block}
.lcards{gap:16px}
.lcard{background:rgba(255,255,255,.06);color:#fff;border:1px solid rgba(255,255,255,.18);border-left:4px solid var(--green);border-top:1px solid rgba(255,255,255,.18);border-radius:14px;padding:18px 20px 16px;box-shadow:none}
.lcard[data-track=back]{border-left-color:var(--blue);border-top-color:rgba(255,255,255,.18)}
.lcard[data-track=gen]{border-left-color:#8aa0ab;border-top-color:rgba(255,255,255,.18)}
.lhead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:0 0 6px}
.ltag{margin:2px 0 0;font-size:.78rem;letter-spacing:.09em;color:#6fdcaa}
.lcard[data-track=back] .ltag{color:#8fd4f6}
.lcard[data-track=gen] .ltag{color:#c0cfd6}
.lcard h4{color:#fff;font-size:1.2rem;font-weight:600;line-height:1.25;margin:0 0 14px}
.lpeople img{width:46px;height:46px;flex-basis:46px;border:2px solid #55cc94}
.lcard[data-track=back] .lpeople img{border-color:#4db8ec}
.lpeople .pn{color:#fff;font-weight:600}
.lpeople .pc{color:#b8cdd8}
.lfoot{border-top:1px solid rgba(255,255,255,.14);padding-top:12px;gap:10px 14px}
.zoom{background:transparent;color:#6fdcaa!important;border:1.5px solid #55cc94;border-radius:999px;padding:7px 16px;min-height:40px;font-weight:600}
.zoom.rb{background:transparent;color:#8fd4f6!important;border-color:#4db8ec}
.zoom:hover{background:rgba(255,255,255,.1)}
.lfoot .len{color:#b8cdd8}
.lfoot .det{margin-left:auto;background:none;border:0;padding:6px 2px;font:inherit;font-family:Barlow,Arial,sans-serif;font-weight:600;color:#fff;text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:40px}
.lfoot .det:hover{color:#6fdcaa}
.heart{position:static;flex:0 0 40px;width:40px;height:40px;background:transparent;border:1.5px solid rgba(255,255,255,.35)}
.heart svg{width:20px;height:20px;stroke:#fff}
.heart:hover{background:rgba(255,255,255,.12)}
.heart[aria-pressed=true]{background:rgba(85,204,148,.2);border-color:#55cc94}
.heart[aria-pressed=true] svg{fill:#55cc94;stroke:#55cc94}
.lband{background:none;border:0;border-top:1px dashed rgba(255,255,255,.2);border-radius:0;padding:10px 2px;margin:10px 0;color:#c9dbe4}
.lband .bn{font-weight:600}
.lempty{color:#fff}

/* session details window */
.sdlg{border:0;padding:0;background:transparent;width:min(760px,94vw);max-height:92vh;overflow:visible}
.sdlg::backdrop{background:rgba(5,14,20,.78)}
.sdbox{position:relative;background:#fff;color:var(--ink);border-radius:16px;padding:28px 30px;max-height:88vh;overflow:auto}
.sdclose{position:absolute;top:10px;right:12px;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--navy);font-size:1.6rem;line-height:1;cursor:pointer;z-index:2}
.sdhead{display:flex;gap:18px;align-items:flex-start;margin:0 40px 14px 0}
.sdpics{display:flex;gap:8px;flex:0 0 auto}
.sdpics img{width:96px;height:96px;border-radius:50%;object-fit:cover;object-position:50% 12%;border:3px solid var(--green)}
.sdpics img+img{border-color:var(--blue)}
.sdtitle{font-size:1.5rem;margin:6px 0 6px;color:var(--navy)}
.sdbox .who{font-weight:700;margin:0 0 4px}
.sdbox .when{color:var(--muted);margin:0 0 12px}
.sdbox h3{font-size:1.15rem;margin:1.2em 0 .4em;color:var(--navy)}
.sdbox details{border-top:1px solid var(--line);padding:10px 0}
.sdbox summary{font-family:Barlow,Arial,sans-serif;font-weight:700;color:var(--blue-dk);cursor:pointer}
@media(max-width:600px){.ltabs button{flex:1 1 0;min-width:0;max-width:none;padding:10px 10px}.ltabs button .v{font-size:.95rem}.sdbox{padding:22px 18px}.sdhead{flex-direction:column;margin-right:36px}}

/* v16 (2026-11-04): light cards for contrast with the dark background, kept light-weight (thin border, soft shadow, slim accent edge) */
.lcard{background:#fff;color:var(--ink);border:1px solid #dbe5ea;border-left:5px solid var(--green);border-radius:14px;padding:18px 22px 14px;box-shadow:0 2px 10px rgba(0,0,0,.18)}
.lcard[data-track=back]{border-left-color:var(--blue);border-top-color:#dbe5ea}
.lcard[data-track=gen]{border-left-color:#8aa0ab;border-top-color:#dbe5ea}
.ltag{color:var(--green-dk)}
.lcard[data-track=back] .ltag{color:var(--blue-dk)}
.lcard[data-track=gen] .ltag{color:#4a5b65}
.lcard h4{color:var(--navy)}
.lpeople img{border-color:var(--green)}
.lcard[data-track=back] .lpeople img{border-color:var(--blue)}
.lpeople .pn{color:var(--navy)}
.lpeople .pc{color:var(--muted)}
.lfoot{border-top:1px solid #e6edf1}
.zoom{background:#eaf7f1;color:var(--green-dk)!important;border:1px solid #9ad4bc}
.zoom.rb{background:#e8f3fb;color:var(--blue-dk)!important;border-color:#9cc9e4}
.zoom:hover{background:#d6efe4}
.zoom.rb:hover{background:#d4e9f7}
.lfoot .len{color:var(--muted)}
.lfoot .det{color:var(--navy)}
.lfoot .det:hover{color:var(--blue-dk)}
.heart{border:1.5px solid #c7d4db;background:#fff}
.heart svg{stroke:var(--navy)}
.heart:hover{background:#f1f6f8}
.heart[aria-pressed=true]{background:#e5f5ee;border-color:#55cc94}
.heart[aria-pressed=true] svg{fill:var(--green-dk);stroke:var(--green-dk)}

/* v17 (2026-11-04): session cards back to the first white look (thick colored top edge, larger buttons); layout fixes from v15 stay (heart in the header row, no overlap) */
.lcard{background:#fff;color:var(--ink);border:1px solid var(--line);border-top:8px solid var(--green);border-left:1px solid var(--line);border-radius:12px;padding:20px 22px 18px;box-shadow:none}
.lcard[data-track=back]{border-top-color:var(--blue);border-left-color:var(--line)}
.lcard[data-track=gen]{border-top-color:#8aa0ab;border-left-color:var(--line)}
.ltag{font-size:.8rem;letter-spacing:.08em;color:var(--green-dk)}
.lcard[data-track=back] .ltag{color:var(--blue-dk)}
.lcard[data-track=gen] .ltag{color:#4a5b65}
.lcard h4{color:var(--navy);font-size:1.3rem;font-weight:700;line-height:1.2;margin:0 0 14px}
.lpeople img{width:52px;height:52px;flex-basis:52px;border:2px solid var(--green)}
.lcard[data-track=back] .lpeople img{border-color:var(--blue)}
.lpeople .pn{color:var(--navy);font-weight:700}
.lpeople .pc{color:var(--muted)}
.lfoot{border-top:1px solid var(--line);padding-top:14px}
.zoom{border-radius:8px;padding:9px 16px;min-height:44px;font-weight:700;background:#e5f5ee;color:var(--green-dk)!important;border:1px solid #9ad4bc}
.zoom.rb{background:#e6f2fa;color:var(--blue-dk)!important;border-color:#9cc9e4}
.zoom:hover{background:#d3eee2}
.zoom.rb:hover{background:#d2e7f5}
.lfoot .det{font-weight:700;color:var(--navy)}
.heart{flex:0 0 44px;width:44px;height:44px;border:1px solid var(--line)}
.heart svg{width:22px;height:22px}

/* v18 (2026-11-04): phones: header scrolls away instead of covering the page; tabs show just the date */
@media(max-width:700px){
  .site-head{position:static}
  .ltabs .wk{display:none}
  .ltabs button .v{white-space:nowrap}
}

/* v19 (2026-11-04): two fixed columns (a lone Front Stage card keeps the left column's width); dark Zoom buttons with white text */
.lcards{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px){.lcards{grid-template-columns:1fr}}
/* 2026-11-05 (Jenelle): Join Zoom Room buttons use the brand fills with navy text, like Register Now (navy on green 6.4:1, on blue about 8:1) */
.zoom,.zoom.ra{background:var(--green);color:var(--navy)!important;border:2px solid var(--green)}
.zoom.rb{background:var(--blue);color:var(--navy)!important;border-color:var(--blue)}
.zoom:hover{background:#55cc94;border-color:#55cc94;text-decoration:underline}
.zoom.rb:hover{background:#7cc9f0;border-color:#7cc9f0}

/* v20 (2026-11-04): phones: menu is a hamburger; Register Now and Join Live are inside the opened menu; the slim header stays pinned */
.navtoggle{display:none}
@media(max-width:760px){
  .site-head{position:sticky}
  .js .site-head .wrap{flex-wrap:nowrap}
  .js .navtoggle{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border:2px solid #fff;border-radius:10px;background:transparent;cursor:pointer;margin-left:auto;padding:0}
  .navtoggle .bars,.navtoggle .bars::before,.navtoggle .bars::after{display:block;width:24px;height:3px;background:#fff;border-radius:2px;position:relative;content:"";transition:none}
  .navtoggle .bars::before{position:absolute;top:-8px;left:0}
  .navtoggle .bars::after{position:absolute;top:8px;left:0}
  .navtoggle[aria-expanded=true] .bars{background:transparent}
  .navtoggle[aria-expanded=true] .bars::before{top:0;transform:rotate(45deg)}
  .navtoggle[aria-expanded=true] .bars::after{top:0;transform:rotate(-45deg)}
  .js .nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--navy);padding:8px 16px 18px;box-shadow:0 12px 20px rgba(0,0,0,.5);border-top:1px solid rgba(255,255,255,.2)}
  .js .nav.open{display:block}
  .js .nav ul{flex-direction:column;align-items:stretch;gap:2px}
  .js .nav a{display:block;font-size:1.15rem;padding:12px 8px}
  .js .nav .btn{text-align:center;margin-top:8px;padding:12px 18px}
  .js .nav a:hover,.js .nav a[aria-current=page]{border-bottom-color:transparent;background:rgba(255,255,255,.08)}
}

/* v21 (2026-11-04): recording line under the tracks; "Read more" link in the details window */
.recnote{text-align:left;margin:0 0 20px;color:#fff;font-size:1.05rem}
.tracks+.moretracks{margin-top:24px}
.sdmore{margin:20px 0 0;padding-top:14px;border-top:1px solid var(--line)}
.sdmore a{font-family:Barlow,Arial,sans-serif;font-weight:700;color:var(--blue-dk)}

/* v22 (2026-11-04): details window: the close X stays put while the content scrolls (X sits outside the scrolling area) */
.sdbox{padding:0;overflow:hidden;display:flex;flex-direction:column}
.sdbody{overflow:auto;max-height:88vh;padding:28px 30px;flex:1 1 auto;-webkit-overflow-scrolling:touch}
.sdclose{top:10px;right:12px;box-shadow:0 1px 6px rgba(0,0,0,.2)}
@media(max-width:600px){.sdbox{padding:0}.sdbody{padding:22px 18px}}

/* v23: hint above the speaker photos */
.spkhint{margin:20px 0 0;color:#e6f1f6}
.spkhint a{color:#fff;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.spkhint a:hover{color:#55cc94}

/* v24 (2026-11-04): preview video embedded in the session details / Sessions page (poster + play icon, plays in place) */
.pe{position:relative;border-radius:12px;overflow:hidden;background:var(--navy2);margin:20px 0 8px;width:100%}
.pe.h{aspect-ratio:16/9;max-width:640px}
.pe.v{aspect-ratio:9/16;max-width:260px}
.pe img,.pe video,.pe iframe{display:block;width:100%;height:100%;border:0}
.pe img{object-fit:cover;opacity:.9}
.pe video{object-fit:contain;background:#000}

/* v25: a portrait preview is centered in its box */
.pe.v{margin-left:auto;margin-right:auto}

/* v26: the "Select a speaker's photo..." sentence uses the full width so it stays on one line on wide screens */
.intro .spkhint{max-width:none}

/* v27: a portrait preview floats beside the description on wider screens (stacked and centered on phones); widescreen stays full width below the text */
.dp::after{content:"";display:block;clear:both}
@media(min-width:700px){
  .dp .pe.v{float:right;width:220px;max-width:220px;margin:4px 0 14px 26px}
}

/* public schedule on phones: stacked cards, no fixed heights or widths; the empty Back Stage cell is dropped */
@media(max-width:700px){
  .tbl.sched{table-layout:auto}
  .tbl.sched td,.tbl.sched th{height:auto;width:auto}
  .tbl.sched .cc{height:auto}
  .tbl.sched td.none{display:none}
  .tbl.sched col{width:auto!important}
  .tbl.sched caption{display:block;width:100%;font-size:1.25rem;line-height:1.3;padding-bottom:12px}
  .tbl-wrap{padding:12px}
}

/* Ring colour follows track (Jenelle 2026-11-05); Emcee label is a green-to-blue gradient so it stands apart from the track labels */
.sdpics img.tb{border-color:var(--blue)} .sdpics img.tf{border-color:var(--green)}
.tag.em{background:linear-gradient(90deg,var(--green),var(--blue))}
.spkrow .role{background:linear-gradient(90deg,var(--green),var(--blue));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:var(--green)}

/* Popup bios are open, no toggle; heading colour follows the track (Jenelle 2026-11-05) */
.sdbox .aboutbio{border-top:1px solid var(--line);padding:14px 0 4px;margin-top:10px}
.sdbox .aboutbio h3.about{font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:1.15rem;margin:0 0 .4em;color:var(--green-dk)}
.sdbox .aboutbio.tb h3.about{color:var(--blue-dk)}

.fact .frow{align-items:baseline}
/* Credits boxes, option C (2026-11-05): one line, label vertically centred on the number, small gap */
.fact .frow{flex-direction:row;align-items:center;gap:8px}
.fact .num{text-align:center;min-width:0}
.fact strong{font-size:1.5rem;line-height:1}

/* Sponsor strip in the footer (2026-11-05): centred heading and logos, gradient on "Sponsors" */
.sponsors{margin:0 0 26px;padding-bottom:24px;border-bottom:1px solid rgba(255,255,255,.18);text-align:center}
.sponsors .sp-h{font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:2rem;line-height:1.15;color:#fff;margin:0 0 18px}
.sponsors ul{list-style:none;display:flex;gap:24px;align-items:center;justify-content:center;flex-wrap:wrap;padding:0;margin:0}
.sponsors a{display:block;border-radius:8px;overflow:hidden;line-height:0}
.sponsors img{display:block;height:auto;max-width:100%}
.sponsors a:focus-visible{outline:3px solid #fff;outline-offset:3px}
/* Footer centred (2026-11-05): sponsors, social icons, code of conduct sentence, contact, copyright + privacy policy */
.site-foot{text-align:center}
.site-foot .soc{list-style:none;display:flex;gap:22px;justify-content:center;padding:0;margin:0 0 16px}
.site-foot .soc a{display:flex;align-items:center;justify-content:center;width:44px;height:44px;color:#fff}
.site-foot .soc svg{height:22px;width:auto}
.site-foot .soc a:hover{color:var(--green)}
.site-foot .soc a:focus-visible{outline:3px solid #fff;outline-offset:2px;border-radius:6px}

/* Hero: who presents it (2026-11-05). Footer links get a visible hover (2026-11-05) */
.site-foot a:hover{color:#55cc94;text-decoration-thickness:2px;text-underline-offset:3px}
.site-foot a:focus-visible{outline:3px solid #fff;outline-offset:2px;border-radius:3px}

/* Meet Your Emcees card: gradient side bar (green to blue), like the Emcee label (2026-11-05) */
.session.em{border-left:10px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(180deg,var(--green),var(--blue)) border-box}

/* Sessions page: counts row, same look as the credits boxes (2026-11-05) */
.stats .fact{padding:14px 22px}
.stats .fact:nth-child(2) .num{color:var(--blue)}
.stats .fact:nth-child(3) .num{color:var(--green)}

/* Sessions page: portrait promo in its own column, top-aligned with the photo and title (2026-11-05) */
.session.hasv{grid-template-columns:200px 1fr 220px}
.session .pvcol{align-self:start}
.session .pvcol .pe.v{width:220px;max-width:220px;margin:0}
@media(max-width:1000px){.session.hasv{grid-template-columns:200px 1fr}.session .pvcol{grid-column:1/-1}.session .pvcol .pe.v{margin:0 auto}}
@media(max-width:760px){.session.hasv{grid-template-columns:1fr}}

/* Sessions page: program dates as a reminder under the heading (2026-11-05) */
.pagedates{font-family:Barlow,Arial,sans-serif;font-size:1.4rem;font-weight:500;color:#cfe8f2;margin:0 0 .8em}

/* Play button follows the track: blue on Back Stage cards and popups, green otherwise (Jenelle 2026-11-05) */
.session.b .play,.sdbox:has(.tag.b) .play{background:rgba(77,184,236,.95)}
.session.b .play:hover,.session.b .play:focus-visible,.sdbox:has(.tag.b) .play:hover,.sdbox:has(.tag.b) .play:focus-visible{background:#fff}


/* Sessions page: schedule link under the intro, with room before the time zone picker (2026-11-05) */
.pagelink{margin:0 0 28px}
.pagelink a{color:var(--blue);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.pagelink a:hover{color:#7cc9f0;text-decoration-thickness:2px}

main section .pagelink a{color:var(--blue)}
main section .pagelink a:hover{color:#7cc9f0}


/* 2026-11-05 (Jenelle): link hover = white; home hint link = brand blue; program dates on Sessions = white */
main section .pagelink a:hover{color:#fff}
main section .spkhint a{color:var(--blue)}
main section .spkhint a:hover{color:#fff}
.pagedates{color:#fff}


/* Schedule (2026-11-05): track pills use the brand colours (navy text), more room in the time column, time zone under each time range */
.tbl.sched .trk{color:var(--navy)}
.tbl.sched .trk.f{background:var(--green)}
.tbl.sched .trk.b{background:var(--blue)}
.tbl.sched tbody th{padding:12px 16px}
.tzl{display:block;font-weight:400;font-size:.85rem;color:var(--muted);margin-top:2px}

/* 2026-11-05: emcee circles follow their track colours on the Schedule and Join Live; networking row, card and logos */
.tbl td .sp img.tb{border-color:var(--blue)}
.tbl td .sp img.tf{border-color:var(--green)}
.lcard .lpeople img.tb{border-color:var(--blue)}
.lcard .lpeople img.tf{border-color:var(--green)}
.tbl td.net .w{display:block;margin-top:6px;font-size:1rem}
.netlogos{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-top:12px}
.netlogos a{display:block;line-height:0;border-radius:6px;overflow:hidden}
.netlogos img{display:block}
.session .logos{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.session .logos a{display:block;line-height:0;border-radius:8px;overflow:hidden}
.session .logos img{display:block;max-width:200px;max-height:130px;width:auto;height:auto}

.session.nologo{grid-template-columns:1fr}
.sdbox .netlogos{gap:22px;margin-top:6px}

/* Footer sponsor logos: same height, top-aligned (Jenelle 2026-11-05); centred Register Now on the Schedule page */
.sponsors ul{align-items:flex-start}
.sponsors img{height:120px;width:auto}
.ctr{text-align:center}

main section .cocnote a{color:var(--blue)}
main section .cocnote a:hover{color:#fff}


/* Phones: stacked hero buttons get a gap (2026-11-05) */
@media(max-width:600px){.hero p .btn{margin:0 8px 12px 0}}


/* ---- Join the Live Program formatting round (Jenelle 2026-11-05) ---- */
.roomkey{margin:0 0 14px;padding-left:1.3em}
.roomkey li{margin:4px 0}
.cocnote{font-size:.95rem}
/* tabs: bigger and clearer; the day / My Schedule name is the big line */
.ltabs button{flex:1 1 240px;max-width:340px;padding:16px 28px 14px}
.ltabs button .v{font-size:1.6rem;font-weight:700;line-height:1.1}
.ltabs button .k{font-size:.9rem;letter-spacing:.1em}
.ltabs button#t-favs .k{text-transform:none;letter-spacing:0;font-size:.95rem;font-weight:500}
.ltabs button#t-favs .count{margin-right:6px}
.ltabs button[aria-selected=true]{background:#fff;color:var(--navy);border-color:#fff;border-top:6px solid var(--green)}
.ltabs button#t-favs[aria-selected=true]{border-top-color:#F2728B}
.ltabs button:focus-visible{outline:3px solid #fff;outline-offset:3px}
@media(max-width:700px){.ltabs button .v{font-size:1.2rem}.ltabs button{padding:12px 10px}}
/* session times above the cards */
.ltime{font-size:1.9rem;font-weight:700;margin:0 0 14px;padding-bottom:8px;border-bottom:2px solid rgba(255,255,255,.3)}
.ltime [data-s]{font-weight:700}
/* hearts in NSA pink (Blush F2728B on Lt Blush F9BCC1) */
.heart:hover{background:#fdeef0}
.heart[aria-pressed=true]{background:#F9BCC1;border-color:#F2728B}
.heart[aria-pressed=true] svg{fill:#F2728B;stroke:#F2728B}
.heart:focus-visible{outline:3px solid #F2728B;outline-offset:2px}
/* session title is the details link */
.lcard h4 .det{all:unset;cursor:pointer;color:var(--navy);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px}
.lcard h4 .det:hover{color:var(--blue-dk)}
.lcard h4 .det:focus-visible{outline:3px solid var(--navy);outline-offset:3px;border-radius:3px}
/* one card for a block that shares one Zoom room (Pre-Show + Emcee Kick Off) */
.lgroup{grid-column:1/-1;background:#fff;border-radius:14px;border-top:8px solid var(--green);padding:18px 22px 6px;color:var(--navy);list-style:none}
.lgroup .ghead{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;padding-bottom:16px;border-bottom:1px solid var(--line)}
.lgroup .gnote{margin:0;font-weight:600;flex:1 1 260px}
.lsub{list-style:none;margin:0;padding:0}
.lsub .lcard{box-shadow:none;border:0;border-top:0;border-radius:0;border-bottom:1px solid var(--line);padding:16px 0;background:transparent;margin:0}
.lsub .lcard:last-child{border-bottom:0}
.lsub .lcard .lfoot .zoom{display:none}
.lsub .lcard .lfoot{border-top:0;padding-top:0;margin:0}
.stime{margin:0 0 6px;font-weight:700;font-size:1.15rem;color:var(--navy)}
/* Join button copied to the top of the details window */
.sdjoin{margin:0 0 18px}
@media(max-width:700px){.ltabs{flex-wrap:nowrap;gap:3px}.ltabs button{flex:1 1 0;min-width:0;padding:10px 8px}.ltabs button .v{font-size:1.05rem}.ltabs button .k{font-size:.78rem}.ltabs button#t-favs .k{font-size:.8rem}}

/* condensed grouped card: one compact row per item (Jenelle 2026-11-05: too tall, too much white space) */
.lgroup{padding:12px 20px 4px}
.lgroup .ghead{padding-bottom:12px;gap:8px 16px}
.lgroup .gnote{font-size:1.1rem}
.lsub .lcard{display:grid;grid-template-columns:170px minmax(0,1fr) auto 44px;column-gap:16px;align-items:center;padding:10px 0}
.lsub .lcard .stime{margin:0;font-size:1.05rem;grid-column:1}
.lsub .lcard .lhead{display:contents}
.lsub .lcard .ltag{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.lsub .lcard .heart{grid-column:4;grid-row:1;margin:0}
.lsub .lcard h4{grid-column:2;grid-row:1;margin:0;font-size:1.2rem}
.lsub .lcard .lpeople{grid-column:3;grid-row:1;display:flex;flex-wrap:wrap;gap:6px 18px;margin:0;padding:0;list-style:none;justify-content:flex-end}
.lsub .lcard .lpeople li{display:flex;align-items:center;gap:8px;margin:0}
.lsub .lcard .lpeople img{width:38px;height:38px;flex-basis:38px}
.lsub .lcard .lpeople .pc{display:none}
.lsub .lcard .lfoot{display:none}
@media(max-width:760px){
  .lsub .lcard{grid-template-columns:minmax(0,1fr) 44px;row-gap:4px}
  .lsub .lcard .stime{grid-column:1;grid-row:1}
  .lsub .lcard h4{grid-column:1;grid-row:2}
  .lsub .lcard .lpeople{grid-column:1;grid-row:3;justify-content:flex-start}
  .lsub .lcard .heart{grid-column:2;grid-row:1 / span 2}
}

/* Join Live details window: track name as green/blue text (not a pill, so it is not mistaken for the Join button); Join button sits under the date and time */
.hasjoin .tag{background:none!important;border:0;padding:0;border-radius:0;color:var(--green-dk);font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;display:block;margin:0 0 6px}
.hasjoin .tag.b{color:var(--blue-dk)}
.hasjoin .tag.em{color:#4a5b65}
.sdjoin{margin:12px 0 0}

/* hearted sessions stay in place and show a pink edge; small "Add to calendar" text button next to Join */
.lcard:has(.heart[aria-pressed=true]){box-shadow:inset 6px 0 0 #F2728B}
.cal{background:none;border:0;padding:6px 2px;font:inherit;font-family:Barlow,Arial,sans-serif;font-weight:600;color:var(--navy);text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:40px}
.cal:hover{color:var(--blue-dk)}
.cal:focus-visible{outline:3px solid var(--navy);outline-offset:2px;border-radius:3px}
.lfoot{gap:6px 16px;flex-wrap:wrap}
.lgroup .ghead .cal{margin-left:0}

/* grouped cards v2: no hearts (everyone starts the day together), people column aligned, credentials shown like other cards */
.lsub .lcard{grid-template-columns:170px minmax(0,1fr) 290px;align-items:start;padding:12px 0}
.lsub .lcard .stime,.lsub .lcard h4{padding-top:8px}
.lsub .lcard .lpeople{grid-column:3;grid-row:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:8px;margin:0;padding:0}
.lsub .lcard .lpeople li{display:flex;align-items:center;gap:10px}
.lsub .lcard .lpeople img{width:44px;height:44px;flex:0 0 44px}
.lsub .lcard .lpeople .pn,.lsub .lcard .lpeople .pc{display:block}
.lsub .lcard .lpeople .pc{font-size:.9rem;color:var(--muted)}
@media(max-width:760px){
  .lsub .lcard{grid-template-columns:minmax(0,1fr)}
  .lsub .lcard .stime,.lsub .lcard h4,.lsub .lcard .lpeople{grid-column:1;padding-top:0}
  .lsub .lcard .stime{grid-row:1}.lsub .lcard h4{grid-row:2}.lsub .lcard .lpeople{grid-row:3}
}

/* grouped cards v3 (Jenelle 2026-11-05): gradient "General Program" top, items side by side, Join + Add to calendar in the same bottom place as every other card */
.gintro{margin:-4px 0 12px;font-size:1.1rem;color:#fff}
.lgroup{border-top:0;padding:0 22px 14px;overflow:hidden}
.lgroup::before{content:"";display:block;height:8px;background:linear-gradient(90deg,var(--green),var(--blue));margin:0 -22px 16px}
.lgroup .gtag{margin:0 0 6px;color:#4a5b65}
.lgroup .lsub{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:0 24px}
.lsub .lcard{display:flex;flex-direction:column;align-items:flex-start;padding:10px 0 14px;border-bottom:0;border-left:0}
.lsub .lcard .stime,.lsub .lcard h4{padding-top:0}
.lsub .lcard .stime{margin:0 0 6px}
.lsub .lcard h4{margin:0 0 12px;font-size:1.25rem}
.lsub .lcard .lpeople{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:8px}
.lgroup > .lfoot{display:flex;align-items:center;gap:6px 16px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:14px;margin-top:4px}
/* Add to calendar sits at the right end of the footer on every card */
.lfoot .cal{margin-left:auto}
@media(max-width:760px){.lsub .lcard{padding:8px 0 10px;border-bottom:1px solid var(--line)}}

/* details window: Join / Add to calendar row under the title block, left edge in line with the text */
.sdjoin{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin:0 0 20px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.sdjoin .cal{margin-left:auto}
/* Add to calendar in the wide grouped card lines up with the one in the Front Stage card below it */
.lgroup > .lfoot{width:max(330px,calc(50% - 30px));max-width:100%}
@media(max-width:760px){.lgroup > .lfoot{width:auto}}
.lgroup > .lfoot{width:auto;max-width:none;padding-right:max(0px,calc(50% + 30px - 0px))}
@media(max-width:1000px){.lgroup > .lfoot{padding-right:0}}
.netli{list-style:none;margin:0}
.netli .netlogos{margin-top:0}
.lcard .lpeople .netli img,.lsub .lcard .lpeople .netli img{width:auto;height:72px;flex:none;border:0;border-radius:6px;max-width:none}
.netli .netlogos{gap:14px;flex-wrap:wrap}

/* grouped cards v4 (Jenelle 2026-11-05): three fixed columns with a subtle vertical line between items; Add to calendar starts exactly where the second column starts */
@media(min-width:901px){
  .lgroup .lsub{grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
  .lsub .lcard{padding-right:20px}
  .lsub .lcard + .lcard{border-left:1px solid #dbe5ea;padding-left:24px}
  .lgroup > .lfoot{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;align-items:center;width:auto;max-width:none;padding-right:0}
  .lgroup > .lfoot .zoom{justify-self:start}
  .lgroup > .lfoot .cal{margin-left:0;justify-self:start;padding-left:24px;grid-column:2}
}
@media(max-width:900px){
  .lgroup .lsub{grid-template-columns:1fr}
  .lsub .lcard + .lcard{border-top:1px solid #dbe5ea}
  .lgroup > .lfoot{display:flex;padding-right:0;width:auto}
  .lgroup > .lfoot .cal{margin-left:auto}
}

/* one page, both days (Jenelle 2026-11-05): day headings and jump links replace the tabs */
.djump{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0 6px}
.djump a{display:flex;flex-direction:column;gap:2px;min-width:240px;text-decoration:none;color:var(--navy);background:#fff;border-radius:12px;border-top:6px solid var(--green);padding:12px 22px}
.djump a:hover{background:#eef6f2}
.djump a:focus-visible{outline:3px solid #fff;outline-offset:3px}
.djump .k{font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:#4a5b65}
.djump .v{font-size:1.5rem;font-weight:700;font-family:Barlow,Arial,sans-serif;line-height:1.1}
.lday{scroll-margin-top:90px;margin-top:34px}
.lday .lrow,.lday .lband{scroll-margin-top:90px}
.dayh{font-family:Barlow,Arial,sans-serif;font-size:2.2rem;color:#fff;margin:0 0 8px;padding:14px 0 10px;border-bottom:4px solid var(--green)}
#day2 .dayh{border-bottom-color:var(--blue)}
@media(max-width:700px){.djump a{min-width:0;flex:1 1 100%}.dayh{font-size:1.7rem}}

/* quieter top of the Join Live page (Jenelle 2026-11-05): centred day heading, fewer lines */
.regonly{margin:-6px 0 14px;font-size:.95rem;opacity:.9}
.dayh{text-align:center;border-bottom:0;padding:14px 0 18px;margin-bottom:0;position:relative}
.dayh::after{content:"";display:block;width:90px;height:5px;border-radius:3px;background:var(--green);margin:12px auto 0}
#day2 .dayh::after{background:var(--blue)}
/* lines back (dotted line above each break, line under each time); more space after a break so the blocks do not run together (Jenelle 2026-11-05) */
.lday .lband{border-top:1px dashed rgba(255,255,255,.3);margin:18px 0 40px;padding:12px 2px 0}
.lday .lband + .lrow{margin-top:0}
.lday .lrow{margin-top:26px}

/* Add to calendar sits right next to Join Zoom Room everywhere (cards, grouped cards, details window) so it is always in the same place (Jenelle 2026-11-05) */
.lfoot{justify-content:flex-start;gap:6px 22px}
.lfoot .cal,.lcard .lfoot .cal{margin-left:0}
.sdjoin{justify-content:flex-start;gap:8px 22px}
.sdjoin .cal{margin-left:0}
@media(min-width:901px){
  .lgroup > .lfoot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 22px;width:auto;max-width:none;padding-right:0}
  .lgroup > .lfoot .cal{margin-left:0;padding-left:2px;grid-column:auto;justify-self:auto}
  /* closing card: networking gets the wider column so its heading never wraps and more sponsor logos fit */
  .lgroup.lg2 .lsub{grid-template-columns:minmax(260px,1fr) minmax(0,2fr)}
  .lgroup.lg2 .lcard h4{white-space:nowrap}
  .lgroup .netli .netlogos{flex-wrap:wrap}
}
@media(max-width:900px){
  .lgroup > .lfoot .cal{margin-left:0}
  .lsub .lcard + .lcard{border-left:0;padding-left:0}
}
.daynote{text-align:center;margin:-4px 0 6px;font-size:1.1rem;color:#fff}
/* page heading and registrants-only note centred (Jenelle 2026-11-05) */
.ctr1{text-align:center}
.regonly{text-align:center}
.ctr1::after{margin-left:auto;margin-right:auto}

/* Join Live FAQs: each question is a filled bar you click (Jenelle 2026-11-06); white text on the dark page; + / - is CSS only. */
.faq details{margin:0 0 10px}
.faq summary{cursor:pointer;color:#fff;font-family:Barlow,Arial,sans-serif;font-weight:700;font-size:1.2rem;line-height:1.3;padding:14px 52px 14px 18px;list-style:none;position:relative;min-height:44px;border-radius:10px;background:linear-gradient(90deg,rgba(255,255,255,.20),rgba(255,255,255,.08))}
.faq summary:hover{background:linear-gradient(90deg,rgba(255,255,255,.28),rgba(255,255,255,.14))}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:20px;top:9px;font-size:1.8rem;line-height:1;color:var(--green)}
.faq details[open] summary::after{content:"\2212"}
.faq .ans{padding:14px 18px 6px}

/* Signed-in touches (Jenelle 2026-11-06): welcome line on the program page, "Signed in as" under the Sign out button */
.welcome{font-family:Barlow,Arial,sans-serif;font-size:1.5rem;font-weight:600;color:#fff;margin:0 0 .6em}
.nav .signedas{display:block;text-align:center;font-size:.8rem;line-height:1.2;margin-top:4px;color:#cfe3ec;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:900px){.nav .signedas{max-width:none;text-align:left}}
/* 2026-11-06 phone round: Sessions networking card logos below the description; schedule rows on phones */
.session.em .logos{flex-direction:row;flex-wrap:wrap;align-items:center;gap:18px;margin-top:14px}
@media(max-width:700px){
  .tbl.sched caption{padding:16px 16px 14px}
  .tbl.sched tbody th{padding:12px 16px 8px}
  .tbl.sched .tzl{display:inline;margin:0 0 0 8px}
  .tbl.sched tbody th .w{display:block;margin-top:6px}
}
/* 2026-11-10 sponsor session cards (local mock-up, round 7): vertical cards side by side, bigger logos on top, title link with roomy underline, date and time on two lines (converted to the visitor time zone by the small script after the block). Remove with the sponsor sessions (restore versions\2026-11-10_before-sponsor-sessions). */
.sslist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}
.ss{display:flex;flex-direction:column;gap:6px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:14px 22px 20px;margin:0;color:var(--ink)}
.ss[hidden],.ssteaser[hidden]{display:none!important}
.sslogo{order:-1;height:150px;margin:0 0 8px}
.sslogo a{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.sslogo img{display:block;width:auto;height:auto;max-width:100%;max-height:150px}
.sstitle{font-size:1.25rem;line-height:1.5;margin:0 0 12px}
.ssteaser .ss .sstitle a{color:var(--blue-dk);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px}
.ssteaser .ss .sstitle a:hover{color:var(--navy)}
.sswhen{display:flex;flex-direction:column;font-weight:400;color:var(--ink);margin:auto 0 0}
@media(max-width:700px){.sslist{grid-template-columns:1fr}.sslogo{order:0;height:auto;margin-top:8px}.sslogo a{justify-content:flex-start}}
/* 2026-11-10 "Save $50" reminder under Register Now buttons and its anchor target (#save-50, linked from the Novi event page) */
.ssnudge{font-size:1rem;margin:12px 0 0}
.ssnudge[hidden]{display:none}
body:has(#act-signout) .ssnudge{display:none}   /* signed in: the Register Now buttons become Join Live, so no Save $50 line */
#save-50{scroll-margin-top:16px}
