:root{ --blue:#1656E8; --blue-d:#0f3fb0; --yellow:#F5C518; --ink:#111827; --soft:#4b5563; --muted:#9ca3af; --line:#e5e7eb; --bg:#f6f7fb; --card:#fff; --red:#dc2626; }
*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{ font-family:"Microsoft JhengHei","PingFang TC","Noto Sans TC",system-ui,sans-serif; background:var(--bg); color:var(--ink); line-height:1.6; }
a{ color:inherit; text-decoration:none; }
.topbar{ position:sticky; top:0; z-index:5; display:flex; align-items:center; justify-content:space-between; padding:10px 16px; background:#fff; border-bottom:1px solid var(--line); }
.topbar nav{ display:flex; gap:8px; align-items:center; }
.logo{ font-weight:900; font-size:20px; letter-spacing:-.02em; }
.logo span{ color:var(--blue); }
main{ max-width:880px; margin:0 auto; padding:20px 16px 60px; }
h1{ font-size:22px; margin:0 0 8px; }
h3{ font-size:14px; margin:0 0 8px; color:var(--soft); letter-spacing:.04em; }
.sub{ color:var(--soft); margin:0 0 16px; }
.card{ background:var(--card); border:1px solid var(--line); border-radius:12px; padding:18px; margin-bottom:14px; }
.row{ display:flex; align-items:center; }
.row.between{ justify-content:space-between; }
.row.gap{ gap:10px; }
.row.wrap{ flex-wrap:wrap; gap:10px; }
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:6px; border:1px solid var(--line); background:#fff; color:var(--ink); border-radius:10px; padding:9px 16px; font-size:14px; font-weight:700; cursor:pointer; white-space:nowrap; }
.btn:hover{ border-color:#cbd5e1; }
.btn.primary{ background:var(--blue); color:#fff; border-color:var(--blue); }
.btn.primary:hover{ background:var(--blue-d); }
.btn.danger{ background:var(--red); color:#fff; border-color:var(--red); }
.btn.ghost{ background:#fff; }
.btn.sm{ padding:6px 12px; font-size:13px; }
.btn.lg{ padding:13px 24px; font-size:16px; width:100%; }
.btn[disabled]{ opacity:.5; cursor:not-allowed; }
.danger-text{ color:var(--red); }
input[type=text], input[type=password], textarea{ width:100%; border:1px solid var(--line); border-radius:10px; padding:11px 12px; font:inherit; font-size:15px; margin-bottom:12px; background:#fff; }
textarea{ min-height:140px; resize:vertical; margin-bottom:0; }
.login{ max-width:420px; margin:60px auto; text-align:center; }
.login h1{ font-size:30px; }
.err{ color:var(--red); font-size:13px; min-height:18px; margin:6px 0 0; white-space:pre-wrap; }
.hint, .muted{ color:var(--muted); }
.small{ font-size:12px; font-weight:400; }
.steps{ padding-left:20px; color:var(--soft); margin:0 0 16px; }
.steps li{ margin-bottom:6px; }
.chk{ display:flex; gap:6px; align-items:center; font-size:14px; color:var(--soft); margin-bottom:12px; }
.list{ display:flex; flex-direction:column; gap:10px; margin-top:12px; }
.item{ display:flex; justify-content:space-between; align-items:center; gap:12px; background:#fff; border:1px solid var(--line); border-radius:12px; padding:14px 16px; }
.item:hover{ border-color:var(--blue); }
.item .t{ font-weight:800; font-size:15px; }
.item .m{ color:var(--muted); font-size:12px; margin-top:2px; }
.badge{ font-size:11px; font-weight:800; padding:3px 9px; border-radius:999px; background:#eef2ff; color:var(--blue); white-space:nowrap; }
.badge.recording{ background:#fee2e2; color:var(--red); }
.badge.processing{ background:#fef3c7; color:#92400e; }
.badge.ready{ background:#dcfce7; color:#166534; }
.badge.error{ background:#fee2e2; color:var(--red); }
.live{ color:var(--red); font-weight:800; font-size:13px; display:flex; align-items:center; gap:6px; }
.dot{ width:10px; height:10px; border-radius:50%; background:var(--red); animation:blink 1.2s infinite; }
@keyframes blink{ 50%{ opacity:.2; } }
.timer{ font-size:34px; font-weight:900; font-variant-numeric:tabular-nums; }
.meter{ height:8px; background:#eef0f4; border-radius:999px; margin:14px 0; overflow:hidden; }
.meter-bar{ height:100%; width:0; background:linear-gradient(90deg, var(--blue), var(--yellow)); transition:width .08s; }
.transcript{ max-height:420px; overflow:auto; font-size:14px; }
.transcript .ln{ display:flex; gap:10px; padding:4px 0; border-bottom:1px dashed var(--line); }
.transcript .ts{ color:var(--muted); font-variant-numeric:tabular-nums; font-size:12px; flex:0 0 46px; padding-top:2px; }
.title-edit{ font-size:22px; font-weight:900; border:1px solid transparent; padding:4px 6px; margin:0 0 2px -6px; border-radius:8px; width:100%; max-width:600px; background:transparent; }
.title-edit:hover, .title-edit:focus{ border-color:var(--line); background:#fff; }
.status{ margin:10px 0 14px; font-size:14px; color:var(--soft); }
.status.err{ color:var(--red); }
.md h2{ font-size:15px; margin:14px 0 6px; color:var(--blue); }
.md h2:first-child{ margin-top:0; }
.md ul{ margin:0 0 6px; padding-left:20px; }
.md li{ margin-bottom:3px; }
.md table{ border-collapse:collapse; width:100%; font-size:14px; margin:4px 0 8px; }
.md th, .md td{ border:1px solid var(--line); padding:6px 10px; text-align:left; }
.md th{ background:#f8fafc; }
.md p{ margin:0 0 6px; }
.notes{ white-space:pre-wrap; font:inherit; margin:0; font-size:14px; }
@media (max-width:600px){ .timer{ font-size:26px; } .btn.lg{ font-size:15px; } main{ padding:14px 12px 50px; } }
