/* The Android visit flow (android-visit.js) on phones up to 760px with html.android: Start a visit sheet, the full-bleed recording
   surface, the red strip, the percentage after Stop, the four swipeable tabs (Note · Transcript · Audio · Docs) with Sign, the
   transcript, the audio player, documents, Genie touches, shared audio and the mic check. Material 3 structure in DocVoc colours:
   every colour comes from tokens.css. iOS and wide layouts never show any of it (the elements stay hidden and the sheets only open
   on Android phones). The rule throughout (owner, 16 Sept 2026): nothing scrolls. The visit is four paged screens — the document
   card fills what is left under the four tabs and the pane inside it pages, so the tabs and the Sign bar never move — and each
   sheet keeps its grabber, title and buttons in place while its body pages between them. */
.av-rec,.av-away,.av-progress,.av-read,.av-audio,.av-tabs,.av-docs,.av-fab,#av-addendum,.av-genie-chip,#phone-menu>.av-icon{display:none}
.av-icon{width:24px;height:24px;flex-shrink:0}
/* ---- Sheets and the full-screen mic check ---- */
dialog.av-sheet{margin:auto 0 0;width:100%;max-width:none;max-height:calc(100dvh - var(--safe-top,0px) - 24px);padding:8px 20px calc(20px + var(--safe-bottom,0px));border:0;border-radius:28px 28px 0 0;background:var(--popover);color:var(--ink);box-shadow:var(--shadow-dialog);display:flex;flex-direction:column;gap:14px;overflow:hidden;overscroll-behavior:contain;transition:transform var(--motion-fast) var(--ease)}
dialog.av-sheet:not([open]),dialog.av-full:not([open]){display:none}
dialog.av-sheet::backdrop,dialog.av-full::backdrop{background:var(--backdrop)}
.av-grabber{position:relative;width:32px;height:4px;border-radius:2px;background:var(--input-border);margin:6px auto 2px;flex-shrink:0;touch-action:none}
.av-grabber::after{content:'';position:absolute;inset:-16px -48px}
.av-sheet h2{font-size:var(--text-appbar);font-weight:600;letter-spacing:0;margin:0}
.av-eyebrow{font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:.13em;text-transform:uppercase;color:var(--hint);margin:4px 0 -6px}
.av-note{font-size:var(--text-secondary);color:var(--hint);margin:0}
.av-note[hidden]{display:none}
.av-patient{display:flex;align-items:center;gap:12px;padding:12px 12px 12px 14px;border-radius:16px;background:var(--accent-tint)}
.av-avatar{width:40px;height:40px;flex:0 0 40px;border-radius:50%;display:grid;place-items:center;background:var(--accent-surface);color:var(--accent-strong);font-weight:600;font-size:var(--text-secondary)}
.av-avatar.small{width:32px;height:32px;flex-basis:32px;font-size:var(--text-label)}
.av-patient-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.av-patient-copy strong{font-size:var(--text-patient);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av-patient-copy small,.av-radio-copy small,.av-action-copy small,.av-file-copy small,.av-doc-copy small{font-size:12.5px;line-height:1.4;color:var(--muted)}
.av-tonal{min-height:48px;padding:0 16px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--ink);font-weight:500}
.av-outline{min-height:48px;padding:0 20px;border-radius:999px;border:1px solid var(--input-border);background:transparent;color:var(--ink);font-weight:500}
.av-outline:hover,.av-tonal:hover{background:var(--accent-tint)}
.av-text{min-height:48px;padding:0 12px;border:0;background:transparent;color:var(--accent-text);font-weight:600}
.av-picker{display:flex;flex-direction:column;gap:8px}
.av-picker[hidden]{display:none}
.av-picker input{width:100%;height:48px;border-radius:12px}
.av-picker-list{display:flex;flex-direction:column;gap:2px}
.av-pick{justify-content:flex-start;gap:12px;min-height:48px;padding:6px 10px;border:0;border-radius:12px;background:transparent;color:var(--ink);font-weight:400;text-align:left}
.av-pick.selected{background:var(--accent-tint);color:var(--accent-strong);font-weight:600}
.av-radios{display:flex;flex-direction:column;gap:4px}
.av-radio{display:flex;flex-direction:row;align-items:center;gap:14px;min-height:56px;padding:8px 14px;border-radius:14px;cursor:pointer;color:var(--ink);font-size:var(--text-ui)}
.av-radio.selected{background:var(--accent-tint)}
.av-radio input{width:20px;height:20px;margin:0;flex-shrink:0;accent-color:var(--accent);outline:none;box-shadow:none}
.av-radio:has(input:focus-visible){outline:2px solid var(--focus-outline);outline-offset:1px}
.av-radio-copy,.av-action-copy,.av-file-copy,.av-doc-copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.av-radio-copy strong,.av-action-copy strong{font-size:var(--text-note);font-weight:500}
.av-switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;font-size:var(--text-ui)}
.av-switch-row[hidden]{display:none}
.av-switch{position:relative}.av-switch::after{content:'';position:absolute;inset:-10px -4px}
.av-sheet-actions{display:flex;gap:10px;align-items:center}
.av-record{flex:1;min-height:56px;border-radius:999px;font-size:var(--text-card);gap:8px}
.av-sheet-actions .av-outline{min-height:56px}
.av-actions{display:flex;flex-direction:column;margin:0 -8px}
.av-action{justify-content:flex-start;gap:16px;min-height:64px;padding:8px;border:0;border-radius:12px;background:transparent;color:var(--ink);text-align:left;font-weight:400}
.av-action:hover{background:var(--accent-tint)}
.av-action-icon{width:40px;height:40px;flex:0 0 40px;border-radius:12px;display:grid;place-items:center;background:var(--accent-tint);color:var(--accent-strong)}
.av-action.danger .av-action-copy strong,.av-action.danger .av-action-icon{color:var(--danger)}
.av-action.danger .av-action-icon{background:var(--danger-bg)}
.av-file{display:flex;align-items:center;gap:14px;padding:12px;border-radius:16px;background:var(--accent-tint)}
.av-file-icon{width:44px;height:44px;flex:0 0 44px;border-radius:12px;display:grid;place-items:center;background:var(--card);color:var(--accent-text)}
.av-file-copy strong{font-size:var(--text-note);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#av-share-import{min-height:56px;border-radius:999px;font-size:var(--text-note)}
.av-chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px;border:0;border-radius:8px;font-size:var(--text-meta);font-weight:500;white-space:nowrap}
dialog.av-full{margin:0;width:100%;height:100dvh;max-width:none;max-height:none;border:0;border-radius:0;padding:calc(var(--safe-top,0px) + 28px) 24px calc(var(--safe-bottom,0px) + 24px);background:var(--app-bg);color:var(--ink);display:flex;flex-direction:column;gap:14px;overflow:hidden}
.av-full h1{font-size:28px;font-weight:600;letter-spacing:-.01em;margin:0}
.av-full .muted{margin:0;font-size:var(--text-ui)}
.av-level{display:flex;align-items:center;gap:4px;height:72px}
.av-level i{flex:1;height:15%;border-radius:3px;background:var(--accent);transition:height 80ms linear}
.av-mic-chips{display:flex;gap:8px;flex-wrap:wrap}
.av-mic-chips .av-chip{background:var(--accent-tint);color:var(--accent-strong)}
.av-mic-chips .av-icon{width:16px;height:16px}
.av-mic-status{margin:0;font-size:var(--text-ui)}
#av-mic-clip{width:100%}
#av-mic-clip[hidden]{display:none}
.av-mic-actions{margin-top:auto;display:flex;flex-direction:column;gap:10px}
.av-mic-actions .primary{min-height:56px;border-radius:999px;font-size:var(--text-card)}
.av-mic-actions [hidden]{display:none}
.av-terms-text{margin:0;font-size:var(--text-ui);line-height:1.55;white-space:pre-line}
/* Sign note signs at once: the sign sheet only shows when a patient record has to be chosen. */
body.av-quick #clinical-dialog{visibility:hidden}
body.av-quick #clinical-dialog::backdrop{background:transparent}

@media(max-width:760px){
/* ---- The app bar on a visit: back arrow and the patient's name; no bottom navigation (the visit's own four tabs instead) ---- */
:root.android #phone-menu.av-back>.icon{display:none}
:root.android #phone-menu.av-back>.av-icon{display:block}
:root.android body.av-visit #phone-tabs,:root.android body.av-recording #phone-tabs{display:none}
:root.android body.av-visit{--tabbar:var(--safe-bottom);--signbar:81px}
:root.android #phone-pill,:root.android #phone-recorder{display:none!important}
:root.android #encounter-page.ph-has-note #phone-chips{display:none}
:root.android .av-genie-chip:not([hidden]){display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:8px;background:var(--accent-tint);color:var(--accent-strong);font-size:var(--text-meta);font-weight:500;white-space:nowrap}

/* ---- 02 Recording: full-bleed dark surface, clock, bars, chips and the circular transport (56 · 78 · 56) ---- */
:root.android .av-rec:not([hidden]){display:flex;position:fixed;inset:0;z-index:30;flex-direction:column;background:var(--recorder);color:var(--recorder-text);padding:var(--safe-top) 0 calc(var(--safe-bottom) + 28px)}
.av-rec-bar{display:flex;align-items:center;gap:4px;min-height:64px;padding:0 16px 0 4px}
.av-rec-back{width:48px;height:48px;flex:0 0 48px;min-height:0;padding:0;border:0;border-radius:50%;background:transparent;color:var(--recorder-text)}
.av-rec-back:hover,.av-rec-name:hover{background:color-mix(in srgb,var(--recorder-text) 10%,transparent)}
.av-rec-name{flex:1;min-width:0;min-height:48px;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;padding:0 6px;border:0;border-radius:12px;background:transparent;color:var(--recorder-text);text-align:left;font-weight:400}
.av-rec-name strong{max-width:100%;font-size:var(--text-card);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av-rec-name small{font-size:var(--text-meta);color:var(--recorder-muted)}
.av-rec .av-chip{background:color-mix(in srgb,var(--recorder-text) 12%,transparent);color:var(--recorder-text)}
.av-template-chip{position:relative;display:block;max-width:42%;line-height:32px;overflow:hidden;text-overflow:ellipsis}
.av-template-chip::after{content:'';position:absolute;inset:-8px -2px}
.av-rec-main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;min-height:0;padding:0 24px}
.av-clock{font-family:var(--font-mono);font-size:var(--text-phone-clock);font-weight:500;line-height:1;letter-spacing:.02em;font-variant-numeric:tabular-nums;color:var(--recorder-text)}
.av-rec.paused .av-clock{color:var(--recorder-muted)}
.av-rec-status{margin:0;font-size:var(--text-secondary);color:var(--recorder-muted);text-align:center}
.av-rec-bars{display:flex;align-items:center;justify-content:center;gap:4px;width:100%;max-width:320px;height:64px}
.av-rec-bars i{display:block;width:5px;height:15%;border-radius:3px;background:var(--level);transition:height var(--motion-fast) linear}
.av-rec.paused .av-rec-bars i{height:10%!important;background:var(--recorder-muted);opacity:.5}
.av-rec-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.av-rec .av-cloud-chip.offline{background:var(--review-bg);color:var(--review-text)}
.av-marker-chip:disabled{opacity:1;cursor:default}
.av-marker-chip.pulse{animation:av-pulse 600ms var(--ease)}
.av-rec-alert{margin:0;max-width:340px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--recorder-danger) 14%,transparent);color:var(--recorder-danger);font-size:var(--text-secondary);line-height:1.45;text-align:center}
.av-rec-alert[hidden]{display:none}
.av-transport{display:flex;align-items:flex-start;justify-content:center;gap:32px;padding:0 24px}
/* Stop and delete (journeys-17): a line of text under the transport, not a fourth ring beside Stop, so the thumb reaching for
   the big red Stop cannot take it by mistake. */
.av-stop-delete{align-self:center;flex:0 0 auto;min-height:0;margin-top:22px;padding:8px 14px;border:0;border-radius:10px;background:transparent;color:var(--recorder-muted);font-size:var(--text-meta);font-weight:500;text-decoration:underline;text-underline-offset:3px}
.av-stop-delete:hover,.av-stop-delete:focus-visible{background:color-mix(in srgb,var(--recorder-danger) 14%,transparent);color:var(--recorder-danger)}
.av-ctl{display:flex;flex-direction:column;align-items:center;gap:8px}
.av-round{width:56px;height:56px;min-height:0;margin-top:11px;padding:0;border:1px solid color-mix(in srgb,var(--recorder-text) 22%,transparent);border-radius:50%;background:color-mix(in srgb,var(--recorder-text) 10%,transparent);color:var(--recorder-text)}
.av-round:hover{background:color-mix(in srgb,var(--recorder-text) 18%,transparent)}
.av-round[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.av-round.av-stop{width:78px;height:78px;margin-top:0;border:0;background:var(--recording-red);color:var(--on-recording-red);box-shadow:0 0 0 6px color-mix(in srgb,var(--recording-red) 24%,transparent)}
.av-round .av-icon{width:26px;height:26px}.av-round.av-stop .av-icon{width:30px;height:30px}
.av-round:disabled{opacity:.5}
.av-ctl-label{font-size:var(--text-meta);color:var(--recorder-muted)}
@keyframes av-pulse{0%{transform:scale(1)}40%{transform:scale(1.12);background:var(--accent);color:var(--on-accent)}100%{transform:scale(1)}}

/* ---- 19 The red strip under the status bar while the visit records out of view ---- */
:root.android .av-away:not([hidden]){display:flex;align-items:center;gap:10px;flex-shrink:0;padding:calc(var(--safe-top) + 8px) 8px 8px 16px;background:var(--danger-fill);color:var(--on-accent);font-size:var(--text-secondary);font-weight:500;cursor:pointer}
:root.android .av-away.saved:not([hidden]){background:var(--review-bg);color:var(--review-text)}
.av-away.saved .av-dot{animation:none;background:var(--review-dot)}
.av-away.saved .av-away-return{color:var(--review-text)}
.av-away .av-dot{width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:var(--on-accent);animation:av-blink 1.4s steps(2) infinite}
.av-away.paused .av-dot{animation:none;opacity:.6}
.av-away-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
.av-away-return{min-height:48px;padding:0 12px;border:0;background:transparent;color:var(--on-accent);font-weight:600}
.av-away-return:hover{background:color-mix(in srgb,var(--on-accent) 14%,transparent)}
.av-away-close{display:grid;place-items:center;flex:0 0 48px;width:48px;height:48px;min-height:48px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--review-text)}
.av-away-close[hidden]{display:none}
.av-away-close .av-icon{width:20px;height:20px}
:root.android body.av-away-on .workspace-header{padding-top:0}
@keyframes av-blink{50%{opacity:.25}}
/* The back gesture's alert: Keep recording? · Stop & write / Keep recording. */
:root.android #recording-guard.av-alert{width:min(320px,calc(100vw - 48px));margin:auto;padding:24px 24px 16px;border:0;border-radius:28px;background:var(--popover)}
:root.android #recording-guard.av-alert h2{margin:0 0 12px;font-size:var(--text-appbar);font-weight:600;letter-spacing:0}
:root.android #recording-guard.av-alert p{font-size:var(--text-ui);line-height:1.5}
:root.android #recording-guard.av-alert .dialog-actions{flex-direction:row;justify-content:flex-end;align-items:center;gap:4px;margin-top:20px}
:root.android #recording-guard.av-alert .dialog-actions button{min-height:48px;padding:0 12px;border:0;background:transparent;box-shadow:none;color:var(--accent-text);font-weight:600}

/* ---- 11 After stop: one percentage, one bar, and what is done as chips (no four-node wizard, nothing below the fold) ---- */
#encounter-page.av-processing>:not(#av-progress){display:none!important}
:root.android .av-progress:not([hidden]){display:flex;flex-direction:column;gap:14px;flex-shrink:0;padding-top:8px}
.av-progress-kicker{display:flex;align-items:center;gap:8px;margin:0;font-size:var(--text-meta);color:var(--muted)}
.av-progress-kicker .av-dot{width:10px;height:10px;border-radius:3px;background:var(--accent)}
.av-progress-bar{height:6px;border-radius:3px;background:var(--accent-tint);overflow:hidden}
.av-progress-bar i{display:block;width:0;height:100%;border-radius:3px;background:var(--accent);transition:width var(--motion-base) var(--ease)}
.av-progress-bar.indeterminate i{width:35%;animation:av-slide 1.4s var(--ease) infinite}
@keyframes av-slide{0%{transform:translateX(-110%)}100%{transform:translateX(300%)}}
.av-progress h2{margin:0;font-size:var(--text-phone-heading);font-weight:600;letter-spacing:-.01em}
.av-progress>.muted{margin:-10px 0 0;font-size:var(--text-secondary)}
.av-meter{display:flex;flex-direction:column;gap:10px;margin:4px 0}
.av-percent{font-family:var(--font-mono);font-size:var(--text-phone-clock);font-weight:500;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--accent-strong)}
.av-stage{margin:0;font-size:var(--text-secondary);color:var(--muted)}
.av-stage:empty{display:none}
.av-progress-chips{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.av-progress-chip{display:inline-flex;align-items:center;gap:8px;min-height:32px;max-width:100%;padding:0 14px 0 10px;border-radius:8px;background:var(--accent-tint);color:var(--accent-strong);font-size:var(--text-secondary);font-weight:500}
.av-progress-chip .av-icon{width:16px;height:16px;stroke-width:2.6}
.av-progress-chip.error{background:var(--danger-bg);color:var(--danger)}
.av-progress-chip.waiting{background:var(--review-bg);color:var(--review-text)}
.av-progress-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}
.av-progress-actions .primary{min-height:48px;padding:0 22px;border-radius:999px}
.av-progress-peek{display:flex;align-items:center;gap:8px;padding:10px 6px 10px 14px;border:1px solid var(--border);border-radius:16px;background:var(--card)}
.av-progress-peek strong{flex:1;min-width:0;font-size:var(--text-note);font-weight:600;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Reading the transcript while DocVoc cloud works: the progress strip takes the pinned row, so the tabs stand down. */
#encounter-page.av-peek>#phone-chips,#encounter-page.av-peek :is(.capture,#note-progress,#capture-progress,.editor-toolbar){display:none!important}
#encounter-page.av-peek #av-progress{position:sticky;top:-12px;z-index:6;box-shadow:0 -12px 0 var(--app-bg)}

/* ---- 04 / 11 / 13 The four swipeable tabs: Note · Transcript · Audio · Docs, pinned under the app bar so a visit never scrolls to
   find them. The app's own three tabs stay in the DOM (app.js drives them) but never show on an Android phone. ---- */
:root.android body.av-visit .tabs,:root.android body.av-visit .editor-tools{display:none}
/* Write the note / Rewrite the note belongs to the Transcript tab, where the words it works from are. */
:root.android body.av-visit[data-av-tab=transcript] .editor-tools{display:flex}
:root.android body.av-visit #encounter-page .editor-toolbar{position:sticky;top:-12px;z-index:5;margin:0 0 4px;padding:12px 0 0;background:var(--app-bg)}
:root.android body.av-visit .av-tabs{display:grid;grid-template-columns:repeat(4,1fr);width:calc(100% + 32px);margin:0 -16px;border-bottom:1px solid var(--border)}
.av-tab{position:relative;min-height:48px;padding:0 4px;border:0;border-radius:0;background:transparent;color:var(--muted);font-size:var(--text-ui);font-weight:500;letter-spacing:0;text-transform:none}
.av-tab::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:2px 2px 0 0;background:transparent}
.av-tab.active{color:var(--accent-strong);font-weight:600}
.av-tab.active::after{background:var(--accent)}
.av-tab:hover{background:var(--accent-tint)}
/* ---- 04 Note & sign: sections without card frames, the draft banner under the tabs, the Sign bar ---- */
:root.android #encounter-page .note-actions{order:-1;position:sticky;top:49px;bottom:auto;z-index:3;margin:0 0 12px;padding:8px 12px 8px 14px;border-radius:12px}
:root.android #encounter-page .note-actions .review-banner::before{content:'';display:inline-block;width:6px;height:6px;margin:0 8px 1px 0;border-radius:50%;background:var(--review-dot);vertical-align:middle}
:root.android #encounter-page .note-actions.is-signed .review-banner::before{background:var(--signed-dot)}
:root.android #av-addendum:not([hidden]){display:inline-flex;order:-1;align-self:flex-start;margin:-4px 0 12px}
:root.android .note-prose section{margin:0;padding:0 0 6px;border:0;border-bottom:1px solid var(--row-border);border-radius:0;background:transparent}
:root.android .note-prose section:last-child{border-bottom:0}
/* The note's sections are tabs now (clinical.js sectionTabs), not accordions: Material-sized tabs with 48dp targets. */
:root.android .section-tab{min-height:48px;padding:0 14px;border-radius:8px;font-size:var(--text-secondary);color:var(--secondary)}
:root.android .section-tab[aria-selected=true]{background:var(--ad-tonal);color:var(--ad-on-tonal);font-weight:600}
:root.android #encounter-page .document-footer{padding:12px 16px}
:root.android body.av-visit:not([data-av-tab=note]) #encounter-page .document-footer{display:none}
:root.android #encounter-page #export{flex:0 0 56px;width:56px;height:56px;min-height:56px;border-radius:50%}
:root.android #encounter-page #review{height:56px;min-height:56px;border-radius:999px;font-size:var(--text-card);font-weight:600}
:root.android #encounter-page.ph-signed #phone-amend{display:none}
:root.android #encounter-page.ph-signed #export{flex:1;width:auto;gap:10px;border-color:var(--accent);background:var(--accent);color:var(--on-accent);border-radius:999px}
:root.android #encounter-page.ph-signed #export span{position:static;width:auto;height:auto;overflow:visible;clip:auto;font-size:var(--text-card);font-weight:600}
:root.android #sign-snackbar{bottom:calc(var(--signbar,81px) + var(--safe-bottom) + 12px);left:16px;right:16px;transform:none;min-width:0;max-width:none;border-radius:8px}
:root.android #sign-snackbar .snackbar-action{height:48px;min-height:48px;text-transform:uppercase;letter-spacing:.06em}

/* ---- 12 Transcript: chips, speaker turns or paragraphs, markers, find ---- */
:root.android #transcript-pane.av-reading :is(#transcript,#transcript-lines,#visit-markers),:root.android #kept-audio{display:none!important}
/* The visit's marker chips (phone.js) repeat the Transcript and Audio tabs' own marker list, so they stay on the Note tab. */
:root.android body.av-visit:is([data-av-tab=transcript],[data-av-tab=audio]) #phone-chips{display:none}
:root.android .av-read:not([hidden]){display:flex;flex-direction:column;gap:12px}
.av-read-chips{display:flex;flex-wrap:wrap;gap:8px}
.av-filter{position:relative;min-height:36px;padding:0 14px;border:1px solid var(--input-border);border-radius:8px;background:transparent;color:var(--secondary);font-size:var(--text-secondary);font-weight:500}
.av-filter::after{content:'';position:absolute;inset:-6px -2px}
.av-filter.active{border-color:var(--accent-surface);background:var(--accent-tint);color:var(--accent-strong)}
.av-find{display:flex;align-items:center;gap:10px}
.av-find[hidden]{display:none}
.av-find input{flex:1;min-width:0;height:48px;border-radius:12px}
.av-find-count{font-size:var(--text-meta);color:var(--hint);white-space:nowrap}
.av-read-body{display:flex;flex-direction:column;gap:12px}
.av-turn{display:flex;flex-direction:column;gap:6px}
.av-turn-label{margin:0;font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:.12em;text-transform:uppercase;color:var(--hint)}
.av-turn-text{margin:0;padding:12px 14px;border-radius:14px;background:var(--accent-tint);color:var(--ink);font-size:var(--text-note);line-height:1.55}
.av-turn.patient .av-turn-text{border:1px solid var(--border);background:var(--card)}
.av-para{margin:0;font-size:var(--text-note);line-height:1.65;color:var(--ink)}
.av-read mark{border-radius:3px;background:var(--highlight);color:var(--ink)}
.av-read-body>.av-text{align-self:flex-start;margin-left:-12px}
.av-marker-list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:12px;background:var(--card);overflow:hidden}
.av-marker-row{justify-content:flex-start;gap:12px;min-height:48px;padding:0 14px;border:0;border-radius:0;background:transparent;color:var(--ink);font-weight:400;text-align:left}
.av-marker-row+.av-marker-row{border-top:1px solid var(--row-border)}
.av-marker-row .av-icon{width:18px;height:18px;color:var(--accent-text)}
.av-marker-row span:nth-of-type(1){flex:1}
.av-mono{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--hint);font-variant-numeric:tabular-nums}
/* ---- 11 Audio: its own tab. A full-width scrubber, skip 15 s, one big Play, the speeds and the markers — all in the first viewport ---- */
/* Audio mode keeps the transcript pane for itself. The pane is paged, so its parts sit inside the flow: both levels are named. */
:root.android body.av-visit[data-av-tab=audio] #transcript-pane>:not(.av-audio,.pg-viewport,.pager),
:root.android body.av-visit[data-av-tab=audio] #transcript-pane .pg-flow>:not(.av-audio){display:none!important}
:root.android .av-audio:not([hidden]){display:flex;flex-direction:column;gap:12px;padding-top:4px}
.av-audio [hidden]{display:none!important}
.av-audio-head{margin:0;font-size:var(--text-secondary);color:var(--muted)}
.av-scrub{width:100%;height:44px;margin:0;padding:0;border:0;background:transparent;accent-color:var(--accent)}
.av-audio .av-times{display:flex;justify-content:space-between;margin-top:-14px}
.av-audio-transport{display:flex;align-items:center;justify-content:center;gap:28px;padding:8px 0}
.av-play{width:72px;height:72px;flex:0 0 72px;min-height:0;padding:0;border:0;border-radius:50%;background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-primary)}
.av-play .av-icon{width:32px;height:32px}
.av-skip{position:relative;width:56px;height:56px;min-height:0;padding:0;border:1px solid var(--input-border);border-radius:50%;background:transparent;color:var(--ink)}
.av-skip:hover{background:var(--accent-tint)}
.av-skip .av-icon{width:28px;height:28px}
.av-skip-num{position:absolute;inset:0;display:grid;place-items:center;padding-top:3px;font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:0}
.av-speeds{display:flex;align-self:center;gap:2px;padding:3px;border-radius:999px;background:var(--accent-tint)}
.av-speed{min-width:56px;min-height:42px;padding:0 10px;border:0;border-radius:999px;background:transparent;color:var(--secondary);font-size:var(--text-secondary);font-weight:600;font-variant-numeric:tabular-nums}
.av-speed.active{background:var(--card);color:var(--accent-strong);box-shadow:var(--shadow-popover)}
#av-audio-delete{align-self:flex-start;color:var(--danger);border-color:var(--danger-bg)}
:root.android body.av-visit[data-av-tab=documents] #encounter-page{padding-bottom:calc(var(--safe-bottom) + 96px)}

/* ---- 13 Documents: the visit's documents, their card with Share / Print / Save to Drive, and the Draft document FAB ---- */
/* Docs mode keeps the documents pane for itself; the pane is paged, so its parts sit inside the flow (both levels are named). */
:root.android #documents-pane.av-docs-on>:not(.av-docs,#drafted-document,.pg-viewport,.pager),
:root.android #documents-pane.av-docs-on .pg-flow>:not(.av-docs,#drafted-document){display:none!important}
:root.android #encounter-page #documents-pane{margin-top:0;padding:12px 0 0;border:0;background:transparent}
:root.android .av-docs:not([hidden]){display:block}
.av-doc-list{display:flex;flex-direction:column;gap:2px}
.av-doc{display:flex;align-items:center;gap:4px}
.av-doc-main{flex:1;min-width:0;justify-content:flex-start;gap:14px;min-height:72px;padding:8px 4px;border:0;border-radius:12px;background:transparent;color:var(--ink);font-weight:400;text-align:left}
.av-doc-main:hover{background:var(--row-highlight)}
.av-doc-thumb{width:40px;height:48px;flex:0 0 40px;border-left:4px solid var(--accent);border-radius:6px;background:var(--accent-tint)}
.av-doc-copy strong{font-size:var(--text-note);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av-doc-more{width:48px;height:48px;flex:0 0 48px;min-height:0;padding:0;border:0;border-radius:50%;background:transparent;color:var(--hint)}
.av-doc-card{display:flex;flex-direction:column;gap:10px;margin:4px 0 10px;padding:16px;border:1px solid var(--border);border-radius:16px;background:var(--card)}
.av-doc-card>strong{font-size:var(--text-note);font-weight:600}
.av-doc-excerpt{margin:0;font-size:var(--text-secondary);line-height:1.55;color:var(--muted);white-space:pre-wrap}
.av-doc-actions{display:flex;flex-wrap:wrap;gap:8px}
.av-doc-actions .primary{min-height:48px;padding:0 20px;border-radius:999px}
.av-empty{padding:32px 16px;text-align:center}
.av-empty strong{font-size:var(--text-card);font-weight:600}
.av-empty p{margin:6px 0 0;font-size:var(--text-secondary);color:var(--hint)}
:root.android #drafted-document .toolbar{flex-wrap:wrap;gap:8px}
:root.android #drafted-document .toolbar h2{flex:1 0 100%;margin:0;font-size:var(--text-card)}
:root.android #drafted-document .toolbar button{min-height:48px;border-radius:999px}
:root.android #drafted-document #save-document{margin-left:auto}
:root.android #encounter-page.ph-signed #generate{display:none}
:root.android .av-fab:not([hidden]){display:inline-flex;position:fixed;right:16px;bottom:calc(var(--safe-bottom) + 20px);z-index:9;align-items:center;gap:10px;min-height:56px;padding:0 20px 0 16px;border:0;border-radius:16px;background:var(--accent);color:var(--on-accent);font-size:var(--text-note);font-weight:600;box-shadow:var(--shadow-primary)}

/* ---- 06 / 16 Genie: asymmetric bubbles, tonal input, the Opened chip; listening pins a dark strip under the status bar ---- */
:root.android #assistant .chat-user{border-color:var(--accent);border-radius:20px 20px 4px 20px;background:var(--accent)}
:root.android #assistant .chat-answer{border-color:transparent;border-radius:20px 20px 20px 4px;background:var(--accent-tint)}
:root.android #assistant .chat-trail{display:inline-flex;align-items:center;gap:6px;margin-top:-4px;padding:6px 10px;border-radius:8px;background:var(--accent-tint);color:var(--accent-strong);font-family:var(--font-sans);font-size:var(--text-meta);letter-spacing:0;text-transform:none}
:root.android #assistant-input{border:0;border-radius:28px;background:var(--accent-tint);padding:0 20px}
:root.android #assistant .suggestions button{border:1px solid var(--input-border);border-radius:8px;background:transparent;color:var(--secondary)}
:root.android #assistant.voice-strip{top:0;left:0;right:0;padding:calc(var(--safe-top) + 10px) 16px 12px;border:0;border-radius:0;background:var(--recorder);color:var(--recorder-text);box-shadow:none}
:root.android #assistant.voice-strip #assistant-form.is-listening #assistant-mic{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}
:root.android #assistant.voice-strip .genie-bars i{background:var(--level)}
:root.android #assistant.voice-strip .genie-stop{border-radius:999px;background:color-mix(in srgb,var(--recorder-text) 16%,transparent);color:var(--recorder-text)}
:root.android #assistant.voice-strip #assistant-voice-hint,:root.android #assistant.voice-strip #assistant-voice-notice{color:var(--recorder-muted)}
:root.android body.genie-strip .workspace>.screen:not([hidden]){padding-top:max(12px,calc(var(--genie-strip,64px) - 56px - var(--safe-top) + 12px))}
/* The note's template row (phone.js #phone-note-template): change the template or rewrite a written note, as on iPhone (journeys-12). */
:root.android #encounter-page:is(.ph-has-note,.ph-signed) #phone-note-template{display:flex;border-radius:16px;min-height:48px}
/* ---- Paging in a sheet or a full-screen step (owner, 16 Sept 2026: nothing scrolls) ----
   The grabber and title stay at the top, the buttons at the bottom, and the body pages between them. Flex order puts the
   viewport and its pager back where the content was, whatever order the pinned parts are left in. */
:root.android .av-sheet.pg-pane>.av-grabber{order:0}
:root.android .av-sheet.pg-pane>h2{order:1}
:root.android .av-sheet.pg-pane>.pg-viewport{order:2}
:root.android .av-sheet.pg-pane>.pager{order:3}
:root.android .av-sheet.pg-pane>.av-note{order:4}
:root.android .av-sheet.pg-pane>:is(.av-sheet-actions,#av-share-import){order:5}
:root.android .av-full.pg-pane>h1{order:0}
:root.android .av-full.pg-pane>.pg-viewport{order:1}
:root.android .av-full.pg-pane>.pager{order:2}
:root.android .av-full.pg-pane>.av-mic-actions{order:3}
:root.android .av-sheet>.pager,:root.android .av-full>.pager{margin:0;padding:4px 0 0;border-top:1px solid var(--border);background:transparent}
/* A visit is four paged screens, not one long one: the document card fills what is left under the four tabs and the pane inside
   it pages, so Note · Transcript · Audio · Docs and the Sign bar never page away. */
:root.android #encounter-page .document{flex:1 1 auto;min-height:0}
:root.android #encounter-page .document-pane:not([hidden]){flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
:root.android #encounter-page .av-read{flex:1 1 auto;min-height:0}
:root.android #encounter-page .pager{margin:0;padding:6px 0 2px;border-top:1px solid var(--border);background:var(--app-bg)}
:root.android #encounter-page .pager button{min-height:48px;min-width:96px;padding:0 18px;border:1px solid var(--border);border-radius:24px;background:transparent;color:var(--accent-text);font-size:14px;font-weight:600}
:root.android #encounter-page .pager-count{margin-left:auto;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--secondary)}
}
@media(prefers-reduced-motion:reduce){
  .av-rec-bars i,.av-level i,.av-progress-bar i,dialog.av-sheet{transition:none}
  .av-away .av-dot,.av-marker-chip.pulse,.av-progress-bar.indeterminate i{animation:none}
}
