/* The platform's one visual system (DESIGN.md), loaded after every page's own styles so it governs them all.
   It is the identity of docs-docs.com carried into the product: General Sans for everything that works, Gambetta
   for a page's name, ink on a cool blue-grey ground, white panels with soft shadows, pill-shaped controls, a dark
   ink button for the one action that matters, blue for links and the chosen thing, teal for what is done. Status is
   a wash pill with a word; red means late, amber means a person is needed; nothing under 14px; no text lighter than
   Ink 3. A light rail carries the person's role, their scope and the work that needs them; on a phone it folds into
   a top bar. */
:root{
 --primary:#3d63a4;--primary-hover:#2c4c86;--primary-soft:#e8eef8;--primary-light:#5a82c2;
 --ink:#283142;--ink-2:#3c4256;--ink-3:#586073;
 --rule:#d9e0ec;--rule-strong:#c4cedf;
 --paper:#fff;--desk:#eef1f7;--raised:#e8eef8;--soft:#f2f5fa;
 --late:#c2566f;--late-soft:#fdeef1;--attention:#8f5a12;--attention-soft:#fbf2e4;--done:#16624f;--done-soft:#e3f3ef;--teal:#1f9e7f;
 --navy:#283142;--navy-2:#11162c;
 --focus:#5a82c2;
 --rail-bg:#e8eef8;--rail-ink:#283142;--rail-muted:#586073;--rail-rule:#d9e0ec;--rail-active:#fff;--rail-active-ink:#283142;--rail-w:240px;--bar-h:60px;
 --role-owner:#5b3fa6;--role-admin:#3d63a4;--role-manager:#2c4c86;--role-biller:#1f9e7f;--role-analyst:#b8742c;--role-clinic:#8a6a4b;
 --role-owner-rail:var(--role-owner);--role-admin-rail:var(--role-admin);--role-manager-rail:var(--role-manager);--role-biller-rail:var(--role-biller);--role-analyst-rail:var(--role-analyst);--role-clinic-rail:var(--role-clinic);
 --shadow-decision:0 1px 2px rgba(11,16,32,.04),0 8px 24px -16px rgba(11,16,32,.28);
 --shadow-popover:0 2px 4px rgba(11,16,32,.04),0 24px 60px -28px rgba(28,38,110,.32);
 --shadow-float:0 30px 80px -34px rgba(28,38,110,.46);
 --radius-control:10px;--radius-panel:14px;--radius-soft:22px;--radius-pill:999px;
 --ease-out:cubic-bezier(.16,1,.3,1);
 --gradient-accent:linear-gradient(100deg,#3d63a4 10%,#2f9e8f 95%);
 /* Legacy names the older stylesheets read, pointed at the system's values. */
 --blue:var(--primary);--line:var(--rule);--muted:var(--ink-3);--ink-legacy:var(--ink);--attn:var(--late);--attn-soft:var(--late-soft);--pill-line:var(--rule-strong);
 color-scheme:light;
}
/* The landing page's two voices (fonts/FONTS-DocsDocs.txt): General Sans at work, Gambetta for a page's name. */
@font-face{font-family:"General Sans";src:url('fonts/general-sans-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"General Sans";src:url('fonts/general-sans-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"General Sans";src:url('fonts/general-sans-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:Gambetta;src:url('fonts/gambetta-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
:root{--display:Gambetta,Georgia,"Times New Roman",serif;--sans:"General Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
:root{font-family:var(--sans);color:var(--ink);background:var(--desk);font-variant-numeric:tabular-nums;letter-spacing:-.011em;-webkit-font-smoothing:antialiased}
:root body :is(input,select,textarea,button){font-family:var(--sans)}
::selection{background:#dfe5ff;color:var(--ink)}
:root body{caret-color:var(--primary);accent-color:var(--primary)}
*{scrollbar-color:#c3cfd8 transparent;scrollbar-width:thin}
a{color:var(--primary);text-underline-offset:3px}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:1px;border-color:var(--primary)}

/* Text never lighter than Ink 3. */
:root body :is(small,dt,th,time,.rm-note,.empty-note,.rm-head p,.panel-head small,.rm-sub,.rm-muted,.rm-code,.back-link,.visit-meta,.vstep-meta){color:var(--ink-3)}
:root body :is(h1,h2,h3){color:var(--ink);letter-spacing:-.01em}
/* A page's name in Gambetta, as the landing page names its sections; everything else in General Sans. */
:root body h1{font-family:var(--display);font-size:34px!important;font-weight:400;letter-spacing:-.012em;line-height:1.1!important;text-wrap:balance}
:root body h1 small,:root body h1 span{font-family:var(--sans)}
:root body h2{font-size:18px!important;font-weight:600}
:root body h3{font-size:15px!important;font-weight:600}
/* The eyebrow: a short blue line above a title, as the landing page sets "Customize RCM for dental clinics". */
.eyebrow{margin:0 0 6px;font-size:14px;font-weight:500;color:var(--primary)}

/* Buttons: pills. The one action that matters is ink; the rest are white with a rule; links act in blue. */
.primary,.secondary{font-size:15px!important;font-weight:500;height:40px;padding:0 18px;border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;gap:8px;line-height:1;cursor:pointer;white-space:nowrap;transition:background .18s var(--ease-out),border-color .18s var(--ease-out),transform .18s var(--ease-out),box-shadow .18s var(--ease-out)}
:root body .primary,:root body .wbv button.primary,:root body button.primary.attn-start{background:var(--navy)!important;border:1px solid var(--navy)!important;color:#fff!important;box-shadow:none!important;animation:none!important}
:root body .primary:hover:not(:disabled){background:var(--navy-2)!important;border-color:var(--navy-2)!important;transform:translateY(-1px);box-shadow:var(--shadow-decision)!important}
:root body .primary:active:not(:disabled){transform:translateY(0);box-shadow:none!important}
:root body .secondary{background:var(--paper);border:1px solid var(--rule);color:var(--ink)}
:root body .secondary:hover:not(:disabled){border-color:var(--rule-strong);background:var(--soft);transform:translateY(-1px);box-shadow:var(--shadow-decision)}
:root body .secondary:active:not(:disabled){transform:translateY(0);box-shadow:none}
.primary:disabled,.secondary:disabled{opacity:.55;cursor:not-allowed}
a.primary,a.secondary{text-decoration:none}
:root body .text-button{font:inherit;font-size:15px;font-weight:500;color:var(--primary);background:none;border:0;padding:0;cursor:pointer;text-underline-offset:3px}
:root body .text-button:hover{color:var(--primary-hover);text-decoration:underline}

/* Status: a wash pill with a word, as the landing page's "Ready" and "Sent". */
:root body .rm-chip{display:inline-flex;align-items:center;background:var(--soft)!important;border:0;padding:2px 10px;border-radius:var(--radius-pill);font-size:14px!important;font-weight:600;color:var(--ink-2);gap:6px;white-space:nowrap;line-height:1.45!important}
:root body .rm-chip::before{content:none}
:root body .rm-chip.ok{background:var(--done-soft)!important;color:var(--done)}:root body .rm-chip.warn{background:var(--attention-soft)!important;color:var(--attention)}:root body .rm-chip.attn{background:var(--late-soft)!important;color:var(--late)}:root body .rm-chip.muted{color:var(--ink-3)}

/* The pulsing dot goes; attention is a still marker. */
:root body details.has-attn:not([open])>summary::after{animation:none!important}

/* Visit page: one sheet of paper. Sections are flat and ruled; the first item that needs a decision is raised. */
body:has(.visit-page){background:var(--paper)}
.visit-page{background:var(--paper)}
.visit-tab{display:flex;flex-direction:column;gap:0}
:root body .visit-tab :is(.case-panel,.rm-card){background:transparent;border:0;border-top:1px solid var(--rule);border-radius:0;overflow:visible;box-shadow:none}
:root body .visit-tab>:is(.case-panel,.rm-card):first-child{border-top:0}
:root body .visit-tab :is(.case-panel,.rm-card) :is(.case-panel,.rm-card){border-top:1px solid var(--rule)}
:root body .visit-tab :is(.panel-head,.rm-head){padding:24px 0 12px;border:0;background:none;min-height:0}
:root body .visit-tab .rm-body{padding:0 0 24px}
:root body .visit-tab .case-panel>:not(.panel-head){padding-left:0;padding-right:0}
:root body .visit-tab :is(.case-panel,.rm-card).is-attn:not(.is-attn ~ .is-attn){background:var(--paper);border:1px solid var(--rule-strong);border-radius:6px;box-shadow:var(--shadow-decision);padding:0 20px;margin:8px 0 24px}
:root body .visit-tab :is(.case-panel,.rm-card).is-attn:not(.is-attn ~ .is-attn)+:is(.case-panel,.rm-card){border-top:0}
:root body .visit-tab .is-attn ~ .is-attn{box-shadow:none}
:root body .visit-tab :is(.case-panel,.rm-card).is-attn :is(.panel-head,.rm-head) h2::before,:root body .visit-tab :is(.case-panel,.rm-card).is-attn :is(.panel-head,.rm-head) h3::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--attention);margin:0 10px 2px 0;vertical-align:middle}

/* Tables: ruled rows, label headers, figures aligned. */
:root body .visit-tab table{border-collapse:collapse;width:100%}
:root body .visit-tab th{font-size:14px!important;font-weight:500;text-transform:none;letter-spacing:0;color:var(--ink-3);text-align:left;padding:8px 12px 8px 0;border-bottom:1px solid var(--rule);background:none}
:root body .visit-tab td{padding:10px 12px 10px 0;border-bottom:1px solid var(--rule);color:var(--ink-2);vertical-align:top}
:root body .visit-tab :is(th,td).n{text-align:right;padding-left:12px;padding-right:24px;white-space:nowrap}
:root body .visit-tab :is(th,td):last-child{padding-right:0}
:root body .visit-tab tfoot td{border-bottom:0;font-weight:600;color:var(--ink)}

/* Fields and selects share one look. */
:root body :is(input[type=text],input[type=number],input[type=date],input[type=time],input[type=search],input:not([type]),select,textarea):not(.pill-select *,.advanced-body *,.search *,.pc-pair *,.view-switch *){border:1px solid var(--rule-strong);border-radius:4px;background-color:var(--paper);color:var(--ink);min-height:38px;padding:0 12px}
:root body textarea{padding:10px 12px;line-height:1.5}
:root body select:not(.pill-select *,.advanced-body *){appearance:none;-webkit-appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5 6 8l3.5-3.5' fill='none' stroke='%235a7080' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}

/* The legacy paragraph rule in rcm.css set every paragraph to 11px grey; paragraphs read at body size in Ink 2. */
:root body p{font-size:inherit;line-height:1.5;color:var(--ink-2)}

/* Deposit flow (Deposits list, a deposit's page, the action dialog). */
/* Labels are sentence case at 14px, never uppercase. */
.wb-stats dt,.wb-deposit-list thead th,.wb-eft-claims thead th{text-transform:none;letter-spacing:0;font-size:14px;font-weight:500;color:var(--ink-3)}
.wb-stats dd{font-size:17px;font-weight:600}
/* A deposit's page: "Needs you" is the one raised surface; its items are rows divided by rules, not nested cards. */
.claim-history-page .wb-needs{border:1px solid var(--rule-strong);border-radius:6px;box-shadow:var(--shadow-decision);background:var(--paper)}
.claim-history-page .wb-needs .panel-head h2{font-size:17px;font-weight:600;color:var(--ink)}
.claim-history-page .wb-needs>.wb-actions{padding:0 20px 12px}
.claim-history-page .wb-needs .wb-tasks,.claim-history-page .wb-needs ul.wb-task-list{margin:0;padding:0 20px;list-style:none}
.claim-history-page .wb-needs .wb-task{margin:0;padding:16px 0;border:0;border-top:1px solid var(--rule);border-radius:0;background:none;box-shadow:none;font-size:15px}
.claim-history-page .wb-needs .wb-task:first-child{border-top:0}
.claim-history-page .wb-needs .wb-task.attn-start{outline:0;animation:none}
.claim-history-page .wb-needs .wb-type{font-size:14px!important;text-transform:none;letter-spacing:0}
.claim-history-page .wb-needs .wb-task-foot{font-size:14px}
/* The tie-out reads as three ruled columns, not three boxes. */
.wb-recon3 .wb-recon-block,.wb-recon3 .wb-recon-block.is-off{border:0;border-radius:0;background:none;padding:0 16px 0 0}
.wb-recon3 .wb-recon-block+.wb-recon-block{border-left:1px solid var(--rule);padding-left:16px}
.wb-recon3 h4{font-size:14px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink)}
.wb-recon3 .wb-recon-row dt,.wb-recon3 .wb-recon-row dd{font-size:15px}.wb-recon3 .wb-recon-row small{font-size:14px;color:var(--ink-3)}
/* What happens next on an EOB, and each line's next steps. */
.claim-event-body .wb-next-steps h3{font-size:15px;font-weight:600;color:var(--ink)}
.wb-next-steps ul{border-color:var(--rule);border-radius:4px}
.wb-step{font-size:15px;color:var(--ink-2)}.wb-step-what small{font-size:14px;color:var(--ink-3)}
.wb-step-amt{color:var(--ink)}.wb-step.denial .wb-step-amt,.wb-step.review .wb-step-amt{color:var(--late)}.wb-step.pending .wb-step-amt{color:var(--attention)}
.wb-step-go{font-weight:500;color:var(--primary)}
.wb-line-steps{list-style:none;padding:0;margin:4px 0 0;display:grid;gap:4px}
.wb-line-steps li{display:flex;justify-content:space-between;gap:16px;font-size:14px}
.wb-line-steps code{font:inherit}

/* The EOB and the EFT record, one click from a payment: icon buttons, and the viewer they open. */
.wb-docbar{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.wb-doc-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border:1px solid var(--rule-strong);border-radius:6px;background:var(--paper);color:var(--ink-2);font:inherit;font-size:14px;cursor:pointer}
.wb-doc-btn:hover{border-color:var(--primary);color:var(--primary)}.wb-doc-btn svg{width:16px;height:16px;flex:none}
td .wb-doc-btn{height:26px;padding:0 8px;margin-top:4px;font-size:13px}
.wb-viewer{width:min(880px,calc(100vw - 32px));max-height:calc(100vh - 48px);padding:0;border:1px solid var(--rule-strong);border-radius:6px;background:var(--paper);overflow:hidden}
.wb-viewer::backdrop{background:rgba(20,32,44,.45)}
.wb-viewer-head{display:flex;align-items:center;gap:16px;padding:12px 20px;border-bottom:1px solid var(--rule)}
.wb-viewer-head h2{margin:0 auto 0 0;font-size:16px;font-weight:600;color:var(--ink)}
.wb-viewer-nav{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--ink-3)}.wb-viewer-nav .text-button{font-size:18px;padding:0 4px}
.wb-viewer-body{padding:16px 20px;overflow:auto;max-height:calc(100vh - 110px)}
.wb-viewer-stage{margin:-16px -20px;padding:16px;overflow:auto}
.wb-viewer-line{margin:0 0 12px;font-size:15px;color:var(--ink-2)}.wb-viewer-line b{color:var(--ink)}
.wb-viewer-table{width:100%;border-collapse:collapse;font-size:15px}
.wb-viewer-table td{padding:8px 0;border-top:1px solid var(--rule)}.wb-viewer-table td+td{padding-left:16px}
.wb-viewer-table .num{text-align:right;font-variant-numeric:tabular-nums;width:1%;white-space:nowrap}.wb-viewer-table tr.is-dup td{color:var(--ink-3)}

/* ---- Shared components, held against DESIGN.md on every screen. ---- */
}

/* Board: the four columns share one surface and differ only by their header. No tints, no chevrons, no card shadows. */
:root body .board-head{background:none;color:var(--ink);padding:6px 4px 10px;border-radius:0;clip-path:none;border-bottom:1px solid var(--rule)}
:root body .board-head h2{display:flex;align-items:baseline;gap:8px;font-size:15px!important;font-weight:600;margin:0}
:root body .board-head h2 b{font-weight:500;color:var(--ink-3);font-variant-numeric:tabular-nums;background:none;padding:0;border-radius:0;font-size:15px}
:root body .board-head .board-late{color:var(--late);font-weight:500;font-size:14px}
:root body .board-cards{background:none;padding:2px;margin-top:10px;gap:8px;border-radius:0}
:root body .task-card{border:1px solid var(--rule);border-radius:6px;box-shadow:none;padding:14px 16px 12px;transition:border-color .15s}
:root body .task-card:hover{border-color:var(--rule-strong);box-shadow:none}
:root body .task-card.is-urgent{border-color:var(--rule)}
:root body .task-who{font-size:14px;color:var(--ink-3);margin-top:4px}
:root body .task-status{display:flex;flex-direction:column;gap:2px;font-size:14px;font-weight:500;color:var(--ink-2);-webkit-line-clamp:unset}
:root body .task-status i{width:8px;height:8px;margin-right:8px;vertical-align:0}
:root body .task-status .task-late{color:var(--late)}
:root body .tone-late .task-status{color:var(--ink-2)}:root body .tone-attention .task-status{color:var(--attention)}:root body .tone-done .task-status{color:var(--done)}
:root body .tone-late .task-status i{background:var(--late)}
:root body .task-avatar{width:28px;height:28px;flex-basis:28px;font-size:14px;font-weight:600}
:root body .task-tools button{height:32px;padding:0 12px;border:1px solid var(--rule-strong);border-radius:4px;font-size:14px;color:var(--ink)}
:root body .task-tools button:hover{border-color:var(--ink-3);background:var(--raised)}
:root body :is(.task-ask,.task-note){font-size:14px}
:root body .board-empty{font-size:14px;color:var(--ink-3);padding:24px 8px;text-align:left}
#command-view .board-summary .search svg{width:16px;height:16px;color:var(--ink-3);flex:none}
#command-view .filter-toggle b{font-weight:500;color:var(--ink-3);margin-left:6px}
#command-view .filter-toggle[aria-pressed=true] b{color:inherit}
@media(min-width:1000px) and (max-width:1150px){:root body .task-board{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}:root body .board-cards{height:calc(100dvh - 240px)}}
body:has(#run-bar:not([hidden])) main,body:has(.wb-session-pill:not([hidden])) main{padding-bottom:120px}

/* Status is a wash pill with a word, everywhere. The wash of a whole row stays with the one row that needs a person. */
:root body .claim-record-status{display:inline-flex;align-items:center;background:var(--soft);padding:2px 10px;border-radius:var(--radius-pill);font-size:14px!important;font-weight:600;color:var(--ink-2);gap:6px}
:root body .claim-record-status i{display:none}
:root body .claim-record-status.tone-late{background:var(--late-soft);color:var(--late)}:root body .claim-record-status.tone-attention{background:var(--attention-soft);color:var(--attention)}:root body .claim-record-status.tone-done{background:var(--done-soft);color:var(--done)}
:root body .claim-history-page .wb-task-status{display:inline-flex;background:var(--soft);padding:2px 10px;border-radius:var(--radius-pill);font-size:14px;font-weight:600;color:var(--ink-2)}
:root body .claim-history-page .wb-task[data-tone="late"] .wb-task-status{background:var(--late-soft);color:var(--late)}
:root body .claim-history-page .wb-task[data-tone="open"] .wb-task-status{background:var(--attention-soft);color:var(--attention)}
:root body .claim-history-page .wb-task[data-tone="wait"] .wb-task-status{color:var(--ink-3)}
:root body .claim-history-page .wb-task.resolved .wb-task-status{background:var(--done-soft);color:var(--done)}
:root body .wb-chip{display:inline-flex;align-items:center;background:var(--soft);padding:2px 10px;border-radius:var(--radius-pill);font-size:14px;font-weight:600;color:var(--ink-2);gap:6px;text-transform:none;letter-spacing:0;white-space:nowrap}
:root body .wb-chip::before{content:none}
:root body .wb-chip.done{background:var(--done-soft);color:var(--done)}:root body .wb-chip.ready{background:var(--primary-soft);color:var(--primary)}:root body .wb-chip.review{background:var(--attention-soft);color:var(--attention)}:root body .wb-chip.exception{background:var(--late-soft);color:var(--late)}
:root body :is(.wb-chip.missing,.wb-chip.extracted,.wb-chip.wait){color:var(--ink-3)}
:root body .deposit-claims .wb-eft-claims tr[data-claim]:has(.wb-chip.exception) td:first-child{box-shadow:none}
:root body .rm-chip.attn{color:var(--attention)}
:root body .cal-pill{background:none;padding:0;border-radius:0;font-size:14px}
:root body .cal-chip-step{font-size:14px}
:root body .sch-tag{border-radius:4px;font-size:14px;padding:1px 8px}
/* In the Deposits list, red marks only what is late; a difference or a match to confirm needs a person (amber). */
:root body .wb-deposit-list small.wb-warn{color:var(--attention)}
:root body .wb-deposit-list .wb-dl-flag.late,:root body .wb-deposit-list .wb-dl-flag.late+small.wb-warn{color:var(--late)}
:root body .wb-deposit-list tbody tr{cursor:pointer}

/* Exception cards: no coloured side borders. The type reads in sentence case; late and open rows take their wash. */
:root body .wb-task{border:1px solid var(--rule);border-left-width:1px;border-radius:6px;background:var(--paper);padding:14px 16px;font-size:15px}
:root body .wb-task[data-tone="late"]{border-color:var(--rule);background:var(--late-soft)}
:root body .wb-task[data-tone="open"]{border-color:var(--rule);background:var(--attention-soft)}
:root body :is(.wb-task[data-tone="wait"],.wb-task.resolved){border-color:var(--rule);background:var(--paper)}
:root body .wb-type,:root body .claim-history-page .wb-type{font-size:14px!important;font-weight:500;letter-spacing:0;text-transform:none;color:var(--ink-3)!important}
:root body .claim-history-page .wb-type .wb-dot{width:8px;height:8px}
:root body .claim-history-page .wb-task[data-tone="open"] .wb-dot{background:var(--attention)}
:root body .claim-history-page .wb-task[data-tone="late"] .wb-dot{background:var(--late)}
:root body .claim-history-page .wb-task.resolved .wb-dot{background:var(--done)}
:root body .claim-history-page .wb-task .wb-next{font-size:15px;color:var(--ink-2);font-weight:400}
:root body .claim-history-page :is(.wb-task-foot,.wb-task-owner,.wb-task-due,.wb-why>summary,.wb-why[open]>div,.wb-why[open]>dl){font-size:14px}
:root body .claim-history-page .wb-task-owner select{height:32px;font-size:14px;border:1px solid var(--rule-strong);border-radius:4px}
:root body .claim-history-page .wb-task-actions details.wb-form>summary{height:38px;border:1px solid var(--rule-strong);border-radius:4px;font-size:15px;color:var(--ink)}
:root body .claim-history-page .wb-task.attn-start,:root body .attn-start{outline:0;animation:none!important}
:root body .claim-meta{font-size:14px!important;color:var(--ink-3)!important}
:root body .claim-meta span+span:before{content:none;margin:0}
:root body .claim-meta span:not(:last-child)::after{content:',';margin-right:8px}
:root body .wb-step.denial .wb-step-amt,:root body .wb-step.review .wb-step-amt{color:var(--attention)}
:root body .back-link{display:inline-flex;align-items:center;gap:4px;font-size:14px;color:var(--primary);text-decoration:none}
:root body .back-link svg{width:16px;height:16px}

/* Folds: a drawn chevron, not a text glyph. */
:root body details.more>summary::before{content:'';display:inline-block;width:8px;height:8px;margin-right:8px;border-right:1.75px solid currentColor;border-bottom:1.75px solid currentColor;transform:rotate(-45deg);transition:transform .15s;vertical-align:2px}
:root body details.more[open]>summary::before{transform:rotate(45deg)}

/* In a Needs-you list every row needs a person, so the rows stay flat and the dot carries the state. */
:root body .claim-history-page .wb-needs .wb-task[data-tone]{background:none;border-color:var(--rule)}
/* Labels are sentence case at 14px, never uppercase, never smaller. */
:root body :is(.wb-pane-section h3,.wb-sub,.wb-detail-section h4,.wb-deposit-history>summary,.wb-portal-dialog .eob-trace-wrap h3,.eob-form legend,.lp-figs dt,.sl-table th,.wb-table th,.wb-facet,.tl-axis-row,.cal-col>header span,.cal-month-head span,.team-matrix-group th,.profile-group>small,.evidence h4,.wb-summary dt){text-transform:none;letter-spacing:0;font-size:14px!important;font-weight:500;color:var(--ink-3)}
:root body :is(.eob-section h3,.set-sub h3,.team-group h3){text-transform:none;letter-spacing:0;font-size:15px!important;font-weight:600;color:var(--ink)}
:root body .wb-table{font-size:15px}
:root body .wb-table small,:root body :is(.wb-muted,.wb-warn,.wb-ok,.history-note,.rm-note,.rm-sub,.cycle-state){font-size:14px}
:root body .cycle-axis{text-transform:none;letter-spacing:0;font-size:14px}

/* Schedule: a visit that needs a person takes the wash, not a red stripe. "Needs work" is amber; red is late. */
:root body .sch-row[data-attn]{box-shadow:none;background:var(--attention-soft)}
:root body .chip-filter.sch-chips button.is-attn{border-color:var(--rule-strong);color:var(--attention)}
:root body .chip-filter.sch-chips button.is-attn[aria-pressed=true]{background:var(--attention-soft);border-color:var(--attention)}
:root body .sch-state b.attn-text,:root body .sch-day .attn-text,:root body .sch-state[data-state=attention] b{color:var(--attention)}
:root body .sch-state[data-state=attention] b i{background:var(--attention)}
:root body .sch-state[data-state=running] b i{animation:none}
:root body .cal-chip{border-left:1px solid var(--rule)}
:root body .cal-chip.tone-attention{border-left-color:var(--rule);background:var(--attention-soft)}
:root body .cal-chip.tone-attention>.cal-chip-step,:root body .cal-pill.tone-attention{color:var(--attention)}
:root body .tone-attention i{background:var(--attention)!important}
:root body :is(.cal-chip.tone-progress,.cal-chip.tone-done,.cal-chip.tone-cancelled){border-left-color:var(--rule)}

/* Eligibility workbench: the picked question is a selection, not an alert. */
:root body .wbv-entry.is-open{border-left:1px solid var(--rule);background:var(--primary-soft)}
:root body .elig-escalation{border-left:1px solid var(--rule-strong)}

/* Motion: nothing pulses; state changes are quick; reduced motion is honoured. */
@media(prefers-reduced-motion:reduce){:root body *{animation:none!important;transition:none!important}}

/* Dialogs and file inputs share the system's controls. */
:root body #qa-dialog{padding:20px 24px;border:1px solid var(--rule-strong);border-radius:6px;box-shadow:var(--shadow-popover)}
:root body input[type=file]{font-size:14px;color:var(--ink-3)}
:root body input[type=file]::file-selector-button{height:32px;padding:0 12px;margin-right:8px;border:1px solid var(--rule-strong);border-radius:4px;background:var(--paper);color:var(--ink);font:inherit;font-size:14px;cursor:pointer}

/* Page errors keep the page's name and say what failed. */
:root body .page-error{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
:root body .page-error p{margin:0;color:var(--ink-2)}
:root body .page-error .page-error-actions{display:flex;gap:8px;flex-wrap:wrap}

/* No text lighter than Ink 3 (the legacy greys that failed 4.5:1). */
:root body :is(.rm-facts dt,.tpl-help dd,.den-kv small,.pc-who span,.pc-note,.pc-missing,.pc-empty,.pc-none,.pc-practice small,.pc .panel-head small,.pc-remit-list li>span){color:var(--ink-3)}

/* Focus is visible on every control, in the system's focus colour (the older sheets switched it off on menus and the search box). */
:root body :is(a,button,summary,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--focus)!important;outline-offset:2px!important;box-shadow:none}
:root body #command-view .board-summary .search:focus-within{border-color:var(--primary);outline:2px solid var(--focus);outline-offset:1px}
:root body #command-view .board-summary .search input:focus-visible{outline:none!important}
/* Targets: a card's name link is a full-height target; the status line stacks the problem over its deadline. */
:root body .task-ref{display:inline-flex;align-items:center;min-height:24px}
:root body .task-status .task-what{display:inline-flex;align-items:baseline;gap:8px}
:root body .task-status .task-what i{margin:0;flex:none}
:root body .task-status .task-late{padding-left:16px;color:var(--late);font-weight:500}
:root body .tone-attention .task-status .task-what{color:var(--attention)}
:root body .tone-late .task-status .task-what{color:var(--ink-2)}
:root body .wb-line-toggle{min-height:24px;font-size:14px}
:root body .wb-doc-btn{height:32px}
:root body td .wb-doc-btn{height:28px}
/* Legacy greys that failed contrast as live text. */
:root body :is(dialog label,.eobd-viewer h4,h4.wb-explain-title,.wb-explain h4){color:var(--ink-3);font-size:14px}
:root body .wb-explain h4{font-size:14px!important;color:var(--late)}
:root body .wb-explain.paid h4{color:var(--ink)}
:root body .wb-deposit-list .wb-dl-open{display:inline-flex;align-items:center;min-height:24px}
.icon{width:16px;height:16px;vertical-align:-3px}
:root body .sch-icon{display:inline-flex;align-items:center;justify-content:center;padding:0 10px}
:root body .sch-settings-link{margin-left:12px}

/* ---- The rail (shell.js): where the person is, who they are, and the work that needs them. ---- */
/* The page keeps its width left of nothing: the rail is fixed, and the body makes room for it. It is light, like the
   landing page's floating navigation; the chosen page is a white pill. */
body.has-rail{padding-left:var(--rail-w)}
.rail{position:fixed;inset:0 auto 0 0;width:var(--rail-w);display:flex;flex-direction:column;background:var(--rail-bg);color:var(--rail-ink);border-right:1px solid var(--rail-rule);z-index:40;font-size:15px}
.rail a{color:inherit;text-decoration:none}
.rail .brand{display:flex;align-items:center;min-height:72px;padding:0 22px;border-bottom:1px solid var(--rail-rule)}
.rail .brand img{width:auto;height:28px;max-width:150px;object-fit:contain}
.rail .brand-wordmark{font-size:18px;font-weight:600;letter-spacing:-.02em;color:var(--ink);white-space:nowrap}
.rail-toggle{display:none}
/* The role band: the signature of the platform. Whose eyes these are, and how far they see. */
.rail-role{display:grid;grid-template-columns:10px 1fr;column-gap:10px;align-items:center;padding:14px 20px;border-bottom:1px solid var(--rail-rule)}
.rail-role i{width:10px;height:10px;border-radius:50%;background:var(--role-rail,var(--rail-muted));grid-row:1/3;box-shadow:0 0 0 3px color-mix(in srgb,var(--role-rail,var(--rail-muted)) 18%,transparent)}
.rail-role b{font-weight:600;color:var(--ink);font-size:15px}
.rail-role small{font-size:14px;color:var(--rail-muted);line-height:1.4}
.rail-role[data-role="owner"]{--role-rail:var(--role-owner-rail)}.rail-role[data-role="admin"]{--role-rail:var(--role-admin-rail)}.rail-role[data-role="manager"]{--role-rail:var(--role-manager-rail)}
.rail-role[data-role="biller"]{--role-rail:var(--role-biller-rail)}.rail-role[data-role="analyst"]{--role-rail:var(--role-analyst-rail)}.rail-role[data-role="clinic"]{--role-rail:var(--role-clinic-rail)}
.rail-nav{flex:1 1 auto;overflow:auto;padding:14px 12px 16px;scrollbar-color:var(--rail-rule) transparent;transition:opacity .2s var(--ease-out)}
.rail-nav[data-pending]{opacity:0}
.rail-group{margin:12px 8px 4px;font-size:14px;font-weight:500;color:var(--rail-muted)}
.rail-nav a,.rail-nav>button,.rail-settings>summary{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:0 12px;border:0;border-radius:var(--radius-pill);background:none;color:var(--rail-ink);font:inherit;font-size:15px!important;font-weight:500;text-align:left;cursor:pointer;box-sizing:border-box;transition:background-color .18s var(--ease-out),color .18s var(--ease-out),box-shadow .18s var(--ease-out)}
.rail-nav a:hover,.rail-nav>button:hover,.rail-settings>summary:hover{background:rgba(255,255,255,.65);color:var(--ink)}
.rail-nav a.active,.rail-nav>button.active,.rail-nav a[aria-current="page"]{background:var(--rail-active);color:var(--rail-active-ink);font-weight:600;box-shadow:var(--shadow-decision)}
.rail-nav svg{width:18px;height:18px;flex:none;color:var(--rail-muted)}
.rail-nav a.active svg,.rail-nav a:hover svg,.rail-settings>summary:hover svg{color:var(--primary)}
/* The count of what needs a person, as a figure at the row's end: the rail is the day's table of contents. */
.rail-nav b{margin-left:auto;font-weight:600;font-size:13px!important;color:var(--primary);background:var(--primary-soft);padding:1px 8px;border-radius:var(--radius-pill);font-variant-numeric:tabular-nums}
.rail-nav a.active b{background:var(--primary);color:#fff}
.rail-nav b[hidden]{display:none}
/* Settings: one row that folds the Manage pages away; open while one of them is the page. */
.rail-settings{margin-top:0}
.rail-settings>summary{list-style:none;user-select:none}
.rail-settings>summary::-webkit-details-marker{display:none}
.rail-settings>summary.active{color:var(--ink);font-weight:600}
.rail-settings>summary.active svg{color:var(--primary)}
.rail-caret{margin-left:auto;width:7px;height:7px;border-right:1.75px solid var(--rail-muted);border-bottom:1.75px solid var(--rail-muted);transform:rotate(-45deg);transition:transform .15s var(--ease-out);flex:none}
.rail-settings[open]>.rail-caret,.rail-settings[open]>summary .rail-caret{transform:rotate(45deg)}
.rail-settings-list{display:grid;gap:2px;margin:4px 0 0 13px;padding-left:5px;border-left:1px solid var(--rail-rule)}
.rail-settings-list a{min-height:36px;font-size:14px!important}
.rail-settings-list svg{width:16px;height:16px}
.rail-me{border-top:1px solid var(--rail-rule);position:relative}
.rail-me>summary{display:flex;align-items:center;gap:12px;padding:14px 20px;cursor:pointer;list-style:none;color:var(--rail-ink)}
.rail-me>summary::-webkit-details-marker{display:none}
.rail-me>summary:hover{background:rgba(255,255,255,.65)}
.rail-me .avatar{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--navy);color:#fff;font-size:14px;font-weight:600;padding:0;flex:none}
.rail-me .rail-who{display:grid;gap:2px;min-width:0}
.rail-me .rail-who b{font-weight:600;color:var(--ink);font-size:15px}
.rail-me .rail-who small{font-size:14px;color:var(--rail-muted);overflow-wrap:anywhere}
.rail-me .profile-panel{position:absolute;left:12px;right:12px;bottom:calc(100% + 6px);top:auto;width:auto;max-width:none;background:var(--paper);color:var(--ink);border:1px solid var(--rule-strong);border-radius:var(--radius-panel);box-shadow:var(--shadow-popover);z-index:50}
.rail-me .profile-who{display:flex;align-items:center;gap:12px;padding:12px 16px 14px;border-bottom:1px solid var(--rule)}
.rail-me .profile-who .avatar{background:var(--primary-soft);color:var(--primary)}
.rail-me .profile-who b{color:var(--ink)}.rail-me .profile-who small{color:var(--ink-3);font-size:14px}
.rail-me .profile-group{display:grid;padding:8px 0;border-bottom:1px solid var(--rule)}
.rail-me .profile-group:last-child{border-bottom:0}
.rail-me .profile-group small{padding:4px 16px;font-size:14px;color:var(--ink-3)}
.rail-me .profile-group a,.rail-me .profile-group button{display:block;width:100%;padding:8px 16px;border:0;background:none;color:var(--ink);font:inherit;font-size:15px;text-align:left;cursor:pointer;text-decoration:none}
.rail-me .profile-group a:hover,.rail-me .profile-group button:hover{background:var(--raised)}
.rail-me .profile-group a[aria-current="page"]{color:var(--primary);font-weight:600}
.rail-sign{align-self:flex-start;margin:14px 12px 6px;padding:3px 12px;border-radius:var(--radius-pill);background:rgba(255,255,255,.7);font-size:13px;color:var(--rail-muted)}
.rail-sign b{color:var(--attention);font-weight:600}
:root body .rail-sign{color:var(--rail-muted)}
/* The old tabs are gone; a page that still mounts the bar gets the rail in its place. */
:root body .app-bar{display:none}
.view-as-strip{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 28px;background:var(--attention-soft);border-bottom:1px solid var(--rule);font-size:15px;color:var(--ink)}
.view-as-strip .text-button{color:var(--primary);font-size:15px;padding:0}
@media(max-width:1180px){:root{--rail-w:208px}.rail .brand,.rail-role,.rail-me>summary{padding-left:16px;padding-right:16px}}

/* ---- Page deck: every page opens the same way. The name, what it is as of, and the controls that scope it. ---- */
.deck{display:flex;align-items:flex-end;justify-content:space-between;gap:16px 24px;flex-wrap:wrap;margin:0 0 20px}
.deck h1{margin:0}
.deck p{margin:4px 0 0;color:var(--ink-3);font-size:15px}
.deck-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
/* A row of figures: label above the number, ruled between, never a grid of same-size cards. */
.figures{display:flex;flex-wrap:wrap;margin:0 0 24px;padding:0;border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--paper);list-style:none}
.figures>li{flex:1 1 160px;display:grid;gap:4px;padding:14px 20px;border-right:1px solid var(--rule);min-width:0}
.figures>li:last-child{border-right:0}
.figures span{font-size:14px;color:var(--ink-3)}
.figures data,.figures .fig{display:block;font-size:24px;font-weight:600;letter-spacing:-.01em;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.2}
.figures small{font-size:14px;color:var(--ink-3)}
.figures .is-late data{color:var(--late)}.figures .is-attention data{color:var(--attention)}
/* A ruled table: the platform's data table, used by the overview, the console and the reports. */
.ruled{width:100%;border-collapse:collapse;font-size:15px}
.ruled th{font-size:14px!important;font-weight:500;color:var(--ink-3);text-align:left;padding:10px 12px;border-bottom:1px solid var(--rule);white-space:nowrap}
.ruled td{padding:12px;border-bottom:1px solid var(--rule);color:var(--ink-2);vertical-align:top}
.ruled tr:last-child td{border-bottom:0}
.ruled :is(th,td).n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ruled td.k{color:var(--ink);font-weight:600}
.ruled tbody tr:hover td{background:var(--raised)}
.ruled .muted{color:var(--ink-3)}
.ruled a{color:var(--primary)}
/* Status, everywhere: a dot and a word. */
.state{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:var(--ink-2);white-space:nowrap}
.state::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}
.state.on{color:var(--done)}.state.off{color:var(--ink-3)}.state.late{color:var(--late)}.state.attention{color:var(--attention)}.state.info{color:var(--primary)}
/* Who: a role in its colour, as a word (the Team page's chips take the same form). */
:root body .team-role-chip{display:inline-flex;align-items:center;gap:8px;background:none;padding:0;border-radius:0;font-size:14px;font-weight:500;color:var(--role,var(--ink-2))}
:root body .team-role-chip::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}
:root body .team-role-chip[data-role="owner"]{--role:var(--role-owner)}:root body .team-role-chip[data-role="admin"]{--role:var(--role-admin)}:root body .team-role-chip[data-role="manager"]{--role:var(--role-manager)}
:root body .team-role-chip[data-role="biller"]{--role:var(--role-biller)}:root body .team-role-chip[data-role="analyst"]{--role:var(--role-analyst)}:root body .team-role-chip[data-role="clinic"]{--role:var(--role-clinic)}
/* Who: a role in its colour, as a word. */
.role{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:500;color:var(--role,var(--ink-2))}
.role::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor}
.role[data-role="owner"]{--role:var(--role-owner)}.role[data-role="admin"]{--role:var(--role-admin)}.role[data-role="manager"]{--role:var(--role-manager)}
.role[data-role="biller"]{--role:var(--role-biller)}.role[data-role="analyst"]{--role:var(--role-analyst)}.role[data-role="clinic"]{--role:var(--role-clinic)}
/* Two or three panels side by side, each its own ruled section. */
.panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px;margin:0 0 16px}
.panels>.case-panel{min-width:0}
.panel-body{padding:16px 20px}
.panel-body>p:first-child{margin-top:0}
.panel-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px;border-top:1px solid var(--rule);font-size:14px;color:var(--ink-3)}
.panel-foot a{color:var(--primary);font-weight:500}
/* A setting read back: label, its value, and where it is changed. */
.readback{list-style:none;margin:0;padding:0}
.readback>li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;align-items:center;padding:12px 20px;border-top:1px solid var(--rule)}
.readback>li:first-child{border-top:0}
.readback .rb-label{color:var(--ink);font-weight:500}
.readback .rb-hint{grid-column:1;font-size:14px;color:var(--ink-3)}
.readback .rb-value{grid-column:2;grid-row:1/3;display:flex;align-items:center;gap:12px;font-size:15px;color:var(--ink-2);white-space:nowrap}
.readback .rb-value a{color:var(--primary);font-size:14px;font-weight:500}
/* Horizontal comparison bars (one per clinic or payer): the bar is the figure, the number sits at its end. */
.bars{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.bars>li{display:grid;grid-template-columns:minmax(120px,180px) 1fr auto;gap:12px;align-items:center;font-size:14px}
.bars .bar{height:10px;border-radius:5px;background:var(--raised);overflow:hidden}
.bars .bar i{display:block;height:100%;background:var(--primary);border-radius:5px;transition:width .4s var(--ease-out)}
.bars .bar i.late{background:var(--late)}.bars .bar i.attention{background:var(--attention)}
.bars data{font-variant-numeric:tabular-nums;color:var(--ink);font-weight:500;min-width:72px;text-align:right}
/* A window switch (30, 90, 180, 365 days): one group, the chosen one filled. */
.segmented{display:inline-flex;border:1px solid var(--rule-strong);border-radius:var(--radius-control);overflow:hidden}
.segmented button{height:34px;padding:0 12px;border:0;border-left:1px solid var(--rule-strong);background:var(--paper);color:var(--ink-2);font:inherit;font-size:14px;cursor:pointer}
.segmented button:first-child{border-left:0}
.segmented button[aria-pressed=true]{background:var(--primary);color:#fff;font-weight:600}
.segmented button:hover:not([aria-pressed=true]){background:var(--raised)}

/* ---- The Board as a biller's queue: the day's count by what blocks it, each a filter. ---- */
.queue-strip{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.queue-strip button{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 12px;border:1px solid var(--rule-strong);border-radius:var(--radius-control);background:var(--paper);color:var(--ink);font:inherit;font-size:14px;cursor:pointer}
.queue-strip button b{font-weight:600;font-variant-numeric:tabular-nums}
.queue-strip button[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:#fff}
.queue-strip button.is-late{color:var(--late)}.queue-strip button.is-late[aria-pressed=true]{background:var(--late);border-color:var(--late);color:#fff}
.queue-strip button.is-attention{color:var(--attention)}.queue-strip button.is-attention[aria-pressed=true]{background:var(--attention);border-color:var(--attention);color:#fff}
.queue-strip .queue-strip-lead{display:inline-flex;align-items:center;font-size:15px;color:var(--ink-2);margin-right:4px}

/* ---- Read-only roles: an analyst sees the figures and never a control that acts. ---- */
html[data-role="analyst"] :is(.an-section a[href*="visit"],.an-section a[href^="#"]){pointer-events:none;color:inherit;text-decoration:none}
html[data-role="analyst"] .an-head .text-button[data-acts]{display:none}

/* ---- Sign in: the landing page's hero, with a door. The side panel sets the headline the way the landing page
   does: General Sans at 600, tight, with the second line in the blue-to-teal gradient. ---- */
body.login-page{padding:0;background:var(--desk);min-height:100vh}
/* Two full-height halves: the story on the left, the form on the right, both centred on the same line. */
:root body main.login{display:grid;grid-template-columns:minmax(440px,44%) minmax(0,1fr);min-height:100vh;padding:0;margin:0;max-width:none}
.login-side{background:var(--raised);color:var(--ink);padding:44px clamp(40px,5vw,72px);display:grid;grid-template-rows:auto 1fr auto;border-right:1px solid var(--rule)}
.login-side .brand{padding:0;justify-self:start}
.login-side .brand img{height:32px;width:auto}
.login-side .brand-wordmark{font-size:24px;font-weight:600;letter-spacing:-.02em;color:var(--ink)}
.login-pitch{align-self:center;display:grid;gap:20px;max-width:460px;padding:40px 0}
:root body .login-side h1{font-family:var(--sans);font-size:clamp(36px,3.4vw,48px)!important;font-weight:600;letter-spacing:-.035em;line-height:1.04!important;color:var(--ink);margin:0;text-wrap:balance}
:root body .login-side h1 .accent{display:block;width:fit-content;margin:0;font-size:inherit;letter-spacing:inherit;font-weight:inherit;font-family:inherit;background:var(--gradient-accent);-webkit-background-clip:text;background-clip:text;color:transparent;padding-bottom:.08em}
:root body .login-pitch>p{margin:0;font-size:16px;line-height:1.55;color:var(--ink-2);max-width:40ch}
:root body .login-side .login-foot{margin:0;font-size:14px;color:var(--ink-3)}
.login-main{padding:48px;display:grid;place-items:center}
#doors{display:grid;gap:36px}
.doors{display:grid;grid-template-columns:repeat(auto-fit,minmax(188px,1fr));gap:16px;margin:0;padding:0;list-style:none;align-items:stretch}
.door{display:grid;grid-template-rows:auto auto 1fr;border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--paper);min-width:0}
.door-head{display:grid;gap:4px;padding:16px 18px 12px;border-bottom:1px solid var(--rule)}
.door-head h3{margin:0;display:flex;align-items:center;gap:8px}
.door-head h3::before{content:'';width:10px;height:10px;border-radius:50%;background:var(--role,var(--ink-3))}
.door[data-role="owner"]{--role:var(--role-owner)}.door[data-role="admin"]{--role:var(--role-admin)}.door[data-role="manager"]{--role:var(--role-manager)}
.door[data-role="biller"]{--role:var(--role-biller)}.door[data-role="analyst"]{--role:var(--role-analyst)}.door[data-role="clinic"]{--role:var(--role-clinic)}
.door-head p{margin:0;font-size:14px;color:var(--ink-3)}
.door-lands{padding:8px 18px;font-size:14px;color:var(--ink-3);border-bottom:1px solid var(--rule)}
.door-lands b{color:var(--ink-2);font-weight:500}
.door-people{display:grid;align-content:start;margin:0;padding:6px 0;list-style:none;max-height:292px;overflow:auto;scrollbar-width:thin}
.door-people button{display:grid;grid-template-columns:36px 1fr;column-gap:12px;align-items:center;width:100%;padding:10px 18px;border:0;background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:background-color .15s var(--ease-out)}
.door-people button:hover{background:var(--raised)}
.door-people button[aria-current="true"]{background:var(--primary-soft)}
.door-people .avatar{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--raised);color:var(--ink-2);font-size:14px;font-weight:600;padding:0;grid-row:1/3}
.door-people b{font-weight:600;font-size:15px}
.door-people small{display:block;font-size:14px;color:var(--ink-3)}
.door-empty{padding:12px 18px;font-size:14px;color:var(--ink-3)}
.login-more{margin:16px 0 0}
.login-more>summary{font-size:15px;color:var(--primary);cursor:pointer}
.login-more .doors{margin-top:12px}
.login-status{margin:16px 0 0;font-size:15px;color:var(--ink-2)}
.login-closed{padding:24px;border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--paper);max-width:520px}
@media(max-width:900px){:root body main.login{grid-template-columns:1fr}.login-side{padding:28px 24px}.login-main{padding:24px}}

/* ---- Sign in with an account, an invitation, a reset. ---- */
.login-form{display:grid;gap:16px;width:400px;max-width:100%;padding:36px;border:1px solid var(--rule);border-radius:var(--radius-soft);background:var(--paper);box-shadow:var(--shadow-popover)}
.login-form h2{margin:0;font-size:22px!important}.login-form>p{margin:-6px 0 0;color:var(--ink-3)}
.login-form label{display:grid;gap:6px;font-size:14px;font-weight:500;color:var(--ink-2)}
.login-form input{height:44px;padding:0 14px;border:1px solid var(--rule-strong);border-radius:var(--radius-control);background:var(--paper);color:var(--ink);font:inherit;font-size:15px}
.login-form label small{font-weight:400;color:var(--ink-3)}
.login-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.login-form .login-status{margin:0;font-size:14px}.login-form .login-status.attn-text{color:var(--late)}
.login-signed{margin:0;padding-top:12px;border-top:1px solid var(--rule);font-size:14px;color:var(--ink-2)}
.login-signed .text-button{font:inherit;color:var(--primary);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
/* The doors fold away under the form: a sandbox tool, not the way in. */
.login-doors{margin:0;padding:0;border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--paper);max-width:400px}
.login-doors[open]{max-width:none}
.login-doors>summary{display:flex;align-items:center;gap:12px;padding:14px 18px;cursor:pointer;list-style:none;color:var(--ink)}
.login-doors>summary::-webkit-details-marker{display:none}
.login-doors>summary::before{content:'';width:8px;height:8px;margin-left:4px;border-right:1.75px solid var(--ink-3);border-bottom:1.75px solid var(--ink-3);transform:rotate(-45deg);transition:transform .15s var(--ease-out);flex:none}
.login-doors[open]>summary::before{transform:rotate(45deg)}
.login-doors>summary span{display:grid;gap:2px}.login-doors>summary b{font-weight:600;font-size:15px}.login-doors>summary small{font-size:14px;color:var(--ink-3)}
.login-doors-body{padding:4px 18px 18px;border-top:1px solid var(--rule)}
.login-doors-body .doors{margin-top:14px}
/* The side's story: the six rooms of the revenue cycle, drawn in the rail's stroke. */
.login-rooms{list-style:none;margin:8px 0 0;padding:0;border-top:1px solid var(--rule)}
.login-rooms li{display:grid;grid-template-columns:20px 136px minmax(0,1fr);column-gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--rule);font-size:14px;line-height:1.4}
.login-rooms svg{width:20px;height:20px;fill:none;stroke:var(--primary);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.login-rooms b{font-weight:600;color:var(--ink)}.login-rooms small{font-size:14px;color:var(--ink-3)}
.login-check{display:flex!important;align-items:center;gap:8px;font-weight:400!important}
/* While a page waits, its shape (skeleton.js): grey blocks that shimmer once a second, never the word "Loading". */
.skeleton{display:grid;gap:16px;animation:sk-in .25s var(--ease-out) both}
.sk{display:block;border-radius:6px;background:linear-gradient(90deg,var(--raised) 0%,color-mix(in srgb,var(--raised) 55%,#fff) 45%,var(--raised) 90%);background-size:220% 100%;animation:sk-shimmer 1.1s linear infinite}
@keyframes sk-shimmer{from{background-position:120% 0}to{background-position:-100% 0}}
@keyframes sk-in{from{opacity:0}to{opacity:1}}
.sk-head{display:grid;gap:8px;margin:4px 0 6px}.sk-title{width:260px;height:30px;border-radius:8px}.sk-sub{width:380px;height:15px;max-width:80%}
.sk-line{height:12px;max-width:100%}.sk-line+.sk-line{margin-top:10px}
.sk-card{display:grid;gap:0;padding:18px 20px;border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--paper)}
.sk-card-title{width:160px;height:16px;margin-bottom:14px}
.sk-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px}
.sk-figures{display:flex;flex-wrap:wrap;border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--paper)}
.sk-figures>div{flex:1 1 160px;display:grid;gap:8px;padding:14px 20px;border-right:1px solid var(--rule)}.sk-figures>div:last-child{border-right:0}
.sk-figures .sk-line+.sk-line,.sk-figures .sk-fig+.sk-line{margin-top:0}.sk-fig{width:96px;height:26px;border-radius:7px}
.sk-chart{height:240px;border-radius:var(--radius-panel)}
.sk-tabs{display:flex;gap:18px;padding:0 0 10px;border-bottom:1px solid var(--rule)}.sk-tabs .sk-line{height:14px;margin:0!important}
.sk-rows{display:grid;border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--paper)}
.sk-row{display:grid;grid-template-columns:36px 1fr 72px;gap:14px;align-items:center;padding:14px 20px;border-top:1px solid var(--rule)}.sk-row:first-child{border-top:0}
.sk-row>span{display:grid;gap:8px}.sk-row>span .sk-line{margin:0!important}
.sk-dot{width:36px;height:36px;border-radius:50%}.sk-pill{width:72px;height:24px;border-radius:var(--radius-pill)}
.sk-row-wide{grid-template-columns:1fr 3fr}.sk-steps{display:flex;gap:8px}.sk-step{width:28px;height:28px;border-radius:50%}
.sk-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding:4px 0}
.sk-board>div{display:grid;gap:10px;align-content:start}.sk-board .sk-card{padding:14px 16px;gap:0}
.sk-lines{display:grid;padding:4px 0}
@media(max-width:900px){.sk-board{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.sk-board{grid-template-columns:1fr}.sk-row-wide{grid-template-columns:1fr}}
/* When the data lands the sections take their places one after another, from the top. */
.is-revealing>*{animation:reveal-up .42s var(--ease-out) both;animation-delay:calc(var(--reveal-i,0) * 70ms)}
@keyframes reveal-up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* Rows a person acts on answer the pointer. */
.figures>li{transition:background-color .18s var(--ease-out)}.figures>li:hover{background:var(--raised)}
.team-person,.acct-sessions li,.auth-log li,.team-invites>li{transition:background-color .18s var(--ease-out)}
.team-person:hover,.auth-log li:hover,.team-invites>li:hover{background:var(--raised)}
/* A passkey in place of the password: the device's own unlock. */
.login-passkey{display:grid;padding-top:16px;border-top:1px solid var(--rule)}
#login-form .login-actions{display:grid}
:root body #login-form :is(.login-actions .primary,.login-passkey button){display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:44px}
.login-field{display:grid;gap:6px}
.login-field-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
:root body .login-field-head label{font-size:14px;font-weight:500;color:var(--ink-2)}
.login-field-head a{font-size:14px;color:var(--primary)}
.login-field-head a:hover{text-decoration:underline;text-underline-offset:3px}
.login-passkey svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
/* The password again, before a sensitive change: one dialog over the page. */
dialog.reauth{width:min(420px,calc(100vw - 32px));padding:0;border:1px solid var(--rule);border-radius:var(--radius-soft);background:var(--paper);color:var(--ink);box-shadow:var(--shadow-popover)}
dialog.reauth::backdrop{background:rgba(40,49,66,.45)}
.reauth-form{display:grid;gap:14px;padding:24px 28px}
.reauth-form h2{margin:0;font-size:20px}.reauth-why{margin:-6px 0 0;font-size:14px;color:var(--ink-2);line-height:1.45}
.reauth-form label{display:grid;gap:6px;font-size:14px;font-weight:500;color:var(--ink-2)}
.reauth-form input{height:42px;padding:0 14px;border:1px solid var(--rule-strong);border-radius:var(--radius-control);background:var(--paper);color:var(--ink);font:inherit;font-size:15px}
.reauth-form .set-status{margin:0;min-height:1em;font-size:14px}.reauth-form .set-status.attn-text{color:var(--late)}
.reauth-actions{display:flex;align-items:center;gap:16px}
/* Passkeys on the account page, and the company's ask at the top of it. */
.acct-lead{margin:0;font-size:14px;color:var(--ink-2);line-height:1.5}
.acct-passkey-list{list-style:none;margin:0;padding:0;border:1px solid var(--rule);border-radius:var(--radius-panel)}
.acct-passkey-list li{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 16px;border-top:1px solid var(--rule)}.acct-passkey-list li:first-child{border-top:0}
.acct-passkey-list b{font-weight:600}.acct-passkey-list small{display:block;color:var(--ink-3)}
.acct-notice{margin:0 0 16px;padding:14px 18px;border:1px solid var(--rule);border-left:4px solid var(--teal);border-radius:var(--radius-panel);background:var(--paper);font-size:14px;color:var(--ink-2);line-height:1.5}
.acct-notice b{color:var(--ink)}
/* Settings, Team: the security policy and the sign-in log. */
.sec-form{display:grid;gap:16px;padding:16px 20px;max-width:640px}
.sec-form label{display:grid;gap:6px;font-size:14px;font-weight:500;color:var(--ink-2)}.sec-form label small{font-weight:400;color:var(--ink-3);line-height:1.45}
.sec-form select{height:40px;padding:0 12px;border:1px solid var(--rule-strong);border-radius:var(--radius-control);background:var(--paper);color:var(--ink);font:inherit;font-size:14px;max-width:360px}
.sec-form select:disabled{color:var(--ink-3);background:var(--raised)}
.auth-log{list-style:none;margin:0;padding:0;font-size:14px}
.auth-log li{display:grid;grid-template-columns:150px 1fr;gap:2px 16px;padding:10px 20px;border-top:1px solid var(--rule)}.auth-log li:first-child{border-top:0}
.auth-log time{color:var(--ink-3);font-variant-numeric:tabular-nums}.auth-log b{font-weight:600}.auth-log span{grid-column:2;color:var(--ink-3)}
.auth-log li.failed b{color:var(--late)}
@media(max-width:640px){.auth-log li{grid-template-columns:1fr}.auth-log span{grid-column:1}}
.login-form input[name=code]{font-size:20px;letter-spacing:.18em;font-variant-numeric:tabular-nums;max-width:240px}
/* Two-step verification on the account page. */
.acct-2fa{display:grid;gap:14px;padding:16px 20px}
.acct-2fa-state{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.acct-2fa-state .state{font-size:14px}
.acct-2fa-setup{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:start;padding:16px;border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--soft)}
.acct-2fa-setup svg{width:192px;height:192px;border-radius:8px;background:#fff;padding:6px;box-sizing:content-box;border:1px solid var(--rule)}
.acct-2fa-setup ol{margin:0;padding-left:18px;display:grid;gap:8px;font-size:14px;color:var(--ink-2)}
.acct-2fa-secret{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:13px;letter-spacing:.06em;word-break:break-all;color:var(--ink);user-select:all}
.acct-codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;margin:0;padding:12px 16px;border:1px dashed var(--rule-strong);border-radius:var(--radius-control);list-style:none;font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:14px;letter-spacing:.06em}
@media(max-width:640px){.acct-2fa-setup{grid-template-columns:1fr}}
.door-people button:disabled{cursor:not-allowed;opacity:.6}
.login-closed h2{margin:0 0 8px}
.invite-form{max-width:520px}
.invite-role{display:grid;gap:8px;padding:14px 16px;border:1px solid var(--rule);border-left:4px solid var(--role,var(--ink-3));border-radius:var(--radius-panel);background:var(--raised)}
.invite-role[data-role="owner"]{--role:var(--role-owner)}.invite-role[data-role="admin"]{--role:var(--role-admin)}.invite-role[data-role="manager"]{--role:var(--role-manager)}
.invite-role[data-role="biller"]{--role:var(--role-biller)}.invite-role[data-role="analyst"]{--role:var(--role-analyst)}.invite-role[data-role="clinic"]{--role:var(--role-clinic)}
.invite-role h3{margin:0}.invite-role p{margin:0;font-size:14px;color:var(--ink-2)}
.invite-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px 16px;margin:4px 0 0}.invite-facts div{display:grid;gap:2px}.invite-facts dt{font-size:13px;color:var(--ink-3)}.invite-facts dd{margin:0;font-size:14px;color:var(--ink)}
.welcome-strip{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:0 0 16px;padding:12px 16px;border:1px solid var(--rule);border-left:4px solid var(--primary);border-radius:var(--radius-panel);background:var(--primary-soft);font-size:14px;color:var(--ink-2)}
.welcome-strip .text-button{flex:none}
/* Account settings. */
.acct-card .acct-form{padding:16px 20px}.acct-form label{display:grid;gap:4px;font-size:14px;color:var(--ink-2)}.acct-form .set-text{width:100%;max-width:360px;box-sizing:border-box}.acct-form label small{color:var(--ink-3)}
.acct-check{display:flex!important;align-items:center;gap:8px}
.acct-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px 16px;margin:0}.acct-facts div{display:grid;gap:4px}.acct-facts dt{font-size:13px;color:var(--ink-3)}.acct-facts dd{margin:0;font-size:14px}
.acct-sessions{list-style:none;margin:0;padding:0}.acct-sessions li{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 20px;border-top:1px solid var(--rule)}.acct-sessions li:first-child{border-top:0}
.acct-sessions li.current{background:var(--raised)}.acct-sessions b{font-weight:600}.acct-sessions small{display:block;color:var(--ink-3)}
.acct-end-all{display:flex;align-items:center;gap:12px;padding:12px 20px;border-top:1px solid var(--rule)}
/* Getting started: one list of steps, the current one raised. */
.onb-sites{height:auto;padding:8px 10px;font:inherit;resize:vertical}
.onb-head h1{margin:0}.onb-head .onb-progress{margin:6px 0 0;color:var(--ink-3);font-size:14px}.onb-progress b{color:var(--ink)}
.onb-steps{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:12px}
.onb-step .panel-head{display:flex;align-items:center;gap:12px}.onb-step .panel-head h2{flex:1;min-width:0}
.onb-mark{flex:none;display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--raised);color:var(--ink-2);font-size:13px;font-weight:600}
.onb-step.done .onb-mark{background:var(--done-soft);color:var(--done)}.onb-step.current .onb-mark{background:var(--primary);color:#fff}
:root body .onb-step.current{border-color:var(--primary-light)}
:root body .onb-step.done{box-shadow:none}.onb-step.done .panel-head h2{font-weight:500;color:var(--ink-2)}.onb-step.done:not(:has(.onb-body)) .panel-head{border-bottom:0}
.onb-body{display:grid;gap:12px;padding:16px 20px}.onb-body>.set-status:empty{display:none}
.logo-field{display:grid;gap:12px;justify-items:start}.logo-field>.set-status:empty{display:none}.logo-preview{display:flex;align-items:center;justify-content:center;width:220px;height:72px;padding:10px 14px;box-sizing:border-box;border:1px solid var(--rule);border-radius:var(--radius-control);background:var(--paper)}.logo-preview img{max-width:100%;max-height:100%;object-fit:contain}
.set-card-body{padding:16px 20px}
.onb-form{display:grid;gap:12px}.onb-form label{display:grid;gap:4px;font-size:14px;color:var(--ink-2)}.onb-form .set-text{width:100%;max-width:360px;box-sizing:border-box}.onb-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.onb-clinics{list-style:none;margin:0;padding:0;display:grid;gap:4px}.onb-clinics li{display:flex;gap:8px;align-items:baseline;font-size:14px}.onb-clinics small{color:var(--ink-3)}
:root body .onb-body .onb-clinics li{border:0;padding:0;background:none}:root body .onb-body .add-clinic{padding:0;margin:0;border:0;background:none}:root body .onb-body .add-clinic>summary{padding:0}
.add-clinic .onb-form{margin-top:4px;padding:16px;border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--soft)}
.add-clinic>summary{list-style:none;display:inline-flex;cursor:pointer;font-size:14px}.add-clinic>summary::-webkit-details-marker{display:none}.add-clinic[open]>summary{display:none}
.ov-add{padding:14px 20px 16px}.ov-add .add-clinic{border:0;padding:0;margin:0;background:none}.ov-add .add-clinic .onb-form{max-width:none}
.onb-form .team-client{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;color:var(--ink);font-size:14px;cursor:pointer}
.onb-form .team-client input{margin:0;accent-color:var(--primary)}.onb-form .team-client:has(input:checked){border-color:var(--primary);background:var(--primary-soft,rgba(61,99,164,.08))}
.onb-clinics-pick{border:0;margin:0;padding:0;display:grid;gap:6px}.onb-clinics-pick legend{padding:0;margin-bottom:6px;font-size:14px;color:var(--ink-2)}
.login-setup{margin:0 0 24px;border-left:4px solid var(--primary)}

/* ---- The landing page's components, carried through every screen. ---- */
/* Surfaces: white panels with a soft rule and a soft shadow, rounded as the landing's cards are. */
:root body :is(.case-panel,.set-card,.rm-card,.figures,.queue-table,.claim-chronology,.an-section,.acct-card,.onb-step,.login-closed,.deposit-claims){border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--paper);box-shadow:var(--shadow-decision)}
:root body .an-section{border-top:1px solid var(--rule)}
:root body :is(.case-panel,.set-card)>.panel-head{padding:16px 20px;border-bottom:1px solid var(--rule)}
:root body :is(.case-panel,.set-card)>.panel-head h2{font-size:16px!important}
/* Page heads: the serif name, a muted line under it, and the controls at the end. */
:root body .page-head,:root body .deck{align-items:flex-end;margin:0 0 22px;background:none;padding:0;border:0}
/* Window switches and view toggles: one group, the chosen one a white pill. */
:root body :is(.an-window,.an-toggle){border:1px solid var(--rule);border-radius:var(--radius-pill);background:var(--raised);padding:3px;gap:2px;overflow:visible}
:root body :is(.an-window,.an-toggle) button{border:0!important;border-radius:var(--radius-pill);padding:6px 14px;background:none}
:root body :is(.an-window,.an-toggle) button[aria-pressed="true"]{background:var(--paper);color:var(--ink);box-shadow:var(--shadow-decision)}
/* A form's save bar inside an account card carries the button, not a second box. */
:root body .acct-form .set-savebar{position:static;border:0;background:none;box-shadow:none;padding:4px 0 0}
:root body :is(.page-head,.deck) p{color:var(--ink-3);font-size:15px}
/* Fields: a rounded box, a blue ring when it has the cursor. */
:root body :is(input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=time],input[type=search],input:not([type]),select,textarea):not(.pill-select *,.advanced-body *,.search *,.pc-pair *,.view-switch *,.set-switch){border:1px solid var(--rule-strong);border-radius:var(--radius-control);background-color:var(--paper);color:var(--ink);min-height:40px;padding:0 12px;transition:border-color .15s,box-shadow .15s}
/* A menu keeps room on the right for its arrow. */
:root:root body select:not(.pill-select *,.advanced-body *,.search *,.pc-pair *,.view-switch *){padding-right:34px}
:root body :is(input,select,textarea):not(.set-switch,.search input):focus-visible{outline:0!important;border-color:var(--primary)!important;box-shadow:0 0 0 3px rgba(61,99,164,.18)!important}
:root body input[type=checkbox],:root body input[type=radio]{accent-color:var(--primary);width:16px;height:16px}
:root body .set-text{border-radius:var(--radius-control)}
:root body .search{border-radius:var(--radius-pill)}
/* The search box is the field: one ring on the box, none on the input inside it. */
:root body #command-view .board-summary .search:focus-within{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px rgba(61,99,164,.18)}
:root body .search input:focus-visible{outline:0!important;box-shadow:none!important;background:none}
/* Pills: badges, roles, states and tabs. */
:root body .set-badge{padding:2px 10px;border-radius:var(--radius-pill);background:var(--primary-soft);color:var(--primary);font-size:13px!important;font-weight:600}
:root body .set-badge.off{background:var(--late-soft);color:var(--late)}
:root body .team-role-chip,:root body .role{display:inline-flex;align-items:center;gap:0;padding:2px 10px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--role,var(--ink-2)) 12%,#fff);font-size:13px;font-weight:600;color:var(--role,var(--ink-2))}
:root body .team-role-chip::before,:root body .role::before{content:none}
:root body .team-roles .team-role-chip{justify-self:start;width:fit-content}
:root body .state{padding:2px 10px;border-radius:var(--radius-pill);background:var(--soft);font-weight:600;gap:0}
:root body .state::before{content:none}
:root body .state.on{background:var(--done-soft)}:root body .state.late{background:var(--late-soft)}:root body .state.attention{background:var(--attention-soft)}:root body .state.info{background:var(--primary-soft)}
:root body .sch-tag,:root body .cal-pill{border-radius:var(--radius-pill)}
:root body .set-tabs{gap:6px;border-bottom:0;padding:4px;background:var(--raised);border-radius:var(--radius-pill);width:fit-content;max-width:100%;overflow-x:auto}
:root body .set-tabs a{padding:8px 14px;border:0;border-radius:var(--radius-pill);margin:0;color:var(--ink-2);font-weight:500;white-space:nowrap}
:root body .set-tabs a[aria-current="page"]{background:var(--paper);color:var(--ink);box-shadow:var(--shadow-decision);font-weight:600}
:root body .segmented{border-radius:var(--radius-pill);border-color:var(--rule);background:var(--raised);padding:3px;gap:2px}
:root body .segmented button{border:0;border-radius:var(--radius-pill);background:none;height:30px}
:root body .segmented button[aria-pressed=true]{background:var(--paper);color:var(--ink);box-shadow:var(--shadow-decision)}
:root body .queue-strip button{border-radius:var(--radius-pill);border-color:var(--rule)}
:root body .queue-strip button[aria-pressed=true]{background:var(--navy);border-color:var(--navy)}
:root body :is(.pill-select,.pill-menu>summary,.filter-toggle,.chip-filter button,.wb-doc-btn,.task-tools button,.queue-strip button){border-radius:var(--radius-pill)}
:root body .task-card{border-radius:var(--radius-panel)}
/* A card's name keeps its words whole; a long amount label wraps instead. */
:root body .task-ref{overflow-wrap:normal;word-break:normal;min-width:0;letter-spacing:0}
:root body .task-amount{white-space:normal;text-align:right;max-width:52%;line-height:1.3}
:root body .task-card:hover{box-shadow:var(--shadow-decision)}
:root body .rail-me .profile-panel{border-radius:var(--radius-panel);border-color:var(--rule)}
:root body .set-savebar{border-radius:var(--radius-panel);padding:12px 16px 12px 20px}
:root body .welcome-strip,:root body .view-as-strip{border-radius:var(--radius-panel);background:var(--primary-soft);border:1px solid var(--rule);border-left:4px solid var(--primary);color:var(--ink-2)}
:root body .view-as-strip{border-radius:0;border-left:0;background:var(--attention-soft)}
:root body .team-link{border-radius:var(--radius-control)}
:root body .invite-role{border-radius:var(--radius-panel);background:var(--soft)}
:root body .door{border-radius:var(--radius-panel);box-shadow:var(--shadow-decision);transition:transform .18s var(--ease-out),box-shadow .18s var(--ease-out)}
:root body .door:hover{transform:translateY(-2px);box-shadow:var(--shadow-popover)}
:root body .door-people .avatar{background:var(--primary-soft);color:var(--primary)}
:root body .login-closed{border-radius:var(--radius-soft);padding:28px;box-shadow:var(--shadow-popover)}
:root body .login-status.attn-text{color:var(--late)}
/* Figures: the number carries the weight, the label stays quiet. */
:root body .figures data,:root body .figures .fig{font-size:26px;letter-spacing:-.02em}
/* Links act in blue. */
:root body a:not(.primary,.secondary,.rail *,.door *){color:var(--primary)}
/* Tables fit their panel; on a narrow screen they scroll sideways inside it rather than widening the page. */
:root body .table-scroll,:root body .team-matrix-wrap{overflow-x:auto;scrollbar-width:thin}

/* ---- Small screens: the rail folds into a top bar, the pages drop to one column, tables scroll inside their panel. ---- */
@media(max-width:900px){
 body.has-rail{padding-left:0;padding-top:var(--bar-h)}
 .rail{inset:0 0 auto 0;width:auto;height:var(--bar-h);flex-direction:row;align-items:center;border-right:0;border-bottom:1px solid var(--rail-rule);background:rgba(232,238,248,.94);backdrop-filter:blur(10px)}
 .rail .brand{min-height:0;min-width:0;border:0;padding:0 16px;flex:1 1 auto}
 .rail-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:38px;padding:0 14px;margin:0 12px 0 auto;border:1px solid var(--rule);border-radius:var(--radius-pill);background:var(--paper);color:var(--ink);font:inherit;font-size:15px;font-weight:500;cursor:pointer;flex:none}
 .rail-toggle svg{width:18px;height:18px}
 .rail-nav,.rail-me,.rail-clinic{display:none}
 .rail.is-open .rail-clinic{display:block;flex:1 0 calc(100% - 24px);order:4}
 .rail-sign{align-self:center;margin:0 4px;flex:none}
 /* Open: the day's pages drop down as a sheet under the bar. */
 .rail.is-open{height:auto;max-height:100dvh;flex-wrap:wrap;overflow:auto;box-shadow:var(--shadow-popover)}
 .rail.is-open .rail-nav{display:block;flex:1 0 100%;order:5;padding:8px 12px 12px;border-top:1px solid var(--rail-rule)}
 .rail.is-open .rail-me{display:block;flex:1 0 100%;order:7}
 .rail.is-open .rail-me .profile-panel{position:static;margin:0 12px 12px;box-shadow:none}
 .rcm-page{padding:16px 16px 40px}
 :root body .page-head,:root body .deck{flex-direction:column;flex-wrap:nowrap;align-items:flex-start;gap:10px}
 :root body .page-head>*{max-width:100%}
 :root body :is(.panels,.acct-facts,.invite-facts){grid-template-columns:1fr}
 :root body .figures>li{flex:1 1 45%;border-right:0;border-bottom:1px solid var(--rule)}
 :root body :is(.case-panel,.set-card,.panel-body)>table,:root body .case-panel .ruled{display:block;overflow-x:auto;scrollbar-width:thin}
 :root body .set-savebar{position:static;border-radius:var(--radius-panel);padding:10px 12px}
 :root body .wb-docs li{grid-template-columns:1fr}
 :root body :is(select,input,textarea){max-width:100%}
 .view-as-strip{padding:10px 16px}
 .acct-form .set-text{max-width:none}
}
@media(max-width:640px){
 :root body h1{font-size:28px!important}
 .login-side{padding:28px 20px 24px}
 :root body .login-side h1{font-size:32px!important}
 .login-main{padding:20px 16px 32px}
 .login-form,.login-closed{padding:20px;border-radius:var(--radius-panel)}
 .login-actions{gap:12px}
 :root body .figures>li{flex-basis:100%}
 /* A form's select takes the row; a long option never widens the page. */
 :root body :is(label,form) select:not(.pill-select *,.advanced-body *){width:100%;min-width:0;max-width:100%}
 .acct-sessions li{flex-direction:column;align-items:flex-start}
 .login-rooms li{grid-template-columns:20px 1fr}.login-rooms small{grid-column:2}
 /* Panel heads and read-back rows stack on a phone instead of squeezing their words. */
 :root body :is(.case-panel,.set-card)>.panel-head{flex-direction:column;align-items:flex-start;gap:4px}
 :root body .readback>li{grid-template-columns:1fr;gap:4px}
 :root body .readback .rb-value{grid-column:1;grid-row:auto;white-space:normal}
 /* A visit's head stacks: the name, then its facts, then who owns the case. */
 :root body .visit-head{flex-direction:column;align-items:stretch;gap:12px}
 :root body .visit-meta{gap:4px 20px}
 :root body .visit-owner{width:100%}
 .team-invites li{grid-template-columns:1fr}
}

/* ---- What a person may not do is not offered (the server refuses it anyway). The shell writes the person's permissions on
   <html> (shell.js applyEnvironment); until it has, nothing here applies. A control tagged data-perm shows only to those who
   hold that permission; without work.edit, a visit's remaining controls are hidden too, except those that only change what
   is shown (data-view) and those inside a part tagged with a permission the person holds (the clinic's decision). ---- */
html[data-permissions]:not([data-permissions~="eligibility.run"]) [data-perm~="eligibility.run"],
html[data-permissions]:not([data-permissions~="team.permissions"]) [data-perm~="team.permissions"],
html[data-permissions]:not([data-permissions~="payments.deposits"]) [data-perm~="payments.deposits"],
html[data-permissions]:not([data-permissions~="payments.writeoff"]) [data-perm~="payments.writeoff"],
html[data-permissions]:not([data-permissions~="work.edit"]) [data-perm~="work.edit"],
html[data-permissions]:not([data-permissions~="work.assign"]) [data-perm~="work.assign"],
html[data-permissions]:not([data-permissions~="forms.optional"]) [data-perm~="forms.optional"],
html[data-permissions]:not([data-permissions~="claims.submit"]) [data-perm~="claims.submit"],
html[data-permissions]:not([data-permissions~="claims.override"]) [data-perm~="claims.override"],
html[data-permissions]:not([data-permissions~="claims.acknowledge"]) [data-perm~="claims.acknowledge"],
html[data-permissions]:not([data-permissions~="clinic.respond"]) [data-perm~="clinic.respond"],
html[data-permissions]:not([data-permissions~="balances.decide"]) [data-perm~="balances.decide"],
html[data-permissions]:not([data-permissions~="payments.refund"]) [data-perm~="payments.refund"],
html[data-permissions]:not([data-permissions~="payments.post"]) [data-perm~="payments.post"],
html[data-permissions]:not([data-permissions~="denials.send"]) [data-perm~="denials.send"]{display:none!important}
html[data-permissions]:not([data-permissions~="work.edit"]) #visit-tab :is(button,[type=submit],select,input[type=checkbox]):not([data-view]):not([data-view] *):not([data-perm]):not([data-perm] *){display:none!important}
/* Without work.assign the case owner is shown, not chosen; taking it oneself is the one way to change it. */
html[data-permissions]:not([data-permissions~="work.assign"]) .visit-owner .owner-menu,
html[data-permissions~="work.assign"] .visit-owner [data-owner-name],
html[data-permissions~="work.assign"] .visit-owner [data-take]{display:none!important}

/* The clinic switcher under the brand (shell.js). */
.rail-clinic{margin:4px 12px 8px;max-width:calc(100% - 24px);font:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--line, #d8dde3);border-radius:6px;background:var(--panel, #fff);color:inherit}

/* Settings: one column of cards with a steady gap, rows inset like every card body. */
:root body #set-body{display:grid;gap:16px}
:root body .set-team{display:grid;gap:16px}
:root body .set-team .set-card{margin:0}
.logo-field{grid-auto-flow:column;grid-template-columns:auto;align-items:center;justify-content:start;gap:16px}
.logo-field>.set-status{grid-column:1/-1}
.logo-preview.is-empty{border-style:dashed;background:var(--soft);color:var(--ink-3);font-size:13px}
/* Roles: chip, how many, what they do; inset rows with a rule between. */
:root body .set-team .team-roles{list-style:none;margin:0;padding:0;display:block}
:root body .set-team .team-roles>li{display:grid;grid-template-columns:150px 32px minmax(0,1fr) auto;gap:16px;align-items:center;padding:12px 20px;border-top:1px solid var(--rule);font-size:14px}
:root body .set-team .team-roles>li:first-child{border-top:0}
:root body .set-team .team-roles>li>b{font-variant-numeric:tabular-nums;color:var(--ink)}
:root body .set-team .team-roles>li>span:not(.team-role-chip){color:var(--ink-2)}
:root body .set-team .team-role-add{padding:12px 20px 16px;border-top:1px solid var(--rule)}
/* People: who, role, clinics, actions; sign-in state under who, never squeezed into the avatar column. */
:root body .set-team .team-group{border-top:0}
:root body .set-team .team-group h3{padding:14px 20px 6px;font-size:13px!important;color:var(--ink-3)}
:root body .set-team .team-person{grid-template-columns:40px minmax(0,1fr) 150px 200px 80px;align-items:start;padding:12px 20px}
:root body .set-team .team-person>.avatar{width:40px;height:40px}
:root body .set-team .team-who{gap:6px}
:root body .set-team .team-access{grid-column:2/-1;color:var(--ink-3)}
/* Every row has the same columns, so role and clinic line up down the list; each sits level with the name. */
:root body .set-team :is(.team-role,.team-clients,.team-actions){min-height:40px;display:flex;align-items:center;flex-wrap:wrap}
:root body .set-team .team-role select{width:100%}
/* Invitations */
:root body .set-team .team-invite{padding:16px 20px}
:root body .set-team .team-invites{border-top:1px solid var(--rule)}
/* Permission table: the rule runs across the whole row; the first column lines up with the card's inset. */
:root body .set-team .team-matrix :is(th,td){border-top:1px solid var(--rule);border-bottom:0}
:root body .set-team .team-matrix thead th{border-top:0}
:root body .set-team .team-matrix :is(thead th:first-child,tbody th){padding-left:20px}
:root body .set-team .team-matrix-group th{background:var(--soft);font-size:12px}
:root body .set-team .team-matrix-status:empty{display:none}
/* Security: fields in the card body, Save at the end of the form like Account settings. */
:root body .set-team .sec-form{display:grid;gap:14px;padding:16px 20px;max-width:none}
:root body .set-team .sec-form label{display:grid;gap:6px;font-size:14px;color:var(--ink-2)}
:root body .set-team .sec-form select{max-width:360px}
:root body .set-team .sec-form .set-savebar{position:static;border:0;background:none;box-shadow:none;padding:4px 0 0;border-radius:0}
/* Sign-in log and change history: one line per event. */
:root body .set-team .auth-log li{grid-template-columns:150px minmax(0,220px) minmax(0,1fr);align-items:baseline;padding:10px 20px}
:root body .set-team .auth-log span{grid-column:auto}
:root body .auth-more{padding:0;margin:0;border:0;border-top:1px solid var(--rule)}.auth-more>summary{padding:10px 20px;cursor:pointer;color:var(--primary);font-size:14px;list-style:none}.auth-more>summary::-webkit-details-marker{display:none}
.auth-more[open]>summary{display:none}.auth-more .auth-log li:first-child{border-top:0}
:root body .team-history{padding:0;margin:0;border:0}.team-history>summary{list-style:none;cursor:pointer}.team-history>summary::-webkit-details-marker{display:none}
.team-history:not([open])>summary{border-bottom:0}:root body .team-history>summary.panel-head{padding:16px 20px}:root body .team-history>summary h2{font-size:16px!important}
@media(max-width:760px){
 :root body .set-team .team-roles>li{grid-template-columns:auto 24px minmax(0,1fr)}
 :root body .set-team .team-person{grid-template-columns:40px minmax(0,1fr)}
 :root body .set-team :is(.team-role,.team-clients,.team-actions){grid-column:2}
 :root body .set-team .auth-log li{grid-template-columns:1fr}
 .logo-field{grid-auto-flow:row}
}
/* Every settings section in the same centred column, whatever it holds; the page colour runs to the bottom of the window. */
:root body[data-page="settings"] main.rcm-page{max-width:880px;margin-left:auto;margin-right:auto}
:root body.has-rail{min-height:100vh}
/* A page that cannot show what was asked: one centred card, the reason as its title, the way home. */
:root body .page-error{box-sizing:border-box;width:100%;max-width:440px;margin:72px auto;padding:32px 28px;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}
:root body .page-error h1{margin:0;font-size:24px}
:root body .page-error p{margin:0;color:var(--ink-2)}
:root body .page-error .page-error-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:8px}
/* The visit page around a visit it cannot show: no empty header, timeline or divider. */
:root body .visit-page.is-error :is(.visit-head,.visit-timeline){display:none}
:root body .visit-page.is-error .visit-body{display:block}

:root body .visit-tab>.page-error.case-panel:first-child{border:1px solid var(--rule);border-radius:var(--radius-panel);background:var(--paper);box-shadow:var(--shadow-decision)}
/* A clinic's own settings name the clinic beside the title; on "All clinics" that is the first thing to choose. */
.set-clinic-pick{width:100%;max-width:360px}

/* Title and email share one width. */
:root body .set-team .team-who :is(.team-title,.team-email){width:100%;max-width:300px;box-sizing:border-box}
/* A table that ends a visit section leaves the closing rule to the next section. */
:root body .visit-tab .rm-table tbody tr:last-child td{border-bottom:0}
/* A tag beside a header fact, e.g. a Medicaid payer. */
:root body .visit-meta dd:has(.visit-tag){display:inline-flex;align-items:baseline;gap:8px}
:root body .visit-tag{display:inline-block;padding:2px 9px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:13px;font-weight:600;line-height:18px}
/* Schedule with nothing to show. */
:root body .sch-empty{padding:40px 24px;text-align:center}
:root body .sch-empty h2{margin:0;font-size:17px;color:var(--ink-2)}
/* Templates: kind chips read like the other filters; the open one is tinted, never dark on blue. */
:root body .tp-kinds a{color:var(--ink-2);background:var(--paper);border-color:var(--rule-strong);padding:6px 14px}
:root body .tp-kinds a b{color:var(--ink)}
:root body .tp-kinds a[aria-current]{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}
:root body .tp-kinds a[aria-current] b{color:var(--primary)}
:root body .tp-kind-pick{gap:12px;margin-bottom:12px}
:root body .tp-kind-pick label{display:flex;align-items:center;gap:12px;color:var(--ink-2);font-size:15px}
/* Consent form categories fold like the other lists. */
:root body .tp-cat summary::before{content:'';width:8px;height:8px;border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);transform:rotate(-45deg);transition:transform .15s;flex:none;align-self:center;margin-right:4px}
:root body .tp-cat[open] summary::before{content:'';transform:rotate(45deg)}
/* Demo tools: every panel's content sits inside the card's padding. */
:root body .pc .pc-writes{padding:16px 20px 4px;align-items:center}
:root body .pc .pc-writes .pc-result:empty{display:none}
:root body .op-reset .panel-head h2{color:var(--ink)}
:root body .op-reset-body{padding:16px 20px 20px;display:grid;gap:12px;justify-items:start}
:root body .op-reset-body p{margin:0;color:var(--ink-2)}
:root body .tl-all>summary{list-style:none;display:inline-flex;align-items:center;gap:8px;cursor:pointer;color:var(--primary);font-weight:500}
:root body .tl-all>summary::-webkit-details-marker{display:none}
:root body .tl-all>summary::before{content:'';width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .15s}
:root body .tl-all[open]>summary::before{transform:rotate(45deg)}
/* Calendar cards: a status wraps onto a second line rather than being cut off. */
:root body .cal-chip-step,:root body .cal-pill{white-space:normal;overflow:visible;text-overflow:clip;align-items:flex-start;line-height:1.35}
:root body .cal-chip-step>svg,:root body .cal-chip-step>i{flex:none;margin-top:2px}
/* Consent forms by category: quiet ink rows, blue only on hover; the category line reads as a heading. */
:root body .tp-cats{padding:16px 20px 8px}
:root body .tp-cat summary{color:var(--ink);font-size:15px;padding:14px 0}
:root body .tp-cat summary small{color:var(--ink-3);font-weight:500}
:root body .tp-cat ul{margin:0 0 14px 16px}
:root body .tp-cat li{padding:6px 0;font-size:14px}
:root body .tp-cat li a{color:var(--ink-2);text-decoration:none}
:root body .tp-cat li a:hover{color:var(--primary);text-decoration:underline}
/* Calendar step chips: the open one tinted like the other filters; "n need you" in the attention colour with its dot. */
:root body .cal-strip button{border-color:var(--rule-strong);background:var(--paper);color:var(--ink-2)}
:root body .cal-strip button[aria-pressed=true]{background:var(--primary-soft);border-color:var(--primary);color:var(--primary);box-shadow:none}
:root body .cal-strip button b{color:inherit}
:root body .cal-strip button .cal-need{border-radius:0;height:auto;min-width:0;padding-top:0;padding-bottom:0;padding-right:0;display:inline-flex;align-items:center;gap:5px;margin-left:4px;padding-left:10px;border-left:1px solid var(--rule-strong);color:var(--attention);font-weight:600;font-size:13px;background:none}
:root body .cal-need i{width:7px;height:7px;border-radius:50%;background:var(--attention)}
/* Access log: a date range and the download, on one row. */
.access-form{padding:16px 20px;display:grid;gap:8px}
.access-fields{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end}
.access-fields label{display:grid;gap:6px;font-size:14px;font-weight:500;color:var(--ink-2)}
.access-fields input{height:40px;padding:0 12px;border:1px solid var(--rule-strong);border-radius:var(--radius-control);background:var(--paper);color:var(--ink);font:inherit}
.access-form .set-status:empty{display:none}
