:root { --ink:#17222d; --muted:#5f6e7d; --line:#d6e0e7; --canvas:#f3f7f9; --surface:#fff; --navy:#173c5f; --blue:#286c99; --blue-soft:#e9f3f9; --error:#a43333; --shadow:0 8px 28px rgba(18,44,67,.08); font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; color:var(--ink); background:var(--canvas); }
* { box-sizing:border-box; } body { margin:0; min-height:100vh; } button,input,textarea { font:inherit; } button { cursor:pointer; } .shell { width:min(1100px,calc(100% - 2rem)); margin:0 auto; padding:2rem 0 3rem; } .masthead { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:0 0 1.6rem; } h1,h2,p { margin-top:0; } h1 { font-size:clamp(1.7rem,4vw,2.35rem); letter-spacing:-.035em; margin-bottom:0; } h2 { font-size:1.13rem; margin-bottom:.35rem; } .eyebrow { color:var(--blue); font-size:.78rem; font-weight:750; letter-spacing:.1em; text-transform:uppercase; margin-bottom:.5rem; } .muted,.help { color:var(--muted); line-height:1.55; } .help { margin:.8rem 0 0; font-size:.84rem; } .account { display:flex; align-items:center; gap:.75rem; color:var(--muted); font-size:.9rem; } .account form { margin:0; } .link-button { border:0; color:var(--navy); background:transparent; text-decoration:underline; padding:0; } .tabs { display:flex; border-bottom:1px solid var(--line); gap:.25rem; } .tab { border:0; background:transparent; color:var(--muted); padding:.85rem 1.05rem; border-bottom:3px solid transparent; font-weight:650; } .tab.is-active { border-color:var(--blue); color:var(--navy); } .tab-panel { padding-top:1.4rem; } .card { background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow); border-radius:.6rem; padding:clamp(1rem,3vw,1.6rem); } .editor-card,.process-card { margin-top:1.2rem; } #upload-form { display:flex; align-items:center; flex-wrap:wrap; gap:.75rem; } .file-control { position:relative; border:1px solid var(--blue); border-radius:.35rem; padding:.6rem .85rem; color:var(--navy); font-weight:650; overflow:hidden; } .file-control input { position:absolute; inset:0; opacity:0; cursor:pointer; } .filename { color:var(--muted); min-width:12rem; flex:1; overflow-wrap:anywhere; } .primary { border:0; border-radius:.35rem; background:var(--navy); color:#fff; padding:.67rem 1rem; font-weight:700; } .primary:hover,.primary:focus { background:#0e2c49; } .progress-wrap { margin-top:1.15rem; max-width:580px; } .progress-label { display:flex; justify-content:space-between; font-size:.85rem; color:var(--muted); margin-bottom:.35rem; } .progress { height:.5rem; background:#e6edf1; border-radius:99px; overflow:hidden; } .progress i { display:block; height:100%; width:0; background:var(--blue); transition:width .15s linear; } .message { min-height:1.3rem; color:var(--navy); margin:1rem 0 0; } .section-heading { display:flex; justify-content:space-between; gap:1rem; align-items:start; } .state { color:var(--blue); background:var(--blue-soft); border-radius:99px; padding:.35rem .6rem; white-space:nowrap; font-size:.78rem; font-weight:700; } textarea { resize:vertical; width:100%; min-height:22rem; border:1px solid var(--line); border-radius:.35rem; padding:1rem; line-height:1.65; color:var(--ink); background:#fcfdfe; } textarea:focus,input:focus { outline:3px solid rgba(40,108,153,.2); border-color:var(--blue); } audio { width:100%; margin-top:1rem; } pre { margin-top:1rem; padding:1rem; overflow:auto; background:#f5f8fa; border:1px solid var(--line); border-radius:.35rem; font-size:.85rem; } .login-shell { min-height:100vh; display:grid; place-items:center; padding:1rem; background:linear-gradient(135deg,#edf5f8,#f5f7f9); } .login-card { width:min(100%,420px); background:#fff; border:1px solid var(--line); border-radius:.65rem; box-shadow:var(--shadow); padding:2rem; } .login-card form { display:grid; gap:1rem; } label { display:grid; gap:.4rem; color:var(--ink); font-size:.9rem; font-weight:650; } input { border:1px solid var(--line); border-radius:.35rem; padding:.68rem .75rem; } .error { color:var(--error); margin:0; font-size:.9rem; }
.speaker-controls { display:flex; justify-content:flex-end; margin:1rem 0; padding:1rem; background:var(--blue-soft); border:1px solid #c8dfec; border-radius:.4rem; } .speaker-assignment { display:flex; justify-content:flex-end; gap:.7rem; flex-wrap:wrap; } .speaker-assignment input { width:min(17rem,45vw); } select { border:1px solid var(--line); border-radius:.35rem; background:#fff; padding:.68rem .75rem; color:var(--ink); } select:focus { outline:3px solid rgba(40,108,153,.2); border-color:var(--blue); }
.utterance-editor { display:grid; gap:.75rem; max-height:42rem; overflow:auto; padding-right:.25rem; } .utterance { border:1px solid var(--line); border-radius:.4rem; background:#fcfdfe; overflow:hidden; } .utterance-meta { display:flex; align-items:center; gap:.15rem; padding:.45rem .75rem; background:#f1f6f9; color:var(--muted); font-size:.78rem; font-weight:700; } .speaker-choice { min-width:8.5rem; padding:.25rem .4rem; font-size:.78rem; font-weight:700; } .utterance-text { display:block; min-height:5.8rem; border:0; border-radius:0; background:transparent; } .play-button { margin-left:auto; border:1px solid var(--blue); border-radius:.28rem; background:#fff; color:var(--navy); padding:.28rem .65rem; font-size:.78rem; font-weight:700; }
.source-actions { display:flex; gap:.55rem; }
.export-control { position:relative; } .export-menu { position:absolute; z-index:5; top:calc(100% + .3rem); right:0; min-width:11.5rem; padding:.3rem; border:1px solid var(--line); border-radius:.4rem; background:#fff; box-shadow:var(--shadow); } .export-menu button { display:block; width:100%; border:0; border-radius:.25rem; padding:.5rem .6rem; text-align:left; background:transparent; color:var(--ink); font-size:.85rem; } .export-menu button:hover,.export-menu button:focus { background:var(--blue-soft); }
button.file-control { appearance:none; -webkit-appearance:none; cursor:pointer; font:inherit; font-weight:650; line-height:1.2; color:var(--navy); background:#fff; } button.file-control:hover:not(:disabled),button.file-control:focus-visible:not(:disabled) { background:var(--blue-soft); }
.job-card { margin-top:.8rem; padding:.7rem .8rem; border:1px solid var(--line); border-radius:.4rem; background:#f7fafc; } .job-header { display:flex; justify-content:space-between; gap:1rem; margin-bottom:.4rem; color:var(--muted); font-size:.86rem; } .job-header span:first-child { color:var(--navy); font-weight:700; } .job-queued { background:#f7f8fa; } .job-processing { background:var(--blue-soft); border-color:#c8dfec; } .job-ready { background:#eef8f1; border-color:#bddfca; } .job-failed { background:#fff3f3; border-color:#efc8c8; } .job-failed .job-header span:first-child { color:var(--error); } .job-cancelled,.job-reconnecting { background:#f7f8fa; }
.shell { padding:1rem 0 1.5rem; } .masthead { padding-bottom:.8rem; } .tab-panel { padding-top:.7rem; } .card { padding:1rem; } .editor-card { margin-top:.7rem; } .utterance-editor { gap:.45rem; max-height:calc(100vh - 13rem); } .utterance-text { min-height:4.5rem; padding:.7rem .8rem; } .play-button:disabled, .file-control.is-disabled { cursor:not-allowed; opacity:.45; } .file-control.is-disabled input { pointer-events:none; } .file-control.is-cancel { border-color:var(--error); color:var(--error); background:#fff6f6; }
.tab:disabled { cursor:not-allowed; color:#9aa8b4; }
.masthead { justify-content:flex-end; min-height:1.5rem; } .top-account { margin-left:auto; }
.settings-tab { margin-left:auto; }
.transcription-settings { display:grid; gap:1rem; max-width:22rem; } .transcription-settings label { min-width:12rem; } .transcription-settings input,.transcription-settings select { width:100%; }
.processing-results { display:grid; gap:.75rem; margin-top:.75rem; } .clinical-result-section,.source-evidence,.review-notes,.usage-details { padding:1rem; } .clinical-result-section h2,.source-evidence h2 { margin-bottom:.7rem; } .result-tree,.evidence-list { display:grid; gap:.45rem; } .result-entry { border:1px solid var(--line); border-radius:.35rem; padding:.6rem .7rem; background:#fcfdfe; } .result-entry summary { cursor:pointer; font-weight:650; line-height:1.45; } .result-status { display:inline-block; margin:.5rem 0; padding:.2rem .45rem; border-radius:99px; background:var(--blue-soft); color:var(--navy); font-size:.74rem; font-weight:700; } .evidence-list { padding-top:.25rem; } .evidence-item { width:100%; text-align:left; border:1px solid #c8dfec; border-radius:.3rem; padding:.45rem .55rem; background:#f4f9fc; color:var(--navy); font-size:.82rem; } .source-utterance { border-top:1px solid var(--line); padding:.65rem 0; } .source-utterance:first-child { border-top:0; padding-top:0; } .source-utterance div { color:var(--muted); font-size:.78rem; font-weight:700; } .source-utterance p { margin:.3rem 0 0; white-space:pre-wrap; line-height:1.5; } .review-notes summary,.usage-details summary { cursor:pointer; font-weight:700; } .review-notes article { border-top:1px solid var(--line); margin-top:.7rem; padding-top:.7rem; } .review-notes p { margin-bottom:.45rem; }
@media (max-width:600px) { .masthead { align-items:flex-start; flex-direction:column; } .shell { width:min(100% - 1rem,1100px); padding-top:1.2rem; } .tab { padding:.8rem .55rem; font-size:.85rem; } .filename { flex-basis:100%; } .speaker-controls { align-items:stretch; flex-direction:column; } }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.file-control:disabled { cursor:not-allowed; opacity:.45; }
.file-control.is-cancel { opacity:1; }

.evidence-item { display:block; width:100%; text-align:left; }
.evidence-item summary { cursor:pointer; color:var(--navy); font-weight:650; }
.evidence-utterances { margin-top:.45rem; padding:.2rem .65rem .1rem; border-left:3px solid #c8dfec; background:#fff; }
.evidence-utterances .source-utterance { padding:.55rem 0; }

.placeholder-controls { justify-content:flex-start; }
.placeholder-assignment { justify-content:flex-start; width:100%; }
.placeholder-assignment select { min-width:10rem; }
.placeholder-assignment input { flex:1 1 16rem; min-width:12rem; }
.placeholder-assignment .file-control { background:#fff; }

.status-wheel { width:.8rem; height:.8rem; flex:0 0 .8rem; border:2px solid #b9d4e4; border-top-color:var(--blue); border-radius:50%; }
.status-wheel.is-ticking { animation:status-wheel-tick .34s ease-out; }
@keyframes status-wheel-tick { from { transform:rotate(0deg); } to { transform:rotate(270deg); } }

.transcript-search { display:flex; align-items:center; gap:.4rem; margin:.15rem 0 .65rem; }
.transcript-search input { min-width:15rem; flex:1 1 18rem; }
.transcript-search button { padding:.38rem .6rem; font:inherit; font-size:.82rem; }
.search-count { min-width:5.5rem; color:var(--muted); font-size:.8rem; white-space:nowrap; }
.search-label { color:var(--muted); font-size:.84rem; font-weight:700; }
.utterance-edit-button { border:1px solid #aac8da; border-radius:.28rem; background:#fff; color:var(--navy); padding:.28rem .5rem; font-size:.78rem; font-weight:700; }
.utterance-edit-button:disabled { cursor:not-allowed; opacity:.45; }
.utterance-actions { display:flex; align-items:center; gap:.25rem; margin-left:auto; }
.utterance-actions .play-button { margin-left:0; }

.google-login { display:inline-flex; justify-content:center; text-decoration:none; margin-top:.45rem; }
.local-login { margin-top:1rem; color:var(--muted); }
.local-login summary { cursor:pointer; font-weight:700; }
.local-login form { display:grid; gap:.7rem; margin-top:.7rem; }
.admin-shell { max-width:1200px; }
.admin-add { display:flex; flex-wrap:wrap; align-items:end; gap:.75rem; margin:.8rem 0 1.2rem; }
.admin-add label { display:grid; gap:.3rem; min-width:12rem; color:var(--muted); font-size:.84rem; font-weight:700; }
.admin-table { width:100%; border-collapse:collapse; font-size:.86rem; }
.admin-table th,.admin-table td { padding:.6rem; border-top:1px solid var(--line); text-align:left; vertical-align:top; }
.admin-table th { color:var(--muted); font-size:.76rem; text-transform:uppercase; }
.admin-table form { display:inline-flex; gap:.35rem; margin:.1rem .25rem .1rem 0; }
.admin-table input { width:6.5rem; }
@media (max-width:800px) { .admin-table { display:block; overflow-x:auto; } }
