:root{--bg:#f7f7f5;--panel:#ffffff;--panel-soft:#f0efec;--text:#202123;--muted:#6b6f76;--line:#dedbd4;--line-strong:#cbc7bd;--accent:#111827;--accent-2:#10a37f;--danger:#b42318;--shadow:0 18px 55px rgba(31,35,40,.08)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}body{min-height:100vh}a{color:inherit;text-decoration:none}button,input{font:inherit}.hidden{display:none!important}
.auth-page{min-height:100vh;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at top left,rgba(16,163,127,.12),transparent 28%),var(--bg)}
.auth-card{width:min(440px,100%);padding:28px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.92);box-shadow:var(--shadow)}
.auth-logo{width:38px;height:38px;border-radius:12px;background:#202123;color:#fff;display:grid;place-items:center;font-weight:800;margin-bottom:20px}.auth-card h1{font-size:30px;line-height:1.08;margin:0 0 10px;letter-spacing:-.04em}.auth-card p{margin:0;color:var(--muted);line-height:1.6}.auth-actions{display:grid;gap:10px;margin-top:22px}.auth-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.auth-divider::before,.auth-divider::after{content:"";height:1px;background:var(--line);flex:1}.auth-state{margin-top:16px;color:var(--muted);font-size:13px;line-height:1.5}
.app-shell{height:100vh;display:grid;grid-template-columns:320px minmax(0,1fr);background:#fff;overflow:hidden}.sidebar{display:grid;grid-template-rows:auto auto 1fr auto;border-right:1px solid var(--line);background:#f7f7f5;min-width:0}.sidebar-top{display:flex;align-items:center;gap:10px;padding:14px}.brand-mark{width:30px;height:30px;border-radius:9px;background:#202123;color:#fff;display:grid;place-items:center;font-weight:800}.brand-name{font-weight:800;letter-spacing:-.03em}.sidebar-actions{padding:0 14px 14px}.timeline{overflow:auto;padding:8px}.timeline-section{padding:8px 8px 6px;color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.recording-item{width:100%;border:0;background:transparent;text-align:left;padding:12px;border-radius:12px;display:grid;gap:5px;cursor:pointer;color:var(--text)}.recording-item:hover{background:#eeece7}.recording-item.active{background:#e7e5df}.recording-title{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recording-meta{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:12px}.dot{width:7px;height:7px;border-radius:50%;background:#9ca3af}.dot.complete{background:var(--accent-2)}.dot.failed{background:var(--danger)}.sidebar-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}
.workspace{min-width:0;display:grid;grid-template-rows:auto 1fr;background:#fff}.topbar{height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.88);backdrop-filter:blur(14px)}.topbar-title{font-weight:800;letter-spacing:-.03em}.topbar-subtitle{color:var(--muted);font-size:13px}.detail{overflow:auto;display:grid;grid-template-columns:minmax(0,820px);justify-content:center;padding:28px 24px 80px}.empty-state{align-self:center;text-align:center;max-width:620px;margin:auto;color:var(--muted)}.empty-state h1{font-size:34px;color:var(--text);letter-spacing:-.04em;margin:0 0 12px}.meeting-head{display:grid;gap:12px;margin-bottom:24px}.meeting-title-row{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.meeting-head h1{font-size:32px;line-height:1.1;margin:0;letter-spacing:-.04em}.pill-row{display:flex;gap:8px;flex-wrap:wrap}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:12px;font-weight:700}.content-stack{display:grid;gap:16px}.panel{border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 1px 0 rgba(0,0,0,.02);overflow:hidden}.panel-head{display:flex;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);background:#fafaf9}.panel-head h2{font-size:15px;margin:0}.panel-body{padding:18px;color:#303236;line-height:1.7;white-space:pre-wrap}.muted{color:var(--muted)}.mono{font-family:"SFMono-Regular",Consolas,monospace;font-size:12px;color:var(--muted);word-break:break-all}.upload-drawer{position:fixed;inset:auto 18px 18px auto;width:min(430px,calc(100% - 36px));padding:18px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 24px 80px rgba(0,0,0,.18);z-index:20}.upload-drawer h2{margin:0 0 8px;font-size:18px}.field{display:grid;gap:8px;margin-top:14px}.field label{font-size:13px;font-weight:700}.field input{width:100%;padding:12px;border:1px solid var(--line-strong);border-radius:10px;background:#fff}.file-list{display:grid;gap:8px;margin-top:10px}.file-chip{padding:10px;border:1px solid var(--line);border-radius:10px;background:#fafaf9;font-size:13px;color:var(--muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:10px;padding:11px 14px;font-weight:800;cursor:pointer;min-height:42px}.btn-primary{background:#202123;color:#fff}.btn-primary:hover{background:#050505}.btn-secondary{background:#fff;color:#202123;border-color:var(--line-strong)}.btn-secondary:hover{background:#f4f3f0}.btn-full{width:100%}.icon-plus{font-size:18px;line-height:1}.status-line{font-size:13px;color:var(--muted);margin-top:10px;line-height:1.5}.mobile-menu{display:none}
@media (max-width:820px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:min(320px,86vw);z-index:30;transform:translateX(-105%);transition:transform .18s ease;box-shadow:20px 0 60px rgba(0,0,0,.18)}.sidebar.open{transform:translateX(0)}.mobile-menu{display:inline-flex}.detail{padding:22px 16px 80px}.meeting-title-row{display:grid}.topbar{padding:0 12px}.topbar-subtitle{display:none}}
