:root{font-family:var(--font-sans);color:var(--ink);background:var(--app-bg);font-size:var(--text-ui);font-synthesis:none;font-optical-sizing:auto;line-height:1.5;--sidebar:264px}*{box-sizing:border-box}body{margin:0;background:var(--app-bg)}button,a,input,select,textarea{outline-offset:3px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--focus-outline);outline-offset:4px}button{display:inline-flex;gap:8px;align-items:center;justify-content:center;background:var(--card);border:1px solid var(--border);color:var(--secondary);cursor:pointer;font-weight:var(--weight-control)}button:hover{background:var(--accent-tint);border-color:var(--accent-surface)}button:disabled{opacity:.48;cursor:not-allowed}.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:var(--weight-control);box-shadow:var(--shadow-primary)}.primary:hover{background:var(--accent-hover);color:var(--on-accent);border-color:var(--accent-hover)}.quiet,.back-link{border-color:transparent;background:transparent;color:var(--accent-text)}.accent-outline{border-color:var(--accent);color:var(--accent-text)}a{color:inherit;text-decoration:none;transition:color var(--motion-fast) var(--ease)}a:hover{color:var(--accent-text)}.text-link{color:var(--secondary)}h1,h2,h3,p{margin:0}h1{font-size:var(--text-page-heading);line-height:1.2;letter-spacing:var(--track-h1);font-weight:var(--weight-heading)}h2{font-size:var(--text-card);line-height:1.4;letter-spacing:var(--track-h2);font-weight:var(--weight-heading)}h3{font-size:var(--text-note);font-weight:var(--weight-heading)}p{line-height:1.55}.muted{color:var(--muted)}small{font-size:var(--text-meta);color:var(--hint)}label{display:flex;flex-direction:column;gap:8px;color:var(--muted);font-size:var(--text-ui)}input,select,textarea{color:var(--ink);background:var(--input-bg);border:1px solid var(--input-border);min-width:0}input::placeholder,textarea::placeholder{color:var(--hint)}input[type=checkbox]{accent-color:var(--accent)}textarea{resize:vertical;line-height:1.65}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus-ring)}[hidden]{display:none!important}.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.brand{display:flex;gap:10px;align-items:center;color:var(--ink);font-size:var(--text-appbar);font-weight:var(--weight-brand);letter-spacing:-.03em}.brand:hover{color:var(--ink)}.brand img{display:block;border-radius:9px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
#shell{height:100dvh;display:flex;overflow:hidden}.sidebar{width:var(--sidebar);flex:0 0 var(--sidebar);background:var(--sidebar-bg);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:28px 20px 12px;gap:20px;position:relative;z-index:6;transition:width .15s,flex-basis .15s}.main-nav{display:flex;flex-direction:column;gap:6px}.main-nav button{border:none;background:transparent;justify-content:flex-start;font-weight:500}.main-nav button:hover{background:var(--accent-tint-hover)}.main-nav button.active{background:var(--accent-tint);color:var(--ink);font-weight:600}.main-nav small{margin-left:auto;white-space:nowrap}.sidebar-spacer{flex:1}.record-visit{white-space:nowrap}.account{border-top:1px solid var(--border);padding-top:12px;position:relative}.account summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none;padding:8px 0}.account summary::-webkit-details-marker{display:none}.avatar{width:32px;height:32px;flex:0 0 32px;border-radius:50%;background:var(--accent-surface);color:var(--accent-strong);display:grid;place-items:center;font-weight:600}.account-copy{flex:1;display:flex;flex-direction:column;min-width:0;gap:2px}.account-copy strong{font-size:var(--text-secondary);overflow:hidden;text-overflow:ellipsis}.chevron{color:var(--hint)}.account-popover{position:absolute;bottom:65px;left:0;width:244px;padding:8px;border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-popover);background:var(--popover);z-index:20;display:flex;flex-direction:column}.account-popover #account-email{overflow-wrap:anywhere;font-size:var(--text-meta);padding:10px;color:var(--hint)}.account-popover button,.account-popover a{background:transparent;border:none;text-align:left;justify-content:flex-start;padding:10px;font-size:var(--text-ui);border-radius:var(--radius-control);color:var(--secondary)}.account-popover a:hover{background:var(--accent-tint);color:var(--ink)}.account-popover #signout{border-top:1px solid var(--border);border-radius:0;margin-top:4px}/* Genie open (desktop, and the web from 1100px): the sidebar becomes a 68px icon rail. Anything that is not the brand, nav icons, Record or the avatar hides, so later sidebar additions (labels, cards) collapse too. */.helper-open{--sidebar:68px}.helper-open .sidebar{padding:22px 14px 18px;align-items:center}.helper-open .sidebar>:not(.brand,.main-nav,.sidebar-spacer,.record-visit,.account){display:none}.helper-open .brand span,.helper-open .main-nav :is(span,small),.helper-open .main-nav>:not(button),.helper-open .record-visit>*,.helper-open .account-copy,.helper-open .chevron{display:none}.helper-open .brand{justify-content:center}.helper-open .main-nav{align-items:center}.helper-open .main-nav button{justify-content:center;width:40px;height:40px;min-height:0;padding:0}.helper-open .main-nav .icon{width:24px;height:24px;padding:2px}.helper-open .record-visit{width:40px;height:40px;min-height:0;padding:0;border-radius:10px}.helper-open .record-visit::before{content:'';width:9px;height:9px;border-radius:50%;background:var(--on-accent)}.helper-open .account{align-self:stretch}.helper-open .account summary{justify-content:center}.workspace{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;container:workspace/inline-size}.workspace-header .toolbar{margin-left:auto}/* With the rail and Genie open the header keeps its labels down to a 900px main column, then drops the breadcrumb, then the status label. */@container workspace (max-width:899px){.helper-open .workspace-header .breadcrumb{display:none}}@container workspace (max-width:560px){.helper-open #connection-status{display:none}}.workspace-header{height:64px;flex:0 0 64px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--page-padding-x)}.breadcrumb{font-size:var(--text-meta);color:var(--hint)}.workspace-header button{background:transparent}#connection-status{font-size:var(--text-meta);color:var(--hint)}#account-mobile{display:none}.screen{padding:24px var(--page-padding-x) 24px;display:flex;flex-direction:column;gap:var(--section-gap);flex:1;min-height:0;overflow:hidden}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-shrink:0}.page-heading p{margin-top:8px}.cards{display:grid;grid-template-columns:1fr 1fr;gap:18px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-card);padding:var(--panel-padding)}.card>p:first-child{font-size:var(--text-secondary);font-weight:500;color:var(--muted);margin-bottom:14px}.card h2{margin-bottom:6px}.card .toolbar{margin-top:18px}.card .count{font-size:var(--text-recorded-heading);font-weight:var(--weight-heading);letter-spacing:var(--track-h1)}.table-card{display:flex;flex-direction:column;border:1px solid var(--border);background:var(--card);border-radius:var(--radius-card);overflow:hidden;min-height:0;flex:1}.table-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px;border-bottom:1px solid var(--table-border);font-weight:600}.table-title small{font-weight:400}.table-head,.table-row{display:grid;align-items:center;text-align:left;column-gap:12px;padding:14px 22px}.table-head{font-size:var(--text-secondary);color:var(--hint);text-transform:uppercase;letter-spacing:.06em;font-weight:600;background:var(--sidebar-bg);border-bottom:1px solid var(--table-border);flex-shrink:0}.table-row{font-size:var(--text-ui);width:100%;border:0;border-radius:0;border-bottom:1px solid var(--row-border);font-weight:400;min-height:56px}.table-row:hover{background:var(--row-highlight)}.table-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-row .patient-name{font-size:var(--text-patient);font-weight:600}.table-row>span:first-child{font-size:var(--text-note)}.table-row>span:last-child{text-align:right}.table-row small{display:block}.table-rows{flex:1;min-height:0;overflow:hidden}.patient-columns{grid-template-columns:28fr 22fr 18fr 20fr 12fr}.home-columns{grid-template-columns:30fr 30fr 22fr 18fr}.schedule-columns{grid-template-columns:14fr 28fr 34fr 24fr}.history-columns{grid-template-columns:22fr 28fr 20fr 18fr 12fr}.schedule-columns .time,.mono{font-family:var(--font-mono);font-weight:500;font-variant-numeric:tabular-nums}.row-next{background:var(--row-highlight)}.row-action{color:var(--accent-text);font-weight:500;font-size:var(--text-secondary)}.pagination{display:flex;align-items:center;gap:8px;border-top:1px solid var(--border);padding:10px 18px;font-size:var(--text-meta);color:var(--hint);flex-shrink:0;min-height:55px}.pagination span{flex:1}.pill{display:inline-flex;align-items:center;gap:7px;border-radius:999px;font-size:var(--text-secondary);font-weight:600;padding:5px 9px;white-space:nowrap;background:var(--recording-bg);color:var(--recording-text)}.pill:before{content:'';width:6px;height:6px;border-radius:50%;background:var(--recording-dot)}.pill.review{background:var(--review-bg);color:var(--review-text)}.pill.review:before{background:var(--review-dot)}.pill.signed{background:var(--signed-bg);color:var(--signed-text)}.pill.signed:before{background:var(--signed-dot)}.empty-state{padding:35px 24px;text-align:center;margin:auto;max-width:550px}.empty-state p{color:var(--hint);margin:8px 0 18px}.patient-filters{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.patient-filters #patient-search{margin-left:auto;width:250px}.filter-chips{display:flex;background:var(--accent-tint);border-radius:10px;padding:3px;gap:2px}.filter-chips button{border:0;background:transparent}.filter-chips button.active{background:var(--card);box-shadow:var(--shadow-chip);color:var(--accent-text)}.date-filter{flex-direction:row;align-items:center;font-size:var(--text-meta)}.date-filter input{width:135px}.week-controls{display:flex;align-items:center;gap:10px}.week-controls strong{font-size:var(--text-ui);font-weight:500}.week-controls label{margin-left:auto;flex-direction:row;align-items:center}.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.day-cell{flex-direction:column;gap:5px;padding:12px 6px;border-radius:var(--radius-control);background:var(--card);font-weight:400}.day-cell strong{font-size:var(--text-appbar);font-weight:600}.day-cell.today{border-color:var(--accent)}.day-cell.active{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.day-cell.active small{color:var(--on-accent-muted)}.back-link{padding:0;justify-content:flex-start;width:max-content}.workspace-status{flex:0 0 auto;min-height:14px;padding:0 var(--page-padding-x) 10px;font-size:var(--text-meta);color:var(--hint)}.workspace-status:has(p:empty){display:none}
.visit-screen{gap:14px;padding-top:6px}.title-row{display:flex;align-items:flex-start;gap:15px}.visit-identity{flex:1;min-width:0}.visit-identity #patient{padding:0 0 5px;border:0;border-bottom:2px dashed var(--accent-surface);border-radius:0;font-size:var(--text-visit-heading);font-weight:var(--weight-heading);width:100%;background:transparent;letter-spacing:var(--track-h1)}.visit-identity #patient.name-needed{background:var(--review-bg);border-color:var(--review-dot)}.visit-identity p{margin-top:6px;font-size:var(--text-meta)}.visit-identity #visit-type,.visit-identity select{margin-top:8px;background:transparent;border-color:var(--border);max-width:240px}.delete:hover{color:var(--danger);border-color:var(--danger)}.capture{display:flex;align-items:center;gap:16px;padding:16px;border:1px solid var(--border);border-radius:var(--radius-card);background:var(--card);flex-shrink:0}.capture>button.primary,.capture>.stop{white-space:nowrap}.capture-copy{flex:1}.capture-copy h2{font-size:var(--text-card);font-weight:var(--weight-heading)}.capture-copy p{font-size:var(--text-meta);color:var(--hint);margin-top:4px;max-width:450px}.capture-input{display:flex;flex-direction:column;gap:4px;text-align:right;align-items:flex-end;font-size:var(--text-label);color:var(--hint)}#record-time{font-size:var(--text-clock);line-height:1;font-family:var(--font-mono);font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink)}.capture meter{height:4px;width:75px}.stop{background:var(--danger-fill);color:var(--on-accent);border-color:var(--danger-fill)}.capture #recover:disabled{display:none}.document{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--card);display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.editor-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;gap:10px;border-bottom:1px solid var(--border);flex-shrink:0}.tabs{display:flex;gap:3px}.tabs button{border:0;background:transparent;white-space:nowrap}.tabs button[aria-selected=true]{background:var(--accent-tint);color:var(--accent-strong);font-weight:600}.editor-tools{display:flex;gap:6px;align-items:center}.editor-tools button{white-space:nowrap}.editor-tools select{max-width:100px}.document-pane{flex:1;min-height:0;overflow:hidden;padding:20px 24px}.document-pane #transcript{border:none;outline:0;background:transparent;resize:none;padding:0;width:100%;height:100%;min-height:120px;font-size:var(--text-note);line-height:1.7}.document-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--border);padding:12px 18px;flex-shrink:0}.document-footer>span{font-size:var(--text-meta);color:var(--hint)}.note-actions{display:flex;gap:10px;align-items:flex-start;margin-bottom:20px}.review-banner{background:var(--review-bg);color:var(--review-text);padding:10px 14px;border-radius:var(--radius-control);font-size:var(--text-secondary);flex:1}.note-actions button{white-space:nowrap}.note-prose{font-size:var(--text-note);line-height:1.7}.note-prose section{margin-bottom:22px}.note-prose h3,.note-section label{font-size:var(--text-meta);font-weight:var(--weight-heading);letter-spacing:.06em;text-transform:uppercase;color:var(--hint);margin-bottom:8px}.note-prose p{white-space:pre-wrap;line-height:1.7}.detail-check{display:inline;padding:0 2px;background:var(--highlight);border:0;border-bottom:2px solid var(--highlight-border);border-radius:3px;font-weight:inherit;color:inherit;line-height:inherit;text-align:left}.detail-check.confirmed{background:var(--signed-bg);border-color:var(--signed-dot)}.detail-check:hover{background:var(--highlight-hover)}.detail-check:disabled{opacity:1}.note-section textarea{width:100%;min-height:120px;margin-bottom:14px;resize:vertical}.section-letter{display:none}.size-13 .note-prose,.size-13 textarea{font-size:var(--text-secondary)}.size-17 .note-prose,.size-17 textarea{font-size:var(--text-card)}.size-19 .note-prose,.size-19 textarea{font-size:19px}.document-types{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0 24px}.document-types button{padding:15px;text-align:left;justify-content:flex-start;flex-direction:column;align-items:flex-start;font-weight:600}.document-types small{font-weight:400}.attachment-toolbar{display:flex;gap:10px;border-top:1px solid var(--border);padding-top:16px;align-items:center}.attachment-toolbar select{flex:1}.attachments textarea{width:100%;height:200px;margin-top:10px}.attachments #attachment-empty{margin-top:14px;font-size:var(--text-secondary)}.attachments #document-draft{height:230px}.attachments #drafted-document{margin-bottom:20px}#drafted-document h2{margin-right:auto}.review-sheet{overflow:hidden;flex:1;min-height:0;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-card);padding:28px}.review-footer{display:flex;gap:12px;align-items:center;justify-content:flex-end}.review-footer .back-link{margin-right:auto}.notice-card{background:var(--accent-tint);border:1px solid var(--accent-surface);border-radius:var(--radius-card);padding:16px;color:var(--secondary);font-size:var(--text-secondary)}
dialog{width:min(560px,calc(100vw - 32px));max-height:calc(100dvh - 48px);border:1px solid var(--border);border-radius:var(--radius-dialog);padding:28px;background:var(--popover);color:var(--ink);box-shadow:var(--shadow-dialog)}dialog::backdrop{background:var(--backdrop)}dialog h2{font-size:var(--text-phone-heading);margin-bottom:12px}dialog p{margin-bottom:16px}dialog label{margin-top:16px}dialog textarea{min-height:85px}dialog input,dialog select{width:100%}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.dialog-actions button:first-child{margin-right:auto}#clinical-dialog-error{color:var(--danger);font-size:var(--text-secondary);margin-top:14px}.export-choices{display:flex;flex-direction:column;gap:10px;margin:20px 0}.export-choices button{justify-content:flex-start}.setup-progress{display:flex;gap:5px;margin:18px 0}.setup-progress span{height:4px;background:var(--border);flex:1;border-radius:2px}.setup-progress .active{background:var(--accent)}.choice-card{display:block;border:1px solid var(--border);border-radius:var(--radius-card);padding:16px;margin-top:12px}.choice-card.active{border-color:var(--accent);background:var(--row-highlight)}#setup-content audio{width:100%;margin-top:16px}.settings-tabs{display:flex;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-control);padding:4px;gap:4px}.settings-tabs button{flex:1;border:0;background:transparent;color:var(--muted);white-space:nowrap;font-weight:500;justify-content:center}.settings-tabs .active{background:var(--accent-tint);color:var(--accent-strong);font-weight:600}.settings-content{overflow:hidden;min-height:0;display:flex;flex-direction:column;gap:16px}.settings-row{display:flex;gap:16px;align-items:center;padding:16px 0;border-bottom:1px solid var(--border)}.settings-row>div{flex:1}.settings-row p{font-size:var(--text-secondary);color:var(--hint);margin-top:4px}.settings-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-card);padding:var(--panel-padding)}.settings-card h2{margin-bottom:8px}.settings-card+.settings-card{margin-top:16px}#phone-tabs{display:none}.sr-only{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden}
@media(max-width:1250px){.screen{padding-left:var(--page-padding-x);padding-right:var(--page-padding-x)}.workspace-header{padding:0 var(--page-padding-x)}.patient-filters .date-filter,.patient-filters #clear-filters{display:none}.patient-filters #patient-search{width:210px}.table-row,.table-head{padding-left:16px;padding-right:16px}.capture{gap:10px}.editor-tools select{display:none}}
@media(max-width:1000px) and (min-width:761px){:root{--sidebar:76px}.sidebar{padding:28px 12px 12px}.sidebar-label,.today-card,.sidebar .nav-icon~small{display:none}.sidebar .brand span,.sidebar .main-nav span,.sidebar .main-nav small,.sidebar .record-visit span,.sidebar .account-copy,.sidebar .chevron{display:none}.sidebar .brand,.sidebar .main-nav button,.sidebar summary{justify-content:center}.helper-open .screen{padding-left:18px;padding-right:18px}.helper-open .cards{gap:10px}.helper-open .card{padding:16px}.helper-open .table-row,.helper-open .table-head{font-size:var(--text-meta);gap:8px;padding:12px}.helper-open .capture-copy{display:none}.helper-open .patient-columns{grid-template-columns:34fr 24fr 24fr 18fr}.helper-open .patient-columns>:nth-child(2){display:none}.helper-open .editor-toolbar{flex-wrap:wrap}.helper-open .visit-identity #patient{font-size:var(--text-settings-heading)}}
@media(max-width:760px){#shell{display:block}.sidebar{display:none}.workspace{height:100%}.workspace-header{height:52px;padding:0 20px}.workspace-header .breadcrumb{font-size:var(--text-note);font-weight:var(--weight-heading);color:var(--accent-text)}#account-mobile{display:inline-flex}.screen{padding:12px 20px 20px;gap:20px;overflow:auto}h1{font-size:var(--text-phone-heading)}.page-heading{gap:12px}.page-heading p{font-size:var(--text-secondary)}.cards{grid-template-columns:1fr;gap:12px}.card{padding:20px;border-radius:var(--radius-card)}.card.next-appointment{background:var(--accent);color:var(--on-accent)}.card.next-appointment p,.card.next-appointment small,.card.next-appointment .muted{color:var(--on-accent-muted)}.next-appointment .primary{background:var(--on-accent);color:var(--accent);border-color:var(--on-accent)}.next-appointment .quiet{color:var(--on-accent)}.table-card{flex:0 0 auto;min-height:260px;border-radius:var(--radius-card)}.table-head{font-size:var(--text-secondary);padding:12px}.table-row{padding:14px 12px;font-size:var(--text-ui);min-height:64px;column-gap:8px}.table-rows{min-height:180px;flex:none}.patient-columns{grid-template-columns:1fr 110px}.patient-columns>:nth-child(2),.patient-columns>:nth-child(3),.patient-columns>:last-child{display:none}.patient-columns .pill{font-size:var(--text-label)}.home-columns{grid-template-columns:1fr 90px}.home-columns>:nth-child(2),.home-columns>:nth-child(3){display:none}.home-columns>.row-action{font-size:var(--text-meta)}.patient-filters{display:flex;flex-direction:column;align-items:stretch;gap:12px}.patient-filters #patient-search{width:100%;margin:0}.filter-chips{justify-content:space-between}.week-controls{flex-wrap:wrap;gap:7px}.week-controls label{display:none}.week-controls strong{font-size:var(--text-meta)}.week-strip{gap:4px}.day-cell{padding:9px 2px;font-size:var(--text-label);gap:4px}.day-cell strong{font-size:var(--text-appbar)}.day-cell small{font-size:var(--text-label)}.schedule-columns{grid-template-columns:55px 1fr 100px}.schedule-columns>:nth-child(3){display:none}.schedule-columns .row-action{font-size:var(--text-label)}.history-columns{grid-template-columns:1fr 1fr 100px}.history-columns>:nth-child(2),.history-columns>:last-child{display:none}.history-columns .pill{font-size:var(--text-label)}.pagination{padding:10px;font-size:var(--text-label)}.workspace-status{padding:0 20px 5px;font-size:var(--text-label)}.visit-screen{gap:12px}.visit-identity #patient{font-size:var(--text-settings-heading)}.title-row{flex-wrap:wrap;gap:8px}.title-row .visit-identity{flex:1 0 100%}.title-row>.pill{margin-right:auto}.visit-identity #visit-type,.visit-identity select{max-width:48%}.capture{flex-wrap:wrap;gap:12px;padding:16px;border-radius:var(--radius-card)}.capture>button.primary,.capture>.stop{flex:1}.capture-copy{flex:1 0 100%;order:3}.capture-input{flex:0 0 100px}.capture #recover{order:4}.document{flex:0 0 auto;min-height:430px;overflow:visible}.editor-toolbar{padding:10px;flex-wrap:wrap;gap:8px}.tabs{width:100%;justify-content:space-between}.editor-tools{margin-left:auto}.document-pane{min-height:240px;overflow:visible;padding:18px}.document-pane #transcript{min-height:210px}.document-footer{flex-wrap:wrap;border-radius:0 0 var(--radius-card) var(--radius-card);padding:12px}.document-footer>span{font-size:var(--text-label)}.document-footer .toolbar{margin-left:auto;gap:6px}.note-actions{flex-wrap:wrap}.review-banner{flex:1 0 100%;font-size:var(--text-meta)}.note-prose{font-size:var(--text-note)}.document-types{gap:8px}.document-types button{font-size:var(--text-secondary);padding:12px}.document-types small{font-size:var(--text-label)}.attachment-toolbar{flex-wrap:wrap}.attachment-toolbar select{width:100%}.review-sheet{overflow:visible;flex:0 0 auto;padding:20px;border-radius:var(--radius-card)}.review-footer{flex-wrap:wrap}.settings-content{overflow:visible}.settings-row{align-items:flex-start}.settings-card{padding:18px}}
@media print{body{background:white}#shell,.entry,dialog{display:none!important}#print-document{display:block!important;padding:20px;color:black;font:12pt/1.6 serif}#print-document h1{font-size:22pt}#print-document h2{margin-top:20px;font-size:13pt}#print-document p{white-space:pre-wrap}#print-document .print-meta{font-size:10pt;color:var(--muted)}}

.phone-next{display:none}@media(max-width:760px){.phone-next{display:block}.phone-next h2{font-size:var(--text-phone-heading)}.phone-next .primary{width:100%;font-size:var(--text-card);font-weight:var(--weight-control)}.phone-next~.week-strip{display:none}.phone-next~.week-controls{order:0}.phone-next~.week-controls label{display:none}.account-plan{max-height:30px;overflow:hidden}}

.document-pane #transcript:focus{box-shadow:none}

.capture meter{accent-color:var(--level)}.capture meter::-webkit-meter-optimum-value{background:var(--level)}.capture meter::-moz-meter-bar{background:var(--level)}.card .count{line-height:1}.main-nav button,.tabs button{font-weight:500}.main-nav button.active,.tabs button[aria-selected=true]{font-weight:600}

.preferences-layout{display:grid;grid-template-columns:176px minmax(0,1fr);gap:var(--section-gap);min-height:0;flex:1}
.preferences-tabs{display:flex;flex-direction:column;gap:4px;padding:4px;background:var(--sidebar-bg);border:1px solid var(--border);border-radius:var(--radius-card);align-self:start}
.preferences-tabs button{justify-content:flex-start;border-color:transparent;background:transparent;font-weight:500}
.preferences-tabs button[aria-selected=true]{background:var(--accent-tint);color:var(--accent-strong);font-weight:600}
.preferences-layout .settings-card{margin:0}
.settings-card>label,.settings-card>button,.settings-card>.toolbar,.settings-card>p[role=status]{margin-top:var(--field-gap)}
.settings-card>p{line-height:1.65}.settings-card>button+button{margin-left:8px}
.preferences-layout .settings-card label{gap:8px}
#local-settings>.page-heading h1{font-size:var(--text-settings-heading)}

.capture-copy #record-error{color:var(--danger);font-size:var(--text-secondary);line-height:1.5;margin-top:8px}

.note-progress{display:flex;align-items:center;gap:12px;flex-shrink:0;padding:14px 20px;border-bottom:1px solid var(--border);background:var(--accent-tint);color:var(--accent-text)}
.note-progress>div{min-width:0;flex:1}.note-progress strong{font-size:var(--text-ui)}.note-progress p{font-size:var(--text-secondary);color:var(--muted);margin-top:2px}
#note-progress-time{font-size:var(--text-meta);white-space:nowrap;color:var(--muted);font-variant-numeric:tabular-nums}
.progress-spinner,.is-processing::before{content:'';display:inline-block;width:18px;height:18px;flex:0 0 18px;border:2px solid var(--accent-surface);border-top-color:var(--accent);border-radius:50%;animation:docvoc-progress-spin .8s linear infinite}
#generate.is-processing{opacity:1;background:var(--accent-tint);cursor:progress}
.note-progress[data-state=done]{background:var(--sidebar-bg)}.note-progress[data-state=error]{background:var(--sidebar-bg);color:var(--danger)}
.note-progress[data-state=done] .progress-spinner,.note-progress[data-state=error] .progress-spinner{animation:none;border:0;display:grid;place-items:center;font-weight:var(--weight-heading)}
.note-progress[data-state=done] .progress-spinner::before{content:'✓'}.note-progress[data-state=error] .progress-spinner::before{content:'!'}
@keyframes docvoc-progress-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.sidebar{transition:none}.progress-spinner,.is-processing::before{animation:none}}
@media(max-width:760px){.note-progress{padding:12px;gap:10px}.note-progress p{line-height:1.4}#note-progress-time{font-size:var(--text-label)}}

.patient-matches{margin-top:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--accent-tint);font-size:var(--text-meta)}.patient-matches p{margin:0 0 6px}.patient-matches button{margin-right:8px}

/* Elements the app creates at runtime: session banner, inline sign-in, tab lock, first-run choice cards, desktop reset. */
.session-banner{position:fixed;top:0;left:0;right:0;z-index:30;display:flex;align-items:center;gap:12px;padding:10px var(--page-padding-x);background:var(--review-bg);color:var(--review-text);border-bottom:1px solid var(--review-dot);box-shadow:var(--shadow-popover);font-size:var(--text-secondary)}.session-banner span{flex:1;min-width:0}.session-banner button{white-space:nowrap}
#session-signin .dialog-body label,#tab-lock .dialog-body p{display:block}#session-signin input[readonly]{background:var(--sidebar-bg);color:var(--muted)}#session-error{color:var(--danger);font-size:var(--text-secondary);margin-top:12px}#session-error:empty{display:none}.tab-lock .dialog-actions{justify-content:flex-end}.tab-lock .dialog-actions button:first-child{margin-right:0}
.choice-cards{display:grid;gap:10px;margin-top:12px}.choice-cards .choice-card{width:100%;height:auto;margin-top:0;text-align:left;align-items:flex-start;flex-direction:column;gap:4px;white-space:normal}.choice-card[aria-checked=true]{border-color:var(--accent);background:var(--accent-tint);box-shadow:0 0 0 1px var(--accent) inset}.choice-card p{margin:0;font-size:var(--text-secondary)}#setup-content progress{width:100%;height:6px;margin-top:14px;accent-color:var(--accent)}
#desktop-start-fresh{margin-top:8px;width:100%}
@media(max-width:760px){.session-banner{flex-wrap:wrap;padding:10px 16px}.session-banner button{flex:1 0 100%}}
.capture-copy #recheck-processing{margin-top:8px;padding:4px 10px;font-size:var(--text-meta)}
/* Dark theme: tokens do most of the work. Recording surfaces stay navy with a hairline, and native pickers use the popover ground. */
select option{background:var(--popover);color:var(--ink)}
/* Pause (#pause) sits after Stop: secondary while recording, primary Resume (aria-pressed) while paused. A paused visit leaves the navy
   band for the card ground: frozen amber clock with a blinking colon, Stop as a danger outline, "Paused · mm:ss" in place of the meter. */
.capture>.pause{--control-size:var(--control-record);display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font-size:var(--text-card);background:var(--card);border-color:var(--input-border);color:var(--ink)}
.capture>.pause:hover{background:var(--accent-tint);border-color:var(--accent-surface);color:var(--ink)}
.capture>.pause.primary,.capture>.pause.primary:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.pause-icon,.chip-icon{font-size:.72em;letter-spacing:1px;line-height:1}.chip-icon{font-size:9px}.recording-chip:not(.paused) .chip-icon{color:var(--danger-fill)}
:root body.recording .capture[data-recording-state=paused]{background:var(--card);border-color:var(--highlight-border);color:var(--ink)}
.capture[data-recording-state=paused] #record-heading,.capture[data-recording-state=paused] #record-time{color:var(--review-text)}
.capture[data-recording-state=paused] .capture-copy p{color:var(--muted)}
.capture[data-recording-state=paused] .capture-copy #record-error{color:var(--danger)}
.capture[data-recording-state=paused] #finish,.capture[data-recording-state=paused] #finish:hover{background:var(--card);border-color:var(--danger);color:var(--danger)}
.capture[data-recording-state=paused] meter,.capture[data-recording-state=paused] .level-bars,.capture[data-recording-state=paused] .listen-caption{display:none}
.paused-pill{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;background:var(--review-bg);color:var(--review-text);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
/* Header chip while the recording visit is out of view; it returns to the visit. */
.recording-chip{display:inline-flex;align-items:center;gap:6px;min-height:0;padding:6px 12px;border-radius:999px;border:1px solid var(--danger-border);background:var(--danger-bg);color:var(--danger);font-size:12px;font-weight:500;line-height:1.3;white-space:nowrap;font-variant-numeric:tabular-nums}
.recording-chip:hover{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}
.recording-chip.paused,.recording-chip.paused:hover{border-color:var(--highlight-border);background:var(--review-bg);color:var(--review-text)}
/* A visit transcribed or written while another screen shows (the clinician may leave it): the chip leads back to it. */
.recording-chip.working,.recording-chip.working:hover{border-color:var(--accent-border,var(--border));background:var(--accent-tint);color:var(--accent-strong)}
#encounter-page.processing-elsewhere :is(#capture-progress,#processing-progress,#cancel-transcription){display:none!important}
#encounter-page.processing-elsewhere .document.is-transcribing #transcript-pane{animation:none;background:none}
/* Leaving a recording visit: Stay on the visit · spacer · Stop and save · Keep recording. */
.recording-guard{max-width:460px;padding:24px;border-radius:18px}.recording-guard h2{font-size:18px;font-weight:600}.recording-guard p{margin-top:8px;font-size:13.5px;line-height:1.6}
.recording-guard .guard-stop,.recording-guard .guard-stop:hover{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}
/* Platform differences (spec-platform): the keyboard shortcuts sheet, the web's storage-full banner, Privacy → Your data,
   the cloud-only processing note, the Windows device check and the Windows title bar (no traffic lights above the sidebar). */
.shortcuts-dialog{width:min(460px,calc(100vw - 32px));padding:24px}.shortcuts-head{display:flex;align-items:baseline;gap:12px}.shortcuts-head h2{margin:0;font-size:18px;font-weight:600}.shortcuts-spacer{flex:1}
.shortcut-rows{display:flex;flex-direction:column;gap:9px;margin-top:18px}.shortcut-row{display:flex;align-items:center;gap:6px}.shortcut-label{flex:1;margin-right:6px;font-size:13px;color:var(--muted)}
.keycap{padding:3px 8px;border:1px solid var(--border);border-radius:6px;background:var(--sunken);color:var(--ink);font:12px/1.4 var(--font-mono);white-space:nowrap}
@media(max-width:760px){#account-shortcuts{display:none}}
#connection-status[data-state=saved]{display:none}
.storage-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:6px;padding:10px 14px;border:1px solid var(--highlight-border);border-radius:var(--radius-control);background:var(--review-bg);color:var(--review-text);font-size:var(--text-secondary)}.storage-banner span{flex:1;min-width:min(220px,100%)}.storage-banner button{min-height:var(--control-compact);border-color:var(--highlight-border);background:var(--card);color:var(--review-text);font-weight:600}
.workspace-status:has(#storage-banner:not([hidden])){display:block}
.data-card .card-footer{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}
button.danger-outline,button.danger-outline:hover{border:1px solid var(--danger-border);background:var(--danger-bg);color:var(--danger)}
button.danger,button.danger:hover{border-color:var(--danger-fill);background:var(--danger-fill);color:var(--on-recording-red)}button.danger:disabled{opacity:.5}
.delete-data label{display:grid;gap:6px;margin-top:14px;font-size:var(--text-secondary);font-weight:500}.delete-data .dialog-actions{margin-top:20px}
.setting-hint{font-size:12.5px;color:var(--hint)}
.setup-level{height:8px;margin-top:14px;border-radius:4px;background:var(--border);overflow:hidden}.setup-level span{display:block;width:0;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--accent),var(--signed-dot));transition:width 90ms linear}
.setup-heard{margin-top:10px;font-size:13px;color:var(--muted)}.setup-heard.is-heard{color:var(--signed-text);font-weight:600}
#setup-content label{display:grid;gap:6px;margin-top:14px}
@media(prefers-reduced-motion:reduce){.setup-level span{transition:none}}
.desktop.windows .sidebar{padding-top:14px}
#web-privacy .settings-row strong{flex:0 0 180px}@media(max-width:760px){#web-privacy .settings-row{flex-direction:column;gap:2px}#web-privacy .settings-row strong{flex:none}}
/* Workspace layout from "DocVoc App.dc.html" (desktop and the web from 761px; phones keep phone.css). One shell: a 264px sidebar
   (brand, WORKSPACE, nav with icon tiles and counts, Current visit, the Today card, Record a visit, the account row), a 56px header
   on the card ground, and content padded 14px 26px inside a 1200px column. The page never scrolls: tables paginate to the rows that
   fit, and only the note, transcript and settings bodies scroll inside their cards. */
.sidebar-label{margin:0}.today-card{margin:0}.empty-mark{display:none}.progress-bar{display:none}.progress-strip{display:none;flex-direction:column;gap:6px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--accent-tint);color:var(--accent-strong);font-size:var(--text-secondary)}.progress-strip:has(>.transcribe-line:not([hidden])){display:flex}.progress-strip p{margin:0;color:var(--muted)}.progress-strip .transcribe-line{margin:0}.export-toast:empty{display:none}
@media(min-width:761px){
.sidebar{padding:22px 14px 18px;gap:0}
.sidebar .brand{padding:0 6px 24px;font-size:17px;gap:10px}.sidebar .brand img{width:30px;height:30px}
.sidebar-label{padding:0 10px 10px;font:500 10px/1.4 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--hint)}
.main-nav{gap:3px}
.main-nav button{--control-size:auto;min-height:0;gap:11px;padding:10px 11px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--secondary);font-size:13.5px;line-height:1.45;font-weight:500}
.main-nav button:hover{background:var(--row-highlight);border-color:transparent}
.main-nav button.active,.main-nav button.active:hover{background:var(--accent-tint);border-color:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--accent-strong);font-weight:500}
.nav-icon{display:grid;place-items:center;width:24px;height:24px;flex:0 0 24px;border-radius:7px;background:var(--row-highlight);border:1px solid var(--border);color:var(--muted);font-style:normal}
.nav-icon .icon{width:15px;height:15px;stroke-width:1.8}
.main-nav button.active .nav-icon{background:var(--accent-surface);border-color:transparent;color:var(--accent-strong)}
.main-nav small{font:500 11px/1 var(--font-mono);color:var(--hint)}
#current-visit-tag{font-size:10px;letter-spacing:.02em;color:var(--review-text)}#current-visit-tag.rec{color:var(--danger)}
.today-card{margin-top:22px;padding:14px;border:1px solid var(--border);border-radius:12px;background:var(--accent-tint)}
.today-label{font:500 10px/1.4 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--hint);margin-bottom:10px}
.today-card ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.today-card li{display:flex;gap:0;font-size:12.5px;line-height:1.5;color:var(--muted);min-width:0}.today-card li time{flex:0 0 44px;font:500 11.5px/1.65 var(--font-mono);color:var(--hint)}.today-card li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.today-more{--control-size:auto;min-height:0;margin-top:8px;padding:0;border:0;background:transparent;color:var(--accent-text);font-size:12px;font-weight:500}.today-more:hover{background:transparent;color:var(--accent-text-hover)}
.record-visit{--control-size:auto;min-height:0;padding:12px 10px;border-radius:11px;font-size:13px;font-weight:600;gap:9px;background:var(--accent);border-color:var(--accent)}
.record-visit::before{content:'';width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:var(--on-accent)}
.account{margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}.account summary{padding:0 10px;gap:10px}
.account .avatar{width:32px;height:32px;flex:0 0 32px;border-radius:9px;background:var(--row-highlight);border:1px solid var(--border);color:var(--ink);font-size:12px;font-weight:600;letter-spacing:.02em}
.account-copy strong{font-size:13px;font-weight:500;color:var(--ink)}.account-copy small{font-size:11.5px;color:var(--hint)}.chevron{font-size:10px}
.account-popover{bottom:calc(100% + 8px);left:0;width:236px;padding:8px;border-radius:13px;gap:0}
.account-head{display:flex;flex-direction:column;gap:2px;padding:8px 10px 10px}.account-head strong{font-size:13px;font-weight:600;color:var(--ink)}
.account-popover .account-head #account-email{padding:0;font:400 11px/1.4 var(--font-mono);color:var(--hint)}
.account-popover button,.account-popover a{--control-size:auto;min-height:0;padding:9px 10px;border-radius:8px;font-size:13px;font-weight:400;color:var(--body)}
.account-popover button:hover,.account-popover a:hover{background:var(--row-highlight);color:var(--ink)}
.account-popover #signout,.account-popover #desktop-forget{border-top:0;margin-top:0;border-radius:8px;color:var(--danger)}
.account-divider{border:0;border-top:1px solid var(--border);margin:6px 10px}
.workspace-header{height:auto;min-height:56px;flex:0 0 auto;padding:12px 20px;background:var(--card);border-bottom:1px solid var(--border);gap:12px}
.breadcrumb{font:500 11.5px/1.4 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--hint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.workspace-header .toolbar{gap:8px;flex-wrap:nowrap}
#connection-status{padding:6px 11px;border:1px solid var(--border);border-radius:999px;background:var(--sunken);font-size:12px;line-height:1.3;color:var(--hint);white-space:nowrap}
.mode-chip{position:relative;display:inline-flex;flex-direction:row;align-items:center;gap:8px;padding:6px 12px;border:1px solid color-mix(in srgb,var(--accent) 32%,transparent);border-radius:999px;background:var(--accent-tint);color:var(--accent-strong);font-size:12px;line-height:1.3;font-weight:400;white-space:nowrap;cursor:pointer}
.mode-chip::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--accent)}.mode-chip b{font-weight:600;color:var(--accent-text)}
.mode-chip:has(select:disabled){opacity:.6;cursor:not-allowed}.mode-chip:has(select:focus-visible){outline:3px solid var(--focus-outline);outline-offset:3px}
.mode-chip.single select{pointer-events:none}.mode-chip select{position:absolute;inset:0;width:100%;height:100%;opacity:0;appearance:none;cursor:inherit;border:0;padding:0}
#desktop-upload{--control-size:auto;min-height:0;gap:8px;padding:7px 13px;border-radius:9px;background:var(--card);border:1px solid var(--border);color:var(--ink);font-size:12.5px;line-height:1.3;font-weight:400;white-space:nowrap}
#desktop-upload::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--signed-dot)}#desktop-upload.syncing::before{background:var(--review-dot)}
.screen{padding:14px max(26px,calc((100% - 1200px) / 2));gap:12px}
.screen h1,#local-settings>.page-heading h1{font-size:26px;line-height:1.25;letter-spacing:-.02em;font-weight:600}
#schedule-page>.page-heading h1,#home-page>.page-heading h1,#patient-page>.page-heading h1{font-size:30px}
.page-heading{align-items:flex-end}.page-heading p{margin-top:7px;font-size:13.5px;color:var(--muted)}
.cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start;flex-shrink:0}
.card{padding:11px 14px;border-radius:var(--radius-panel)}
.card .eyebrow-mono,.home-card>p:first-child{font:500 10px/1.5 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--hint);margin:0 0 6px}
.home-card h2{font-size:17px;font-weight:600;letter-spacing:-.01em;margin:0}.home-card p.muted{font-size:12px;margin-top:2px}
.card.next-appointment{background:var(--accent-tint)}
.home-card .toolbar{margin-top:10px;gap:12px}.home-card .toolbar .primary{--control-size:auto;min-height:0;padding:8px 14px;border-radius:9px;font-size:12.5px;font-weight:600}
.home-card .quiet{--control-size:auto;min-height:0;padding:0;font-size:12.5px;font-weight:500}.home-card .quiet:hover{background:transparent;color:var(--accent-text-hover)}
button.home-card{display:block;width:100%;text-align:left;font-weight:400;color:var(--ink)}button.home-card:hover{border-color:var(--accent-surface);background:var(--card)}
.home-card .count{display:block;font:500 24px/1.2 var(--font-mono);letter-spacing:0;color:var(--ink);margin:0}
.table-card{flex:1 1 auto;min-height:96px;border-radius:var(--radius-panel)}
.table-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 20px;font-size:15px;font-weight:600;letter-spacing:-.01em}
.table-title small{font:400 11px/1.4 var(--font-mono);color:var(--hint);letter-spacing:.02em}
.table-head{padding:12px 20px;font:500 10px/1.4 var(--font-mono);letter-spacing:.12em;background:transparent;color:var(--hint)}
.table-row{min-height:0;padding:13px 20px;font-size:14px;line-height:1.5}
#dashboard-page .table-row{padding:15px 20px}#home-page .table-row{padding:14px 20px}
.table-row .patient-name,.table-row>span:first-child{font-size:14px;font-weight:500}
.table-row>.mono,.table-row>.time,.table-row>span.mono:first-child{font-size:12.5px;font-weight:500;color:var(--secondary)}
.table-rows{flex:0 1 auto}.table-rows:has(>.empty-state){flex:1 1 auto;display:flex}
.table-row .row-action{font-size:12.5px;font-weight:500}
.table-row .pill{font-size:11.5px;padding:3px 9px;font-weight:500}
.status-dot{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}.status-dot::before{content:'';width:6px;height:6px;flex:0 0 6px;border-radius:50%;background:var(--review-dot)}.status-dot.recording::before{background:var(--recording-dot)}.status-dot.waiting{color:var(--review-text)}.status-dot.waiting::before{background:var(--review-dot)}
.home-columns{grid-template-columns:1.2fr 1.4fr 1fr auto}
.pagination{min-height:0;padding:12px 20px;gap:8px;border-top-color:var(--row-border)}
.pagination span{font:400 11px/1.4 var(--font-mono);color:var(--hint)}
.pagination button{--control-size:auto;min-height:0;padding:6px 12px;border-radius:8px;font-size:12.5px;font-weight:500;color:var(--secondary);background:var(--card)}
.pagination button:disabled{opacity:.35}
.empty-state{display:flex;flex-direction:column;align-items:center;gap:8px;margin:auto;padding:28px 20px;max-width:none;text-align:center}
.empty-mark{display:block;width:30px;height:30px;border:1px dashed var(--input-border);border-radius:9px}
.empty-state h2{font-size:14px;font-weight:600;letter-spacing:0}.empty-state p{margin:0;max-width:320px;font-size:12.5px;color:var(--muted)}
.empty-state button{--control-size:auto;min-height:0;margin-top:4px;padding:9px 14px;border-radius:9px;font-size:13px;font-weight:500}
/* Today while access is held carries the gate's card above its own list, so at 720px tall the list's empty state had no room and
   was clipped. It goes compact there instead: nothing scrolls, and nothing is hidden either (owner, 16 Sept 2026). */
#dashboard-page:has(#approval-card) .table-rows .empty-state{padding:10px 20px;gap:4px}
#dashboard-page:has(#approval-card) .table-rows .empty-mark{display:none}
.patients-heading{flex-wrap:wrap;gap:16px}.patients-heading>div:first-child{margin-right:auto}
.patients-heading .search-field{display:block;position:relative}.patients-heading #patient-search{min-width:220px;width:220px;height:auto;padding:10px 13px;border-radius:10px;font-size:13px}
.patients-heading #new-patient{--control-size:auto;min-height:0;padding:10px 16px;border-radius:10px;font-size:13px;font-weight:600}
.patient-filters{flex-shrink:0;gap:10px}.patient-filters #clear-filters{--control-size:auto;min-height:0;padding:6px 10px;font-size:12.5px}
.filter-chips button{--control-size:auto;min-height:0;padding:6px 12px;font-size:12.5px}
.date-filter input{--control-size:32px;font-size:12.5px}
.patient-columns{grid-template-columns:minmax(0,1.6fr) minmax(0,.9fr) minmax(0,1fr) minmax(0,1fr) auto}
.patient-columns.has-age{grid-template-columns:minmax(0,1.6fr) minmax(0,.6fr) minmax(0,1fr) minmax(0,1fr) auto}
.schedule-columns{grid-template-columns:110px minmax(0,1.3fr) minmax(0,1fr) 176px} /* a fixed action column keeps Reason aligned whatever each row's buttons */
.schedule-columns .patient-name{justify-content:flex-start;padding:0;border:0;background:transparent;min-height:0;color:var(--ink);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;text-align:left}
.schedule-columns .patient-name:hover{background:transparent;color:var(--accent-text)}
.table-row.schedule-columns>span:nth-child(3){color:var(--muted);font-size:13.5px}
.schedule-columns .toolbar{flex-wrap:nowrap;gap:6px;justify-content:flex-end}.schedule-columns .toolbar button{--control-size:auto;min-height:0;padding:6px 12px;border-radius:8px;font-size:12.5px}
.history-columns{grid-template-columns:130px minmax(0,1.3fr) minmax(0,1.1fr) minmax(0,.8fr) auto}
.row-next{background:var(--row-highlight)}
.week-controls{gap:10px;flex-shrink:0}.week-controls>button:is(:first-child,:nth-child(3)){--control-size:34px;width:34px;padding:0;border-radius:9px}
.week-controls strong{font:500 12.5px/1.4 var(--font-mono);color:var(--secondary)}
.week-controls .today-pill{--control-size:auto;min-height:0;padding:7px 14px;border-radius:9px;font-size:12.5px;background:var(--card)}.week-controls .today-pill.accent-outline{background:var(--accent-tint);border-color:color-mix(in srgb,var(--accent) 32%,transparent);color:var(--accent-strong)}
.week-controls label{font-size:12.5px;gap:10px}.week-controls label input{--control-size:34px;font-size:13px}
.week-strip{gap:8px;flex-shrink:0}.day-cell{--control-size:auto;min-height:0;padding:11px 8px;border-radius:12px;gap:3px;color:var(--ink)}
.day-cell>span{font-size:11.5px;color:var(--muted)}.day-cell strong{font:500 18px/1.3 var(--font-mono)}.day-cell small{font-size:10.5px;color:var(--hint)}
.day-cell.active>span,.day-cell.active small{color:var(--on-accent-muted)}.day-cell.today:not(.active){border-color:color-mix(in srgb,var(--accent) 45%,transparent)}
.schedule-actions{display:flex;gap:10px;align-items:center}
.schedule-actions .primary{--control-size:auto;min-height:0;padding:10px 16px;border-radius:10px;font-size:13px;font-weight:600}.schedule-actions button:not(.primary){--control-size:auto;min-height:0;padding:10px 14px;border-radius:10px;font-size:13px}
.patient-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 18px;padding:12px 18px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-panel);flex-shrink:0}
/* The patient's known allergies (consistency-13): a red banner above the record on every platform, wrapped in full, never truncated. */
.allergy-banner{margin:0;padding:10px 14px;border:1px solid var(--danger-border);border-left:4px solid var(--danger-fill);border-radius:var(--radius-control);background:var(--danger-bg);color:var(--danger);font-size:13.5px;line-height:1.5;white-space:normal;overflow-wrap:anywhere;flex-shrink:0}.allergy-banner strong{font-weight:600}
.patient-documents .patient-document{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:16px;align-items:center;padding:12px 20px;text-align:left}
.patient-summary dt{font:500 10px/1.5 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--hint)}.patient-summary dd{margin:3px 0 0;font-size:13.5px;color:var(--ink)}.patient-summary dd.unsigned{color:var(--review-text)}.patient-summary dd.mono{font-size:13px}
.record-subtitle{font-family:var(--font-mono);font-size:12.5px!important;letter-spacing:.02em}
.back-link{font-size:12.5px;padding-block:0;min-height:0}
#patient-page>.back-link,#local-settings>.back-link{margin-bottom:-4px}
/* A visit: two cards. Card A (identity, patient and reason, the capture row with the step rail, the processing strip) and Card B (the document). */
.visit-screen{gap:10px;padding-top:14px}
.visit-head{flex:0 0 auto;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-panel);overflow:hidden}
.visit-head .title-row{display:flex;align-items:center;gap:10px;padding:9px 16px;white-space:nowrap;min-width:0}
.visit-identity{flex:1;min-width:0;display:flex;align-items:center;gap:10px;position:relative}
.visit-identity #patient{flex:0 1 auto;min-width:60px;max-width:60%;height:auto;margin:0 0 0 -7px;padding:0 6px;border:1px solid transparent;border-radius:8px;background:transparent;font-size:20px;line-height:1.3;font-weight:600;letter-spacing:-.02em}
.visit-identity #patient:hover{border-color:var(--input-border)}.visit-identity #patient:focus{border-color:var(--accent)}
.visit-identity #patient.name-needed{background:var(--review-bg);border-color:var(--review-dot)}
.visit-identity #visit-meta{margin:0;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 11.5px/1.4 var(--font-mono);letter-spacing:.02em;color:var(--hint)}
.visit-head .title-row:has(#patient-matches:not([hidden])){flex-wrap:wrap}.visit-identity:has(#patient-matches:not([hidden])){flex-wrap:wrap;row-gap:6px}
.visit-identity .patient-matches{flex-basis:100%;display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;margin:0;padding:6px 6px 6px 12px;border-radius:9px;white-space:normal;font-size:12.5px}
.patient-matches p{margin:0;color:var(--secondary)}.patient-matches button{--control-size:auto;min-height:0;margin:0;padding:3px 8px;font-size:12.5px}.patient-matches .matches-close{margin-left:auto;padding:2px 8px;border:0;background:transparent;color:var(--hint);font-size:15px;line-height:1}
#draft{padding:5px 11px;font-size:12px;line-height:1.3;font-weight:500;gap:7px}
#delete{--control-size:auto;min-height:0;padding:6px 12px;border-radius:8px;line-height:1.3;border:1px solid var(--danger-border);background:var(--danger-bg);color:var(--danger);font-size:12px;font-weight:500}
#delete:hover{border-color:var(--danger)}
.visit-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:10px;padding:0 16px 11px}
.visit-fields :is(select,input){--control-size:auto;height:auto;padding:7px 10px;border-radius:8px;border:1px solid var(--input-border);background:var(--input-bg);font-size:13px;line-height:20px}
.visit-head .capture{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:7px 14px;border:0;border-top:1px solid var(--row-border);border-radius:0;background:transparent;color:var(--ink)}
body.recording .sidebar .record-visit{background:var(--accent);border-color:var(--accent);color:var(--on-accent);box-shadow:none}
.visit-head .capture>:is(#record,#finish,.pause){--control-size:auto;min-height:0;padding:8px 15px;border-radius:9px;font-size:12.5px;line-height:1.3;font-weight:600;gap:8px;box-shadow:none}
.capture>#record::before,.capture>#finish::before{content:'';width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:currentColor}
.capture>.pause{font-weight:500}.capture>.pause .pause-icon{font-size:8px}
/* Marker (#marker, M) sits after Pause while recording: notes the moment on the visit (consistency-06, as on the phones). */
.capture>.marker{--control-size:var(--control-record);display:inline-flex;align-items:center;gap:6px;white-space:nowrap;background:var(--card);border-color:var(--input-border);color:var(--ink)}
.capture>.marker:hover{background:var(--accent-tint);border-color:var(--accent-surface);color:var(--ink)}.capture>.marker[hidden]{display:none}
.visit-head .capture>.marker{--control-size:auto;min-height:0;padding:8px 13px;border-radius:9px;font-size:12.5px;line-height:1.3;font-weight:500;box-shadow:none}.marker-icon{font-size:.9em;line-height:1;color:var(--accent-text)}
.capture-input{flex:1 1 120px;min-width:30px;display:flex;flex-direction:row;align-items:center;gap:10px;text-align:left}
#record-time{font-size:16px;font-weight:500;color:var(--ink)}.clock-colon{margin:0 .3em}
#microphone-name,.capture-input .listen-caption{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden}
.capture-input meter{flex:1;min-width:30px;height:6px}
.capture-input .level-bars{flex:1;min-width:30px;height:6px;margin:0;gap:0;align-items:stretch;border-radius:3px;background:var(--border);overflow:hidden}
.capture-input .level-bars i{flex:1;width:auto;height:6px;border-radius:0;opacity:0;transform:none;background:linear-gradient(90deg,var(--accent),var(--level));transition:opacity var(--motion-fast) var(--ease)}
.capture-input .level-bars i.on,.recording .capture-input .level-bars i.on{opacity:1;transform:none;background:var(--accent)}
.capture[data-recording-state=interrupted] .capture-input .level-bars i.on{background:var(--review-dot)}
.paused-pill{padding:3px 9px;font-size:11.5px}
.step-rail{display:flex;align-items:center;gap:12px;flex:0 0 auto}
.step-rail>div{display:flex;align-items:center;gap:5px;font-size:11px;line-height:1.3;color:var(--hint);white-space:nowrap}
.step-rail b{display:grid;place-items:center;width:15px;height:15px;flex:0 0 15px;border-radius:50%;border:1px solid var(--input-border);font:500 9.5px/1 var(--font-mono);color:var(--hint)}
.step-rail .done b{background:var(--signed-bg);border-color:color-mix(in srgb,var(--signed-dot) 30%,transparent);color:var(--signed-text);font-size:8px}
.step-rail .active{color:var(--accent-strong);font-weight:500}.step-rail .active b{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.step-rail .rec-recording{color:var(--danger)}.step-rail .rec-recording b{background:var(--danger-fill);border-color:var(--danger-fill);color:var(--on-accent);font-size:7px}
.step-rail .rec-paused{color:var(--review-text)}.step-rail .rec-paused b{background:var(--review-bg);border-color:var(--review-dot);color:var(--review-dot);font-size:6px;letter-spacing:0}
.capture-copy{display:contents}
.capture-copy #record-heading,.capture-copy #mode-detail,.capture-copy #processing-progress{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden;margin:0}
.capture.is-blocked .capture-copy #mode-detail{position:static;clip:auto;width:auto;height:auto;overflow:visible;flex-basis:100%;order:9;font-size:12px;color:var(--muted);max-width:none}
.capture-copy #record-error{flex-basis:100%;order:10;margin:0;font-size:12.5px}
.capture-copy #recheck-processing,.capture>#cancel-transcription,.capture>#recover{--control-size:auto;min-height:0;margin:0;padding:6px 11px;border-radius:8px;font-size:12px;font-weight:500;border:1px solid var(--border);background:var(--card);color:var(--secondary)}
.capture>#cancel-transcription,.capture>#recover{order:8}
/* Stop and delete (journeys-17): quiet, text-sized and last in the capture panel, so it is never mistaken for Stop. It takes the
   danger colour only on hover and focus — visible when reached for, never competing with the red Stop for the eye. */
.capture>#stop-delete{--control-size:auto;min-height:0;margin:0;padding:6px 11px;border-radius:8px;font-size:12px;font-weight:500;border:1px solid var(--border);background:var(--card);color:var(--secondary);order:9;white-space:nowrap}
.capture>#stop-delete:hover,.capture>#stop-delete:focus-visible{color:var(--danger);border-color:var(--danger)}
/* The question that follows. It fits without scrolling at every size the app supports (owner, 16 Sept 2026). */
.objection-dialog{max-width:440px}
.objection-dialog .dialog-body{display:flex;flex-direction:column;gap:12px}
.objection-dialog p{margin:0;font-size:var(--text-secondary);line-height:1.55}
.objection-dialog #objection-cloud{color:var(--hint)}
.objection-dialog .dialog-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px 12px;margin-top:4px}
@media(max-width:560px){.objection-dialog{max-width:none;width:100%}.objection-dialog .dialog-actions{flex-direction:column-reverse;align-items:stretch}.objection-dialog .dialog-actions>*{justify-content:center;text-align:center;margin:0}}
@container workspace (min-width:1180px){
 .capture-copy #record-heading,.capture-copy #mode-detail{position:static;clip:auto;width:auto;height:auto;overflow:hidden;order:7;font-size:12px;line-height:1.4;font-weight:400;letter-spacing:0;color:var(--hint);white-space:nowrap;text-overflow:ellipsis;max-width:220px}
 .capture-copy #record-heading{color:var(--muted)}.capture.is-blocked .capture-copy #mode-detail{order:9;max-width:none;white-space:normal}
 .capture:not(.is-blocked) .capture-copy #mode-detail::before{content:'· ';color:var(--hint)} /* one line: heading · hint */
}
/* Row 4: one processing strip while transcribing or writing the note (and for its error), with a 4px bar. */
.visit-head .progress-strip,.visit-head .note-progress{flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:6px 16px 7px;line-height:1.3;border:0;border-top:1px solid var(--row-border);border-radius:0;background:var(--accent-tint);color:var(--accent-strong);animation:none}
.note-progress-copy{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;line-height:1.3}
.note-progress-copy strong,.visit-head .note-progress strong{font-size:12.5px;font-weight:600;color:var(--accent-strong)}
.visit-head #note-progress-time{font:400 11.5px/1.4 var(--font-mono);color:var(--muted)}
.note-progress-copy p,.visit-head .note-progress p{margin:0 0 0 auto;font-size:11.5px;color:var(--muted)}
.visit-head .note-progress .progress-spinner{width:14px;height:14px;flex:0 0 14px;font-size:10px}
.visit-head .note-steps{display:none}
.visit-head .note-retry{--control-size:auto;min-height:0;margin:0;padding:5px 11px;font-size:12px}
.visit-head .progress-bar,.progress-strip .transcribe-line{display:block;flex-basis:100%;height:4px;margin:0;border-radius:2px;background:var(--border);overflow:hidden;opacity:1}
.progress-bar i,.progress-strip .transcribe-line i{display:block;height:100%;border-radius:2px;background:var(--accent)}
.progress-bar i,.progress-strip .transcribe-line:not(.has-percent) i{width:30%;animation:strip-slide 1.2s linear infinite}
.note-progress.determinate .progress-bar i,.progress-strip .transcribe-line.has-percent i{width:var(--progress,0%);animation:none;transition:width 140ms linear}
.visit-head .note-progress[data-state=error]{background:var(--danger-bg);color:var(--danger)}.visit-head .note-progress[data-state=error] strong,.visit-head .note-progress[data-state=error] p{color:var(--danger)}
.note-progress[data-state=error] .progress-bar,.note-progress[data-state=done] .progress-bar,.note-progress[data-state=consent] .progress-bar{display:none}
/* Card B: the document. */
.document{flex:1 1 auto;min-height:180px;border-radius:var(--radius-panel)}
.editor-toolbar{padding:9px 14px;gap:6px;flex-wrap:nowrap}
.tabs{gap:4px}.tabs button{--control-size:auto;min-height:0;padding:7px 13px;border-radius:8px;font-size:13px;line-height:1.3;color:var(--muted)}
.tabs button[aria-selected=true]{background:var(--accent-tint);color:var(--accent-strong);font-weight:500}
.editor-tools{gap:6px}
.size-step{--control-size:auto;min-height:0;width:28px;height:30px;padding:0;border-radius:8px;font-size:12px;font-weight:500;color:var(--muted);background:var(--card)}
#generate{--control-size:auto;min-height:0;padding:7px 13px;border-radius:8px;font-size:13px;font-weight:500;background:var(--card);border:1px solid var(--border);color:var(--ink)}
#generate:hover{background:var(--accent-tint)}
.document-pane{padding:0}
#transcript-pane{padding:22px 24px}
#note-pane:not([hidden]){display:flex;flex-direction:column}
.note-actions{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;margin:0;padding:10px 18px;background:var(--review-bg);border-bottom:1px solid color-mix(in srgb,var(--review-dot) 26%,transparent)}
.note-actions .review-banner{display:flex;align-items:center;gap:10px;padding:0;background:transparent;border-radius:0;font-size:12.5px;line-height:1.45;color:var(--review-text)}
.note-actions .review-banner::before{content:'';width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:var(--review-dot)}
#edit-note{--control-size:auto;min-height:0;padding:6px 12px;border-radius:8px;border:1px solid color-mix(in srgb,var(--review-dot) 34%,transparent);background:transparent;color:var(--review-text);font-size:12.5px;font-weight:500}
#edit-note:hover{background:color-mix(in srgb,var(--review-dot) 10%,transparent)}
.note-actions.is-signed{background:var(--signed-bg);border-bottom-color:color-mix(in srgb,var(--signed-dot) 26%,transparent)}.note-actions.is-signed .review-banner{color:var(--signed-text)}.note-actions.is-signed .review-banner::before{background:var(--signed-dot)}
.note-actions.is-amending{background:var(--review-bg)}
#note-preview{display:flex;flex-direction:column;gap:16px;padding:18px 22px}
#note-preview>.empty-state{margin:auto}
.note-prose section{margin:0}.note-prose h3,.note-section label{font:500 10.5px/1.5 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--hint);margin-bottom:6px}
.note-prose p{font-size:15px;line-height:1.65;color:var(--body)}
.size-13 .note-prose p{font-size:13px}.size-17 .note-prose p{font-size:17px}.size-19 .note-prose p{font-size:19px}
#sections:not([hidden]){display:flex;flex-direction:column;gap:14px;padding:18px 22px}.note-section textarea{margin:0}
#signed-history{margin:0 22px 18px;font-size:13px;color:var(--muted)}
.speaker-lines:not([hidden]){display:flex;flex-direction:column;gap:14px}
.speaker-line{display:grid;grid-template-columns:48px minmax(0,1fr);column-gap:14px;row-gap:2px;margin:0}
.speaker-time{grid-column:1;grid-row:1/3;padding-top:2px;font:400 11.5px/1.5 var(--font-mono);color:var(--hint)}
.speaker{grid-column:2;font-size:11.5px;font-weight:600;line-height:1.4}.speaker.is-clinician{color:var(--accent-text)}.speaker.is-patient{color:var(--signed-text)}
.speaker-text{grid-column:2;font-size:14px;line-height:1.6;color:var(--body)}
.speaker-lines.untimed .speaker-line{grid-template-columns:minmax(0,1fr)}.speaker-lines.untimed :is(.speaker,.speaker-text){grid-column:1}
.speaker-lines>.quiet{align-self:flex-start;--control-size:auto;min-height:0;padding:4px 0;font-size:12.5px}
#documents-pane{padding:18px 22px}.documents-intro{font-size:13px}
.document-types{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;margin:14px 0 18px}
.document-types button{--control-size:auto;min-height:0;padding:16px;border-radius:12px;gap:4px;font-size:13.5px;font-weight:600;color:var(--ink)}
.document-types button:hover{border-color:color-mix(in srgb,var(--accent) 50%,transparent);background:var(--accent-tint)}
.document-types small{font-size:12.5px;color:var(--muted)}
.attachment-toolbar{padding-top:18px;gap:12px}.attachment-toolbar button,.attachment-toolbar select{--control-size:auto;min-height:0;height:auto;padding:9px 14px;border-radius:9px;font-size:13px}
.document-footer{padding:10px 16px;gap:10px;background:var(--sunken);border-top:1px solid var(--border)}
#save-status{margin-right:auto;font:400 11.5px/1.4 var(--font-mono);letter-spacing:.02em;color:var(--hint)}
#save-status.signed{color:var(--signed-text)}
.document-footer>.export-toast{font-size:12.5px;color:var(--signed-text)}
.document-footer .toolbar{gap:10px;flex-wrap:nowrap}
.document-footer .toolbar>button{--control-size:auto;min-height:0;padding:9px 15px;border-radius:9px;font-size:13px}
#export .icon,#phone-amend{display:none}
#review{font-weight:600}
.document-footer .amend{background:transparent;border:1px solid var(--border);color:var(--muted);font-weight:500}.document-footer .amend:hover{background:var(--row-highlight);color:var(--ink)}
/* Export: a menu above Export. */
#export-dialog.export-menu{position:fixed;inset:auto;margin:0;width:230px;max-width:calc(100vw - 32px);padding:7px;border:1px solid var(--border);border-radius:12px;background:var(--popover);box-shadow:var(--shadow-popover);z-index:40}
#export-dialog.export-menu h2{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden;margin:0}
#export-dialog.export-menu #close-export{display:none}
.export-menu .export-choices{margin:0;gap:0}
.export-menu .export-choices button{--control-size:auto;min-height:0;justify-content:flex-start;padding:9px 10px;border:0;border-radius:8px;background:transparent;font-size:13px;font-weight:400;color:var(--body)}
.export-menu .export-choices button:hover,.export-menu .export-choices button:focus-visible{background:var(--row-highlight);color:var(--ink)}
/* Dialogs: sign, amend and new patient. */
#clinical-dialog.narrow{width:min(460px,calc(100vw - 32px))}#clinical-dialog.patient-dialog{width:min(520px,calc(100vw - 32px));padding:26px}
#clinical-dialog h2{font-size:18px;font-weight:600;letter-spacing:-.01em;margin-bottom:6px}
.dialog-note{font-size:13px;color:var(--muted);margin:0 0 4px}
.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.field-grid label{margin-top:10px;gap:6px;font-size:12px;font-weight:600;color:var(--muted)}
.dialog-actions .spacer{flex:1}.dialog-actions button:first-child{margin-right:0}
.settings-tabs{align-self:stretch;justify-content:flex-start;padding:4px;gap:4px;border-radius:12px;flex-wrap:wrap;flex-shrink:0}
.settings-tabs button{flex:0 0 auto;--control-size:auto;min-height:0;padding:8px 14px;border-radius:9px;font-size:13px;line-height:1.3;font-weight:500;color:var(--muted)}
.settings-tabs button:hover{background:var(--row-highlight);color:var(--ink)}.settings-tabs .active,.settings-tabs .active:hover{background:var(--accent-tint);color:var(--accent-strong);font-weight:500}
#local-settings{gap:16px}#local-settings>*{width:100%;max-width:900px}#local-settings .settings-content{gap:16px}#local-settings .settings-card{padding:20px;border-radius:var(--radius-panel)}#local-settings .settings-card+.settings-card{margin-top:0}
#local-settings>.page-heading h1{font-size:26px}
.device-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px 18px;margin:14px 0 0;padding-bottom:16px;border-bottom:1px solid var(--border)}
.device-facts dt{font:500 10px/1.5 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--hint)}.device-facts dd{margin:4px 0 0;font-size:13.5px;color:var(--ink)}.device-facts dd.ok{color:var(--signed-text)}.device-facts dd.mono{font:500 13px/1.5 var(--font-mono)}
.device-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.device-actions button,#local-settings .settings-card>button,#local-settings .toolbar button{--control-size:auto;min-height:0;padding:9px 14px;border-radius:9px;font-size:13px}
#setup-dialog{width:min(540px,calc(100vw - 32px));padding:26px}
.setup-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.setup-head h2{margin:0;font-size:19px;font-weight:600;letter-spacing:-.01em}
.setup-count{margin:0;font:400 11px/1.4 var(--font-mono);letter-spacing:.04em;color:var(--hint)}.setup-progress{gap:6px;margin:14px 0 22px}.setup-progress span{height:3px}
#setup-content>h2{font-size:16px;font-weight:600;margin-bottom:6px}#setup-content>p.muted{font-size:13px;line-height:1.65}#setup-content>button{--control-size:auto;min-height:0;margin-top:16px;padding:10px 18px;border-radius:9px;font-size:13px;font-weight:600}
#setup-dialog .dialog-actions button{--control-size:auto;min-height:0;padding:10px 18px;border-radius:9px;font-size:13px}
}
/* The microphone test (desktop computer tab and web Settings → Privacy, phones included). The phone makes its button full size. */
.mic-test{display:flex;flex-direction:column;gap:10px;margin-top:16px;padding:14px;border:1px solid var(--border);border-radius:12px;background:var(--sunken)}
.mic-test-row{display:flex;align-items:center;gap:14px}.mic-test-row .primary{--control-size:auto;min-height:0;padding:9px 15px;border-radius:9px;font-size:12.5px;font-weight:600}
.mic-level{flex:1;height:6px;border-radius:3px;background:var(--border);overflow:hidden}.mic-level span{display:block;width:0;height:100%;border-radius:3px;background:var(--accent);transition:width 90ms linear}
.mic-clock{font:500 12px/1 var(--font-mono);color:var(--hint)}.mic-test audio{width:100%;height:36px}.mic-test p{margin:0;font-size:12.5px;color:var(--muted)}
/* Web and desktop at 761–1250px keep one line per row; the reason and date columns give way first. */
@media(min-width:761px) and (max-width:1250px){.patients-heading #patient-search{min-width:180px;width:180px}}
@media(min-width:761px) and (prefers-reduced-motion:reduce){.capture-input .level-bars i{transition:none}.import-bar i,.progress-bar i,.progress-strip .transcribe-line:not(.has-percent) i{width:50%;animation:none;background:repeating-linear-gradient(45deg,var(--accent) 0 6px,color-mix(in srgb,var(--accent) 55%,transparent) 6px 12px)}}
/* Documents → Import a recording (every width). */
.import-dialog{width:min(480px,calc(100vw - 32px));padding:24px}.import-dialog h2{font-size:19px;font-weight:600;margin-bottom:6px}.import-dialog .muted{font-size:13px;margin-bottom:14px}
.drop-zone{display:flex;flex-direction:column;align-items:center;gap:4px;margin:0;padding:34px 16px;border:1px dashed color-mix(in srgb,var(--accent) 45%,transparent);border-radius:12px;background:var(--accent-tint);cursor:pointer;text-align:center}
.drop-zone.over{border-style:solid;border-color:var(--accent)}.drop-zone input{position:absolute;opacity:0;width:1px;height:1px}.drop-zone strong{font-size:13.5px;color:var(--accent-strong)}.drop-zone span{font-size:12px;color:var(--muted)}.drop-zone:has(input:focus-visible){outline:3px solid var(--focus-outline);outline-offset:3px}
.import-busy{padding:14px 0 4px}.import-busy p{margin:0;font-size:13px}.import-bar{height:5px;margin:10px 0;border-radius:3px;background:var(--border);overflow:hidden}.import-bar i{display:block;width:30%;height:100%;border-radius:3px;background:var(--accent);animation:strip-slide 1.2s linear infinite}
.import-done{display:flex;flex-direction:column;gap:3px;padding:14px 16px;border-radius:12px;background:var(--signed-bg);color:var(--signed-text)}.import-done strong{font-size:13.5px}.import-done p{margin:0;font-size:12.5px}
#import-error{margin:10px 0 0;font-size:12.5px;color:var(--danger)}#import-error:empty{display:none}
@media(prefers-reduced-motion:reduce){.import-bar i{animation:none;width:50%}}
@keyframes strip-slide{from{transform:translateX(-100%)}to{transform:translateX(340%)}}
/* The review queue's banner is a line, not a flexible filler (.review-banner flexes inside the note-actions row). */
#review-page>.review-banner,.pg-flow>.review-banner{flex:0 0 auto}
@media(min-width:761px){.review-sheet{display:flex;flex-direction:column;gap:16px}} /* sections spaced as on the visit's note */
/* Table rows sit in overflow:hidden cards, so their keyboard focus ring is drawn inside the row. */
.table-rows>:focus-visible{outline:3px solid var(--focus-outline);outline-offset:-3px}
/* Settings → Privacy → Recording & microphone (web and phones). */
.mic-card>label{display:flex;flex-direction:column;gap:6px;max-width:420px}.mic-card select{width:100%}
@media(max-width:760px){.mic-test-row .primary{min-height:var(--tap,44px)}}
/* Settings: one shell for every tab (settings.css draws the account tabs alike). ← Home, the title and the tab bar keep their
   place; the tab's heading (eyebrow, title, line) and its cards scroll in .settings-content. Phones scroll the whole screen. */
#local-settings>.back-link,#local-settings>.page-heading,#local-settings>.settings-tabs{flex-shrink:0}
.settings-section-heading{flex-shrink:0}.settings-section-heading .eyebrow{margin:0 0 10px;font:650 10px/17px var(--font-sans);letter-spacing:.18em;text-transform:uppercase;color:var(--hint)}
.settings-section-heading h2{margin:0;font-size:17px;line-height:1.5;font-weight:600;letter-spacing:-.026em;color:var(--ink)}.settings-section-heading .muted{margin:6px 0 0;font-size:12px;line-height:1.65;color:var(--muted)}
@media(min-width:761px){#local-settings>.back-link{min-height:0;padding-block:0;border:0;margin:0;font-size:12.5px;line-height:20px}#local-settings>.page-heading{margin:0}#local-settings .settings-content{padding-bottom:24px}}
/* Settings → Privacy → Privacy & data retention: label and hint on the left, the switch or the full-width select beside or below. */
.retention-card>p.muted{margin-top:6px;font-size:12.5px;line-height:1.6}.retention-rows{display:flex;flex-direction:column;gap:16px;margin-top:16px}.retention-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.retention-label{flex:1 1 220px;min-width:0;display:flex;flex-direction:column;gap:2px}.retention-label :is(label,.retention-name){margin:0;font-size:13px;font-weight:500;color:var(--secondary)}.retention-label small{font-size:12px;line-height:1.5;color:var(--hint)}
.retention-row select{flex:1 1 100%;width:100%}
.switch{--control-size:auto;flex:0 0 auto;width:52px;min-height:0;height:28px;padding:3px;border:1px solid var(--input-border);border-radius:999px;background:var(--sunken);display:flex;justify-content:flex-start}
.switch i{width:20px;height:20px;border-radius:50%;background:var(--hint)}.switch.on{justify-content:flex-end;background:var(--accent);border-color:var(--accent)}.switch.on i{background:var(--on-accent)}.switch:disabled{opacity:.72;cursor:not-allowed}
.retention-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}
.retention-actions button,.kept-audio-row>button{--control-size:auto;min-height:0;padding:9px 14px;border-radius:9px;font-size:12.5px}
/* Keep audio after transcription on the desktop's Microphone card sits between the input and the microphone test. */
#desktop-panel-microphone .keep-audio-row{margin-top:14px}#desktop-panel-microphone #native-audio-where{margin:6px 0 0}
/* A visit's kept audio, above its transcript: what is kept and where, the player once opened, Play audio and Delete audio. */
.kept-audio:not([hidden]){display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 16px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--card)}
.kept-audio-copy{flex:1 1 180px;min-width:0;display:flex;flex-direction:column;gap:2px}.kept-audio-copy strong{font-size:13px;font-weight:600;color:var(--ink)}#kept-audio-meta{font-size:12px;line-height:1.5;color:var(--muted)}
#kept-audio-player{flex:1 1 260px;min-width:0;max-width:100%;height:36px}
/* Markers set while recording (any platform): time chips above the transcript; with kept audio each one plays from that moment. */
.visit-markers:not([hidden]){display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0 0 14px}.visit-markers-label{font-size:12px;font-weight:600;color:var(--muted)}
.visit-markers button{--control-size:auto;min-height:0;padding:5px 10px;border-radius:999px;font-size:12px;font-variant-numeric:tabular-nums;background:var(--accent-tint);border-color:var(--accent-surface);color:var(--accent-strong)}
.visit-markers button:disabled{background:var(--card);border-color:var(--border);color:var(--muted);opacity:1}
.kept-audio-actions{display:flex;flex-wrap:wrap;gap:8px}.kept-audio-actions button{--control-size:auto;min-height:0;padding:7px 12px;border-radius:8px;font-size:12.5px}
#clinical-dialog.consent-dialog .dialog-note{font-size:13.5px;line-height:1.6;margin-bottom:6px}
/* Patient record: the summary strip (allergies, medications, conditions, last note, record no., phone) and Edit details. */
.patient-summary{grid-template-columns:repeat(auto-fit,minmax(128px,1fr))}.patient-summary dd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.patient-summary dd.none{color:var(--hint)}
.record-actions{flex-wrap:nowrap;gap:10px}.history-fields{margin-top:6px;padding-top:6px;border-top:1px solid var(--border)}
/* First-run setup: Skip for now and Back on the left, Continue or Finish on the right. */
#setup-dialog .dialog-actions #setup-skip:has(+#setup-back:not([hidden])){margin-right:0}#setup-back{margin-right:auto}
@media(max-width:760px){.retention-actions button,.kept-audio-row>button,.kept-audio-actions button{min-height:var(--tap,44px)}}
/* Phones: the switch keeps its 52×28 track but takes a full tap target around it (44px iOS, 48px Android). */
@media(max-width:760px){.switch{position:relative;width:60px;height:44px;padding:8px 4px;border:0;background:transparent}.switch::before{content:'';position:absolute;inset:8px 4px;border:1px solid var(--input-border);border-radius:999px;background:var(--sunken)}.switch.on,.switch.on:hover{background:transparent}.switch.on::before{background:var(--accent);border-color:var(--accent)}.switch i{position:relative;margin:4px}:root.android .switch{height:48px;padding-block:10px}:root.android .switch::before{inset:10px 4px}}
/* ==== Design parity pass (DocVoc App.dc.html, 14 Sep 2026): desktop and the web from 761px; phones keep phone.css. ==== */
#current-visit-tag.signed{color:var(--signed-text)}.today-card li.today-empty{color:var(--hint)}
@keyframes message-out{to{opacity:0}}@media(prefers-reduced-motion:reduce){#message{animation:none!important}}
@media(min-width:761px){
/* The status line is a short-lived note floating above the page: it never takes the height the design gives the cards. */
.workspace{position:relative}.workspace-status{min-height:0;padding:0}.workspace-status:has(#storage-banner:not([hidden])){padding:0 var(--page-padding-x) 10px}
#message{position:absolute;left:50%;bottom:84px;z-index:40;transform:translateX(-50%);width:max-content;max-width:min(560px,calc(100% - 48px));margin:0;padding:9px 14px;border:1px solid var(--border);border-radius:10px;background:var(--popover);box-shadow:var(--shadow-popover);font-size:12.5px;line-height:1.5;color:var(--body);pointer-events:none;animation:message-out .3s ease 7s forwards}
#message:empty{display:none}
/* Settings drawn by the workspace (Recording & mic, Privacy, Calendar, Processing, This Mac): the account tabs' shell (settings.css) —
   a plain Settings H1, the tab bar, then the cards; the tab heading stays for screen readers only. */
#local-settings{gap:14px}#local-settings>.back-link{display:none}#local-settings .settings-content{gap:14px}
#local-settings .settings-tabs{gap:6px;border-radius:11px;background:transparent}#local-settings .settings-tabs button{padding:8px 14px;border-radius:8px;font-size:12.5px;line-height:1.2}
#local-settings .settings-section-heading{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
#local-settings .settings-card{padding:20px;border-radius:14px}#local-settings .settings-card>h2{font-size:15.5px;line-height:1.4;font-weight:600;letter-spacing:-.01em}
#local-settings .settings-card>h2+p.muted{margin-top:7px;font-size:12.5px;line-height:1.55}
}
/* Recording & mic and Privacy rows, as the design draws them: a 13px label on the left, the switch at the right, a list on its own line. */
.retention-rows{gap:14px}.recording-card .retention-rows{gap:12px;margin-top:14px}
.retention-label :is(label,.retention-name),.recording-card .retention-row>label{margin:0;font-size:13px;font-weight:400;color:var(--muted)}
.recording-card .retention-row>label{flex:1 1 200px;min-width:0}.retention-row .switch{margin-left:auto}
.recording-card .mic-test{gap:8px;margin-top:16px;padding:11px 14px}.mic-level{height:8px;border-radius:4px}.mic-level span{background:linear-gradient(90deg,var(--accent),var(--signed-dot))}
.recording-card .setup-again{--control-size:auto;align-self:flex-start;min-height:0;margin-top:16px;padding:9px 14px;border:1px solid color-mix(in srgb,var(--accent) 32%,transparent);border-radius:9px;background:var(--accent-tint);color:var(--accent-strong);font-size:12.5px;font-weight:500}
.recording-card{display:flex;flex-direction:column}
.retention-card .retention-actions{margin-top:18px;padding-top:16px}
/* Processing (desktop): the design's two choices side by side; the chosen one tinted with a dot. */
.processing-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:12px;margin-top:16px}
.processing-choices button{--control-size:auto;display:flex;flex-direction:column;align-items:stretch;gap:8px;min-height:0;padding:18px;border:1px solid var(--border);border-radius:12px;background:var(--card);text-align:left;font-weight:400;white-space:normal}
.processing-choices strong{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600;color:var(--ink)}.processing-choices strong::before{content:'';width:8px;height:8px;border-radius:50%;background:transparent}
.processing-choices span{font-size:12.5px;line-height:1.55;color:var(--muted)}
.processing-choices .selected{border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:var(--accent-tint)}.processing-choices .selected strong::before{background:var(--accent)}
.processing-choices button:disabled{opacity:.6;cursor:not-allowed}
.processing-card .processing-status{margin-top:14px;font-size:12.5px;color:var(--muted)}.processing-card .processing-tools{margin-top:6px;gap:4px}
.processing-card .processing-status:empty{display:none}
/* Tables, as the design spaces them: Home and Schedule rows 15px, Patients 14px, visit history 13px, on 18px lines; Patients' State
   is plain text. The filter row (not in the design) stays out of the way at rest: it opens while the search field is in use and
   stays while a filter is on (from a chip, the date or Genie), so it can be cleared. */
@media(min-width:761px){
.table-row{line-height:18px}#dashboard-page .table-row,.schedule-table .table-row{padding:15px 20px}#home-page .table-row{padding:14px 20px}.history-table .table-row{padding:13px 20px}
.table-row>.mono{font-size:12.5px;color:var(--muted)}#home-page .table-row .state{font-size:12.5px;color:var(--muted)}
.patient-columns.has-age{grid-template-columns:minmax(0,1.3fr) 90px minmax(0,1fr) minmax(0,1fr) auto}
#home-page:not(.filtering):not(:has(#patient-search:focus,#patient-search:not(:placeholder-shown),.patient-filters:focus-within,.patient-filters:hover)) .patient-filters{display:none}
/* Visit: the date sits 10px after the name; the recording guard keeps Stay on the visit to the left. */
.visit-identity{gap:4px}.recording-guard .dialog-actions #guard-stay{margin-right:auto}
}
/* Documents: the design's attach row — the attached documents (or, until one is attached, a line saying where they appear) filling
   the row, then Upload a document and Import a recording. */
.attachment-toolbar{flex-wrap:wrap;margin-top:20px}.attachments #attachment-empty{flex:1 1 220px;min-width:0;margin:0;padding:9px 12px;border:1px dashed var(--border);border-radius:9px;font-size:12.5px;line-height:1.45;color:var(--muted)}
.attachment-toolbar select{flex:1 1 220px;width:auto}
/* Dialogs as the design lays out their actions: the dismissive action on the left, the primary on the right. */
#import-cancel{margin-right:auto}#setup-dialog .dialog-actions #setup-skip{margin-right:auto}
/* Home cards on the design's rhythm: 11px 14px padding, a 13px label line, 22px title, 16px lines; counters on a 31px number line. */
@media(min-width:761px){
.home-cards .home-card{padding:11px 14px}.home-card>p:first-child{line-height:13px;margin:0 0 8px}.home-card h2{line-height:22px}
.home-card p.muted{line-height:16px;margin-top:4px}.home-card .toolbar .primary{line-height:15px}.home-card .count{line-height:31px;margin-top:-4px}.home-card .count+p.muted{margin-top:2px}
.home-table .table-title{padding:14px 20px}
}
/* New patient / Edit details, as the design's dialog: 11px labels 5px above 13px fields, 12px apart, the actions 20px below. */
#clinical-dialog.patient-dialog .field-grid label{margin-top:0;gap:5px;font-size:11px}
@media(min-width:761px){#clinical-dialog.patient-dialog :is(.field-grid,.lang-editor) :is(input,select){--control-size:auto;min-height:0;height:auto;padding:9px 11px;border-radius:9px;font-size:13px;line-height:1.35}}
#clinical-dialog.patient-dialog .dialog-note{margin:8px 0 18px}#clinical-dialog.patient-dialog .dialog-actions{margin-top:20px}
/* The account menu's edge and dividers read on both grounds (the dark popover sits close to --border). */
.account-popover{border-color:color-mix(in srgb,var(--ink) 13%,transparent)}.account-divider{border-top-color:color-mix(in srgb,var(--ink) 12%,transparent)}
/* Note templates: the visit bar's third field; a referral letter's greeting above its parts. */
.visit-fields:has(#note-template){grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) minmax(0,.8fr)}
/* Move to another patient (journeys-19): the fourth control of the visit bar, only while the note is unsigned. */
.visit-fields:has(#note-template):has(#move-visit:not([hidden])){grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) minmax(0,.7fr) auto}
.move-visit{--control-size:auto;height:auto;padding:7px 12px;border-radius:8px;border:1px solid var(--border);background:var(--card);color:var(--body);font-size:13px;line-height:20px;white-space:nowrap}
.move-visit:hover:not(:disabled){border-color:var(--accent);color:var(--accent-text)}
.move-visit[hidden]{display:none}
/* Where a visit has been moved (journeys-19): the record that it changed patient, under the note as addenda are. */
.note-moves:not([hidden]){display:flex;flex-direction:column;gap:8px;margin:0 22px 18px;padding:12px 16px;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-control);background:var(--sunken)}
.note-moves .visit-move{margin:0;font-size:13px;line-height:1.5;color:var(--body)}
.note-moves .visit-move strong{display:block;color:var(--ink)}
#note-preview>.note-greeting{margin:0;font-size:15px;color:var(--body)}
/* Addenda follow the signed note, each headed with its time and signer; the signed text above stays as signed. */
.note-addenda:not([hidden]){display:flex;flex-direction:column;gap:12px;margin:0 22px 18px;padding:14px 16px;border:1px solid var(--border);border-left:3px solid var(--signed-dot);border-radius:var(--radius-control);background:var(--sunken)}
.note-addenda .addendum p{margin:0;white-space:pre-wrap}.note-addenda .addendum h3{text-transform:none;letter-spacing:.02em}
.addendum-dialog textarea{min-height:140px;resize:vertical}
/* "Note signed · Undo": an inverse snackbar above the page for the 8 s Undo window, with a draining line for the time left. */
.snackbar{position:fixed;left:50%;bottom:96px;z-index:60;transform:translateX(-50%);display:flex;align-items:center;gap:18px;min-width:min(320px,calc(100vw - 32px));max-width:calc(100vw - 32px);padding:10px 10px 10px 18px;border-radius:10px;background:var(--ink);color:var(--card);box-shadow:var(--shadow-dialog);overflow:hidden;font-size:13.5px;line-height:1.4}
.snackbar[hidden]{display:none}
.snackbar-text{flex:1}
.snackbar .snackbar-action{height:34px;min-height:34px;padding:0 14px;border:0;border-radius:8px;background:transparent;color:var(--accent-surface);font-weight:var(--weight-control)}
.snackbar .snackbar-action:hover{background:color-mix(in srgb,var(--card) 12%,transparent)}
.snackbar-time{position:absolute;left:0;bottom:0;height:3px;width:100%;background:var(--accent);transform-origin:left}
.snackbar.counting .snackbar-time{animation:snackbar-drain var(--undo-ms,8000ms) linear forwards}
@keyframes snackbar-drain{to{transform:scaleX(0)}}
@media(prefers-reduced-motion:reduce){.snackbar.counting .snackbar-time{animation:none}}
@media(max-width:760px){.snackbar{bottom:calc(var(--tabbar,56px) + 12px)}body:has(#encounter-page:not([hidden])) .snackbar{bottom:calc(var(--tabbar,56px) + var(--signbar,69px) + 8px)}}
/* Out of date: the transcript or the template changed after the note was written (every platform, above the note). */
.note-stale{display:flex;flex-direction:column;gap:10px;margin:0 0 18px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--review-dot) 45%,transparent);border-left:4px solid var(--review-dot);border-radius:var(--radius-control);background:var(--review-bg);color:var(--review-text);font-size:13.5px;line-height:1.5}
.note-stale[hidden]{display:none}
.note-stale-text{margin:0;font-weight:var(--weight-control,600)}
.note-stale-actions{display:flex;flex-wrap:wrap;gap:8px}
.note-stale-actions button[hidden]{display:none}
.note-actions.is-stale .review-banner::before{background:var(--danger-fill)}
#review-page>.review-stale,.pg-flow>.review-stale{background:var(--review-bg);border-left:4px solid var(--review-dot)}
/* "Sign as it is": the inline tick an out-of-date note needs before Sign note signs it (above the note and in the review queue). */
.stale-tick{display:flex;flex-direction:row;align-items:flex-start;gap:10px;margin:0;color:var(--ink);font-size:13.5px;line-height:1.5;font-weight:var(--weight-control,600);cursor:pointer}
.stale-tick input{width:18px;height:18px;min-height:0;margin:2px 0 0;flex:0 0 18px;accent-color:var(--accent)}
.note-stale-tick:empty{display:none}
#review-page>.review-stale,.pg-flow>.review-stale{display:flex;flex-direction:column;gap:10px}
#review-page>.review-stale p,.pg-flow>.review-stale p{margin:0}
/* Sign-out when some work is only in this browser (app.js signOut): the choices stack, so the long labels fit a phone. */
.signout-dialog .dialog-actions{flex-direction:column;align-items:stretch;gap:8px}.signout-dialog .dialog-actions button{margin:0;justify-content:center;white-space:normal}.signout-list{margin:0 0 16px 20px;padding:0;list-style:disc}.signout-list li{margin:4px 0}.account-popover #browser-forget{font-size:var(--text-meta);color:var(--hint)}
/* The access gate (app.js showAccessHold / accessCard, journeys-02): waiting for approval, no plan, suspended… what happens next and whom to contact. */
/* One quiet line and its action, side by side while there is room: the held fact is said once per screen (hold-once). */
.approval-card{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-bottom:16px;padding:12px 16px}.approval-card h2{color:var(--ink)}.approval-card p{margin:0}
.approval-line{flex:1;min-width:220px;color:var(--ink);font-size:var(--text-secondary);font-weight:var(--weight-control)}.approval-status:empty{display:none}.approval-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}.approval-contact{color:var(--accent-text);font-weight:var(--weight-control);text-decoration:underline;text-underline-offset:3px}.approval-dialog .dialog-actions{flex-wrap:wrap;align-items:center;gap:8px 16px}.approval-dialog #approval-close{margin-left:auto}
@media(max-width:560px){.approval-dialog .dialog-actions{flex-direction:column;align-items:stretch}.approval-dialog .dialog-actions>*,.approval-dialog .dialog-actions button:first-child{justify-content:center;text-align:center;margin:0}.approval-dialog #approval-close{margin-left:0}}
/* Patient languages (clinical.js languageEditor, clinical-model.js LANGUAGES): Primary language, Other languages as chips, Other…; the list opens in the page flow. Phones restyle it in android.css / ios-browse.css. */
.language-section{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.language-heading{margin:0 0 10px;font-size:12px;font-weight:600;color:var(--ink)}
.lang-editor{display:flex;flex-direction:column;gap:12px;min-width:0}.lang-field{display:flex;flex-direction:column;gap:5px;min-width:0}.lang-field[hidden]{display:none}.lang-editor .lang-caption{margin:0;font-size:11px;font-weight:600;color:var(--muted)}
.lang-editor input{width:100%;min-width:0}.lang-combo{display:flex;flex-direction:column;gap:4px;min-width:0}
.lang-options{list-style:none;margin:0;padding:4px;max-height:232px;overflow:hidden;border:1px solid var(--border);border-radius:9px;background:var(--popover);box-shadow:0 8px 24px color-mix(in srgb,var(--ink) 10%,transparent)}.lang-options[hidden]{display:none}
.lang-option{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;padding:8px 10px;border-radius:7px;cursor:pointer;color:var(--ink);font-size:13px;line-height:1.35}.lang-option:hover,.lang-option.active{background:var(--accent-tint);color:var(--accent-strong)}.lang-option[aria-selected=true]{font-weight:600}
.lang-native{color:var(--secondary);font-size:1.05em}.lang-option.active .lang-native{color:inherit}.lang-flag{margin-left:auto;font-size:11px;color:var(--review-text)}
.lang-others{display:flex;flex-direction:column;gap:6px;min-width:0}.lang-chips{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}.lang-chips[hidden]{display:none}
.lang-chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;min-height:30px;padding:2px 2px 2px 11px;border:1px solid var(--accent-surface);border-radius:15px;background:var(--accent-tint);color:var(--accent-strong);font-size:12.5px}.lang-chip .lang-native{color:inherit;opacity:.85}
.lang-chip-remove{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;min-height:0;padding:0;border:0;border-radius:13px;background:transparent;color:inherit;font-size:16px;line-height:1}.lang-chip-remove:hover{background:var(--accent-surface)}.lang-chip-remove:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.lang-note{margin:0;font-size:12px;line-height:1.45;color:var(--review-text)}.lang-note:empty{display:none}
.patient-summary>div:has(dd.languages){grid-column:span 2}.patient-summary dd.languages{white-space:normal;overflow-wrap:anywhere}
/* Desktop with offline processing (app.js paintLanguageNotice): on-device transcription understands English only. */
.capture-copy .language-notice{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin-top:8px;padding:8px 10px;border-radius:9px;background:var(--review-bg);color:var(--review-text);max-width:560px}.capture-copy .language-notice[hidden]{display:none}.capture-copy .language-notice p{margin:0;color:inherit;font-size:var(--text-meta);line-height:1.45;max-width:none;flex:1 1 260px}.capture-copy .language-notice button{padding:3px 10px;font-size:var(--text-meta);white-space:nowrap}
/* ==== No vertical scrolling (owner, 16 Sept 2026) — paging.js ================================================
   A pane that cannot show everything pages through it instead of scrolling: pinned chrome, one clipped viewport,
   and a pager bar ("Page 2 of 6" · Previous · Next · ← →). The flow inside the viewport keeps the pane's own
   layout (paging.js copies display, direction and gap onto it) and is moved up by whole pages, so a page break
   lands between blocks and never cuts a row in half. */
.pg-pane{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.pg-pane>:not(.pg-viewport,.pager){flex:0 0 auto}
.pg-viewport{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;position:relative}
.pg-flow{flex:1 1 auto;min-height:0}
.pg-flow.pg-long{flex:1 0 auto}
.pager{display:flex;flex-direction:row;align-items:center;gap:10px;flex:0 0 auto;margin-top:10px;padding:7px 0 0;border-top:1px solid var(--border)}
.pager[hidden]{display:none!important}
.pager-count{margin-right:auto;font:400 11.5px/1.4 var(--font-mono);letter-spacing:.02em;color:var(--hint)}
.pager button{--control-size:auto;min-height:0;padding:6px 12px;border-radius:8px;border:1px solid var(--border);background:var(--card);color:var(--secondary);font-size:12.5px;font-weight:500}
.pager button:disabled{opacity:.35}
/* Panes with their own ground carry the bar edge to edge on the card's footer line. */
.document-pane>.pager{margin:0 -24px -20px;padding:8px 18px;background:var(--sunken)}
#note-pane>.pager,#documents-pane>.pager{margin:0;padding:8px 18px;background:var(--sunken)}
#assistant>.pager{margin:0;padding:8px 16px;background:var(--sunken);border-top:1px solid var(--border)}
.support-body>.pager{margin:0 -24px -24px;padding:8px 20px;background:var(--sunken)}
.review-sheet>.pager{margin:0 -28px -28px;padding:10px 24px;background:var(--sunken)}
.lang-more{padding:7px 10px;font-size:12px;line-height:1.4;color:var(--hint)}
/* The note's sections as tabs (the owner asked for tabs, not accordions). */
.section-tabs{display:flex;flex-wrap:wrap;gap:4px;flex:0 0 auto;margin-bottom:12px}
.section-tab{--control-size:auto;min-height:0;padding:6px 12px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);font-size:12.5px;line-height:1.3;font-weight:500;white-space:nowrap}
.section-tab:hover{background:var(--row-highlight);color:var(--ink)}
.section-tab[aria-selected=true],.section-tab[aria-selected=true]:hover{background:var(--accent-tint);color:var(--accent-strong)}
.section-panel[hidden]{display:none!important}
/* A grown textarea is the pager's own block: it never scrolls, and the pane moves it a page at a time. */
.pg-flow textarea{overflow:hidden;resize:none}
/* The web in a phone-sized browser (not the Android or iPhone shells, which phone.css and their own sheets dress): the screen
   is a column that fits, exactly as on desktop. Lists page to the rows that fit, the visit's document fills what is left and
   pages inside, and the filter chips wrap rather than run off the side. */
@media(max-width:760px){
:root:not(.android):not(.ios) .screen{overflow:hidden}
:root:not(.android):not(.ios) .table-card{flex:1 1 auto;min-height:0}
:root:not(.android):not(.ios) .table-rows{flex:1 1 auto;min-height:0}
:root:not(.android):not(.ios) .filter-chips{flex-wrap:wrap}
:root:not(.android):not(.ios) .document{flex:1 1 auto;min-height:0;overflow:hidden}
:root:not(.android):not(.ios) .document-pane{min-height:0;overflow:hidden}
:root:not(.android):not(.ios) .document-pane #transcript{min-height:0}
:root:not(.android):not(.ios) .review-sheet{flex:1 1 auto;min-height:0;overflow:hidden}
:root:not(.android):not(.ios) .settings-content{overflow:hidden}
:root:not(.android):not(.ios) #encounter-page .document{flex:1 1 auto;min-height:0;overflow:hidden}
:root:not(.android):not(.ios) #encounter-page .document-pane{min-height:0;overflow:hidden}
:root:not(.android):not(.ios) #patients-table{flex:1 1 auto;min-height:0;overflow:hidden}
:root:not(.android):not(.ios) #home-records{flex:1 1 auto;min-height:0}
:root:not(.android):not(.ios) .ph-list{overflow:visible;flex:0 0 auto}
:root:not(.android):not(.ios) .ph-list>.ph-rows>:first-child{border-radius:0}
:root:not(.android):not(.ios) .pager{padding-block:8px}
:root:not(.android):not(.ios) :is(.document-pane,#note-pane,#documents-pane,#assistant,.support-body,.review-sheet)>.pager{margin:0;padding:8px 0 0;background:transparent}
}

/* The note's sections are tabs on every platform (owner, 16 Sept 2026): on a phone each tab is a full tap target. */
@media(max-width:760px){.section-tabs{gap:6px;margin-bottom:10px}.section-tab{min-height:var(--tap,44px);padding:8px 13px;font-size:13px}:root.android .section-tab{min-height:48px}}
