#scheduleView,#clubsView{--zl-blue:var(--accent);--zl-soft:var(--accent-soft);--zl-green:var(--success);--zl-red:var(--danger);background:var(--bg)}
:is(#scheduleView,#clubsView) .schedule-header-centered{display:flex;justify-content:space-between;gap:16px;padding:20px 24px;border-bottom:1px solid var(--border);background:var(--surface);min-height:92px}
:is(#scheduleView,#clubsView) .schedule-header-title{position:static;transform:none;order:0;display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0;font-size:24px;font-weight:750;letter-spacing:-.6px;text-align:left}
:is(#scheduleView,#clubsView) .schedule-header-title>svg{color:var(--accent);width:24px;height:24px}
:is(#scheduleView,#clubsView) #scheduleCount,#clubsView #clubsCount{font-size:13px!important;letter-spacing:0;color:var(--text-secondary);margin-left:0!important}
:is(#scheduleView,#clubsView) .schedule-header-left{order:1;display:flex;gap:8px;align-items:center}
:is(#scheduleView,#clubsView) .schedule-header-right{display:none}
:is(#scheduleView,#clubsView) .bulk-body{padding:20px 24px 36px;overflow-y:auto;min-height:0}
.zl-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.zl-stat{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px;min-width:0;display:flex;flex-direction:column;gap:7px}
.zl-stat-label{font-size:12px;color:var(--text-secondary);font-weight:600}
.zl-stat-value{font-size:30px;line-height:1.15;font-weight:750;font-variant-numeric:tabular-nums;letter-spacing:-.7px;color:var(--text)}
.zl-stat-note{font-size:11px;color:var(--text-tertiary);line-height:1.5}
.zl-green{color:var(--success)}.zl-red{color:var(--danger)}.zl-blue{color:var(--accent)}
.zl-sync{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);padding:10px 2px 16px;min-height:42px;flex-wrap:wrap}
.zl-sync .btn{margin-left:auto}.zl-sync-time{color:var(--text-tertiary);margin-left:6px;font-variant-numeric:tabular-nums}
.zl-sync-dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--text-muted)}.zl-green-bg{background:var(--success)}.zl-amber-bg{background:var(--warning)}
.zl-filters{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:14px}
.zl-filter{font:inherit;font-size:12px;font-weight:600;background:none;color:var(--text-secondary);border:0;border-bottom:2px solid transparent;padding:11px 12px;cursor:pointer}
.zl-filter.active{color:var(--accent);border-bottom-color:var(--accent)}.zl-filter:hover{background:var(--surface-hover)}
:is(#scheduleView,#clubsView) .schedule-filters{margin-bottom:12px!important;gap:6px!important}
:is(#scheduleView,#clubsView) .sched-filter-btn{padding:6px 9px;min-height:31px;border-radius:7px;font-size:12px;box-shadow:none}
:is(#scheduleView,#clubsView) #scheduleSearchInput,#clubsView #clubsSearchInput{height:36px;font-size:12px;background:var(--surface)}
.zl-columns{display:grid;grid-template-columns:80px minmax(235px,1.2fr) minmax(170px,.85fr) minmax(195px,1fr) 145px 74px;gap:16px;padding:12px 16px;font-size:11px;font-weight:600;color:var(--text-tertiary);background:var(--surface-sunken);border:1px solid var(--border);border-bottom:0;border-radius:10px 10px 0 0}
:is(#scheduleView,#clubsView) .schedule-list{gap:0;display:block;border:1px solid var(--border);border-top:0;border-radius:0 0 10px 10px;background:var(--surface)}
:is(#scheduleView,#clubsView) .sched-row.zl-row{display:grid;grid-template-columns:80px minmax(235px,1.2fr) minmax(170px,.85fr) minmax(195px,1fr) 145px 74px;align-items:center;gap:16px;padding:16px;border:0;border-bottom:1px solid var(--border-subtle);border-radius:0;margin:0;box-shadow:none;background:var(--surface);opacity:1;min-height:88px;position:relative}
:is(#scheduleView,#clubsView) .sched-row.zl-row:last-child{border-bottom:0;border-radius:0 0 10px 10px}
:is(#scheduleView,#clubsView) .sched-row.zl-row[hidden]{display:none!important}
:is(#scheduleView,#clubsView) .zl-row[data-zoom-status=live]{box-shadow:inset 3px 0 var(--success)}
:is(#scheduleView,#clubsView) .zl-row[data-zoom-status=not-started]{box-shadow:inset 3px 0 var(--danger)}
:is(#scheduleView,#clubsView) .zl-row:hover{background:var(--surface-hover)}
:is(#scheduleView,#clubsView) .zl-row .sched-time{font-size:17px;font-weight:700;line-height:1.5;color:var(--text);font-variant-numeric:tabular-nums}
:is(#scheduleView,#clubsView) .zl-row .sched-time-end{font-size:11px;color:var(--text-tertiary)}
:is(#scheduleView,#clubsView) .zl-row .sched-body{min-width:0}.zl-row .sched-name{font-size:13px!important;font-weight:650!important;white-space:normal;line-height:1.5}
:is(#scheduleView,#clubsView) .zl-row .sched-meta{gap:6px;font-size:11px;line-height:1.5;flex-wrap:wrap;color:var(--text-tertiary)}
:is(#scheduleView,#clubsView) .zl-row .sched-source-badge{display:none}
:is(#scheduleView,#clubsView) .zl-row .sched-teacher-link{color:var(--accent);font-weight:500}
.zl-room-state{display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-width:0}
.zl-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:6px;font-size:11px;font-weight:650;line-height:1.35;white-space:nowrap;color:var(--text-secondary);background:var(--surface-sunken)}
.zl-badge:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}
.zl-badge-live{color:var(--success);background:var(--success-soft)}.zl-badge-not-started{color:var(--danger);background:var(--danger-soft)}.zl-badge-unknown{color:var(--warning);background:var(--warning-soft)}.zl-badge-ended{color:var(--text-secondary);background:var(--surface-sunken)}.zl-badge-upcoming{color:var(--accent);background:var(--accent-soft)}.zl-badge-cancelled{color:var(--text-tertiary);background:var(--surface-sunken)}
.zl-status-sub{display:block;font-size:10px;line-height:1.4;color:var(--text-tertiary);font-variant-numeric:tabular-nums}
.zl-people{display:flex;align-items:flex-start;flex-direction:column;gap:4px;text-align:left;border:0;background:none;color:var(--accent);font:inherit;font-size:12px;padding:6px 0;cursor:pointer;line-height:1.4}
.zl-people strong{font-size:13px;font-weight:650}.zl-people small{font-size:10px;color:var(--text-secondary)}.zl-people:hover small{color:var(--accent)}
.zl-action-menu{position:relative;grid-column:6;grid-row:1;justify-self:end;font-size:11px}
.zl-action-menu>summary{list-style:none;cursor:pointer;border:1px solid var(--border);border-radius:7px;padding:7px 9px;white-space:nowrap;color:var(--text-secondary);background:var(--surface)}
.zl-action-menu>summary:after{content:' ⌄'}.zl-action-menu>summary::-webkit-details-marker{display:none}
:is(#scheduleView,#clubsView) .zl-action-menu>.sched-actions{position:absolute;right:0;top:calc(100% + 6px);z-index:20;display:flex;flex-direction:column;align-items:stretch;gap:4px;width:220px;padding:8px;border:1px solid var(--border);border-radius:10px;background:var(--surface);box-shadow:var(--shadow-lg)}
:is(#scheduleView,#clubsView) .zl-action-menu:not([open])>.sched-actions{display:none}
:is(#scheduleView,#clubsView) .zl-action-menu .sched-action-btn{justify-content:flex-start;min-height:34px;font-size:12px;margin:0;border-color:transparent}
:is(#scheduleView,#clubsView) .zl-action-menu .sched-action-btn.primary{background:var(--accent-soft);color:var(--accent)}
:is(#scheduleView,#clubsView) .zl-action-menu .sched-auto-toggle{padding:9px 7px}
.zl-other-rooms{margin-top:22px}.zl-other-rooms:empty{display:none}.zl-other-rooms h3{margin:0;font-size:14px;font-weight:650}.zl-other-rooms>p{margin:5px 0 12px;font-size:12px;color:var(--text-tertiary)}
.zl-other-row{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--border);border-radius:10px;background:var(--surface);margin:8px 0}.zl-other-row>div{flex:1;min-width:0}.zl-other-row strong{display:block;font-size:13px}.zl-other-row small{display:block;font-size:11px;color:var(--text-tertiary);margin-top:4px}.zl-other-row .btn{font-size:12px}
.zl-overlay{position:fixed;inset:0;z-index:25000;background:rgba(15,23,42,.24);display:flex;justify-content:flex-end}
.zl-drawer{width:min(510px,100vw);height:100%;background:var(--surface);color:var(--text);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;outline:none}
.zl-drawer-head{padding:24px 24px 18px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.zl-eyebrow{font-size:10px;font-weight:700;letter-spacing:.08em;color:var(--text-tertiary)}.zl-drawer h2{margin:8px 0 0;font-size:20px;line-height:1.4;font-weight:700}
.zl-close{width:32px;height:32px;border:1px solid var(--border);background:var(--surface);border-radius:8px;color:var(--text-secondary);font-size:22px;cursor:pointer;flex-shrink:0}
.zl-session-list{display:flex;gap:6px;padding:12px 24px;overflow-x:auto;border-bottom:1px solid var(--border)}.zl-session-list:empty{display:none}
.zl-session{padding:7px 10px;background:var(--surface);color:var(--text-secondary);border:1px solid var(--border);border-radius:6px;font:inherit;font-size:11px;white-space:nowrap;cursor:pointer}.zl-session.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.zl-drawer-body{padding:20px 24px;overflow:auto;min-height:0;flex:1}.zl-meeting-meta p{margin:9px 0;font-size:12px;line-height:1.6;color:var(--text-secondary)}
.zl-notice{padding:10px 12px;background:var(--warning-soft);color:var(--text);border-radius:8px;font-size:12px;line-height:1.6;margin:12px 0}
.zl-part-tabs{display:flex;gap:2px;margin:20px 0 12px;border-bottom:1px solid var(--border)}.zl-part-tab{font:inherit;font-size:12px;font-weight:600;color:var(--text-secondary);background:none;border:0;border-bottom:2px solid transparent;padding:9px 10px;cursor:pointer}.zl-part-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.zl-search{width:100%;margin-bottom:12px;font-size:12px!important;min-height:36px}
.zl-participant{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--border-subtle);padding:13px 0}.zl-participant>div{flex:1;min-width:0}.zl-participant strong{font-size:13px;font-weight:600;overflow-wrap:anywhere}.zl-participant small{display:block;font-size:10px;color:var(--text-tertiary);margin-top:4px;font-variant-numeric:tabular-nums}
.zl-avatar{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:10px;font-weight:650}
.zl-event{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:11px;align-items:start;padding:14px 0;border-bottom:1px solid var(--border-subtle)}.zl-event-dot{width:7px;height:7px;border-radius:50%;margin-top:5px;background:currentColor}.zl-event strong{display:block;font-size:12px;font-weight:600;overflow-wrap:anywhere}.zl-event small{display:block;font-size:11px;color:var(--text-secondary);margin-top:4px}.zl-event time{font-size:10px;color:var(--text-tertiary);font-variant-numeric:tabular-nums;padding-top:2px}
.zl-disclaimer,.zl-explanation{font-size:11px;line-height:1.7;color:var(--text-tertiary);margin:18px 0}.zl-empty{padding:25px 8px;font-size:12px;color:var(--text-secondary);text-align:center;line-height:1.6}
.zl-filter:focus-visible,.zl-people:focus-visible,.zl-action-menu>summary:focus-visible,.zl-part-tab:focus-visible,.zl-close:focus-visible,.zl-session:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(min-width:1600px){:is(#scheduleView,#clubsView) .bulk-body{padding-left:32px;padding-right:32px}.zl-columns,#scheduleView .sched-row.zl-row{grid-template-columns:96px minmax(280px,1.2fr) minmax(220px,.85fr) minmax(240px,1fr) 160px 80px;gap:24px;padding-left:20px;padding-right:20px}}
@media(max-width:1100px){.zl-columns,#scheduleView .sched-row.zl-row{grid-template-columns:65px minmax(185px,1.1fr) minmax(135px,.85fr) minmax(165px,1fr) 115px 68px;gap:10px}:is(#scheduleView,#clubsView) .bulk-body{padding:16px}:is(#scheduleView,#clubsView) .schedule-header-centered{padding:16px}.zl-stat{padding:13px}.zl-stat-note{font-size:10px}}
@media(max-width:980px){:is(#scheduleView,#clubsView) .schedule-header-centered{flex-wrap:wrap}:is(#scheduleView,#clubsView) .schedule-header-title{font-size:20px}:is(#scheduleView,#clubsView) .schedule-header-left{width:100%}.zl-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.zl-stat-value{font-size:25px}.zl-columns{display:none}:is(#scheduleView,#clubsView) .schedule-list{border-top:1px solid var(--border);border-radius:10px}:is(#scheduleView,#clubsView) .sched-row.zl-row{grid-template-columns:65px minmax(0,1fr) 70px;gap:10px;padding:14px;min-height:120px}.zl-action-menu{grid-column:3;grid-row:1}.zl-room-state{grid-column:2;grid-row:4}.zl-people{grid-column:2;grid-row:2}.zl-quality{grid-column:2;grid-row:3}.zl-sync-time{display:none}.zl-filters{gap:0}.zl-filter{padding:10px 8px;font-size:11px}.zl-other-row{flex-wrap:wrap}.zl-other-row>div{min-width:180px}.zl-drawer-head{padding:18px}.zl-drawer-body{padding:16px 18px}.zl-session-list{padding:10px 18px}}

:is(#scheduleView,#clubsView) .schedule-header-title,#scheduleView .zl-row .sched-name{color:var(--text)!important}
:is(#scheduleView,#clubsView) .sched-filter-btn{background:var(--surface-sunken)!important;color:var(--text-secondary)!important;border:1px solid var(--border)!important}
:is(#scheduleView,#clubsView) .sched-filter-btn.active{background:var(--accent-soft)!important;color:var(--accent)!important;border-color:var(--accent)!important}
:is(#scheduleView,#clubsView) .zl-sync .btn{background:var(--surface);color:var(--text-secondary);border:1px solid var(--border)}
@media(max-width:980px){:is(#scheduleView,#clubsView) .schedule-filters{margin-left:-16px!important;margin-right:-16px!important;padding-left:16px;padding-right:16px;width:auto!important}}
html[data-theme="dark"] :is(#scheduleView,#clubsView) .schedule-filters .sched-filter-btn:not(.active){background:var(--surface)!important;color:var(--text-secondary)!important}

.zl-count-line{display:flex;align-items:baseline;gap:7px;color:var(--text-secondary);font-size:12px}
.zl-people .zl-count{font-size:25px;line-height:1.15;font-weight:750;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.zl-people{min-width:0;width:100%;gap:5px}.zl-people .zl-live-names{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text);font-size:11px}
.zl-quality{min-width:0;display:flex;flex-direction:column;gap:5px;color:var(--text-tertiary)}
.zl-quality-line{display:flex;align-items:center;gap:8px;min-height:24px}.zl-quality-line strong{font-size:13px;font-weight:650;line-height:1.4}
.zl-quality-person,.zl-quality-source{display:block;font-size:10px;line-height:1.45;color:var(--text-tertiary);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zl-signal{display:inline-flex;align-items:flex-end;gap:2px;width:23px;flex:none;height:17px}.zl-signal i{width:4px;background:currentColor;border-radius:1px;opacity:.22}
.zl-quality[data-quality=good] .zl-quality-line{color:var(--success)}.zl-quality[data-quality=warning] .zl-quality-line{color:var(--warning)}.zl-quality[data-quality=critical] .zl-quality-line,.zl-quality[data-quality=left] .zl-quality-line{color:var(--danger)}
.zl-quality[data-quality=good] .zl-signal i,.zl-quality[data-quality=warning] .zl-signal i:nth-child(-n+2),.zl-quality[data-quality=critical] .zl-signal i:first-child{opacity:1}
.zl-other-row>.zl-other-quality{flex:0 1 260px}.zl-other-quality .zl-quality-line strong{font-size:13px}
@media(max-width:980px){.zl-people{padding:3px 0}.zl-quality{margin-bottom:3px}.zl-count-line .zl-count{font-size:23px}.zl-other-row>.zl-other-quality{flex-basis:100%}}

/* substitute chip next to the class name + ended rows in "Other Zoom sessions" */
.zl-sub-chip{display:inline-flex;align-items:center;gap:5px;margin-left:8px;padding:2px 7px;border-radius:6px;font-size:10.5px;font-weight:650;line-height:1.4;color:var(--accent);background:var(--accent-soft);vertical-align:middle;white-space:nowrap}
.zl-sub-chip:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}
.zl-other-row.zl-other-ended{opacity:.85}.zl-other-row.zl-other-ended .zl-other-quality:empty{display:none}

/* Today's Clubs: each row sits in a .club-row-wrap with its member-groups panel */
#clubsView .club-row-wrap>.sched-row.zl-row:last-child{border-bottom:1px solid var(--border-subtle);border-radius:0}
#clubsView .club-row-wrap:last-of-type>.sched-row.zl-row:last-child{border-bottom:0;border-radius:0 0 10px 10px}
#clubsView .club-row-wrap[hidden]{display:none!important}
#clubsView .sched-row.zl-row.status-now::before{display:none}

/* Assist (2026-10-07): join a live room as "Assistant · name" with co-host powers. */
.zl-assist-btn{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--success);background:var(--success-soft);color:var(--success);font:inherit;font-size:11px;font-weight:650;line-height:1;padding:5px 10px;border-radius:999px;cursor:pointer;white-space:nowrap}
.zl-assist-btn::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.zl-assist-btn:hover{background:var(--success);color:var(--surface)}
.zl-assist-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.zl-assist-btn.is-off{border-color:var(--border);background:var(--surface-sunken);color:var(--text-tertiary);cursor:not-allowed}
.zl-assist-btn.is-off:hover{background:var(--surface-sunken);color:var(--text-tertiary)}
.zl-quality>.zl-assist-btn{margin-top:8px;align-self:flex-start}
.zl-other-row>.zl-assist-btn{flex:0 0 auto}
.sched-actions>.zl-assist-btn{margin-right:6px}
