*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0f172a;--surface: #1e293b;--surface2: #263348;--border: #334155;--primary: #6366f1;--primary-h: #818cf8;--accent: #22d3ee;--text: #e2e8f0;--text-muted:#94a3b8;--success: #34d399;--warning: #fbbf24;--danger: #f87171;--radius: 12px;--radius-sm: 8px;--shadow: 0 4px 24px rgba(0,0,0,.4)}html,body,#root{height:100%;overflow:hidden;font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased}.loading-screen{display:flex;align-items:center;justify-content:center;height:100vh}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.spinner.large{width:52px;height:52px;border-width:4px}@keyframes spin{to{transform:rotate(360deg)}}button{font-family:inherit;cursor:pointer;border:none;outline:none;transition:all .15s ease}.btn-primary{background:var(--primary);color:#fff;padding:10px 22px;border-radius:var(--radius-sm);font-size:.95rem;font-weight:600}.btn-primary:hover:not(:disabled){background:var(--primary-h);transform:translateY(-1px)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{background:transparent;color:var(--text);border:1.5px solid var(--border);padding:10px 22px;border-radius:var(--radius-sm);font-size:.95rem;font-weight:500}.btn-secondary:hover{border-color:var(--primary);color:var(--primary)}.btn-danger{background:#f8717126;color:var(--danger);border:1.5px solid var(--danger);padding:9px 20px;border-radius:var(--radius-sm);font-size:.9rem;font-weight:600;margin-top:16px}.btn-danger:hover{background:#f8717140}.btn-ghost{background:transparent;color:var(--text-muted);padding:7px 14px;border-radius:var(--radius-sm);font-size:.9rem}.btn-ghost:hover{color:var(--text);background:var(--surface2)}.btn-full{width:100%;justify-content:center}.btn-lg{padding:13px 28px;font-size:1rem}.link-btn{background:none;border:none;color:var(--primary);font-size:inherit;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.link-btn:hover{color:var(--primary-h)}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 28px;height:60px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.topbar-brand{font-size:1.1rem;font-weight:700;letter-spacing:-.3px}.topbar-right{display:flex;align-items:center;gap:10px}.topbar-user{font-size:.88rem;color:var(--text-muted)}.page-root{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.auth-root{display:flex;height:100dvh;overflow:hidden}.auth-left{flex:1;position:relative;background:linear-gradient(145deg,#1e1b4b,#0f172a 60%,#0c1a2e);padding:60px 48px;display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--border)}.auth-brand .brand-icon{font-size:3rem;margin-bottom:16px}.auth-brand h1{font-size:2rem;font-weight:700;margin-bottom:12px}.auth-brand p{color:var(--text-muted);font-size:1rem;max-width:320px;line-height:1.7}.feature-list{list-style:none;margin-top:40px;display:flex;flex-direction:column;gap:14px}.feature-list li{display:flex;align-items:center;gap:12px;font-size:.95rem;color:var(--text-muted)}.feat-icon{font-size:1.1rem}.auth-right{width:460px;display:flex;align-items:center;justify-content:center;padding:40px 32px;overflow-y:auto}.auth-card{width:100%;max-width:380px}.auth-tabs{display:flex;gap:4px;background:var(--surface2);padding:4px;border-radius:var(--radius-sm);margin-bottom:28px}.auth-tab{flex:1;padding:9px;border-radius:6px;background:transparent;color:var(--text-muted);font-size:.9rem;font-weight:500;transition:all .15s}.auth-tab.active{background:var(--surface);color:var(--text);box-shadow:0 1px 4px #0000004d}.auth-title{font-size:1.5rem;font-weight:700;margin-bottom:6px}.auth-subtitle{color:var(--text-muted);font-size:.9rem;margin-bottom:24px}.error-banner{background:#f8717126;border:1px solid rgba(248,113,113,.4);color:var(--danger);padding:10px 14px;border-radius:var(--radius-sm);font-size:.9rem;margin-bottom:18px}.success-banner{background:#34d39926;border:1px solid rgba(52,211,153,.4);color:var(--success);padding:10px 14px;border-radius:var(--radius-sm);font-size:.9rem;margin-bottom:18px}.password-input-wrapper{display:flex;align-items:center;position:relative}.password-input-wrapper input{flex:1}.toggle-password-btn{position:absolute;right:12px;background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1.1rem;padding:4px 8px;display:flex;align-items:center;justify-content:center;transition:color .15s}.toggle-password-btn:hover{color:var(--text)}.password-field{display:flex;flex-direction:column;gap:6px}.auth-form{display:flex;flex-direction:column;gap:16px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:.85rem;font-weight:500;color:var(--text-muted)}.field input{background:var(--surface2);border:1.5px solid var(--border);color:var(--text);padding:11px 14px;border-radius:var(--radius-sm);font-size:.95rem;font-family:inherit;transition:border-color .15s}.field input:focus{outline:none;border-color:var(--primary)}.field input::placeholder{color:var(--text-muted);opacity:.6}.auth-switch{margin-top:18px;font-size:.88rem;color:var(--text-muted);text-align:center}.dashboard-main{flex:1;min-height:0;overflow-y:auto;padding:36px 32px;max-width:900px;margin:0 auto;width:100%}.dashboard-hero{display:flex;align-items:center;justify-content:space-between;margin-bottom:36px;gap:20px;flex-wrap:wrap}.dashboard-hero h1{font-size:1.7rem;font-weight:700;margin-bottom:6px}.dashboard-hero p{color:var(--text-muted);font-size:.95rem}.accent{color:var(--primary)}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:40px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px}.stat-value{font-size:1.25rem;font-weight:700;margin-bottom:4px}.stat-label{color:var(--text-muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.sessions-section h2{font-size:1.15rem;font-weight:600;margin-bottom:16px}.sessions-list{display:flex;flex-direction:column;gap:12px}.session-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color .15s}.session-card:hover{border-color:var(--primary)}.session-header{display:flex;align-items:center;gap:16px;padding:16px 20px;cursor:pointer;flex-wrap:wrap}.session-meta{display:flex;align-items:center;gap:10px;flex:1;flex-wrap:wrap}.session-date{font-size:.85rem;color:var(--text-muted)}.session-stats{display:flex;gap:14px;font-size:.85rem;color:var(--text-muted)}.expand-btn{background:none;color:var(--text-muted);font-size:.75rem;padding:4px 8px}.score-badge{display:inline-block;background:color-mix(in srgb,var(--badge-color) 15%,transparent);color:var(--badge-color);border:1px solid color-mix(in srgb,var(--badge-color) 40%,transparent);padding:2px 10px;border-radius:999px;font-size:.8rem;font-weight:600}.session-body{padding:0 20px 16px;border-top:1px solid var(--border)}.session-section{margin-top:14px}.session-section h4{font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:6px}.transcription-text{font-style:italic;color:var(--text-muted);font-size:.9rem;line-height:1.6}.rec-list{padding-left:18px;display:flex;flex-direction:column;gap:6px}.rec-list li{font-size:.9rem;color:var(--text-muted)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:60px 20px;color:var(--text-muted);text-align:center}.empty-icon{font-size:2.5rem}.coach-main{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;align-items:center;padding:28px 24px}.coach-hero{text-align:center;margin-bottom:24px}.coach-hero h1{font-size:1.7rem;font-weight:700;margin-bottom:6px}.coach-hero p{color:var(--text-muted);max-width:480px;font-size:.92rem}.recorder-card{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:32px 40px;display:flex;flex-direction:column;align-items:center;gap:20px;width:100%;max-width:420px;box-shadow:var(--shadow)}.recording-card{padding:24px 32px;gap:12px}.face-wrap{width:200px;height:210px;animation:face-bob 2.8s ease-in-out infinite;filter:drop-shadow(0 8px 22px rgba(0,0,0,.3));flex-shrink:0}@keyframes face-bob{0%,to{transform:translateY(0) rotate(0)}30%{transform:translateY(-8px) rotate(-1.5deg)}70%{transform:translateY(-4px) rotate(1deg)}}.blink-lid{transform-box:fill-box;transform-origin:top center;animation:blink 4.5s ease-in-out infinite}.blink-right{animation-delay:.07s}@keyframes blink{0%,88%,96%,to{transform:scaleY(0)}92%{transform:scaleY(1.05)}}.listening-label{font-size:1rem;font-weight:600;color:var(--accent);letter-spacing:.02em;margin:-8px 0 0}.mic-ring-wrap{position:relative;width:140px;height:140px}.ring-svg{width:140px;height:140px;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:var(--border);stroke-width:6}.ring-fg{fill:none;stroke:var(--primary);stroke-width:6;stroke-linecap:round}.mic-btn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:88px;height:88px;border-radius:50%;background:var(--surface2);border:2px solid var(--border);font-size:2rem;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.mic-btn:hover:not(:disabled){background:var(--primary);border-color:var(--primary);transform:translate(-50%,-50%) scale(1.05);box-shadow:0 0 24px #6366f166}.mic-btn.recording{background:#f8717126;border-color:var(--danger);animation:pulse-ring 1.5s ease infinite}.mic-btn.countdown{background:#fbbf241a;border-color:var(--warning);cursor:default}.countdown-num{font-size:2rem;font-weight:700;color:var(--warning)}@keyframes pulse-ring{0%,to{box-shadow:0 0 #f8717166}50%{box-shadow:0 0 0 14px #f8717100}}.mic-icon.pulse{animation:blink .9s step-end infinite}@keyframes blink{50%{opacity:.4}}.recorder-hint{text-align:center}.recorder-hint p{color:var(--text-muted);font-size:.9rem}.hint-sub{font-size:.82rem;opacity:.7;margin-top:4px}.countdown-label{font-size:1.1rem;font-weight:600;color:var(--warning)}.timer-display{text-align:center}.timer-num{font-size:3rem;font-weight:700;color:var(--accent);display:block;line-height:1}.timer-unit{font-size:.85rem;color:var(--text-muted)}.level-bar-wrap{width:100%}.level-label{font-size:.78rem;color:var(--text-muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.06em}.level-bar{height:8px;background:var(--surface2);border-radius:99px;overflow:hidden}.level-fill{height:100%;background:linear-gradient(90deg,var(--primary) 0%,var(--accent) 100%);border-radius:99px}.processing-card,.error-card{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:40px;display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center;max-width:420px;width:100%;box-shadow:var(--shadow)}.processing-card h3{font-size:1.15rem;font-weight:600}.processing-card p{color:var(--text-muted);font-size:.9rem}.error-card .error-icon{font-size:2.5rem}.error-card h3{font-size:1.15rem;font-weight:600;color:var(--danger)}.error-card p{color:var(--text-muted);font-size:.9rem}.results-root{width:100%;max-width:860px;margin:0 auto;padding:0 24px 32px}.results-header{text-align:center;padding:20px 0 16px}.results-header h1{font-size:1.6rem;font-weight:700;margin-bottom:6px}.results-header p{color:var(--text-muted)}.audio-player-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px;margin-bottom:16px}.audio-player-wrap h3{font-size:.88rem;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin-bottom:12px}.audio-player{width:100%;accent-color:var(--primary)}.results-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:16px;margin-bottom:32px}.result-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.result-card h3{font-size:.88rem;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin-bottom:16px;display:flex;align-items:center;gap:8px}.badge-good{background:#34d39926;color:var(--success);border:1px solid rgba(52,211,153,.3);padding:1px 8px;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:0;text-transform:none}.score-card{display:flex;flex-direction:column;align-items:center}.score-ring-wrap{position:relative;width:110px;height:110px;margin-bottom:16px}.score-ring-svg{width:110px;height:110px;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:var(--border);stroke-width:7}.ring-score{fill:none;stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset .6s ease}.score-ring-inner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.score-grade{display:block;font-size:1.6rem;font-weight:700}.score-label{display:block;font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.score-stats{display:flex;gap:24px}.score-stat{text-align:center}.score-stat span{display:block;font-size:1.3rem;font-weight:700}.score-stat small{color:var(--text-muted);font-size:.78rem}.score-stat-warn span{color:#f87171}.score-stat-warn small{color:#f87171;opacity:.8}.transcription-card{grid-column:span 1}.transcription-quote{font-style:italic;color:var(--text-muted);font-size:.92rem;line-height:1.7;border-left:3px solid var(--primary);padding-left:14px}.filler-chips{display:flex;flex-wrap:wrap;gap:8px}.filler-chip{background:#6366f11f;border:1px solid rgba(99,102,241,.3);color:var(--primary-h);padding:4px 12px;border-radius:999px;font-size:.85rem}.chip-count{font-weight:700;color:var(--accent);margin-left:4px}.pause-breakdown{display:flex;flex-direction:column;gap:8px}.pause-count{font-size:1.1rem;font-weight:600;color:var(--warning);margin:0}.pause-count-long{color:#f87171}.pause-label{font-weight:400;font-size:.85rem;opacity:.8;margin-right:4px}.projection-msg{font-size:.95rem;margin:0}.projection-medium{color:var(--warning)}.projection-low{color:#f87171}.recommendations-card{grid-column:1 / -1}.rec-ol{list-style:none;display:flex;flex-direction:column;gap:12px}.rec-ol li{display:flex;align-items:flex-start;gap:12px;font-size:.92rem;line-height:1.6}.rec-num{flex-shrink:0;width:26px;height:26px;background:#6366f133;color:var(--primary-h);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700}.empty-msg{color:var(--text-muted);font-size:.9rem}.repeat-sublabel{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:8px}.issue-card{grid-column:1 / -1}.issue-list{display:flex;flex-direction:column;gap:12px}.issue-item{background:var(--surface2);border-left:3px solid var(--warning);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:10px 14px}.issue-msg{font-size:.9rem;color:var(--text);margin-bottom:4px}.issue-context{font-size:.85rem;font-style:italic;color:var(--text-muted);margin-bottom:6px}.issue-suggestions{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.suggestions-label{font-size:.78rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.suggestion-chip{background:#34d3991f;border:1px solid rgba(52,211,153,.3);color:var(--success);padding:2px 10px;border-radius:999px;font-size:.82rem;font-weight:500}.results-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}@media (max-width: 680px){.auth-left{display:none}.auth-right{width:100%;padding:24px 20px}.dashboard-hero{flex-direction:column;align-items:flex-start}.dashboard-main{padding:20px 16px}.results-grid{grid-template-columns:1fr}.recommendations-card,.issue-card{grid-column:1}.recorder-card{padding:20px;gap:14px}.recording-card{padding:16px 20px;gap:10px}.face-wrap{width:150px;height:158px}.coach-main{padding:16px}.coach-hero{margin-bottom:16px}.coach-hero h1{font-size:1.35rem}.coach-hero p{font-size:.85rem}.timer-num{font-size:2.2rem}.topbar{padding:0 16px}.topbar-brand{font-size:.95rem}.topbar-user{display:none}.results-root{padding:0 12px 24px}.results-header{padding:12px 0 10px}.results-header h1{font-size:1.3rem}.result-card{padding:16px}.results-actions{flex-direction:column;align-items:stretch}.results-actions button{text-align:center}.score-stats{gap:14px}.processing-card,.error-card{padding:28px 24px}}
