:root{--ink:#14261f;--ink-soft:#4a5c53;--ink-faint:#7d8b83;--paper:#edf1e7;--card:#fbfcf8;--rule:#c3cdba;--rule-faint:#dde3d6;--ledger:#1c5e4a;--ledger-dim:#d5e3dc;--amber:#b4690e;--amber-dim:#f7e8cf;--flag:#9b2226;--flag-dim:#f6dcdc;--mono:ui-monospace,"SF Mono",SFMono-Regular,"Cascadia Mono",Menlo,Consolas,monospace;--ui:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--rule-height:2.75rem}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--ui);font-size:15px;line-height:1.45;-webkit-tap-highlight-color:transparent}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1,"tnum"}.topbar{display:flex;align-items:baseline;gap:.75rem;padding:.6rem 1rem;background:var(--ink);font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase}.topbar,.topbar a{color:var(--paper)}.topbar a{text-decoration:none;opacity:.65}.topbar a:focus-visible,.topbar a:hover{opacity:1}.topbar .spacer{margin-left:auto}.topbar .actor{color:#a9d6c5}.page{max-width:62rem;margin:0 auto;padding:1.5rem 1rem 5rem}.label-head{border-top:2px solid var(--ink);border-bottom:1px solid var(--rule);padding:.9rem 0 1rem;margin-bottom:1.5rem}.label-head h1{margin:0;font-size:clamp(1.75rem,5vw,2.6rem);font-weight:650;letter-spacing:-.025em;line-height:1}.label-head .eyebrow{display:block;font-family:var(--mono);font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:.5rem}.label-head p{margin:.6rem 0 0;color:var(--ink-soft);max-width:46ch}.field{display:block;margin-bottom:1rem}.field>span{display:block;font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:.35rem}button,input,select,textarea{font:inherit;color:inherit}input,select{width:100%;padding:.55rem .7rem;background:var(--card);border:1px solid var(--rule);border-radius:2px;box-shadow:inset 0 -2px 0 var(--rule-faint)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--ledger);outline-offset:1px}.grid-2{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:1fr 1fr}@media (max-width:34rem){.grid-2{grid-template-columns:1fr}}button{cursor:pointer;border-radius:2px;border:1px solid var(--ink);background:var(--ink);color:var(--paper);padding:.5rem .9rem;font-family:var(--mono);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:var(--ledger);border-color:var(--ledger);padding:.75rem 1.5rem;font-size:.85rem}button.quiet{background:transparent;color:var(--ink);border-color:var(--rule)}button.link{background:none;border:none;padding:0;color:var(--flag);text-transform:none;letter-spacing:0;font-family:var(--ui);font-size:.85rem;text-decoration:underline}.ledger{background-color:var(--card);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--rule-height) - 1px),var(--rule-faint) calc(var(--rule-height) - 1px),var(--rule-faint) var(--rule-height));border-top:1px solid var(--rule);border-bottom:2px solid var(--ink)}.ledger-row{display:grid;grid-template-columns:1.6rem minmax(0,1fr) 5rem 4.5rem 9.5rem 6rem 1.5rem;align-items:center;grid-gap:.5rem;gap:.5rem;height:var(--rule-height);padding:0 .7rem;font-size:.9rem}.ledger-row .no{font-family:var(--mono);font-size:.72rem;color:var(--ink-faint)}.ledger-row .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:550}.ledger-row .name small{display:block;font-weight:400;font-size:.7rem;color:var(--ink-faint);letter-spacing:.02em}.ledger-row input{padding:.25rem .4rem;box-shadow:none;text-align:right;font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ledger-row .money{text-align:right}.ledger-empty{height:var(--rule-height);display:flex;align-items:center;padding:0 .7rem;color:var(--ink-faint);font-size:.88rem}@media (max-width:44rem){.ledger-row{grid-template-columns:1.4rem minmax(0,1fr) 4.5rem 4rem 1.5rem;height:auto;padding:.5rem .7rem}.ledger{background-image:none}.ledger-row+.ledger-row{border-top:1px solid var(--rule-faint)}.effect{grid-column:2/-1}}.effect{font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:.76rem;letter-spacing:-.01em;text-align:right;color:var(--ink-soft);white-space:nowrap}.effect .arrow{color:var(--ink-faint);margin:0 .3em}.effect .after{font-weight:600;color:var(--ledger)}.effect.negative .after{color:var(--flag)}.effect.negative:after{content:" below zero";color:var(--flag);font-size:.68rem}.effect.none{color:var(--ink-faint)}.effect.none:before{content:"—"}.totals{display:grid;grid-template-columns:1fr auto;grid-gap:.2rem 2rem;gap:.2rem 2rem;margin:1.25rem 0 0;padding:0 .7rem;font-size:.9rem}.totals dt{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.totals dd,.totals dt{font-family:var(--mono)}.totals dd{margin:0;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.totals .grand dd,.totals .grand dt{font-size:1.15rem;color:var(--ink);font-weight:650;padding-top:.4rem;border-top:1px solid var(--rule);margin-top:.3rem;letter-spacing:.04em}.actions{display:flex;align-items:center;gap:1rem;margin-top:1.5rem;padding:0 .7rem}.pay{border:1px solid var(--rule);background:var(--card);padding:.2rem 0 1.2rem;margin-bottom:1.5rem}.pay .actions{margin-top:.9rem}.pay label{display:flex;align-items:center;gap:.6rem;font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.pay label input{width:9rem;font-family:var(--mono);font-size:1rem;letter-spacing:.02em;text-transform:none;color:var(--ink)}.pay button[aria-pressed=true]{box-shadow:inset 0 -2px 0 var(--ledger)}.results{list-style:none;margin:.25rem 0 0;padding:0;border:1px solid var(--rule);background:var(--card);max-height:15rem;overflow-y:auto}.results li+li{border-top:1px solid var(--rule-faint)}.results button{display:flex;width:100%;gap:.75rem;align-items:baseline;background:none;border:none;color:inherit;text-align:left;text-transform:none;letter-spacing:0;font-family:var(--ui);font-size:.9rem;padding:.5rem .7rem}.results button:hover{background:var(--ledger-dim)}.results .meta{margin-left:auto;font-family:var(--mono);font-size:.74rem;color:var(--ink-soft);white-space:nowrap}.results .sched{font-family:var(--mono);font-size:.62rem;letter-spacing:.08em;padding:.05rem .3rem;background:var(--amber-dim);color:var(--amber);border:1px solid var(--amber)}.notice{padding:.7rem .9rem;margin-bottom:1.25rem;border-left:3px solid var(--ledger);background:var(--ledger-dim);font-size:.9rem}.notice.error{border-left-color:var(--flag);background:var(--flag-dim)}.notice.warn{border-left-color:var(--amber);background:var(--amber-dim)}.notice .num{font-weight:600}.scrim{position:fixed;inset:0;background:rgba(20,38,31,.55);display:grid;place-items:center;padding:1rem;z-index:20}.prompt{background:var(--card);border:2px solid var(--ink);padding:1.5rem;width:min(24rem,100%)}.prompt h2{margin:0 0 .3rem;font-size:1.2rem}.prompt p{margin:0 0 1.1rem;color:var(--ink-soft);font-size:.88rem}.prompt input[type=password]{text-align:center;font-family:var(--mono);font-size:1.5rem;letter-spacing:.5em;text-indent:.5em}.prompt .row{display:flex;gap:.6rem;margin-top:1.1rem}.prompt .row button{flex:1 1}.tiles{display:grid;grid-gap:1px;gap:1px;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));background:var(--rule);border:1px solid var(--rule)}.tile{display:block;background:var(--card);padding:1.25rem;text-decoration:none;color:inherit}.tile:hover{background:var(--ledger-dim)}.tile strong{display:block;font-size:1.1rem;margin-bottom:.3rem}.tile span{color:var(--ink-soft);font-size:.86rem}.topbar button.linkish{background:none;border:0;padding:0;color:var(--paper);opacity:.65;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}.topbar button.linkish:focus-visible,.topbar button.linkish:hover{opacity:1}.topbar a[aria-current=page]{opacity:1;border-bottom:1px solid #a9d6c5}.period-picker{margin-bottom:1.75rem}.period-buttons{display:flex;flex-wrap:wrap;gap:.4rem}.period-label{margin:.5rem 0 0;font-family:var(--mono);font-size:.78rem;color:var(--ink-faint)}.kpi-row{display:grid;grid-gap:1px;gap:1px;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));background:var(--rule);border:1px solid var(--rule);margin-bottom:1.5rem}.kpi{display:flex;flex-direction:column;gap:.2rem;background:var(--card);padding:.9rem 1rem 1rem}.kpi-label{font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.kpi-value{font-size:1.5rem;line-height:1.15;color:var(--ink)}.kpi-change,.kpi-value{font-family:var(--mono);font-weight:600}.kpi-change{font-size:.82rem}.kpi-change-none{color:var(--ink-faint);font-weight:400}.kpi-prev{font-size:.74rem;color:var(--ink-faint)}.dash-section{margin-bottom:2.5rem}.chart-legend{display:flex;gap:1.1rem;margin-top:.5rem;font-size:.76rem;color:var(--ink-soft)}.chart-legend span{display:flex;align-items:center;gap:.35rem}.chart-legend .swatch{width:14px;height:0;border-top:2px solid var(--ledger);display:inline-block}.chart-legend .swatch.dashed{border-top-style:dashed;opacity:.5}.about-numbers{margin-top:3rem;border-top:1px solid var(--rule-faint);padding-top:1rem;font-size:.84rem;color:var(--ink-soft)}.about-numbers summary{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);cursor:pointer}.about-numbers ul{margin:.9rem 0 0;padding-left:1.1rem}.about-numbers li{margin-bottom:.55rem}@media (prefers-reduced-motion:reduce){*,:after,:before{transition:none!important;animation:none!important}}.search-empty,.search-error{margin:.4rem 0 0;font-size:.84rem}.search-error{color:var(--flag)}.search-empty{color:var(--ink-soft)}.section-head{font-family:var(--mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin:2rem 0 .75rem}.queue{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.queue-row{border-bottom:1px solid var(--rule)}.queue-row a{display:grid;grid-template-columns:5rem 1fr auto;grid-gap:.9rem;gap:.9rem;align-items:baseline;padding:.7rem .2rem;text-decoration:none;color:inherit}.queue-row a:focus-visible,.queue-row a:hover{background:var(--ledger-dim)}.queue-row .when{font-family:var(--mono);font-size:.8rem;color:var(--ink-faint)}.queue-row .name{font-weight:600}.queue-row .name small,.queue-row .state small{display:block;font-weight:400;font-size:.78rem;color:var(--ink-soft)}.queue-row .name small.complaint{font-style:italic}.queue-row .state{font-size:.82rem;color:var(--ink-soft);text-align:right}.queue-row.attending .state{color:var(--ledger);font-weight:600}.queue-row.completed .name,.queue-row.completed .when,.queue-row.left .name,.queue-row.left .when{color:var(--ink-faint)}.queue-row .state small.noted{color:var(--ledger)}.check-in{border-left:3px solid var(--ledger);background:var(--ledger-dim);padding:.9rem 1rem;margin-top:1rem}.check-in p{margin:0 0 .6rem}.note-form textarea{width:100%;font:inherit;line-height:1.5;padding:.55rem .65rem;border:1px solid var(--rule);background:var(--paper);color:var(--ink);resize:vertical}.note-form textarea:focus-visible{outline:2px solid var(--ledger);outline-offset:1px}.note-form .field>span small{display:block;font-weight:400;font-size:.78rem;color:var(--ink-faint);text-transform:none;letter-spacing:0}.note-form .unsaved{font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--amber)}.note-form .actions,.weigh .actions{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-top:.75rem}.weigh input{width:7rem}.visit-bill h3{font-size:.95rem;margin:1rem 0 .4rem}ul.plain{list-style:none;margin:0;padding:0}ul.plain li{padding:.35rem 0;border-bottom:1px solid var(--rule)}.vax .actions{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:.6rem}.vax .actions label{display:flex;flex-direction:column;gap:.2rem;font-size:.78rem;color:var(--ink-soft)}.vax input,.vax select{font:inherit}.lab-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.lab-row{display:grid;grid-template-columns:minmax(8rem,1.4fr) 6rem 7rem 7rem 1fr;grid-gap:.75rem;gap:.75rem;align-items:baseline;padding:.5rem .2rem;border-bottom:1px solid var(--rule)}@media (max-width:700px){.lab-row{grid-template-columns:1fr auto}.lab-row .history,.lab-row .range{grid-column:1/-1}}.lab-row .analyte{font-weight:600}.lab-row .analyte small{display:block;font-weight:400;font-size:.75rem;color:var(--ink-faint)}.lab-row .history,.lab-row .range{font-size:.8rem;color:var(--ink-faint)}.lab-row input{width:100%}.lab-row .flag{font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}.lab-row.high .flag,.lab-row.low .flag{color:var(--flag);font-weight:700}.lab-row.high .value,.lab-row.low .value{font-weight:700}.lab-row.normal .flag{color:var(--ink-faint)}.lab-row.unknown .flag{color:var(--amber);background:var(--amber-dim);padding:.05rem .3rem}.lab-row.pending{background:var(--ledger-dim)}.lab-orders{list-style:none;margin:.8rem 0 0;padding:0}.rowbtn{display:grid;grid-template-columns:5rem 1fr auto;grid-gap:.9rem;gap:.9rem;align-items:baseline;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--rule);padding:.6rem .2rem;font:inherit;color:inherit;cursor:pointer}.lab-orders .rowbtn{grid-template-columns:1fr auto}.rowbtn:focus-visible,.rowbtn:hover{background:var(--ledger-dim)}.rowbtn .name small{display:block;font-size:.78rem;color:var(--ink-soft)}.rowbtn .state{font-size:.82rem;color:var(--ink-soft)}.recalls{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.recall{display:grid;grid-template-columns:7rem 1fr 9rem auto;grid-gap:.9rem;gap:.9rem;align-items:baseline;padding:.6rem .2rem;border-bottom:1px solid var(--rule)}@media (max-width:760px){.recall{grid-template-columns:1fr auto}.recall .phone{grid-column:1/-1}}.recall .when{font-family:var(--mono);font-size:.8rem;color:var(--ink-faint)}.recall.late .when{color:var(--flag);font-weight:700}.recall .name small,.recall .when small{display:block;font-size:.75rem;font-weight:400;color:var(--ink-soft)}.recall .name{font-weight:600}.recall .name small.service{color:var(--ink-faint)}.recall .phone a{font-family:var(--mono);font-size:.85rem}.cage .acts,.recall .acts{display:flex;gap:.4rem;flex-wrap:wrap}.cage .acts button,.recall .acts button{font-size:.8rem;padding:.25rem .6rem}.cages{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));grid-gap:.6rem;gap:.6rem}.cage{display:grid;grid-template-columns:1fr;grid-gap:.3rem;gap:.3rem;padding:.7rem .8rem;border:1px solid var(--rule)}.cage.free{background:var(--paper);border-style:dashed}.cage.admitted{background:var(--ledger-dim);border-color:var(--ledger)}.cage.reserved{background:var(--amber-dim);border-color:var(--amber)}.cage .cage-name{font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;color:var(--ink-faint)}.cage .cage-name small{text-transform:none;letter-spacing:0}.cage .who{font-weight:600}.cage .who small{display:block;font-weight:400;font-size:.78rem;color:var(--ink-soft)}.cage .free-label{color:var(--ink-faint);font-weight:400;font-style:italic}.iso{font-family:var(--mono);font-size:.62rem;letter-spacing:.08em;padding:.05rem .3rem;background:var(--amber-dim);color:var(--amber);border:1px solid var(--amber)}