*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
:root{
  --bg:#f4f5fa;--panel:#fff;--panel2:#f0f1f7;--line:#e1e4ee;--fg:#141727;--muted:#6a708a;
  --brand:#5b54f0;--brand-fg:#fff;--hand:#e89611;--help:#ea3f58;--slow:#2f8fef;--ok:#17a673;
  --radius:12px;--shadow:0 1px 2px rgba(20,23,39,.06),0 8px 24px rgba(20,23,39,.06);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
body.dark{--bg:#0b0d15;--panel:#141722;--panel2:#1c2030;--line:#272c3f;--fg:#eef0f8;--muted:#959bb5;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.35);color-scheme:dark}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--fg);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}
h1,h2,h3,p{margin:0}
a{color:var(--brand)}
button,input,select,textarea{font:inherit;color:inherit}
input[type=text],input[type=email],input[type=tel],input[type=password],input[type=number],input[type=url],select,textarea{
  width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel);outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 22%,transparent)}
textarea{resize:vertical;min-height:80px}
label.f{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin:12px 0 5px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 14px;border:1px solid var(--line);
  border-radius:9px;background:var(--panel);cursor:pointer;font-weight:600;white-space:nowrap;text-decoration:none;color:var(--fg);
  transition:background .12s,border-color .12s,transform .05s}
.btn:hover{background:var(--panel2)}
.btn:active{transform:translateY(1px)}
.btn:disabled{opacity:.45;cursor:default}
.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-fg)}
.btn.primary:hover{background:color-mix(in srgb,var(--brand) 88%,#000)}
.btn.danger{color:var(--help)}
.btn.sm{padding:6px 10px;font-size:13px}
.btn.lg{padding:13px 20px;font-size:16px;border-radius:11px}
.btn.ghost{background:transparent;border-color:transparent}
.btn.ghost:hover{background:var(--panel2)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.muted{color:var(--muted)}
.row{display:flex;align-items:center;gap:10px}
.grow{flex:1;min-width:0}
.err{color:var(--help);font-size:13.5px;margin-top:10px;min-height:1.3em}
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:99px;font-size:12px;font-weight:700;
  background:var(--panel2);color:var(--muted)}
.chip.live{background:color-mix(in srgb,var(--help) 16%,transparent);color:var(--help)}
.chip.live::before,.dot{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}
.chip.live::before{animation:pulse 1.4s infinite}
@keyframes pulse{50%{opacity:.3}}
.dot.on{color:var(--ok)}.dot.off{color:var(--help)}
#toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);background:#151827;color:#fff;padding:10px 16px;
  border-radius:10px;font-weight:600;opacity:0;pointer-events:none;transition:.2s;z-index:100;box-shadow:var(--shadow);max-width:90vw}
#toast.show{opacity:1;transform:translate(-50%,0)}
dialog{border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--fg);padding:22px;
  width:min(460px,calc(100vw - 28px));box-shadow:0 30px 80px rgba(0,0,0,.4)}
dialog::backdrop{background:rgba(8,10,18,.6);backdrop-filter:blur(3px)}
dialog h3{font-size:19px;margin-bottom:6px}
dialog.mbox{animation:mbox .14s ease-out}
dialog.mbox h3{line-height:1.25;text-wrap:balance}
dialog.mbox p{margin-top:4px}
dialog.mbox input{margin-top:14px}
.mbox-a{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}
.btn.primary.red{background:var(--help);border-color:var(--help)}
.btn.primary.red:hover{background:color-mix(in srgb,var(--help) 86%,#000)}
@keyframes mbox{from{opacity:0;transform:translateY(8px) scale(.98)}}

/* ───────── объявления лектора ───────── */
.msg-t{white-space:pre-wrap;overflow-wrap:anywhere;font-size:15.5px;line-height:1.45}
.msg-t a{color:color-mix(in srgb,var(--brand) 75%,var(--fg));font-weight:600}
.msg-l{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.msg-l .btn{max-width:100%;overflow:hidden;text-overflow:ellipsis;display:inline-block}
.msg-when{font-size:12px;color:var(--muted);margin-bottom:4px;display:flex;gap:8px;align-items:center}
.msg-new{background:var(--brand);color:#fff;border-radius:99px;padding:0 7px;font-weight:700;font-size:11px}
.msg-item{padding:13px 0;border-top:1px solid var(--line)}
.msg-item:first-child{border-top:0;padding-top:4px}

/* ───────── слайд: всё в em от ширины, поэтому миниатюра и экран выглядят одинаково ───────── */
.slide{position:relative;aspect-ratio:16/9;container-type:inline-size;overflow:hidden;background:#0b0d1a;
  --s-fg:#f3f4fb;--s-muted:#a7accb;--s-card:rgba(255,255,255,.07);--s-line:rgba(255,255,255,.14);--accent:#6d5efc}
.slide .s{position:absolute;inset:0;font-size:2.05cqw;padding:2.5em 3.3em;display:flex;flex-direction:column;color:var(--s-fg);
  line-height:1.42;background:
    radial-gradient(90% 120% at 0% 0%,color-mix(in srgb,var(--accent) 34%,transparent),transparent 60%),
    radial-gradient(60% 80% at 100% 100%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%),#0b0d1a}
.slide.light{--s-fg:#14172a;--s-muted:#5b6282;--s-card:rgba(20,23,42,.05);--s-line:rgba(20,23,42,.13);background:#fff}
.slide.light .s{background:
    radial-gradient(80% 110% at 100% 0%,color-mix(in srgb,var(--accent) 15%,transparent),transparent 60%),#fcfcff}
.slide h1,.slide h2,.slide h3{margin:0;text-transform:none;color:inherit;display:block}
.slide h1{font-size:3.3em;line-height:1.04;font-weight:800;letter-spacing:-.025em;text-wrap:balance}
.slide h2{font-size:1.85em;line-height:1.12;font-weight:750;letter-spacing:-.015em;margin-bottom:.7em;text-wrap:balance}
.slide .sub{font-size:1.3em;color:var(--s-muted);margin-top:.9em;max-width:32em}
.s-title{justify-content:center}
.s-title::before{content:"";width:3.2em;height:.36em;border-radius:1em;background:var(--accent);margin-bottom:1.5em}
.slide .md{font-size:1.12em}
.slide .md p{margin:0 0 .6em}
.slide .md ul,.slide .md ol{margin:0 0 .6em;padding-left:1.25em}
.slide .md li{margin:.32em 0;padding-left:.2em}
.slide .md li::marker{color:var(--accent);font-weight:800}
.slide .md h3{font-size:1.15em;margin:.5em 0 .3em}
.slide .md code,.slide pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.slide .md code{background:var(--s-card);padding:.08em .35em;border-radius:.3em;font-size:.9em}
.slide .md pre{background:var(--s-card);padding:.7em .9em;border-radius:.5em;font-size:.8em;overflow:auto;margin:0 0 .6em}
.slide .md a,.slide a{color:color-mix(in srgb,var(--accent) 70%,var(--s-fg))}
.slide .cols{flex:1;min-height:0;display:flex;gap:2em;align-items:center}
.slide .cols.left{flex-direction:row-reverse}
.slide .cols>.md{flex:1;min-width:0;max-height:100%;overflow:auto}
.slide .cols>figure{flex:1.2;margin:0;height:100%;min-width:0;display:flex;align-items:center;justify-content:center}
.slide .cols img{max-width:100%;max-height:100%;border-radius:.6em;object-fit:contain}
.s-image{padding:0!important}
.s-image img{width:100%;height:100%;object-fit:contain}
.s-image img.cover{object-fit:cover}
.s-image .cap{position:absolute;left:0;right:0;bottom:0;padding:2.4em 3.3em 1.2em;font-size:1.05em;color:#fff;
  background:linear-gradient(transparent,rgba(0,0,0,.72))}
.s-image .ph,.slide .ph{margin:auto;color:var(--s-muted);font-size:1.2em}
.s-quote{justify-content:center}
.s-quote blockquote{margin:0;font-size:2.05em;line-height:1.22;font-weight:650;letter-spacing:-.01em;text-wrap:balance;
  padding-left:.9em;border-left:.18em solid var(--accent)}
.s-quote cite{display:block;margin-top:1.4em;color:var(--s-muted);font-style:normal;font-size:1.1em;padding-left:1.9em}
.s-code pre{flex:1;min-height:0;margin:0;background:var(--s-card);border:1px solid var(--s-line);border-radius:.7em;
  padding:1em 1.2em;font-size:.95em;line-height:1.5;white-space:pre-wrap;word-break:break-word;overflow:auto}
.slide .sbtn{align-self:flex-start;margin-top:.9em;font-size:.95em;font-weight:700;padding:.55em 1.1em;border-radius:.6em;
  border:1px solid var(--s-line);background:var(--s-card);color:var(--s-fg);cursor:pointer;text-decoration:none;display:inline-flex;gap:.5em;align-items:center}
.slide .sbtn.accent{background:var(--accent);border-color:var(--accent);color:#fff}
.slide .sbtn.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.slide .badge{align-self:flex-start;font-size:.72em;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,transparent);padding:.35em .8em;border-radius:99em;margin-bottom:.9em}
.slide.light .badge{color:color-mix(in srgb,var(--accent) 80%,#000)}
.s-task .md{flex:1;min-height:0;overflow:auto}
.s-task .foot,.s-poll .foot{margin-top:.8em;display:flex;align-items:center;gap:.7em;color:var(--s-muted);font-size:.95em}
.s-task .foot .sbtn,.s-poll .foot .sbtn{margin-top:0}
.slide .grow{flex:1}
.s-task .prog{flex:1;height:.5em;border-radius:1em;background:var(--s-card);overflow:hidden}
.s-task .prog i{display:block;height:100%;background:var(--ok);border-radius:1em;transition:width .4s}
.s-poll .opts{flex:1;min-height:0;display:flex;flex-direction:column;gap:.55em;justify-content:center}
.s-poll .opt{position:relative;display:flex;align-items:center;gap:.8em;text-align:left;width:100%;font-size:1.08em;
  padding:.62em .9em;border-radius:.65em;border:1px solid var(--s-line);background:var(--s-card);color:var(--s-fg);overflow:hidden;cursor:pointer}
.s-poll .opt:disabled{cursor:default}
.s-poll .opt:not(:disabled):hover{border-color:var(--accent)}
.s-poll .opt .bar{position:absolute;left:0;top:0;bottom:0;background:color-mix(in srgb,var(--accent) 30%,transparent);transition:width .45s;z-index:0}
.s-poll .opt>*:not(.bar){position:relative;z-index:1}
.s-poll .opt .let{flex:none;width:1.75em;height:1.75em;border-radius:.45em;display:grid;place-items:center;font-weight:800;font-size:.85em;
  background:var(--s-line)}
.s-poll .opt .lbl{flex:1;min-width:0}
.s-poll .opt .pct{font-weight:750;font-variant-numeric:tabular-nums;font-size:.92em}
.s-poll .opt.mine{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.s-poll .opt.mine .let{background:var(--accent);color:#fff}
.s-poll .opt.right{border-color:var(--ok)}.s-poll .opt.right .let{background:var(--ok);color:#fff}
.s-poll .opt.right .bar{background:color-mix(in srgb,var(--ok) 32%,transparent)}
.s-poll .opt.wrong{border-color:var(--help)}.s-poll .opt.wrong .let{background:var(--help);color:#fff}
.s-poll h2{margin-bottom:.55em}
.qz-wait{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5em;text-align:center;font-size:1.15em;color:var(--s-muted)}
.qz-wait h2{color:var(--s-fg);margin:0}
.qz-big{font-size:4.6em;line-height:1;font-weight:800;color:var(--s-fg);font-variant-numeric:tabular-nums}
.qz-big small{font-size:.38em;color:var(--s-muted);font-weight:650}
.qz-wait .prog{width:60%;height:.45em;border-radius:1em;background:var(--s-card);overflow:hidden;margin-top:.4em}
.qz-wait .prog i{display:block;height:100%;background:var(--accent);border-radius:1em;transition:width .4s}
.qz-per{display:flex;flex-wrap:wrap;gap:.5em;justify-content:center;font-size:.75em;margin-top:.5em}
.qz-per span{background:var(--s-card);padding:.25em .7em;border-radius:99em}
.qz-per b{color:var(--s-fg)}
.qz-dots{display:flex;gap:.35em}
.qz-dots i{width:.6em;height:.6em;border-radius:50%;background:var(--s-line)}
.qz-dots i.a{background:var(--accent)}
.qz-dots i.c{outline:.12em solid var(--s-fg);outline-offset:.1em}
.s-embed .frame{flex:1;min-height:0;border-radius:.7em;overflow:hidden;background:#000}
.s-embed iframe{width:100%;height:100%;border:0;display:block}
.s-embed .link{flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:.4em}
.s-embed .link .u{color:var(--s-muted);font-size:.95em;word-break:break-all}
.s-embed .link .sbtn{font-size:1.25em;padding:.7em 1.4em}
.s-empty{align-items:center;justify-content:center;color:var(--s-muted)}
.slide.thumb{pointer-events:none;user-select:none}

/* сцена: слайд вписывается в доступную область с сохранением 16:9 */
.stage{container-type:size;display:grid;place-items:center;min-width:0;min-height:0;overflow:hidden}
.stage>.slide{width:min(100cqw,calc(100cqh*16/9));border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.45)}

/* ───────── заявки и места (пульт лектора и телефон ассистента) ───────── */
.reqs{display:flex;flex-direction:column;gap:8px}
.req{display:flex;gap:12px;align-items:center;padding:10px 12px;border-radius:12px;background:var(--panel2);border-left:4px solid var(--hand)}
.req.help{border-left-color:var(--help)}
.req.screen{border-left-color:var(--slow)}
.req.screen .pcnum{background:color-mix(in srgb,var(--slow) 20%,transparent);color:var(--slow)}
.req.taken{opacity:.72}
.req .pcnum{flex:none;min-width:52px;height:52px;padding:0 6px;border-radius:11px;display:grid;place-items:center;font-size:23px;font-weight:800;
  background:color-mix(in srgb,var(--hand) 20%,transparent);color:var(--hand);font-variant-numeric:tabular-nums}
.req.help .pcnum{background:color-mix(in srgb,var(--help) 20%,transparent);color:var(--help)}
.req .pcnum small{display:block;font-size:9.5px;font-weight:700;letter-spacing:.08em;margin-bottom:-6px;opacity:.8}
.req-n{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.req-k{font-size:12.5px;color:var(--muted)}
.req-t{font-size:13.5px;margin-top:3px}
.req-by{font-size:12.5px;color:var(--ok);font-weight:650;margin-top:2px}
.req-a{display:flex;flex-direction:column;gap:5px}
.empty{padding:18px;text-align:center;color:var(--muted);font-size:13.5px;border:1px dashed var(--line);border-radius:12px}
.seats{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:6px}
.seat{position:relative;aspect-ratio:1;border-radius:10px;background:var(--panel2);display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-weight:800;font-size:17px;color:var(--muted);border:2px solid transparent;overflow:hidden;font-variant-numeric:tabular-nums}
.seat small{font-size:9.5px;font-weight:600;max-width:92%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.85}
.seat.empty-seat{opacity:.4;background:transparent;border:2px dashed var(--line)}
.seat.on{color:var(--fg);background:color-mix(in srgb,var(--ok) 20%,var(--panel2))}
.seat.done::after{content:"✓";position:absolute;top:1px;right:4px;font-size:11px;color:var(--ok)}
.seat.slow{border-color:var(--slow)}
.seat.hand{background:var(--hand);color:#fff;border-color:var(--hand)}
.seat.help{background:var(--help);color:#fff;border-color:var(--help);animation:pulse 1.2s infinite}
.legend{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:11.5px;color:var(--muted);margin-top:8px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.nopc{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
