/* Immersive meeting hall */
#conference-stage{background:radial-gradient(circle at 50% 44%,#20245c 0,#10162f 23%,#080b17 58%,#05070e 100%);perspective:none}
#conference-stage::before{content:'';position:absolute;inset:0;background-image:linear-gradient(#7c5cff0a 1px,transparent 1px),linear-gradient(90deg,#06b6d40a 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(circle at 50% 45%,#000 10%,transparent 72%);pointer-events:none}
#conference-stage::after{content:'';position:absolute;inset:-35% -10%;background:conic-gradient(from 110deg at 50% 50%,transparent,#7c5cff16,transparent 25%,#06b6d412,transparent 54%,#ff5db112,transparent 75%);animation:hallDrift 24s linear infinite;pointer-events:none}
@keyframes hallDrift{to{transform:rotate(360deg)}}
.meeting-hud{position:absolute;top:22px;left:26px;right:26px;z-index:30;display:flex;align-items:center;justify-content:space-between;pointer-events:none}
.meeting-hud-copy{display:flex;align-items:center;gap:12px}.meeting-hud-mark{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,#7c3aed,#06b6d4);box-shadow:0 0 28px #7c5cff59}.meeting-hud-kicker{color:#67e8f9;font-size:.61rem;font-weight:800;letter-spacing:.16em}.meeting-hud-title{margin-top:2px;font-size:.93rem;font-weight:800}.meeting-hud-state{display:flex;gap:7px}.meeting-hud-pill{display:flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid #ffffff12;border-radius:999px;background:#0e1425b8;color:#9ca8bd;font-size:.65rem;backdrop-filter:blur(12px)}.meeting-hud-pill strong{color:#fff}.meeting-live-dot{width:6px;height:6px;border-radius:50%;background:#34d399;box-shadow:0 0 10px #34d399}
.arc-table{top:43%;bottom:auto;width:min(650px,62vw);height:min(390px,46vh);transform:translate(-50%,-50%);border:1px solid #8291ff2b;background:radial-gradient(ellipse at center,#222a5cb3,#10152ee6 54%,#080b17 76%);box-shadow:0 0 100px #7c5cff24,inset 0 0 75px #06b6d414;border-radius:50%}
.arc-table::before,.arc-table::after{content:'';position:absolute;border-radius:50%;border:1px solid #9b8cff2b;inset:11%}.arc-table::after{inset:25%;border-color:#67e8f926;box-shadow:0 0 45px #06b6d417}
.meeting-core{position:absolute;left:50%;top:43%;transform:translate(-50%,-50%);z-index:9;width:190px;height:190px;border-radius:50%;display:grid;place-items:center;text-align:center;pointer-events:none;background:radial-gradient(circle,#1c2455 0,#10162f 64%,#090c19 100%);border:1px solid #9c8fff47;box-shadow:0 0 0 18px #7c5cff0a,0 0 0 38px #06b6d408,0 0 65px #7c5cff40}
.meeting-core::before{content:'';position:absolute;inset:-10px;border:1px dashed #67e8f94a;border-radius:50%;animation:coreSpin 20s linear infinite}.meeting-core::after{content:'';position:absolute;inset:18px;border-radius:50%;background:conic-gradient(from 20deg,#7c5cff1f,#06b6d421,#ff5db11c,#7c5cff1f);filter:blur(4px)}
@keyframes coreSpin{to{transform:rotate(360deg)}}
.meeting-core-copy{position:relative;z-index:1;padding:22px}.meeting-core-icon{width:32px;height:32px;margin:0 auto 10px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(135deg,#7c3aed,#06b6d4);box-shadow:0 0 22px #7c5cff66}.meeting-core-label{color:#67e8f9;font-size:.57rem;font-weight:800;letter-spacing:.14em}.meeting-core-topic{display:-webkit-box;margin-top:7px;overflow:hidden;-webkit-line-clamp:3;-webkit-box-orient:vertical;color:#f7f7ff;font-size:.78rem;font-weight:750;line-height:1.5}.meeting-core-mode{margin-top:8px;color:#818da6;font-size:.57rem}
.seats-container{top:92px;bottom:112px;left:50%;width:calc(100% - 44px);max-width:1050px;height:auto;transform:translateX(-50%);z-index:12}
.seat{width:154px;--seat-color:#7c5cff;transition:.55s cubic-bezier(.2,.8,.2,1)}.seat-pod{width:100%;min-height:58px;padding:8px 10px;display:flex;align-items:center;gap:9px;border:1px solid color-mix(in srgb,var(--seat-color) 34%,#ffffff10);border-radius:17px;background:linear-gradient(110deg,color-mix(in srgb,var(--seat-color) 14%,#101526),#0c1121e8 72%);box-shadow:0 12px 32px #0006,inset 3px 0 color-mix(in srgb,var(--seat-color) 80%,transparent);backdrop-filter:blur(16px)}
.seat-avatar{width:40px;height:40px;flex:0 0 auto;border-radius:12px;border:1px solid color-mix(in srgb,var(--seat-color) 48%,transparent);background:color-mix(in srgb,var(--seat-color) 17%,#11172a);color:var(--seat-color)!important;box-shadow:0 0 18px color-mix(in srgb,var(--seat-color) 22%,transparent)}.seat-copy{min-width:0;text-align:left}.seat-label{margin:0;color:#fff;font-size:.69rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:none;opacity:1}.seat-role{margin-top:3px;color:#7f8aa1;font-size:.55rem;white-space:nowrap}.seat-status-dot{display:inline-block;width:5px;height:5px;margin-right:4px;border-radius:50%;background:#34d399;box-shadow:0 0 7px #34d399}.seat.is-muted{filter:saturate(.25);opacity:.48}.seat.active{z-index:120}.seat.active .seat-pod{transform:translateY(-6px) scale(1.05);border-color:var(--seat-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--seat-color) 13%,transparent),0 0 34px color-mix(in srgb,var(--seat-color) 36%,transparent)}.seat.active .seat-avatar{transform:none;border-color:#fff;box-shadow:0 0 25px var(--seat-color)}
.meeting-feed{position:absolute;z-index:25;left:50%;bottom:104px;transform:translateX(-50%);width:min(430px,45vw);padding:10px 14px;border:1px solid #8b7cff29;border-radius:15px;background:linear-gradient(100deg,#141935e8,#0e1729e8);box-shadow:0 16px 45px #0006;backdrop-filter:blur(18px)}.meeting-feed-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.meeting-feed-kicker{color:#a99cff;font-size:.56rem;font-weight:800;letter-spacing:.12em}.meeting-feed-speaker{color:#67e8f9;font-size:.59rem}.meeting-feed-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#c7cfdf;font-size:.67rem}
.speech-bubble{bottom:72px;width:300px;max-height:190px;padding:14px 16px;border-radius:17px 17px 17px 5px;border:1px solid color-mix(in srgb,var(--seat-color) 42%,#ffffff14);background:linear-gradient(125deg,color-mix(in srgb,var(--seat-color) 15%,#151a2a),#0d1220f5);color:#eef2ff;font-size:.76rem;box-shadow:0 22px 60px #000a,inset 3px 0 var(--seat-color)}.speech-bubble.summary{background:linear-gradient(125deg,#3a2811,#161624);border:1px solid #f59e0b;box-shadow:0 0 42px #f59e0b33}
.view-meeting .input-area{bottom:16px;width:min(760px,calc(100% - 28px));padding:8px;border-color:#7c5cff38;background:#0e1325d9;box-shadow:0 20px 60px #000a}.view-meeting .composer-meta{display:none}.view-meeting .input-wrapper{min-height:48px}.view-meeting .send-btn{min-height:48px}
@media(max-width:768px){#conference-stage{background:radial-gradient(circle at 50% 24%,#20245c,#090c19 45%,#05070e)}.meeting-hud{top:12px;left:12px;right:12px}.meeting-hud-mark{width:32px;height:32px;border-radius:10px}.meeting-hud-kicker{display:none}.meeting-hud-title{font-size:.76rem}.meeting-hud-pill{padding:6px 8px;font-size:.55rem}.meeting-hud-pill:last-child{display:none}.arc-table{top:22%;width:250px;height:180px;opacity:.68}.meeting-core{top:22%;width:126px;height:126px}.meeting-core::before{inset:-7px}.meeting-core-copy{padding:12px}.meeting-core-icon{width:24px;height:24px;margin-bottom:6px;border-radius:8px;font-size:.7rem}.meeting-core-label{font-size:.48rem}.meeting-core-topic{-webkit-line-clamp:2;margin-top:4px;font-size:.63rem}.meeting-core-mode{display:none}.seats-container{top:236px;bottom:174px;width:calc(100% - 20px);height:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:center;gap:8px 9px;transform:translateX(-50%)}.seat{position:relative!important;left:auto!important;top:auto!important;width:100%}.seat-pod{min-height:49px;padding:6px 8px;border-radius:13px}.seat-avatar{width:32px;height:32px;border-radius:10px;font-size:.68rem}.seat-label{font-size:.61rem}.seat-role{font-size:.49rem}.meeting-feed{bottom:92px;width:calc(100% - 22px);padding:8px 11px;border-radius:12px}.meeting-feed-head{margin-bottom:2px}.meeting-feed-text{font-size:.6rem}.view-meeting .input-area{bottom:7px;width:calc(100% - 12px);padding:6px}.view-meeting .input-icon-btn:nth-child(2){display:none}.view-meeting .input-wrapper{min-height:44px}.view-meeting .send-btn{min-height:44px}.speech-bubble{position:fixed;left:50%;bottom:146px;width:calc(100vw - 34px);max-height:150px;transform:translateX(-50%) scale(0)}.speech-bubble.active{transform:translateX(-50%) scale(1)}}
@media(prefers-reduced-motion:reduce){#conference-stage::after,.meeting-core::before{animation:none}}


/* v3: single-speaker roundtable */
.meeting-turn-pill{min-width:132px;justify-content:center}
.meeting-mic,.speech-mic{width:8px;height:8px;border-radius:50%;display:inline-block;color:transparent;background:#64748b;box-shadow:0 0 0 4px #64748b18}
#conference-stage.is-speaking .meeting-mic,.speech-bubble.active .speech-mic{background:#22d3ee;box-shadow:0 0 0 5px #22d3ee20,0 0 15px #22d3ee;animation:meetingMicPulse 1.35s ease-in-out infinite}
@keyframes meetingMicPulse{50%{transform:scale(.72);opacity:.62}}
#conference-stage.is-speaking .arc-table{border-color:color-mix(in srgb,var(--speaker-color,#7c5cff) 58%,#ffffff1c);box-shadow:0 0 120px color-mix(in srgb,var(--speaker-color,#7c5cff) 25%,transparent),inset 0 0 80px #06b6d414}
#conference-stage.is-speaking .meeting-core{box-shadow:0 0 0 18px color-mix(in srgb,var(--speaker-color,#7c5cff) 10%,transparent),0 0 0 38px #06b6d408,0 0 78px color-mix(in srgb,var(--speaker-color,#7c5cff) 42%,transparent)}
.meeting-feed-head{justify-content:flex-start;gap:9px}
.meeting-queue-state{padding:2px 7px;border-radius:999px;border:1px solid #ffffff12;background:#ffffff0a;color:#9aa5ba;font-size:.55rem}
.meeting-feed-speaker{margin-left:auto}
.seats-container.has-speaker .seat:not(.active){opacity:.6;filter:saturate(.55) brightness(.78);transform:scale(.97)}
.seat.active{z-index:180}
.seat.active .seat-role{color:#d8fbff}
.seat.active .seat-role::after{content:' · 發言中';color:#67e8f9;font-weight:750}
.seat.active .seat-status-dot{background:#22d3ee;box-shadow:0 0 12px #22d3ee;animation:meetingMicPulse 1.35s ease-in-out infinite}
.speech-bubble{z-index:240;width:min(360px,36vw);max-height:none;padding:0;overflow:visible;border-radius:20px 20px 20px 7px;opacity:0;pointer-events:auto;transform-origin:center bottom;transition:opacity .28s ease,transform .38s cubic-bezier(.2,.9,.25,1);background:linear-gradient(135deg,color-mix(in srgb,var(--seat-color) 18%,#171d31),#0b1020f7 76%);box-shadow:0 26px 80px #000c,0 0 0 1px color-mix(in srgb,var(--seat-color) 36%,transparent),inset 4px 0 var(--seat-color)}
.speech-bubble::after{content:'';position:absolute;width:14px;height:14px;background:#101629;border-right:1px solid color-mix(in srgb,var(--seat-color) 45%,transparent);border-bottom:1px solid color-mix(in srgb,var(--seat-color) 45%,transparent);transform:rotate(45deg)}
.speech-bubble-head{display:flex;align-items:center;gap:8px;padding:11px 14px 9px;border-bottom:1px solid #ffffff10;color:#fff}
.speech-bubble-head strong{font-size:.71rem}
.speech-bubble-head>span:last-child{margin-left:auto;padding:3px 7px;border-radius:999px;background:color-mix(in srgb,var(--seat-color) 12%,transparent);border:1px solid color-mix(in srgb,var(--seat-color) 25%,transparent);color:color-mix(in srgb,var(--seat-color) 70%,white);font-size:.55rem}
.speech-bubble-body{max-height:170px;padding:12px 15px 14px;overflow:auto;color:#e8edf8;font-size:.76rem;line-height:1.72;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--seat-color) 55%,transparent) transparent}
.speech-bubble-body>:first-child{margin-top:0}.speech-bubble-body>:last-child{margin-bottom:0}
.speech-bubble.leaving{opacity:0!important;filter:blur(4px);pointer-events:none}
.seat-pos-bottom .speech-bubble{left:50%;top:auto;right:auto;bottom:76px;transform:translateX(-50%) translateY(12px) scale(.94)}
.seat-pos-bottom .speech-bubble.active{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}
.seat-pos-bottom .speech-bubble::after{left:50%;bottom:-8px;margin-left:-7px}
.seat-pos-top .speech-bubble{left:50%;top:76px;right:auto;bottom:auto;transform:translateX(-50%) translateY(-12px) scale(.94);transform-origin:center top}
.seat-pos-top .speech-bubble.active{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}
.seat-pos-top .speech-bubble::after{left:50%;top:-8px;margin-left:-7px;transform:rotate(225deg)}
.seat-pos-left .speech-bubble{left:calc(100% + 16px);right:auto;top:50%;bottom:auto;transform:translateY(-50%) translateX(-12px) scale(.94);transform-origin:left center}
.seat-pos-left .speech-bubble.active{opacity:1;transform:translateY(-50%) translateX(0) scale(1)}
.seat-pos-left .speech-bubble::after{left:-8px;top:50%;margin-top:-7px;transform:rotate(135deg)}
.seat-pos-right .speech-bubble{left:auto;right:calc(100% + 16px);top:50%;bottom:auto;transform:translateY(-50%) translateX(12px) scale(.94);transform-origin:right center}
.seat-pos-right .speech-bubble.active{opacity:1;transform:translateY(-50%) translateX(0) scale(1)}
.seat-pos-right .speech-bubble::after{right:-8px;top:50%;margin-top:-7px;transform:rotate(-45deg)}
.speech-bubble.summary{background:linear-gradient(135deg,#3a2819,#131529f7 76%);box-shadow:0 26px 80px #000c,0 0 38px #f59e0b2e,inset 4px 0 #f59e0b}
@media(max-width:768px){
  .meeting-turn-pill{min-width:auto}
  .meeting-feed-head{gap:6px}.meeting-queue-state{display:none}
  .seats-container.has-speaker .seat:not(.active){opacity:.42}
  .seat-pos-top .speech-bubble,.seat-pos-bottom .speech-bubble,.seat-pos-left .speech-bubble,.seat-pos-right .speech-bubble{position:fixed;left:50%;right:auto;top:auto;bottom:146px;width:calc(100vw - 34px);max-width:430px;transform:translateX(-50%) translateY(12px) scale(.96);transform-origin:center bottom}
  .seat-pos-top .speech-bubble.active,.seat-pos-bottom .speech-bubble.active,.seat-pos-left .speech-bubble.active,.seat-pos-right .speech-bubble.active{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}
  .speech-bubble::after{display:none}
  .speech-bubble-body{max-height:118px;font-size:.69rem}
}
@media(prefers-reduced-motion:reduce){.meeting-mic,.speech-mic,.seat.active .seat-status-dot{animation:none}.speech-bubble{transition:opacity .15s ease}}


/* v3.1: viewport-safe mobile speaker bubble */
@media(max-width:768px){
  #conference-stage>.speech-bubble.mobile-speech-bubble{position:absolute;z-index:320;left:17px!important;right:auto!important;top:auto!important;bottom:146px!important;width:calc(100% - 34px)!important;max-width:none;box-sizing:border-box;overflow:hidden;transform:translateY(12px) scale(.96)!important;transform-origin:center bottom}
  #conference-stage>.speech-bubble.mobile-speech-bubble.active{opacity:1;transform:translateY(0) scale(1)!important}
  #conference-stage>.speech-bubble.mobile-speech-bubble.leaving{opacity:0!important;transform:translateY(8px) scale(.98)!important}
}


/* v3.2: honest seat runtime states */
.seat[data-state="working"]:not(.active) .seat-status-dot{background:#fbbf24;box-shadow:0 0 11px #fbbf24;animation:meetingMicPulse 1.2s ease-in-out infinite}
.seat[data-state="working"]:not(.active) .seat-role::after{content:' · 思考中';color:#fcd34d;font-weight:750}
.seat[data-state="error"]:not(.active) .seat-status-dot{background:#f87171;box-shadow:0 0 9px #f87171}
.seat[data-state="error"]:not(.active) .seat-role::after{content:' · 暫時失敗';color:#fca5a5;font-weight:700}
