*,:after,:before{margin:0;padding:0;box-sizing:border-box}body,html{height:100%;overflow:hidden;font-family:Segoe UI,system-ui,-apple-system,sans-serif;transition:background-color .3s ease,color .3s ease}[data-theme=dark]{--bg:#1a1a2e;--text-final:#ffffff;--text-interim:#15a04b;--text-muted:rgba(255,255,255,0.5);--controls-bg:rgba(0,0,0,0.6);--ctrl-btn-bg:rgba(255,255,255,0.1);--ctrl-btn-hover:rgba(255,255,255,0.2);--error-color:#ff6b6b;--input-bg:rgba(255,255,255,0.08);--input-border:rgba(255,255,255,0.2)}[data-theme=light]{--bg:#f5f5f5;--text-final:#1a1a2e;--text-interim:#15a04b;--text-muted:rgba(0,0,0,0.45);--controls-bg:rgba(255,255,255,0.8);--ctrl-btn-bg:rgba(0,0,0,0.08);--ctrl-btn-hover:rgba(0,0,0,0.15);--error-color:#cc0000;--input-bg:rgba(0,0,0,0.05);--input-border:rgba(0,0,0,0.2)}body{background-color:var(--bg)}.controls{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;gap:12px;padding:12px 20px;background:var(--controls-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:opacity .4s ease,transform .4s ease}.controls.hidden{opacity:0;transform:translateY(-100%);pointer-events:none}.logo{width:32px;height:32px}.ctrl-btn{background:var(--ctrl-btn-bg);border:none;color:var(--text-final);font-size:18px;width:40px;height:40px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease}.ctrl-btn:hover{background:var(--ctrl-btn-hover)}.status-dot{margin-left:auto;width:12px;height:12px;border-radius:50%;background:rgba(255,255,255,.3);flex-shrink:0}.status-recording{background:#e53e3e;box-shadow:0 0 8px #e53e3e}.status-connected{background:#15a04b;box-shadow:0 0 8px #15a04b}.status-idle{background:rgba(255,255,255,.3)}.connected-badge{color:var(--text-muted);font-size:14px;font-weight:600;display:flex;align-items:center;gap:4px}.offline-banner{position:fixed;top:64px;left:0;right:0;z-index:99;padding:8px 16px;text-align:center;background:var(--error-color);color:#ffffff;font-size:14px;font-weight:600}.transcript-area{height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:80px 48px 48px;text-align:center}.transcript{width:100%;max-width:1200px}.phrase{color:var(--text-final);font-weight:600;line-height:1.4;margin-bottom:16px;animation:fadeIn .3s ease}.timestamp{font-size:.4em;color:var(--text-muted);font-weight:400;margin-right:8px;vertical-align:middle}.interim{color:var(--text-interim);font-weight:400;line-height:1.4;opacity:.85;min-height:1.4em;width:100%;max-width:1200px;text-align:center}.interim.error{color:var(--error-color);font-weight:600}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.home{height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:32px;background-color:var(--bg)}.home-logo{width:80px;height:80px}.home h1{color:var(--text-final);font-size:32px;font-weight:700}.home-actions{display:flex;flex-direction:column;gap:16px;align-items:center;width:100%;max-width:320px}.btn-primary{width:100%;padding:16px 32px;font-size:18px;font-weight:600;border:none;border-radius:12px;cursor:pointer;background:#15a04b;color:#ffffff;transition:opacity .2s ease}.btn-primary:hover{opacity:.9}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{width:100%;padding:16px 32px;font-size:18px;font-weight:600;border:2px solid var(--input-border);border-radius:12px;cursor:pointer;background:transparent;color:var(--text-final);transition:background .2s ease}.btn-secondary:hover{background:var(--ctrl-btn-bg)}.join-form{display:flex;flex-direction:column;gap:12px;width:100%;max-width:320px;align-items:center}.code-input{width:100%;padding:16px;font-size:28px;font-weight:700;text-align:center;letter-spacing:12px;text-transform:uppercase;border:2px solid var(--input-border);border-radius:12px;background:var(--input-bg);color:var(--text-final);outline:none;font-family:inherit}.code-input::placeholder{letter-spacing:4px;font-weight:400;font-size:16px;color:var(--text-muted)}.code-input:focus{border-color:#15a04b}.room-code{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;padding:8px 20px;background:var(--controls-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;color:var(--text-muted);font-size:14px}.room-code span{color:var(--text-final);font-weight:700;font-size:18px;letter-spacing:4px}.room-code-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;padding:4px;border-radius:4px;transition:color .2s ease}.room-code-btn:hover{color:var(--text-final)}.qr-overlay{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:center}.qr-modal,.qr-overlay{display:flex;align-items:center}.qr-modal{background:#ffffff;border-radius:16px;padding:32px;flex-direction:column;gap:16px;max-width:320px;width:90%}.qr-code-text{color:#1a1a2e;font-size:24px;font-weight:700;letter-spacing:6px}.qr-url-text{color:#666;font-size:12px;word-break:break-all;text-align:center}.qr-close-btn{max-width:200px;padding:12px 24px;font-size:16px}.waiting{color:var(--text-muted);font-size:20px;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}@media (max-width:768px){.controls{gap:8px;padding:8px 12px}.logo{width:28px;height:28px}.ctrl-btn{width:36px;height:36px;font-size:14px}.transcript-area{padding:64px 16px 48px}.phrase{margin-bottom:12px}.home h1{font-size:24px}.home-actions{padding:0 20px}.code-input{font-size:22px;letter-spacing:8px;padding:12px}.room-code{font-size:12px;padding:6px 12px;bottom:16px}.room-code span{font-size:16px;letter-spacing:3px}.offline-banner{top:52px}}@media (max-width:480px){.controls{gap:6px;padding:6px 8px}.ctrl-btn{width:32px;height:32px}.ctrl-btn svg{width:14px;height:14px}.transcript-area{padding:52px 12px 40px}.offline-banner{top:44px}}@media (max-height:500px){.controls{gap:6px;padding:6px 8px}.ctrl-btn{width:32px;height:32px}.logo{width:24px;height:24px}.transcript-area{padding:48px 16px 32px}.phrase{margin-bottom:8px}.room-code{bottom:8px;padding:4px 12px}.offline-banner{top:44px}}