*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--accent: #6366f1;--accent-hover: #4f46e5;--accent-light: rgba(99, 102, 241, .15);--success: #22c55e;--error: #ef4444;--warning: #f59e0b;--border: rgba(255, 255, 255, .08);--radius: 12px;--radius-sm: 8px;--shadow: 0 4px 6px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 25px -3px rgba(0, 0, 0, .5);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}html,body{height:100%;background:var(--bg-primary);color:var(--text-primary);font-family:var(--font);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100dvh;display:flex;flex-direction:column}.page{flex:1;display:flex;flex-direction:column;max-width:640px;width:100%;margin:0 auto;padding:0 16px 32px}.page-centered{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:480px;width:100%;margin:0 auto;padding:24px 16px}.header{position:sticky;top:0;z-index:10;background:var(--bg-primary);border-bottom:1px solid var(--border);padding:12px 16px;display:flex;align-items:center;gap:12px}.header-title{font-size:18px;font-weight:600;color:var(--text-primary);flex:1}.header-actions{display:flex;gap:8px}.btn-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;transition:background .2s,color .2s;font-size:18px}.btn-icon:hover{background:var(--bg-secondary);color:var(--text-primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;border-radius:var(--radius-sm);border:none;font-size:15px;font-weight:500;cursor:pointer;transition:background .2s,transform .1s,opacity .2s;text-decoration:none;white-space:nowrap;min-height:44px}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:active{transform:none}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:var(--bg-tertiary)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){color:var(--text-primary);background:var(--bg-secondary)}.btn-danger{background:#ef444426;color:var(--error)}.btn-danger:hover:not(:disabled){background:#ef444440}.btn-full{width:100%}.btn-lg{padding:16px 24px;font-size:16px;border-radius:var(--radius);min-height:56px}.card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.card-lg{padding:24px}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:14px;font-weight:500;color:var(--text-secondary)}.form-input{padding:12px 14px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:15px;font-family:var(--font);outline:none;transition:border-color .2s;min-height:44px}.form-input:focus{border-color:var(--accent)}select.form-input{color-scheme:dark;background-color:var(--bg-tertiary);color:var(--text-primary)}select.form-input option{background-color:var(--bg-secondary);color:var(--text-primary)}.form-input::placeholder{color:var(--text-muted)}.alert{padding:12px 16px;border-radius:var(--radius-sm);font-size:14px;line-height:1.5}.alert-error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#fca5a5}.alert-warning{background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);color:#fcd34d}.setup-logo{width:72px;height:72px;margin-bottom:16px}.setup-title{font-size:26px;font-weight:700;text-align:center;margin-bottom:6px}.setup-subtitle{font-size:15px;color:var(--text-secondary);text-align:center;margin-bottom:32px}.setup-form{width:100%;display:flex;flex-direction:column;gap:20px}.setup-hint{font-size:12px;color:var(--text-muted)}.dashboard-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:64px 24px;text-align:center}.dashboard-empty-icon{font-size:48px;opacity:.3}.dashboard-empty-text{color:var(--text-secondary);font-size:15px}.date-group{margin-bottom:24px}.date-group-label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;padding:16px 0 8px}.meeting-card{display:flex;align-items:flex-start;gap:14px;padding:14px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:background .2s,border-color .2s;text-decoration:none;color:inherit;margin-bottom:8px}.meeting-card:hover{background:var(--bg-tertiary);border-color:#ffffff1f}.meeting-card-icon{width:40px;height:40px;border-radius:10px;background:var(--accent-light);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.meeting-card-body{flex:1;min-width:0}.meeting-card-title{font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.meeting-card-meta{font-size:13px;color:var(--text-secondary);display:flex;gap:10px}.status-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:99px;font-size:12px;font-weight:500}.status-complete{background:#22c55e26;color:#86efac}.status-processing{background:#f59e0b26;color:#fcd34d}.status-error{background:#ef444426;color:#fca5a5}.mode-select{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:24px 0}.mode-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:28px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:background .2s,border-color .2s;font-size:14px;font-weight:500;color:var(--text-primary)}.mode-card:hover{background:var(--bg-tertiary);border-color:var(--accent)}.mode-card-icon{font-size:32px}.processing-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:48px 24px;text-align:center}.spinner{width:48px;height:48px;border:3px solid var(--bg-tertiary);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.progress-text{font-size:15px;color:var(--text-secondary)}.recorder{display:flex;flex-direction:column;align-items:center;gap:24px;padding:32px 0}.recorder-visual{position:relative;display:flex;align-items:center;justify-content:center;width:120px;height:120px}.recorder-btn-main{position:relative;z-index:1;width:80px;height:80px;border-radius:50%;border:none;background:var(--accent);color:#fff;font-size:32px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s,background .2s;box-shadow:0 0 #6366f180}.recorder-btn-main.recording{animation:pulse-ring 1.5s ease-out infinite;background:var(--error)}@keyframes pulse-ring{0%{box-shadow:0 0 #ef444466}70%{box-shadow:0 0 0 20px #ef444400}to{box-shadow:0 0 #ef444400}}.recorder-timer{font-size:32px;font-weight:300;font-variant-numeric:tabular-nums;letter-spacing:2px;color:var(--text-primary)}.recorder-controls{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.uploader{display:flex;flex-direction:column;gap:16px}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius);padding:40px 24px;display:flex;flex-direction:column;align-items:center;gap:12px;cursor:pointer;transition:border-color .2s,background .2s;text-align:center}.drop-zone.active,.drop-zone:hover{border-color:var(--accent);background:var(--accent-light)}.drop-zone-icon{font-size:40px;opacity:.6}.drop-zone-text{font-size:15px;color:var(--text-secondary)}.drop-zone-hint{font-size:13px;color:var(--text-muted)}.file-selected{display:flex;align-items:center;gap:12px;padding:12px;background:var(--bg-tertiary);border-radius:var(--radius-sm)}.file-selected-name{font-size:14px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meeting-detail-header{padding:16px 0 0}.meeting-detail-title{font-size:22px;font-weight:700;margin:8px 0 4px}.meeting-detail-meta{display:flex;gap:16px;font-size:13px;color:var(--text-secondary);flex-wrap:wrap;margin-bottom:16px}.audio-player{width:100%;margin-bottom:16px;accent-color:var(--accent)}.speaker-aliases{margin-bottom:18px;padding:14px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius)}.speaker-aliases-header{margin-bottom:12px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.speaker-aliases-title{font-size:15px;font-weight:600}.speaker-aliases-subtitle{margin-top:4px;font-size:13px;color:var(--text-secondary)}.speaker-alias-list{display:flex;flex-direction:column;gap:10px}.speaker-alias-item{display:grid;grid-template-columns:minmax(92px,110px) 1fr auto auto;gap:12px;align-items:center;padding:8px;border-radius:var(--radius-sm)}.speaker-alias-item.is-active{background:#6366f114}.speaker-alias-label{font-size:13px;font-weight:600;color:var(--text-primary)}.speaker-alias-label-button{border:none;background:transparent;padding:0;text-align:left;cursor:pointer}.speaker-alias-input{min-height:40px}.speaker-alias-save,.speaker-alias-remove,.speaker-aliases-add{min-height:40px;padding:8px 14px}.speaker-aliases-toggle{min-height:36px;padding:8px 14px}.speaker-cleanup-bar{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.speaker-cleanup-hint{font-size:12px;color:var(--text-muted)}.speaker-cleanup-progress{font-size:12px;color:var(--text-secondary)}.participant-list{display:flex;flex-direction:column;gap:10px}.participant-item{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:center}.tabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:20px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab-btn{padding:10px 16px;border:none;background:transparent;color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .2s,border-color .2s}.tab-btn.active{color:var(--accent-light);border-bottom-color:var(--accent);color:var(--text-primary)}.copy-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-8px 0 12px}.copy-toolbar-btn{min-height:36px;padding:7px 12px;font-size:13px}.copy-toolbar-status{color:#bbf7d0;font-size:12px;font-weight:600}.translation-toolbar{display:flex;align-items:center;gap:8px;padding:10px 0 12px;margin-bottom:4px;border-bottom:1px solid var(--border);flex-wrap:wrap}.translation-label{flex-shrink:0;color:var(--text-primary);font-size:12px;font-weight:700}.translation-select{height:36px;min-width:118px;padding:6px 32px 6px 10px;border:1px solid rgba(226,232,240,.42);border-radius:var(--radius-sm);background:#020617;color:#f8fafc;color-scheme:dark;font-size:13px;font-weight:700;cursor:pointer}.translation-select:focus{outline:2px solid rgba(129,140,248,.8);outline-offset:2px}.translation-select option{background:#020617;color:#f8fafc}.transcript-list{display:flex;flex-direction:column;gap:12px}.utterance{display:flex;flex-direction:column;gap:8px;padding:12px 14px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm)}.utterance-needs-review{border-color:#f59e0b8c;box-shadow:inset 0 0 0 1px #f59e0b2e}.utterance-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.utterance-header-main{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.utterance-speaker{font-size:13px;font-weight:600;color:#c7d2fe}.utterance-speaker-button{border:none;background:transparent;padding:0;cursor:pointer}.utterance-split-btn{min-height:30px;padding:4px 10px;font-size:12px}.utterance-speaker-select{height:30px;max-width:150px;padding:4px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);font-size:12px;font-weight:600;cursor:pointer}.utterance-body{width:100%}.utterance-text{font-size:14px;line-height:1.6;color:var(--text-primary)}.utterance-time{font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums}.utterance-review-badge{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border-radius:999px;background:#f59e0b24;border:1px solid rgba(245,158,11,.4);color:#fbbf24;font-size:11px;font-weight:700;letter-spacing:.02em;white-space:nowrap}.transcript-raw{font-size:14px;line-height:1.8;color:var(--text-secondary);white-space:pre-wrap}.markdown{font-size:15px;line-height:1.7;color:var(--text-secondary)}.markdown h1,.markdown h2,.markdown h3{color:var(--text-primary);font-weight:600;margin:20px 0 8px;line-height:1.3}.markdown h1{font-size:20px}.markdown h2{font-size:17px}.markdown h3{font-size:15px}.markdown p{margin-bottom:12px}.markdown ul,.markdown ol{padding-left:20px;margin-bottom:12px}.markdown li{margin-bottom:4px}.markdown strong{color:var(--text-primary);font-weight:600}.markdown hr{border:none;border-top:1px solid var(--border);margin:20px 0}.todo-list{display:flex;flex-direction:column;gap:8px}.todo-item{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);transition:opacity .2s}.todo-item.done{opacity:.5}.todo-checkbox{width:20px;height:20px;border-radius:4px;border:2px solid var(--bg-tertiary);background:transparent;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;margin-top:1px;transition:background .2s,border-color .2s;font-size:12px;color:#fff}.todo-checkbox.checked{background:var(--accent);border-color:var(--accent)}.todo-body{flex:1}.todo-text{font-size:14px;line-height:1.5}.todo-item.done .todo-text{text-decoration:line-through}.todo-speaker{font-size:12px;color:var(--text-muted);margin-top:2px}.todo-speaker-button{border:none;background:transparent;padding:0;font:inherit;color:inherit}.todo-speaker-button.is-clickable{cursor:pointer;text-decoration:underline;text-underline-offset:2px}.transcript-editor{display:flex;flex-direction:column;gap:12px}.transcript-editor-textarea{min-height:140px;resize:vertical}.transcript-split-preview{display:grid;grid-template-columns:1fr 1fr;gap:12px}.transcript-split-text{margin-top:10px;white-space:pre-wrap;color:var(--text-secondary);font-size:14px;line-height:1.6}.transcript-editor-actions,.transcript-reanalyze-bar{display:flex;flex-direction:column;gap:8px}.divider{height:1px;background:var(--border);margin:16px 0}.text-muted{color:var(--text-muted);font-size:13px}.flex-row{display:flex;align-items:center;gap:8px}.flex-between{display:flex;align-items:center;justify-content:space-between;gap:8px}.user-menu-trigger{background:none;border:none;cursor:pointer;padding:2px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:opacity .2s}.user-menu-trigger:hover{opacity:.8}.user-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;display:block}.user-avatar-fallback{width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600}.user-menu-dropdown{position:absolute;right:0;top:calc(100% + 8px);min-width:230px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);overflow:hidden;z-index:200;animation:menu-in .12s ease}@keyframes menu-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.user-menu-info{padding:14px 16px}.user-menu-name{font-size:14px;font-weight:600;color:var(--text-primary)}.user-menu-email{font-size:12px;color:var(--text-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:12px 16px;border:none;background:transparent;color:var(--text-primary);font-size:14px;font-family:var(--font);cursor:pointer;transition:background .15s;text-align:left;min-height:44px}.user-menu-item:hover{background:var(--bg-tertiary)}.user-menu-item.danger{color:var(--error)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(max-width:560px){.speaker-alias-item{grid-template-columns:1fr;gap:6px}.speaker-alias-save{width:100%}.transcript-split-preview,.participant-item{grid-template-columns:1fr}}
