:root{--ink:#071014;--panel:#0c1a20;--line:#29414a;--muted:#91a6ad;--paper:#f5f3e9;--cyan:#50e3ff;--amber:#ffbf3c;--red:#ff645c}*{box-sizing:border-box}html{background:var(--ink);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:linear-gradient(#50e3ff06 1px, transparent 1px), linear-gradient(90deg, #50e3ff06 1px, transparent 1px), var(--ink);min-height:100dvh;color:var(--paper);background-size:24px 24px;margin:0;font-family:ui-monospace,SFMono-Regular,Noto Sans Mono CJK TC,Menlo,monospace}button,input,select{font:inherit}button{touch-action:manipulation}.boot{min-height:100dvh;color:var(--cyan);letter-spacing:.08em;place-content:center;gap:12px;display:grid}.signal-dot{background:currentColor;border-radius:50%;width:9px;height:9px;margin-right:9px;display:inline-block;box-shadow:0 0 14px}.login-shell{flex-direction:column;justify-content:center;width:min(100% - 40px,480px);min-height:100dvh;margin:0 auto;padding:40px 0;display:flex}.brand-mark{border:2px solid var(--cyan);width:72px;height:72px;color:var(--cyan);place-items:center;font-size:26px;font-weight:900;display:grid;transform:rotate(-3deg);box-shadow:7px 7px #173843}.eyebrow{color:var(--cyan);letter-spacing:.14em;margin:32px 0 8px;font-size:12px}.login-shell h1{letter-spacing:-.06em;margin:0;font:800 clamp(40px,12vw,64px)/.95 system-ui,sans-serif}.login-lead{max-width:38ch;color:var(--muted);margin:18px 0 28px;line-height:1.6}.login-card{border:1px solid var(--line);background:var(--panel);padding:20px;box-shadow:8px 8px #101f25}.login-card label{color:var(--amber);letter-spacing:.08em;margin-bottom:8px;font-size:12px;display:block}.login-card input{color:#fff;text-transform:uppercase;background:#050b0e;border:1px solid #49626b;border-radius:0;outline:none;width:100%;padding:16px;font-size:18px}.login-card input:focus{border-color:var(--cyan);box-shadow:0 0 0 2px #50e3ff33}.login-card button{background:var(--cyan);width:100%;color:var(--ink);border:0;margin-top:12px;padding:16px;font-weight:900}.login-card button:disabled{opacity:.4}.form-error,.console-error{color:#ffaaa5;line-height:1.5}.privacy-note{color:var(--muted);margin:22px 0 0;font-size:12px}.console-shell{width:min(100%,760px);min-height:100dvh;padding:env(safe-area-inset-top) 14px env(safe-area-inset-bottom);margin:0 auto}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:62px;display:flex}.top-actions{align-items:center;gap:4px;display:flex}.wordmark{background:var(--cyan);color:var(--ink);margin-right:10px;padding:7px 8px;font-weight:900;display:inline-block}.top-title{color:var(--muted);letter-spacing:.14em;font-size:11px}.text-button{color:var(--muted);text-underline-offset:3px;background:0 0;border:0;padding:8px;font-size:12px;text-decoration:underline}.text-button.danger{color:#ffaaa5}.language-switch{grid-template-columns:repeat(3,1fr);gap:7px;margin:14px 0;display:grid}.language-switch button{border:1px solid var(--line);min-height:56px;color:var(--muted);background:#091216}.language-switch button span{margin-bottom:2px;font-size:15px;font-weight:900;display:block}.language-switch button.active{border-color:var(--cyan);color:#fff;box-shadow:inset 0 -4px 0 var(--cyan);background:#14323d}.status-panel{border:1px solid var(--line);background:#0c1a20f2;min-height:176px;padding:16px;position:relative;overflow:hidden}.status-panel:after{content:"";pointer-events:none;border:1px solid #ffffff0f;border-radius:50%;width:140px;height:140px;position:absolute;top:-40px;right:-40px;box-shadow:0 0 0 22px #ffffff05,0 0 0 44px #ffffff03}.status-line{color:var(--cyan);letter-spacing:.08em;font-size:12px}.status-listening .status-line,.status-finalizing .status-line{color:var(--red)}.status-translating .status-line,.status-speaking .status-line{color:var(--amber)}.timer{color:var(--muted);font-size:13px;position:absolute;top:12px;right:15px}.partial{color:var(--muted);margin:40px 0 0;font:700 20px/1.45 system-ui,sans-serif}.partial.active{color:#fff}.console-error{margin:12px 0 0;font-size:13px}.ptt-grid{grid-template-columns:1fr 1fr;gap:10px;margin:12px 0;display:grid}.ptt{min-height:190px;color:var(--ink);text-align:left;-webkit-user-select:none;user-select:none;border:0;padding:18px 13px;transition:transform 80ms,filter 80ms}.ptt:active{filter:brightness(.82);transform:translateY(4px)}.speak-local{background:var(--cyan);box-shadow:0 7px #1b7182}.speak-foreign{background:var(--amber);box-shadow:0 7px #8a6217}.ptt-kicker{letter-spacing:.06em;text-transform:uppercase;margin-bottom:12px;font-size:12px;display:block}.ptt strong{letter-spacing:-.04em;font:900 clamp(23px,6vw,34px)/1.05 system-ui,sans-serif;display:block}.ptt-action{margin-top:25px;font-size:11px;font-weight:800;display:block}.disclosure{color:var(--muted);letter-spacing:.04em;flex-wrap:wrap;justify-content:space-between;gap:8px;margin:17px 2px 28px;font-size:10px;display:flex}.history-section{border-top:1px solid var(--line);padding:20px 0 60px}.section-heading{justify-content:space-between;align-items:center;display:flex}.section-heading h2{letter-spacing:.06em;margin:0;font-size:14px}.section-heading h2 span{color:var(--muted);font-weight:400}.empty-history{color:var(--muted);text-align:center;padding:35px 0;font-size:13px}.history-card{border-left:4px solid var(--line);background:var(--panel);margin-top:12px;padding:15px}.route-label{color:var(--cyan);letter-spacing:.06em;font-size:11px}.route-label span{color:var(--muted)}.source-text{color:var(--muted);margin:14px 0 8px;font:15px/1.55 system-ui,sans-serif}.translated-text{color:#fff;margin:0;font:700 18px/1.55 system-ui,sans-serif}.latency-line{color:#6f8992;letter-spacing:.04em;margin:10px 0 0;font-size:9px}.history-actions{gap:8px;margin-top:14px;display:flex}.history-actions button{border:1px solid var(--line);color:var(--muted);background:#071014;padding:8px 10px;font-size:11px}@media (max-width:420px){.console-shell{padding-left:10px;padding-right:10px}.ptt{min-height:176px}.ptt strong{font-size:22px}.ptt-action{font-size:10px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.meeting-shell,.pair-shell{width:min(100% - 32px,1080px);min-height:100dvh;margin:0 auto;padding-bottom:64px}.meeting-topbar{border-bottom:1px solid var(--line);color:#718991;letter-spacing:.16em;justify-content:space-between;align-items:center;min-height:58px;font-size:10px;display:flex}.meeting-back{color:var(--cyan);font-weight:900;text-decoration:none}.meeting-hero{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) 220px;align-items:center;gap:32px;min-height:250px;display:grid}.meeting-kicker{color:var(--amber);letter-spacing:.13em;text-transform:uppercase;margin:0 0 14px;font-size:11px}.meeting-hero h1,.pair-hero h1{letter-spacing:-.075em;margin:0;font:900 clamp(52px,9vw,104px)/.78 Avenir Next Condensed,Arial Narrow,PingFang TC,sans-serif}.room-beacon{aspect-ratio:1;border:1px solid var(--line);border-radius:50%;justify-self:end;place-items:center;width:152px;display:grid;box-shadow:0 0 0 22px #50e3ff06,0 0 0 44px #50e3ff04}.room-beacon span{aspect-ratio:1;background:#35515a;border-radius:50%;width:48px;box-shadow:0 0 28px #50e3ff1f}.room-beacon-listening span{background:var(--red);animation:1.45s ease-in-out infinite room-pulse;box-shadow:0 0 34px #ff645cbf}.room-beacon-connecting span,.room-beacon-reconnecting span,.room-beacon-stopping span{background:var(--amber);box-shadow:0 0 30px #ffbf3c9e}.room-beacon-error span{background:var(--red)}@keyframes room-pulse{50%{opacity:.68;transform:scale(.72)}}.meeting-controls{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr auto;gap:12px;padding:18px 0;display:grid}.meeting-controls>label:not(.consent-check):not(.record-check){color:var(--muted);letter-spacing:.08em;gap:7px;font-size:10px;display:grid}.meeting-controls select,.meeting-controls input:not([type=checkbox]){color:#fff;background:#071014;border:1px solid #3c5962;border-radius:0;min-height:48px;padding:0 38px 0 12px}.device-refresh{border:1px solid var(--line);min-height:48px;color:var(--muted);background:0 0;align-self:end;padding:0 14px;font-size:10px}.record-check{border:1px solid var(--line);color:#c9d3d6;grid-column:2/-1;grid-template-columns:20px 1fr;align-self:end;align-items:center;gap:10px;min-height:48px;padding:10px 13px;font:11px/1.45 PingFang TC,sans-serif;display:grid}.record-check input{width:17px;height:17px;accent-color:var(--cyan)}.room-check{color:#c9d3d6;background:#50e3ff09;border:1px solid #50e3ff5c;grid-column:1/-1;grid-template-columns:20px 1fr;align-items:center;gap:10px;min-height:48px;padding:10px 13px;font:11px/1.45 PingFang TC,sans-serif;display:grid}.room-check input{width:17px;height:17px;accent-color:var(--cyan)}.consent-check{border-left:3px solid var(--amber);color:#c9d3d6;background:#ffbf3c0e;grid-column:1/-1;grid-template-columns:20px 1fr;align-items:start;gap:10px;padding:13px;font:12px/1.55 PingFang TC,sans-serif;display:grid}.consent-check input{width:17px;height:17px;accent-color:var(--amber)}.meeting-start,.meeting-stop,.primary-control,.secondary-control{border:0;min-height:52px;padding:0 18px;font-weight:900}.meeting-start{background:var(--cyan);color:var(--ink);grid-column:1/-1;box-shadow:inset 0 -5px #1a7180}.meeting-stop{background:var(--red);color:#160807;grid-column:1/-1;box-shadow:inset 0 -5px #a6312c}.meeting-start:disabled,.primary-control:disabled{opacity:.35}.primary-control{background:var(--cyan);color:var(--ink)}.secondary-control{border:1px solid var(--line);color:var(--muted);background:#071014}.meeting-status{border-bottom:1px solid var(--line);grid-template-columns:1fr 220px;align-items:center;gap:18px;min-height:66px;display:grid}.meeting-status-line{color:var(--muted);letter-spacing:.1em;font-size:11px}.meeting-status-listening .meeting-status-line{color:var(--red)}.meeting-status-connecting .meeting-status-line,.meeting-status-reconnecting .meeting-status-line,.meeting-status-stopping .meeting-status-line{color:var(--amber)}.audio-meter{background:#15262c;height:7px;overflow:hidden}.audio-meter span{background:linear-gradient(90deg, var(--cyan), var(--amber), var(--red));min-width:2px;height:100%;transition:width .1s linear;display:block}.meeting-status .console-error{grid-column:1/-1;margin:-8px 0 12px;font-size:12px}.meeting-running-time{color:#718991;grid-column:1/-1;margin:-9px 0 10px;font-size:10px}.caption-board{background:var(--line);border:1px solid var(--line);grid-template-columns:1fr 1.25fr;gap:1px;margin-top:18px;display:grid}.caption-board article{background:#09151a;flex-direction:column;height:clamp(280px,42dvh,520px);min-height:280px;padding:18px;display:flex;overflow:hidden}.caption-board .caption-output{background:#0d2027}.caption-label{color:var(--muted);letter-spacing:.08em;grid-template-columns:auto 1fr auto;gap:12px;font-size:10px;display:grid}.caption-label span{color:var(--cyan);font-weight:900}.caption-label strong{color:#9bb0b7;text-align:center;text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.caption-label i{font-style:normal}.caption-output .caption-label span{color:var(--amber)}.caption-scroll{overscroll-behavior:contain;scrollbar-gutter:stable;flex:1;min-height:0;margin-top:22px;overflow-y:auto}.caption-board p{color:#9bb0b7;white-space:pre-wrap;overflow-wrap:anywhere;margin:48px 0 0;font:500 clamp(19px,2.5vw,28px)/1.55 PingFang TC,Yu Gothic,sans-serif}.caption-output p{color:#fff;font-size:clamp(23px,3vw,36px);font-weight:750}.meeting-telemetry{border-bottom:1px solid var(--line);color:#67818a;letter-spacing:.06em;flex-wrap:wrap;align-items:center;gap:7px 22px;padding:14px 0;font-size:9px;display:flex}.meeting-telemetry button{color:var(--cyan);text-underline-offset:3px;background:0 0;border:0;margin-left:auto;font-size:9px;text-decoration:underline}.meeting-boundary{color:var(--muted);margin:16px 0 0;font-size:10px;line-height:1.6}.meeting-room-share{background:linear-gradient(135deg,#50e3ff13,#071014d6);border:1px solid #50e3ff73;grid-template-columns:1.2fr .8fr 1.4fr;gap:16px;margin-top:18px;padding:18px;display:grid}.meeting-room-share h2{color:#fff;margin:0;font-size:18px}.meeting-room-share p{color:var(--muted);font-size:11px;line-height:1.6}.meeting-room-kicker{letter-spacing:.12em;margin:0 0 8px;color:var(--cyan)!important;font-size:9px!important}.meeting-room-code,.meeting-room-url{background:#050b0ea6;align-content:center;gap:7px;min-width:0;padding:13px;display:grid}.meeting-room-share small{color:var(--amber);letter-spacing:.08em;font-size:9px}.meeting-room-code strong{color:#fff;letter-spacing:.08em;font:900 clamp(22px,3vw,32px)/1 Avenir Next Condensed,sans-serif}.meeting-room-url code{overflow-wrap:anywhere;color:#fff;font:11px/1.5 SFMono-Regular,monospace}.meeting-room-share button{border:1px solid var(--line);color:var(--cyan);background:0 0;justify-self:start;padding:7px 10px;font-size:10px}.meeting-room-expiry{grid-column:1/-1;color:#718991!important;margin:0!important}.meeting-room-share .console-error{grid-column:1/-1;margin:0}.room-viewer-shell{width:min(100% - 48px,1180px);margin:0 auto;padding-bottom:56px}.room-viewer-hero{border-bottom:1px solid var(--line);padding:64px 0 38px}.room-viewer-hero h1{letter-spacing:-.075em;margin:0;font:900 clamp(56px,10vw,112px)/.78 Avenir Next Condensed,Arial Narrow,PingFang TC,sans-serif}.room-viewer-hero>p:last-child{max-width:600px;color:var(--muted);margin:28px 0 0;font-size:12px;line-height:1.7}.room-join-card{border:1px solid var(--line);background:#09151a;width:min(100%,560px);margin:42px auto 0;padding:24px}.room-join-card label{color:var(--muted);letter-spacing:.1em;margin-bottom:8px;font-size:10px;display:block}.room-join-card input{width:100%;min-height:58px;color:var(--amber);letter-spacing:.08em;background:#050b0e;border:1px solid #3c5962;padding:0 14px;font:900 22px/1 SFMono-Regular,monospace}.room-join-card button{width:100%;margin-top:12px}.room-join-card small{color:var(--muted);margin-top:18px;font-size:10px;line-height:1.6;display:block}.room-viewer-status{border-bottom:1px solid var(--line);color:var(--muted);letter-spacing:.05em;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:24px;padding:14px 0;font-size:10px;display:flex}.room-viewer-status strong{color:var(--cyan)}.room-viewer-status-ended strong{color:var(--amber)}.room-viewer-status button{border:1px solid var(--line);color:var(--muted);background:0 0;margin-left:auto;padding:7px 10px;font-size:10px}.room-viewer-error{margin-top:14px}.room-caption-board{background:var(--line);border:1px solid var(--line);grid-template-columns:1fr 1.25fr;gap:1px;margin-top:18px;display:grid}.room-caption-board article{background:#09151a;flex-direction:column;height:clamp(300px,54dvh,640px);min-height:300px;padding:20px;display:flex;overflow:hidden}.room-caption-board .caption-output{background:#0d2027}.room-caption-board p{color:#9bb0b7;white-space:pre-wrap;overflow-wrap:anywhere;margin:48px 0 0;font:500 clamp(20px,2.8vw,32px)/1.55 PingFang TC,Yu Gothic,sans-serif}.room-caption-board .caption-output p{color:#fff;font-size:clamp(24px,3.3vw,40px);font-weight:750}.room-viewer-note{color:var(--muted);margin:16px 0 0;font-size:10px;line-height:1.6}.meeting-records{border-top:1px solid var(--line);margin-top:36px;padding-top:20px}.meeting-records>header{justify-content:space-between;align-items:center;gap:18px;display:flex}.meeting-records h2{letter-spacing:.06em;margin:0;font-size:15px}.meeting-records h2 span{color:var(--muted);font-size:10px;font-weight:500}.meeting-records button{border:1px solid var(--line);color:var(--muted);background:#071014;font-size:10px}.meeting-records>header button{color:#ffaaa5;padding:7px 10px}.meeting-record-empty{color:var(--muted);text-align:center;padding:28px 0;font-size:12px}.meeting-record-card{border-left:4px solid var(--cyan);background:#0b1a20;margin-top:12px;padding:15px}.meeting-record-meta{color:var(--muted);flex-wrap:wrap;gap:7px 18px;font-size:10px;display:flex}.meeting-record-meta strong{color:#fff;width:100%;font-size:13px}.meeting-record-card details{margin-top:13px}.meeting-record-card summary{cursor:pointer;color:var(--cyan);font-size:11px}.meeting-record-copy{background:#071014;margin-top:13px;padding:12px}.meeting-record-copy small{color:var(--amber);font-size:9px}.meeting-record-copy p{color:#c8d3d6;white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0 0;font:12px/1.65 PingFang TC,sans-serif}.meeting-record-actions{gap:8px;margin-top:13px;display:flex}.meeting-record-actions button{padding:7px 10px}.pair-shell{width:min(100% - 32px,760px)}.pair-hero{border-bottom:1px solid var(--line);padding:68px 0 42px}.pair-hero h1{max-width:8ch;font-size:clamp(50px,9vw,82px);line-height:.9}.pair-hero>p:last-child{max-width:55ch;color:var(--muted);margin:28px 0 0;font:14px/1.7 PingFang TC,sans-serif}.pair-card{border:1px solid var(--line);background:#0b1a20;margin-top:18px;padding:22px;box-shadow:10px 10px #101f25}.pair-code{color:var(--amber);text-align:center;letter-spacing:.08em;background:#050b0e;border:1px dashed #45626c;padding:30px 10px;font-size:clamp(25px,7vw,48px);font-weight:900}.pair-expiry{color:var(--muted);text-align:center;font-size:10px}.pair-actions{grid-template-columns:1fr auto;gap:10px;margin-top:16px;display:grid}.pair-note{color:var(--muted);margin-top:26px;font-size:11px;line-height:1.7}@media (max-width:720px){.top-actions{gap:0}.top-actions .text-button{font-size:10px}.meeting-hero{grid-template-columns:1fr 96px;min-height:200px}.room-beacon{width:82px;box-shadow:0 0 0 12px #50e3ff06}.room-beacon span{width:30px}.meeting-controls{grid-template-columns:1fr}.meeting-controls>*,.record-check,.room-check,.consent-check,.meeting-start,.meeting-stop{grid-column:1}.meeting-status{grid-template-columns:1fr;gap:8px;padding:14px 0}.caption-board{grid-template-columns:1fr}.caption-board article{height:clamp(220px,36dvh,360px);min-height:220px}.caption-label{grid-template-columns:auto 1fr}.caption-label i{display:none}.caption-board p{margin-top:24px}.meeting-telemetry button{text-align:left;width:100%;margin-left:0;padding:8px 0}.pair-actions,.meeting-room-share{grid-template-columns:1fr}.meeting-room-expiry{grid-column:1}.room-viewer-shell{width:min(100% - 28px,720px)}.room-caption-board{grid-template-columns:1fr}.room-caption-board article{height:clamp(230px,38dvh,400px);min-height:230px}.room-viewer-status button{margin-left:0}}
