:root{--gold:#e9b44c;--bar:56px;--dock:48px;--glass:rgba(12,10,8,.82);--fade:700ms}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;background:#000;color:#f2ede6;font-family:Inter,system-ui,sans-serif;overflow:hidden;overscroll-behavior:none}
button{font:inherit;color:inherit;cursor:pointer}
#app{position:fixed;inset:0;background:#0c0a08}
#stage,#slidePane{position:absolute;left:0;right:0;top:0;bottom:var(--bar)}
#stage{overflow:hidden}
/* speaker background: blurred cover layer + sharp contained portrait, crossfaded */
.bg{position:absolute;inset:0;opacity:0;transition:opacity var(--fade) ease;overflow:hidden}
.bg.show{opacity:1}
.bg .blur{position:absolute;inset:-6%;background-size:cover;background-position:center;filter:blur(36px) brightness(.55) saturate(1.1)}
.bg .sharp{position:absolute;top:0;bottom:var(--dockh,var(--dock));left:50%;transform:translateX(-50%);aspect-ratio:1;max-width:100%;height:calc(100% - var(--dockh,var(--dock)));background-size:cover;background-position:center;
  -webkit-mask-image:radial-gradient(circle at 50% 50%,#000 40%,transparent 66%);mask-image:radial-gradient(circle at 50% 50%,#000 40%,transparent 66%);image-rendering:auto}
.bg.blurOnly .sharp{display:none}
.bg.blurOnly .blur{filter:blur(18px) brightness(.5) saturate(1.2)}
.bg.wide .sharp{aspect-ratio:auto;left:0;right:0;transform:none;width:100%;-webkit-mask-image:none;mask-image:none;background-size:cover}
#vignette{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 40%,transparent 45%,rgba(0,0,0,.55));pointer-events:none}
#minime{position:absolute;left:3vw;bottom:calc(var(--dockh,var(--dock)) - 6px);height:min(42vh,448px);width:auto;filter:drop-shadow(0 10px 22px rgba(0,0,0,.7));transform-origin:50% 100%;transition:transform .35s ease,filter .35s}
#minime.talking{animation:bob .55s ease-in-out infinite alternate}
#minime.listening{transform:scale(.94);filter:drop-shadow(0 10px 22px rgba(0,0,0,.7)) brightness(.82)}
@keyframes bob{from{transform:translateY(0) rotate(-1deg)}to{transform:translateY(-10px) rotate(1deg)}}
#nameplate{position:absolute;right:4vw;bottom:calc(var(--dockh,var(--dock)) + 14px);text-align:right;text-shadow:0 2px 12px #000}
#npName{display:block;font:700 clamp(28px,4.4vw,72px) Cardo,Georgia,serif;color:#fff}
#npRole{font-size:clamp(13px,1.6vw,24px);color:var(--gold);letter-spacing:.08em;text-transform:uppercase}
/* slide window */
#slidePane{background:#0c0a08;overflow:hidden;z-index:3;touch-action:none}
#slideStage{position:absolute;inset:0}
.slide{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity var(--fade) ease;pointer-events:none}
.slide.show{opacity:1}
#placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:rgba(242,237,230,.35);font-size:14px;text-align:center;padding:10px}
#wbar,#rz,#backBtn,#showSlides,#start{display:none}
#app[data-view=stage] #slidePane{left:var(--x,16px);top:var(--y,16px);right:auto;bottom:auto;width:var(--w,360px);height:var(--h,203px);border:2px solid var(--gold);border-radius:6px;box-shadow:0 6px 28px rgba(0,0,0,.7);cursor:grab;user-select:none}
#app[data-view=stage] #placeholder{display:none}
#app[data-view=stage] #wbar{display:flex;position:absolute;right:4px;top:4px;gap:4px;z-index:5;opacity:0;transition:opacity .2s}
#app[data-view=stage] #slidePane:hover #wbar,#app[data-view=stage] #slidePane.touchy #wbar{opacity:1}
#wbar button{width:30px;height:30px;background:var(--glass);border:1px solid rgba(233,180,76,.6);border-radius:5px}
#app[data-view=stage] #rz{display:block;position:absolute;right:-2px;bottom:-2px;width:24px;height:24px;cursor:nwse-resize;z-index:6;background:linear-gradient(135deg,transparent 50%,var(--gold) 50%);border-radius:0 0 6px 0}
#app[data-view=stage][data-hidden="1"] #slidePane{display:none}
#app[data-view=stage][data-hidden="1"] #showSlides{display:block}
#app[data-view=slides] #slidePane{inset:0 0 var(--bar) 0}
#app[data-view=slides] #backBtn{display:block;position:absolute;left:14px;top:14px;z-index:5;padding:10px 16px;background:var(--gold);color:#1a1307;font-weight:700;border:0;border-radius:8px}
#app[data-view=slides] #stage{visibility:hidden}
#showSlides{position:absolute;right:16px;bottom:calc(var(--bar) + var(--dock) + 14px);z-index:6;padding:12px 18px;background:var(--gold);color:#1a1307;font-weight:700;border:0;border-radius:8px}
#start{position:absolute;inset:0;margin:auto;width:260px;height:60px;font-size:18px;background:var(--gold);color:#1a1307;border:0;border-radius:10px;z-index:30;box-shadow:0 4px 30px rgba(0,0,0,.8)}
#start.on{display:block}
#controls{position:absolute;left:0;right:0;bottom:0;height:var(--bar);display:flex;align-items:center;gap:8px;padding:0 12px;background:#080706;border-top:1px solid rgba(233,180,76,.3);z-index:10;overflow-x:auto}
#controls button{min-height:40px;padding:0 14px;background:#1b1712;border:1px solid rgba(255,255,255,.18);border-radius:6px;white-space:nowrap}
#controls button:hover{border-color:var(--gold)}
#controls .grow{flex:1}#cLine{font-size:13px;opacity:.6;white-space:nowrap}
button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
#capDock{position:absolute;left:0;right:0;bottom:var(--bar);z-index:9;background:var(--glass);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-top:2px solid var(--gold)}
#capToggle{display:flex;align-items:center;gap:10px;width:100%;min-height:var(--dock);padding:6px 14px;background:none;border:0;text-align:left;color:#f2ede6}
#capImg{width:32px;height:32px;border-radius:50%;object-fit:cover;border:2px solid var(--gold);flex:none}
.capLine{flex:1;min-width:0;display:flex;gap:8px;align-items:baseline;white-space:nowrap;overflow:hidden;font-size:clamp(14px,1.5vw,20px)}
.capLine b{color:var(--gold);font-family:Cardo,Georgia,serif;flex:none}
#capNow{overflow:hidden;text-overflow:ellipsis;min-width:0}
.chev{flex:none;transition:transform .3s;color:var(--gold)}#capDock[data-open="1"] .chev{transform:rotate(180deg)}
#capBody{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease;visibility:hidden}
#capDock[data-open="1"] #capBody{grid-template-rows:1fr;visibility:visible}
.capInner{overflow:hidden;min-height:0}
#capDock[data-open="1"] .capInner{max-height:min(46vh,360px);overflow-y:auto}
#capFull{padding:6px 16px 14px;font-size:clamp(16px,1.9vw,26px);line-height:1.5;max-width:70ch}
#capFull .s{opacity:.55;transition:opacity .3s}#capFull .s.on{opacity:1;color:#fff}
#app[data-portrait="1"] #cLine,#app[data-portrait="1"] #cFull{display:none}
#app[data-portrait="1"] #controls{gap:6px;padding:0 8px}#app[data-portrait="1"] #controls button{padding:0 10px;font-size:13px}
#app[data-portrait="1"] #minime{height:28vh;left:2vw}
#app[data-portrait="1"] #nameplate{right:3vw;bottom:calc(var(--dock) + 10px)}
@media (prefers-reduced-motion:reduce){:root{--fade:0ms}#minime.talking{animation:none}}

#app:not([data-hasslide]) #slidePane,#app:not([data-hasslide]) #showSlides{display:none!important}

/* Talk to Council drawer (pattern from talktoyeshua #strip-wrap/.thumb), sits right of Mini-Me */
#strip{position:absolute;left:calc(var(--mmw,200px) + 3vw + 12px);right:0;bottom:calc(var(--bar) + var(--dockh,var(--dock)));z-index:8;transform:translateY(130%);transition:transform .4s cubic-bezier(.16,1,.3,1);pointer-events:none}
#strip.open{transform:none;pointer-events:auto}
#stripHead{display:flex;justify-content:space-between;align-items:center;padding:6px 14px 0;font-size:11px;letter-spacing:2px;text-transform:uppercase;color:#a89c86}
#stripClose{padding:4px 12px;border-radius:14px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.05);font-size:11px;letter-spacing:1.5px;text-transform:uppercase}
#thumbs{display:flex;gap:8px;align-items:flex-end;padding:8px 14px 10px;overflow-x:auto;scrollbar-width:none;background:linear-gradient(to top,rgba(12,10,8,.92),rgba(12,10,8,0))}
#thumbs::-webkit-scrollbar{display:none}
.thumb{flex:none;position:relative;width:64px;border-radius:8px;overflow:hidden;border:2px solid transparent;opacity:.72;cursor:pointer;background:#000;transition:transform .2s,opacity .2s,box-shadow .2s;padding:0}
.thumb:hover{transform:translateY(-4px);opacity:1}
.thumb img{display:block;width:100%;aspect-ratio:1;object-fit:cover}
.thumb span{display:block;font-size:10px;text-align:center;padding:2px 0;background:rgba(0,0,0,.7)}
.thumb.pending span::after{content:" *"}
.thumb.active{opacity:1;border-color:var(--gold);box-shadow:0 0 16px rgba(233,180,76,.55);transform:translateY(-6px)}
#cCouncil.on{border-color:var(--gold);color:var(--gold)}
#app[data-portrait="1"] .thumb{width:54px}

.thumb{background:#0c0a08}.thumb img{border-radius:50%;padding:3px;background:#0c0a08}
#app[data-strip="1"] #nameplate{bottom:calc(var(--dockh,var(--dock)) + 120px)}

/* Live Mode: full-screen person + separate question box (not the scripted caption) */
#cLive{font-weight:700;color:#fff;border:0!important;background:linear-gradient(90deg,#ff3d81,#ff9a3d,#ffd23d,#3dd6a3,#3d9aff,#a43dff);background-size:200% 100%;animation:rb 6s linear infinite;box-shadow:0 0 14px rgba(255,100,160,.45);text-shadow:0 1px 3px rgba(0,0,0,.6)}
@keyframes rb{to{background-position:200% 0}}
#live{display:none}
#app[data-live="1"] #live{display:flex;position:absolute;inset:0 0 var(--bar) 0;z-index:20;flex-direction:column;justify-content:space-between;pointer-events:none}
#app[data-live="1"] #live>*{pointer-events:auto}
#app[data-live="1"] #slidePane,#app[data-live="1"] #showSlides,#app[data-live="1"] #strip,#app[data-live="1"] #capDock,#app[data-live="1"] #minime,#app[data-live="1"] #nameplate,#app[data-live="1"] #start{display:none!important}
#app[data-live="1"] #stage{bottom:var(--bar)}
#app[data-live="1"] .bg .sharp{bottom:0;height:100%}
#liveTop{display:flex;gap:10px;align-items:center;padding:12px 14px;background:linear-gradient(rgba(0,0,0,.65),transparent)}
#liveBack{padding:10px 16px;border-radius:8px;border:0;background:var(--gold);color:#1a1307;font-weight:700;flex:none}
#liveChips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
#liveChips button{flex:none;display:flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border-radius:20px;border:1px solid rgba(255,255,255,.2);background:rgba(12,10,8,.7);font-size:13px}
#liveChips img{width:26px;height:26px;border-radius:50%;object-fit:cover}
#liveChips button.on{border-color:var(--gold);box-shadow:0 0 10px rgba(233,180,76,.6)}
#liveWho{position:absolute;right:4vw;top:70px;text-align:right;text-shadow:0 2px 12px #000}
#lvName{display:block;font:700 clamp(28px,4vw,64px) Cardo,Georgia,serif}
#lvRole{color:var(--gold);letter-spacing:.08em;text-transform:uppercase;font-size:clamp(12px,1.4vw,20px)}
#liveLog{margin:0 auto;width:min(760px,94vw);max-height:34vh;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:8px;scrollbar-width:thin}
.lm{padding:10px 14px;border-radius:14px;line-height:1.45;max-width:88%;backdrop-filter:blur(8px);font-size:clamp(15px,1.5vw,19px)}
.lm.q{align-self:flex-end;background:rgba(61,154,255,.8);color:#fff}
.lm.a{align-self:flex-start;background:rgba(12,10,8,.85);border:1px solid rgba(233,180,76,.5)}
.lm.a b{color:var(--gold);font-family:Cardo,Georgia,serif;margin-right:6px}
.lm.e{align-self:center;background:rgba(120,30,30,.85);font-size:14px}
#liveForm{display:flex;gap:8px;margin:6px auto 14px;width:min(760px,94vw)}
#liveIn{flex:1;min-height:48px;padding:0 16px;border-radius:24px;border:2px solid var(--gold);background:rgba(12,10,8,.9);color:#fff;font:inherit;font-size:17px}
#liveSend{min-width:84px;border:0;border-radius:24px;font-weight:700;background:var(--gold);color:#1a1307}
#liveSend:disabled{opacity:.5}

.bg .sharp,#minime,#nameplate{transition:bottom .3s ease,height .3s ease}
#strip{transition:transform .4s cubic-bezier(.16,1,.3,1),bottom .3s ease}

#disc{position:absolute;left:0;right:0;top:6px;z-index:4;text-align:center;font:11px/1.35 system-ui,sans-serif;color:#e4e7ee;padding:0 12px;pointer-events:none;text-shadow:0 1px 3px #000}
#app[data-live="1"] #disc{display:none}
#liveBottom{pointer-events:auto}
#liveNote{margin:0 auto;width:min(760px,94vw);text-align:center;font:11px/1.35 system-ui,sans-serif;color:#cfd3dc;text-shadow:0 1px 3px #000}
#liveForm{margin-top:4px}

#liveTop{position:relative;pointer-events:auto}
#liveChips{flex:1;min-width:0;overflow-x:auto;scroll-snap-type:x proximity;cursor:grab;-webkit-overflow-scrolling:touch;padding:2px 0}
#liveChips button{scroll-snap-align:center}
#liveBack{flex:none}
.chipArrow{flex:none;width:30px;height:30px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(12,10,8,.8);color:#fff;font-size:20px;line-height:1;padding:0;display:none}
#liveTop[data-l="1"] #chipL,#liveTop[data-r="1"] #chipR{display:block}
#liveTop[data-l="1"] #liveChips{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 24px);mask-image:linear-gradient(90deg,transparent 0,#000 24px)}
#liveTop[data-r="1"] #liveChips{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),transparent)}
#liveTop[data-l="1"][data-r="1"] #liveChips{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 24px,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(90deg,transparent 0,#000 24px,#000 calc(100% - 24px),transparent)}
.vbtn{display:inline-block;margin-top:6px;padding:4px 10px;border-radius:14px;border:1px solid var(--gold);background:rgba(233,180,76,.12);color:#fff;font-size:12px;pointer-events:auto}
.vnote{margin-top:4px;font-size:11px;color:#e9b44c}
@media (max-width:520px){#liveBack{padding:8px 10px;font-size:13px}#liveTop{gap:6px;padding:10px 8px}}
@media (max-width:520px){#liveTop{flex-wrap:wrap}#liveChips{order:3;flex:1 0 100%}#liveTop .chipArrow{display:none!important}.vbtn{display:block}}
@media (max-width:520px){#liveWho{top:112px}}
