/* Buddy Rooms 0.19.0 — embedded presentations. Owner-approved UX surface.
   Presenter-private next-slide controls are deliberately separated from the shared stage. */
.presentation-tool.active,
.presentation-tool[aria-expanded="true"] {
  color: rgb(var(--rooms-rgb-eef5ff,238,245,255));
  border-color: rgba(var(--rooms-rgb-5785ed,87,133,237),0.82);
  background: rgba(var(--rooms-rgb-2d5297,45,82,151),0.46);
  box-shadow: 0 0 0 1px rgba(var(--rooms-rgb-5785ed,87,133,237),0.1) inset, 0 0 24px rgba(var(--rooms-rgb-2b5cc3,43,92,195),0.17);
}

.presentation-panel-backdrop { z-index: 1191; }
.presentation-panel {
  z-index: 1201;
  border-color: rgba(var(--rooms-rgb-5785ed,87,133,237),0.72) !important;
  box-shadow: 0 24px 72px rgba(0,0,0,.46), 0 0 0 1px rgba(var(--rooms-rgb-5785ed,87,133,237),0.08) inset !important;
}
.presentation-panel .ai-panel-kicker { color: rgb(var(--rooms-rgb-88aefc,136,174,252)); }
.presentation-panel-body { display:block; overflow:auto; padding: 0 18px 18px; }
.presentation-panel-status[data-kind="error"] { color:#ff9e9e; }
.presentation-panel-status[data-kind="ok"] { color:#9ce2bb; }
.presentation-panel-status[data-kind="busy"] { color:rgb(var(--rooms-rgb-9dbdfc,157,189,252)); }

.presentation-panel-view { display:flex; flex-direction:column; gap:14px; min-width:0; }
.presentation-view-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.presentation-view-head > div { min-width:0; }
.presentation-view-head h3 { margin:0; color:var(--text,rgb(var(--rooms-rgb-ebf2ff,235,242,255))); font-size:16px; line-height:1.25; }
.presentation-view-head p { margin:4px 0 0; color:var(--muted,rgb(var(--rooms-rgb-7387a1,115,135,161))); font-size:11px; line-height:1.45; }
.presentation-toolbar-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.presentation-action,
.presentation-mini-action {
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  min-height:34px; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-radius:11px;
  background:var(--bg-soft,rgb(var(--rooms-rgb-0c1725,12,23,37))); color:var(--text,rgb(var(--rooms-rgb-ebf2ff,235,242,255))); font:inherit;
  font-size:11px; font-weight:650; cursor:pointer; transition:.16s ease;
}
.presentation-action { padding:8px 12px; }
.presentation-mini-action { min-height:30px; padding:6px 9px; }
.presentation-action:hover,.presentation-mini-action:hover { border-color:rgb(var(--rooms-rgb-476ca9,71,108,169)); background:rgb(var(--rooms-rgb-122139,18,33,57)); }
.presentation-action.primary { background:rgb(var(--rooms-rgb-1f407a,31,64,122)); border-color:rgb(var(--rooms-rgb-5785ed,87,133,237)); }
.presentation-action.primary:hover { background:rgb(var(--rooms-rgb-285296,40,82,150)); }
.presentation-action.danger,.presentation-mini-action.danger { color:#ffacac; border-color:rgba(255,105,105,.3); }
.presentation-action:disabled,.presentation-mini-action:disabled { opacity:.48; cursor:not-allowed; }

.presentation-search-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; }
.presentation-search {
  width:100%; min-width:0; height:36px; border-radius:11px; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69)));
  background:rgb(var(--rooms-rgb-07111d,7,17,29)); color:var(--text,rgb(var(--rooms-rgb-ebf2ff,235,242,255))); padding:0 12px; font:inherit; font-size:11px;
}
.presentation-search:focus { outline:2px solid rgba(var(--rooms-rgb-5785ed,87,133,237),0.26); border-color:rgb(var(--rooms-rgb-5785ed,87,133,237)); }
.presentation-sort { height:36px; min-width:132px; border-radius:11px; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); background:rgb(var(--rooms-rgb-0c1725,12,23,37)); color:var(--text,rgb(var(--rooms-rgb-ebf2ff,235,242,255))); padding:0 9px; font:inherit; font-size:11px; }
.presentation-filter-row { display:flex; gap:7px; overflow:auto; scrollbar-width:none; padding-bottom:2px; }
.presentation-filter-row::-webkit-scrollbar { display:none; }
.presentation-filter {
  flex:0 0 auto; min-height:30px; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-radius:999px;
  background:rgb(var(--rooms-rgb-0b1623,11,22,35)); color:var(--muted,rgb(var(--rooms-rgb-8ca0b9,140,160,185))); padding:6px 11px; font:inherit; font-size:10px; font-weight:650; cursor:pointer;
}
.presentation-filter.active { color:rgb(var(--rooms-rgb-eef5ff,238,245,255)); background:rgb(var(--rooms-rgb-18325f,24,50,95)); border-color:rgb(var(--rooms-rgb-5785ed,87,133,237)); }

.presentation-library-list { display:flex; flex-direction:column; gap:10px; }
.presentation-card {
  display:grid; grid-template-columns:118px minmax(0,1fr) auto; gap:13px; align-items:center;
  min-height:96px; padding:10px; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-radius:14px; background:rgb(var(--rooms-rgb-091522,9,21,34));
}
.presentation-card:hover { border-color:rgb(var(--rooms-rgb-344d70,52,77,112)); }
.presentation-card-preview {
  position:relative; width:118px; aspect-ratio:16/9; overflow:hidden; border-radius:9px;
  background:linear-gradient(135deg,rgb(var(--rooms-rgb-12223a,18,34,58)),rgb(var(--rooms-rgb-07101b,7,16,27))); border:1px solid rgba(var(--rooms-rgb-7387a1,115,135,161),0.2);
}
.presentation-card-preview img { width:100%; height:100%; display:block; object-fit:cover; }
.presentation-card-preview.is-loading::after { content:""; position:absolute; inset:35% 44%; border:2px solid rgba(255,255,255,.18); border-top-color:rgb(var(--rooms-rgb-6f9cff,111,156,255)); border-radius:50%; animation:presentation-spin .8s linear infinite; }
.presentation-card-type { position:absolute; top:6px; left:6px; padding:3px 6px; border-radius:6px; background:rgba(var(--rooms-rgb-030910,3,9,16),0.76); color:rgb(var(--rooms-rgb-d8e6ff,216,230,255)); font-size:8px; font-weight:750; letter-spacing:.04em; }
.presentation-card-info { min-width:0; }
.presentation-card-title { color:var(--text,rgb(var(--rooms-rgb-ebf2ff,235,242,255))); font-size:13px; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.presentation-card-meta { color:var(--muted,rgb(var(--rooms-rgb-7387a1,115,135,161))); font-size:10px; margin-top:5px; }
.presentation-card-state { margin-top:8px; font-size:10px; color:rgb(var(--rooms-rgb-8bb1ff,139,177,255)); }
.presentation-card-state.failed { color:#ff9e9e; }
.presentation-card-state.ready { color:#90d8b0; }
.presentation-card-buttons { display:flex; flex-direction:column; gap:6px; align-items:stretch; }
.presentation-card-buttons .presentation-mini-action { white-space:nowrap; }

.presentation-empty {
  padding:34px 18px; border:1px dashed rgb(var(--rooms-rgb-263a55,38,58,85)); border-radius:15px; background:rgb(var(--rooms-rgb-06101a,6,16,26)); text-align:center;
}
.presentation-empty b { display:block; color:var(--text,rgb(var(--rooms-rgb-ebf2ff,235,242,255))); font-size:14px; }
.presentation-empty span { display:block; margin:7px auto 14px; max-width:310px; color:var(--muted,rgb(var(--rooms-rgb-7387a1,115,135,161))); font-size:11px; line-height:1.5; }

.presentation-source-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.presentation-source-card {
  min-height:132px; padding:15px; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-radius:15px; background:rgb(var(--rooms-rgb-0b1725,11,23,37)); color:inherit; text-align:left; cursor:pointer;
}
.presentation-source-card:hover,.presentation-source-card.active { border-color:rgb(var(--rooms-rgb-5785ed,87,133,237)); background:rgb(var(--rooms-rgb-142645,20,38,69)); }
.presentation-source-card .source-icon { display:block; color:rgb(var(--rooms-rgb-8db1ff,141,177,255)); font-size:24px; }
.presentation-source-card b { display:block; margin-top:9px; color:var(--text,rgb(var(--rooms-rgb-ebf2ff,235,242,255))); font-size:13px; }
.presentation-source-card small { display:block; margin-top:7px; color:var(--muted,rgb(var(--rooms-rgb-7387a1,115,135,161))); line-height:1.45; font-size:10px; }
.presentation-dropzone {
  min-height:145px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
  border:1px dashed rgb(var(--rooms-rgb-34527b,52,82,123)); border-radius:16px; background:rgb(var(--rooms-rgb-06101a,6,16,26)); padding:18px; text-align:center;
}
.presentation-dropzone.dragover { border-color:rgb(var(--rooms-rgb-73a0ff,115,160,255)); background:rgb(var(--rooms-rgb-0d1c31,13,28,49)); }
.presentation-dropzone .drop-icon { color:rgb(var(--rooms-rgb-6f9cff,111,156,255)); font-size:30px; }
.presentation-dropzone b { color:var(--text,rgb(var(--rooms-rgb-ebf2ff,235,242,255))); font-size:13px; }
.presentation-dropzone small { color:var(--muted,rgb(var(--rooms-rgb-7387a1,115,135,161))); font-size:10px; line-height:1.5; }
.presentation-format-note { color:var(--muted,rgb(var(--rooms-rgb-7387a1,115,135,161))); font-size:10px; line-height:1.55; }
.presentation-format-note strong { color:rgb(var(--rooms-rgb-b8cffb,184,207,251)); }

.presentation-editor-title-row { display:flex; gap:8px; align-items:center; }
.presentation-title-input {
  min-width:0; flex:1; height:36px; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-radius:11px;
  background:rgb(var(--rooms-rgb-07111d,7,17,29)); color:var(--text,rgb(var(--rooms-rgb-ebf2ff,235,242,255))); padding:0 11px; font:inherit; font-size:12px; font-weight:650;
}
.presentation-slides-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.presentation-slide-card {
  position:relative; min-width:0; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-radius:13px; background:rgb(var(--rooms-rgb-091522,9,21,34));
  overflow:hidden; transition:border-color .15s ease, transform .15s ease, opacity .15s ease;
}
.presentation-slide-card[draggable="true"] { cursor:grab; }
.presentation-slide-card.dragging { opacity:.42; transform:scale(.98); }
.presentation-slide-card.drop-before { box-shadow:-3px 0 0 rgb(var(--rooms-rgb-6d9cff,109,156,255)); }
.presentation-slide-card.drop-after { box-shadow:3px 0 0 rgb(var(--rooms-rgb-6d9cff,109,156,255)); }
.presentation-slide-card.selected { border-color:rgb(var(--rooms-rgb-5785ed,87,133,237)); }
.presentation-slide-thumb { position:relative; width:100%; aspect-ratio:16/9; background:rgb(var(--rooms-rgb-030912,3,9,18)); overflow:hidden; }
.presentation-slide-thumb img { width:100%; height:100%; display:block; object-fit:contain; background:rgb(var(--rooms-rgb-02060c,2,6,12)); }
.presentation-slide-load-error { position:absolute; inset:0; display:grid; place-items:center; padding:12px; color:#ff9e9e; font-size:9px; text-align:center; background:rgb(var(--rooms-rgb-070d16,7,13,22)); }
.presentation-slide-number { position:absolute; top:7px; left:7px; min-width:23px; height:23px; display:grid; place-items:center; border-radius:7px; background:rgba(var(--rooms-rgb-02080f,2,8,15),0.84); color:#fff; font-size:9px; font-weight:750; }
.presentation-drag-handle { position:absolute; top:7px; right:7px; min-width:28px; height:23px; display:grid; place-items:center; border-radius:7px; background:rgba(var(--rooms-rgb-02080f,2,8,15),0.84); color:rgb(var(--rooms-rgb-c8d7eb,200,215,235)); font-size:14px; letter-spacing:-2px; }
.presentation-slide-actions { display:flex; justify-content:space-between; align-items:center; gap:5px; padding:7px; }
.presentation-reorder-buttons { display:flex; gap:4px; }
.presentation-slide-actions button { min-width:29px; min-height:28px; padding:4px 7px; }
.presentation-editor-footer { display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap; }
.presentation-upload-progress { padding:9px 11px; border-radius:10px; background:rgb(var(--rooms-rgb-0b1930,11,25,48)); color:rgb(var(--rooms-rgb-aac6ff,170,198,255)); font-size:10px; }

@keyframes presentation-spin { to { transform:rotate(360deg); } }

/* Shared content-stage composition. Board and slides deliberately use the same
   content-left / participant-rail-right geometry. */
.room.content-stage-active .room-main {
  display:grid;
  grid-template-columns:minmax(0,1fr) clamp(176px,19vw,238px);
  grid-template-rows:minmax(0,1fr);
  gap:10px;
  align-items:stretch;
}
.room.content-stage-active .presentation-stage,
.room.content-stage-active [data-buddy-board-root="true"][data-buddy-board-surface="stage"] {
  grid-column:1; grid-row:1; min-width:0; min-height:0;
}
.room.content-stage-active .video-grid {
  grid-column:2; grid-row:1; min-width:0; min-height:0; align-content:start; overflow:auto;
  display:grid !important; grid-template-columns:1fr !important; grid-template-rows:none !important; grid-auto-rows:clamp(118px,16vw,210px); gap:8px;
}
.room.content-stage-active .video-grid > .participant-tile { min-height:118px !important; width:100% !important; max-height:210px; }
.room.content-stage-active .room-message { z-index:9; }

/* The presenter's private next-slide card is part of the participant rail, never
   an overlay on top of the public slide. */
.room.presentation-active.presentation-local-presenter .room-main,
.room.presentation-active.presentation-local-controller .room-main { grid-template-rows:auto minmax(0,1fr); }
.room.presentation-active.presentation-local-presenter .presentation-stage,
.room.presentation-active.presentation-local-controller .presentation-stage { grid-row:1 / span 2; }
.room.presentation-active.presentation-local-presenter .presentation-presenter-dock,
.room.presentation-active.presentation-local-controller .presentation-presenter-dock { grid-column:2; grid-row:1; }
.room.presentation-active.presentation-local-presenter .video-grid { grid-row:2; }
.room.presentation-active.presentation-local-controller .video-grid { grid-row:2; }
.presentation-stage {
  position:relative; overflow:hidden; min-height:380px; border:1px solid rgb(var(--rooms-rgb-20334d,32,51,77)); border-radius:16px;
  background:rgb(var(--rooms-rgb-02060c,2,6,12)); isolation:isolate;
}
.presentation-current-wrap { position:absolute; inset:0; display:flex; flex-direction:column; min-width:0; min-height:0; }
.presentation-current-badge {
  position:absolute; z-index:5; top:12px; left:12px; right:12px; display:flex; align-items:center; gap:8px; pointer-events:none;
  color:rgb(var(--rooms-rgb-dbe8fb,219,232,251)); text-shadow:0 1px 8px rgba(0,0,0,.85);
}
.presentation-current-badge span { width:7px; height:7px; border-radius:50%; background:#63df9c; box-shadow:0 0 10px rgba(99,223,156,.55); }
.presentation-current-badge b { min-width:0; max-width:65%; font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.presentation-current-badge small { color:rgb(var(--rooms-rgb-9bb0ca,155,176,202)); font-size:10px; }
.presentation-slide-canvas { position:absolute; inset:0; display:grid; place-items:center; background:rgb(var(--rooms-rgb-01040a,1,4,10)); }
.presentation-slide-canvas > img { display:block; width:100%; height:100%; object-fit:contain; }
.presentation-pointer-canvas { position:absolute; z-index:3; inset:0; display:block; width:100%; height:100%; pointer-events:none; }
.presentation-slide-canvas.presentation-pointer-mode { cursor:crosshair; touch-action:none; }
.presentation-stage-loading { position:absolute; inset:0; display:grid; place-items:center; color:rgb(var(--rooms-rgb-8ea4c1,142,164,193)); font-size:11px; background:rgb(var(--rooms-rgb-02070e,2,7,14)); }
.presentation-stage-loading.hidden { display:none; }
.presentation-viewer-hint {
  position:absolute; z-index:4; left:50%; bottom:12px; transform:translateX(-50%); max-width:70%;
  padding:7px 11px; border:1px solid rgba(var(--rooms-rgb-526d92,82,109,146),0.4); border-radius:999px; background:rgba(var(--rooms-rgb-050c15,5,12,21),0.78);
  backdrop-filter:blur(8px); color:rgb(var(--rooms-rgb-94a9c3,148,169,195)); font-size:9px; text-align:center; pointer-events:none;
}

/* Presenter-only overlay: not serialized to realtime state and must not be part of recording/public composition. */
.presentation-presenter-dock {
  position:relative; z-index:2; width:100%; min-width:0; padding:8px;
  border:1px solid rgba(var(--rooms-rgb-5785ed,87,133,237),0.52); border-radius:12px; background:rgba(var(--rooms-rgb-050e1a,5,14,26),0.95);
  box-shadow:0 8px 24px rgba(0,0,0,.28); backdrop-filter:blur(12px);
}
.presentation-private-label { display:flex; flex-direction:column; gap:2px; margin-bottom:6px; }
.presentation-private-label span { color:rgb(var(--rooms-rgb-7fa6f7,127,166,247)); font-size:8px; font-weight:800; letter-spacing:.09em; }
.presentation-private-label b { color:rgb(var(--rooms-rgb-e7f0ff,231,240,255)); font-size:11px; }
.presentation-next-preview { position:relative; aspect-ratio:16/9; display:grid; place-items:center; overflow:hidden; border:1px solid rgb(var(--rooms-rgb-273c59,39,60,89)); border-radius:9px; background:rgb(var(--rooms-rgb-02060c,2,6,12)); }
.presentation-next-preview img { width:100%; height:100%; object-fit:contain; display:block; }
.presentation-next-preview span { color:rgb(var(--rooms-rgb-71859f,113,133,159)); font-size:9px; }
.presentation-next-preview span.hidden,.presentation-next-preview img.hidden { display:none; }
.presentation-pointer-toggle {
  position:absolute; z-index:4; top:6px; right:6px; width:30px; min-width:30px; height:30px; min-height:30px; padding:0;
  display:grid; place-items:center; border:1px solid rgba(var(--rooms-rgb-9fb8dc,159,184,220),0.32); border-radius:8px;
  background:rgba(var(--rooms-rgb-030a12,3,10,18),0.82); color:var(--text,rgb(var(--rooms-rgb-eaf1ff,234,241,255))); box-shadow:0 5px 16px rgba(0,0,0,.24); backdrop-filter:blur(8px);
  cursor:pointer; transform:none; transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease,opacity .16s ease;
}
.presentation-pointer-toggle:hover:not(:disabled),.presentation-pointer-toggle:focus-visible { border-color:var(--accent,#F5A04F); background:rgba(var(--rooms-rgb-111f31,17,31,49),0.94); outline:none; transform:none; }
.presentation-pointer-toggle:focus-visible { box-shadow:0 0 0 3px var(--accent-soft,rgba(245,160,79,.12)),0 5px 16px rgba(0,0,0,.24); }
.presentation-pointer-toggle[aria-pressed="true"] { border-color:var(--accent,#F5A04F); background:color-mix(in srgb,var(--accent-soft,rgba(245,160,79,.12)) 74%,rgba(var(--rooms-rgb-030a12,3,10,18),0.88)); box-shadow:0 0 0 1px rgba(245,160,79,.08),0 5px 16px rgba(0,0,0,.24); }
.presentation-pointer-toggle:disabled { opacity:.45; cursor:not-allowed; }
.presentation-pointer-icon { position:relative; width:16px; height:16px; display:block; transform:rotate(-31deg); }
.presentation-pointer-icon::before { content:""; position:absolute; left:7px; top:1px; width:3px; height:12px; border-radius:3px; background:linear-gradient(180deg,rgb(var(--rooms-rgb-f6fbff,246,251,255)) 0%,rgb(var(--rooms-rgb-c8d6e8,200,214,232)) 58%,#ff6a72 59%,#ff4c58 100%); box-shadow:0 0 0 1px rgba(255,255,255,.05); }
.presentation-pointer-icon::after { content:""; position:absolute; left:6px; bottom:0; width:5px; height:5px; border-radius:50%; background:#ff4c58; box-shadow:0 0 7px rgba(255,76,88,.72); }
.presentation-pointer-icon i { position:absolute; left:8px; top:0; width:1px; height:1px; border-radius:50%; background:#ff9aa1; box-shadow:0 0 5px 2px rgba(255,76,88,.48); }
.presentation-pointer-toggle[aria-pressed="true"] .presentation-pointer-icon::after { box-shadow:0 0 0 2px rgba(255,76,88,.12),0 0 10px rgba(255,76,88,.95); }
.presentation-presenter-dock > small { display:block; margin-top:6px; color:rgb(var(--rooms-rgb-7387a1,115,135,161)); font-size:8px; line-height:1.4; }
.presentation-stop-action { flex:0 0 auto; min-height:24px; padding:3px 7px; border-radius:7px; font-size:8px; white-space:nowrap; }
.presentation-shared-control { position:relative; margin-top:7px; padding:9px; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-radius:10px; background:color-mix(in srgb,var(--room-inset,rgb(var(--rooms-rgb-091626,9,22,38))) 88%,transparent); }
.presentation-shared-top { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.presentation-shared-copy { min-width:0; }
.presentation-shared-copy > span { display:block; color:var(--muted,rgb(var(--rooms-rgb-8da0ba,141,160,186))); font-size:7px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.presentation-shared-copy > b { display:block; margin-top:2px; color:var(--text,rgb(var(--rooms-rgb-eaf1ff,234,241,255))); font-size:10px; }
.presentation-shared-copy > small { display:block; margin-top:3px; color:var(--muted,rgb(var(--rooms-rgb-8da0ba,141,160,186))); font-size:7.5px; line-height:1.35; }
.presentation-shared-switch { position:relative; flex:none; width:48px; height:28px; min-width:48px; border:0; padding:0; background:transparent; cursor:pointer; outline:none; }
.presentation-shared-switch-track { position:absolute; inset:0; border:1px solid var(--line-strong,rgb(var(--rooms-rgb-36516d,54,81,109))); border-radius:999px; background:var(--room-control,rgb(var(--rooms-rgb-162940,22,41,64))); transition:background-color 280ms ease,border-color 280ms ease,box-shadow 180ms ease; }
.presentation-shared-switch-thumb { position:absolute; left:4px; top:4px; width:20px; height:20px; border-radius:50%; background:rgb(var(--rooms-rgb-101b2a,16,27,42)); box-shadow:0 1px 3px rgba(0,0,0,.28); transition:transform 280ms ease; }
.presentation-shared-switch[aria-checked="true"] .presentation-shared-switch-track { background:var(--accent,#F5A04F); border-color:var(--accent,#F5A04F); }
.presentation-shared-switch[aria-checked="true"] .presentation-shared-switch-thumb { transform:translateX(20px); }
.presentation-shared-switch:hover .presentation-shared-switch-track { box-shadow:0 0 0 4px var(--accent-soft,rgba(245,160,79,.12)); }
.presentation-shared-switch:focus-visible .presentation-shared-switch-track { outline:2px solid var(--accent,#F5A04F); outline-offset:4px; }
html[data-theme="light"] .presentation-shared-switch-track, body[data-theme="light"] .presentation-shared-switch-track, body.light .presentation-shared-switch-track { background:#b6b3ad; border-color:transparent; }
html[data-theme="light"] .presentation-shared-switch[aria-checked="true"] .presentation-shared-switch-track, body[data-theme="light"] .presentation-shared-switch[aria-checked="true"] .presentation-shared-switch-track, body.light .presentation-shared-switch[aria-checked="true"] .presentation-shared-switch-track { background:var(--accent,#F5A04F); border-color:transparent; }
html[data-theme="light"] .presentation-shared-switch-thumb, body[data-theme="light"] .presentation-shared-switch-thumb, body.light .presentation-shared-switch-thumb { background:#fffaf0; }
.presentation-shared-details { margin-top:7px; }
.presentation-controller-picker-btn { width:100%; height:32px; padding:0 8px; display:grid; grid-template-columns:minmax(0,1fr) auto 12px; align-items:center; gap:7px; border:1px solid var(--line-strong,rgb(var(--rooms-rgb-36516d,54,81,109))); border-radius:8px; background:var(--room-control,rgb(var(--rooms-rgb-162940,22,41,64))); color:var(--text,rgb(var(--rooms-rgb-eaf1ff,234,241,255))); cursor:pointer; text-align:left; }
.presentation-controller-picker-btn:hover,.presentation-controller-picker-btn[aria-expanded="true"] { border-color:var(--accent,#F5A04F); }
.presentation-controller-copy { min-width:0; }
.presentation-controller-copy small { display:block; color:var(--muted,rgb(var(--rooms-rgb-8da0ba,141,160,186))); font-size:7px; }
.presentation-controller-copy b { display:block; margin-top:1px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:8.5px; }
.presentation-controller-count { color:var(--accent,#F5A04F); font-size:8px; font-weight:800; }
.presentation-controller-chevron { color:var(--muted,rgb(var(--rooms-rgb-8da0ba,141,160,186))); font-size:11px; transform-origin:center; transition:transform .18s ease; }
.presentation-controller-picker-btn[aria-expanded="true"] .presentation-controller-chevron { transform:rotate(180deg); }
.presentation-shared-picker { margin-top:6px; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-radius:9px; background:color-mix(in srgb,var(--room-inset,rgb(var(--rooms-rgb-091626,9,22,38))) 95%,transparent); overflow:hidden; max-height:210px; overflow-y:auto; }
.presentation-controller-row { width:100%; display:grid; grid-template-columns:18px minmax(0,1fr) auto; gap:7px; align-items:center; padding:7px 8px; border:0; border-bottom:1px solid color-mix(in srgb,var(--line,rgb(var(--rooms-rgb-213045,33,48,69))) 70%,transparent); background:transparent; color:var(--text,rgb(var(--rooms-rgb-eaf1ff,234,241,255))); cursor:pointer; text-align:left; }
.presentation-controller-row:last-child { border-bottom:0; }
.presentation-controller-row:hover { background:var(--accent-soft,rgba(245,160,79,.12)); }
.presentation-controller-row.is-all { background:color-mix(in srgb,var(--accent-soft,rgba(245,160,79,.12)) 55%,transparent); }
.presentation-controller-check { width:16px; height:16px; display:grid; place-items:center; border:1px solid var(--line-strong,rgb(var(--rooms-rgb-36516d,54,81,109))); border-radius:5px; color:transparent; font-size:10px; font-weight:900; }
.presentation-controller-row.selected .presentation-controller-check { background:var(--accent,#F5A04F); border-color:var(--accent,#F5A04F); color:rgb(var(--rooms-rgb-151515,21,21,21)); }
.presentation-controller-row b { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:8px; }
.presentation-controller-row small { display:block; margin-top:1px; color:var(--muted,rgb(var(--rooms-rgb-8da0ba,141,160,186))); font-size:7px; }
.presentation-shared-picker-empty { padding:9px; color:var(--muted,rgb(var(--rooms-rgb-8da0ba,141,160,186))); font-size:8px; text-align:center; }
.presentation-shared-status { margin-top:7px; color:var(--text-muted,rgb(var(--rooms-rgb-a8b7ca,168,183,202))); font-size:8px; line-height:1.4; }
.presentation-shared-status strong { color:var(--accent,#F5A04F); }
.presentation-nav-controls {
  display:grid; grid-template-columns:46px minmax(58px,1fr) 46px; align-items:stretch; gap:0; margin-top:7px; min-height:34px;
  border:1px solid var(--line-strong,rgb(var(--rooms-rgb-36516d,54,81,109))); border-radius:10px; overflow:hidden; background:var(--room-control,rgb(var(--rooms-rgb-162940,22,41,64)));
}
.presentation-mobile-nav-row { display:contents; }
.presentation-mobile-overflow-head,
.presentation-mobile-overflow-btn,
.presentation-mobile-overflow-backdrop { display:none; }
.presentation-mobile-overflow-head { align-items:center; justify-content:space-between; gap:12px; }
.presentation-mobile-overflow-head b { color:var(--text,rgb(var(--rooms-rgb-eaf1ff,234,241,255))); font-size:13px; }
.presentation-mobile-overflow-close {
  width:34px; min-width:34px; height:34px; min-height:34px; display:grid; place-items:center; padding:0;
  border:1px solid var(--line-strong,rgb(var(--rooms-rgb-36516d,54,81,109))); border-radius:10px; background:var(--room-control,rgb(var(--rooms-rgb-162940,22,41,64))); color:var(--text,rgb(var(--rooms-rgb-eaf1ff,234,241,255)));
  font-size:20px; line-height:1; cursor:pointer;
}
.presentation-mobile-overflow-close:hover,.presentation-mobile-overflow-close:focus-visible { border-color:var(--accent,#F5A04F); outline:none; }
.presentation-nav-button {
  height:34px; min-height:34px; min-width:0; padding:0; border:0; border-radius:0; box-shadow:none;
  background:transparent; color:var(--text-muted,rgb(var(--rooms-rgb-a8b7ca,168,183,202))); font:inherit; font-size:17px; font-weight:750; cursor:pointer;
  transition:background-color .16s ease,color .16s ease,opacity .16s ease;
}
.presentation-nav-button:hover:not(:disabled), .presentation-nav-button:focus-visible {
  background:var(--accent,#F5A04F); color:#211507; outline:none;
}
.presentation-nav-button:focus-visible { box-shadow:inset 0 0 0 2px color-mix(in srgb,#211507 52%,transparent); }
.presentation-nav-button:active:not(:disabled) { background:var(--accent,#F5A04F); color:#211507; }
.presentation-nav-button:disabled { background:transparent; color:var(--muted,rgb(var(--rooms-rgb-8da0ba,141,160,186))); opacity:.42; cursor:not-allowed; box-shadow:none; }
.presentation-nav-counter {
  min-width:0; display:grid; place-items:center; text-align:center; color:var(--text,rgb(var(--rooms-rgb-eaf1ff,234,241,255))); font-size:10px; font-weight:800;
  border-left:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-right:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); background:transparent;
}
@media(prefers-reduced-motion:reduce){.presentation-shared-switch-track,.presentation-shared-switch-thumb,.presentation-controller-chevron{transition:none!important}}
.presentation-thumb-rail {
  position:absolute; z-index:9; left:12px; right:12px; bottom:12px; height:76px; display:flex; gap:7px; overflow-x:auto; overflow-y:hidden;
  padding:7px; border:1px solid rgba(var(--rooms-rgb-314865,49,72,101),0.55); border-radius:12px; background:rgba(var(--rooms-rgb-030910,3,9,16),0.88); backdrop-filter:blur(10px);
}
.presentation-thumb-button { flex:0 0 92px; position:relative; border:1px solid rgb(var(--rooms-rgb-263a55,38,58,85)); border-radius:8px; padding:0; overflow:hidden; background:rgb(var(--rooms-rgb-02060c,2,6,12)); cursor:pointer; }
.presentation-thumb-button img { width:100%; height:100%; object-fit:contain; display:block; }
.presentation-thumb-button.active { border-color:rgb(var(--rooms-rgb-6f9cff,111,156,255)); box-shadow:0 0 0 1px rgb(var(--rooms-rgb-6f9cff,111,156,255)) inset; }
.presentation-thumb-button span { position:absolute; left:4px; bottom:4px; min-width:16px; padding:2px 4px; border-radius:5px; background:rgba(0,0,0,.75); color:#fff; font-size:7px; }
.room.presentation-local-presenter .presentation-viewer-hint { bottom:96px; }

.presentation-switch-note { padding:9px 11px; border:1px solid rgba(var(--rooms-rgb-5785ed,87,133,237),0.25); border-radius:11px; background:rgb(var(--rooms-rgb-0b1730,11,23,48)); color:rgb(var(--rooms-rgb-9dbbf8,157,187,248)); font-size:10px; line-height:1.45; }
.presentation-takeover {
  position:absolute; z-index:8; right:14px; bottom:14px; display:flex; align-items:center; gap:8px;
  padding:8px 10px; border:1px solid rgb(var(--rooms-rgb-365989,54,89,137)); border-radius:10px; background:rgba(var(--rooms-rgb-081424,8,20,36),0.9); color:rgb(var(--rooms-rgb-d9e7ff,217,231,255)); font-size:9px;
}

body[data-theme="light"] .presentation-panel,
body.light .presentation-panel { background:#f7f9fc; }
body[data-theme="light"] .presentation-card,
body[data-theme="light"] .presentation-source-card,
body[data-theme="light"] .presentation-slide-card,
body.light .presentation-card,
body.light .presentation-source-card,
body.light .presentation-slide-card { background:#f8fafc; }
body[data-theme="light"] .presentation-search,
body.light .presentation-search { background:#fff; }

@media (max-width: 900px) {
  #presentationsBtn { display:none !important; }
  .presentation-panel { width:min(100vw - 12px,520px) !important; right:6px !important; top:56px !important; bottom:70px !important; }
  .presentation-card { grid-template-columns:102px minmax(0,1fr); }
  .presentation-card-buttons { grid-column:1 / -1; flex-direction:row; }
  .presentation-source-grid { grid-template-columns:1fr; }
  .presentation-slides-grid { grid-template-columns:1fr 1fr; }
  .room.content-stage-active .room-main {
    grid-template-columns:1fr; grid-template-rows:minmax(300px,1fr) auto;
  }
  .room.content-stage-active .presentation-stage,
  .room.content-stage-active [data-buddy-board-root="true"][data-buddy-board-surface="stage"] { grid-column:1; grid-row:1; }
  .room.content-stage-active .video-grid {
    grid-column:1; grid-row:2; display:flex !important; flex-direction:row; overflow:auto; min-height:96px; max-height:128px;
  }
  .room.content-stage-active .video-grid > .participant-tile { flex:0 0 148px !important; width:148px !important; min-height:92px !important; height:96px !important; }
  .room.presentation-active.presentation-local-presenter .room-main,
  .room.presentation-active.presentation-local-controller .room-main { grid-template-rows:minmax(300px,1fr) auto auto; }
  .room.presentation-active.presentation-local-presenter .presentation-stage,
  .room.presentation-active.presentation-local-controller .presentation-stage { grid-row:1; }
  .room.presentation-active.presentation-local-presenter .presentation-presenter-dock,
  .room.presentation-active.presentation-local-controller .presentation-presenter-dock { grid-column:1; grid-row:2; }
  .room.presentation-active.presentation-local-presenter .video-grid,
  .room.presentation-active.presentation-local-controller .video-grid { grid-row:3; }
  .presentation-presenter-dock { width:100%; display:grid; grid-template-columns:minmax(104px,142px) minmax(0,1fr); grid-template-rows:auto auto auto auto; column-gap:8px; align-items:center; }
  .presentation-presenter-head { grid-column:2; grid-row:1; min-width:0; }
  .presentation-private-label { margin:0; }
  .presentation-next-preview { grid-column:1; grid-row:1 / span 3; }
  .presentation-presenter-dock > small { grid-column:2; grid-row:2; margin-top:2px; }
  .presentation-nav-controls { grid-column:2; grid-row:3; margin-top:4px; }
  .presentation-shared-control { grid-column:1 / -1; grid-row:4; }
  .presentation-thumb-rail { left:8px; right:8px; bottom:8px; width:auto; height:62px; }
  .presentation-thumb-button { flex-basis:72px; }
  .presentation-current-badge { top:8px; left:8px; right:8px; }
  .presentation-viewer-hint { bottom:8px; max-width:92%; }
}

@media (max-width: 520px) {
  .presentation-panel-body { padding-left:12px; padding-right:12px; }
  .presentation-search-row { grid-template-columns:1fr; }
  .presentation-sort { width:100%; }
  .presentation-card { grid-template-columns:88px minmax(0,1fr); gap:9px; padding:8px; }
  .presentation-card-preview { width:88px; }
  .presentation-card-buttons { overflow:auto; }
  .presentation-slides-grid { grid-template-columns:1fr; }
  .presentation-editor-title-row { align-items:stretch; flex-direction:column; }
  .presentation-editor-footer { align-items:stretch; flex-direction:column; }
  .presentation-editor-footer > * { width:100%; }

  .room.presentation-active.presentation-local-presenter .room-main,
  .room.presentation-active.presentation-local-controller .room-main {
    grid-template-rows:clamp(178px,min(56vw,34dvh),286px) 40px minmax(96px,1fr);
    align-content:stretch;
  }
  .room.presentation-active.presentation-local-presenter .presentation-stage,
  .room.presentation-active.presentation-local-controller .presentation-stage { min-height:0; height:100%; max-height:none; border-radius:12px; }
  .room.presentation-active.presentation-local-presenter .video-grid,
  .room.presentation-active.presentation-local-controller .video-grid { min-height:96px; max-height:none; height:100%; }

  .presentation-presenter-dock {
    width:100%; min-width:0; padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; backdrop-filter:none;
    display:block; overflow:visible;
  }
  .presentation-presenter-dock > .presentation-presenter-head,
  .presentation-presenter-dock > .presentation-next-preview,
  .presentation-presenter-dock > small,
  .presentation-presenter-dock > .presentation-shared-control,
  .presentation-presenter-dock > .presentation-mobile-overflow-head { display:none; }
  .presentation-next-preview { display:none; }
  .presentation-presenter-dock > small { display:none; }
  .presentation-mobile-nav-row { display:grid; grid-template-columns:minmax(0,1fr) 40px; gap:8px; align-items:stretch; }
  .presentation-mobile-nav-row:has(.presentation-mobile-overflow-btn.hidden) { grid-template-columns:1fr; }
  html[data-theme] #roomView .presentation-presenter-dock { background:transparent; }
  .presentation-nav-controls { grid-column:auto; grid-row:auto; margin:0; min-height:40px; grid-template-columns:44px minmax(58px,1fr) 44px; }
  .presentation-nav-button { height:38px; min-height:38px; }
  .presentation-mobile-overflow-btn:not(.hidden) {
    display:grid; place-items:center; width:40px; min-width:40px; height:40px; min-height:40px; padding:0;
    border:1px solid var(--line-strong,rgb(var(--rooms-rgb-36516d,54,81,109))); border-radius:10px; background:var(--room-control,rgb(var(--rooms-rgb-162940,22,41,64))); color:var(--text-muted,rgb(var(--rooms-rgb-a8b7ca,168,183,202)));
    font-size:20px; font-weight:800; line-height:1; cursor:pointer;
  }
  .presentation-mobile-overflow-btn:hover,.presentation-mobile-overflow-btn:focus-visible,.presentation-mobile-overflow-btn[aria-expanded="true"] {
    border-color:var(--accent,#F5A04F); color:var(--accent,#F5A04F); outline:none;
  }
  .presentation-mobile-overflow-backdrop:not(.hidden) {
    display:block; position:fixed; z-index:89; inset:0; padding:0; border:0; border-radius:0; background:rgba(var(--rooms-rgb-020710,2,7,16),0.58); backdrop-filter:blur(2px);
  }
  html[data-theme] #roomView .presentation-presenter-dock.presentation-mobile-overflow-open {
    position:fixed; z-index:90; left:8px; right:8px; bottom:calc(var(--room-dock-space,57px) + 8px); width:auto;
    max-height:min(72dvh,520px); overflow-y:auto; overscroll-behavior:contain;
    display:grid; grid-template-columns:1fr; gap:10px; align-items:stretch;
    padding:14px 12px calc(12px + env(safe-area-inset-bottom,0px)); border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-radius:20px;
    background:var(--panel,rgb(var(--rooms-rgb-0a131f,10,19,31))); box-shadow:0 -18px 58px rgba(0,0,0,.48); backdrop-filter:blur(18px);
  }
  .presentation-presenter-dock.presentation-mobile-overflow-open > .presentation-mobile-overflow-head { display:flex; order:1; }
  .presentation-presenter-dock.presentation-mobile-overflow-open > .presentation-next-preview { display:grid; order:2; width:min(100%,320px); justify-self:center; }
  .presentation-presenter-dock.presentation-mobile-overflow-open > .presentation-shared-control:not(.hidden) { display:block; order:3; grid-column:auto; grid-row:auto; margin:0; }
  .presentation-presenter-dock.presentation-mobile-overflow-open > .presentation-presenter-head { display:flex; order:4; grid-column:auto; grid-row:auto; }
  .presentation-presenter-dock.presentation-mobile-overflow-open .presentation-private-label { display:none; }
  .presentation-presenter-dock.presentation-mobile-overflow-open .presentation-stop-action:not(.hidden) {
    display:flex; width:100%; min-height:40px; align-items:center; justify-content:center; margin:0; padding:7px 10px; border-radius:10px; font-size:10px;
  }
  .presentation-presenter-dock.presentation-mobile-overflow-open > .presentation-mobile-nav-row { order:5; }
  .presentation-thumb-rail { width:calc(100% - 16px); height:54px; padding:5px; }
  .presentation-thumb-button { flex-basis:60px; }
}

/* Short landscape phones need the same compact controls with a shallower stage. */
@media (max-width: 900px) and (max-height: 560px) {
  .room.presentation-active.presentation-local-presenter .room-main,
  .room.presentation-active.presentation-local-controller .room-main {
    grid-template-rows:clamp(132px,34dvh,188px) 38px minmax(70px,1fr);
    align-content:stretch;
  }
  .room.presentation-active.presentation-local-presenter .presentation-stage,
  .room.presentation-active.presentation-local-controller .presentation-stage { min-height:0; height:100%; max-height:none; }
  .room.presentation-active.presentation-local-presenter .video-grid,
  .room.presentation-active.presentation-local-controller .video-grid { min-height:70px; max-height:none; height:100%; }
  .room.presentation-active.presentation-local-presenter .video-grid > .participant-tile,
  .room.presentation-active.presentation-local-controller .video-grid > .participant-tile { min-height:68px !important; height:74px !important; }
  .presentation-presenter-dock {
    width:100%; min-width:0; padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; backdrop-filter:none;
    display:block; overflow:visible;
  }
  .presentation-presenter-dock > .presentation-presenter-head,
  .presentation-presenter-dock > .presentation-next-preview,
  .presentation-presenter-dock > small,
  .presentation-presenter-dock > .presentation-shared-control,
  .presentation-presenter-dock > .presentation-mobile-overflow-head { display:none; }
  .presentation-mobile-nav-row { display:grid; grid-template-columns:minmax(0,1fr) 40px; gap:8px; align-items:stretch; }
  .presentation-mobile-nav-row:has(.presentation-mobile-overflow-btn.hidden) { grid-template-columns:1fr; }
  html[data-theme] #roomView .presentation-presenter-dock { background:transparent; }
  .presentation-nav-controls { grid-column:auto; grid-row:auto; margin:0; min-height:38px; grid-template-columns:42px minmax(58px,1fr) 42px; }
  .presentation-nav-button { height:36px; min-height:36px; }
  .presentation-mobile-overflow-btn:not(.hidden) {
    display:grid; place-items:center; width:40px; min-width:40px; height:38px; min-height:38px; padding:0;
    border:1px solid var(--line-strong,rgb(var(--rooms-rgb-36516d,54,81,109))); border-radius:10px; background:var(--room-control,rgb(var(--rooms-rgb-162940,22,41,64))); color:var(--text-muted,rgb(var(--rooms-rgb-a8b7ca,168,183,202)));
    font-size:20px; font-weight:800; line-height:1; cursor:pointer;
  }
  .presentation-mobile-overflow-btn:hover,.presentation-mobile-overflow-btn:focus-visible,.presentation-mobile-overflow-btn[aria-expanded="true"] { border-color:var(--accent,#F5A04F); color:var(--accent,#F5A04F); outline:none; }
  .presentation-mobile-overflow-backdrop:not(.hidden) { display:block; position:fixed; z-index:89; inset:0; padding:0; border:0; border-radius:0; background:rgba(var(--rooms-rgb-020710,2,7,16),0.58); backdrop-filter:blur(2px); }
  html[data-theme] #roomView .presentation-presenter-dock.presentation-mobile-overflow-open {
    position:fixed; z-index:90; left:8px; right:8px; bottom:calc(var(--room-dock-space,57px) + 8px); width:auto;
    max-height:min(72dvh,390px); overflow-y:auto; overscroll-behavior:contain;
    display:grid; grid-template-columns:1fr; gap:9px; align-items:stretch;
    padding:12px; border:1px solid var(--line,rgb(var(--rooms-rgb-213045,33,48,69))); border-radius:18px; background:var(--panel,rgb(var(--rooms-rgb-0a131f,10,19,31))); box-shadow:0 -18px 58px rgba(0,0,0,.48); backdrop-filter:blur(18px);
  }
  .presentation-presenter-dock.presentation-mobile-overflow-open > .presentation-mobile-overflow-head { display:flex; order:1; }
  .presentation-presenter-dock.presentation-mobile-overflow-open > .presentation-next-preview { display:grid; order:2; width:min(100%,220px); justify-self:center; }
  .presentation-presenter-dock.presentation-mobile-overflow-open > .presentation-shared-control:not(.hidden) { display:block; order:3; grid-column:auto; grid-row:auto; margin:0; }
  .presentation-presenter-dock.presentation-mobile-overflow-open > .presentation-presenter-head { display:flex; order:4; grid-column:auto; grid-row:auto; }
  .presentation-presenter-dock.presentation-mobile-overflow-open .presentation-private-label { display:none; }
  .presentation-presenter-dock.presentation-mobile-overflow-open .presentation-stop-action:not(.hidden) { display:flex; width:100%; min-height:36px; align-items:center; justify-content:center; }
  .presentation-presenter-dock.presentation-mobile-overflow-open > .presentation-mobile-nav-row { order:5; }
}

/* 0.21.130 · owner-approved presentation speaker focus.
   The existing participant enlarge control becomes presentation-aware:
   wide -> side -> rail. The public slide remains object-fit:contain. */
.presentation-speaker-stage {
  display:none; min-width:0; min-height:0; overflow:hidden; position:relative;
}
.presentation-speaker-stage:not(.hidden) { display:block; }
.presentation-speaker-stage .presentation-speaker-card {
  width:100%!important; height:100%!important; min-width:0!important; min-height:0!important; max-width:none!important; max-height:none!important;
  margin:0!important; border-radius:14px!important;
}
.presentation-speaker-stage .presentation-speaker-card video[data-presentation-speaker-mirror="true"] { object-fit:cover!important; }
.presentation-speaker-stage .presentation-speaker-card .tile-actions,
.presentation-speaker-stage .presentation-speaker-card .tile-pip-btn { display:none!important; }
.room.content-stage-active .video-grid > .participant-tile.presentation-speaker-selected {
  border-color:var(--accent,#F5A04F)!important;
  box-shadow:0 0 0 1px color-mix(in srgb,var(--accent,#F5A04F) 32%,transparent)!important;
}

/* B – wide speaker. The speaker and slide use exactly the same grid column. */
.room.presentation-active.content-stage-active.presentation-speaker-wide .room-main {
  grid-template-columns:minmax(0,1fr) clamp(176px,19vw,238px);
  grid-template-rows:clamp(156px,22vh,270px) minmax(0,1fr);
}
.room.presentation-active.content-stage-active.presentation-speaker-wide .presentation-speaker-stage { grid-column:1; grid-row:1; }
.room.presentation-active.content-stage-active.presentation-speaker-wide .presentation-stage { grid-column:1; grid-row:2; }
.room.presentation-active.content-stage-active.presentation-speaker-wide:not(.presentation-local-presenter):not(.presentation-local-controller) .video-grid { grid-column:2; grid-row:1 / span 2; }
.room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .presentation-stage,
.room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .presentation-stage { grid-row:2!important; }
.room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .presentation-presenter-dock,
.room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .presentation-presenter-dock { grid-column:2; grid-row:1; align-self:start; }
.room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .video-grid,
.room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .video-grid { grid-column:2; grid-row:2; }

/* C – optional second click. Portrait speaker gets a full-height center column;
   the normal participant rail remains available on the far right. */
@media (min-width:901px) {
  .room.presentation-active.content-stage-active.presentation-speaker-side .room-main {
    grid-template-columns:minmax(0,1fr) clamp(220px,24vw,360px) clamp(150px,16vw,224px);
    grid-template-rows:minmax(0,1fr);
  }
  .room.presentation-active.content-stage-active.presentation-speaker-side .presentation-stage { grid-column:1; grid-row:1; }
  .room.presentation-active.content-stage-active.presentation-speaker-side .presentation-speaker-stage { grid-column:2; grid-row:1; }
  .room.presentation-active.content-stage-active.presentation-speaker-side:not(.presentation-local-presenter):not(.presentation-local-controller) .video-grid { grid-column:3; grid-row:1; }
  .room.presentation-active.content-stage-active.presentation-speaker-side.presentation-local-presenter .room-main,
  .room.presentation-active.content-stage-active.presentation-speaker-side.presentation-local-controller .room-main {
    grid-template-rows:auto minmax(0,1fr);
  }
  .room.presentation-active.content-stage-active.presentation-speaker-side.presentation-local-presenter .presentation-stage,
  .room.presentation-active.content-stage-active.presentation-speaker-side.presentation-local-controller .presentation-stage { grid-column:1; grid-row:1 / span 2; }
  .room.presentation-active.content-stage-active.presentation-speaker-side.presentation-local-presenter .presentation-speaker-stage,
  .room.presentation-active.content-stage-active.presentation-speaker-side.presentation-local-controller .presentation-speaker-stage { grid-column:2; grid-row:1 / span 2; }
  .room.presentation-active.content-stage-active.presentation-speaker-side.presentation-local-presenter .presentation-presenter-dock,
  .room.presentation-active.content-stage-active.presentation-speaker-side.presentation-local-controller .presentation-presenter-dock { grid-column:3; grid-row:1; }
  .room.presentation-active.content-stage-active.presentation-speaker-side.presentation-local-presenter .video-grid,
  .room.presentation-active.content-stage-active.presentation-speaker-side.presentation-local-controller .video-grid { grid-column:3; grid-row:2; }
}

@media (max-width:900px) {
  /* 0.21.132 · Force the rail back into the single narrow column. The desktop
     presenter/viewer selectors are more specific and otherwise keep grid-column:2. */
  .room.presentation-active.content-stage-active.presentation-speaker-wide .room-main {
    grid-template-columns:1fr;
    grid-template-rows:clamp(128px,18dvh,188px) minmax(300px,1fr) auto;
  }
  .room.presentation-active.content-stage-active.presentation-speaker-wide .presentation-speaker-stage { grid-column:1; grid-row:1; }
  .room.presentation-active.content-stage-active.presentation-speaker-wide .presentation-stage { grid-column:1; grid-row:2!important; }
  .room.presentation-active.content-stage-active.presentation-speaker-wide .video-grid { grid-column:1!important; grid-row:3; }
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .room-main,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .room-main {
    grid-template-rows:clamp(128px,18dvh,188px) minmax(300px,1fr) auto auto;
  }
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .presentation-presenter-dock,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .presentation-presenter-dock { grid-column:1; grid-row:3; }
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .video-grid,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .video-grid { grid-row:4; }
}

/* 0.21.131 · control-pass corrective for the owner-approved presentation speaker.
   Keep the enlarged video responsive without allowing the presenter controls to
   overlap the participant rail, and let short tablet/phone layouts shrink the
   slide row instead of overflowing the room viewport. */
@media (min-width:901px) {
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .room-main,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .room-main {
    grid-template-rows:auto minmax(0,1fr);
  }
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .presentation-speaker-stage,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .presentation-speaker-stage,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .presentation-stage,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .presentation-stage,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .video-grid,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .video-grid {
    min-height:0;
  }
}

@media (max-width:900px) {
  .room.presentation-active.content-stage-active.presentation-speaker-wide .room-main {
    grid-template-rows:clamp(104px,17dvh,156px) minmax(0,1fr) auto;
    min-height:0;
  }
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .room-main,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .room-main {
    grid-template-rows:clamp(104px,17dvh,156px) minmax(0,1fr) auto auto;
  }
  .room.presentation-active.content-stage-active.presentation-speaker-wide .presentation-speaker-stage,
  .room.presentation-active.content-stage-active.presentation-speaker-wide .presentation-stage {
    min-height:0!important;
    height:100%;
    max-height:none;
  }
}

@media (max-width:520px) {
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .room-main,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .room-main {
    grid-template-rows:clamp(96px,min(34vw,18dvh),138px) minmax(0,1fr) 40px minmax(96px,1fr);
  }
}

@media (max-width:900px) and (max-height:560px) {
  .room.presentation-active.content-stage-active.presentation-speaker-wide .room-main {
    grid-template-rows:clamp(86px,18dvh,112px) minmax(0,1fr) minmax(70px,96px);
  }
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-presenter .room-main,
  .room.presentation-active.content-stage-active.presentation-speaker-wide.presentation-local-controller .room-main {
    grid-template-rows:clamp(86px,18dvh,112px) minmax(0,1fr) 38px minmax(70px,1fr);
  }
}


/* ===== PATCH109 STAGE 3 / 0.21.163 · OWNER TIMER B =====
   Participant-private durable timing overlay. It is absolutely positioned inside
   presentationSlideCanvas and therefore contributes zero layout height. */
.presentation-timer {
  position:absolute; z-index:9; top:10px; right:10px; display:flex; align-items:center; gap:6px;
  max-width:calc(100% - 20px); min-height:35px; padding:5px 6px; border:1px solid rgba(255,255,255,.16);
  border-radius:10px; background:rgba(var(--rooms-rgb-04090f,4,9,15),0.72); color:rgb(var(--rooms-rgb-f7fbff,247,251,255)); box-shadow:0 8px 20px rgba(0,0,0,.24);
  backdrop-filter:blur(9px); font-size:10px; line-height:1; font-variant-numeric:tabular-nums;
}
.presentation-timer.hidden { display:none!important; }
.presentation-timer > strong { flex:0 0 auto; font-size:10px; white-space:nowrap; }
.presentation-timer-slide { flex:0 1 auto; min-width:0; color:rgb(var(--rooms-rgb-bdc9d8,189,201,216)); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.presentation-timer-action {
  flex:0 0 25px; width:25px; min-width:25px; height:25px; min-height:25px; padding:0; display:grid; place-items:center;
  border:1px solid rgba(255,255,255,.12); border-radius:7px; background:rgba(255,255,255,.04); color:rgb(var(--rooms-rgb-f4f7fb,244,247,251));
  cursor:pointer; transform:none; transition:border-color .16s ease,color .16s ease,background-color .16s ease,opacity .16s ease;
}
.presentation-timer-action svg { width:13px; height:13px; fill:none; stroke:currentColor; stroke-width:1.8; }
.presentation-timer-action:hover:not(:disabled),.presentation-timer-action:focus-visible { border-color:var(--accent,#F5A04F); color:var(--accent,#F5A04F); background:rgba(255,255,255,.04); outline:none; transform:none; }
.presentation-timer-action.danger:hover:not(:disabled),.presentation-timer-action.danger:focus-visible { border-color:#ff6c78; background:#ff6c78; color:#161012; }
.presentation-timer-action:disabled { opacity:.42; cursor:not-allowed; }
.presentation-timer-disclosure { font-size:13px; font-weight:800; line-height:1; padding-bottom:2px; }
.presentation-timer-menu {
  position:absolute; z-index:2; right:0; top:calc(100% + 6px); width:190px; max-height:min(45vh,280px); overflow:auto;
  padding:7px; border:1px solid rgba(255,255,255,.14); border-radius:9px; background:rgba(var(--rooms-rgb-04090f,4,9,15),0.94);
  box-shadow:0 12px 30px rgba(0,0,0,.38); backdrop-filter:blur(10px);
}
.presentation-timer-menu.hidden { display:none!important; }
.presentation-timer-menu-title { margin:1px 2px 5px; color:rgb(var(--rooms-rgb-8799af,135,153,175)); font-size:8px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; }
.presentation-timer-row { display:flex; justify-content:space-between; gap:9px; padding:5px 3px; border-top:1px solid rgba(255,255,255,.07); font-size:9px; }
.presentation-timer-row:first-child { border-top:0; }
.presentation-timer-row.current { color:var(--accent,#F5A04F); }
.presentation-timer-row b { font-variant-numeric:tabular-nums; }
.presentation-timer-empty { padding:7px 3px; color:rgb(var(--rooms-rgb-91a3b8,145,163,184)); font-size:9px; }
.presentation-timer-menu-total { margin-top:4px; padding:5px 3px 2px; border-top:1px solid rgba(255,255,255,.09); color:rgb(var(--rooms-rgb-91a3b8,145,163,184)); font-size:8px; }
@media (max-width:520px),(max-width:900px) and (max-height:560px) {
  .presentation-timer { top:7px; right:7px; gap:4px; max-width:calc(100% - 14px); padding:4px 5px; }
  .presentation-timer > strong,.presentation-timer-slide { font-size:8.5px; }
  .presentation-timer-action { flex-basis:22px; width:22px; min-width:22px; height:22px; min-height:22px; }
  .presentation-timer-menu { width:166px; }
}
