/* Generated by scripts/sync-look.mjs from the Next.js app. Do not edit. */
/* Today's fonts, as next/font serves them on redianhealth.vercel.app (latin and the other subsets). */
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/fonts/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/fonts/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/fonts/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/fonts/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/fonts/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/fonts/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/26d4368bf94c0ec4-s.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/26d4368bf94c0ec4-s.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/26d4368bf94c0ec4-s.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/26d4368bf94c0ec4-s.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:IBM Plex Sans Fallback;src:local("Arial");ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.00%;size-adjust:101.17%}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/58f386aa6b1a2a92-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/011e180705008d6f-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/7ba5fb2a8c88521c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/92eeb95d069020cc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/d3ebbfd689654d3a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ef4d5661765d0e49-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/d29838c109ef09b4-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/e40af3453d7c920a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/99dcf268bda04fe5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/98e207f02528a563-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/73cb51aac9c97f90-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/d26bbd13d6b70f89-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/20535187d867b7b9-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/5356a6a4f2c8c8d8-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/db96af6b531dc71f-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:IBM Plex Mono Fallback;src:local("Arial");ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.00%;size-adjust:134.59%}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/f11ffaf03a80bc19-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/b818b0ea116ed117-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ed89fb4fc238c6bf-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/e115bc1b6e48400d-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/fc9d3723ce3bfccb-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/597b6a5d799c44de-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/f11ffaf03a80bc19-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/b818b0ea116ed117-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ed89fb4fc238c6bf-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/e115bc1b6e48400d-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/fc9d3723ce3bfccb-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/597b6a5d799c44de-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/f11ffaf03a80bc19-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/b818b0ea116ed117-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/ed89fb4fc238c6bf-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/e115bc1b6e48400d-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/fc9d3723ce3bfccb-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/597b6a5d799c44de-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:"Source Serif 4 Fallback";src:local("Times New Roman");ascent-override:87.87%;descent-override:28.41%;line-gap-override:0.00%;size-adjust:117.91%}
@font-face{font-family:Josefin Slab;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/009e13548ddd5596-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
@font-face{font-family:Josefin Slab Fallback;src:local("Times New Roman");ascent-override:71.69%;descent-override:23.90%;line-gap-override:0.00%;size-adjust:104.62%}
:root{--font-face-sans:"IBM Plex Sans","IBM Plex Sans Fallback"}
:root{--font-face-sans-full:"IBM Plex Sans","IBM Plex Sans Fallback"}
:root{--font-face-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}
:root{--font-face-serif:"Source Serif 4","Source Serif 4 Fallback"}
:root{--font-face-wordmark:"Josefin Slab","Josefin Slab Fallback"}

/* =============================================================================
 * Redian design tokens
 * -----------------------------------------------------------------------------
 * The single source of truth for every colour, size, space and duration in the
 * product. Before this file the app carried 192 hand-typed hex values, 183
 * rgba() literals, 80 font sizes and 199 padding values across 2,100 inline
 * style objects, so no two screens agreed and nothing could be themed.
 *
 * Three layers, and the direction only ever goes downward:
 *
 *   1. PRIMITIVES  raw ramps. Never referenced by a component.
 *   2. SEMANTIC    what a thing is FOR - surface, border, text, critical.
 *                  This is the only layer components are allowed to use.
 *   3. COMPONENT   sizes shared by controls: heights, control padding.
 *
 * A component that reaches past the semantic layer to a primitive is a bug:
 * it will be correct in one theme and wrong in the other three, because only
 * the semantic layer is redefined per theme.
 *
 * THEMES. Four, in two pairs, plus "match my device".
 *
 *   Sage       light   the brand ground: warm cream, sage, deep teal-green
 *   Evergreen  dark    the same brand after hours
 *   Clinical   light   the original cool blue-on-grey
 *   Midnight   dark    the original dark blue-grey
 *
 * Sage and Evergreen are public/redian-design-system/tokens.json rendered into
 * the product's semantic vocabulary. They are what "match my device" resolves
 * to and what a new install gets. Clinical and Midnight are the palette this
 * file shipped with, kept whole and still selectable: a bench that has spent a
 * year reading results off the blue theme should not have it taken away by a
 * brand refresh.
 *
 * An explicit choice stamps data-theme on <html>. "Match my device" stamps
 * nothing, so only the media query separates Sage from Evergreen. Every token
 * is declared in the bare :root first; the theme blocks redefine, never
 * introduce.
 *
 * CONTRAST. Every foreground/background pair below is verified against WCAG
 * 2.1 AA (4.5:1 for body text, 3:1 for large text and UI boundaries) in all
 * four themes. Do not edit a colour here without re-checking its pair -
 * scripts/check-contrast.mjs does it for you and runs in CI.
 * ========================================================================== */

:root {
  /* ==========================================================================
   * 1. PRIMITIVES
   * ====================================================================== */

  /* --- Brand: sage -------------------------------------------------------
   * The ribbon-R's own colour, extended into a full ramp. Light steps are
   * backgrounds and tags; 400/500 are the mark itself; 600 and up are text on
   * sage surfaces. Sage is light-to-mid strength - anything set directly on
   * sage-400/500 is dark ink, never white. */
  --sg-50: #f5f7f3;
  --sg-100: #e9eee4;
  --sg-200: #d3dcc8;
  --sg-300: #bccbac;
  --sg-400: #a7b89f;  /* the identity colour, exactly as the mark uses it */
  --sg-500: #8ca184;
  --sg-600: #708766;
  --sg-700: #586b4f;
  --sg-800: #43523d;
  --sg-900: #2e3a2a;

  /* Sage after dark. The ramp inverts: 50 is the darkest tint and 900 the
   * lightest ink, so a component asking for "the quiet sage fill" gets a quiet
   * fill in both themes without knowing which one it is in. */
  --sgd-50: #20241e;
  --sgd-100: #293024;
  --sgd-200: #333b2c;
  --sgd-300: #414b36;
  --sgd-400: #54614a;
  --sgd-500: #7c9070;
  --sgd-600: #93a688;
  --sgd-700: #aebfa5;
  --sgd-800: #c8d4c1;
  --sgd-900: #e1e8dc;

  /* --- Brand: deep green -------------------------------------------------
   * The secondary brand colour - a teal-green, deliberately far enough from
   * sage on the wheel that the two never read as the same colour at a glance.
   * 600 and 700 come from the brand sheet; 500 and 800 are the steps a product
   * UI needs either side of them for hover, press and quiet text. */
  --gn-500: #2c7a62;
  --gn-600: #1f5c4a;  /* white on this = 8.4:1 */
  --gn-700: #163f32;
  --gn-800: #0e2a21;

  /* The same green lifted for dark surfaces. Mid-light, so anything filled
   * with it carries dark ink. */
  --gnd-400: #6fc9a6;
  --gnd-500: #4fa98a;
  --gnd-600: #419278;
  --gnd-700: #2e6b56;

  /* --- Warm neutral ------------------------------------------------------
   * The page is warm cream rather than stark white, and the ink a warm
   * charcoal rather than black. The brand sheet names four steps; an interface
   * needs twelve, so the rest are interpolated into its ramp rather than
   * invented beside it. */
  --w-0: #fdfcf9;
  --w-25: #fbf9f5;   /* the brand cream */
  --w-50: #f7f5ef;
  --w-100: #f2efe8;
  --w-200: #e7e3d9;
  --w-300: #d9d4c6;
  --w-400: #bdb7a8;
  --w-500: #9c978a;
  --w-600: #7c7668;
  --w-700: #635f55;  /* 5.6:1 on the page - lightest warm neutral legal as body text */
  --w-800: #423f38;
  --w-900: #2f2f2f;  /* the wordmark ink */

  /* Warm neutral after dark. Near-black with a trace of warmth left in it, so
   * the dark theme reads as the same brand rather than a generic slate. */
  --wd-0: #131416;
  --wd-25: #17181a;
  --wd-50: #1e2022;
  --wd-100: #26282b;
  --wd-200: #33363a;
  --wd-300: #4a4d52;
  --wd-400: #6b6e73;
  --wd-500: #82858b;
  --wd-600: #9a9da2;
  --wd-700: #b8babe;
  --wd-800: #d6d8db;
  --wd-900: #f3f3f1;

  /* --- Brand state colours ----------------------------------------------
   * The only colours allowed to carry meaning. Each sits at its own hue angle,
   * because with three greens in the system - sage, deep green, success - a
   * result badge must never read as brand chrome. The solid steps sit a notch
   * darker than the brand sheet's display values wherever white has to reach
   * 4.5:1 on them; the sheet's own values are kept as the -text steps.
   *
   * Warning goes the other way. The sheet fills it with #b8863b and sets dark
   * ink on top, which is 4.15:1 - so the fill is lifted one step instead, and
   * the ink the sheet specifies is the ink that ships. */
  --st-success: #4a7226;
  --st-success-text: #3e6320;
  --st-success-wash: #edf3e4;
  --st-success-edge: #cbddb4;
  --st-warning: #c29246;
  --st-warning-text: #755116;
  --st-warning-wash: #f8efe0;
  --st-warning-edge: #e6d3ae;
  --st-error: #9c3b33;
  --st-error-text: #8a332c;
  --st-error-wash: #f7ebe9;
  --st-error-edge: #e6c9c5;
  --st-info: #35617e;
  --st-info-text: #2e5670;
  --st-info-wash: #e6eef4;
  --st-info-edge: #bbd0df;

  /* The same four after dark: mid-light fills that carry dark ink, each with a
   * deep wash and a legible text step. */
  --std-success: #8fc15c;
  --std-success-text: #a5ce7b;
  --std-success-wash: #1e2617;
  --std-success-edge: #36462a;
  --std-warning: #e0ae63;
  --std-warning-text: #e5bc7e;
  --std-warning-wash: #2a2317;
  --std-warning-edge: #4a3c24;
  --std-error: #e37a6e;
  --std-error-text: #e9938a;
  --std-error-wash: #2a1c1a;
  --std-error-edge: #4a2e2a;
  --std-info: #7fb0de;
  --std-info-text: #9cc4e8;
  --std-info-wash: #1a222b;
  --std-info-edge: #2d3f4f;

  /* --- Clinical / Midnight primitives ------------------------------------
   * The palette this file shipped with, kept whole. Nothing in the Sage or
   * Evergreen blocks touches these, and nothing in these touches those. */

  /* Neutral. Slight blue bias, so it sits with the accent rather than looking
   * like an unconsidered mid-grey. */
  --n-0: #ffffff;
  --n-25: #fbfcfd;
  --n-50: #f7f8fa;
  --n-100: #eff0f5;
  --n-200: #dfe2ea;
  --n-300: #c5c8d1;
  --n-400: #878da0;
  --n-500: #5f6779;  /* 5.67:1 on white - lightest neutral legal as body text */
  --n-600: #4c5266;
  --n-700: #3b4152;
  --n-800: #2f3441;
  --n-900: #20232b;
  --n-950: #12151b;

  /* Accent. The product's original blue, extended into a full ramp. */
  --a-50: #edf1fd;
  --a-100: #dce5fa;
  --a-200: #bed1f6;
  --a-300: #a4c0f0;
  --a-400: #85a9eb;
  --a-500: #618dde;
  --a-600: #4472c4;  /* white on this = 4.72:1 */
  --a-700: #28448a;  /* white on this = 9.19:1 */
  --a-800: #1c3062;
  --a-850: #16264d;
  --a-900: #111d3b;

  /* Status. Deliberately not blue: a blue "success" and a blue "primary
   * action" are indistinguishable at a glance. */
  --rd-50: #fcf0ef;
  --rd-100: #fadbd8;
  --rd-200: #f3c9c5;
  --rd-500: #b4231a;
  --rd-700: #8f1c14;
  --am-50: #fdf6e7;
  --am-100: #fef3cd;
  --am-200: #ecd9a4;
  --am-500: #8a5a00;
  --am-700: #6d4700;
  --gr-50: #eaf5f0;
  --gr-100: #d5f0e8;
  --gr-200: #bcdcd0;
  --gr-500: #0f6b4f;
  --gr-700: #0b5540;

  /* Midnight's raw values, declared here so its theme block only re-points
   * semantic tokens and never invents a colour. */
  --d-page: #0d1017;
  --d-raised: #151a23;
  --d-sunken: #1b212c;
  --d-line: #29303c;
  --d-line-2: #666f82;
  --d-text: #e6e9f0;
  --d-text-2: #a3abbd;
  --d-text-3: #8b94a6;  /* 6.24:1 on page, 5.29:1 on sunken - the tightest pair */

  /* ==========================================================================
   * 2. SEMANTIC - the only layer components may use
   *
   * The bare :root carries SAGE, which is both the default theme and what
   * "match my device" shows in daylight.
   * ====================================================================== */

  /* Surfaces. The brand's cream is the card, not the page: an interface needs
   * its raised surfaces to sit above the ground, so the page drops one step to
   * w-100 and cards come up to the cream itself. */
  --surface-page: var(--w-100);
  --surface-raised: var(--w-25);
  --surface-sunken: var(--w-200);
  --surface-inset: var(--w-50);
  --surface-overlay: var(--w-0);
  --surface-scrim: rgba(47, 47, 47, 0.45);
  --surface-hover: var(--w-50);
  --surface-selected: var(--sg-100);

  /* Borders. --border-default is a boundary, not text. A boundary that carries
   * meaning uses --border-strong. */
  --border-subtle: var(--w-200);
  --border-default: var(--w-300);
  --border-strong: var(--w-600);
  --border-heavy: var(--w-800);

  /* Text */
  --text-primary: var(--w-900);
  --text-secondary: var(--w-800);
  --text-muted: var(--w-700);
  --text-disabled: var(--w-500);
  --text-inverse: var(--w-25);
  --text-link: var(--gn-700);

  /* Accent. Sage is the identity colour but far too light to fill a button
   * carrying white text, so the deep green does that work and sage owns
   * selection, chips and quiet fills. */
  --accent-solid: var(--gn-600);
  --accent-solid-hover: var(--gn-700);
  --accent-solid-text: #ffffff;
  --accent-muted: var(--gn-500);
  --accent-subtle: var(--sg-100);
  --accent-subtle-text: var(--gn-700);
  --accent-border: var(--sg-300);
  --accent-text: var(--gn-600);

  /* Status. Each is a set: solid fill, subtle tint, text, border. */
  --critical-solid: var(--st-error);
  --critical-solid-text: #ffffff;
  --critical-subtle: var(--st-error-wash);
  --critical-text: var(--st-error-text);
  --critical-border: var(--st-error-edge);

  --warning-solid: var(--st-warning);
  --warning-solid-text: var(--w-900);
  --warning-subtle: var(--st-warning-wash);
  --warning-text: var(--st-warning-text);
  --warning-border: var(--st-warning-edge);

  --success-solid: var(--st-success);
  --success-solid-text: #ffffff;
  --success-subtle: var(--st-success-wash);
  --success-text: var(--st-success-text);
  --success-border: var(--st-success-edge);

  --info-solid: var(--st-info);
  --info-solid-text: #ffffff;
  --info-subtle: var(--st-info-wash);
  --info-text: var(--st-info-text);
  --info-border: var(--st-info-edge);

  /* Focus. One ring, everywhere, in every theme. */
  --focus-color: var(--gn-600);
  --focus-width: 2px;
  --focus-offset: 2px;

  /* Brand. The two identity colours, reachable by name from a component that
   * genuinely means "the Redian sage" rather than "the accent". */
  --brand-sage: var(--sg-400);
  --brand-green: var(--gn-600);
  --on-sage: var(--w-900);
  --on-brand: #ffffff;

  /* Elevation. Warm-tinted rather than pure black, so a shadow cast on cream
   * does not turn the surface under it grey. */
  --shadow-none: none;
  --shadow-sm: 0 1px 2px rgba(47, 47, 47, 0.06), 0 1px 3px rgba(47, 47, 47, 0.08);
  --shadow-md: 0 2px 4px rgba(47, 47, 47, 0.06), 0 4px 12px rgba(47, 47, 47, 0.1);
  --shadow-lg: 0 4px 8px rgba(47, 47, 47, 0.06), 0 12px 32px rgba(47, 47, 47, 0.13);
  --shadow-xl: 0 8px 16px rgba(47, 47, 47, 0.08), 0 24px 48px rgba(47, 47, 47, 0.16);

  /* ==========================================================================
   * 3. SCALES - theme-independent
   * ====================================================================== */

  /* Space. 4px base, 8-point rooted. Replaces 199 ad-hoc padding values. */
  --space-0: 0;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;

  /* Type. Nine steps replacing 80. The dense clinical tables sit at
   * --text-sm; --text-2xs is for uppercase labels only, never prose. */
  --text-2xs: 0.6875rem;
  --text-xs: 0.75rem;
  --text-sm: 0.8125rem;
  --text-md: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.375rem;
  --text-2xl: 1.75rem;
  --text-3xl: 2.25rem;

  --leading-tight: 1.2;
  --leading-snug: 1.35;
  --leading-normal: 1.5;
  --leading-loose: 1.65;

  --weight-normal: 400;
  --weight-medium: 500;
  /* On IBM Plex Sans both of these render as medium: the sans is loaded up
   * to 500 only (app/layout.tsx). They still apply to the serif and mono. */
  --weight-semibold: 600;
  --weight-bold: 700;

  --tracking-tight: -0.01em;
  --tracking-normal: 0;
  --tracking-wide: 0.06em;
  --tracking-caps: 0.08em;

  /* Radius. The product's look is square, and the square is the brand sheet's
   * own --radius-none: "the deliberate square-corner option, not a fallback
   * for 'forgot to set a radius'". Every container step resolves to it, so a
   * card, a panel, an input and a modal all agree without any of them saying
   * so, and the whole product changes from these four lines.
   *
   * --radius-full is the one exception, and the sheet names it: pills,
   * avatars and status dots. A round status dot beside a square card is not
   * an inconsistency - it is the dot being a dot. */
  --radius-none: 0px;
  --radius-sm: 0px;
  --radius-md: 0px;
  --radius-lg: 0px;
  --radius-full: 9999px;

  /* Layers. The app had 14 unmanaged z-index values from 0 to 10001.
   * Anything that stacks picks one of these seven. */
  --z-base: 0;
  --z-sticky: 100;
  --z-dropdown: 200;
  --z-overlay: 300;
  --z-modal: 400;
  --z-toast: 500;
  --z-tooltip: 600;

  /* Communications workspace: intrinsic columns also stack on narrow screens. */
  --communications-compose-basis: 30rem;
  --communications-preview-basis: 22rem;
  --communications-summary-min: 12rem;
  --communications-preview-max: 23rem;
  --communications-message-height: 14rem;
  --communications-avatar-size: 2.75rem;
  --communications-icon-size: 1.125rem;

  /* Motion */
  --duration-instant: 80ms;
  --duration-fast: 140ms;
  --duration-normal: 220ms;
  --duration-slow: 320ms;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);

  /* ==========================================================================
   * 4. COMPONENT SIZING - overridden by density below
   * ====================================================================== */
  --control-height-sm: 28px;
  --control-height-md: 34px;
  --control-height-lg: 40px;
  --control-padding-x: var(--space-3);
  --control-font: var(--text-md);
  --row-padding-y: var(--space-3);
  --row-padding-x: var(--space-4);
  --section-gap: var(--space-6);

  /* Type families, one job each. next/font fills the --font-face-* variables.
   *
   *   --font-wordmark  Josefin Slab. The REDIAN logotype and marketing
   *                    headlines, nothing else. Never UI text - not page
   *                    titles, not empty states, not modals.
   *   --font-display   Source Serif 4. The one or two moments per screen that
   *                    earn warmth: page titles, panel headers, patient names,
   *                    and the report a patient carries out of the building.
   *                    A serif drawn and hinted for screen UI, so it stays
   *                    sharp at 16px instead of going soft.
   *   --font-body      IBM Plex Sans. Everything dense - labels, buttons,
   *                    table headers, body copy.
   *   --font-mono      IBM Plex Mono. Lab values, reference ranges, sample IDs
   *                    and timestamps. Anywhere digits have to line up. */
  --font-wordmark: var(--font-face-wordmark), 'Zilla Slab', Georgia, serif;
  --font-display: var(--font-face-serif), Georgia, 'Times New Roman', serif;
  --font-body: var(--font-face-sans), -apple-system, 'Segoe UI', system-ui, sans-serif;
  /* The same sans with its semibold and bold, for navigation only: the side
   * rail, tabs and the test picker. See app/layout.tsx. */
  --font-body-full: var(--font-face-sans-full), -apple-system, 'Segoe UI', system-ui, sans-serif;
  --font-mono: var(--font-face-mono), ui-monospace, Consolas, monospace;
}

/* =============================================================================
 * EVERGREEN - the brand after hours, and what "match my device" resolves to on
 * a machine set to dark.
 *
 * Note what changes beyond the colours: --accent-solid-text and all four
 * state -solid-text tokens flip to dark ink, because every fill in this theme
 * is mid-light. A white label on Evergreen's green is 2.4:1; dark ink on it is
 * 8:1, and dark ink is what the brand sheet specifies for exactly this case.
 * ========================================================================== */

@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    --surface-page: var(--wd-25);
    --surface-raised: var(--wd-50);
    --surface-sunken: var(--wd-100);
    --surface-inset: var(--wd-0);
    --surface-overlay: var(--wd-100);
    --surface-scrim: rgba(0, 0, 0, 0.7);
    --surface-hover: #2a2d30;
    --surface-selected: var(--sgd-100);

    --border-subtle: var(--wd-100);
    --border-default: var(--wd-200);
    --border-strong: var(--wd-400);
    --border-heavy: var(--wd-500);

    --text-primary: var(--wd-900);
    --text-secondary: var(--wd-800);
    --text-muted: var(--wd-600);
    --text-disabled: var(--wd-400);
    --text-inverse: var(--wd-25);
    --text-link: var(--gnd-400);

    --accent-solid: var(--gnd-500);
    --accent-solid-hover: var(--gnd-600);
    --accent-solid-text: var(--wd-25);
    --accent-muted: var(--gnd-600);
    --accent-subtle: #1c2d27;
    --accent-subtle-text: #8fd9bc;
    --accent-border: #2e4a40;
    --accent-text: var(--gnd-400);

    --critical-solid: var(--std-error);
    --critical-solid-text: var(--wd-25);
    --critical-subtle: var(--std-error-wash);
    --critical-text: var(--std-error-text);
    --critical-border: var(--std-error-edge);

    --warning-solid: var(--std-warning);
    --warning-solid-text: var(--wd-25);
    --warning-subtle: var(--std-warning-wash);
    --warning-text: var(--std-warning-text);
    --warning-border: var(--std-warning-edge);

    --success-solid: var(--std-success);
    --success-solid-text: var(--wd-25);
    --success-subtle: var(--std-success-wash);
    --success-text: var(--std-success-text);
    --success-border: var(--std-success-edge);

    --info-solid: var(--std-info);
    --info-solid-text: var(--wd-25);
    --info-subtle: var(--std-info-wash);
    --info-text: var(--std-info-text);
    --info-border: var(--std-info-edge);

    --focus-color: var(--gnd-400);

    --brand-sage: var(--sgd-500);
    --brand-green: var(--gnd-500);
    --on-sage: var(--wd-25);
    --on-brand: var(--wd-25);

    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.3);
    --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.4), 0 4px 12px rgba(0, 0, 0, 0.36);
    --shadow-lg: 0 4px 8px rgba(0, 0, 0, 0.4), 0 12px 32px rgba(0, 0, 0, 0.5);
    --shadow-xl: 0 8px 16px rgba(0, 0, 0, 0.45), 0 24px 48px rgba(0, 0, 0, 0.6);
  }
}

:root[data-theme='evergreen'] {
  --surface-page: var(--wd-25);
  --surface-raised: var(--wd-50);
  --surface-sunken: var(--wd-100);
  --surface-inset: var(--wd-0);
  --surface-overlay: var(--wd-100);
  --surface-scrim: rgba(0, 0, 0, 0.7);
  --surface-hover: #2a2d30;
  --surface-selected: var(--sgd-100);

  --border-subtle: var(--wd-100);
  --border-default: var(--wd-200);
  --border-strong: var(--wd-400);
  --border-heavy: var(--wd-500);

  --text-primary: var(--wd-900);
  --text-secondary: var(--wd-800);
  --text-muted: var(--wd-600);
  --text-disabled: var(--wd-400);
  --text-inverse: var(--wd-25);
  --text-link: var(--gnd-400);

  --accent-solid: var(--gnd-500);
  --accent-solid-hover: var(--gnd-600);
  --accent-solid-text: var(--wd-25);
  --accent-muted: var(--gnd-600);
  --accent-subtle: #1c2d27;
  --accent-subtle-text: #8fd9bc;
  --accent-border: #2e4a40;
  --accent-text: var(--gnd-400);

  --critical-solid: var(--std-error);
  --critical-solid-text: var(--wd-25);
  --critical-subtle: var(--std-error-wash);
  --critical-text: var(--std-error-text);
  --critical-border: var(--std-error-edge);

  --warning-solid: var(--std-warning);
  --warning-solid-text: var(--wd-25);
  --warning-subtle: var(--std-warning-wash);
  --warning-text: var(--std-warning-text);
  --warning-border: var(--std-warning-edge);

  --success-solid: var(--std-success);
  --success-solid-text: var(--wd-25);
  --success-subtle: var(--std-success-wash);
  --success-text: var(--std-success-text);
  --success-border: var(--std-success-edge);

  --info-solid: var(--std-info);
  --info-solid-text: var(--wd-25);
  --info-subtle: var(--std-info-wash);
  --info-text: var(--std-info-text);
  --info-border: var(--std-info-edge);

  --focus-color: var(--gnd-400);

  --brand-sage: var(--sgd-500);
  --brand-green: var(--gnd-500);
  --on-sage: var(--wd-25);
  --on-brand: var(--wd-25);

  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.4), 0 4px 12px rgba(0, 0, 0, 0.36);
  --shadow-lg: 0 4px 8px rgba(0, 0, 0, 0.4), 0 12px 32px rgba(0, 0, 0, 0.5);
  --shadow-xl: 0 8px 16px rgba(0, 0, 0, 0.45), 0 24px 48px rgba(0, 0, 0, 0.6);
}

/* =============================================================================
 * SAGE - named explicitly, for someone on a dark machine who wants the light
 * brand anyway. Identical to the bare :root; declared rather than inherited so
 * that it beats the media query above.
 * ========================================================================== */

:root[data-theme='sage'] {
  --surface-page: var(--w-100);
  --surface-raised: var(--w-25);
  --surface-sunken: var(--w-200);
  --surface-inset: var(--w-50);
  --surface-overlay: var(--w-0);
  --surface-scrim: rgba(47, 47, 47, 0.45);
  --surface-hover: var(--w-50);
  --surface-selected: var(--sg-100);

  --border-subtle: var(--w-200);
  --border-default: var(--w-300);
  --border-strong: var(--w-600);
  --border-heavy: var(--w-800);

  --text-primary: var(--w-900);
  --text-secondary: var(--w-800);
  --text-muted: var(--w-700);
  --text-disabled: var(--w-500);
  --text-inverse: var(--w-25);
  --text-link: var(--gn-700);

  --accent-solid: var(--gn-600);
  --accent-solid-hover: var(--gn-700);
  --accent-solid-text: #ffffff;
  --accent-muted: var(--gn-500);
  --accent-subtle: var(--sg-100);
  --accent-subtle-text: var(--gn-700);
  --accent-border: var(--sg-300);
  --accent-text: var(--gn-600);

  --critical-solid: var(--st-error);
  --critical-solid-text: #ffffff;
  --critical-subtle: var(--st-error-wash);
  --critical-text: var(--st-error-text);
  --critical-border: var(--st-error-edge);

  --warning-solid: var(--st-warning);
  --warning-solid-text: var(--w-900);
  --warning-subtle: var(--st-warning-wash);
  --warning-text: var(--st-warning-text);
  --warning-border: var(--st-warning-edge);

  --success-solid: var(--st-success);
  --success-solid-text: #ffffff;
  --success-subtle: var(--st-success-wash);
  --success-text: var(--st-success-text);
  --success-border: var(--st-success-edge);

  --info-solid: var(--st-info);
  --info-solid-text: #ffffff;
  --info-subtle: var(--st-info-wash);
  --info-text: var(--st-info-text);
  --info-border: var(--st-info-edge);

  --focus-color: var(--gn-600);

  --brand-sage: var(--sg-400);
  --brand-green: var(--gn-600);
  --on-sage: var(--w-900);
  --on-brand: #ffffff;

  --shadow-sm: 0 1px 2px rgba(47, 47, 47, 0.06), 0 1px 3px rgba(47, 47, 47, 0.08);
  --shadow-md: 0 2px 4px rgba(47, 47, 47, 0.06), 0 4px 12px rgba(47, 47, 47, 0.1);
  --shadow-lg: 0 4px 8px rgba(47, 47, 47, 0.06), 0 12px 32px rgba(47, 47, 47, 0.13);
  --shadow-xl: 0 8px 16px rgba(47, 47, 47, 0.08), 0 24px 48px rgba(47, 47, 47, 0.16);
}

/* =============================================================================
 * CLINICAL - the original light palette, unchanged.
 * ========================================================================== */

:root[data-theme='clinical'] {
  --surface-page: var(--n-50);
  --surface-raised: var(--n-0);
  --surface-sunken: var(--n-100);
  --surface-inset: var(--n-25);
  --surface-overlay: var(--n-0);
  --surface-scrim: rgba(18, 21, 27, 0.55);
  --surface-hover: var(--n-50);
  --surface-selected: var(--a-50);

  --border-subtle: var(--n-100);
  --border-default: var(--n-300);
  --border-strong: var(--n-400);
  --border-heavy: var(--n-600);

  --text-primary: var(--n-900);
  --text-secondary: var(--n-600);
  --text-muted: var(--n-500);
  --text-disabled: var(--n-400);
  --text-inverse: var(--n-0);
  --text-link: var(--a-700);

  --accent-solid: var(--a-700);
  --accent-solid-hover: var(--a-800);
  --accent-solid-text: var(--n-0);
  --accent-muted: var(--a-600);
  --accent-subtle: var(--a-50);
  --accent-subtle-text: var(--a-800);
  --accent-border: var(--a-200);
  --accent-text: var(--a-700);

  --critical-solid: var(--rd-500);
  --critical-solid-text: var(--n-0);
  --critical-subtle: var(--rd-50);
  --critical-text: var(--rd-700);
  --critical-border: var(--rd-200);

  --warning-solid: var(--am-500);
  --warning-solid-text: var(--n-0);
  --warning-subtle: var(--am-50);
  --warning-text: var(--am-700);
  --warning-border: var(--am-200);

  --success-solid: var(--gr-500);
  --success-solid-text: var(--n-0);
  --success-subtle: var(--gr-50);
  --success-text: var(--gr-700);
  --success-border: var(--gr-200);

  --info-solid: var(--a-700);
  --info-solid-text: var(--n-0);
  --info-subtle: var(--a-50);
  --info-text: var(--a-800);
  --info-border: var(--a-200);

  --focus-color: var(--a-600);

  --brand-sage: var(--sg-400);
  --brand-green: var(--gn-600);
  --on-sage: var(--w-900);
  --on-brand: var(--n-0);

  --shadow-sm: 0 1px 2px rgba(18, 21, 27, 0.06), 0 1px 3px rgba(18, 21, 27, 0.08);
  --shadow-md: 0 2px 4px rgba(18, 21, 27, 0.06), 0 4px 12px rgba(18, 21, 27, 0.09);
  --shadow-lg: 0 4px 8px rgba(18, 21, 27, 0.06), 0 12px 28px rgba(18, 21, 27, 0.12);
  --shadow-xl: 0 8px 16px rgba(18, 21, 27, 0.08), 0 24px 48px rgba(18, 21, 27, 0.16);
}

/* =============================================================================
 * MIDNIGHT - the original dark palette, unchanged.
 * ========================================================================== */

:root[data-theme='midnight'] {
  --surface-page: var(--d-page);
  --surface-raised: var(--d-raised);
  --surface-sunken: var(--d-sunken);
  --surface-inset: #10141c;
  --surface-overlay: var(--d-raised);
  --surface-scrim: rgba(0, 0, 0, 0.7);
  --surface-hover: #1e2531;
  --surface-selected: #16203a;

  --border-subtle: #20262f;
  --border-default: var(--d-line);
  --border-strong: var(--d-line-2);
  --border-heavy: #4a5568;

  --text-primary: var(--d-text);
  --text-secondary: var(--d-text-2);
  --text-muted: var(--d-text-3);
  --text-disabled: #6f7788;
  --text-inverse: var(--d-page);
  --text-link: #86aae6;

  --accent-solid: #3f6cc4;
  --accent-solid-hover: #35609f;
  --accent-solid-text: #ffffff;
  --accent-muted: #5a83d0;
  --accent-subtle: #16203a;
  --accent-subtle-text: #b8cdf5;
  --accent-border: #2c4372;
  --accent-text: #8fb3f5;

  --critical-solid: #c22f24;
  --critical-solid-text: #ffffff;
  --critical-subtle: #2a1614;
  --critical-text: #ffb4a8;
  --critical-border: #4d2822;

  --warning-solid: #9a6600;
  --warning-solid-text: #ffffff;
  --warning-subtle: #251d0e;
  --warning-text: #f0cd8b;
  --warning-border: #453518;

  --success-solid: #12795a;
  --success-solid-text: #ffffff;
  --success-subtle: #10241d;
  --success-text: #8fdcbd;
  --success-border: #1e4335;

  --info-solid: #3f6cc4;
  --info-solid-text: #ffffff;
  --info-subtle: #141d2e;
  --info-text: #a9c8f5;
  --info-border: #2c4372;

  --focus-color: #7fa3e0;

  --brand-sage: var(--sgd-500);
  --brand-green: var(--gnd-500);
  --on-sage: var(--wd-25);
  --on-brand: #ffffff;

  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.4), 0 4px 12px rgba(0, 0, 0, 0.36);
  --shadow-lg: 0 4px 8px rgba(0, 0, 0, 0.4), 0 12px 28px rgba(0, 0, 0, 0.45);
  --shadow-xl: 0 8px 16px rgba(0, 0, 0, 0.45), 0 24px 48px rgba(0, 0, 0, 0.55);
}

/* =============================================================================
 * DENSITY
 * A lab bench scanning 40 results and a front desk registering one patient
 * want different row heights. Set data-density on <html> or any container.
 * ========================================================================== */

[data-density='compact'] {
  --control-height-sm: 24px;
  --control-height-md: 28px;
  --control-height-lg: 34px;
  --control-padding-x: var(--space-2);
  --control-font: var(--text-sm);
  --row-padding-y: var(--space-1);
  --row-padding-x: var(--space-3);
  --section-gap: var(--space-4);
}

[data-density='comfortable'] {
  --control-height-sm: 32px;
  --control-height-md: 40px;
  --control-height-lg: 48px;
  --control-padding-x: var(--space-4);
  --control-font: var(--text-base);
  --row-padding-y: var(--space-4);
  --row-padding-x: var(--space-5);
  --section-gap: var(--space-8);
}

/* =============================================================================
 * LEGACY BRIDGE
 * -----------------------------------------------------------------------------
 * 2,100 inline style objects reference the old --gray-* / --teal-* names.
 * Rather than a 2,100-site find-and-replace in one commit, the old names now
 * point at semantic tokens. Two things follow from that:
 *
 *   - those call sites become theme-aware for free, and
 *   - each can be migrated to the semantic name it already resolves to, screen
 *     by screen, with no visual change at the moment of the edit.
 *
 * These names are frozen. Nothing new may use them; scripts/check-tokens.mjs
 * fails the build if the count goes up. Delete this block when it reaches zero.
 *
 * --teal-* is a fossil twice over: it named a colour the product stopped using
 * when the palette went blue, and the brand's own green is not that teal
 * either. It points at the accent set, whatever the accent currently is.
 * ========================================================================== */

:root {
  --gray-950: var(--text-primary);
  --gray-900: var(--text-primary);
  --gray-800: var(--text-secondary);
  --gray-700: var(--text-secondary);
  --gray-600: var(--text-secondary);
  --gray-500: var(--text-muted);
  --gray-400: var(--text-disabled);
  --gray-300: var(--border-default);
  --gray-200: var(--border-subtle);
  --gray-100: var(--surface-sunken);
  --gray-50: var(--surface-page);
  --white: var(--surface-raised);

  --teal-900: var(--accent-subtle-text);
  --teal-850: var(--accent-subtle-text);
  --teal-800: var(--accent-subtle-text);
  --teal-700: var(--accent-solid);
  --teal-600: var(--accent-muted);
  --teal-500: var(--accent-muted);
  --teal-400: var(--accent-border);
  --teal-300: var(--accent-border);
  --teal-200: var(--accent-border);
  --teal-100: var(--accent-subtle);
  --teal-50: var(--accent-subtle);

  --red: var(--critical-solid);
  --red-50: var(--critical-subtle);
  --red-200: var(--critical-border);
  --red-light: var(--critical-subtle);
  --green: var(--success-solid);
  --green-light: var(--success-subtle);
  --amber: var(--warning-solid);
  --amber-700: var(--warning-text);
  --amber-light: var(--warning-subtle);
  --blue-600: var(--info-solid);
  --gold: var(--warning-solid);
  --gold-light: var(--warning-border);

  --font-sans: var(--font-body);
  --radius: var(--radius-md);
  --focus-ring: 0 0 0 2px var(--surface-raised), 0 0 0 4px var(--focus-color);
}

/*
 * Redian global stylesheet.
 *
 * Phase 0 of the interface overhaul. Two rules used to live here that were
 * quietly fighting the rest of the app:
 *
 *   1. `border-radius: 0 !important` on every element. It beat inline styles,
 *      so 363 borderRadius declarations written across the app did nothing.
 *      Radius is now a token; set --radius to 0 to get the old square look
 *      back in one edit instead of an !important sledgehammer.
 *
 *   2. Eleven gray, teal and red variables were referenced by name in
 *      components but never defined here. --gray-200 alone appeared 141 times,
 *      so those borders resolved to nothing and simply did not render.
 *
 * Fonts load through next/font in app/layout.tsx, not an @import here, an
 * @import blocks the first paint. --font-display used to read 'Times  New
 * Roman' with two spaces, which matched no installed face.
 */

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}



html {
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  /* Tells the browser which theme its own widgets should match: scrollbars,
   * the date picker, select menus, form autofill. Without it a dark theme
   * keeps a white scrollbar and a white calendar popover.
   *
   * ThemeProvider's boot script sets this inline before the first paint, for
   * whichever of the four themes is active. The rules here are the fallback
   * for the frames before that script runs, and for a page that never gets
   * it: the print preview, a scraper, site data blocked. */
  color-scheme: light;
}

@media (prefers-color-scheme: dark) {
  html:not([data-polarity='light']) {
    color-scheme: dark;
  }
}

html[data-polarity='dark'] {
  color-scheme: dark;
}

html,
body {
  height: 100%;

  /*
   * The page does not float.
   *
   * Without this the document rubber-bands: drag up at the top or down at the
   * bottom and the whole interface slides away from its edge and springs back,
   * and on a touchscreen a downward drag at the top arms pull-to-refresh. Both
   * are wrong here. The rail and the header are sticky, so a bounce peels them
   * off the edge they are pinned to and the whole shell looks loose; and a
   * stray refresh on a clinic tablet throws away a half-typed registration.
   *
   * `none` rather than `contain`: `contain` only stops the scroll chaining to
   * a parent, and the document has no parent to chain to. It is the bounce
   * itself that has to go.
   */
  overscroll-behavior: none;
}

html {
  /*
   * Reserve the scrollbar's width whether or not there is one, so a short
   * screen and a long screen line up. Otherwise every navigation between a
   * page that scrolls and a page that does not shifts the entire layout
   * sideways by the width of the scrollbar, which reads as the interface
   * twitching each time you move.
   */
  scrollbar-gutter: stable;
}

body {
  font-family: var(--font-body);
  /* No faux bold. The sans ships without 600 and 700 (see app/layout.tsx),
   * so a heavier request settles on medium instead of being smeared. */
  font-synthesis-weight: none;
  background: var(--surface-page);
  color: var(--text-primary);
  font-size: 16px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

/* Keyboard focus is visible everywhere, including on elements whose inline
 * styles set `outline: none`, because a box-shadow ring cannot be cleared by
 * an outline declaration. Pointer clicks do not trigger :focus-visible, so
 * this costs the mouse user nothing. */
:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

button:focus-visible,
a:focus-visible,
[role='button']:focus-visible,
[role='tab']:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -1px;
  border-color: var(--focus-color) !important;
}

/* Reach for this on a wrapper when the focused control sits flush against an
 * edge and an outline would be clipped. */
.focus-ring:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

/* Skip link: first thing in the tab order, invisible until focused. */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: calc(var(--z-tooltip) + 1);
  background: var(--accent-solid);
  color: var(--accent-solid-text);
  padding: 0.75rem 1.25rem;
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
}
.skip-link:focus {
  left: 0.5rem;
  top: 0.5rem;
}

/* Screen-reader-only text that stays in the accessibility tree. */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* Scrollbar */
::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-track {
  background: transparent;
}

::-webkit-scrollbar-thumb {
  background: var(--border-default);
  border-radius: var(--radius);
}

::-webkit-scrollbar-thumb:hover {
  background: var(--border-strong);
}

/* Print styles */
@media print {
  * {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  .no-print {
    display: none !important;
  }

  .print-only {
    display: block !important;
  }

  body {
    background: white;
  }
}

.print-only {
  display: none;
}

/* Animations. `spin` lives here rather than being re-declared in six
 * component files through inline <style> islands. */
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(8px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes pulse {

  0%,
  100% {
    opacity: 1;
  }

  50% {
    opacity: 0.5;
  }
}

@keyframes ping {
  0% {
    transform: scale(1);
    opacity: 0.8;
  }

  100% {
    transform: scale(2);
    opacity: 0;
  }
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.animate-fadeIn {
  animation: fadeIn 0.3s ease forwards;
}

.animate-pulse {
  animation: pulse 2s infinite;
}

.animate-spin {
  animation: spin 0.8s linear infinite;
}

/* Vestibular disorders, and anyone who has asked their OS to calm things
 * down. Motion is removed; nothing is hidden. */
@media (prefers-reduced-motion: reduce) {

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

.custom-letterhead {
  margin-bottom: 0px;
  padding-bottom: 0px;
}
.custom-letterhead p {
  margin: 0 0 4px 0;
}
.custom-letterhead div {
  margin: 0;
}
.custom-letterhead *:last-child {
  margin-bottom: 0px !important;
  padding-bottom: 0px !important;
}


/* app/[slug]/admin/admin.module.css */
.admin_admin {
  min-width: 0;
  font-family: var(--font-body);
  font-weight: var(--weight-normal);
}

.admin_admin [data-financial="true"], .admin_admin [data-financial="true"] * {
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
  font-variant-numeric: tabular-nums;
}


/* app/[slug]/admin/audit/audit.module.css */
.audit_screen {
  gap: var(--space-5);
  flex-direction: column;
  display: flex;
}

.audit_filters {
  align-items: flex-end;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.audit_searchField {
  flex: 220px;
  min-width: 0;
}

.audit_actionField {
  flex: 0 200px;
}

.audit_dateField {
  width: 160px;
}

.audit_toolbar {
  margin-left: auto;
}

.audit_when {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
  font-size: var(--text-sm);
  color: var(--text-secondary);
}

.audit_who {
  font-weight: var(--weight-medium);
  color: var(--text-primary);
}

.audit_what {
  color: var(--text-secondary);
  font-size: var(--text-sm);
}

.audit_entity {
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-sm);
  color: var(--text-muted);
  display: inline-flex;
}

.audit_expandBody {
  padding: var(--space-4) var(--space-5);
  background: var(--surface-raised);
  border-top: 1px solid var(--border-subtle);
}

.audit_diffGrid {
  gap: var(--space-4);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

.audit_diffLabel {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
  margin: 0 0 var(--space-2);
}

.audit_diffCode {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  white-space: pre-wrap;
  word-break: break-all;
  color: var(--text-secondary);
  margin: 0;
}

.audit_expandToggle {
  align-items: center;
  gap: var(--space-1);
  font: inherit;
  font-size: var(--text-sm);
  color: var(--text-muted);
  cursor: pointer;
  background: none;
  border: 0;
  padding: 0;
  display: inline-flex;
}

.audit_expandToggle:hover {
  color: var(--text-primary);
}

.audit_loading {
  padding: var(--space-5);
}


/* app/[slug]/admin/data/data.module.css */
.data_screen {
  gap: var(--space-5);
  flex-direction: column;
  display: flex;
}

.data_cardTitle {
  align-items: center;
  gap: var(--space-2);
  display: inline-flex;
}

.data_summary {
  margin-bottom: var(--space-4);
}

.data_headline {
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 0;
}

.data_detail {
  margin: var(--space-1) 0 0;
  font-size: var(--text-sm);
  color: var(--text-secondary);
  max-width: 62ch;
}

.data_folder {
  align-items: baseline;
  gap: var(--space-2);
  margin: 0 0 var(--space-4);
  padding: var(--space-3);
  background: var(--surface-sunken);
  border: 1px solid var(--border-subtle);
  font-size: var(--text-sm);
  flex-wrap: wrap;
  display: flex;
}

.data_folder code {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--text-primary);
  word-break: break-all;
}

.data_folderNote {
  color: var(--text-secondary);
  flex: 24ch;
}

.data_when {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.data_file {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--text-secondary);
}

.data_skeletonCard {
  gap: var(--space-4);
  padding: var(--space-5);
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  margin-bottom: var(--space-5);
  flex-direction: column;
  display: flex;
}

@media (width <= 640px) {
  .data_folder {
    flex-direction: column;
  }
}


/* app/[slug]/admin/money/money.module.css */
.money_screen {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.money_stats {
  gap: var(--space-3);
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  display: grid;
}

.money_filters {
  align-items: flex-end;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.money_searchField {
  flex: 16rem;
}

.money_loading {
  padding: var(--space-3);
}

.money_patient {
  gap: var(--space-0);
  flex-direction: column;
  display: flex;
}

.money_name {
  font-weight: var(--weight-medium);
  color: var(--text-primary);
}

.money_slip {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  color: var(--text-muted);
}

.money_phone {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.money_money {
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
  font-variant-numeric: tabular-nums;
  color: var(--text-primary);
}

.money_age {
  align-items: center;
  gap: var(--space-2);
  font-variant-numeric: tabular-nums;
  display: inline-flex;
}

.money_contact {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.money_contactedRecently {
  font-size: var(--text-xs);
  color: var(--text-muted);
  font-style: italic;
}

.money_rowActions {
  gap: var(--space-2);
  display: inline-flex;
}


/* app/[slug]/admin/patients/patients.module.css */
.patients_screen {
  gap: var(--space-5);
  flex-direction: column;
  display: flex;
}

.patients_filters {
  align-items: flex-end;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.patients_searchField {
  flex: 240px;
  min-width: 0;
}

.patients_dates {
  align-items: flex-end;
  gap: var(--space-2);
  display: flex;
}

.patients_dateField {
  width: 150px;
}

.patients_filterActions {
  gap: var(--space-2);
  margin-left: auto;
  display: flex;
}

.patients_split {
  gap: var(--space-4);
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  display: grid;
}

.patients_splitOpen {
  grid-template-columns: minmax(0, 1fr) 380px;
}

@media (width <= 1100px) {
  .patients_splitOpen {
    grid-template-columns: minmax(0, 1fr);
  }
}

.patients_detail {
  top: var(--space-5);
  position: sticky;
}

.patients_detailHeading {
  margin: var(--space-5) 0 var(--space-2);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.patients_testList {
  margin: 0 0 var(--space-5);
  padding: 0;
  list-style: none;
}

.patients_testRow {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) 0;
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
}

.patients_testRow:last-child {
  border-bottom: 0;
}

.patients_testName {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  color: var(--text-primary);
  min-width: 0;
  display: inline-flex;
}

.patients_loading {
  padding: var(--space-5);
}

.patients_mono {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--accent-text);
  white-space: nowrap;
}

.patients_stack {
  flex-direction: column;
  gap: 1px;
  min-width: 0;
  display: flex;
}

.patients_strong {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.patients_muted {
  font-size: var(--text-xs);
  color: var(--text-muted);
}

.patients_nowrap {
  white-space: nowrap;
}

.patients_tests {
  align-items: center;
  gap: var(--space-1);
  flex-wrap: wrap;
  max-width: 280px;
  display: inline-flex;
}

.patients_allDone {
  font-weight: var(--weight-semibold);
  color: var(--success-text);
}

.patients_editForm {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}


/* app/[slug]/admin/referrals/commissions/commissions.module.css */
.commissions_screen {
  gap: var(--space-5);
  flex-direction: column;
  display: flex;
}

.commissions_summary {
  gap: var(--space-3);
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  display: grid;
}

.commissions_filters {
  align-items: flex-end;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.commissions_searchField {
  flex: 220px;
  min-width: 0;
}

.commissions_dates {
  align-items: flex-end;
  gap: var(--space-2);
  display: flex;
}

.commissions_dateField {
  width: 150px;
}

.commissions_exports {
  gap: var(--space-2);
  margin-left: auto;
  display: flex;
}

.commissions_loading {
  padding: var(--space-5);
}

.commissions_nowrap {
  white-space: nowrap;
}

.commissions_stack {
  flex-direction: column;
  gap: 1px;
  min-width: 0;
  display: flex;
}

.commissions_strong {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.commissions_muted {
  font-size: var(--text-xs);
  color: var(--text-muted);
  text-transform: capitalize;
}

.commissions_slip {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  color: var(--text-secondary);
}

.commissions_referrer {
  align-items: center;
  gap: var(--space-2);
  color: var(--text-muted);
  min-width: 0;
  display: inline-flex;
}

.commissions_tests {
  gap: var(--space-1);
  flex-wrap: wrap;
  max-width: 240px;
  display: inline-flex;
}

.commissions_commission {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  font-variant-numeric: tabular-nums;
}

.commissions_groups {
  gap: var(--space-3);
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.commissions_groupCard {
  overflow: hidden;
}

.commissions_groupHead {
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  flex-wrap: wrap;
  display: flex;
}

.commissions_groupToggle {
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
  background: none;
  border: 0;
  flex: 220px;
  padding: 0;
  display: flex;
}

.commissions_chevron {
  color: var(--text-muted);
  display: inline-flex;
}

.commissions_groupName {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  display: inline-flex;
}

.commissions_groupFigures {
  gap: var(--space-6);
  text-align: right;
  margin: 0;
  display: flex;
}

.commissions_groupFigures dt {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.commissions_groupFigures dd {
  font-family: var(--font-mono);
  font-size: var(--text-md);
  font-weight: var(--weight-normal);
  color: var(--text-primary);
  font-variant-numeric: tabular-nums;
  margin: 2px 0 0;
}

.commissions_settled {
  color: var(--success-text);
}

.commissions_owed {
  color: var(--warning-text);
}

@media (width <= 860px) {
  .commissions_groupFigures {
    justify-content: space-between;
    gap: var(--space-3);
    text-align: left;
    flex-basis: 100%;
  }
}

.commissions_settle {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.commissions_settleFacts {
  gap: var(--space-3);
  flex-direction: column;
  margin: 0;
  display: flex;
}

.commissions_settleFacts dt {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.commissions_settleFacts dd {
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  margin: 2px 0 0;
}

.commissions_settleAmount {
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-4);
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-md);
  background: var(--accent-subtle);
  text-align: center;
  flex-direction: column;
  margin: 0;
  display: flex;
}

.commissions_settleAmountLabel {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-subtle-text);
}

.commissions_settleAmountValue {
  font-family: var(--font-mono);
  font-size: var(--text-2xl);
  font-weight: var(--weight-normal);
  color: var(--accent-subtle-text);
  font-variant-numeric: tabular-nums;
}

.commissions_settleNote {
  font-size: var(--text-xs);
  color: var(--text-muted);
  margin: 0;
}


/* app/[slug]/admin/referrals/referrals.module.css */
.referrals_page {
  max-width: 1100px;
  padding: var(--space-6);
  gap: var(--space-5);
  flex-direction: column;
  margin: 0 auto;
  display: flex;
}

.referrals_grid {
  gap: var(--space-5);
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  display: grid;
}

.referrals_link {
  color: inherit;
  border-radius: var(--radius-lg);
  text-decoration: none;
  transition: transform .15s, box-shadow .15s;
  display: block;
}

.referrals_link:hover, .referrals_link:focus-visible {
  box-shadow: var(--shadow-lg);
  transform: translateY(-2px);
}

.referrals_link:focus-visible {
  outline: 2px solid var(--focus-color);
  outline-offset: 2px;
}

.referrals_tile {
  gap: var(--space-4);
  height: 100%;
  padding: var(--space-5);
  flex-direction: column;
  display: flex;
}

.referrals_tileTop {
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-3);
  display: flex;
}

.referrals_tileIcon {
  border-radius: var(--radius-md);
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  width: 44px;
  height: 44px;
  display: flex;
}

.referrals_iconFacilities {
  background: var(--accent-subtle);
  color: var(--accent-text);
}

.referrals_iconDoctors {
  background: var(--info-subtle);
  color: var(--info-text);
}

.referrals_iconPricing {
  background: var(--warning-subtle);
  color: var(--warning-text);
}

.referrals_iconCommissions {
  background: var(--success-subtle);
  color: var(--success-text);
}

.referrals_chevron {
  color: var(--text-muted);
  flex-shrink: 0;
}

.referrals_title {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-caps);
  color: var(--text-muted);
  margin-bottom: var(--space-1);
}

.referrals_figure {
  font-size: var(--text-2xl);
  font-weight: var(--weight-normal);
  line-height: var(--leading-tight);
  color: var(--text-primary);
  display: block;
}

.referrals_unit {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  margin-top: var(--space-1);
}

.referrals_desc {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  margin: 0;
}


/* app/[slug]/admin/referrals/referralsLoading.module.css */
.referralsLoading_page {
  padding: var(--space-6);
}

.referralsLoading_grid {
  gap: var(--space-5);
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  display: grid;
}


/* app/[slug]/admin/referrals/referrers.module.css */
.referrers_screen {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.referrers_filters {
  gap: var(--space-3);
  flex-wrap: wrap;
  align-items: flex-end;
  display: flex;
}

.referrers_searchField {
  flex: 14rem;
}

.referrers_stats {
  gap: var(--space-3);
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
  display: grid;
}

.referrers_loading {
  padding: var(--space-4);
}

.referrers_name {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.referrers_contact {
  flex-direction: column;
  gap: 2px;
  display: flex;
}

.referrers_contactLine {
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  display: flex;
}

.referrers_facility {
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-xs);
  color: var(--accent-text);
  display: inline-flex;
}

.referrers_muted {
  color: var(--text-muted);
}

.referrers_rowActions {
  gap: var(--space-1);
  justify-content: flex-end;
  display: flex;
}

.referrers_form {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}


/* app/[slug]/admin/reports/reports.module.css */
.reports_screen {
  max-width: 1200px;
  padding: var(--space-6);
  gap: var(--space-5);
  flex-direction: column;
  margin: 0 auto;
  display: flex;
}

.reports_screen > * {
  min-width: 0;
}

.reports_ageing {
  gap: var(--space-5);
  padding-top: var(--space-4);
  flex-direction: column;
  display: flex;
}

.reports_money {
  padding-top: var(--space-4);
}

.reports_buckets {
  gap: var(--space-4);
  grid-template-columns: repeat(4, minmax(0, 1fr));
  display: grid;
}

.reports_loading {
  padding: var(--space-4);
}

.reports_link {
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--text-link);
  text-decoration: none;
}

.reports_link:hover {
  text-decoration: underline;
}

.reports_commissionModal {
  gap: var(--space-5);
  flex-direction: column;
  display: flex;
}

.reports_commissionEditor {
  gap: var(--space-4);
  padding: var(--space-4);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  flex-direction: column;
  display: flex;
}

.reports_commissionActions {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding-top: var(--space-1);
  display: flex;
}

@media (width <= 720px) {
  .reports_screen {
    padding: var(--space-4);
  }

  .reports_buckets {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}


/* app/[slug]/admin/reports/reportsLoading.module.css */
.reportsLoading_page {
  gap: var(--space-5);
  padding: var(--space-6);
  flex-direction: column;
  display: flex;
}

.reportsLoading_tiles {
  gap: var(--space-4);
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  display: grid;
}

.reportsLoading_tabs {
  display: flex;
}

.reportsLoading_panel {
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  overflow: hidden;
}


/* app/[slug]/admin/settings/organisation.module.css */
.organisation_page {
  gap: var(--space-6);
  flex-direction: column;
  max-width: 1180px;
  display: flex;
}

.organisation_form {
  gap: var(--space-6);
  flex-direction: column;
  display: flex;
}

.organisation_preview {
  border: 2px solid var(--accent-solid);
  background: var(--surface-raised);
}

.organisation_previewLabel {
  gap: var(--space-2);
  padding: var(--space-3) var(--space-5);
  border-bottom: 1px solid var(--border-subtle);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-text);
  flex-wrap: wrap;
  align-items: baseline;
  margin: 0;
  display: flex;
}

.organisation_previewNote {
  font-weight: var(--weight-medium);
  letter-spacing: 0;
  text-transform: none;
  color: var(--text-muted);
}

.organisation_sectionBar {
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.organisation_sectionBar > :first-child {
  margin-right: auto;
}

.organisation_hint {
  margin: 0 0 var(--space-3);
  font-size: var(--text-xs);
  line-height: var(--leading-normal);
  color: var(--text-secondary);
}

.organisation_clearArea {
  align-items: center;
  gap: var(--space-5);
  margin: 0 0 var(--space-3);
  padding: var(--space-3) var(--space-4);
  background: var(--accent-subtle);
  border: 1px solid var(--accent-border);
  flex-wrap: wrap;
  display: flex;
}

.organisation_clearAreaTitle {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-text);
}

.organisation_clearAreaField {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  color: var(--text-primary);
  display: inline-flex;
}

.organisation_clearAreaField input {
  width: 5em;
}

.organisation_fallbacks {
  border: 1px solid var(--border-default);
  background: var(--surface-sunken);
  padding: var(--space-5);
}

.organisation_fallbacks > summary {
  cursor: pointer;
  user-select: none;
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--text-secondary);
}

.organisation_fallbacks > summary:focus-visible {
  outline: 2px solid var(--focus-color);
  outline-offset: 2px;
}

.organisation_fallbackFields {
  gap: var(--space-5);
  margin-top: var(--space-5);
  flex-direction: column;
  display: flex;
}

.organisation_fallbackNote {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  margin: 0;
}

.organisation_pair {
  gap: var(--space-5);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

@media (width <= 640px) {
  .organisation_pair {
    grid-template-columns: 1fr;
  }
}

.organisation_actions {
  z-index: var(--z-sticky);
  background: var(--surface-raised);
  padding: var(--space-3) 0;
  justify-content: flex-end;
  display: flex;
  position: sticky;
  bottom: 0;
}

.organisation_workspaceId {
  font-family: var(--font-mono);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.organisation_cardTitle {
  align-items: center;
  gap: var(--space-2);
  display: inline-flex;
}

.organisation_policyNote {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  margin: 0;
}

.organisation_methodOptions {
  gap: var(--space-3);
  margin-top: var(--space-3);
  flex-direction: column;
  display: flex;
}

.organisation_settingError {
  font-size: var(--text-xs);
  color: var(--critical-text);
  margin: 0;
}


/* app/[slug]/admin/settings/settingsLoading.module.css */
.settingsLoading_page {
  gap: var(--space-6);
  padding: var(--space-6);
  flex-direction: column;
  display: flex;
}

.settingsLoading_head {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  display: flex;
}

.settingsLoading_panel {
  padding: var(--space-5);
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
}


/* app/[slug]/admin/staff/directory.module.css */
.directory_layout {
  gap: var(--space-6);
  grid-template-columns: 380px minmax(0, 1fr);
  align-items: start;
  display: grid;
}

@media (width <= 1024px) {
  .directory_layout {
    grid-template-columns: minmax(0, 1fr);
  }
}

.directory_aside {
  gap: var(--space-5);
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.directory_cardTitle {
  align-items: center;
  gap: var(--space-2);
  display: inline-flex;
}

.directory_form {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.directory_linkBox {
  margin-top: var(--space-5);
  padding: var(--space-4);
  border: 1px solid var(--success-border);
  border-radius: var(--radius-md);
  background: var(--success-subtle);
}

.directory_linkLabel {
  align-items: center;
  gap: var(--space-1);
  margin: 0 0 var(--space-2);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--success-text);
  display: flex;
}

.directory_linkRow {
  align-items: center;
  gap: var(--space-2);
  display: flex;
}

.directory_linkRow > :first-child {
  flex: 1;
  min-width: 0;
}

.directory_invites {
  margin: 0;
  padding: 0;
  list-style: none;
}

.directory_invite {
  gap: var(--space-2);
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--border-subtle);
  flex-direction: column;
  display: flex;
}

.directory_invite:last-child {
  border-bottom: 0;
}

.directory_inviteHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  display: flex;
}

.directory_inviteEmail {
  min-width: 0;
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.directory_inviteMeta {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  display: flex;
}

.directory_loading {
  padding: var(--space-5);
}

.directory_person {
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
  display: inline-flex;
}

.directory_avatar {
  border-radius: var(--radius-full);
  background: hsl(var(--avatar-hue, 210) 55% 34%);
  color: #fff;
  width: 36px;
  height: 36px;
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.directory_personText {
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.directory_personName {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.directory_personEmail {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.directory_you {
  margin-left: var(--space-2);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}


/* app/[slug]/admin/staff/profile.module.css */
.slugAdminStaffProfile_identity {
  align-items: center;
  gap: var(--space-3);
  padding-bottom: var(--space-4);
  margin-bottom: var(--space-5);
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
}

.slugAdminStaffProfile_avatar {
  border-radius: var(--radius-full);
  background: hsl(var(--avatar-hue, 210) 55% 34%);
  color: #fff;
  width: 48px;
  height: 48px;
  font-size: var(--text-md);
  font-weight: var(--weight-bold);
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.slugAdminStaffProfile_identityText {
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.slugAdminStaffProfile_you {
  font-size: var(--text-xs);
  color: var(--text-muted);
}

.slugAdminStaffProfile_columns {
  gap: var(--space-8);
  grid-template-columns: 1fr 1fr;
  align-items: start;
  display: grid;
}

@media (width <= 720px) {
  .slugAdminStaffProfile_columns {
    gap: var(--space-6);
    grid-template-columns: 1fr;
  }
}

.slugAdminStaffProfile_column {
  gap: var(--space-5);
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.slugAdminStaffProfile_sectionTitle {
  margin: 0 0 var(--space-2);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.slugAdminStaffProfile_nameGrid {
  gap: var(--space-3) var(--space-4);
  padding: var(--space-4);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  grid-template-columns: 1fr 1fr;
  margin: 0;
  display: grid;
}

.slugAdminStaffProfile_nameGrid dt {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.slugAdminStaffProfile_nameGrid dd {
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  text-transform: capitalize;
  margin: 2px 0 0;
}

.slugAdminStaffProfile_signature {
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-4);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: #fff;
  flex-direction: column;
  margin: 0;
  display: flex;
}

.slugAdminStaffProfile_signature img {
  object-fit: contain;
  max-width: 100%;
  max-height: 64px;
}

.slugAdminStaffProfile_signature figcaption {
  font-size: var(--text-2xs);
  color: #55607a;
}

.slugAdminStaffProfile_noSignature {
  align-items: flex-start;
  gap: var(--space-2);
  padding: var(--space-4);
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-md);
  color: var(--text-secondary);
  display: flex;
}

.slugAdminStaffProfile_noSignature p {
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  margin: 0;
}

.slugAdminStaffProfile_facts {
  gap: var(--space-4);
  flex-direction: column;
  margin: 0;
  display: flex;
}

.slugAdminStaffProfile_fact {
  align-items: flex-start;
  gap: var(--space-3);
  color: var(--text-muted);
  display: flex;
}

.slugAdminStaffProfile_fact dt {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
  line-height: 1;
}

.slugAdminStaffProfile_fact dd {
  font-size: var(--text-md);
  color: var(--text-primary);
  word-break: break-word;
  margin: 3px 0 0;
}

.slugAdminStaffProfile_mono {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.slugAdminStaffProfile_permissions {
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-md);
  background: var(--accent-subtle);
}

.slugAdminStaffProfile_permissionsHead {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--accent-subtle-text);
  margin: 0;
  display: flex;
}

.slugAdminStaffProfile_permissionsBody {
  margin: var(--space-1) 0 0;
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--accent-subtle-text);
}

.slugAdminStaffProfile_manage {
  gap: var(--space-4);
  padding-top: var(--space-4);
  border-top: 1px solid var(--border-subtle);
  flex-direction: column;
  display: flex;
}


/* app/[slug]/admin/staff/staff.module.css */
.staff_refreshing {
  align-items: center;
  gap: var(--space-1);
  padding: 2px var(--space-2);
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-full);
  background: var(--accent-subtle);
  color: var(--accent-subtle-text);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  display: inline-flex;
}

.staff_refreshing:before {
  content: "";
  border-radius: var(--radius-full);
  background: currentColor;
  width: 6px;
  height: 6px;
  animation: 1.5s ease-in-out infinite staff_pulse;
}

@keyframes staff_pulse {
  0%, 100% {
    opacity: .45;
  }

  50% {
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .staff_refreshing:before {
    animation: none;
  }
}

.staff_screen {
  gap: var(--space-5);
  flex-direction: column;
  display: flex;
}

.staff_toast {
  top: var(--space-5);
  right: var(--space-5);
  z-index: var(--z-toast);
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-5);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  display: flex;
  position: fixed;
}

.staff_toast[data-tone="success"] {
  background: var(--success-solid);
  color: var(--success-solid-text);
}

.staff_toast[data-tone="error"] {
  background: var(--critical-solid);
  color: var(--critical-solid-text);
}

@media (width <= 640px) {
  .staff_toast {
    top: auto;
    bottom: var(--space-5);
    left: var(--space-4);
    right: var(--space-4);
  }
}


/* app/[slug]/admin/tests/testCatalogue.module.css */
.testCatalogue_page {
  max-width: 1200px;
  padding: var(--space-6);
  margin: 0 auto;
}

.testCatalogue_waiting {
  padding: var(--space-8);
  text-align: center;
  color: var(--text-secondary);
}


/* app/[slug]/admin/whatsapp-review/communications.module.css */
.communications_workspace {
  gap: var(--space-4);
  overflow-wrap: anywhere;
  min-width: 0;
  padding-block: var(--space-2);
  grid-template-columns: minmax(0, 1fr);
  display: grid;
}

.communications_header, .communications_actions, .communications_account, .communications_panelHead, .communications_previewHead, .communications_metaRow {
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.communications_header, .communications_panelHead {
  justify-content: space-between;
}

.communications_eyebrow {
  margin: 0 0 var(--space-2);
  color: var(--text-muted);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
}

.communications_title {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-medium);
  line-height: var(--leading-tight);
  margin: 0;
}

.communications_subtitle {
  margin: var(--space-2) 0 0;
  color: var(--text-secondary);
  font-size: var(--text-md);
}

.communications_account {
  padding: var(--space-4) var(--space-5);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
}

.communications_accountMain {
  flex: 1 1 var(--communications-summary-min);
  min-width: 0;
}

.communications_accountTitle {
  font-weight: var(--weight-medium);
  margin: 0;
}

.communications_muted {
  color: var(--text-muted);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  margin: 0;
}

.communications_icon, .communications_avatar {
  color: var(--accent-text);
  background: var(--accent-subtle);
  flex-shrink: 0;
  place-items: center;
  display: grid;
}

.communications_icon {
  width: var(--space-8);
  height: var(--space-8);
}

.communications_icon svg, .communications_actions svg {
  width: var(--communications-icon-size);
  height: var(--communications-icon-size);
}

.communications_avatar {
  width: var(--communications-avatar-size);
  height: var(--communications-avatar-size);
  border-radius: var(--radius-full);
}

.communications_summary {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--communications-summary-min)), 1fr));
  gap: var(--space-3);
  display: grid;
}

.communications_metric {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  border: 1px solid var(--border-default);
  background: var(--surface-raised);
  display: flex;
}

.communications_metricValue {
  font-family: var(--font-mono);
  font-size: var(--text-2xl);
  font-weight: var(--weight-medium);
  line-height: var(--leading-tight);
  margin-block: var(--space-1);
  display: block;
}

.communications_layout {
  gap: var(--space-5);
  flex-wrap: wrap;
  align-items: flex-start;
  display: flex;
}

.communications_compose {
  flex: 1 1 var(--communications-compose-basis);
  min-width: 0;
}

.communications_previewColumn {
  flex: 1 1 var(--communications-preview-basis);
  min-width: 0;
}

.communications_card {
  border: 1px solid var(--border-default);
  background: var(--surface-raised);
  min-width: 0;
}

.communications_panelHead {
  padding: var(--space-5);
  border-bottom: 1px solid var(--border-subtle);
}

.communications_panelTitle {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-medium);
  line-height: var(--leading-snug);
  margin: 0;
}

.communications_panelBody {
  gap: var(--space-5);
  padding: var(--space-5);
  display: grid;
}

.communications_footer {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  border-top: 1px solid var(--border-subtle);
  background: var(--surface-sunken);
  flex-wrap: wrap;
  display: flex;
}

.communications_sample {
  padding: var(--space-4);
  border-inline-start: var(--space-1) solid var(--accent-border);
  background: var(--surface-sunken);
  gap: var(--space-3);
  display: grid;
}

.communications_sample dl {
  gap: var(--space-2) var(--space-5);
  font-size: var(--text-sm);
  grid-template-columns: auto minmax(0, 1fr);
  margin: 0;
  display: grid;
}

.communications_sample dt {
  color: var(--text-muted);
}

.communications_sample dd {
  color: var(--text-primary);
  overflow-wrap: anywhere;
  margin: 0;
}

.communications_smallTitle {
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--text-secondary);
  margin: 0;
}

.communications_preview {
  width: 100%;
  max-width: var(--communications-preview-max);
  border: 1px solid var(--border-strong);
  background: var(--surface-sunken);
  margin-inline: auto;
}

.communications_previewHead {
  padding: var(--space-4);
  background: var(--accent-subtle);
  color: var(--accent-text);
  border-bottom: 1px solid var(--accent-border);
  flex-wrap: nowrap;
}

.communications_previewName {
  font-weight: var(--weight-medium);
  font-size: var(--text-md);
  margin: 0;
}

.communications_previewNumber {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  margin: var(--space-1) 0 0;
}

.communications_previewBody {
  padding: var(--space-5) var(--space-4);
  min-height: var(--communications-message-height);
}

.communications_bubble {
  padding: var(--space-4);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  box-shadow: var(--shadow-sm);
  font-size: var(--text-md);
  line-height: var(--leading-loose);
  overflow-wrap: anywhere;
}

.communications_bubble p {
  white-space: pre-wrap;
  margin: 0;
}

.communications_bubble strong {
  margin-bottom: var(--space-2);
  display: block;
}

.communications_bubbleFooter {
  margin-top: var(--space-3);
  color: var(--text-muted);
  font-size: var(--text-xs);
  display: block;
}

.communications_previewCaption {
  padding: var(--space-3) var(--space-4);
  border-top: 1px solid var(--border-default);
  font-size: var(--text-xs);
  color: var(--text-muted);
  text-align: center;
}

.communications_previewNote {
  margin: var(--space-4) 0 0;
  color: var(--text-muted);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
}

.communications_section {
  gap: var(--space-4);
  min-width: 0;
  display: grid;
}

.communications_toolbar {
  gap: var(--space-3);
  flex-wrap: wrap;
  align-items: end;
  display: flex;
}

.communications_search {
  flex: 1 1 var(--communications-summary-min);
}

.communications_tableName {
  font-weight: var(--weight-medium);
  display: block;
}

.communications_identifier {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--text-muted);
  overflow-wrap: anywhere;
  margin-top: var(--space-1);
  display: block;
}

.communications_editor {
  align-items: flex-start;
  gap: var(--space-6);
  flex-wrap: wrap;
  display: flex;
}

.communications_editorForm {
  flex: 1 1 var(--communications-preview-basis);
  gap: var(--space-4);
  min-width: 0;
  display: grid;
}

.communications_editorPreview {
  flex: 1 1 var(--communications-preview-basis);
  min-width: 0;
  position: sticky;
  top: 0;
}

.communications_bodyField {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
}

.communications_notice {
  margin-top: var(--space-4);
}

.communications_activityDetails {
  overflow-wrap: anywhere;
}


/* app/[slug]/loading.module.css */
.loading_panel {
  padding: var(--space-6);
}

.loading_toolbar {
  gap: var(--space-3);
  margin-bottom: var(--space-5);
  display: flex;
}

.loading_search {
  flex: 1;
  max-width: 280px;
}


/* app/[slug]/messages/messages.module.css */
.messages_layout {
  gap: var(--space-4);
  grid-template-columns: minmax(240px, 320px) 1fr;
  min-height: 70vh;
  display: grid;
}

.messages_list {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  max-height: 80vh;
  overflow-y: auto;
}

.messages_listHead {
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3);
  border-bottom: 1px solid var(--border-default);
  flex-wrap: wrap;
  display: flex;
}

.messages_listTitle {
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  flex-basis: 100%;
  margin: 0;
}

.messages_conversations {
  margin: 0;
  padding: 0;
  list-style: none;
}

.messages_conversation {
  gap: var(--space-1);
  width: 100%;
  padding: var(--space-3);
  border: 0;
  border-bottom: 1px solid var(--border-subtle);
  color: inherit;
  text-align: left;
  font: inherit;
  cursor: pointer;
  background: none;
  display: grid;
}

.messages_conversation:hover {
  background: var(--surface-hover);
}

.messages_conversation[aria-current="true"] {
  background: var(--surface-selected);
}

.messages_convoTop, .messages_convoBottom {
  justify-content: space-between;
  gap: var(--space-2);
  min-width: 0;
  display: flex;
}

.messages_convoName {
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.messages_convoTime {
  font-size: var(--text-xs);
  color: var(--text-muted);
  white-space: nowrap;
}

.messages_convoPreview {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.messages_thread {
  gap: var(--space-3);
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.messages_threadHead {
  align-items: flex-start;
  gap: var(--space-3);
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--border-subtle);
  flex-wrap: wrap;
  display: flex;
}

.messages_back {
  display: none;
}

.messages_threadWho {
  flex: 1 1 var(--communications-summary-min);
  min-width: 0;
}

.messages_threadName {
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  overflow-wrap: anywhere;
  margin: 0;
}

.messages_threadMeta {
  gap: var(--space-1) var(--space-3);
  font-size: var(--text-sm);
  color: var(--text-muted);
  overflow-wrap: anywhere;
  flex-wrap: wrap;
  margin: 0;
  display: flex;
}

.messages_threadActions {
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.messages_messages {
  gap: var(--space-3);
  flex-direction: column;
  max-height: 60vh;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  overflow-y: auto;
}

.messages_message {
  align-self: flex-start;
  max-width: min(560px, 85%);
}

.messages_message[data-direction="out"] {
  align-self: flex-end;
}

.messages_bubble {
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  color: var(--text-primary);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  margin: 0;
}

.messages_message[data-direction="out"] .messages_bubble {
  background: var(--accent-subtle);
  color: var(--accent-subtle-text);
}

.messages_messageMeta {
  margin: var(--space-1) 0 0;
  font-size: var(--text-xs);
  color: var(--text-muted);
}

.messages_message[data-direction="out"] .messages_messageMeta {
  text-align: right;
}

.messages_messageError {
  color: var(--critical-text);
}

.messages_composer {
  gap: var(--space-2);
  grid-template-columns: 1fr auto;
  align-items: end;
  display: grid;
}

.messages_closed {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  margin: 0;
}

@media (width <= 760px) {
  .messages_layout {
    grid-template-columns: 1fr;
  }

  .messages_layout[data-open="thread"] .messages_list, .messages_layout[data-open="list"] .messages_thread {
    display: none;
  }

  .messages_back {
    display: inline-flex;
  }
}


/* app/[slug]/settings/profile.module.css */
.slugSettingsProfile_page {
  width: 100%;
  max-width: 800px;
  padding: var(--space-6);
  gap: var(--space-5);
  flex-direction: column;
  margin: 0 auto;
  display: flex;
}

.slugSettingsProfile_card {
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  overflow: hidden;
}

.slugSettingsProfile_header {
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-5) var(--space-6);
  background: var(--accent-subtle);
  border-bottom: 1px solid var(--border-subtle);
  flex-wrap: wrap;
  display: flex;
}

.slugSettingsProfile_headerActions {
  margin-left: auto;
}

.slugSettingsProfile_avatar {
  border-radius: var(--radius-full);
  background: var(--accent-solid);
  width: 64px;
  height: 64px;
  color: var(--accent-solid-text);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  display: flex;
}

.slugSettingsProfile_identity {
  flex: 1;
  min-width: 0;
}

.slugSettingsProfile_name {
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  color: var(--text-primary);
}

.slugSettingsProfile_meta {
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-1);
  font-size: var(--text-sm);
  color: var(--text-secondary);
  display: flex;
}

.slugSettingsProfile_sigState {
  align-items: center;
  gap: var(--space-1);
  margin-top: var(--space-1);
  font-size: var(--text-sm);
  display: inline-flex;
}

.slugSettingsProfile_sigOn {
  color: var(--success-text);
}

.slugSettingsProfile_sigOff {
  color: var(--warning-text);
}

.slugSettingsProfile_body {
  padding: var(--space-6);
  gap: var(--space-5);
  flex-direction: column;
  display: flex;
}

.slugSettingsProfile_form {
  gap: var(--space-5);
  flex-direction: column;
  display: flex;
}

.slugSettingsProfile_titleRow {
  gap: var(--space-4);
  grid-template-columns: 120px 1fr;
  display: grid;
}

.slugSettingsProfile_pairRow {
  gap: var(--space-4);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

@media (width <= 520px) {
  .slugSettingsProfile_titleRow, .slugSettingsProfile_pairRow {
    grid-template-columns: 1fr;
  }
}

.slugSettingsProfile_sectionLabel {
  margin: 0 0 var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--text-secondary);
  display: block;
}

.slugSettingsProfile_dropzone {
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--surface-sunken);
  border: 1px dashed var(--border-default);
  border-radius: var(--radius-md);
  flex-direction: column;
  display: flex;
}

.slugSettingsProfile_sigPreview {
  object-fit: contain;
  max-height: 60px;
  padding: var(--space-2);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: #fff;
}

.slugSettingsProfile_sigButton {
  align-items: center;
  gap: var(--space-2);
  color: var(--accent-text);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  display: inline-flex;
}

.slugSettingsProfile_fileInput:focus-visible + .slugSettingsProfile_sigButton {
  outline: 2px solid var(--focus-color);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

.slugSettingsProfile_sigHint {
  font-size: var(--text-xs);
  color: var(--text-muted);
  margin: 0;
}

.slugSettingsProfile_actions {
  justify-content: flex-end;
  display: flex;
}


/* app/[slug]/settings/profileLoading.module.css */
.profileLoading_page {
  gap: var(--space-6);
  padding: var(--space-6);
  flex-direction: column;
  max-width: 880px;
  display: flex;
}

.profileLoading_head {
  align-items: center;
  gap: var(--space-4);
  display: flex;
}

.profileLoading_headText {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.profileLoading_panel {
  gap: var(--space-4);
  padding: var(--space-5);
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  flex-direction: column;
  display: flex;
}

.profileLoading_board {
  max-width: 480px;
}


/* app/landing.module.css */
.landing_page {
  --lp-paper: #fbf9f5;
  --lp-paper-2: #f2efe8;
  --lp-paper-3: #e7e3d9;
  --lp-line: #ded9cd;
  --lp-line-soft: #ebe7de;
  --lp-ink: #2f2f2f;
  --lp-ink-2: #423f38;
  --lp-ink-3: #635f55;
  --lp-sage: #a7b89f;
  --lp-sage-tint: #e9eee4;
  --lp-sage-tint-2: #f5f7f3;
  --lp-sage-line: #bccbac;
  --lp-sage-deep: #586b4f;
  --lp-green: #1f5c4a;
  --lp-green-hover: #163f32;
  --lp-green-deep: #163f32;
  --lp-on-dark: #fbf9f5;
  --lp-on-dark-2: #cfdbd4;
  --lp-on-dark-3: #a7bcb2;
  --lp-on-dark-line: #fbf9f529;
  --lp-ready: #4a7226;
  --lp-ready-tint: #edf3e4;
  --lp-pending: #755116;
  --lp-pending-tint: #f8efe0;
  --lp-radius: 0;
  --lp-radius-lg: 0;
  --lp-display: var(--font-wordmark);
  --lp-heading: var(--font-display);
  --lp-gutter: 2rem;
  --lp-measure: 1120px;
  background: var(--lp-paper);
  min-height: 100vh;
  color: var(--lp-ink);
  font-family: var(--font-body);
  overflow-x: hidden;
}

.landing_page *, .landing_page :before, .landing_page :after {
  box-sizing: border-box;
}

.landing_redirect {
  background: var(--lp-paper, #fbf9f5);
  min-height: 100vh;
  color: var(--lp-ink-3, #635f55);
  font-family: var(--font-body);
  place-items: center;
  font-size: .9375rem;
  display: grid;
}

@keyframes landing_rise {
  from {
    opacity: 0;
    transform: translateY(14px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

.landing_rise {
  animation: landing_rise .7s var(--ease-out, ease) both;
}

.landing_riseB {
  animation-delay: 80ms;
}

.landing_riseC {
  animation-delay: .16s;
}

.landing_riseD {
  animation-delay: .24s;
}

@media (prefers-reduced-motion: reduce) {
  .landing_page *, .landing_page :before, .landing_page :after {
    transition: none !important;
    animation: none !important;
  }
}

.landing_btn {
  border-radius: var(--lp-radius);
  white-space: nowrap;
  cursor: pointer;
  border: 1px solid #0000;
  justify-content: center;
  align-items: center;
  gap: .5rem;
  font-family: inherit;
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
  transition: background-color .14s, border-color .14s, color .14s;
  display: inline-flex;
}

.landing_btn:focus-visible {
  outline: 2px solid var(--lp-green);
  outline-offset: 2px;
}

.landing_btnSm {
  height: 36px;
  padding: 0 .875rem;
  font-size: .8125rem;
}

.landing_btnLg {
  height: 48px;
  padding: 0 1.375rem;
  font-size: .9375rem;
}

.landing_btnWide {
  width: 100%;
  height: 46px;
  font-size: .9375rem;
}

.landing_btnPrimary {
  background: var(--lp-green);
  color: var(--lp-on-dark);
}

.landing_btnPrimary:hover {
  background: var(--lp-green-hover);
}

.landing_btnOutline {
  border-color: var(--lp-line);
  color: var(--lp-ink);
  background: none;
}

.landing_btnOutline:hover {
  border-color: var(--lp-sage-deep);
  background: var(--lp-sage-tint-2);
}

.landing_btnQuiet {
  color: var(--lp-ink-2);
  background: none;
  font-weight: 500;
}

.landing_btnQuiet:hover {
  background: var(--lp-paper-3);
  color: var(--lp-ink);
}

.landing_btnOnDark {
  background: var(--lp-on-dark);
  color: var(--lp-green-deep);
}

.landing_btnOnDark:hover {
  background: #fff;
}

.landing_btnOnDark:focus-visible {
  outline-color: var(--lp-on-dark);
}

.landing_btnGhostOnDark {
  border-color: var(--lp-on-dark-line);
  color: var(--lp-on-dark);
  background: none;
}

.landing_btnGhostOnDark:hover {
  background: #fbf9f51a;
}

.landing_btnGhostOnDark:focus-visible {
  outline-color: var(--lp-on-dark);
}

.landing_nav {
  z-index: 50;
  backdrop-filter: blur(12px);
  background: #fbf9f5d1;
  border-bottom: 1px solid #0000;
  transition: border-color .2s, background-color .2s;
  position: sticky;
  top: 0;
}

.landing_navScrolled {
  border-bottom-color: var(--lp-line);
  background: #fbf9f5f0;
}

.landing_navInner {
  max-width: var(--lp-measure);
  padding: 0 var(--lp-gutter);
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  height: 68px;
  margin: 0 auto;
  display: flex;
}

.landing_navLeft {
  align-items: center;
  gap: 2.5rem;
  min-width: 0;
  display: flex;
}

.landing_brand {
  cursor: pointer;
  color: inherit;
  background: none;
  border: 0;
  align-items: center;
  padding: 0;
  display: inline-flex;
}

.landing_brand:focus-visible {
  outline: 2px solid var(--lp-green);
  outline-offset: 4px;
}

.landing_navLinks {
  align-items: center;
  gap: 1.75rem;
  display: flex;
}

.landing_navLink {
  color: var(--lp-ink-3);
  font-size: .875rem;
  font-weight: 500;
  text-decoration: none;
  transition: color .14s;
}

.landing_navLink:hover {
  color: var(--lp-ink);
}

.landing_navLink:focus-visible {
  outline: 2px solid var(--lp-green);
  outline-offset: 3px;
}

.landing_navActions {
  align-items: center;
  gap: .5rem;
  display: flex;
}

.landing_hero {
  max-width: var(--lp-measure);
  padding: 5.5rem var(--lp-gutter) 0;
  margin: 0 auto;
}

.landing_heroInner {
  max-width: 760px;
}

.landing_eyebrow {
  border: 1px solid var(--lp-sage-line);
  background: var(--lp-sage-tint-2);
  letter-spacing: .02em;
  color: var(--lp-sage-deep);
  border-radius: 999px;
  align-items: center;
  gap: .5rem;
  padding: .375rem .75rem .375rem .625rem;
  font-size: .75rem;
  font-weight: 600;
  display: inline-flex;
}

.landing_eyebrowDot {
  background: var(--lp-green);
  border-radius: 999px;
  width: 6px;
  height: 6px;
}

.landing_h1 {
  font-family: var(--lp-display);
  letter-spacing: -.01em;
  color: var(--lp-ink);
  margin: 1.5rem 0 0;
  font-size: clamp(2.5rem, 6vw, 4.25rem);
  font-weight: 600;
  line-height: 1.05;
}

.landing_h1Em {
  color: var(--lp-green);
  font-style: normal;
  display: block;
}

.landing_heroLede {
  max-width: 620px;
  color: var(--lp-ink-3);
  margin: 1.5rem 0 0;
  font-size: 1.125rem;
  line-height: 1.6;
}

.landing_ctaRow {
  flex-wrap: wrap;
  gap: .75rem;
  margin-top: 2.25rem;
  display: flex;
}

.landing_heroFine {
  color: var(--lp-ink-3);
  margin-top: 1rem;
  font-size: .8125rem;
}

.landing_mockWrap {
  margin-top: 4rem;
  padding-bottom: 1rem;
}

.landing_mock {
  border: 1px solid var(--lp-line);
  border-radius: var(--lp-radius-lg);
  background: var(--lp-paper);
  overflow: hidden;
  box-shadow: 0 1px 2px #2f2f2f0a, 0 18px 48px -12px #2f2f2f24;
}

.landing_mockBar {
  border-bottom: 1px solid var(--lp-line-soft);
  background: var(--lp-paper-2);
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding: .625rem 1rem;
  display: flex;
}

.landing_mockPath {
  font-family: var(--font-mono);
  color: var(--lp-ink-3);
  font-size: .75rem;
}

.landing_mockBody {
  grid-template-columns: 172px 1fr;
  display: grid;
}

.landing_mockRail {
  border-right: 1px solid var(--lp-line-soft);
  background: var(--lp-paper-2);
  align-content: start;
  gap: 2px;
  padding: 1rem .75rem;
  display: grid;
}

.landing_mockRailItem {
  color: var(--lp-ink-3);
  padding: .5rem .625rem;
  font-size: .8125rem;
}

.landing_mockRailItemOn {
  background: var(--lp-sage-tint);
  color: var(--lp-green-deep);
  font-weight: 600;
}

.landing_mockMain {
  align-content: start;
  gap: 1.25rem;
  padding: 1.25rem;
  display: grid;
}

.landing_mockStats {
  grid-template-columns: repeat(3, 1fr);
  gap: .75rem;
  display: grid;
}

.landing_mockStat {
  border: 1px solid var(--lp-line-soft);
  border-radius: var(--lp-radius);
  background: var(--lp-paper);
  padding: .875rem 1rem;
}

.landing_mockStatNum {
  font-family: var(--font-mono);
  color: var(--lp-ink);
  font-size: 1.5rem;
  font-weight: 500;
  line-height: 1.1;
}

.landing_tonePending {
  color: var(--lp-pending);
}

.landing_toneReady {
  color: var(--lp-ready);
}

.landing_mockStatLabel {
  color: var(--lp-ink-3);
  margin-top: .25rem;
  font-size: .75rem;
}

.landing_mockTable {
  border: 1px solid var(--lp-line-soft);
  border-radius: var(--lp-radius);
  overflow: hidden;
}

.landing_mockRow {
  border-bottom: 1px solid var(--lp-line-soft);
  grid-template-columns: 1.4fr 1.3fr .8fr auto;
  align-items: center;
  gap: .75rem;
  padding: .75rem 1rem;
  font-size: .8125rem;
  display: grid;
}

.landing_mockRow:last-child {
  border-bottom: 0;
}

.landing_mockName {
  font-family: var(--lp-heading);
  color: var(--lp-ink);
  font-weight: 600;
}

.landing_mockTest {
  color: var(--lp-ink-2);
}

.landing_mockDept {
  color: var(--lp-ink-3);
}

.landing_pill {
  letter-spacing: .02em;
  border-radius: 999px;
  justify-self: end;
  padding: .1875rem .5rem;
  font-size: .6875rem;
  font-weight: 600;
}

.landing_pillReady {
  background: var(--lp-ready-tint);
  color: var(--lp-ready);
}

.landing_pillPending {
  background: var(--lp-pending-tint);
  color: var(--lp-pending);
}

.landing_stats {
  max-width: var(--lp-measure);
  padding: 0 var(--lp-gutter);
  margin: 4.5rem auto 0;
}

.landing_statGrid {
  border-top: 1px solid var(--lp-line);
  border-bottom: 1px solid var(--lp-line);
  grid-template-columns: repeat(4, 1fr);
  display: grid;
}

.landing_stat {
  border-left: 1px solid var(--lp-line);
  padding: 2rem 1.5rem;
}

.landing_stat:first-child {
  border-left: 0;
  padding-left: 0;
}

.landing_statNum {
  font-family: var(--font-mono);
  color: var(--lp-green);
  font-size: 1.875rem;
  font-weight: 500;
  line-height: 1;
}

.landing_statLabel {
  color: var(--lp-ink);
  margin-top: .625rem;
  font-size: .875rem;
  font-weight: 600;
}

.landing_statSub {
  color: var(--lp-ink-3);
  margin-top: .125rem;
  font-size: .8125rem;
}

.landing_section {
  max-width: var(--lp-measure);
  padding: 6rem var(--lp-gutter);
  margin: 0 auto;
}

.landing_sectionHead {
  max-width: 640px;
  margin-bottom: 3rem;
}

.landing_kicker {
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--lp-sage-deep);
  align-items: center;
  gap: .375rem;
  font-size: .6875rem;
  font-weight: 600;
  display: inline-flex;
}

.landing_kickerOnDark {
  color: var(--lp-on-dark-3);
}

.landing_h2 {
  font-family: var(--lp-heading);
  letter-spacing: -.01em;
  color: var(--lp-ink);
  margin: .875rem 0 0;
  font-size: clamp(1.875rem, 3.4vw, 2.5rem);
  font-weight: 600;
  line-height: 1.15;
}

.landing_h2OnDark {
  color: var(--lp-on-dark);
}

.landing_lede {
  color: var(--lp-ink-3);
  margin: 1rem 0 0;
  font-size: 1.0625rem;
  line-height: 1.6;
}

.landing_grid {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1.25rem;
  display: grid;
}

.landing_card {
  border: 1px solid var(--lp-line);
  border-radius: var(--lp-radius-lg);
  background: var(--lp-paper);
  padding: 1.75rem;
  transition: border-color .16s, box-shadow .16s;
}

.landing_card:hover {
  border-color: var(--lp-sage-line);
  box-shadow: 0 1px 2px #2f2f2f0a, 0 10px 28px -14px #2f2f2f2e;
}

.landing_cardHead {
  justify-content: space-between;
  align-items: center;
  gap: .75rem;
  margin-bottom: 1.25rem;
  display: flex;
}

.landing_cardIcon {
  border-radius: var(--lp-radius);
  background: var(--lp-sage-tint);
  width: 40px;
  height: 40px;
  color: var(--lp-green);
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.landing_cardFlag {
  border: 1px solid var(--lp-sage-line);
  color: var(--lp-sage-deep);
  border-radius: 999px;
  padding: .1875rem .5rem;
  font-size: .6875rem;
  font-weight: 600;
}

.landing_cardTitle {
  font-family: var(--lp-heading);
  color: var(--lp-ink);
  margin: 0;
  font-size: 1.1875rem;
  font-weight: 600;
}

.landing_cardText {
  color: var(--lp-ink-3);
  margin: .5rem 0 0;
  font-size: .9375rem;
  line-height: 1.6;
}

.landing_hubSection {
  background: var(--lp-green-deep);
  padding: 6rem var(--lp-gutter);
}

.landing_hubInner {
  max-width: var(--lp-measure);
  grid-template-columns: 1fr 380px;
  align-items: center;
  gap: 4rem;
  margin: 0 auto;
  display: grid;
}

.landing_hubCopy {
  max-width: 560px;
}

.landing_hubLede {
  color: var(--lp-on-dark-2);
  margin: 1.25rem 0 0;
  font-size: 1.0625rem;
  line-height: 1.65;
}

.landing_hubList {
  gap: 1.125rem;
  margin: 2rem 0 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.landing_hubRow {
  align-items: flex-start;
  gap: .75rem;
  display: flex;
}

.landing_hubTick {
  width: 22px;
  height: 22px;
  color: var(--lp-on-dark);
  background: #fbf9f524;
  border-radius: 999px;
  flex: none;
  justify-content: center;
  align-items: center;
  margin-top: 1px;
  display: inline-flex;
}

.landing_hubRowTitle {
  color: var(--lp-on-dark);
  font-size: .9375rem;
  font-weight: 600;
  display: block;
}

.landing_hubRowText {
  color: var(--lp-on-dark-3);
  margin-top: .125rem;
  font-size: .875rem;
  line-height: 1.55;
  display: block;
}

.landing_hubSection .landing_btnOnDark {
  margin-top: 2.25rem;
}

.landing_hubFine {
  color: var(--lp-on-dark-3);
  margin-top: .875rem;
  font-size: .8125rem;
}

.landing_hubDiagram {
  justify-content: center;
  display: flex;
}

.landing_diagram {
  width: 100%;
  max-width: 380px;
  height: auto;
}

.landing_node {
  fill: #fbf9f514;
  stroke: var(--lp-on-dark-line);
  stroke-width: 1px;
}

.landing_nodeLabel {
  fill: var(--lp-on-dark-2);
  font-family: var(--font-body);
  font-size: 11px;
}

.landing_nodeHub {
  fill: var(--lp-on-dark);
  stroke: none;
}

.landing_nodeHubLabel {
  fill: var(--lp-green-deep);
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 600;
}

.landing_nodeHubMeta {
  fill: var(--lp-sage-deep);
  font-family: var(--font-mono);
  font-size: 10px;
}

.landing_wire {
  stroke: var(--lp-on-dark-line);
  stroke-width: 1.5px;
}

.landing_wireDashed {
  stroke: var(--lp-on-dark-line);
  stroke-width: 1.5px;
  stroke-dasharray: 4 4;
}

.landing_cloudLabel {
  fill: var(--lp-on-dark-3);
  font-family: var(--font-body);
  font-size: 11px;
}

.landing_steps {
  grid-template-columns: repeat(3, 1fr);
  gap: 2.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.landing_step {
  border-top: 2px solid var(--lp-sage-line);
  padding-top: 1.5rem;
}

.landing_stepNum {
  font-family: var(--font-mono);
  letter-spacing: .08em;
  color: var(--lp-sage-deep);
  font-size: .8125rem;
  font-weight: 500;
}

.landing_stepTitle {
  font-family: var(--lp-heading);
  color: var(--lp-ink);
  margin: .75rem 0 0;
  font-size: 1.1875rem;
  font-weight: 600;
}

.landing_stepText {
  color: var(--lp-ink-3);
  margin: .5rem 0 0;
  font-size: .9375rem;
  line-height: 1.6;
}

.landing_quote {
  border: 1px solid var(--lp-line);
  border-radius: var(--lp-radius-lg);
  background: var(--lp-paper-2);
  flex-direction: column;
  gap: 1.5rem;
  margin: 0;
  padding: 1.75rem;
  display: flex;
}

.landing_quoteText {
  font-family: var(--lp-heading);
  color: var(--lp-ink-2);
  quotes: "“" "”";
  margin: 0;
  font-size: 1.0625rem;
  line-height: 1.6;
}

.landing_quoteText:before {
  content: open-quote;
}

.landing_quoteText:after {
  content: close-quote;
}

.landing_quoteBy {
  border-top: 1px solid var(--lp-line);
  margin-top: auto;
  padding-top: 1.25rem;
}

.landing_quoteName {
  color: var(--lp-ink);
  font-size: .9375rem;
  font-weight: 600;
  display: block;
}

.landing_quoteOrg {
  color: var(--lp-ink-3);
  margin-top: .125rem;
  font-size: .8125rem;
  display: block;
}

.landing_priceGrid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
  max-width: 860px;
  display: grid;
}

.landing_priceCard {
  border: 1px solid var(--lp-line);
  border-radius: var(--lp-radius-lg);
  background: var(--lp-paper);
  flex-direction: column;
  padding: 2rem;
  display: flex;
  position: relative;
}

.landing_priceCardLead {
  border-color: var(--lp-green);
  box-shadow: 0 0 0 1px var(--lp-green);
}

.landing_priceFlag {
  background: var(--lp-green);
  color: var(--lp-on-dark);
  letter-spacing: .02em;
  border-radius: 999px;
  padding: .25rem .625rem;
  font-size: .6875rem;
  font-weight: 600;
  position: absolute;
  top: -.6875rem;
  left: 2rem;
}

.landing_priceKind {
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--lp-sage-deep);
  font-size: .6875rem;
  font-weight: 600;
}

.landing_priceAmount {
  font-family: var(--lp-heading);
  color: var(--lp-ink);
  margin-top: .625rem;
  font-size: 2rem;
  font-weight: 600;
  line-height: 1.1;
}

.landing_priceNote {
  color: var(--lp-ink-3);
  margin-top: .375rem;
  font-size: .8125rem;
}

.landing_priceList {
  border-top: 1px solid var(--lp-line);
  flex: 1;
  gap: .875rem;
  margin: 1.75rem 0;
  padding: 1.75rem 0 0;
  list-style: none;
  display: grid;
}

.landing_check {
  color: var(--lp-ink-2);
  align-items: flex-start;
  gap: .625rem;
  font-size: .9375rem;
  line-height: 1.45;
  display: flex;
}

.landing_checkIcon {
  background: var(--lp-paper-3);
  width: 18px;
  height: 18px;
  color: var(--lp-ink-2);
  border-radius: 999px;
  flex: none;
  justify-content: center;
  align-items: center;
  margin-top: 1px;
  display: inline-flex;
}

.landing_checkIconLead {
  background: var(--lp-sage-tint);
  color: var(--lp-green);
}

.landing_finalSection {
  max-width: var(--lp-measure);
  padding: 0 var(--lp-gutter) 6rem;
  margin: 0 auto;
}

.landing_final {
  border-radius: var(--lp-radius-lg);
  background: var(--lp-green-deep);
  text-align: center;
  padding: 4.5rem 2rem;
}

.landing_finalH2 {
  font-family: var(--lp-heading);
  color: var(--lp-on-dark);
  margin: 0;
  font-size: clamp(1.875rem, 3.4vw, 2.5rem);
  font-weight: 600;
  line-height: 1.15;
}

.landing_finalLede {
  max-width: 460px;
  color: var(--lp-on-dark-2);
  margin: 1rem auto 0;
  font-size: 1.0625rem;
  line-height: 1.6;
}

.landing_final .landing_ctaRow {
  justify-content: center;
}

.landing_footer {
  border-top: 1px solid var(--lp-line);
  background: var(--lp-paper-2);
}

.landing_footerTop {
  max-width: var(--lp-measure);
  padding: 3.5rem var(--lp-gutter);
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 3rem;
  margin: 0 auto;
  display: flex;
}

.landing_footerBrandCol {
  max-width: 320px;
}

.landing_footerBrand {
  align-items: center;
  display: flex;
}

.landing_footerBlurb {
  color: var(--lp-ink-3);
  margin: .875rem 0 0;
  font-size: .875rem;
  line-height: 1.6;
}

.landing_footerCols {
  gap: 4rem;
  display: flex;
}

.landing_footerColTitle {
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--lp-ink);
  font-size: .6875rem;
  font-weight: 600;
}

.landing_footerList {
  gap: .625rem;
  margin: 1rem 0 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.landing_footerLink {
  color: var(--lp-ink-3);
  font-size: .875rem;
  text-decoration: none;
  transition: color .14s;
}

.landing_footerLink:hover {
  color: var(--lp-ink);
  text-underline-offset: 3px;
  text-decoration: underline;
}

.landing_footerLink:focus-visible {
  outline: 2px solid var(--lp-green);
  outline-offset: 3px;
}

.landing_footerBase {
  max-width: var(--lp-measure);
  padding: 1.5rem var(--lp-gutter);
  border-top: 1px solid var(--lp-line);
  color: var(--lp-ink-3);
  flex-wrap: wrap;
  justify-content: space-between;
  gap: .75rem;
  margin: 0 auto;
  font-size: .8125rem;
  display: flex;
}

@media (width <= 900px) {
  .landing_hubInner {
    grid-template-columns: 1fr;
    gap: 3rem;
  }

  .landing_statGrid {
    grid-template-columns: repeat(2, 1fr);
  }

  .landing_stat {
    border-left: 0;
    border-top: 1px solid var(--lp-line);
    padding: 1.5rem 1.25rem;
  }

  .landing_stat:first-child, .landing_stat:nth-child(2) {
    border-top: 0;
  }

  .landing_stat:nth-child(odd) {
    padding-left: 0;
  }

  .landing_steps {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .landing_priceGrid {
    grid-template-columns: 1fr;
  }
}

@media (width <= 768px) {
  .landing_page {
    --lp-gutter: 1.25rem;
  }

  .landing_page [data-mobile-hidden] {
    display: none !important;
  }

  .landing_hero {
    padding-top: 3.5rem;
  }

  .landing_section, .landing_hubSection {
    padding: 4rem var(--lp-gutter);
  }

  .landing_navLeft {
    gap: 1rem;
  }

  .landing_final {
    padding: 3rem 1.5rem;
  }

  .landing_footerCols {
    gap: 2.5rem;
  }
}

@media (width <= 480px) {
  .landing_ctaRow > .landing_btn {
    width: 100%;
  }

  .landing_statGrid {
    grid-template-columns: 1fr;
  }

  .landing_stat:nth-child(2) {
    border-top: 1px solid var(--lp-line);
  }

  .landing_stat {
    padding-left: 0;
  }
}

.landing_dlAlt {
  margin-top: 1rem;
  font-size: .875rem;
}

.landing_dlAlt a {
  color: var(--lp-ink-3);
  text-underline-offset: 3px;
  text-decoration: underline;
  transition: color .14s;
}

.landing_dlAlt a:hover {
  color: var(--lp-ink);
}

.landing_dlAlt a:focus-visible {
  outline: 2px solid var(--lp-green);
  outline-offset: 3px;
}

.landing_dlAltOnDark a {
  color: var(--lp-on-dark-2);
}

.landing_dlAltOnDark a:hover {
  color: var(--lp-on-dark);
}

.landing_dlAltOnDark a:focus-visible {
  outline-color: var(--lp-on-dark);
}

.landing_dlMeta {
  border-top: 1px solid var(--lp-line);
  max-width: 620px;
  font-family: var(--font-mono);
  color: var(--lp-ink-3);
  flex-wrap: wrap;
  gap: .5rem 1.25rem;
  margin: 2rem 0 0;
  padding: 1.25rem 0 0;
  font-size: .75rem;
  list-style: none;
  display: flex;
}

.landing_specs {
  border-top: 1px solid var(--lp-line);
  max-width: 720px;
  margin: 0;
}

.landing_specRow {
  border-bottom: 1px solid var(--lp-line);
  grid-template-columns: 220px 1fr;
  gap: 1.5rem;
  padding: 1rem 0;
  display: grid;
}

.landing_specLabel {
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--lp-sage-deep);
  font-size: .75rem;
  font-weight: 600;
}

.landing_specValue {
  font-family: var(--font-mono);
  color: var(--lp-ink-2);
  margin: 0;
  font-size: .875rem;
  line-height: 1.5;
}

.landing_explainer {
  max-width: 720px;
  margin: 0 auto;
}

.landing_explainer .landing_hubList {
  margin-top: 2rem;
}

.landing_explainer .landing_hubRow {
  align-items: center;
}

.landing_explainer .landing_hubRowTitle {
  color: var(--lp-on-dark-2);
  font-weight: 400;
  line-height: 1.55;
}

.landing_dlAside {
  text-align: center;
  max-width: 620px;
  color: var(--lp-ink-3);
  margin: 2.5rem auto 0;
  font-size: .9375rem;
  line-height: 1.6;
}

.landing_dlAside strong {
  color: var(--lp-ink);
}

.landing_dlFooterLinks {
  gap: 1.25rem;
  display: inline-flex;
}

@media (width <= 768px) {
  .landing_specRow {
    grid-template-columns: 1fr;
    gap: .25rem;
  }
}


/* app/login/login.module.css */
.loginLogin_page {
  color: #2f2f2f;
  min-height: 100dvh;
  font-family: var(--font-body);
  background: #fbf9f5;
  grid-template-columns: 1fr 1fr;
  display: grid;
}

@media (width <= 900px) {
  .loginLogin_page {
    grid-template-columns: 1fr;
  }

  .loginLogin_aside {
    display: none;
  }
}

.loginLogin_aside {
  justify-content: space-between;
  gap: var(--space-8);
  padding: var(--space-12);
  background: linear-gradient(160deg, #1f5c4a 0%, #163f32 55%, #0e2a21 100%);
  flex-direction: column;
  display: flex;
}

.loginLogin_brand {
  align-items: center;
  gap: var(--space-3);
  display: flex;
}

.loginLogin_brandLockupCentred {
  margin: 0 auto var(--space-3);
}

.loginLogin_version {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  color: #dbe7e0;
  border-radius: var(--radius-sm);
  padding: 2px var(--space-1);
  border: 1px solid #fbf9f547;
}

.loginLogin_pitch {
  max-width: 30ch;
}

.loginLogin_pitchHead {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-tight);
  color: #fbf9f5;
  text-wrap: balance;
  margin: 0 0 var(--space-3);
}

.loginLogin_pitchBody {
  font-size: var(--text-md);
  line-height: var(--leading-normal);
  color: #d3e0d8;
  margin: 0;
}

.loginLogin_points {
  margin: var(--space-5) 0 0;
  gap: var(--space-2);
  font-size: var(--text-md);
  color: #d3e0d8;
  flex-direction: column;
  padding: 0;
  list-style: none;
  display: flex;
}

.loginLogin_point {
  align-items: flex-start;
  gap: var(--space-2);
  display: flex;
}

.loginLogin_pointMark {
  color: #c3d1bb;
  flex-shrink: 0;
}

.loginLogin_asideFoot {
  font-size: var(--text-xs);
  color: #c6d6cc;
}

.loginLogin_main {
  padding: var(--space-6);
  flex-direction: column;
  justify-content: center;
  align-items: center;
  display: flex;
}

.loginLogin_form {
  gap: var(--space-4);
  flex-direction: column;
  width: 100%;
  max-width: 400px;
  margin-block: auto;
  display: flex;
}

.loginLogin_mobileBrand {
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
  display: none;
}

@media (width <= 900px) {
  .loginLogin_mobileBrand {
    display: flex;
  }
}

.loginLogin_heading {
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: #2f2f2f;
  line-height: var(--leading-tight);
  margin: 0;
}

.loginLogin_sub {
  font-size: var(--text-md);
  color: #635f55;
  margin: var(--space-1) 0 var(--space-2);
}

.loginLogin_label {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: #635f55;
  margin-bottom: var(--space-1);
  display: block;
}

.loginLogin_inputWrap {
  align-items: center;
  display: flex;
  position: relative;
}

.loginLogin_input {
  width: 100%;
  height: 42px;
  padding: 0 var(--space-3) 0 40px;
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: #2f2f2f;
  border-radius: var(--radius-md);
  background: #fff;
  border: 1px solid #d9d4c6;
}

.loginLogin_input::placeholder {
  color: #7c7668;
}

.loginLogin_input:hover {
  border-color: #7c7668;
}

.loginLogin_input:focus-visible {
  outline-offset: 1px;
  border-color: #1f5c4a;
  outline: 2px solid #1f5c4a;
}

.loginLogin_knownUsers {
  flex-direction: column;
  display: flex;
}

.loginLogin_knownUsersList {
  gap: var(--space-1);
  flex-direction: column;
  display: flex;
}

.loginLogin_knownUserBtn {
  width: 100%;
  min-height: 44px;
  padding: var(--space-2) var(--space-3);
  text-align: left;
  font-family: var(--font-body);
  border-radius: var(--radius-md);
  cursor: pointer;
  background: #fff;
  border: 1px solid #d9d4c6;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  display: flex;
}

.loginLogin_knownUserBtn:hover {
  border-color: #7c7668;
}

.loginLogin_knownUserBtn:focus-visible {
  outline-offset: 1px;
  border-color: #1f5c4a;
  outline: 2px solid #1f5c4a;
}

.loginLogin_knownUserName {
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: #2f2f2f;
}

.loginLogin_knownUserEmail {
  font-size: var(--text-xs);
  color: #635f55;
}

.loginLogin_inputIcon {
  color: #7c7668;
  pointer-events: none;
  display: flex;
  position: absolute;
  left: 13px;
}

.loginLogin_reveal {
  border-radius: var(--radius-sm);
  color: #635f55;
  cursor: pointer;
  background: none;
  border: 0;
  justify-content: center;
  align-items: center;
  width: 40px;
  height: 40px;
  display: flex;
  position: absolute;
  right: 1px;
}

.loginLogin_reveal:hover {
  color: #2f2f2f;
}

.loginLogin_reveal:focus-visible {
  outline-offset: 1px;
  outline: 2px solid #1f5c4a;
}

.loginLogin_submit {
  width: 100%;
  height: 44px;
  margin-top: var(--space-1);
  color: #fff;
  border-radius: var(--radius-md);
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  background: #1f5c4a;
  border: 0;
}

.loginLogin_submit:hover:not(:disabled) {
  background: #163f32;
}

.loginLogin_submit:focus-visible {
  outline-offset: 2px;
  outline: 2px solid #1f5c4a;
}

.loginLogin_submit:disabled {
  color: #8a8477;
  cursor: not-allowed;
  background: #e7e3d9;
}

.loginLogin_error {
  align-items: flex-start;
  gap: var(--space-2);
  padding: var(--space-3);
  border-radius: var(--radius-md);
  color: #8a332c;
  font-size: var(--text-md);
  line-height: var(--leading-snug);
  background: #f7ebe9;
  border: 1px solid #e6c9c5;
  border-left: 3px solid #9c3b33;
  display: flex;
}

.loginLogin_errorMark {
  font-weight: var(--weight-bold);
  flex-shrink: 0;
}

.loginLogin_row {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  margin-top: var(--space-1);
  flex-wrap: wrap;
  display: flex;
}

.loginLogin_link {
  min-height: 44px;
  margin: calc(var(--space-2) * -1) 0;
  color: #163f32;
  font-family: var(--font-body);
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  cursor: pointer;
  border-radius: var(--radius-sm);
  background: none;
  border: 0;
  align-items: center;
  padding: 0;
  text-decoration: none;
  display: inline-flex;
}

.loginLogin_link:hover {
  color: #0e2a21;
  text-underline-offset: 2px;
  text-decoration: underline;
}

.loginLogin_link:focus-visible {
  outline-offset: 2px;
  outline: 2px solid #1f5c4a;
}

.loginLogin_lan {
  margin-top: var(--space-6);
  padding-top: var(--space-5);
  border-top: 1px solid #e7e3d9;
}

.loginLogin_lanToggle {
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
  border-radius: var(--radius-md);
  color: #423f38;
  width: 100%;
  height: 38px;
  font-family: var(--font-body);
  font-size: var(--text-md);
  cursor: pointer;
  background: none;
  border: 1px solid #d9d4c6;
  display: flex;
}

.loginLogin_lanToggle:hover {
  color: #2f2f2f;
  border-color: #7c7668;
}

.loginLogin_lanToggle:focus-visible {
  outline-offset: 2px;
  outline: 2px solid #1f5c4a;
}

.loginLogin_lanBody {
  margin-top: var(--space-3);
  padding: var(--space-4);
  border-radius: var(--radius-md);
  font-size: var(--text-md);
  color: #635f55;
  line-height: var(--leading-normal);
  background: #f7f5ef;
  border: 1px solid #e7e3d9;
}

.loginLogin_lanSteps {
  margin: var(--space-2) 0 0;
  padding-left: var(--space-5);
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.loginLogin_address {
  margin-top: var(--space-2);
  padding: var(--space-2);
  border-radius: var(--radius-sm);
  font-family: var(--font-mono);
  font-size: var(--text-base);
  color: #163f32;
  text-align: center;
  user-select: all;
  overflow-wrap: anywhere;
  background: #f2efe8;
  border: 1px solid #e7e3d9;
  display: block;
}

.loginLogin_lanNote {
  margin-top: var(--space-3);
  font-size: var(--text-xs);
  color: #6f6a5d;
}

.loginLogin_sent {
  align-items: center;
  gap: var(--space-3);
  text-align: center;
  flex-direction: column;
  display: flex;
}

.loginLogin_sentMark {
  border-radius: var(--radius-full);
  color: #4a7226;
  background: #edf3e4;
  border: 1px solid #4a7226;
  justify-content: center;
  align-items: center;
  width: 44px;
  height: 44px;
  display: flex;
}

.loginLogin_wide {
  max-width: 520px;
}

.loginLogin_steps {
  gap: var(--space-2);
  margin: 0 0 var(--space-2);
  padding: 0;
  list-style: none;
  display: flex;
}

.loginLogin_step {
  gap: var(--space-1);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: #6f6a5d;
  flex-direction: column;
  flex: 1;
  display: flex;
}

.loginLogin_step[aria-current="step"] {
  color: #1f5c4a;
}

.loginLogin_stepBar {
  background: #e7e3d9;
  height: 3px;
}

.loginLogin_stepDone .loginLogin_stepBar {
  background: #1f5c4a;
}

.loginLogin_inputPlain {
  padding-left: var(--space-3);
}

.loginLogin_inputPrefixed {
  padding-left: 5.4rem;
}

.loginLogin_prefix {
  font-size: var(--text-sm);
  color: #6f6a5d;
  pointer-events: none;
  position: absolute;
  left: 13px;
}

.loginLogin_hint {
  margin: var(--space-1) 0 0;
  font-size: var(--text-xs);
  color: #6f6a5d;
}

.loginLogin_pair {
  gap: var(--space-3);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

@media (width <= 480px) {
  .loginLogin_pair {
    grid-template-columns: 1fr;
  }
}

.loginLogin_tip {
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  color: #163f32;
  background: #f5f7f3;
  border: 1px solid #bccbac;
  margin: 0;
}

.loginLogin_ghost {
  width: 100%;
  padding: var(--space-3);
  border-radius: var(--radius-md);
  color: #423f38;
  font-family: var(--font-body);
  font-size: var(--text-sm);
  cursor: pointer;
  background: none;
  border: 1px solid #d9d4c6;
}

.loginLogin_ghost:hover {
  color: #2f2f2f;
  border-color: #7c7668;
}

.loginLogin_ghost:focus-visible {
  outline-offset: 1px;
  outline: 2px solid #1f5c4a;
}

.loginLogin_centred {
  text-align: center;
  justify-content: center;
}

.loginLogin_single {
  grid-template-columns: 1fr;
}

.loginLogin_brandAlways {
  justify-content: center;
  align-items: center;
  gap: var(--space-3);
  display: flex;
}

.loginLogin_state {
  justify-content: center;
  align-items: center;
  gap: var(--space-3);
  min-height: 100dvh;
  padding: var(--space-8);
  text-align: center;
  flex-direction: column;
  grid-column: 1 / -1;
  display: flex;
}

.loginLogin_stateIcon {
  font-size: var(--text-3xl);
  line-height: 1;
}

.loginLogin_invitedTo {
  font-size: var(--text-md);
  color: #635f55;
  margin: var(--space-1) 0 0;
}

.loginLogin_invitedOrg {
  color: #163f32;
  font-weight: var(--weight-semibold);
}

.loginLogin_notice {
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  color: #163f32;
  background: #f5f7f3;
  border: 1px solid #bccbac;
  display: flex;
}

.loginLogin_noticeMark {
  color: #1f5c4a;
  flex-shrink: 0;
}

.loginLogin_req {
  color: #9c3b33;
}

.loginLogin_titleRow {
  gap: var(--space-3);
  grid-template-columns: 110px 1fr;
  display: grid;
}

@media (width <= 480px) {
  .loginLogin_titleRow {
    grid-template-columns: 1fr;
  }
}

.loginLogin_select {
  appearance: none;
  cursor: pointer;
}

.loginLogin_select option {
  color: #2f2f2f;
}

.loginLogin_dropzone {
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-4);
  border-radius: var(--radius-md);
  color: #635f55;
  font-size: var(--text-sm);
  cursor: pointer;
  background: #f7f5ef;
  border: 1px dashed #d9d4c6;
  flex-direction: column;
  display: flex;
}

.loginLogin_dropzone:hover {
  border-color: #7c7668;
}

.loginLogin_fileInput:focus-visible + .loginLogin_dropzone {
  outline-offset: 2px;
  outline: 2px solid #1f5c4a;
}

.loginLogin_dropIcon {
  color: #6f6a5d;
}

.loginLogin_sigPreview {
  object-fit: contain;
  max-height: 60px;
  padding: var(--space-2);
  border-radius: var(--radius-sm);
  background: #fff;
}

.loginLogin_group {
  gap: var(--space-3);
  padding: var(--space-4);
  border-radius: var(--radius-md);
  background: #f7f5ef;
  flex-direction: column;
  display: flex;
}

.loginLogin_skeletonFields {
  gap: var(--space-4);
  margin: var(--space-5) 0;
  flex-direction: column;
  display: flex;
}

.loginLogin_skeletonField {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}


/* app/onboarding/onboarding.module.css */
.onboarding_page {
  min-height: 100dvh;
  padding: var(--space-8);
  color: #2f2f2f;
  font-family: var(--font-body);
  background: #fbf9f5;
  justify-content: center;
  align-items: center;
  display: flex;
}

.onboarding_centered {
  gap: var(--space-4);
  flex-direction: column;
}

.onboarding_spinner {
  color: #1f5c4a;
  animation: 1s linear infinite onboarding_spin;
}

.onboarding_status {
  font-size: var(--text-md);
  color: #635f55;
  text-align: center;
}

.onboarding_panel {
  width: 100%;
  max-width: 480px;
}

.onboarding_hero {
  text-align: center;
  margin-bottom: var(--space-8);
}

.onboarding_mark {
  margin: 0 auto var(--space-4);
  display: block;
}

.onboarding_heading {
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: #2f2f2f;
  line-height: var(--leading-tight);
  margin: 0;
}

.onboarding_sub {
  font-size: var(--text-md);
  color: #635f55;
  margin: var(--space-1) 0 0;
}

.onboarding_welcome {
  text-align: center;
  width: 100%;
  max-width: 560px;
}

.onboarding_check {
  width: 64px;
  height: 64px;
  margin: 0 auto var(--space-6);
  border-radius: var(--radius-full);
  color: #4a7226;
  background: #edf3e4;
  border: 2px solid #4a7226;
  justify-content: center;
  align-items: center;
  display: flex;
}

.onboarding_welcomeHead {
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: #2f2f2f;
  margin: 0 0 var(--space-2);
}

.onboarding_welcomeSub {
  font-size: var(--text-md);
  color: #635f55;
  margin: 0 0 var(--space-8);
}

.onboarding_welcomeOrg {
  color: #163f32;
  font-weight: var(--weight-semibold);
}

.onboarding_steps {
  gap: var(--space-3);
  margin-bottom: var(--space-8);
  text-align: left;
  flex-direction: column;
  padding: 0;
  list-style: none;
  display: flex;
}

.onboarding_step {
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  border-radius: var(--radius-md);
  background: #f7f5ef;
  border: 1px solid #e7e3d9;
  align-items: flex-start;
  display: flex;
}

.onboarding_stepIcon {
  color: #1f5c4a;
  flex-shrink: 0;
  padding-top: 2px;
}

.onboarding_stepTitle {
  color: #2f2f2f;
  font-weight: var(--weight-semibold);
  font-size: var(--text-md);
  margin: 0 0 var(--space-1);
}

.onboarding_stepDesc {
  color: #635f55;
  font-size: var(--text-sm);
  margin: 0;
}

.onboarding_workspaceNote {
  padding: var(--space-3) var(--space-4);
  margin-bottom: var(--space-6);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  color: #163f32;
  background: #f5f7f3;
  border: 1px solid #bccbac;
}

.onboarding_actions {
  gap: var(--space-3);
  flex-direction: column;
  display: flex;
}


/* app/portal/PortalChrome.module.css */
.PortalChrome_page {
  background: var(--surface-page);
  flex-direction: column;
  min-height: 100dvh;
  display: flex;
}

.PortalChrome_headerInner, .PortalChrome_contextInner, .PortalChrome_main, .PortalChrome_footerInner {
  width: 100%;
  max-width: 1040px;
  margin: 0 auto;
}

.PortalChrome_header {
  z-index: var(--z-sticky);
  background: var(--surface-raised);
  border-bottom: 1px solid var(--border-default);
  padding-top: env(safe-area-inset-top);
  position: sticky;
  top: 0;
}

.PortalChrome_headerInner {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  height: 60px;
  padding: 0 var(--space-6);
  display: flex;
}

.PortalChrome_brand {
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
  color: inherit;
  text-decoration: none;
  display: inline-flex;
}

.PortalChrome_brand:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.PortalChrome_lockupWide, .PortalChrome_lockupNarrow {
  align-items: center;
  display: inline-flex;
}

.PortalChrome_lockupNarrow {
  display: none;
}

.PortalChrome_brandRule {
  background: var(--border-default);
  width: 1px;
  height: 20px;
}

.PortalChrome_brandProduct {
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--text-secondary);
  white-space: nowrap;
}

.PortalChrome_account {
  flex-shrink: 0;
  position: relative;
}

.PortalChrome_accountButton {
  align-items: center;
  gap: var(--space-2);
  max-width: 260px;
  height: 40px;
  padding: 0 var(--space-2) 0 var(--space-1);
  border: 1px solid var(--border-default);
  background: var(--surface-raised);
  color: var(--text-primary);
  font: inherit;
  font-size: var(--text-sm);
  cursor: pointer;
  transition: background var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out);
  display: inline-flex;
}

.PortalChrome_accountButton:hover, .PortalChrome_accountButton[aria-expanded="true"] {
  background: var(--surface-hover);
  border-color: var(--border-strong);
}

.PortalChrome_accountButton:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.PortalChrome_avatar {
  border-radius: var(--radius-full);
  background: var(--accent-subtle);
  width: 30px;
  height: 30px;
  color: var(--accent-subtle-text);
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.PortalChrome_accountLabel {
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  overflow: hidden;
}

.PortalChrome_accountCaret {
  color: var(--text-muted);
  flex-shrink: 0;
}

.PortalChrome_menu {
  top: calc(100% + var(--space-1));
  z-index: var(--z-dropdown);
  background: var(--surface-overlay);
  border: 1px solid var(--border-default);
  min-width: 240px;
  box-shadow: var(--shadow-lg);
  padding: var(--space-1) 0;
  position: absolute;
  right: 0;
}

.PortalChrome_menuHead {
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border-subtle);
  margin-bottom: var(--space-1);
  gap: 2px;
  display: grid;
}

.PortalChrome_menuEyebrow {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.PortalChrome_menuWho {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--text-primary);
  overflow-wrap: anywhere;
}

.PortalChrome_menuItem {
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  padding: var(--space-3) var(--space-4);
  color: var(--text-primary);
  font: inherit;
  font-size: var(--text-md);
  text-align: left;
  cursor: pointer;
  background: none;
  border: 0;
  display: flex;
}

.PortalChrome_menuItem:hover, .PortalChrome_menuItem:focus-visible {
  background: var(--surface-hover);
  outline: none;
}

.PortalChrome_context {
  background: var(--accent-subtle);
  border-bottom: 1px solid var(--accent-border);
}

.PortalChrome_contextInner {
  align-items: center;
  gap: var(--space-4);
  min-height: 52px;
  padding: var(--space-2) var(--space-6);
  display: flex;
}

.PortalChrome_lead {
  flex-shrink: 0;
  align-items: center;
  display: flex;
}

.PortalChrome_clinic {
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
  display: flex;
}

.PortalChrome_lead + .PortalChrome_clinic {
  padding-left: var(--space-4);
  border-left: 1px solid var(--accent-border);
}

.PortalChrome_clinicText {
  min-width: 0;
  display: grid;
}

.PortalChrome_clinicEyebrow {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-subtle-text);
}

.PortalChrome_clinicName {
  font-family: var(--font-display);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-tight);
  color: var(--text-primary);
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.PortalChrome_actions {
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
  margin-left: auto;
  display: flex;
}

.PortalChrome_main {
  padding: var(--space-8) var(--space-6) var(--space-12);
  flex: 1;
}

.PortalChrome_footer {
  border-top: 1px solid var(--border-default);
  background: var(--surface-raised);
  padding: var(--space-8) var(--space-6) calc(var(--space-6) + env(safe-area-inset-bottom));
  gap: var(--space-6);
  display: grid;
}

.PortalChrome_footerInner {
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-8);
  display: flex;
}

.PortalChrome_footerClinic {
  gap: var(--space-2);
  max-width: 60ch;
  display: grid;
}

.PortalChrome_footerTitle {
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  margin: 0;
}

.PortalChrome_footerText {
  font-size: var(--text-md);
  color: var(--text-secondary);
  line-height: var(--leading-normal);
  margin: 0;
}

.PortalChrome_footerBrand {
  justify-items: end;
  gap: var(--space-2);
  flex-shrink: 0;
  display: grid;
}

.PortalChrome_poweredBy {
  font-size: .625rem;
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.PortalChrome_link {
  color: var(--text-link);
  text-underline-offset: 2px;
  text-decoration: underline;
}

@media (width <= 640px) {
  .PortalChrome_headerInner {
    height: 56px;
    padding: 0 var(--space-4);
  }

  .PortalChrome_lockupWide {
    display: none;
  }

  .PortalChrome_lockupNarrow {
    display: inline-flex;
  }

  .PortalChrome_accountLabel {
    display: none;
  }

  .PortalChrome_contextInner {
    gap: var(--space-2) var(--space-3);
    padding: var(--space-2) var(--space-4);
    flex-wrap: wrap;
  }

  .PortalChrome_clinic {
    padding: var(--space-1) 0 var(--space-1);
    flex: 1 0 100%;
    order: 3;
  }

  .PortalChrome_lead + .PortalChrome_clinic {
    border-left: 0;
    padding-left: 0;
  }

  .PortalChrome_main {
    padding: var(--space-5) var(--space-4) var(--space-10);
  }

  .PortalChrome_footer {
    padding: var(--space-6) var(--space-4) calc(var(--space-5) + env(safe-area-inset-bottom));
  }

  .PortalChrome_footerInner {
    gap: var(--space-5);
    flex-direction: column;
  }

  .PortalChrome_footerBrand {
    justify-items: start;
  }
}

@media print {
  .PortalChrome_header, .PortalChrome_context, .PortalChrome_footer {
    display: none;
  }

  .PortalChrome_main {
    max-width: none;
    padding: 0;
  }
}


/* app/portal/ReportFrame.module.css */
.ReportFrame_wrap {
  gap: var(--space-2);
  display: grid;
}

.ReportFrame_toolbar {
  justify-content: flex-end;
  align-items: center;
  gap: var(--space-3);
  display: flex;
}

.ReportFrame_zoom {
  align-items: center;
  gap: var(--space-1);
  min-height: 36px;
  padding: 0 var(--space-3);
  border: 1px solid var(--border-default);
  background: var(--surface-raised);
  color: var(--text-primary);
  font: inherit;
  font-size: var(--text-sm);
  cursor: pointer;
  display: inline-flex;
}

.ReportFrame_zoom:hover {
  background: var(--surface-hover);
}

.ReportFrame_zoom:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.ReportFrame_viewer {
  background: var(--surface-sunken);
  border: 1px solid var(--border-default);
  padding: var(--space-4);
  overflow: hidden;
}

.ReportFrame_viewer[data-actual] {
  overflow-x: auto;
}

.ReportFrame_sheet {
  width: calc(var(--page-w) * var(--page-scale));
  height: calc(var(--page-h) * var(--page-scale));
  box-shadow: var(--shadow-md);
  background: #fff;
  margin: 0 auto;
  position: relative;
  overflow: hidden;
}

.ReportFrame_frame {
  width: var(--page-w);
  height: var(--page-h);
  transform: scale(var(--page-scale));
  transform-origin: 0 0;
  background: #fff;
  border: 0;
  display: block;
  position: absolute;
  top: 0;
  left: 0;
}

@media (width <= 640px) {
  .ReportFrame_viewer {
    padding: var(--space-2);
  }
}

@media print {
  .ReportFrame_toolbar {
    display: none;
  }

  .ReportFrame_viewer {
    background: none;
    border: 0;
    padding: 0;
  }

  .ReportFrame_sheet {
    box-shadow: none;
  }
}


/* app/portal/dashboard/dashboard.module.css */
.dashboard_intro {
  margin-bottom: var(--space-6);
}

.dashboard_eyebrow {
  margin: 0 0 var(--space-2);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-text);
}

.dashboard_heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-tight);
  color: var(--text-primary);
  text-wrap: balance;
  margin: 0 0 var(--space-2);
}

.dashboard_sub {
  font-size: var(--text-md);
  color: var(--text-secondary);
  margin: 0;
}

.dashboard_visits {
  margin: var(--space-5) 0 0;
  gap: var(--space-4);
  flex-direction: column;
  padding: 0;
  list-style: none;
  display: flex;
}

.dashboard_skeletonGap {
  height: var(--space-3);
}

.dashboard_visitCard {
  overflow: hidden;
}

.dashboard_visitButton {
  align-items: center;
  gap: var(--space-4);
  width: 100%;
  padding: var(--space-4) var(--space-5);
  text-align: left;
  cursor: pointer;
  color: inherit;
  font: inherit;
  background: none;
  border: 0;
  display: flex;
}

.dashboard_visitButton:hover {
  background: var(--surface-hover);
}

.dashboard_visitLead {
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  margin-right: auto;
  display: flex;
}

.dashboard_visitDate {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.dashboard_visitMeta {
  font-size: var(--text-sm);
  color: var(--text-secondary);
}

.dashboard_chevron {
  color: var(--text-muted);
  flex-shrink: 0;
  display: inline-flex;
}

.dashboard_tests {
  border-top: 1px solid var(--border-subtle);
  margin: 0;
  padding: 0;
  list-style: none;
}

.dashboard_test {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
}

.dashboard_testName {
  font-size: var(--text-md);
  color: var(--text-primary);
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  display: flex;
}

.dashboard_testDept {
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.dashboard_visitAction {
  margin-top: var(--space-4);
}

.dashboard_privateNote {
  margin-top: var(--space-4);
  font-size: var(--text-sm);
  color: var(--text-secondary);
  max-width: 60ch;
}

@media (width <= 640px) {
  .dashboard_visitButton {
    gap: var(--space-2);
    padding: var(--space-4);
    flex-wrap: wrap;
  }

  .dashboard_visitLead {
    flex: 1 0 100%;
  }

  .dashboard_chevron {
    margin-left: auto;
  }
}

.dashboard_choices {
  margin: var(--space-5) 0 0;
  gap: var(--space-3);
  padding: 0;
  list-style: none;
  display: grid;
}

.dashboard_choice {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  min-height: 72px;
  padding: var(--space-4) var(--space-5);
  border: 1px solid var(--border-default);
  background: var(--surface-raised);
  box-shadow: var(--shadow-sm);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  display: flex;
}

.dashboard_choice:hover {
  background: var(--surface-hover);
  border-color: var(--accent-border);
}

.dashboard_choice:hover .dashboard_choiceArrow {
  color: var(--accent-text);
  transform: translateX(2px);
}

.dashboard_choiceArrow {
  color: var(--text-muted);
  transition: transform var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);
  flex-shrink: 0;
}

.dashboard_choice:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.dashboard_choiceMain {
  gap: var(--space-1);
  min-width: 0;
  display: grid;
}

.dashboard_choiceName {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.dashboard_choiceMeta {
  font-size: var(--text-sm);
  color: var(--text-muted);
}

.dashboard_private {
  gap: var(--space-3);
  max-width: 28rem;
  display: grid;
}

.dashboard_findLink {
  margin: var(--space-8) 0 0;
  text-align: center;
  font-size: var(--text-sm);
}

.dashboard_linkButton {
  font: inherit;
  font-weight: var(--weight-medium);
  color: var(--text-link);
  text-underline-offset: 2px;
  cursor: pointer;
  background: none;
  border: 0;
  padding: 0;
  text-decoration: underline;
}

.dashboard_linkButton:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.dashboard_find {
  gap: var(--space-4);
  max-width: 34rem;
  margin: var(--space-8) auto 0;
  padding: var(--space-5);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  display: grid;
}

.dashboard_findTitle {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 0;
}

.dashboard_findFields {
  gap: var(--space-3);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

.dashboard_findActions {
  gap: var(--space-2);
  display: flex;
}

@media (width <= 480px) {
  .dashboard_findFields {
    grid-template-columns: 1fr;
  }
}


/* app/portal/login/login.module.css */
.portalLoginLogin_page {
  background: var(--surface-page);
  grid-template-columns: minmax(360px, 5fr) 7fr;
  min-height: 100dvh;
  display: grid;
}

.portalLoginLogin_panel {
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-10);
  padding: var(--space-10) var(--space-10) var(--space-8);
  background: var(--brand-green);
  color: var(--on-brand);
  flex-direction: column;
  display: flex;
}

.portalLoginLogin_panelBody {
  gap: var(--space-5);
  max-width: 30rem;
  display: grid;
}

.portalLoginLogin_panelEyebrow {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--sg-300);
  margin: 0;
}

.portalLoginLogin_panelTitle {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-tight);
  text-wrap: balance;
  margin: 0;
}

.portalLoginLogin_points {
  margin: var(--space-2) 0 0;
  gap: var(--space-4);
  padding: 0;
  list-style: none;
  display: grid;
}

.portalLoginLogin_points li {
  align-items: flex-start;
  gap: var(--space-3);
  font-size: var(--text-md);
  line-height: var(--leading-normal);
  color: var(--sg-100);
  display: flex;
}

.portalLoginLogin_points svg {
  color: var(--sg-400);
  flex-shrink: 0;
  margin-top: 2px;
}

.portalLoginLogin_panelFoot {
  font-size: var(--text-sm);
  color: var(--sg-300);
  margin: 0;
}

.portalLoginLogin_side {
  justify-content: center;
  align-items: center;
  gap: var(--space-5);
  padding: var(--space-10) var(--space-6);
  flex-direction: column;
  display: flex;
}

.portalLoginLogin_mobileBrand {
  display: none;
}

.portalLoginLogin_card {
  width: 100%;
  max-width: 420px;
  padding: var(--space-10) var(--space-8);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  box-shadow: var(--shadow-md);
}

.portalLoginLogin_intro {
  margin-bottom: var(--space-6);
}

.portalLoginLogin_form .portalLoginLogin_intro {
  margin-bottom: 0;
}

.portalLoginLogin_eyebrow {
  margin: 0 0 var(--space-2);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-text);
}

.portalLoginLogin_form {
  gap: var(--space-5);
  flex-direction: column;
  display: flex;
}

.portalLoginLogin_heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-tight);
  color: var(--text-primary);
  text-wrap: balance;
  margin: 0 0 var(--space-2);
}

.portalLoginLogin_sub {
  font-size: var(--text-md);
  line-height: var(--leading-normal);
  color: var(--text-secondary);
  max-width: 42ch;
  margin: 0;
}

.portalLoginLogin_emailSent {
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  overflow-wrap: anywhere;
}

.portalLoginLogin_otp {
  gap: var(--space-2);
  cursor: text;
  grid-template-columns: repeat(6, 1fr);
  display: grid;
  position: relative;
}

.portalLoginLogin_otpInput {
  opacity: 0;
  caret-color: #0000;
  cursor: text;
  border: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  font-size: 16px;
  position: absolute;
  inset: 0;
}

.portalLoginLogin_otpCell {
  background: var(--surface-inset);
  border: 1px solid var(--border-default);
  height: 52px;
  font-family: var(--font-mono);
  font-size: var(--text-xl);
  font-weight: var(--weight-normal);
  font-variant-numeric: tabular-nums;
  color: var(--text-primary);
  transition: border-color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out);
  justify-content: center;
  align-items: center;
  display: flex;
}

.portalLoginLogin_otpCell[data-filled] {
  background: var(--surface-raised);
  border-color: var(--border-strong);
}

.portalLoginLogin_otpCell[data-active] {
  border-color: var(--focus-color);
  box-shadow: 0 0 0 1px var(--focus-color);
}

.portalLoginLogin_otpCell[data-invalid] {
  border-color: var(--critical-border);
}

.portalLoginLogin_switch {
  margin: var(--space-6) 0 0;
  padding-top: var(--space-5);
  border-top: 1px solid var(--border-subtle);
  font-size: var(--text-sm);
  color: var(--text-muted);
  text-align: center;
}

.portalLoginLogin_form .portalLoginLogin_switch {
  margin-top: 0;
}

.portalLoginLogin_switchLink {
  font: inherit;
  font-weight: var(--weight-medium);
  color: var(--text-link);
  text-underline-offset: 2px;
  cursor: pointer;
  background: none;
  border: 0;
  padding: 0;
  text-decoration: underline;
}

.portalLoginLogin_switchLink:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.portalLoginLogin_alternatives {
  justify-content: space-between;
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.portalLoginLogin_help {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  text-align: center;
  margin: 0;
}

.portalLoginLogin_link {
  color: var(--text-link);
  text-underline-offset: 2px;
  text-decoration: underline;
}

.portalLoginLogin_waStart {
  gap: var(--space-4);
  display: grid;
}

.portalLoginLogin_waOpen {
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
  min-height: var(--control-height-lg);
  padding: var(--space-3) var(--space-4);
  background: var(--accent-solid);
  color: var(--accent-solid-text);
  font-weight: var(--weight-medium);
  text-decoration: none;
  display: inline-flex;
}

.portalLoginLogin_waOpen:hover {
  background: var(--accent-solid-hover);
}

.portalLoginLogin_waOpen:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.portalLoginLogin_waHelp {
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--text-muted);
  text-align: center;
  margin: 0;
}

.portalLoginLogin_waCode {
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
  color: var(--text-primary);
}

.portalLoginLogin_waNumber {
  font-family: var(--font-mono);
  white-space: nowrap;
}

.portalLoginLogin_waiting {
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  color: var(--text-secondary);
  margin: 0;
  display: inline-flex;
}

.portalLoginLogin_pulse {
  border-radius: var(--radius-full);
  background: var(--accent-muted);
  width: 8px;
  height: 8px;
  animation: portalLoginLogin_pulse 1.4s var(--ease-in-out) infinite;
}

@keyframes portalLoginLogin_pulse {
  0%, 100% {
    opacity: .35;
    transform: scale(.8);
  }

  50% {
    opacity: 1;
    transform: scale(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  .portalLoginLogin_pulse {
    animation: none;
  }
}

.portalLoginLogin_steps {
  gap: var(--space-2);
  grid-template-columns: repeat(3, 1fr);
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.portalLoginLogin_step {
  justify-items: center;
  gap: var(--space-2);
  text-align: center;
  font-size: var(--text-xs);
  color: var(--text-muted);
  display: grid;
}

.portalLoginLogin_stepDot {
  border-radius: var(--radius-full);
  border: 1px solid var(--border-default);
  background: var(--surface-raised);
  width: 26px;
  height: 26px;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.portalLoginLogin_step[data-state="done"] .portalLoginLogin_stepDot {
  background: var(--accent-solid);
  border-color: var(--accent-solid);
  color: var(--accent-solid-text);
}

.portalLoginLogin_step[data-state="current"] {
  color: var(--text-primary);
  font-weight: var(--weight-medium);
}

.portalLoginLogin_step[data-state="current"] .portalLoginLogin_stepDot {
  border-color: var(--accent-solid);
  color: var(--accent-text);
  box-shadow: 0 0 0 3px var(--accent-subtle);
}

.portalLoginLogin_stepText {
  line-height: var(--leading-snug);
}

@media (width <= 860px) {
  .portalLoginLogin_page {
    grid-template-columns: 1fr;
  }

  .portalLoginLogin_panel {
    display: none;
  }

  .portalLoginLogin_side {
    padding: calc(var(--space-8) + env(safe-area-inset-top)) var(--space-4) calc(var(--space-6) + env(safe-area-inset-bottom));
    justify-content: flex-start;
  }

  .portalLoginLogin_mobileBrand {
    padding-bottom: var(--space-2);
    justify-content: center;
    display: flex;
  }
}

@media (width <= 480px) {
  .portalLoginLogin_card {
    padding: var(--space-8) var(--space-5);
  }

  .portalLoginLogin_otp {
    gap: var(--space-1);
  }

  .portalLoginLogin_otpCell {
    height: 48px;
    font-size: var(--text-lg);
  }
}


/* app/portal/portalLoading.module.css */
.portalLoading_page {
  gap: var(--space-3);
  max-width: 760px;
  padding: var(--space-8) var(--space-4);
  flex-direction: column;
  margin: 0 auto;
  display: flex;
}

.portalLoading_body {
  gap: var(--space-4);
  margin-top: var(--space-5);
  flex-direction: column;
  display: flex;
}


/* app/portal/r/[token]/link.module.css */
.link_page {
  max-width: 720px;
  margin: 0 auto;
}

.link_gap {
  height: var(--space-3);
}

.link_heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-tight);
  color: var(--text-primary);
  text-wrap: balance;
  margin: 0 0 var(--space-2);
}

.link_meta {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  margin: 0 0 var(--space-5);
}

.link_ask {
  gap: var(--space-4);
  max-width: 420px;
  display: grid;
}

.link_hint {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  margin: 0;
}

.link_summary {
  gap: var(--space-3);
  margin: 0 0 var(--space-5);
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  display: grid;
}

.link_rows {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  margin: 0;
  padding: 0;
  list-style: none;
}

.link_row {
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-top: 1px solid var(--border-subtle);
  font-size: var(--text-sm);
  display: flex;
}

.link_row:first-child {
  border-top: 0;
}

.link_rowText {
  gap: var(--space-1);
  min-width: 0;
  display: grid;
}

.link_rowDate {
  color: var(--text-muted);
  font-size: var(--text-xs);
}

.link_money {
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
  white-space: nowrap;
  color: var(--text-primary);
}

.link_credit {
  color: var(--success-text);
}

.link_note {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  margin: var(--space-4) 0 0;
}

@media print {
  .link_heading, .link_meta {
    display: none;
  }
}


/* app/portal/results/[patientId]/report.module.css */
.report_intro {
  margin-bottom: var(--space-6);
  padding-bottom: var(--space-5);
  border-bottom: 1px solid var(--border-subtle);
}

.report_eyebrow {
  margin: 0 0 var(--space-2);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-text);
}

.report_heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-tight);
  color: var(--text-primary);
  text-wrap: balance;
  margin: 0 0 var(--space-4);
}

.report_facts {
  gap: var(--space-3) var(--space-8);
  flex-wrap: wrap;
  margin: 0;
  display: flex;
}

.report_facts div {
  gap: 2px;
  display: grid;
}

.report_facts dt {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.report_facts dd {
  font-size: var(--text-md);
  color: var(--text-primary);
  margin: 0;
}

.report_mono {
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
}

.report_note {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  margin: 0 0 var(--space-4);
  max-width: 70ch;
}

@media (width <= 640px) {
  .report_facts {
    gap: var(--space-3) var(--space-6);
  }
}

@media print {
  .report_intro, .report_note {
    display: none;
  }
}

.report_skeletonGap {
  height: var(--space-2);
}

.report_document {
  background: var(--surface-sunken);
  border: 1px solid var(--border-default);
  padding: var(--space-4);
}


/* components/BootScreen.module.css */
.BootScreen_screen {
  background: var(--surface-page);
  min-height: 100vh;
  padding: var(--space-6);
  justify-content: center;
  align-items: center;
  display: flex;
  position: relative;
}

.BootScreen_ghostRail {
  background: var(--surface-raised);
  border-right: 1px solid var(--border-subtle);
  gap: var(--space-5);
  width: 216px;
  padding: var(--space-4);
  flex-direction: column;
  display: flex;
  position: absolute;
  inset: 0 auto 0 0;
}

.BootScreen_ghostBrand {
  align-items: center;
  gap: var(--space-3);
  height: 24px;
  display: flex;
}

.BootScreen_ghostNav {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.BootScreen_ghostMain {
  position: absolute;
  inset: 0 0 0 216px;
}

.BootScreen_ghostHeader {
  background: var(--surface-raised);
  border-bottom: 1px solid var(--border-subtle);
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  height: 56px;
  padding: 0 var(--space-5);
  display: flex;
}

.BootScreen_ghostAvatar {
  flex-shrink: 0;
  display: block;
}

.BootScreen_ghostContent {
  gap: var(--space-3);
  padding: var(--space-6);
  flex-direction: column;
  display: flex;
}

.BootScreen_ghostToolbar {
  justify-content: space-between;
  gap: var(--space-3);
  margin-bottom: var(--space-2);
  display: flex;
}

.BootScreen_inner {
  text-align: center;
  align-items: center;
  gap: var(--space-3);
  flex-direction: column;
  display: flex;
  position: relative;
}

.BootScreen_label {
  color: var(--text-primary);
  font-size: var(--text-sm);
  margin: 0;
  font-weight: 500;
}

.BootScreen_detail {
  color: var(--text-muted);
  font-size: var(--text-xs);
  margin: 0;
}

@media (width <= 860px) {
  .BootScreen_ghostRail {
    display: none;
  }

  .BootScreen_ghostMain {
    inset: 0;
  }
}


/* components/DepartmentPage.module.css */
.DepartmentPage_toolbar {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-6);
  background: var(--surface-raised);
  border-bottom: 1px solid var(--border-default);
  flex-wrap: wrap;
  display: flex;
}

.DepartmentPage_stats {
  gap: var(--space-6);
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.DepartmentPage_stat {
  align-items: baseline;
  gap: var(--space-2);
  display: flex;
}

.DepartmentPage_statNum {
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  font-variant-numeric: tabular-nums;
}

.DepartmentPage_statPending {
  color: var(--warning-text);
}

.DepartmentPage_statDone {
  color: var(--success-text);
}

.DepartmentPage_statLabel {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--text-secondary);
}

.DepartmentPage_tools {
  align-items: center;
  gap: var(--space-2);
  display: flex;
}

.DepartmentPage_main {
  width: 100%;
  max-width: 960px;
  padding: var(--space-6);
  flex: 1;
  margin: 0 auto;
}

.DepartmentPage_entryBody {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.DepartmentPage_signRow {
  gap: var(--space-4);
  grid-template-columns: 1fr 200px;
  align-items: end;
  display: grid;
}

@media (width <= 640px) {
  .DepartmentPage_signRow {
    grid-template-columns: 1fr;
  }
}

.DepartmentPage_specimen {
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--text-secondary);
}

.DepartmentPage_split {
  height: 0;
  margin: var(--space-2) 0;
  border: 0;
  border-top: 1px dashed var(--border-default);
}

.DepartmentPage_scroll {
  overflow-x: auto;
}

.DepartmentPage_extra {
  gap: var(--space-3);
  flex-direction: column;
  display: flex;
}

.DepartmentPage_extraTitle {
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-text);
  margin: 0;
}

.DepartmentPage_extraTable {
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  overflow-x: auto;
}

.DepartmentPage_toast {
  top: var(--space-4);
  right: var(--space-4);
  z-index: var(--z-toast);
  align-items: center;
  gap: var(--space-2);
  max-width: 380px;
  padding: var(--space-3) var(--space-5);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--accent-solid-text);
  display: flex;
  position: fixed;
}

.DepartmentPage_toastSuccess {
  background: var(--success-solid);
}

.DepartmentPage_toastError {
  background: var(--critical-solid);
}

.DepartmentPage_autoComment {
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-2);
  padding: var(--space-3);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  flex-wrap: wrap;
  display: flex;
}

.DepartmentPage_autoCommentText {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  flex: 100%;
  margin: 0;
  line-height: 1.5;
}


/* components/LetterheadDesigner.module.css */
.LetterheadDesigner_wrap {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  flex-direction: column;
  display: flex;
  overflow: hidden;
}

.LetterheadDesigner_fileInput {
  display: none;
}

.LetterheadDesigner_toolbar {
  background: var(--surface-raised);
  border-bottom: 1px solid var(--border-subtle);
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  padding: 8px 10px;
  display: flex;
}

.LetterheadDesigner_groupLabel {
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
  margin-right: 2px;
}

.LetterheadDesigner_divider {
  background: var(--border-default);
  width: 1px;
  height: 22px;
  margin: 0 2px;
}

.LetterheadDesigner_spacer {
  flex: 1;
}

.LetterheadDesigner_tbtn {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--surface-raised);
  color: var(--text-primary);
  font-family: inherit;
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  align-items: center;
  gap: 4px;
  padding: 5px 9px;
  display: inline-flex;
}

.LetterheadDesigner_tbtn:hover:not(:disabled) {
  background: var(--surface-hover);
}

.LetterheadDesigner_tbtn:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: 1px;
}

.LetterheadDesigner_tbtn:disabled {
  background: var(--surface-sunken);
  color: var(--text-disabled);
  cursor: default;
}

.LetterheadDesigner_tbtn[aria-pressed="true"], .LetterheadDesigner_tbtn[aria-expanded="true"] {
  border-color: var(--accent-solid);
  background: var(--accent-subtle);
  color: var(--accent-text);
}

.LetterheadDesigner_tbtnPrimary {
  border-color: var(--accent-solid);
  background: var(--accent-solid);
  color: var(--accent-solid-text);
  font-weight: var(--weight-bold);
}

.LetterheadDesigner_tbtnPrimary:hover:not(:disabled) {
  background: var(--accent-solid-hover);
}

.LetterheadDesigner_tbtnDanger {
  border-color: var(--critical-border);
  background: var(--critical-subtle);
  color: var(--critical-text);
  margin-left: auto;
}

.LetterheadDesigner_tbtnDanger:hover:not(:disabled) {
  background: var(--critical-subtle);
  filter: brightness(.97);
}

.LetterheadDesigner_heightField {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  align-items: center;
  gap: 6px;
  display: inline-flex;
}

.LetterheadDesigner_menuWrap {
  position: relative;
}

.LetterheadDesigner_menuBackdrop {
  z-index: var(--z-overlay);
  position: fixed;
  inset: 0;
}

.LetterheadDesigner_menu {
  z-index: var(--z-dropdown);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  min-width: 150px;
  box-shadow: var(--shadow-lg);
  margin-top: 4px;
  padding: 4px 0;
  position: absolute;
  top: 100%;
  left: 0;
  overflow: hidden;
}

.LetterheadDesigner_menuItem {
  width: 100%;
  color: var(--text-primary);
  font-family: inherit;
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  text-align: left;
  cursor: pointer;
  background: none;
  border: none;
  align-items: center;
  gap: 7px;
  padding: 7px 12px;
  display: flex;
}

.LetterheadDesigner_menuItem:hover, .LetterheadDesigner_menuItem:focus-visible {
  background: var(--surface-hover);
  outline: none;
}

.LetterheadDesigner_body {
  align-items: stretch;
  min-height: 340px;
  display: flex;
}

.LetterheadDesigner_canvasScroll {
  overscroll-behavior: contain;
  background: var(--surface-sunken);
  flex: 1;
  justify-content: center;
  padding: 20px;
  display: flex;
  overflow: auto;
}

.LetterheadDesigner_canvas {
  background-color: #fff;
  background-image: linear-gradient(#f1f5f9 1px, #0000 1px), linear-gradient(90deg, #f1f5f9 1px, #0000 1px);
  background-size: 20px 20px;
  flex-shrink: 0;
  position: relative;
  box-shadow: 0 1px 4px #00000026;
}

.LetterheadDesigner_guideX, .LetterheadDesigner_guideY {
  z-index: 10000;
  pointer-events: none;
  background: #ec4899;
  position: absolute;
}

.LetterheadDesigner_guideX {
  width: 1px;
  height: 100%;
  top: 0;
}

.LetterheadDesigner_guideY {
  width: 100%;
  height: 1px;
  left: 0;
}

.LetterheadDesigner_selection {
  z-index: 9999;
  pointer-events: none;
  outline: 1px solid #2563eb;
  position: absolute;
}

.LetterheadDesigner_handle {
  pointer-events: auto;
  background: #fff;
  border: 1.5px solid #2563eb;
  width: 10px;
  height: 10px;
  position: absolute;
}

.LetterheadDesigner_rotateHandle {
  pointer-events: auto;
  cursor: grab;
  background: #2563eb;
  border: 2px solid #fff;
  border-radius: 50%;
  width: 12px;
  height: 12px;
  position: absolute;
  top: -28px;
}

.LetterheadDesigner_rotateStem {
  background: #2563eb;
  width: 1px;
  height: 18px;
  position: absolute;
  top: -18px;
}

.LetterheadDesigner_textEdit {
  width: 100%;
  height: 100%;
}

.LetterheadDesigner_image {
  pointer-events: none;
  max-width: none;
  display: block;
  position: absolute;
}

.LetterheadDesigner_inspector {
  overscroll-behavior: contain;
  border-left: 1px solid var(--border-subtle);
  background: var(--surface-raised);
  flex-shrink: 0;
  width: 250px;
  padding: 12px;
  overflow-y: auto;
}

.LetterheadDesigner_hint {
  font-size: var(--text-xs);
  line-height: var(--leading-normal);
  color: var(--text-secondary);
}

.LetterheadDesigner_inspBody {
  flex-direction: column;
  gap: 10px;
  display: flex;
}

.LetterheadDesigner_inspTitle {
  border-bottom: 1px solid var(--border-subtle);
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-primary);
  margin: 0;
  padding-bottom: 6px;
}

.LetterheadDesigner_row {
  gap: 8px;
  display: flex;
}

.LetterheadDesigner_rowEnd {
  align-items: flex-end;
  gap: 4px;
  display: flex;
}

.LetterheadDesigner_field {
  flex-direction: column;
  flex: 1;
  gap: 3px;
  min-width: 0;
  display: flex;
}

.LetterheadDesigner_fLabel {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  color: var(--text-secondary);
}

.LetterheadDesigner_num, .LetterheadDesigner_select {
  box-sizing: border-box;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--surface-raised);
  width: 100%;
  color: var(--text-primary);
  font-family: inherit;
  font-size: var(--text-xs);
  padding: 4px 6px;
}

.LetterheadDesigner_numSm {
  width: 60px;
}

.LetterheadDesigner_num:focus-visible, .LetterheadDesigner_select:focus-visible, .LetterheadDesigner_color:focus-visible, .LetterheadDesigner_range:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: 1px;
}

.LetterheadDesigner_color {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  cursor: pointer;
  background: none;
  width: 100%;
  height: 28px;
  padding: 0;
}

.LetterheadDesigner_range {
  width: 100%;
}

.LetterheadDesigner_btnRow {
  gap: 4px;
  margin-top: 4px;
  display: flex;
}

.LetterheadDesigner_btnRowWide {
  gap: 6px;
  margin-top: 4px;
  display: flex;
}

.LetterheadDesigner_vDivider {
  background: var(--border-default);
  width: 1px;
  margin: 0 2px;
}

.LetterheadDesigner_iconBtn {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--surface-raised);
  height: 28px;
  color: var(--text-primary);
  cursor: pointer;
  flex: 1;
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.LetterheadDesigner_iconBtn:hover {
  background: var(--surface-hover);
}

.LetterheadDesigner_iconBtn:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: 1px;
}

.LetterheadDesigner_toggle {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--surface-raised);
  width: 28px;
  height: 26px;
  color: var(--text-primary);
  cursor: pointer;
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.LetterheadDesigner_toggle:hover {
  background: var(--surface-hover);
}

.LetterheadDesigner_toggle:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: 1px;
}

.LetterheadDesigner_toggle[aria-pressed="true"] {
  border-color: var(--accent-solid);
  background: var(--accent-subtle);
  color: var(--accent-text);
}

.LetterheadDesigner_picture {
  border-top: 1px solid var(--border-subtle);
  flex-direction: column;
  gap: 8px;
  padding-top: 8px;
  display: flex;
}

.LetterheadDesigner_pictureBtns {
  gap: 6px;
  display: flex;
}


/* components/Notices.module.css */
.Notices_stack {
  top: var(--space-4);
  right: var(--space-4);
  z-index: var(--z-toast);
  gap: var(--space-2);
  width: min(380px, calc(100vw - var(--space-8)));
  pointer-events: none;
  flex-direction: column;
  display: flex;
  position: fixed;
}

.Notices_region {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.Notices_card {
  pointer-events: auto;
  align-items: flex-start;
  gap: var(--space-2);
  padding: var(--space-3);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  font-size: var(--text-md);
  line-height: var(--leading-snug);
  white-space: pre-wrap;
  animation: Notices_noticeIn var(--duration-normal) var(--ease-out);
  border: 1px solid;
  border-left-width: 3px;
  display: flex;
}

@keyframes Notices_noticeIn {
  from {
    opacity: 0;
    transform: translateY(-6px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .Notices_card {
    animation: none;
  }
}

.Notices_success {
  background: var(--success-subtle);
  border-color: var(--success-border);
  border-left-color: var(--success-solid);
  color: var(--success-text);
}

.Notices_error {
  background: var(--critical-subtle);
  border-color: var(--critical-border);
  border-left-color: var(--critical-solid);
  color: var(--critical-text);
}

.Notices_info {
  background: var(--info-subtle);
  border-color: var(--info-border);
  border-left-color: var(--info-solid);
  color: var(--info-text);
}

.Notices_tone {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  flex-shrink: 0;
  padding-top: 2px;
}

.Notices_message {
  overflow-wrap: anywhere;
  flex: auto;
  min-width: 0;
}

.Notices_action {
  padding: 2px var(--space-2);
  border-radius: var(--radius-sm);
  color: inherit;
  font: inherit;
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  background: none;
  border: 1px solid;
  flex-shrink: 0;
  line-height: 1.2;
}

.Notices_action:hover {
  background: var(--surface-raised);
}

.Notices_action:disabled {
  opacity: .6;
  cursor: progress;
}

.Notices_action:focus-visible {
  outline: var(--focus-width) solid currentColor;
  outline-offset: 1px;
}

.Notices_dismiss {
  border-radius: var(--radius-sm);
  width: 20px;
  height: 20px;
  color: inherit;
  opacity: .6;
  cursor: pointer;
  font-size: var(--text-base);
  background: none;
  border: 0;
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  line-height: 1;
  display: flex;
}

.Notices_dismiss:hover {
  opacity: 1;
}

.Notices_dismiss:focus-visible {
  outline: var(--focus-width) solid currentColor;
  outline-offset: 1px;
  opacity: 1;
}

.Notices_question {
  font-size: var(--text-base);
  color: var(--text-primary);
  line-height: var(--leading-normal);
  white-space: pre-wrap;
  margin: 0;
}

@media (width <= 560px) {
  .Notices_stack {
    top: auto;
    bottom: calc(64px + var(--space-3));
    left: var(--space-3);
    right: var(--space-3);
    width: auto;
  }
}


/* components/RedianLockup.module.css */
.RedianLockup_lockup {
  flex-shrink: 0;
  width: auto;
  display: block;
}

.RedianLockup_autoOnDark {
  display: none;
}

:root[data-polarity="dark"] .RedianLockup_autoOnLight {
  display: none;
}

:root[data-polarity="dark"] .RedianLockup_autoOnDark {
  display: block;
}


/* components/RichTextEditor.module.css */
.RichTextEditor_container {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  flex-direction: column;
  width: 100%;
  height: 100%;
  display: flex;
  overflow: hidden;
}

.RichTextEditor_fileInput {
  display: none;
}

.RichTextEditor_toolbar {
  z-index: 20;
  background: var(--surface-raised);
  border-bottom: 1px solid var(--border-subtle);
  flex-wrap: wrap;
  align-items: center;
  gap: 2px;
  padding: 6px 8px;
  display: flex;
  position: sticky;
  top: 0;
}

.RichTextEditor_group {
  align-items: center;
  gap: 2px;
  display: flex;
}

.RichTextEditor_divider {
  background: var(--border-default);
  width: 1px;
  height: 22px;
  margin: 0 4px;
}

.RichTextEditor_miniDivider {
  background: var(--border-default);
  width: 1px;
  height: 16px;
  margin: 0 2px;
}

.RichTextEditor_iconBtn {
  border-radius: var(--radius-sm);
  width: 30px;
  height: 30px;
  color: var(--text-primary);
  cursor: pointer;
  background: none;
  border: none;
  justify-content: center;
  align-items: center;
  transition: background .1s;
  display: flex;
  position: relative;
}

.RichTextEditor_iconBtn:hover:not(:disabled) {
  background: var(--surface-hover);
}

.RichTextEditor_iconBtn:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -2px;
}

.RichTextEditor_iconBtn[aria-pressed="true"], .RichTextEditor_iconBtn[aria-expanded="true"] {
  background: var(--accent-subtle);
  color: var(--accent-text);
}

.RichTextEditor_iconBtn:disabled {
  color: var(--text-disabled);
  cursor: not-allowed;
}

.RichTextEditor_colorBar {
  height: 3px;
  position: absolute;
  bottom: 4px;
  left: 6px;
  right: 6px;
}

.RichTextEditor_colorBarEmpty {
  border: 1px solid var(--border-strong);
}

.RichTextEditor_menuWrap {
  position: relative;
}

.RichTextEditor_menuBtn {
  border-radius: var(--radius-sm);
  height: 30px;
  color: var(--text-primary);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  background: none;
  border: 1px solid #0000;
  justify-content: space-between;
  align-items: center;
  gap: 4px;
  padding: 0 8px;
  display: flex;
}

.RichTextEditor_menuBtn:hover, .RichTextEditor_menuBtn[aria-expanded="true"] {
  background: var(--surface-hover);
}

.RichTextEditor_menuBtn:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -2px;
}

.RichTextEditor_menuLabel {
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.RichTextEditor_menuCaret {
  opacity: .6;
  flex-shrink: 0;
}

.RichTextEditor_dropdown {
  z-index: var(--z-dropdown);
  overscroll-behavior: contain;
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  min-width: 150px;
  max-height: 320px;
  box-shadow: var(--shadow-lg);
  padding: 4px 0;
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  overflow-y: auto;
}

.RichTextEditor_dropdownRight {
  left: auto;
  right: 0;
}

.RichTextEditor_dropdownNarrow {
  min-width: 70px;
}

.RichTextEditor_dropdownMid {
  min-width: 110px;
}

.RichTextEditor_dropdownWide {
  min-width: 170px;
}

.RichTextEditor_menuItem {
  width: 100%;
  color: var(--text-primary);
  font-size: var(--text-sm);
  text-align: left;
  cursor: pointer;
  background: none;
  border: none;
  padding: 7px 12px;
  display: block;
}

.RichTextEditor_menuItem:hover, .RichTextEditor_menuItem:focus-visible {
  background: var(--surface-hover);
  outline: none;
}

.RichTextEditor_menuItemH1 {
  font-size: 1.3rem;
  font-weight: var(--weight-bold);
}

.RichTextEditor_menuItemH2 {
  font-size: 1.1rem;
  font-weight: var(--weight-bold);
}

.RichTextEditor_menuItemH3 {
  font-size: 1rem;
  font-weight: var(--weight-bold);
}

.RichTextEditor_sizeBox {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--surface-raised);
  align-items: center;
  height: 30px;
  display: flex;
  position: relative;
}

.RichTextEditor_sizeStep {
  background: var(--surface-sunken);
  width: 22px;
  height: 100%;
  color: var(--text-secondary);
  font-size: 1rem;
  font-weight: var(--weight-bold);
  cursor: pointer;
  border: none;
}

.RichTextEditor_sizeStep:hover {
  background: var(--surface-hover);
}

.RichTextEditor_sizeStep:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -2px;
}

.RichTextEditor_sizeValue {
  min-width: 52px;
  height: 100%;
  color: var(--text-primary);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
  cursor: pointer;
  background: none;
  border: none;
  align-items: center;
  gap: 2px;
  padding: 0 6px;
  display: flex;
}

.RichTextEditor_sizeValue:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -2px;
}

.RichTextEditor_tablePicker {
  padding: 10px;
}

.RichTextEditor_tablePickerLabel {
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  color: var(--text-secondary);
  margin-bottom: 6px;
}

.RichTextEditor_tableRow {
  gap: 3px;
  margin-bottom: 3px;
  display: flex;
}

.RichTextEditor_tableCell {
  border: 1px solid var(--border-strong);
  background: var(--surface-raised);
  cursor: pointer;
  width: 15px;
  height: 15px;
  padding: 0;
}

.RichTextEditor_tableCellOn {
  border-color: var(--accent-solid);
  background: var(--accent-subtle);
}

.RichTextEditor_tableCell:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: 1px;
}

.RichTextEditor_colorGrid {
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
  width: 182px;
  padding: 8px;
  display: grid;
}

.RichTextEditor_swatch {
  border: 1px solid var(--border-strong);
  cursor: pointer;
  width: 18px;
  height: 18px;
  padding: 0;
}

.RichTextEditor_swatch:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: 1px;
}

.RichTextEditor_swatchReset {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--surface-sunken);
  color: var(--text-primary);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  grid-column: span 7;
  margin-top: 4px;
  padding: 5px 0;
}

.RichTextEditor_swatchReset:hover {
  background: var(--surface-hover);
}

.RichTextEditor_swatchReset:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -2px;
}

.RichTextEditor_contextBar {
  background: var(--accent-subtle);
  border-bottom: 1px solid var(--accent-border);
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  padding: 6px 10px;
  display: flex;
}

.RichTextEditor_contextBarImage {
  background: var(--success-subtle);
  border-bottom-color: var(--success-border);
}

.RichTextEditor_contextLabel {
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-text);
  margin-right: 4px;
}

.RichTextEditor_contextBarImage .RichTextEditor_contextLabel {
  color: var(--success-text);
}

.RichTextEditor_contextHint {
  font-size: var(--text-2xs);
  color: var(--text-secondary);
}

.RichTextEditor_contextValue {
  min-width: 42px;
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
}

.RichTextEditor_range {
  width: 120px;
}

.RichTextEditor_textBtn {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--surface-raised);
  color: var(--text-primary);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  cursor: pointer;
  padding: 3px 8px;
}

.RichTextEditor_textBtn:hover {
  background: var(--surface-hover);
}

.RichTextEditor_textBtn:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -2px;
}

.RichTextEditor_textBtnDanger {
  border-color: var(--critical-border);
  color: var(--critical-text);
}

.RichTextEditor_textBtnDanger:hover {
  background: var(--critical-subtle);
}

.RichTextEditor_canvas {
  overscroll-behavior: contain;
  padding: var(--space-6);
  background: var(--surface-sunken);
  flex: 1;
  justify-content: center;
  display: flex;
  overflow-y: auto;
}

.RichTextEditor_paper {
  box-sizing: border-box;
  color: #000;
  background: #fff;
  border: 1px solid #e5e7eb;
  width: 100%;
  max-width: 820px;
  min-height: 100%;
  padding: 2.5rem 2.75rem;
  position: relative;
  box-shadow: 0 1px 3px #0000001f, 0 1px 2px #00000014;
}

.RichTextEditor_placeholder {
  pointer-events: none;
  color: #9ca3af;
  position: absolute;
  top: 0;
  left: 0;
}


/* components/features/bookings/bookings.module.css */
.bookings_page {
  gap: var(--space-4);
  display: grid;
}

.bookings_head {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.bookings_title {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-normal);
  margin: 0;
}

.bookings_list {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  margin: 0;
  padding: 0;
  list-style: none;
}

.bookings_row {
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3);
  border-top: 1px solid var(--border-subtle);
  grid-template-columns: 7rem 1fr auto;
  display: grid;
}

.bookings_row:first-child {
  border-top: 0;
}

.bookings_time {
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
  font-size: var(--text-sm);
}

.bookings_who {
  gap: var(--space-1);
  min-width: 0;
  display: grid;
}

.bookings_name {
  font-weight: var(--weight-medium);
}

.bookings_meta {
  font-size: var(--text-sm);
  color: var(--text-muted);
  text-overflow: ellipsis;
  margin: 0;
  overflow: hidden;
}

.bookings_actions {
  gap: var(--space-2);
  flex-wrap: wrap;
  justify-content: flex-end;
  display: flex;
}

.bookings_form {
  gap: var(--space-3);
  display: grid;
}

@media (width <= 640px) {
  .bookings_row {
    grid-template-columns: 1fr;
  }

  .bookings_actions {
    justify-content: flex-start;
  }
}


/* components/features/catalogue/PriceList.module.css */
.PriceList_screen {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.PriceList_stats {
  gap: var(--space-3);
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
  display: grid;
}

.PriceList_filters {
  gap: var(--space-3);
  flex-wrap: wrap;
  align-items: flex-end;
  display: flex;
}

.PriceList_searchField {
  flex: 14rem;
}

.PriceList_count {
  font-size: var(--text-xs);
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
  align-self: center;
  margin-left: auto;
}

.PriceList_loading {
  padding: var(--space-4);
}

.PriceList_name {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.PriceList_dept {
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  display: inline-flex;
}

.PriceList_muted {
  color: var(--text-muted);
}

.PriceList_priceCell {
  width: 9rem;
}

.PriceList_typeCell {
  width: 11rem;
}

.PriceList_changed {
  border-color: var(--accent-border);
  background: var(--accent-subtle);
}

.PriceList_toolbar {
  justify-content: flex-end;
  align-items: center;
  gap: var(--space-3);
  z-index: var(--z-sticky);
  background: var(--surface-raised);
  padding: var(--space-2) 0;
  display: flex;
  position: sticky;
  top: 0;
}

.PriceList_unsavedNote {
  font-size: var(--text-xs);
  color: var(--warning-text);
  font-weight: var(--weight-medium);
}


/* components/features/catalogue/testManager.module.css */
.testManager_shell {
  gap: var(--space-3);
  flex-direction: column;
  min-height: 0;
  display: flex;
}

.testManager_split {
  gap: var(--space-4);
  grid-template-columns: minmax(15rem, 1fr) minmax(0, 1.5fr);
  align-items: start;
  min-height: 0;
  display: grid;
}

@media (width <= 60rem) {
  .testManager_split {
    grid-template-columns: 1fr;
  }
}

.testManager_picker, .testManager_picker button {
  font-family: var(--font-body-full);
}

.testManager_picker {
  gap: var(--space-3);
  flex-direction: column;
  min-height: 0;
  display: flex;
}

.testManager_categories {
  gap: var(--space-1);
  flex-wrap: wrap;
  display: flex;
}

.testManager_list {
  overscroll-behavior: contain;
  flex-direction: column;
  gap: 2px;
  max-height: 26rem;
  display: flex;
  overflow-y: auto;
}

.testManager_item {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
  padding: var(--space-2) var(--space-3);
  text-align: left;
  border-radius: var(--radius);
  color: var(--text-primary);
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-out),
    border-color var(--duration-fast) var(--ease-out);
  background: none;
  border: 1px solid #0000;
  display: flex;
}

.testManager_item:hover {
  background: var(--surface-hover);
}

.testManager_item:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -2px;
}

.testManager_itemOn {
  background: var(--surface-selected);
  border-color: var(--accent-border);
  box-shadow: inset 3px 0 0 var(--accent-solid);
}

.testManager_itemName {
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
}

.testManager_itemMeta {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  margin-top: 1px;
  display: block;
}

.testManager_itemTail {
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
  display: flex;
}

.testManager_empty {
  padding: var(--space-6) var(--space-4);
  text-align: center;
  font-size: var(--text-sm);
  color: var(--text-muted);
}

.testManager_form {
  gap: var(--space-4);
  flex-direction: column;
  min-height: 0;
  display: flex;
}

.testManager_pair {
  gap: var(--space-3);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

@media (width <= 40rem) {
  .testManager_pair {
    grid-template-columns: 1fr;
  }
}

.testManager_money {
  gap: var(--space-3);
  grid-template-columns: 1.2fr 1fr 1fr;
  display: grid;
}

@media (width <= 40rem) {
  .testManager_money {
    grid-template-columns: 1fr;
  }
}

.testManager_fixed {
  min-height: var(--control-height-md);
  padding: 0 var(--control-padding-x);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius);
  background: var(--surface-sunken);
  color: var(--text-secondary);
  font-size: var(--text-md);
  align-items: center;
  display: flex;
}

.testManager_note {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  line-height: var(--leading-normal);
  margin: 0;
}

.testManager_presets {
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.testManager_preset {
  border: 1px solid var(--border-default);
  border-radius: var(--radius);
  display: inline-flex;
  overflow: hidden;
}

.testManager_paramsHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  display: flex;
}

.testManager_paramsTitle {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--text-secondary);
  margin: 0;
}

.testManager_params {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.testManager_param {
  gap: var(--space-2);
  grid-template-columns: 1.5fr .8fr 1.5fr auto auto;
  align-items: center;
  display: grid;
}

.testManager_paramGroup {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.testManager_subParam {
  gap: var(--space-2);
  margin-left: var(--space-6);
  padding-left: var(--space-3);
  border-left: var(--focus-width) solid var(--accent-border);
  grid-template-columns: 1.5fr .8fr 1.5fr auto;
  align-items: center;
  display: grid;
}

.testManager_packageEditor {
  gap: var(--space-3);
  flex-direction: column;
  display: flex;
}

.testManager_packagePreview {
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-md);
  background: var(--surface-raised);
  overflow: hidden;
}

.testManager_packagePreviewHead {
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-3);
  background: var(--accent-subtle);
  display: flex;
}

.testManager_packagePreviewHead > div, .testManager_packagePreviewTests li > span {
  flex-direction: column;
  gap: 1px;
  display: flex;
}

.testManager_packagePreviewHead small, .testManager_packagePreviewTests small {
  color: var(--text-secondary);
  font-size: var(--text-xs);
  font-weight: var(--weight-normal);
}

.testManager_packagePreviewTests {
  margin: 0;
  padding: 0;
  list-style: none;
}

.testManager_packagePreviewTests li {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border-top: 1px solid var(--border-subtle);
  display: flex;
}

.testManager_packagePreviewEmpty {
  padding: var(--space-4);
  color: var(--text-muted);
  font-size: var(--text-sm);
  margin: 0;
}

.testManager_memberList {
  gap: var(--space-1);
  overscroll-behavior: contain;
  flex-direction: column;
  display: flex;
  overflow-y: auto;
}

.testManager_member {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  text-align: left;
  color: var(--text-primary);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  cursor: pointer;
  display: flex;
}

.testManager_member span:first-child {
  gap: var(--space-1);
  flex-direction: column;
  display: flex;
}

.testManager_member small {
  color: var(--text-secondary);
}

.testManager_memberOn {
  background: var(--accent-subtle);
  border-color: var(--accent-border);
  box-shadow: inset var(--space-1) 0 0 var(--accent-solid);
}

.testManager_member:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

@media (width <= 40rem) {
  .testManager_param {
    grid-template-columns: 1fr 1fr;
  }

  .testManager_subParam {
    grid-template-columns: 1fr 1fr;
    margin-left: 0;
  }
}

.testManager_footer {
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.testManager_footerEnd {
  gap: var(--space-2);
  margin-left: auto;
  display: flex;
}


/* components/features/commissions/settle.module.css */
.settle_body {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.settle_amount {
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-4);
  border: 1px solid var(--success-border);
  border-radius: var(--radius-md);
  background: var(--success-subtle);
  text-align: center;
  flex-direction: column;
  display: flex;
}

.settle_amountLabel {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--success-text);
}

.settle_amountValue {
  font-family: var(--font-mono);
  font-size: var(--text-2xl);
  font-weight: var(--weight-normal);
  color: var(--success-text);
  font-variant-numeric: tabular-nums;
}

.settle_failList {
  margin: var(--space-2) 0 0;
  padding-left: var(--space-4);
}

.settle_failList li {
  font-size: var(--text-sm);
}

.settle_stack {
  flex-direction: column;
  gap: 1px;
  display: flex;
}

.settle_strong {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.settle_slip {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  color: var(--text-secondary);
}


/* components/features/debtors/debtors.module.css */
.debtors_dialogBody {
  gap: var(--space-3);
  flex-direction: column;
  display: flex;
}

.debtors_pair {
  gap: var(--space-3);
  grid-template-columns: 1fr;
  display: grid;
}

@media (width >= 30rem) {
  .debtors_pair {
    grid-template-columns: 1fr 1fr;
    align-items: start;
  }
}

.debtors_approver {
  font-size: var(--text-xs);
  color: var(--text-muted);
  margin: 0;
}

.debtors_money {
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
  font-variant-numeric: tabular-nums;
}


/* components/features/department/ParameterTable.module.css */
.ParameterTable_table {
  border-collapse: separate;
  border-spacing: 0;
  width: 100%;
  font-size: var(--text-sm);
  min-width: 640px;
}

.ParameterTable_table thead th {
  z-index: 1;
  padding: var(--space-2) var(--space-3);
  text-align: left;
  white-space: nowrap;
  background: var(--accent-subtle);
  color: var(--accent-subtle-text);
  border-bottom: 1px solid var(--accent-border);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  position: sticky;
  top: 0;
}

.ParameterTable_table tbody tr {
  border-bottom: 1px solid var(--border-subtle);
}

.ParameterTable_table tbody td, .ParameterTable_table tbody th {
  padding: var(--space-1) var(--space-3);
  border-bottom: 1px solid var(--border-subtle);
  vertical-align: middle;
}

.ParameterTable_parameter {
  text-align: left;
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  min-width: 160px;
}

.ParameterTable_resultCell {
  align-items: center;
  gap: var(--space-2);
  min-width: 170px;
  padding-top: var(--space-1);
  padding-bottom: var(--space-1);
  display: flex;
}

.ParameterTable_resultInput {
  height: var(--control-height-sm);
  font-variant-numeric: tabular-nums;
  min-width: 110px;
}

.ParameterTable_unit {
  color: var(--text-muted);
  white-space: nowrap;
}

.ParameterTable_range {
  color: var(--text-secondary);
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  white-space: nowrap;
}

.ParameterTable_flagCell {
  white-space: nowrap;
  align-items: center;
  gap: var(--space-2);
  padding-top: var(--space-2);
  padding-bottom: var(--space-2);
  display: flex;
}

.ParameterTable_overrideNote {
  font-size: var(--text-2xs);
  color: var(--text-muted);
  white-space: nowrap;
  font-style: italic;
}

.ParameterTable_overrideCell {
  width: 1%;
}

.ParameterTable_overrideSelect {
  height: var(--control-height-sm);
  font-size: var(--text-xs);
  min-width: 130px;
}

@media (width <= 720px) {
  .ParameterTable_table {
    min-width: 0;
  }

  .ParameterTable_table thead {
    display: none;
  }

  .ParameterTable_table tbody tr {
    gap: var(--space-1) var(--space-3);
    padding: var(--space-3) 0;
    border-bottom: 1px solid var(--border-default);
    grid-template-columns: 1fr auto;
    display: grid;
  }

  .ParameterTable_table tbody td, .ParameterTable_table tbody th {
    padding: 0 var(--space-3);
    border-bottom: 0;
  }

  .ParameterTable_parameter {
    font-weight: var(--weight-semibold);
    grid-column: 1 / -1;
  }

  .ParameterTable_resultCell {
    grid-column: 1;
  }

  .ParameterTable_flagCell {
    grid-column: 2;
    justify-content: flex-end;
  }

  .ParameterTable_unit, .ParameterTable_range {
    font-size: var(--text-2xs);
    grid-column: 1 / -1;
  }

  .ParameterTable_overrideCell {
    grid-column: 1 / -1;
    width: auto;
  }

  .ParameterTable_overrideSelect {
    width: 100%;
  }
}


/* components/features/department/entryForm.module.css */
.entryForm_form {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.entryForm_pair {
  gap: var(--space-4);
  grid-template-columns: 1fr 1fr;
  align-items: start;
  display: grid;
}

@media (width <= 60rem) {
  .entryForm_pair {
    grid-template-columns: 1fr;
  }
}

.entryForm_fields {
  gap: var(--space-3);
  flex-direction: column;
  display: flex;
}

.entryForm_culture {
  gap: var(--space-3);
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  display: grid;
}

.entryForm_custom {
  margin-top: var(--space-2);
}

.entryForm_rows {
  gap: var(--space-2);
  overscroll-behavior: contain;
  flex-direction: column;
  max-height: 18rem;
  display: flex;
  overflow-y: auto;
}

.entryForm_row {
  gap: var(--space-2);
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto;
  align-items: start;
  display: grid;
}

.entryForm_rowsEmpty {
  padding: var(--space-4);
  text-align: center;
  font-size: var(--text-sm);
  color: var(--text-muted);
}

.entryForm_panel {
  gap: var(--space-4);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

@media (width <= 60rem) {
  .entryForm_panel {
    grid-template-columns: 1fr;
  }
}

.entryForm_astTable {
  border-collapse: collapse;
  width: 100%;
  font-size: var(--text-md);
}

.entryForm_astTable thead th {
  text-align: left;
  padding: var(--space-2);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--text-secondary);
  border-bottom: 1px solid var(--border-default);
}

.entryForm_astTable tbody td, .entryForm_astTable tbody th {
  padding: var(--space-1) var(--space-2);
  border-bottom: 1px solid var(--border-subtle);
  text-align: left;
  font-weight: inherit;
}

.entryForm_drug {
  font-weight: var(--weight-medium);
  color: var(--text-primary);
}

.entryForm_code {
  color: var(--text-muted);
  font-size: var(--text-xs);
}

.entryForm_scored td, .entryForm_scored th {
  background: var(--surface-hover);
}

.entryForm_scoreCell {
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.entryForm_scoreBox {
  text-align: center;
  width: 2.5rem;
  font-weight: var(--weight-bold);
  text-transform: uppercase;
}

.entryForm_scoreWord {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  white-space: nowrap;
}

.entryForm_wordS {
  color: var(--success-text);
}

.entryForm_wordI {
  color: var(--warning-text);
}

.entryForm_wordR {
  color: var(--critical-text);
}

.entryForm_scoreButtons {
  gap: 2px;
  margin-left: auto;
  display: flex;
}

.entryForm_astHint {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  margin: 0;
}

.entryForm_addPanel {
  gap: var(--space-3);
  margin-top: var(--space-4);
  padding-top: var(--space-4);
  border-top: 1px solid var(--border-subtle);
  grid-template-columns: minmax(0, 1fr) 8rem auto;
  align-items: start;
  display: grid;
}

.entryForm_addPanel > :last-child {
  margin-top: calc(var(--text-sm) + var(--space-2));
}

.entryForm_addCode {
  text-transform: uppercase;
}

@media (width <= 40rem) {
  .entryForm_addPanel {
    grid-template-columns: 1fr;
  }

  .entryForm_addPanel > :last-child {
    margin-top: 0;
  }
}

.entryForm_widalTable {
  border-collapse: collapse;
  width: 100%;
  font-size: var(--text-md);
}

.entryForm_widalTable thead th {
  text-align: left;
  padding: var(--space-2);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--text-secondary);
  border-bottom: 1px solid var(--border-default);
}

.entryForm_widalTable tbody td, .entryForm_widalTable tbody th {
  padding: var(--space-2);
  border-bottom: 1px solid var(--border-subtle);
  vertical-align: middle;
}

.entryForm_antigen {
  text-align: left;
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  white-space: nowrap;
  font-style: italic;
}

.entryForm_titreCell {
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.entryForm_significant {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--critical-text);
  white-space: nowrap;
}

.entryForm_picker {
  position: relative;
}

.entryForm_pickerHead {
  justify-content: space-between;
  align-items: flex-end;
  gap: var(--space-3);
  display: flex;
}

.entryForm_pickerHead > :first-child {
  flex: 1;
  min-width: 0;
}

.entryForm_pickerList {
  z-index: var(--z-dropdown);
  margin: var(--space-1) 0 0;
  overscroll-behavior: contain;
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  max-height: 16rem;
  box-shadow: var(--shadow-md);
  padding: 0;
  list-style: none;
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  overflow-y: auto;
}

.entryForm_pickerOption {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  cursor: pointer;
  font-size: var(--text-md);
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
}

.entryForm_pickerOption:last-child {
  border-bottom: none;
}

.entryForm_pickerActive {
  background: var(--surface-hover);
}

.entryForm_pickerName {
  align-items: center;
  gap: var(--space-2);
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  display: flex;
}

.entryForm_pickerKey {
  font-size: var(--text-xs);
  color: var(--text-muted);
  white-space: nowrap;
}

.entryForm_pickerEmpty {
  z-index: var(--z-dropdown);
  margin-top: var(--space-1);
  padding: var(--space-3);
  text-align: center;
  font-size: var(--text-sm);
  color: var(--text-muted);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
}

.entryForm_scans {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  background: var(--surface-sunken);
}

.entryForm_scansHead {
  justify-content: space-between;
  align-items: baseline;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
  display: flex;
}

.entryForm_scansTitle {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 0;
}

.entryForm_scansCount {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.entryForm_scanGrid {
  gap: var(--space-3);
  grid-template-columns: repeat(auto-fill, minmax(7rem, 1fr));
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.entryForm_scanTile {
  align-items: center;
  gap: var(--space-1);
  width: 100%;
  padding: var(--space-2);
  text-align: center;
  cursor: pointer;
  background: var(--surface-raised);
  border: 2px solid var(--border-default);
  border-radius: var(--radius-md);
  color: var(--text-secondary);
  flex-direction: column;
  display: flex;
}

.entryForm_scanTile:hover {
  border-color: var(--border-strong);
}

.entryForm_scanOn {
  border-color: var(--accent-border);
  background: var(--accent-subtle);
}

.entryForm_scanThumb {
  object-fit: cover;
  border-radius: var(--radius-sm);
  width: 100%;
  height: 3.25rem;
}

.entryForm_scanName {
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  line-height: var(--leading-snug);
  color: var(--text-primary);
}

.entryForm_scanState {
  font-size: var(--text-2xs);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--text-muted);
}

.entryForm_scanOn .entryForm_scanState {
  color: var(--accent-text);
  font-weight: var(--weight-semibold);
}

.entryForm_editorLabel {
  margin: 0 0 var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.entryForm_obsFields {
  gap: var(--space-3);
  margin-bottom: var(--space-4);
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
  display: grid;
}

.entryForm_obsResult {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3);
  background: var(--surface-sunken);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  flex-wrap: wrap;
  display: flex;
}

.entryForm_obsHeadline {
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 0;
}

.entryForm_obsEdd {
  margin-left: var(--space-3);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--text-secondary);
}

.entryForm_obsBreakdown {
  margin: var(--space-1) 0 0;
  font-size: var(--text-xs);
  color: var(--text-muted);
}

.entryForm_obsEmpty {
  text-align: center;
  font-size: var(--text-sm);
  color: var(--text-muted);
  margin: 0;
}

.entryForm_criticalList {
  margin: var(--space-4) 0;
  gap: var(--space-2);
  flex-direction: column;
  padding: 0;
  list-style: none;
  display: flex;
}

.entryForm_criticalRow {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3);
  background: var(--critical-subtle);
  border: 1px solid var(--critical-border);
  border-left: 3px solid var(--critical-solid);
  display: flex;
}

.entryForm_criticalParam {
  font-weight: var(--weight-semibold);
}

.entryForm_criticalValue {
  font-family: var(--font-mono);
  font-size: var(--text-lg);
  font-variant-numeric: tabular-nums;
  color: var(--critical-text);
}

.entryForm_criticalRange {
  font-size: var(--text-xs);
  color: var(--text-muted);
}


/* components/features/department/queue.module.css */
.queue_head {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
  display: flex;
}

.queue_title {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  color: var(--text-primary);
  margin: 0;
}

.queue_loading {
  padding: var(--space-8);
  text-align: center;
  color: var(--text-muted);
}

.queue_queue {
  gap: var(--space-3);
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.queue_card {
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  overflow: hidden;
}

.queue_cardWaiting {
  border-color: var(--warning-border);
  box-shadow: inset var(--space-1) 0 0 0 var(--warning-border);
}

.queue_cardHead {
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border-subtle);
  flex-wrap: wrap;
  display: flex;
}

.queue_slip {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--text-secondary);
}

.queue_name {
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.queue_meta {
  font-size: var(--text-xs);
  color: var(--text-muted);
}

.queue_waited {
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  font-variant-numeric: tabular-nums;
  margin-left: auto;
  display: inline-flex;
}

.queue_tests {
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  flex-direction: column;
  margin: 0;
  list-style: none;
  display: flex;
}

.queue_test {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  background: var(--surface-sunken);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  display: flex;
}

.queue_testStarted {
  background: var(--warning-subtle);
  border-color: var(--warning-border);
}

.queue_testName {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  display: flex;
}

.queue_testName > span, .queue_doneTests {
  flex-direction: column;
  gap: 1px;
  display: flex;
}

.queue_packageOrigin {
  color: var(--text-secondary);
  font-size: var(--text-xs);
  font-weight: var(--weight-normal);
}

.queue_done {
  margin-top: var(--space-6);
}

.queue_doneTitle {
  margin: 0 0 var(--space-3);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--text-secondary);
}

.queue_doneFilters {
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.queue_doneSearch {
  flex: 260px;
}

.queue_doneEmpty {
  padding: var(--space-4);
  color: var(--text-muted);
  background: var(--surface-sunken);
  border: 1px solid var(--border-subtle);
  margin: 0;
}

.queue_doneList {
  gap: var(--space-3);
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.queue_doneRow {
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3);
  background: var(--success-subtle);
  border: 1px solid var(--success-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  font-size: var(--text-sm);
  transition: box-shadow var(--duration-fast) var(--ease-out),
    transform var(--duration-fast) var(--ease-out);
  flex-wrap: wrap;
  display: flex;
}

.queue_doneRow:hover, .queue_doneRow:focus-within {
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}

@media (prefers-reduced-motion: reduce) {
  .queue_doneRow {
    transition: none;
  }

  .queue_doneRow:hover, .queue_doneRow:focus-within {
    transform: none;
  }
}

.queue_doneTick {
  color: var(--success-text);
  flex-shrink: 0;
}

.queue_doneTests {
  color: var(--success-text);
  font-weight: var(--weight-medium);
}

.queue_doneActions {
  gap: var(--space-2);
  margin-left: auto;
  display: flex;
}

@media (width <= 720px) {
  .queue_doneFilters {
    align-items: stretch;
  }

  .queue_doneSearch {
    flex-basis: 100%;
  }

  .queue_doneActions {
    width: 100%;
    margin-left: 0;
  }
}


/* components/features/payments/settleBalance.module.css */
.settleBalance_body {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.settleBalance_figures {
  gap: var(--space-3);
  padding: var(--space-3);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 0;
  display: grid;
}

.settleBalance_figure {
  gap: var(--space-1);
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.settleBalance_figure dt {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.settleBalance_figure dd {
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
  font-size: var(--text-md);
  color: var(--text-default);
  margin: 0;
}

.settleBalance_figureOwed dd {
  color: var(--critical-text);
}

.settleBalance_shortcut {
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.settleBalance_remaining {
  font-size: var(--text-xs);
  color: var(--text-muted);
}


/* components/features/payments/tenders.module.css */
.tenders_tenders, .tenders_rows, .tenders_rowGroup {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.tenders_row {
  gap: var(--space-2);
  grid-template-columns: 1fr 1fr;
  align-items: start;
  display: grid;
}

.tenders_rowRemovable {
  gap: var(--space-2);
  grid-template-columns: 1fr 1fr auto;
  align-items: start;
  display: grid;
}

.tenders_setError {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--critical-text);
  margin: 0;
}


/* components/features/queue/patientCard.module.css */
.patientCard_card {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  animation: .3s patientCard_fadeIn;
  display: flex;
}

.patientCard_main {
  flex: 1;
  min-width: 0;
}

.patientCard_identity {
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.patientCard_slip {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  padding: 2px var(--space-2);
  background: var(--accent-subtle);
  color: var(--accent-text);
}

.patientCard_name {
  font-size: var(--text-md);
  font-weight: var(--weight-bold);
  color: var(--text-primary);
}

.patientCard_demographics {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.patientCard_chips {
  gap: var(--space-1);
  flex-wrap: wrap;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.patientCard_chip {
  align-items: center;
  gap: var(--space-1);
  padding: 2px var(--space-2);
  font-size: var(--text-2xs);
  font-weight: var(--weight-medium);
  border: 1px solid #0000;
  display: inline-flex;
}

.patientCard_chipName {
  font-weight: var(--weight-semibold);
}

.patientCard_chipStatus {
  align-items: center;
  gap: 2px;
  display: inline-flex;
}

.patientCard_chipDone {
  background: var(--success-subtle);
  color: var(--success-text);
  border-color: var(--success-border);
}

.patientCard_chipProgress {
  background: var(--warning-subtle);
  color: var(--warning-text);
  border-color: var(--warning-border);
}

.patientCard_chipPending {
  background: var(--surface-sunken);
  color: var(--text-secondary);
  border-color: var(--border-default);
}

.patientCard_footnote {
  margin-top: var(--space-2);
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.patientCard_done {
  color: var(--success-text);
  font-weight: var(--weight-semibold);
}

.patientCard_actions {
  gap: var(--space-2);
  flex-shrink: 0;
  display: flex;
}

.patientCard_owing {
  margin: var(--space-1) 0 0;
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  color: var(--critical-text);
}


/* components/features/queue/queueHeader.module.css */
.queueHeader_bar {
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
  flex-wrap: wrap;
  display: flex;
}

.queueHeader_search {
  flex: 1;
  min-width: 200px;
  max-width: 300px;
}

.queueHeader_departments {
  margin-left: auto;
}

.queueHeader_tally {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  white-space: nowrap;
  margin: 0;
}

.queueHeader_tallyNumber {
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
  color: var(--text-primary);
}


/* components/features/queue/queueList.module.css */
.queueList_list {
  gap: var(--space-3);
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}


/* components/features/reception/DocumentPreview.module.css */
.DocumentPreview_switcher {
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border-subtle);
  background: var(--surface-raised);
  justify-content: center;
  display: flex;
}

.DocumentPreview_tray {
  padding: var(--space-5) var(--space-4);
  background: var(--surface-sunken);
  overscroll-behavior: contain;
  flex: auto;
  min-height: 0;
  overflow-y: auto;
}

.DocumentPreview_sheetPair {
  justify-content: center;
  gap: var(--space-5) var(--space-5);
  grid-template-columns: repeat(2, minmax(0, 320px));
  display: grid;
}

@media (width <= 720px) {
  .DocumentPreview_sheetPair {
    grid-template-columns: minmax(0, 320px);
  }
}

.DocumentPreview_sheet {
  gap: var(--space-2);
  flex-direction: column;
  width: 100%;
  min-width: 0;
  max-width: 320px;
  margin: 0 auto;
  display: flex;
}

.DocumentPreview_sheetCaption {
  align-items: baseline;
  gap: var(--space-1) var(--space-2);
  padding: 0 var(--space-1);
  font-size: var(--text-xs);
  flex-wrap: wrap;
  line-height: 1.4;
  display: flex;
}

.DocumentPreview_sheetOrdinal {
  border-radius: var(--radius-full);
  background: var(--accent-solid);
  width: 18px;
  height: 18px;
  color: var(--accent-solid-text);
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
  justify-content: center;
  align-self: center;
  align-items: center;
  display: inline-flex;
}

.DocumentPreview_sheetName {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.DocumentPreview_sheetHandoff {
  color: var(--text-muted);
}

.DocumentPreview_paper {
  color: #000;
  background: #fff;
  border: 1px solid #d5d8e0;
  width: 100%;
  max-width: 320px;
  margin: 0 auto;
  padding: 12px 14px;
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-size: 12px;
  line-height: 1.4;
  box-shadow: 0 2px 8px #0000001f;
}

.DocumentPreview_reportFrame {
  border-top: 1px solid var(--border-subtle);
  border-bottom: 1px solid var(--border-subtle);
  background: var(--surface-sunken);
  height: 45vh;
  min-height: 260px;
}

.DocumentPreview_reportFrame iframe {
  background: #fff;
  border: 0;
  width: 100%;
  height: 100%;
}

.DocumentPreview_picker {
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border-subtle);
  background: var(--surface-raised);
}

.DocumentPreview_pickerHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-2);
  display: flex;
}

.DocumentPreview_pickerLegend {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--text-muted);
  padding: 0;
}

.DocumentPreview_chips {
  gap: var(--space-2);
  border: 0;
  flex-wrap: wrap;
  min-width: 0;
  margin: 0;
  padding: 0;
  display: flex;
}

.DocumentPreview_chip {
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-3);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-full);
  background: var(--surface-raised);
  color: var(--text-secondary);
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  cursor: pointer;
  white-space: nowrap;
  transition: background-color var(--duration-fast) var(--ease-out),
    border-color var(--duration-fast) var(--ease-out),
    color var(--duration-fast) var(--ease-out);
  display: inline-flex;
}

.DocumentPreview_chip:hover {
  border-color: var(--border-strong);
  color: var(--text-primary);
}

.DocumentPreview_chip input {
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  position: absolute;
  overflow: hidden;
}

.DocumentPreview_chip:has(input:checked) {
  background: var(--accent-solid);
  border-color: var(--accent-solid);
  color: var(--accent-solid-text);
  font-weight: var(--weight-semibold);
}

.DocumentPreview_chip:has(input:focus-visible) {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: 2px;
}

.DocumentPreview_chipMark {
  border-radius: var(--radius-full);
  border: 1.5px solid;
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  width: 13px;
  height: 13px;
  font-size: 9px;
  line-height: 1;
  display: inline-flex;
}

.DocumentPreview_chip > span:last-child {
  flex-direction: column;
  display: inline-flex;
}

.DocumentPreview_packageOrigin {
  font-size: var(--text-2xs);
  font-weight: var(--weight-normal);
  opacity: .85;
}

.DocumentPreview_chip:has(input:checked) .DocumentPreview_chipMark {
  background: var(--accent-solid-text);
  color: var(--accent-solid);
  border-color: var(--accent-solid-text);
}

.DocumentPreview_pickerCount {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  margin: var(--space-2) 0 0;
}

.DocumentPreview_pickerEmpty {
  font-size: var(--text-xs);
  color: var(--critical-text);
  font-weight: var(--weight-medium);
  margin: var(--space-2) 0 0;
}

.DocumentPreview_head {
  text-align: center;
  border-bottom: 1px dashed #000;
  margin-bottom: 10px;
  padding-bottom: 8px;
}

.DocumentPreview_orgName {
  font-size: 16px;
  font-weight: bold;
  line-height: 1.2;
}

.DocumentPreview_orgLine2 {
  margin: 2px 0 4px;
  font-size: 11px;
  font-weight: bold;
}

.DocumentPreview_orgMeta {
  margin: 2px 0;
  font-size: 10px;
}

.DocumentPreview_docTitle {
  text-align: center;
  margin: 8px 0 10px;
  padding-bottom: 4px;
  font-size: 14px;
  font-weight: bold;
}

.DocumentPreview_docTitleRuled {
  border-bottom: 1px solid #000;
}

.DocumentPreview_copyTag {
  letter-spacing: .06em;
  text-align: center;
  text-transform: uppercase;
  border: 1px solid #000;
  margin: 0 0 10px;
  padding: 3px 6px;
  font-size: 10px;
  font-weight: bold;
}

.DocumentPreview_rows {
  margin-bottom: 10px;
  font-size: 12px;
  line-height: 1.6;
}

.DocumentPreview_rowsRuled {
  border-bottom: 1px dashed #000;
  padding-bottom: 8px;
}

.DocumentPreview_row {
  justify-content: space-between;
  gap: 8px;
  display: flex;
}

.DocumentPreview_rowLabel {
  font-weight: bold;
}

.DocumentPreview_rowValue {
  text-align: right;
  max-width: 60%;
}

.DocumentPreview_sectionTitle {
  border-bottom: 1px solid #000;
  margin-top: 10px;
  padding-bottom: 2px;
  font-size: 12px;
  font-weight: bold;
}

.DocumentPreview_docTable {
  border-collapse: collapse;
  width: 100%;
  margin-top: 4px;
  font-size: 12px;
}

.DocumentPreview_docTable th {
  text-align: left;
  border-bottom: 1px solid #000;
  padding: 3px 0;
  font-weight: 700;
}

.DocumentPreview_docTable td {
  border-bottom: 1px dashed #ccc;
  padding: 3px 0;
  font-size: 11px;
}

.DocumentPreview_docTable th.DocumentPreview_right, .DocumentPreview_docTable td.DocumentPreview_right {
  text-align: right;
}

.DocumentPreview_spec {
  color: #666;
  font-size: 9px;
}

.DocumentPreview_summary {
  border-top: 1px solid #000;
  margin-top: 10px;
  padding-top: 6px;
  font-size: 12px;
  line-height: 1.6;
}

.DocumentPreview_summaryStrong {
  border-bottom: 1px dashed #000;
  margin-bottom: 4px;
  padding-bottom: 4px;
  font-size: 13px;
  font-weight: bold;
}

.DocumentPreview_summaryNote {
  color: #555;
  font-size: 10px;
}

.DocumentPreview_upper {
  text-transform: uppercase;
}

.DocumentPreview_owing {
  color: #c0392b;
  font-weight: bold;
}

.DocumentPreview_foot {
  text-align: center;
  border-top: 1px dashed #000;
  margin-top: 14px;
  padding-top: 8px;
  font-size: 10px;
  line-height: 1.5;
}

.DocumentPreview_confirmWa {
  border-top: 1px dashed #000;
  align-items: center;
  gap: 8px;
  margin-top: 12px;
  padding-top: 10px;
  font-size: 10px;
  line-height: 1.35;
  display: flex;
}

.DocumentPreview_confirmQr {
  flex: 0 0 84px;
  width: 84px;
  height: 84px;
}

.DocumentPreview_confirmQr svg {
  width: 100%;
  height: 100%;
  display: block;
}


/* components/features/registration/billing.module.css */
.billing_panel {
  gap: var(--space-3);
  padding: var(--space-4);
  border-top: 1px solid var(--border-subtle);
  background: var(--surface-sunken);
  flex-direction: column;
  display: flex;
}

.billing_title {
  margin: 0 0 var(--space-1);
  padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--border-subtle);
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-text);
}

.billing_wallet {
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-md);
  background: var(--accent-subtle);
  flex-direction: column;
  display: flex;
}

.billing_walletHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2);
  display: flex;
}

.billing_walletTitle {
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
  color: var(--accent-text);
  display: inline-flex;
}

.billing_walletRow {
  justify-content: space-between;
  align-items: baseline;
  gap: var(--space-2);
  display: flex;
}

.billing_walletName {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.billing_walletBalance {
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  color: var(--accent-text);
  font-variant-numeric: tabular-nums;
}

.billing_line {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  display: flex;
}

.billing_lineLabel {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--text-secondary);
}

.billing_lineValue {
  font-size: var(--text-sm);
  font-weight: var(--weight-bold);
  color: var(--text-primary);
  font-variant-numeric: tabular-nums;
}

.billing_net {
  padding-top: var(--space-2);
  border-top: 1px dashed var(--border-default);
}

.billing_net .billing_lineLabel {
  font-size: var(--text-sm);
  color: var(--text-primary);
  font-weight: var(--weight-bold);
}

.billing_net .billing_lineValue {
  font-size: var(--text-lg);
  color: var(--accent-text);
}

.billing_note {
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  border: 1px solid;
}

.billing_note .billing_lineLabel, .billing_note .billing_lineValue {
  color: inherit;
}

.billing_noteDiscount {
  background: var(--critical-subtle);
  border-color: var(--critical-border);
  color: var(--critical-text);
}

.billing_noteDue {
  background: var(--warning-subtle);
  border-color: var(--warning-border);
  color: var(--warning-text);
}

.billing_noteCleared {
  background: var(--success-subtle);
  border-color: var(--success-border);
  color: var(--success-text);
}

.billing_noteCommission {
  background: var(--warning-subtle);
  border-color: var(--warning-border);
  color: var(--warning-text);
}

.billing_pair {
  gap: var(--space-2);
  grid-template-columns: 1fr 1fr;
  align-items: start;
  display: grid;
}

.billing_pairWide {
  grid-template-columns: 1.2fr 1fr;
}

.billing_stack {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.billing_cover {
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  margin: 0;
  display: flex;
}

.billing_coverOk {
  color: var(--success-text);
}

.billing_coverShort {
  color: var(--critical-text);
}

.billing_submit {
  margin-top: var(--space-1);
}

.billing_intent {
  padding-top: var(--space-2);
  border-top: 1px dashed var(--border-default);
}

.billing_intentOptions {
  gap: var(--space-1);
  display: grid;
}

@media (width >= 30rem) {
  .billing_intentOptions {
    gap: var(--space-2);
    grid-auto-columns: 1fr;
    grid-auto-flow: column;
    align-items: start;
  }
}

.billing_intentHint {
  margin: var(--space-1) 0 0;
  font-size: var(--text-xs);
  color: var(--text-muted);
}

.billing_intentError {
  margin: var(--space-1) 0 0;
  font-size: var(--text-xs);
  color: var(--critical-text);
}


/* components/features/registration/patientLookup.module.css */
.patientLookup_panel {
  padding: var(--space-3);
  background: var(--accent-subtle);
  border: 1px dashed var(--accent-border);
  border-radius: var(--radius-md);
  position: relative;
}

.patientLookup_box {
  position: relative;
}

.patientLookup_withClear {
  padding-right: var(--space-8);
}

.patientLookup_clear {
  right: var(--space-2);
  padding: var(--space-1);
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  cursor: pointer;
  background: none;
  border: none;
  align-items: center;
  display: flex;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

.patientLookup_clear:hover {
  color: var(--text-primary);
}

.patientLookup_clear:focus-visible {
  outline: 2px solid var(--focus-color);
  outline-offset: 1px;
}

.patientLookup_results {
  margin-top: var(--space-1);
  background: var(--surface-raised);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  overscroll-behavior: contain;
  max-height: 200px;
  z-index: var(--z-dropdown);
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  overflow-y: auto;
}

.patientLookup_resultList {
  margin: 0;
  padding: 0;
  list-style: none;
}

.patientLookup_result {
  width: 100%;
  padding: var(--space-2) var(--space-3);
  text-align: left;
  border: none;
  border-bottom: 1px solid var(--border-subtle);
  cursor: pointer;
  background: none;
  display: block;
}

.patientLookup_resultActive {
  background: var(--accent-subtle);
}

.patientLookup_result:focus-visible {
  outline: 2px solid var(--focus-color);
  outline-offset: -2px;
}

.patientLookup_resultName {
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  display: block;
}

.patientLookup_resultMeta {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  display: block;
}

.patientLookup_resultEmpty {
  padding: var(--space-3);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  text-align: center;
}

.patientLookup_loaded {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  font-size: var(--text-xs);
  background: var(--success-subtle);
  border: 1px solid var(--success-border);
  border-radius: var(--radius-md);
  color: var(--success-text);
  flex-wrap: wrap;
  display: flex;
}

.patientLookup_loadedMark {
  align-items: center;
  gap: var(--space-2);
  display: inline-flex;
}

.patientLookup_owing {
  align-items: flex-start;
  gap: var(--space-2);
  margin: var(--space-2) 0 0;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--warning-border);
  border-radius: var(--radius-sm);
  background: var(--warning-subtle);
  color: var(--warning-text);
  font-size: var(--text-xs);
  display: flex;
}

.patientLookup_owing b {
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
}


/* components/features/registration/quickAdd.module.css */
.quickAdd_body {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.quickAdd_pair {
  gap: var(--space-3);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

@media (width <= 480px) {
  .quickAdd_pair {
    grid-template-columns: 1fr;
  }
}

.quickAdd_actions {
  justify-content: flex-end;
  gap: var(--space-2);
  padding-top: var(--space-2);
  border-top: 1px solid var(--border-default);
  display: flex;
}


/* components/features/registration/referral.module.css */
.referral_grid {
  gap: var(--space-3);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

@media (width <= 640px) {
  .referral_grid {
    grid-template-columns: 1fr;
  }
}

.referral_picker {
  position: relative;
}

.referral_chosen {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-2);
  padding: var(--space-2) var(--space-3);
  background: var(--accent-subtle);
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-sm);
  font-size: var(--text-sm);
  color: var(--text-primary);
  display: flex;
}

.referral_results {
  margin-top: var(--space-1);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-dropdown);
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  overflow: hidden;
}

.referral_resultList {
  overscroll-behavior: contain;
  max-height: 12.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
  overflow-y: auto;
}

.referral_option {
  width: 100%;
  padding: var(--space-2) var(--space-3);
  text-align: left;
  border: none;
  border-bottom: 1px solid var(--border-subtle);
  cursor: pointer;
  font: inherit;
  color: var(--text-primary);
  background: none;
  flex-direction: column;
  gap: 2px;
  display: flex;
}

.referral_option:last-child {
  border-bottom: none;
}

.referral_option:hover, .referral_optionActive {
  background: var(--accent-subtle);
}

.referral_optionName {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
}

.referral_optionMeta {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.referral_optionFree {
  font-size: var(--text-sm);
  color: var(--text-secondary);
  font-style: italic;
}

.referral_special {
  border-top: 1px solid var(--border-default);
  background: var(--surface-sunken);
}

.referral_empty {
  padding: var(--space-2) var(--space-3);
  font-size: var(--text-xs);
  color: var(--text-muted);
}


/* components/features/registration/registrationForm.module.css */
.registrationForm_three {
  gap: var(--space-3);
  grid-template-columns: 1fr 1fr 1fr;
  display: grid;
}

.registrationForm_two {
  gap: var(--space-3);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

@media (width <= 560px) {
  .registrationForm_three, .registrationForm_two {
    grid-template-columns: 1fr;
  }
}


/* components/features/registration/registrationTab.module.css */
.registrationTab_desk {
  gap: var(--space-6);
  grid-template-columns: 1fr .9fr;
  align-items: start;
  display: grid;
}

@media (width <= 900px) {
  .registrationTab_desk {
    grid-template-columns: 1fr;
  }
}

.registrationTab_basket {
  top: var(--space-6);
  flex-direction: column;
  display: flex;
  position: sticky;
}

@media (width <= 900px) {
  .registrationTab_basket {
    position: static;
  }
}

.registrationTab_fields {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.registrationTab_basketSkeleton {
  gap: var(--space-4);
  padding: var(--space-5);
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  top: var(--space-6);
  flex-direction: column;
  display: flex;
  position: sticky;
}

@media (width <= 900px) {
  .registrationTab_basketSkeleton {
    position: static;
  }
}

.registrationTab_basketSkeletonHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  display: flex;
}

.registrationTab_basketSkeletonTotals {
  gap: var(--space-3);
  padding-top: var(--space-4);
  border-top: 1px solid var(--border-subtle);
  flex-direction: column;
  display: flex;
}


/* components/features/registration/testSearchPicker.module.css */
.testSearchPicker_panel {
  gap: var(--space-3);
  padding-top: var(--space-4);
  border-top: 1px solid var(--border-default);
  flex-direction: column;
  display: flex;
}

.testSearchPicker_heading {
  margin: 0 0 var(--space-1);
  font-size: var(--text-md);
  font-weight: var(--weight-bold);
  color: var(--text-primary);
}

.testSearchPicker_hint {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  margin: 0;
}

.testSearchPicker_list {
  gap: var(--space-2);
  overscroll-behavior: contain;
  flex-direction: column;
  max-height: 280px;
  display: flex;
  overflow-y: auto;
}

.testSearchPicker_row {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  padding: var(--space-3);
  text-align: left;
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  cursor: pointer;
  display: flex;
}

.testSearchPicker_row:hover {
  border-color: var(--border-strong);
}

.testSearchPicker_row:focus-visible {
  outline: 2px solid var(--focus-color);
  outline-offset: 1px;
}

.testSearchPicker_rowChosen {
  background: var(--accent-subtle);
  border-color: var(--accent-border);
}

.testSearchPicker_rowMain {
  gap: var(--space-1);
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.testSearchPicker_rowName {
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.testSearchPicker_rowMeta {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  flex-wrap: wrap;
  display: flex;
}

.testSearchPicker_packageContents {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  line-height: var(--leading-normal);
}

.testSearchPicker_action {
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
  color: var(--text-secondary);
  flex-shrink: 0;
  display: inline-flex;
}

.testSearchPicker_rowChosen .testSearchPicker_action {
  color: var(--accent-text);
}

.testSearchPicker_empty {
  padding: var(--space-4);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  border: 1px dashed var(--border-strong);
}


/* components/features/registration/testSelection.module.css */
.testSelection_header {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  background: var(--accent-solid);
  color: var(--accent-solid-text);
  display: flex;
}

.testSelection_title {
  font-family: var(--font-display);
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  margin: 0;
}

.testSelection_count {
  margin: var(--space-1) 0 0;
  font-size: var(--text-xs);
  color: var(--accent-solid-text);
  opacity: .85;
}

.testSelection_clear {
  color: var(--accent-solid-text);
  cursor: pointer;
  padding: var(--space-1) var(--space-3);
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  border-radius: var(--radius-none);
  background: #ffffff29;
  border: none;
  flex-shrink: 0;
}

.testSelection_clear:hover {
  background: #ffffff42;
}

.testSelection_clear:focus-visible {
  outline: 2px solid var(--accent-solid-text);
  outline-offset: 2px;
}

.testSelection_body {
  padding: var(--space-4);
  background: var(--surface-sunken);
  flex-direction: column;
  display: flex;
}

.testSelection_list {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.testSelection_row {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3);
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-left: 3px solid var(--border-default);
  display: flex;
}

.testSelection_rowLab {
  border-left-color: var(--accent-solid);
}

.testSelection_rowRadiology {
  border-left-color: var(--info-solid);
}

.testSelection_rowMain {
  flex: 1;
  min-width: 0;
}

.testSelection_rowName {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.testSelection_rowMeta {
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-1);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  display: flex;
}

.testSelection_packageContents {
  margin-top: var(--space-2);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  line-height: var(--leading-normal);
}

.testSelection_rowSide {
  align-items: center;
  gap: var(--space-3);
  flex-shrink: 0;
  display: flex;
}

.testSelection_price {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--accent-text);
  font-variant-numeric: tabular-nums;
}

.testSelection_remove {
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  width: 30px;
  height: 30px;
  color: var(--text-secondary);
  cursor: pointer;
  border-radius: var(--radius-none);
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.testSelection_remove:hover {
  background: var(--surface-hover);
  color: var(--text-primary);
}

.testSelection_remove:focus-visible {
  outline: 2px solid var(--focus-color);
  outline-offset: 1px;
}

.testSelection_empty {
  flex-direction: column;
  justify-content: center;
  min-height: 200px;
  display: flex;
}


/* components/features/reports/TrendChart.module.css */
.TrendChart_chart {
  width: 100%;
  overflow-x: auto;
}

.TrendChart_chartSvg {
  width: 100%;
  min-width: 460px;
  height: auto;
  display: block;
  overflow: visible;
}

.TrendChart_gridLine {
  stroke: var(--border-subtle);
  stroke-width: 1px;
}

.TrendChart_axisLabel {
  fill: var(--text-muted);
  font-size: 8px;
  font-weight: var(--weight-semibold);
}

.TrendChart_trendLine {
  fill: none;
  stroke: var(--accent-solid);
  stroke-width: 1.25px;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 1;
  stroke-dashoffset: 0;
  animation: TrendChart_drawLine .65s var(--ease-out) both;
  vector-effect: non-scaling-stroke;
}

.TrendChart_trendArea {
  animation: TrendChart_revealArea .5s var(--ease-out) .18s both;
}

.TrendChart_node {
  fill: var(--accent-solid);
  stroke: var(--surface-raised);
  stroke-width: 2px;
  paint-order: stroke;
  transition: r var(--duration-fast) var(--ease-out),
    stroke-width var(--duration-fast) var(--ease-out);
}

.TrendChart_nodeHalo {
  fill: none;
  stroke: var(--accent-solid);
  stroke-width: 1px;
  opacity: 0;
  transition: opacity var(--duration-fast) var(--ease-out);
}

.TrendChart_hit {
  fill: #0000;
  cursor: crosshair;
}

.TrendChart_point:hover .TrendChart_node, .TrendChart_point:focus .TrendChart_node {
  r: 4;
  stroke-width: 2.5px;
}

.TrendChart_point:hover .TrendChart_nodeHalo, .TrendChart_point:focus .TrendChart_nodeHalo {
  opacity: .35;
}

.TrendChart_point:focus {
  outline: none;
}

.TrendChart_guide {
  stroke: var(--border-strong);
  stroke-width: 1px;
  stroke-dasharray: 2 3;
}

.TrendChart_tooltip {
  pointer-events: none;
  animation: TrendChart_tooltipIn var(--duration-fast) var(--ease-out) both;
}

.TrendChart_tooltipBox {
  fill: var(--surface-overlay);
  stroke: var(--border-default);
  stroke-width: 1px;
  filter: drop-shadow(0 3px 5px #0f172a24);
}

.TrendChart_tooltipDate, .TrendChart_tooltipValue {
  fill: var(--text-secondary);
  font-family: var(--font-body);
  font-size: 8px;
}

.TrendChart_tooltipValue {
  fill: var(--text-primary);
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
}

.TrendChart_fillTop {
  stop-color: var(--accent-solid);
  stop-opacity: .18;
}

.TrendChart_fillBottom {
  stop-color: var(--accent-solid);
  stop-opacity: 0;
}

@keyframes TrendChart_drawLine {
  from {
    stroke-dashoffset: 1px;
  }

  to {
    stroke-dashoffset: 0;
  }
}

@keyframes TrendChart_revealArea {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes TrendChart_tooltipIn {
  from {
    opacity: 0;
    transform: translateY(2px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .TrendChart_trendLine, .TrendChart_trendArea, .TrendChart_tooltip {
    animation: none;
  }

  .TrendChart_node, .TrendChart_nodeHalo {
    transition: none;
  }
}


/* components/features/reports/performance.module.css */
.performance_page {
  gap: var(--space-6);
  flex-direction: column;
  display: flex;
}

.performance_toolbar {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  flex-wrap: wrap;
  display: flex;
}

.performance_eyebrow {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--accent-text);
  margin: 0;
}

.performance_title {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 2px 0 0;
}

.performance_toolbarControls {
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.performance_cardTitle {
  align-items: center;
  gap: var(--space-2);
  display: inline-flex;
}

.performance_kpis {
  gap: var(--space-4);
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  display: grid;
}

.performance_split {
  gap: var(--space-6);
  grid-template-columns: minmax(0, 1.8fr) minmax(0, 1fr);
  align-items: start;
  display: grid;
}

@media (width <= 1100px) {
  .performance_split {
    grid-template-columns: minmax(0, 1fr);
  }
}

.performance_side {
  gap: var(--space-5);
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.performance_leaderControls {
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.performance_rank, .performance_rankTop {
  font-weight: var(--weight-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
}

.performance_rankTop {
  color: var(--warning-text);
}

.performance_person {
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  display: inline-flex;
}

.performance_avatar {
  border-radius: var(--radius-full);
  background: hsl(var(--avatar-hue, 210) 55% 34%);
  color: #fff;
  width: 26px;
  height: 26px;
  font-size: var(--text-2xs);
  font-weight: var(--weight-bold);
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.performance_depts {
  gap: var(--space-4);
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.performance_deptHead {
  justify-content: space-between;
  gap: var(--space-3);
  margin-bottom: var(--space-1);
  font-size: var(--text-xs);
  display: flex;
}

.performance_deptName {
  font-weight: var(--weight-semibold);
  text-transform: capitalize;
  color: var(--text-secondary);
}

.performance_deptValue {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  font-variant-numeric: tabular-nums;
}

.performance_bar {
  border-radius: var(--radius-full);
  background: var(--surface-sunken);
  width: 100%;
  height: 6px;
  overflow: hidden;
}

.performance_barFill {
  border-radius: var(--radius-full);
  background: var(--accent-solid);
  height: 100%;
  display: block;
}

.performance_barFill[data-dept="lab"] {
  background: var(--success-solid);
}

.performance_barFill[data-dept="radiology"] {
  background: var(--info-solid);
}

.performance_log {
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.performance_logItem {
  gap: var(--space-3);
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
}

.performance_logItem:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}

.performance_logMark {
  border-radius: var(--radius-full);
  background: var(--success-subtle);
  width: 24px;
  height: 24px;
  color: var(--success-text);
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.performance_logText {
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.performance_logTitle {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.performance_logMeta {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}


/* components/features/reports/reconciliation.module.css */
.reconciliation_page {
  gap: var(--space-6);
  flex-direction: column;
  display: flex;
}

.reconciliation_toolbar {
  justify-content: flex-end;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.reconciliation_figures {
  gap: var(--space-4);
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  display: grid;
}

.reconciliation_split {
  gap: var(--space-6);
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  display: grid;
}

.reconciliation_cardTitle {
  align-items: center;
  gap: var(--space-2);
  display: inline-flex;
}

.reconciliation_panel {
  padding: var(--space-4);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  background: var(--surface-raised);
}

.reconciliation_page[data-refreshing] {
  opacity: .85;
}

@media (width <= 1100px) {
  .reconciliation_split {
    grid-template-columns: minmax(0, 1fr);
  }
}


/* components/features/settings/appearanceSettings.module.css */
.appearanceSettings_groups {
  gap: var(--space-8);
  display: grid;
}

.appearanceSettings_legend {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: var(--space-3);
}

.appearanceSettings_themeGrid {
  gap: var(--space-3);
  border: 0;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  margin: 0;
  padding: 0;
  display: grid;
}

.appearanceSettings_theme {
  gap: var(--space-3);
  padding: var(--space-3);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--surface-raised);
  cursor: pointer;
  transition: border-color var(--duration-fast) var(--ease-out),
    box-shadow var(--duration-fast) var(--ease-out);
  flex-direction: column;
  display: flex;
  position: relative;
}

.appearanceSettings_theme:hover {
  border-color: var(--border-strong);
}

.appearanceSettings_theme[data-selected], .appearanceSettings_theme:has(input:checked) {
  border-color: var(--accent-solid);
  box-shadow: 0 0 0 1px var(--accent-solid);
}

.appearanceSettings_theme:has(input:focus-visible) {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.appearanceSettings_theme input {
  opacity: 0;
  pointer-events: none;
  width: 1px;
  height: 1px;
  margin: 0;
  position: absolute;
}

.appearanceSettings_theme[data-theme-id="sage"] {
  --preview-page: #f2efe8;
  --preview-ink: #2f2f2f;
  --preview-accent: #1f5c4a;
}

.appearanceSettings_theme[data-theme-id="evergreen"] {
  --preview-page: #17181a;
  --preview-ink: #f3f3f1;
  --preview-accent: #4fa98a;
}

.appearanceSettings_theme[data-theme-id="clinical"] {
  --preview-page: #f7f8fa;
  --preview-ink: #20232b;
  --preview-accent: #28448a;
}

.appearanceSettings_theme[data-theme-id="midnight"] {
  --preview-page: #0d1017;
  --preview-ink: #e6e9f0;
  --preview-accent: #3f6cc4;
}

.appearanceSettings_preview {
  align-items: center;
  gap: var(--space-2);
  height: 46px;
  padding: 0 var(--space-3);
  border-radius: var(--radius-sm);
  border: 1px solid var(--border-subtle);
  background: var(--preview-page);
  display: flex;
}

.appearanceSettings_previewLines {
  flex: 1;
  gap: 5px;
  display: grid;
}

.appearanceSettings_previewLine {
  background: var(--preview-ink);
  height: 4px;
}

.appearanceSettings_previewLine:first-child {
  opacity: .85;
  width: 70%;
}

.appearanceSettings_previewLine:last-child {
  opacity: .4;
  width: 45%;
}

.appearanceSettings_previewChip {
  background: var(--preview-accent);
  width: 26px;
  height: 14px;
}

.appearanceSettings_themeName {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  display: flex;
}

.appearanceSettings_themeIcon {
  color: var(--text-muted);
  display: inline-flex;
}

.appearanceSettings_theme[data-selected] .appearanceSettings_themeIcon, .appearanceSettings_theme:has(input:checked) .appearanceSettings_themeIcon {
  color: var(--accent-text);
}

.appearanceSettings_themeHint {
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
  color: var(--text-muted);
}

.appearanceSettings_systemCard {
  align-items: center;
  gap: var(--space-3);
  flex-direction: row;
  grid-column: 1 / -1;
}

.appearanceSettings_systemCard .appearanceSettings_themeHint {
  margin-top: 2px;
}

.appearanceSettings_systemIcon {
  border-radius: var(--radius-sm);
  background: var(--surface-sunken);
  width: 34px;
  height: 34px;
  color: var(--text-secondary);
  flex: none;
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.appearanceSettings_theme[data-selected] .appearanceSettings_systemIcon, .appearanceSettings_theme:has(input:checked) .appearanceSettings_systemIcon {
  background: var(--accent-subtle);
  color: var(--accent-subtle-text);
}


/* components/features/settings/passwordSettings.module.css */
.passwordSettings_form {
  gap: var(--space-5);
  flex-direction: column;
  display: flex;
}

.passwordSettings_fields {
  gap: var(--space-4);
  border: 0;
  flex-direction: column;
  min-width: 0;
  margin: 0;
  padding: 0;
  display: flex;
}

.passwordSettings_pair {
  gap: var(--space-4);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

.passwordSettings_actions {
  gap: var(--space-3);
  flex-wrap: wrap;
  align-items: center;
  display: flex;
}

@media (width <= 520px) {
  .passwordSettings_pair {
    grid-template-columns: 1fr;
  }
}


/* components/features/settings/signatureField.module.css */
.signatureField_field {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.signatureField_label {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.signatureField_optional {
  font-weight: var(--weight-normal);
  color: var(--text-muted);
}

.signatureField_description {
  font-size: var(--text-sm);
  color: var(--text-muted);
  line-height: var(--leading-normal);
  margin: 0 0 var(--space-2);
  max-width: 60ch;
}

.signatureField_locked {
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--surface-sunken);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  flex-direction: column;
  display: flex;
}

.signatureField_preview {
  object-fit: contain;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  max-width: 240px;
  max-height: 64px;
  padding: var(--space-2) var(--space-3);
  background: #fff;
  display: block;
}

.signatureField_none {
  font-size: var(--text-sm);
  color: var(--text-muted);
}

.signatureField_lockedActions {
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.signatureField_inline {
  align-items: flex-start;
  gap: var(--space-3);
  flex-direction: column;
  display: flex;
}

.signatureField_sheet {
  flex-direction: column;
  display: flex;
}

.signatureField_sheet > * {
  max-width: none;
}


/* components/features/today/today.module.css */
.today_page {
  max-width: 1280px;
  padding: var(--space-6);
  gap: var(--space-5);
  flex-direction: column;
  margin: 0 auto;
  display: flex;
}

.today_page > * {
  min-width: 0;
}

.today_row {
  gap: var(--space-4);
  grid-template-columns: repeat(4, minmax(0, 1fr));
  display: grid;
}

.today_rowFive {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.today_twoUp {
  gap: var(--space-5);
  grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
  align-items: start;
  display: grid;
}

.today_sectionHead {
  justify-content: space-between;
  align-items: baseline;
  gap: var(--space-3);
  margin: 0 0 var(--space-3);
  display: flex;
}

.today_sectionTitle {
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 0;
}

.today_sectionMeta, .today_truncNote, .today_stale {
  font-size: var(--text-xs);
  color: var(--text-muted);
}

.today_inbox {
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.today_inboxRow {
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4) var(--space-3) 0;
  border-bottom: 1px solid var(--border-subtle);
  grid-template-columns: 4px minmax(0, 1fr) auto;
  align-items: center;
  display: grid;
}

.today_inboxRow:last-child {
  border-bottom: 0;
}

.today_sev {
  border-radius: var(--radius-full);
  background: var(--border-default);
  align-self: stretch;
}

.today_sev3 {
  background: var(--critical-solid);
}

.today_sev2 {
  background: var(--warning-solid);
}

.today_sev1 {
  background: var(--info-solid);
}

.today_sev0 {
  background: var(--border-strong);
}

.today_inboxText {
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  display: flex;
}

.today_inboxTitle {
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  overflow-wrap: anywhere;
  text-decoration: none;
}

.today_inboxTitle:hover {
  color: var(--text-link);
  text-decoration: underline;
}

.today_inboxDetail {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.today_inboxAct {
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
  display: flex;
}

.today_sevWord {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--text-muted);
}

.today_allClear {
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-5) var(--space-4);
  color: var(--success-text);
  font-size: var(--text-md);
  display: flex;
}

.today_floor {
  gap: var(--space-3);
  flex-direction: column;
  display: flex;
}

.today_floorCard {
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  background: var(--surface-raised);
  color: inherit;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  text-decoration: none;
  display: grid;
}

.today_floorCard:hover {
  border-color: var(--border-default);
  background: var(--surface-hover);
}

.today_floorCard:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.today_floorName {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  display: flex;
}

.today_floorOldest {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  margin-top: 2px;
}

.today_floorOldestLong {
  color: var(--warning-text);
}

.today_floorNums {
  gap: var(--space-4);
  display: flex;
}

.today_floorNum {
  flex-direction: column;
  align-items: flex-end;
  min-width: 3.5em;
  display: flex;
}

.today_floorFigure {
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  color: var(--text-primary);
  line-height: 1;
}

.today_floorLabel {
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--text-muted);
  margin-top: 2px;
}

.today_depts {
  gap: var(--space-3);
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.today_deptHead {
  justify-content: space-between;
  gap: var(--space-3);
  font-size: var(--text-sm);
  margin-bottom: var(--space-1);
  display: flex;
}

.today_deptName {
  color: var(--text-primary);
  font-weight: var(--weight-medium);
}

.today_deptValue {
  color: var(--text-secondary);
  font-variant-numeric: tabular-nums;
}

.today_bar {
  border-radius: var(--radius-full);
  background: var(--surface-sunken);
  height: 6px;
  overflow: hidden;
}

.today_barSvg {
  width: 100%;
  height: 100%;
  display: block;
}

.today_barFill {
  fill: var(--accent-solid);
}

.today_barFill[data-dept="radiology"] {
  fill: var(--info-solid);
}

.today_muted {
  color: var(--text-muted);
}

@media (width <= 1024px) {
  .today_row, .today_rowFive {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .today_twoUp {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (width <= 560px) {
  .today_page {
    padding: var(--space-4);
    gap: var(--space-4);
  }

  .today_row, .today_rowFive {
    gap: var(--space-3);
  }

  .today_inboxRow {
    grid-template-columns: 4px minmax(0, 1fr);
  }

  .today_inboxAct {
    grid-column: 2;
    justify-content: flex-start;
  }

  .today_floorNums {
    gap: var(--space-3);
  }
}


/* components/features/wallet/billingAccount.module.css */
.billingAccount_form {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.billingAccount_toggle {
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  background: var(--surface-sunken);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: background var(--duration-fast), border-color var(--duration-fast);
  display: flex;
}

.billingAccount_toggle:hover {
  border-color: var(--border-strong);
}

.billingAccount_toggleOn {
  background: var(--accent-subtle);
  border-color: var(--accent-border);
}

.billingAccount_toggle:focus-within {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.billingAccount_picker {
  position: relative;
}

.billingAccount_results {
  margin-top: var(--space-1);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-dropdown);
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  overflow: hidden;
}

.billingAccount_resultList {
  overscroll-behavior: contain;
  max-height: 11rem;
  margin: 0;
  padding: 0;
  list-style: none;
  overflow-y: auto;
}

.billingAccount_result {
  width: 100%;
  padding: var(--space-2) var(--space-3);
  text-align: left;
  border: none;
  border-bottom: 1px solid var(--border-subtle);
  cursor: pointer;
  font: inherit;
  color: var(--text-primary);
  background: none;
  flex-direction: column;
  gap: 2px;
  display: flex;
}

.billingAccount_result:last-child {
  border-bottom: none;
}

.billingAccount_result:hover, .billingAccount_resultActive {
  background: var(--accent-subtle);
}

.billingAccount_resultName {
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
}

.billingAccount_resultMeta {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.billingAccount_resultEmpty {
  padding: var(--space-3);
  text-align: center;
  font-size: var(--text-xs);
  color: var(--text-muted);
}

.billingAccount_pager {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  background: var(--surface-sunken);
  border-top: 1px solid var(--border-subtle);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  display: flex;
}

.billingAccount_chosen {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-2);
  padding: var(--space-2) var(--space-3);
  background: var(--accent-subtle);
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-sm);
  font-size: var(--text-sm);
  color: var(--text-primary);
  display: flex;
}

.billingAccount_newPerson {
  gap: var(--space-3);
  padding: var(--space-3);
  background: var(--accent-subtle);
  border: 1px solid var(--accent-border);
  border-radius: var(--radius-md);
  flex-direction: column;
  display: flex;
}

.billingAccount_sectionTitle {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.billingAccount_dependants {
  gap: var(--space-3);
  flex-direction: column;
  display: flex;
}

.billingAccount_dependantsHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2);
  display: flex;
}

.billingAccount_dependant {
  gap: var(--space-3);
  padding: var(--space-3);
  background: var(--surface-sunken);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  flex-direction: column;
  display: flex;
}

.billingAccount_dependantHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2);
  display: flex;
}

.billingAccount_dependantLabel {
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
}


/* components/features/wallet/ledger.module.css */
.ledger_layout {
  gap: var(--space-5);
  grid-template-columns: minmax(280px, 4fr) minmax(0, 6fr);
  align-items: start;
  display: grid;
}

@media (width <= 900px) {
  .ledger_layout {
    grid-template-columns: minmax(0, 1fr);
  }
}

.ledger_panel {
  gap: var(--space-4);
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.ledger_main {
  min-width: 0;
}

.ledger_form {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.ledger_balanceLabel {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
  margin: 0;
}

.ledger_balance, .ledger_balanceOwing {
  margin: var(--space-1) 0 var(--space-4);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  font-variant-numeric: tabular-nums;
  color: var(--success-text);
  line-height: 1.1;
}

.ledger_balanceOwing {
  color: var(--critical-text);
}

.ledger_accountFacts {
  gap: var(--space-2);
  padding-top: var(--space-3);
  border-top: 1px solid var(--border-subtle);
  flex-direction: column;
  margin: 0;
  display: flex;
}

.ledger_accountFact {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  font-size: var(--text-sm);
  display: flex;
}

.ledger_accountFact dt {
  color: var(--text-secondary);
}

.ledger_accountFact dd {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  font-variant-numeric: tabular-nums;
  margin: 0;
}

.ledger_limitValue, .ledger_limitEdit {
  align-items: center;
  gap: var(--space-2);
  display: inline-flex;
}

.ledger_limitEdit > :first-child {
  width: 110px;
}

.ledger_capitalise {
  text-transform: capitalize;
}

.ledger_members {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.ledger_membersHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.ledger_sectionTitle {
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 0;
}

.ledger_membersActions {
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.ledger_inlineForm {
  align-items: flex-end;
  gap: var(--space-2);
  padding: var(--space-4);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  display: flex;
}

.ledger_grow {
  flex: 1;
  min-width: 0;
}

.ledger_registerForm {
  gap: var(--space-4);
  padding: var(--space-4);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  flex-direction: column;
  display: flex;
}

.ledger_registerGrid {
  gap: var(--space-3);
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  display: grid;
}

.ledger_formActions {
  justify-content: flex-end;
  gap: var(--space-2);
  display: flex;
}

.ledger_memberList {
  margin: 0;
  padding: 0;
  list-style: none;
}

.ledger_member {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
}

.ledger_member:last-child {
  border-bottom: 0;
}

.ledger_memberText {
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  display: flex;
}

.ledger_memberName {
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.ledger_memberMeta {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-xs);
  font-family: var(--font-mono);
  color: var(--text-secondary);
  display: inline-flex;
}

.ledger_statement {
  gap: var(--space-2);
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.ledger_entry {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: var(--surface-sunken);
  display: flex;
}

.ledger_entry[data-reversed] .ledger_entryDescription {
  color: var(--text-muted);
  text-decoration: line-through;
}

.ledger_entryText {
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  display: flex;
}

.ledger_entryDescription {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.ledger_entryMeta {
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-2xs);
  color: var(--text-secondary);
  flex-wrap: wrap;
  display: inline-flex;
}

.ledger_entryRight {
  align-items: center;
  gap: var(--space-3);
  flex-shrink: 0;
  display: flex;
}

.ledger_credit, .ledger_debit {
  font-weight: var(--weight-bold);
  font-size: var(--text-md);
  font-variant-numeric: tabular-nums;
  color: var(--success-text);
}

.ledger_debit {
  color: var(--critical-text);
}

.ledger_limitField {
  align-items: flex-end;
  gap: var(--space-1);
  flex-direction: column;
  display: inline-flex;
}

.ledger_limitError {
  font-size: var(--text-xs);
  color: var(--critical-text);
}

.ledger_limitSaved {
  animation: ledger_limitSaved 1.2s var(--ease-out, ease-out) 1;
  border-radius: var(--radius-sm);
}

@keyframes ledger_limitSaved {
  0%, 60% {
    background: var(--surface-selected);
  }

  100% {
    background: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ledger_limitSaved {
    animation: none;
  }
}


/* components/features/wallet/walletTab.module.css */
.walletTab_search {
  min-width: 240px;
}

.walletTab_skeletonToolbar {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
}

.walletTab_accountName {
  font-weight: var(--weight-semibold);
}

.walletTab_balance {
  align-items: baseline;
  gap: var(--space-1);
  font-weight: var(--weight-semibold);
  color: var(--success-text);
  display: inline-flex;
}

.walletTab_balanceOwing {
  color: var(--critical-text);
}

.walletTab_owing {
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
}


/* components/features/whatsapp/whatsapp.module.css */
.whatsapp_panel {
  gap: var(--space-5);
  display: grid;
}

.whatsapp_lead {
  color: var(--text-secondary);
  max-width: 70ch;
  margin: 0;
}

.whatsapp_hint {
  font-size: var(--text-sm);
  color: var(--text-muted);
  margin: 0;
}

.whatsapp_connectRow {
  gap: var(--space-2);
  flex-wrap: wrap;
  align-items: center;
  display: flex;
}

.whatsapp_header {
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.whatsapp_number {
  margin: 0 0 var(--space-1);
  font-weight: var(--weight-medium);
  color: var(--text-primary);
}

.whatsapp_stats {
  gap: var(--space-3);
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  display: grid;
}

.whatsapp_twoCol {
  gap: var(--space-3);
  grid-template-columns: 1fr 1fr;
  display: grid;
}

.whatsapp_section {
  gap: var(--space-3);
  display: grid;
}

.whatsapp_sectionHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  display: flex;
}

.whatsapp_sectionTitle {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
  margin: 0;
}

.whatsapp_templates {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  margin: 0;
  padding: 0;
  list-style: none;
}

.whatsapp_template {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border-top: 1px solid var(--border-subtle);
  font-size: var(--text-sm);
  display: flex;
}

.whatsapp_template:first-child {
  border-top: 0;
}

.whatsapp_templateStatus {
  align-items: center;
  gap: var(--space-2);
  text-align: right;
  display: flex;
}

.whatsapp_templateCard {
  gap: var(--space-2);
  padding: var(--space-3);
  border-top: 1px solid var(--border-subtle);
  font-size: var(--text-sm);
  display: grid;
}

.whatsapp_templateCard:first-child {
  border-top: 0;
}

.whatsapp_templateTop {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.whatsapp_templateName {
  font-weight: var(--weight-medium);
}

.whatsapp_templateMeta {
  font-size: var(--text-xs);
  color: var(--text-muted);
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
  margin: 0;
}

.whatsapp_templateBody {
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  background: var(--surface-sunken);
  margin: 0;
  line-height: 1.5;
}

.whatsapp_sample {
  font-weight: var(--weight-medium);
}

@media (width <= 640px) {
  .whatsapp_twoCol {
    grid-template-columns: 1fr;
  }
}


/* components/letterheadPreview.module.css */
.letterheadPreview_figure {
  margin: 0;
}

.letterheadPreview_desk {
  padding: var(--space-5);
  overscroll-behavior: contain;
  background: var(--surface-sunken);
  border: 1px solid var(--border-default);
  justify-content: center;
  display: flex;
  overflow: auto;
}

.letterheadPreview_sheet {
  box-sizing: border-box;
  box-shadow: var(--shadow-lg);
  background: #fff;
  position: relative;
}

.letterheadPreview_guide {
  pointer-events: none;
  border-color: var(--border-strong);
  border-style: dashed;
  position: absolute;
}

.letterheadPreview_guideLabel {
  font-family: var(--font-sans);
  font-size: var(--text-xs);
  color: var(--text-muted);
  pointer-events: none;
  position: absolute;
}

.letterheadPreview_clearArea {
  border: 1px dashed var(--accent-solid);
  pointer-events: none;
  position: absolute;
}

.letterheadPreview_clearAreaLabel {
  font-family: var(--font-sans);
  font-size: var(--text-xs);
  color: var(--accent-solid);
  position: absolute;
  top: -18px;
  left: 0;
}

.letterheadPreview_continues {
  text-align: center;
  font-size: 9pt;
  font-family: var(--font-sans);
  color: #64748b;
  margin-top: 18px;
}

.letterheadPreview_caption {
  padding: var(--space-2) var(--space-3);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-top: none;
}

.letterheadPreview_footerZone {
  pointer-events: none;
  border-top: 1px dashed var(--border-strong);
  background: color-mix(in srgb, var(--surface-sunken) 45%, transparent);
  position: absolute;
}


/* components/shell/Shell.module.css */
.Shell_shell {
  background: var(--surface-page);
  grid-template-columns: auto 1fr;
  min-height: 100dvh;
  display: grid;
}

.Shell_main {
  flex-direction: column;
  min-width: 0;
  min-height: 100dvh;
  display: flex;
}

.Shell_content {
  min-width: 0;
  padding: var(--space-5);
  flex: auto;
}

.Shell_contentFlush {
  flex: auto;
  min-width: 0;
}

.Shell_rail {
  font-family: var(--font-body-full);
  background: var(--surface-raised);
  border-right: 1px solid var(--border-subtle);
  width: 216px;
  height: 100dvh;
  z-index: var(--z-sticky);
  transition: width var(--duration-normal) var(--ease-out);
  flex-direction: column;
  flex-shrink: 0;
  display: flex;
  position: sticky;
  top: 0;
}

.Shell_railCollapsed {
  width: 56px;
}

.Shell_brand {
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-3);
  border-bottom: 1px solid var(--border-subtle);
  min-height: 56px;
  display: flex;
  overflow: hidden;
}

.Shell_brandIcon {
  border-radius: var(--radius-sm);
  flex-shrink: 0;
  display: block;
}

.Shell_brandLockup {
  max-width: 148px;
}

.Shell_brandText {
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  display: flex;
}

.Shell_brandMeta {
  font-size: var(--text-2xs);
  color: var(--text-muted);
  white-space: nowrap;
  text-overflow: ellipsis;
  text-transform: capitalize;
  overflow: hidden;
}

.Shell_nav {
  overscroll-behavior: contain;
  padding: var(--space-2) var(--space-2);
  flex-direction: column;
  flex: auto;
  gap: 2px;
  display: flex;
  overflow: hidden auto;
}

.Shell_navGroup {
  padding: var(--space-3) var(--space-2) var(--space-1);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
  white-space: nowrap;
}

.Shell_navItem {
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-2);
  border-radius: var(--radius-md);
  cursor: pointer;
  text-align: left;
  width: 100%;
  min-height: 34px;
  font-family: var(--font-body-full);
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  color: var(--text-secondary);
  white-space: nowrap;
  transition: background-color var(--duration-fast) var(--ease-out),
    color var(--duration-fast) var(--ease-out);
  background: none;
  border: 0;
  text-decoration: none;
  display: flex;
  overflow: hidden;
}

.Shell_navItem:hover {
  background: var(--surface-hover);
  color: var(--text-primary);
}

.Shell_navItem:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -2px;
}

.Shell_navItemActive {
  background: var(--accent-subtle);
  color: var(--accent-subtle-text);
  font-weight: var(--weight-semibold);
  box-shadow: inset 2px 0 0 var(--accent-solid);
}

.Shell_navItemActive:hover {
  background: var(--accent-subtle);
  color: var(--accent-subtle-text);
}

.Shell_navIcon {
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  width: 20px;
  display: flex;
}

.Shell_navLabel {
  text-overflow: ellipsis;
  flex: auto;
  min-width: 0;
  overflow: hidden;
}

.Shell_navCount {
  min-width: 20px;
  padding: 0 var(--space-1);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
  text-align: center;
  color: var(--text-secondary);
  background: var(--surface-sunken);
  border-radius: var(--radius-full);
  flex-shrink: 0;
}

.Shell_navCountAlert {
  color: var(--critical-solid-text);
  background: var(--critical-solid);
}

.Shell_railFooter {
  border-top: 1px solid var(--border-subtle);
  padding: var(--space-2);
  flex-direction: column;
  gap: 2px;
  display: flex;
}

.Shell_header {
  align-items: center;
  gap: var(--space-4);
  padding: 0 var(--space-5);
  background: var(--surface-raised);
  border-bottom: 1px solid var(--border-subtle);
  min-height: 56px;
  z-index: var(--z-sticky);
  display: flex;
  position: sticky;
  top: 0;
}

.Shell_headerTitle {
  flex-direction: column;
  flex: auto;
  min-width: 0;
  display: flex;
}

.Shell_headerHeading {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  line-height: var(--leading-tight);
  white-space: nowrap;
  text-overflow: ellipsis;
  margin: 0;
  overflow: hidden;
}

.Shell_headerSub {
  font-size: var(--text-xs);
  color: var(--text-muted);
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.Shell_headerTools {
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
  display: flex;
}

.Shell_stationSelect {
  height: var(--control-height-sm);
  padding: 0 var(--space-2);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm);
  background: var(--surface-sunken);
  color: var(--text-secondary);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  cursor: pointer;
  outline: none;
}

.Shell_stationSelect:hover {
  border-color: var(--border-default);
  color: var(--text-primary);
}

.Shell_stationSelect:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.Shell_headerLogout {
  min-width: var(--control-height-md);
  min-height: var(--control-height-md);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius);
  color: var(--text-secondary);
  font: inherit;
  cursor: pointer;
  background: none;
  border: 0;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 1px;
  display: inline-flex;
}

.Shell_headerLogout span {
  font-size: var(--text-2xs);
  line-height: 1;
}

.Shell_headerLogout:hover {
  background: var(--surface-hover);
  color: var(--text-primary);
}

.Shell_headerLogout:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.Shell_headerLogout:disabled {
  cursor: wait;
  opacity: var(--opacity-disabled);
}

.Shell_searchTrigger {
  align-items: center;
  gap: var(--space-2);
  height: var(--control-height-md);
  padding: 0 var(--space-2) 0 var(--space-3);
  background: var(--surface-sunken);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  cursor: pointer;
  min-width: 200px;
  font-family: var(--font-body);
  font-size: var(--text-md);
  color: var(--text-muted);
  text-align: left;
  display: flex;
}

.Shell_searchTrigger:hover {
  border-color: var(--border-default);
  color: var(--text-secondary);
}

.Shell_searchTrigger:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.Shell_searchLabel {
  flex: auto;
}

.Shell_kbd {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  color: var(--text-muted);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  padding: 1px var(--space-1);
  white-space: nowrap;
}

.Shell_clock {
  line-height: var(--leading-tight);
  flex-direction: column;
  align-items: flex-end;
  display: flex;
}

.Shell_clockDate {
  font-size: var(--text-2xs);
  color: var(--text-muted);
  white-space: nowrap;
}

.Shell_clockTime {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
}

.Shell_patientBar {
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-2) var(--space-5);
  background: var(--accent-subtle);
  border-bottom: 1px solid var(--accent-border);
  z-index: calc(var(--z-sticky) - 1);
  flex-wrap: wrap;
  display: flex;
  position: sticky;
  top: 56px;
}

.Shell_patientIdentity {
  align-items: baseline;
  gap: var(--space-2);
  min-width: 0;
  display: flex;
}

.Shell_patientName {
  font-family: var(--font-display);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.Shell_patientId {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  white-space: nowrap;
}

.Shell_patientFacts {
  align-items: center;
  gap: var(--space-4);
  font-size: var(--text-xs);
  flex-wrap: wrap;
  display: flex;
}

.Shell_patientFact {
  align-items: baseline;
  gap: var(--space-1);
  white-space: nowrap;
  display: flex;
}

.Shell_patientFactLabel {
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
}

.Shell_patientFactValue {
  color: var(--text-primary);
  font-weight: var(--weight-medium);
  font-variant-numeric: tabular-nums;
}

.Shell_patientActions {
  align-items: center;
  gap: var(--space-2);
  margin-left: auto;
  display: flex;
}

.Shell_palette {
  top: 12vh;
  transform: translateX(-50%);
}

.Shell_paletteInputIcon {
  opacity: .5;
  flex-shrink: 0;
}

.Shell_paletteGroupList {
  margin: 0;
  padding: 0;
  list-style: none;
}

.Shell_paletteInputWrap {
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
}

.Shell_paletteInput {
  min-width: 0;
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--text-primary);
  background: none;
  border: 0;
  outline: none;
  flex: auto;
}

.Shell_paletteInput::placeholder {
  color: var(--text-disabled);
}

.Shell_paletteList {
  padding: var(--space-2);
  overscroll-behavior: contain;
  max-height: 52vh;
  margin: 0;
  list-style: none;
  overflow-y: auto;
}

.Shell_paletteGroup {
  padding: var(--space-3) var(--space-2) var(--space-1);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.Shell_paletteItem {
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  cursor: pointer;
  text-align: left;
  font-family: var(--font-body);
  font-size: var(--text-md);
  color: var(--text-primary);
  background: none;
  border: 0;
  display: flex;
}

.Shell_paletteItemActive {
  background: var(--accent-subtle);
  color: var(--accent-subtle-text);
  box-shadow: inset 2px 0 0 var(--accent-solid);
}

.Shell_paletteItemIcon {
  color: var(--text-muted);
  flex-shrink: 0;
  display: flex;
}

.Shell_paletteItemActive .Shell_paletteItemIcon {
  color: var(--accent-text);
}

.Shell_paletteItemBody {
  flex: auto;
  min-width: 0;
}

.Shell_paletteItemLabel {
  white-space: nowrap;
  text-overflow: ellipsis;
  display: block;
  overflow: hidden;
}

.Shell_paletteItemMeta {
  font-size: var(--text-xs);
  color: var(--text-muted);
  white-space: nowrap;
  text-overflow: ellipsis;
  display: block;
  overflow: hidden;
}

.Shell_paletteHint {
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-2) var(--space-4);
  border-top: 1px solid var(--border-subtle);
  background: var(--surface-sunken);
  font-size: var(--text-2xs);
  color: var(--text-muted);
  display: flex;
}

.Shell_paletteEmpty {
  padding: var(--space-8) var(--space-4);
  text-align: center;
  color: var(--text-muted);
  font-size: var(--text-md);
}

@media (width <= 860px) {
  .Shell_shell {
    grid-template-columns: 1fr;
  }

  .Shell_rail {
    border-right: 0;
    border-top: 1px solid var(--border-default);
    width: 100%;
    height: auto;
    z-index: var(--z-sticky);
    padding-bottom: env(safe-area-inset-bottom, 0);
    flex-direction: row;
    position: fixed;
    inset: auto 0 0;
  }

  .Shell_brand, .Shell_railFooter, .Shell_navGroup {
    display: none;
  }

  .Shell_nav {
    padding: var(--space-1);
    justify-content: space-around;
    gap: var(--space-1);
    flex-direction: row;
    overflow-x: auto;
  }

  .Shell_nav > div {
    display: contents;
  }

  .Shell_navItem {
    min-width: 60px;
    min-height: 48px;
    padding: var(--space-1);
    font-size: var(--text-2xs);
    flex-direction: column;
    justify-content: center;
    gap: 2px;
  }

  .Shell_navItemActive {
    box-shadow: inset 0 2px 0 var(--accent-solid);
  }

  .Shell_navCount {
    position: absolute;
    transform: translate(14px, -12px);
  }

  .Shell_main {
    padding-bottom: 64px;
  }

  .Shell_content {
    padding: var(--space-4);
  }

  .Shell_header {
    row-gap: var(--space-2);
    padding: var(--space-2) var(--space-4);
    flex-wrap: wrap;
    position: static;
  }

  .Shell_headerLogout span {
    display: none;
  }

  .Shell_headerTitle {
    flex: 160px;
  }

  .Shell_headerTools {
    flex-wrap: wrap;
    flex: auto;
    justify-content: flex-end;
    min-width: 0;
  }

  .Shell_searchTrigger {
    min-width: 0;
  }

  .Shell_searchLabel, .Shell_kbd, .Shell_clock {
    display: none;
  }

  .Shell_patientBar {
    top: 56px;
  }
}

.Shell_setupOptions {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.Shell_setupOptions button {
  appearance: none;
  background: var(--surface-page);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4);
  text-align: left;
  cursor: pointer;
  transition: border-color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out);
  flex-direction: column;
  gap: 2px;
  display: flex;
}

.Shell_setupOptions button:hover {
  border-color: var(--border-strong);
  background: var(--surface-hover);
}

.Shell_setupOptions button:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.Shell_setupOptions button:active {
  background: var(--surface-selected);
}

.Shell_setupOptions button strong {
  color: var(--text-primary);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
}

.Shell_setupOptions button span {
  color: var(--text-muted);
  font-size: var(--text-sm);
}


/* components/site/site.module.css */
.site_companyLine {
  align-items: center;
  gap: var(--space-1);
  width: 100%;
  max-width: 44rem;
  padding: var(--space-5) var(--space-4);
  text-align: center;
  font-size: var(--text-xs);
  color: var(--text-muted);
  flex-direction: column;
  margin: 0 auto;
  line-height: 1.5;
  display: flex;
}

.site_companyLine[data-tone="page"] {
  border-top: 1px solid var(--border-subtle);
}

.site_companyLine[data-tone="inset"] {
  padding: var(--space-3) 0 0;
}

.site_companyText {
  text-wrap: balance;
  margin: 0;
}

.site_companyLinks {
  gap: var(--space-3);
  display: flex;
}

.site_companyLinks a {
  color: inherit;
  text-underline-offset: 3px;
  text-decoration: underline;
}

.site_legal {
  background: var(--surface-page);
  min-height: 100vh;
  color: var(--text-primary);
}

.site_legalInner {
  max-width: 44rem;
  padding: var(--space-8) var(--space-4) var(--space-6);
  gap: var(--space-4);
  margin: 0 auto;
  line-height: 1.6;
  display: grid;
}

.site_legalBrand {
  display: inline-flex;
}

.site_legalTitle {
  font-family: var(--font-display);
  font-weight: var(--weight-normal);
  font-size: var(--text-2xl);
  margin: 0;
}

.site_legalUpdated {
  font-size: var(--text-sm);
  color: var(--text-muted);
  margin: 0;
}

.site_legalInner h2 {
  margin: var(--space-4) 0 0;
  font-family: var(--font-display);
  font-weight: var(--weight-normal);
  font-size: var(--text-lg);
}

.site_legalInner p, .site_legalInner ul {
  margin: 0;
}

.site_legalInner ul {
  padding-left: var(--space-5);
  gap: var(--space-1);
  display: grid;
}

.site_legalInner a {
  color: inherit;
}


/* components/templateManager.module.css */
.templateManager_list {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.templateManager_listHeader {
  align-items: flex-end;
  gap: var(--space-3);
  flex-wrap: wrap;
  display: flex;
}

.templateManager_search {
  flex: 1;
  min-width: 200px;
}

.templateManager_cards {
  gap: var(--space-2);
  overscroll-behavior: contain;
  flex-direction: column;
  max-height: 45vh;
  display: flex;
  overflow-y: auto;
}

.templateManager_card {
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-3);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-left: 3px solid var(--border-strong);
  display: flex;
}

.templateManager_cardCustom {
  border-left-color: var(--accent-solid);
}

.templateManager_cardInfo {
  min-width: 0;
}

.templateManager_cardHead {
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-1);
  flex-wrap: wrap;
  display: flex;
}

.templateManager_cardName {
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 0;
}

.templateManager_cardPreview {
  font-size: var(--text-xs);
  line-height: var(--leading-normal);
  color: var(--text-secondary);
  margin: 0;
}

.templateManager_cardActions {
  gap: var(--space-1);
  flex-shrink: 0;
  display: flex;
}

.templateManager_empty {
  padding: var(--space-6) 0;
}

.templateManager_form {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.templateManager_formHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  display: flex;
}

.templateManager_formTitle {
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 0;
}

.templateManager_fileInput {
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  position: absolute;
  overflow: hidden;
}

.templateManager_dropzone {
  align-items: center;
  gap: var(--space-1);
  width: 100%;
  padding: var(--space-6) var(--space-4);
  text-align: center;
  background: var(--surface-sunken);
  border: 2px dashed var(--border-strong);
  cursor: pointer;
  color: var(--text-secondary);
  flex-direction: column;
  display: flex;
}

.templateManager_dropzoneActive {
  background: var(--accent-subtle);
  border-color: var(--accent-solid);
  color: var(--accent-text);
}

.templateManager_dropzone:focus-visible {
  outline: 2px solid var(--focus-color);
  outline-offset: 2px;
}

.templateManager_dropIcon {
  color: var(--text-muted);
}

.templateManager_dropzoneActive .templateManager_dropIcon {
  color: var(--accent-solid);
}

.templateManager_dropLead {
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 0;
}

.templateManager_dropHint {
  font-size: var(--text-xs);
  color: var(--text-secondary);
  margin: 0;
}

.templateManager_dropKinds {
  gap: var(--space-2);
  margin-top: var(--space-2);
  display: flex;
}

.templateManager_fields {
  gap: var(--space-4);
  flex-direction: column;
  display: flex;
}

.templateManager_formActions {
  justify-content: flex-end;
  gap: var(--space-2);
  display: flex;
}


/* components/ui/Button.module.css */
.Button_button {
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-body);
  font-weight: var(--weight-semibold);
  white-space: nowrap;
  border-radius: var(--radius-md);
  cursor: pointer;
  user-select: none;
  transition: background-color var(--duration-fast) var(--ease-out),
    border-color var(--duration-fast) var(--ease-out),
    color var(--duration-fast) var(--ease-out);
  border: 1px solid #0000;
  line-height: 1;
  text-decoration: none;
  display: inline-flex;
  position: relative;
}

.Button_button:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.Button_button:disabled, .Button_button[aria-disabled="true"] {
  cursor: not-allowed;
  opacity: .55;
}

.Button_sm {
  height: var(--control-height-sm);
  padding: 0 var(--space-2);
  font-size: var(--text-xs);
}

.Button_md {
  height: var(--control-height-md);
  padding: 0 var(--space-4);
  font-size: var(--text-md);
}

.Button_lg {
  height: var(--control-height-lg);
  padding: 0 var(--space-5);
  font-size: var(--text-base);
}

.Button_primary {
  background: var(--accent-solid);
  color: var(--accent-solid-text);
  border-color: var(--accent-solid);
}

.Button_primary:hover:not(:disabled):not([aria-disabled="true"]) {
  background: var(--accent-solid-hover);
  border-color: var(--accent-solid-hover);
}

.Button_secondary {
  background: var(--surface-raised);
  color: var(--text-primary);
  border-color: var(--border-default);
}

.Button_secondary:hover:not(:disabled):not([aria-disabled="true"]) {
  background: var(--surface-hover);
  border-color: var(--border-strong);
}

.Button_ghost {
  color: var(--text-secondary);
  background: none;
  border-color: #0000;
}

.Button_ghost:hover:not(:disabled):not([aria-disabled="true"]) {
  background: var(--surface-sunken);
  color: var(--text-primary);
}

.Button_danger {
  background: var(--critical-solid);
  color: var(--critical-solid-text);
  border-color: var(--critical-solid);
}

.Button_danger:hover:not(:disabled):not([aria-disabled="true"]) {
  filter: brightness(.9);
}

.Button_dangerQuiet {
  background: var(--surface-raised);
  color: var(--critical-text);
  border-color: var(--critical-border);
}

.Button_dangerQuiet:hover:not(:disabled):not([aria-disabled="true"]) {
  background: var(--critical-subtle);
}

.Button_link {
  color: var(--text-link);
  text-underline-offset: 2px;
  height: auto;
  font-weight: var(--weight-medium);
  background: none;
  border-color: #0000;
  padding: 0;
  text-decoration: underline;
}

.Button_link:hover:not(:disabled) {
  color: var(--accent-solid-hover);
}

.Button_fullWidth {
  width: 100%;
}

.Button_iconOnly.Button_sm {
  width: var(--control-height-sm);
  padding: 0;
}

.Button_iconOnly.Button_md {
  width: var(--control-height-md);
  padding: 0;
}

.Button_iconOnly.Button_lg {
  width: var(--control-height-lg);
  padding: 0;
}

.Button_isLoading .Button_label {
  visibility: hidden;
}

.Button_spinner {
  justify-content: center;
  align-items: center;
  display: flex;
  position: absolute;
  inset: 0;
}

.Button_spinnerDot {
  border-radius: var(--radius-full);
  border: 2px solid;
  border-top-color: #0000;
  width: 1em;
  height: 1em;
  animation: .7s linear infinite Button_buttonSpin;
}

@keyframes Button_buttonSpin {
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .Button_spinnerDot {
    animation-duration: 1.6s;
  }
}

.Button_group {
  display: inline-flex;
}

.Button_group > .Button_button:not(:first-child) {
  margin-left: -1px;
}

.Button_group > .Button_button:hover, .Button_group > .Button_button:focus-visible {
  z-index: 1;
}


/* components/ui/Dialog.module.css */
.Dialog_overlay {
  background: var(--surface-scrim);
  z-index: var(--z-overlay);
  animation: Dialog_overlayIn var(--duration-fast) var(--ease-out);
  position: fixed;
  inset: 0;
}

.Dialog_content {
  z-index: var(--z-modal);
  width: calc(100vw - var(--space-8));
  max-height: calc(100dvh - var(--space-8));
  background: var(--surface-overlay);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xl);
  animation: Dialog_contentIn var(--duration-normal) var(--ease-out);
  flex-direction: column;
  display: flex;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.Dialog_sm {
  max-width: 420px;
}

.Dialog_md {
  max-width: 620px;
}

.Dialog_lg {
  max-width: 880px;
}

.Dialog_xl {
  max-width: 1140px;
}

.Dialog_tall {
  height: calc(100dvh - var(--space-8));
}

.Dialog_header {
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--border-subtle);
  flex-shrink: 0;
  display: flex;
}

.Dialog_titleGroup {
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  display: flex;
}

.Dialog_title {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  line-height: var(--leading-snug);
  margin: 0;
}

.Dialog_description {
  font-size: var(--text-md);
  color: var(--text-secondary);
  line-height: var(--leading-snug);
  margin: 0;
}

.Dialog_close {
  width: var(--control-height-sm);
  height: var(--control-height-sm);
  border-radius: var(--radius-md);
  color: var(--text-muted);
  cursor: pointer;
  font-size: var(--text-lg);
  transition: background-color var(--duration-fast) var(--ease-out);
  background: none;
  border: 1px solid #0000;
  flex-shrink: 0;
  justify-content: center;
  align-items: center;
  line-height: 1;
  display: flex;
}

.Dialog_close:hover {
  background: var(--surface-sunken);
  color: var(--text-primary);
}

.Dialog_close:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.Dialog_body {
  padding: var(--space-5);
  overscroll-behavior: contain;
  flex: auto;
  min-height: 0;
  overflow-y: auto;
}

.Dialog_bodyFlush {
  flex-direction: column;
  padding: 0;
  display: flex;
  overflow: hidden;
}

.Dialog_footer {
  justify-content: flex-end;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-5);
  border-top: 1px solid var(--border-subtle);
  background: var(--surface-sunken);
  flex-wrap: wrap;
  flex-shrink: 0;
  display: flex;
}

.Dialog_footerNote {
  font-size: var(--text-xs);
  color: var(--text-muted);
  margin-right: auto;
}

.Dialog_drawer {
  height: 100dvh;
  max-height: none;
  width: min(480px, calc(100vw - var(--space-8)));
  animation: Dialog_drawerIn var(--duration-normal) var(--ease-out);
  border-top: 0;
  border-bottom: 0;
  border-right: 0;
  border-radius: 0;
  inset: 0 0 0 auto;
  transform: none;
}

@keyframes Dialog_overlayIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes Dialog_contentIn {
  from {
    opacity: 0;
    transform: translate(-50%, calc(8px - 50%));
  }

  to {
    opacity: 1;
    transform: translate(-50%, -50%);
  }
}

@keyframes Dialog_drawerIn {
  from {
    opacity: 0;
    transform: translateX(12px);
  }

  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .Dialog_overlay, .Dialog_content, .Dialog_drawer {
    animation: none;
  }
}

@media (width <= 560px) {
  .Dialog_content {
    width: 100vw;
    max-width: none;
    max-height: 92dvh;
    animation: Dialog_sheetIn var(--duration-normal) var(--ease-out);
    border-bottom: 0;
    border-left: 0;
    border-right: 0;
    top: auto;
    bottom: 0;
    left: 0;
    transform: none;
  }

  .Dialog_drawer {
    width: 100vw;
    height: 92dvh;
  }

  .Dialog_mobileTop {
    top: var(--space-4);
    max-height: calc(100dvh - var(--space-8));
    animation: none;
    bottom: auto;
  }
}

@keyframes Dialog_sheetIn {
  from {
    opacity: 0;
    transform: translateY(12px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}


/* components/ui/Feedback.module.css */
.Feedback_alert {
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  font-size: var(--text-md);
  line-height: var(--leading-snug);
  border: 1px solid;
  border-left-width: 3px;
  display: flex;
}

.Feedback_alertInfo {
  background: var(--info-subtle);
  border-color: var(--info-border);
  border-left-color: var(--info-solid);
  color: var(--info-text);
}

.Feedback_alertSuccess {
  background: var(--success-subtle);
  border-color: var(--success-border);
  border-left-color: var(--success-solid);
  color: var(--success-text);
}

.Feedback_alertWarning {
  background: var(--warning-subtle);
  border-color: var(--warning-border);
  border-left-color: var(--warning-solid);
  color: var(--warning-text);
}

.Feedback_alertCritical {
  background: var(--critical-subtle);
  border-color: var(--critical-border);
  border-left-color: var(--critical-solid);
  color: var(--critical-text);
}

.Feedback_alertMark {
  font-weight: var(--weight-bold);
  font-size: var(--text-base);
  flex-shrink: 0;
  line-height: 1.35;
}

.Feedback_alertBody {
  gap: var(--space-1);
  flex-direction: column;
  flex: auto;
  min-width: 0;
  display: flex;
}

.Feedback_alertTitle {
  font-weight: var(--weight-semibold);
}

.Feedback_alertText {
  color: inherit;
  opacity: .92;
}

.Feedback_alertActions {
  gap: var(--space-2);
  margin-top: var(--space-2);
  display: flex;
}

.Feedback_skeleton {
  background: linear-gradient(90deg,
    var(--surface-sunken) 25%,
    var(--surface-hover) 37%,
    var(--surface-sunken) 63%);
  border-radius: var(--radius-sm);
  background-size: 400% 100%;
  animation: 1.4s infinite Feedback_shimmer;
  display: block;
}

@keyframes Feedback_shimmer {
  0% {
    background-position: 100%;
  }

  100% {
    background-position: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .Feedback_skeleton {
    background: var(--surface-sunken);
    animation: none;
  }
}

.Feedback_skeletonText {
  height: .75em;
  margin: .25em 0;
}

.Feedback_skeletonStack {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.Feedback_skeletonRow {
  align-items: center;
  gap: var(--space-4);
  padding: var(--row-padding-y) var(--row-padding-x);
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
}

.Feedback_skeletonCircle {
  border-radius: var(--radius-full);
  background: linear-gradient(90deg,
    var(--surface-sunken) 25%,
    var(--surface-hover) 37%,
    var(--surface-sunken) 63%);
  background-size: 400% 100%;
  flex-shrink: 0;
  animation: 1.4s infinite Feedback_shimmer;
  display: block;
}

@media (prefers-reduced-motion: reduce) {
  .Feedback_skeletonCircle {
    background: var(--surface-sunken);
    animation: none;
  }
}

.Feedback_skeletonList {
  gap: var(--space-3);
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
}

.Feedback_skeletonListRow {
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  display: flex;
}

.Feedback_skeletonLines {
  gap: var(--space-2);
  flex-direction: column;
  flex: auto;
  min-width: 0;
  display: flex;
}

.Feedback_skeletonForm {
  gap: var(--space-4);
  grid-template-columns: minmax(0, 1fr);
  display: grid;
}

.Feedback_skeletonField {
  gap: var(--space-2);
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.Feedback_skeletonPanel {
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  flex-direction: column;
  display: flex;
  overflow: hidden;
}

.Feedback_skeletonPanelHead {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--border-subtle);
  display: flex;
}

.Feedback_skeletonPanelBody {
  gap: var(--space-3);
  padding: var(--space-5);
  flex-direction: column;
  display: flex;
}

.Feedback_readError {
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-10) var(--space-6);
  text-align: center;
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  flex-direction: column;
  display: flex;
}

.Feedback_readErrorTitle {
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.Feedback_readErrorText {
  font-size: var(--text-md);
  color: var(--text-secondary);
  max-width: 52ch;
  line-height: var(--leading-normal);
  margin-bottom: var(--space-2);
}

.Feedback_empty {
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-12) var(--space-6);
  text-align: center;
  color: var(--text-secondary);
  flex-direction: column;
  display: flex;
}

.Feedback_emptyCompact {
  padding: var(--space-6) var(--space-4);
}

.Feedback_emptyIcon {
  color: var(--text-disabled);
  margin-bottom: var(--space-1);
}

.Feedback_emptyTitle {
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.Feedback_emptyText {
  font-size: var(--text-md);
  color: var(--text-muted);
  max-width: 46ch;
  line-height: var(--leading-normal);
}

.Feedback_emptyAction {
  margin-top: var(--space-3);
}

.Feedback_spinner {
  border: 2px solid var(--border-default);
  border-top-color: var(--accent-solid);
  border-radius: var(--radius-full);
  animation: .7s linear infinite Feedback_spinnerTurn;
  display: inline-block;
}

@keyframes Feedback_spinnerTurn {
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .Feedback_spinner {
    animation-duration: 1.8s;
  }
}

.Feedback_centred {
  justify-content: center;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-12);
  color: var(--text-muted);
  font-size: var(--text-md);
  flex-direction: column;
  display: flex;
}

.Feedback_crash {
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-6);
  background: var(--surface-raised);
  border: 1px solid var(--critical-border);
  border-left: 3px solid var(--critical-solid);
  border-radius: var(--radius-md);
  flex-direction: column;
  display: flex;
}

.Feedback_crashTitle {
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
}

.Feedback_crashText {
  font-size: var(--text-md);
  color: var(--text-secondary);
  max-width: 60ch;
  line-height: var(--leading-normal);
}

.Feedback_crashDetail {
  width: 100%;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--text-muted);
  background: var(--surface-sunken);
  border: 1px solid var(--border-subtle);
  padding: var(--space-2) var(--space-3);
  white-space: pre-wrap;
  word-break: break-word;
  overflow-x: auto;
}


/* components/ui/Field.module.css */
.Field_field {
  gap: var(--space-1);
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.Field_labelRow {
  justify-content: space-between;
  align-items: baseline;
  gap: var(--space-2);
  display: flex;
}

.Field_label {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--text-secondary);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  line-height: var(--leading-snug);
}

.Field_required {
  color: var(--critical-text);
  margin-left: 2px;
}

.Field_optional {
  font-size: var(--text-2xs);
  font-weight: var(--weight-normal);
  color: var(--text-muted);
  text-transform: none;
  letter-spacing: 0;
}

.Field_hint {
  font-size: var(--text-xs);
  color: var(--text-muted);
  line-height: var(--leading-snug);
}

.Field_error {
  align-items: flex-start;
  gap: var(--space-1);
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  color: var(--critical-text);
  line-height: var(--leading-snug);
  display: flex;
}

.Field_errorMark {
  font-weight: var(--weight-bold);
  line-height: inherit;
  flex-shrink: 0;
}

.Field_control {
  width: 100%;
  min-width: 0;
  height: var(--control-height-md);
  padding: 0 var(--control-padding-x);
  font-family: var(--font-body);
  font-size: var(--control-font);
  color: var(--text-primary);
  background: var(--surface-raised);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  transition: border-color var(--duration-fast) var(--ease-out),
    background-color var(--duration-fast) var(--ease-out);
}

.Field_control::placeholder {
  color: var(--text-disabled);
}

.Field_control:hover:not(:disabled):not(:read-only) {
  border-color: var(--border-strong);
}

.Field_control:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -1px;
  border-color: var(--focus-color);
}

.Field_control:disabled {
  background: var(--surface-sunken);
  color: var(--text-disabled);
  cursor: not-allowed;
}

.Field_control:read-only:not(select) {
  background: var(--surface-sunken);
}

.Field_invalid {
  border-color: var(--critical-solid);
  background: var(--critical-subtle);
}

.Field_invalid:hover:not(:disabled) {
  border-color: var(--critical-solid);
}

.Field_textarea {
  height: auto;
  min-height: calc(var(--control-height-md) * 2.5);
  padding: var(--space-2) var(--control-padding-x);
  line-height: var(--leading-normal);
  resize: vertical;
}

.Field_select {
  padding-right: var(--space-6);
  cursor: pointer;
  appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, var(--text-muted) 50%),
    linear-gradient(135deg, var(--text-muted) 50%, transparent 50%);
  background-position: calc(100% - 16px) calc(50% + 2px), calc(100% - 11px) calc(50% + 2px);
  background-repeat: no-repeat;
  background-size: 5px 5px, 5px 5px;
}

.Field_wrap {
  align-items: center;
  min-width: 0;
  display: flex;
  position: relative;
}

.Field_hasPrefix .Field_control {
  padding-left: var(--space-8);
}

.Field_hasSuffix .Field_control {
  padding-right: var(--space-8);
}

.Field_prefix, .Field_suffix {
  color: var(--text-muted);
  pointer-events: none;
  font-size: var(--text-md);
  align-items: center;
  display: flex;
  position: absolute;
}

.Field_prefix {
  left: var(--control-padding-x);
}

.Field_suffix {
  right: var(--control-padding-x);
}

.Field_numeric {
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.Field_choice {
  align-items: flex-start;
  gap: var(--space-2);
  cursor: pointer;
  min-height: var(--control-height-md);
  padding: var(--space-1) 0;
  display: flex;
}

.Field_choice input {
  width: 16px;
  height: 16px;
  accent-color: var(--accent-solid);
  cursor: pointer;
  flex-shrink: 0;
  margin-top: 2px;
}

.Field_choice:has(input:disabled) {
  cursor: not-allowed;
  color: var(--text-disabled);
}

.Field_choiceLabel {
  font-size: var(--text-md);
  color: var(--text-primary);
  line-height: var(--leading-snug);
}

.Field_choiceHint {
  font-size: var(--text-xs);
  color: var(--text-muted);
  margin-top: 2px;
  display: block;
}

.Field_fieldset {
  gap: var(--space-2);
  border: 0;
  flex-direction: column;
  min-width: 0;
  margin: 0;
  padding: 0;
  display: flex;
}

.Field_legend {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--text-secondary);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  margin-bottom: var(--space-1);
  padding: 0;
}

.Field_row {
  gap: var(--space-4);
  grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
  display: grid;
}


/* components/ui/SignaturePad.module.css */
.SignaturePad_pad {
  gap: var(--space-3);
  flex-direction: column;
  max-width: 520px;
  display: flex;
}

.SignaturePad_board {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: #fff;
  width: 100%;
  position: relative;
  overflow: hidden;
}

.SignaturePad_canvas {
  touch-action: none;
  cursor: crosshair;
  color: #111;
  width: 100%;
  height: 100%;
  display: block;
}

.SignaturePad_canvas:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

.SignaturePad_baseline {
  border-bottom: 1px dashed var(--border-default);
  pointer-events: none;
  position: absolute;
  bottom: 22%;
  left: 12%;
  right: 12%;
}

.SignaturePad_drop {
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
  cursor: pointer;
  text-align: center;
  width: 100%;
  height: 100%;
  padding: var(--space-4);
  flex-direction: column;
  display: flex;
}

.SignaturePad_drop:hover {
  background: var(--surface-hover);
}

.SignaturePad_drop:focus-within {
  outline: 2px solid var(--focus-ring);
  outline-offset: -2px;
}

.SignaturePad_dropTitle {
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: #111;
  word-break: break-word;
}

.SignaturePad_dropHint {
  font-size: var(--text-sm);
  color: #5a5a5a;
}

.SignaturePad_hint {
  font-size: var(--text-sm);
  color: var(--text-muted);
  line-height: var(--leading-normal);
  margin: 0;
}

.SignaturePad_actions {
  gap: var(--space-2);
  display: flex;
}

.SignaturePad_error {
  font-size: var(--text-sm);
  color: var(--critical-text);
  background: var(--critical-subtle);
  border: 1px solid var(--critical-border);
  border-left: 3px solid var(--critical-solid);
  border-radius: var(--radius-sm);
  padding: var(--space-2) var(--space-3);
  line-height: var(--leading-snug);
  margin: 0;
}

.SignaturePad_previewWrap {
  gap: var(--space-2);
  flex-direction: column;
  display: flex;
}

.SignaturePad_previewLabel {
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--text-muted);
}

.SignaturePad_preview {
  justify-content: flex-end;
  align-items: center;
  gap: var(--space-2);
  min-height: 96px;
  padding: var(--space-3) var(--space-5) var(--space-4);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  background: #fff;
  flex-direction: column;
  display: flex;
}

.SignaturePad_previewInk {
  object-fit: contain;
  max-width: 220px;
  max-height: 56px;
  display: block;
}

.SignaturePad_previewEmpty {
  font-size: var(--text-sm);
  color: #8a8a8a;
  margin-bottom: var(--space-3);
}

.SignaturePad_previewRule {
  border-bottom: 1px solid #333;
  width: 220px;
  display: block;
}


/* components/ui/Stat.module.css */
.Stat_stat {
  gap: var(--space-2);
  min-width: 0;
  padding: var(--space-4);
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  color: inherit;
  flex-direction: column;
  text-decoration: none;
  display: flex;
}

.Stat_dense {
  padding: var(--space-3);
  gap: var(--space-1);
}

.Stat_link {
  cursor: pointer;
  transition: border-color .12s, background .12s;
}

.Stat_link:hover {
  border-color: var(--border-default);
  background: var(--surface-hover);
}

.Stat_link:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.Stat_head {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  min-height: 24px;
  display: flex;
}

.Stat_label {
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-muted);
}

.Stat_icon {
  padding: var(--space-1);
  border-radius: var(--radius-sm);
  background: var(--surface-sunken);
  color: var(--text-secondary);
  flex-shrink: 0;
  display: inline-flex;
}

.Stat_icon[data-tone="accent"] {
  background: var(--accent-subtle);
  color: var(--accent-subtle-text);
}

.Stat_icon[data-tone="success"] {
  background: var(--success-subtle);
  color: var(--success-text);
}

.Stat_icon[data-tone="warning"] {
  background: var(--warning-subtle);
  color: var(--warning-text);
}

.Stat_icon[data-tone="critical"] {
  background: var(--critical-subtle);
  color: var(--critical-text);
}

.Stat_icon[data-tone="info"] {
  background: var(--info-subtle);
  color: var(--info-text);
}

.Stat_row {
  justify-content: space-between;
  align-items: flex-end;
  gap: var(--space-2) var(--space-3);
  flex-wrap: wrap;
  min-width: 0;
  display: flex;
}

.Stat_value {
  min-width: 0;
  font-size: var(--text-2xl);
  font-weight: var(--weight-normal);
  color: var(--text-primary);
  overflow-wrap: anywhere;
  align-items: baseline;
  line-height: 1;
  display: inline-flex;
}

.Stat_dense .Stat_value {
  font-size: var(--text-xl);
}

.Stat_delta {
  align-items: center;
  gap: var(--space-1);
  font-size: var(--text-xs);
  color: var(--text-secondary);
  display: inline-flex;
}

.Stat_deltaValue {
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
}

.Stat_deltaLabel, .Stat_deltaFlat {
  color: var(--text-muted);
}

.Stat_good {
  color: var(--success-text);
}

.Stat_bad {
  color: var(--critical-text);
}

.Stat_note {
  font-size: var(--text-xs);
  color: var(--text-secondary);
}

.Stat_spark {
  flex-shrink: 0;
  display: block;
  overflow: visible;
}

.Stat_sparkArea {
  fill: var(--accent-solid);
  fill-opacity: .08;
}

.Stat_sparkLine {
  fill: none;
  stroke: var(--text-muted);
  stroke-width: 1.5px;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}

.Stat_sparkEnd {
  fill: var(--accent-solid);
  stroke: var(--surface-raised);
  stroke-width: 1px;
}


/* components/ui/Status.module.css */
.Status_badge {
  align-items: center;
  gap: var(--space-1);
  padding: 2px var(--space-2);
  border-radius: var(--radius-sm);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  white-space: nowrap;
  border: 1px solid #0000;
  line-height: 1.5;
  display: inline-flex;
}

.Status_neutral {
  background: var(--surface-sunken);
  color: var(--text-secondary);
  border-color: var(--border-subtle);
}

.Status_accent {
  background: var(--accent-subtle);
  color: var(--accent-subtle-text);
  border-color: var(--accent-border);
}

.Status_success {
  background: var(--success-subtle);
  color: var(--success-text);
  border-color: var(--success-border);
}

.Status_warning {
  background: var(--warning-subtle);
  color: var(--warning-text);
  border-color: var(--warning-border);
}

.Status_critical {
  background: var(--critical-subtle);
  color: var(--critical-text);
  border-color: var(--critical-border);
}

.Status_info {
  background: var(--info-subtle);
  color: var(--info-text);
  border-color: var(--info-border);
}

.Status_solid.Status_critical {
  background: var(--critical-solid);
  color: var(--critical-solid-text);
  border-color: var(--critical-solid);
}

.Status_solid.Status_success {
  background: var(--success-solid);
  color: var(--success-solid-text);
  border-color: var(--success-solid);
}

.Status_solid.Status_warning {
  background: var(--warning-solid);
  color: var(--warning-solid-text);
  border-color: var(--warning-solid);
}

.Status_solid.Status_accent {
  background: var(--accent-solid);
  color: var(--accent-solid-text);
  border-color: var(--accent-solid);
}

.Status_pill {
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--text-primary);
  white-space: nowrap;
  display: inline-flex;
}

.Status_dot {
  border-radius: var(--radius-full);
  border: 2px solid;
  flex-shrink: 0;
  width: 9px;
  height: 9px;
}

.Status_dotFilled {
  background: currentColor;
}

.Status_dotSquare {
  background: currentColor;
  border-radius: 0;
}

.Status_dotPulse {
  background: currentColor;
  animation: 2s ease-in-out infinite Status_statusPulse;
}

@keyframes Status_statusPulse {
  0%, 100% {
    opacity: 1;
  }

  50% {
    opacity: .35;
  }
}

@media (prefers-reduced-motion: reduce) {
  .Status_dotPulse {
    animation: none;
  }
}

.Status_toneNeutral {
  color: var(--text-muted);
}

.Status_toneAccent {
  color: var(--accent-text);
}

.Status_toneSuccess {
  color: var(--success-text);
}

.Status_toneWarning {
  color: var(--warning-text);
}

.Status_toneCritical {
  color: var(--critical-text);
}

.Status_pillLabel {
  color: var(--text-primary);
}

.Status_flag {
  align-items: baseline;
  gap: var(--space-1);
  padding: 1px var(--space-1);
  border-radius: var(--radius-sm);
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: .04em;
  white-space: nowrap;
  border: 1px solid;
  line-height: 1.6;
  display: inline-flex;
}

.Status_flagMark {
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
}

.Status_flagHigh {
  color: var(--critical-text);
  background: var(--critical-subtle);
  border-color: var(--critical-border);
}

.Status_flagLow {
  color: var(--info-text);
  background: var(--info-subtle);
  border-color: var(--info-border);
}

.Status_flagCritical {
  color: var(--critical-solid-text);
  background: var(--critical-solid);
  border-color: var(--critical-solid);
  padding: 1px var(--space-2);
}

.Status_flagNormal {
  color: var(--text-muted);
  background: none;
  border-color: #0000;
}

.Status_delta {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  font-variant-numeric: tabular-nums;
  color: var(--text-muted);
  white-space: nowrap;
  align-items: center;
  gap: 2px;
  display: inline-flex;
}

.Status_deltaWarn {
  color: var(--warning-text);
  font-weight: var(--weight-semibold);
}


/* components/ui/Surface.module.css */
.Surface_card {
  background: var(--surface-raised);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  flex-direction: column;
  min-width: 0;
  display: flex;
}

.Surface_raised {
  border-color: var(--border-default);
  box-shadow: var(--shadow-sm);
}

.Surface_cardHeader {
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border-subtle);
  min-height: var(--control-height-lg);
  display: flex;
}

.Surface_cardTitle {
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--text-primary);
  margin: 0;
}

.Surface_cardSubtitle {
  font-size: var(--text-xs);
  color: var(--text-muted);
  margin: 2px 0 0;
}

.Surface_cardActions {
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
  display: flex;
}

.Surface_cardBody {
  padding: var(--space-4);
  flex: auto;
  min-width: 0;
}

.Surface_cardBodyFlush {
  flex: auto;
  min-width: 0;
  padding: 0;
}

.Surface_cardFooter {
  justify-content: flex-end;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  border-top: 1px solid var(--border-subtle);
  background: var(--surface-sunken);
  display: flex;
}

.Surface_dl {
  gap: var(--space-2) var(--space-4);
  font-size: var(--text-md);
  grid-template-columns: minmax(90px, max-content) 1fr;
  margin: 0;
  display: grid;
}

.Surface_dt {
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  line-height: var(--leading-normal);
  padding-top: 1px;
}

.Surface_dd {
  color: var(--text-primary);
  overflow-wrap: anywhere;
  min-width: 0;
  margin: 0;
}

@media (width <= 480px) {
  .Surface_dl {
    gap: var(--space-1);
    grid-template-columns: 1fr;
  }

  .Surface_dd {
    margin-bottom: var(--space-2);
  }
}

.Surface_tableWrap {
  overscroll-behavior: contain;
  width: 100%;
  min-width: 0;
  overflow: auto;
}

.Surface_table {
  border-collapse: separate;
  border-spacing: 0;
  width: 100%;
  font-size: var(--text-sm);
  text-align: left;
}

.Surface_table caption {
  text-align: left;
  padding: var(--space-2) var(--row-padding-x);
  font-size: var(--text-xs);
  color: var(--text-muted);
}

.Surface_table thead th {
  z-index: 1;
  padding: var(--space-2) var(--row-padding-x);
  background: var(--surface-sunken);
  border-bottom: 1px solid var(--border-default);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  color: var(--text-secondary);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  white-space: nowrap;
  position: sticky;
  top: 0;
}

.Surface_table tbody td {
  padding: var(--row-padding-y) var(--row-padding-x);
  border-bottom: 1px solid var(--border-subtle);
  color: var(--text-primary);
  vertical-align: middle;
}

.Surface_table tbody tr:last-child td {
  border-bottom: 0;
}

.Surface_table tbody tr:hover td {
  background: var(--surface-hover);
}

.Surface_rowSelected td, .Surface_rowSelected th {
  background: var(--surface-selected);
}

.Surface_rowSelected td:first-child, .Surface_rowSelected th:first-child {
  box-shadow: inset 3px 0 0 var(--accent-solid);
}

.Surface_rowCritical td, .Surface_rowCritical th {
  background: var(--critical-subtle);
}

.Surface_rowCritical td:first-child, .Surface_rowCritical th:first-child {
  box-shadow: inset 3px 0 0 var(--critical-solid);
}

.Surface_rowClickable {
  cursor: pointer;
}

.Surface_rowClickable:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -2px;
}

.Surface_numeric {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.Surface_financial, .Surface_financial * {
  font-family: var(--font-mono);
  font-weight: var(--weight-normal);
}

.Surface_actions {
  white-space: nowrap;
  text-align: right;
  width: 1%;
}

.Surface_sortButton {
  align-items: center;
  gap: var(--space-1);
  cursor: pointer;
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  background: none;
  border: 0;
  padding: 0;
  display: inline-flex;
}

.Surface_sortButton:hover {
  color: var(--text-primary);
}

.Surface_sortButton:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: 2px;
}

.Surface_sortMark {
  opacity: .4;
  font-size: 9px;
  line-height: 1;
}

.Surface_sortMarkActive {
  opacity: 1;
  color: var(--accent-text);
}

.Surface_toolbar {
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--row-padding-x);
  border-bottom: 1px solid var(--border-subtle);
  flex-wrap: wrap;
  display: flex;
}

.Surface_toolbarSpacer {
  margin-left: auto;
}

.Surface_count {
  font-size: var(--text-xs);
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}


/* components/ui/Tabs.module.css */
.Tabs_list {
  font-family: var(--font-body-full);
  align-items: stretch;
  gap: var(--space-1);
  border-bottom: 1px solid var(--border-default);
  scrollbar-width: none;
  display: flex;
  overflow-x: auto;
}

.Tabs_list::-webkit-scrollbar {
  display: none;
}

.Tabs_trigger {
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  cursor: pointer;
  font-family: var(--font-body-full);
  font-size: var(--text-md);
  font-weight: var(--weight-medium);
  color: var(--text-secondary);
  white-space: nowrap;
  transition: color var(--duration-fast) var(--ease-out),
    border-color var(--duration-fast) var(--ease-out);
  background: none;
  border: 0;
  border-bottom: 2px solid #0000;
  flex-shrink: 0;
  margin-bottom: -1px;
  display: inline-flex;
}

.Tabs_trigger:hover:not([data-disabled]) {
  color: var(--text-primary);
  border-bottom-color: var(--border-strong);
}

.Tabs_trigger:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: -2px;
}

.Tabs_trigger[data-state="active"] {
  color: var(--accent-text);
  font-weight: var(--weight-semibold);
  border-bottom-color: var(--accent-solid);
}

.Tabs_trigger[data-disabled] {
  color: var(--text-disabled);
  cursor: not-allowed;
}

.Tabs_count {
  min-width: 20px;
  height: 18px;
  padding: 0 var(--space-1);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
  background: var(--surface-sunken);
  border-radius: var(--radius-full);
  justify-content: center;
  align-items: center;
  display: inline-flex;
}

.Tabs_trigger[data-state="active"] .Tabs_count {
  color: var(--accent-subtle-text);
  background: var(--accent-subtle);
}

.Tabs_countAlert, .Tabs_trigger[data-state="active"] .Tabs_countAlert {
  color: var(--critical-solid-text);
  background: var(--critical-solid);
}

.Tabs_countUnread, .Tabs_trigger[data-state="active"] .Tabs_countUnread {
  color: var(--accent-solid-text);
  background: var(--accent-solid);
}

.Tabs_panel {
  padding-top: var(--space-5);
  outline: none;
}

.Tabs_panel:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}

.Tabs_segmented {
  background: var(--surface-sunken);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  gap: 2px;
  padding: 3px;
  display: inline-flex;
}

.Tabs_segment {
  align-items: center;
  gap: var(--space-1);
  padding: 0 var(--space-3);
  height: calc(var(--control-height-md) - 8px);
  border-radius: var(--radius-sm);
  cursor: pointer;
  font-family: var(--font-body-full);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--text-secondary);
  white-space: nowrap;
  transition: background-color var(--duration-fast) var(--ease-out);
  background: none;
  border: 0;
  display: inline-flex;
}

.Tabs_segment:hover:not([data-state="active"]) {
  color: var(--text-primary);
}

.Tabs_segment[data-state="active"] {
  background: var(--surface-raised);
  color: var(--text-primary);
  font-weight: var(--weight-semibold);
  box-shadow: var(--shadow-sm);
}

.Tabs_segment:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: 1px;
}


/* app/portal/portal.css */
/* Portal-wide rules that no one component owns.
 *
 * Phones zoom the page in when a field under 16px takes focus ("Sign in with
 * email" focused the address field at 14px). Every field in the portal is at
 * least 16px, so nothing zooms. Double-tap zoom is off on controls, so a quick
 * second tap on a button is a tap, not a zoom; pinch-zoom still works.
 */
:root[data-theme-lock] input,
:root[data-theme-lock] select,
:root[data-theme-lock] textarea {
  font-size: max(16px, 1em);
}

:root[data-theme-lock] a,
:root[data-theme-lock] button,
:root[data-theme-lock] input,
:root[data-theme-lock] label,
:root[data-theme-lock] select,
:root[data-theme-lock] textarea {
  touch-action: manipulation;
}

