:root{color-scheme:dark;--bg:#04101e;--bg2:#07182a;--card:#0b1d31;--card2:#0e243b;--line:#1a3652;--text:#f5f8ff;--muted:#91a6bc;--blue:#2388ff;--teal:#18d4c4;--violet:#8b5cf6;--green:#2ad274;--amber:#f5a524;--red:#ff5364;--shadow:0 18px 46px rgba(0,0,0,.36);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(circle at 50% -10%,#10305a 0,#061526 30%,#030b15 74%);color:var(--text)}body{overscroll-behavior-y:none}.hidden{display:none!important}.mobile-shell{width:min(100%,540px);min-height:100dvh;margin:auto;background:linear-gradient(180deg,rgba(6,20,36,.97),rgba(3,12,22,.99));position:relative;box-shadow:0 0 80px rgba(0,0,0,.55)}.mobile-topbar{height:62px;padding:env(safe-area-inset-top) 16px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(71,107,145,.28);position:sticky;top:0;z-index:20;background:rgba(4,16,30,.92);backdrop-filter:blur(18px)}.mobile-brand{display:flex;align-items:center;gap:9px;color:var(--text);text-decoration:none;font-size:18px}.mobile-brand b span{color:#8d67ff}.drop{width:23px;height:29px;display:inline-block;background:linear-gradient(145deg,#14d4cb 10%,#2989ff 48%,#8b5cf6 72%);border-radius:65% 35% 55% 45%/72% 42% 58% 28%;transform:rotate(42deg);box-shadow:0 0 20px rgba(37,137,255,.35)}.drop.large{width:48px;height:59px}.icon-button,.sync-button{border:0;background:transparent;color:var(--text);font:inherit;min-width:42px;height:42px;border-radius:12px;display:grid;place-items:center;cursor:pointer}.icon-button.framed{border:1px solid var(--line);background:rgba(12,31,51,.72)}.sync-button{position:relative;font-size:24px}.sync-button b,.bottom-nav i{position:absolute;right:2px;top:1px;background:var(--red);font-size:10px;min-width:17px;height:17px;border-radius:10px;display:grid;place-items:center}.connectivity{height:30px;padding:0 16px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:11px;color:#b8c7d8;background:rgba(12,31,51,.74);border-bottom:1px solid rgba(71,107,145,.2)}.connectivity i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 10px var(--green)}.connectivity.offline{color:#ffd18a;background:rgba(89,53,5,.35)}.connectivity.offline i{background:var(--amber);box-shadow:0 0 10px var(--amber)}.mobile-notice{position:fixed;top:82px;left:50%;transform:translateX(-50%);z-index:50;width:min(calc(100% - 32px),500px);padding:12px 15px;border-radius:13px;background:#13304c;border:1px solid #28557e;box-shadow:var(--shadow);font-size:13px}.mobile-notice.error{background:#391721;border-color:#77303f}.auth-screen{padding:54px 24px calc(24px + env(safe-area-inset-bottom));text-align:center}.auth-mark{margin:0 auto 25px}.eyebrow{margin:0 0 7px;color:#48a5ff;letter-spacing:.12em;font-size:10px;font-weight:800}.auth-screen h1{font-size:32px;line-height:1.13;margin:0 auto 15px;max-width:420px}.muted{color:var(--muted);line-height:1.6;font-size:14px}.stack-card,.hero-card,.risk-card,.profile-card,.info-card{background:linear-gradient(160deg,rgba(14,36,59,.96),rgba(8,24,41,.98));border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.stack-card{padding:17px;display:grid;gap:14px}.auth-screen .stack-card{margin-top:28px;text-align:left}label{display:grid;gap:7px;color:#aac0d5;font-size:12px;font-weight:650}input,select,textarea{width:100%;border:1px solid #254561;background:#071728;color:var(--text);border-radius:11px;padding:12px 13px;font:inherit;font-size:14px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(35,136,255,.14)}textarea{min-height:90px;resize:vertical}.button{border:1px solid transparent;border-radius:11px;padding:12px 15px;font:inherit;font-weight:750;color:white;cursor:pointer;background:#15304c}.button:disabled{opacity:.45;cursor:not-allowed}.button.primary{background:linear-gradient(100deg,#087dff,#6154ef);box-shadow:0 8px 22px rgba(35,136,255,.22)}.button.secondary{border-color:var(--line);background:#0c2137}.button.danger{background:#bd3144}.button.danger-outline{border-color:#71303a;color:#ff8490;background:rgba(88,22,32,.18)}.button.small{padding:9px 12px;font-size:12px}.button.full{width:100%;margin-top:12px}.text-button{border:0;background:none;color:#6bb2ff;font:inherit;font-size:12px;cursor:pointer}.trust-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:24px;color:#9cb2c8;font-size:11px}.trust-row span{padding:6px 9px;border:1px solid #1f3a55;border-radius:20px}.screen{display:none;padding:20px 16px calc(92px + env(safe-area-inset-bottom))}.screen.active{display:block}.screen-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.screen-heading h1{font-size:24px;margin:0}.compact-heading{justify-content:flex-start}.compact-heading>div:nth-child(2){flex:1}.section-row{display:flex;align-items:center;justify-content:space-between;margin:22px 2px 11px}.section-row h2{font-size:15px;margin:0}.small-pill,.online-pill{padding:5px 9px;border-radius:20px;background:#0c2c44;color:#7bc1ff;font-size:11px}.online-pill{color:#65e9a0;background:#0b3629}.hero-card{padding:18px;min-height:155px;position:relative;overflow:hidden}.hero-card:after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(35,136,255,.22),transparent 66%);right:-80px;top:-80px}.hero-card .route-kicker{color:#57aaff;font-size:11px;font-weight:800}.hero-card h2{font-size:22px;margin:7px 0 4px}.hero-card .address{color:var(--muted);font-size:13px}.hero-card .route-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0}.hero-card .route-meta div{padding:9px;border-radius:10px;background:rgba(4,16,30,.6);text-align:center}.hero-card .route-meta strong{display:block;font-size:14px}.hero-card .route-meta span{font-size:9px;color:var(--muted)}.hero-actions{display:flex;gap:9px;position:relative;z-index:2}.hero-actions .button{flex:1}.stop-list,.sync-list{display:grid;gap:10px}.stop-item,.sync-item{width:100%;border:1px solid #183650;background:linear-gradient(150deg,#0b2036,#071728);border-radius:14px;padding:13px;text-align:left;color:var(--text);display:grid;grid-template-columns:35px 1fr auto;gap:11px;align-items:center;cursor:pointer}.stop-item.current{border-color:#247ee5;box-shadow:0 0 0 1px rgba(35,136,255,.16)}.stop-sequence{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:#143958;color:#83c5ff;font-weight:800;font-size:12px}.stop-item.completed .stop-sequence{background:#123d2c;color:#61e89b}.stop-item h3,.sync-item h3{font-size:13px;margin:0 0 4px}.stop-item p,.sync-item p{font-size:11px;color:var(--muted);margin:0}.stop-time{font-size:11px;color:#9db2c8;text-align:right}.stop-time b{display:block;color:#4ea5ff;margin-bottom:3px}.risk-card{padding:14px;margin-top:16px}.risk-card>div{display:flex;gap:11px}.risk-card strong,.risk-card small{display:block}.risk-card strong{font-size:12px}.risk-card small{font-size:11px;line-height:1.5;color:var(--muted);margin-top:3px}.risk-icon{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#50330a;color:#ffc35c}.empty-card{padding:30px 18px;text-align:center;border:1px dashed #25445f;border-radius:14px;color:var(--muted);font-size:13px}.skeleton{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{50%{opacity:.62}}.detail-card{border:1px solid var(--line);background:#0a1d31;border-radius:15px;padding:15px;margin-bottom:12px}.patient-banner{display:flex;align-items:center;justify-content:space-between}.patient-banner h2{font-size:21px;margin:3px 0}.patient-banner p{margin:0;color:var(--muted);font-size:12px}.patient-avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#2167bd,#754ce3);font-weight:800}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.detail-grid div{padding:10px;background:#071728;border-radius:10px}.detail-grid span{display:block;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.detail-grid strong{display:block;font-size:12px;margin-top:4px}.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.action-grid .wide{grid-column:1/-1}.status-banner{padding:12px;border-radius:11px;margin-bottom:12px;display:flex;gap:10px;align-items:flex-start}.status-banner.good{background:#0c3c2c;border:1px solid #1f6e4d}.status-banner.warning{background:#45300b;border:1px solid #7c5714}.status-banner.blocked{background:#421923;border:1px solid #7a2c3d}.status-banner strong{font-size:12px}.status-banner p{font-size:11px;margin:3px 0 0;color:#c2d0df}.test-list,.gate-list{display:grid;gap:8px}.test-row,.gate-row{padding:10px;border-radius:10px;background:#071728;display:flex;align-items:center;justify-content:space-between;gap:10px}.tube-dot{width:10px;height:25px;border-radius:5px;background:#9d65ec;display:inline-block;margin-right:8px}.test-row strong{font-size:11px}.test-row small{color:var(--muted);font-size:10px}.gate-row{font-size:11px}.gate-row.ok{color:#65e89b}.gate-row.block{color:#ffc46a}.verification-form{display:grid;gap:10px}.check-row{display:flex;align-items:center;gap:9px;padding:10px;border:1px solid #1c3a55;border-radius:10px;font-size:12px}.check-row input{width:18px;height:18px;padding:0}.labels-lock{padding:14px;border-radius:11px;text-align:center;background:#121f31;border:1px solid #2a4058;color:#b3c1cf}.labels-lock.unlocked{background:#0d3d2b;border-color:#20694a;color:#7aefac}.labels-lock strong{display:block}.labels-lock small{display:block;margin-top:4px}.sync-summary{grid-template-columns:repeat(3,1fr);text-align:center}.summary-number strong{display:block;font-size:23px}.summary-number span{font-size:9px;color:var(--muted)}.summary-number.warning strong{color:var(--amber)}.sync-item{grid-template-columns:1fr auto}.sync-item .state{padding:4px 7px;border-radius:8px;font-size:9px;background:#163452;color:#73b8ff}.sync-item .state.conflict,.sync-item .state.rejected{background:#4d2028;color:#ff9aa4}.info-card{padding:15px;margin-top:18px}.info-card strong{font-size:12px}.info-card p{font-size:11px;color:var(--muted);line-height:1.6;margin:8px 0 0}.profile-card{padding:17px;display:flex;align-items:center;gap:14px}.avatar{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#1d8ad9,#8454e8);font-weight:800}.profile-card h2{margin:0 0 3px}.profile-card p{color:var(--muted);font-size:12px;margin:0 0 7px}.profile-details{margin-top:12px}.profile-details>div{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid rgba(45,75,102,.48);padding-bottom:12px}.profile-details>div:last-child{border:0;padding-bottom:0}.profile-details span{color:var(--muted);font-size:11px}.profile-details strong{font-size:11px;text-align:right}.legal-note{font-size:10px;color:#738ba2;line-height:1.55;margin:18px 6px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);z-index:30;width:min(100%,540px);height:calc(67px + env(safe-area-inset-bottom));padding:7px 10px env(safe-area-inset-bottom);background:rgba(4,15,27,.96);backdrop-filter:blur(18px);border-top:1px solid #1b354e;display:grid;grid-template-columns:repeat(4,1fr)}.bottom-nav button{border:0;background:none;color:#7790a8;display:grid;place-items:center;gap:1px;position:relative}.bottom-nav button.active{color:#3fa0ff}.bottom-nav span{font-size:19px}.bottom-nav b{font-size:9px}.bottom-nav i{right:20%;top:0;font-style:normal}.mobile-dialog{width:min(calc(100% - 28px),500px);border:1px solid #284866;border-radius:18px;background:#081a2c;color:var(--text);padding:0;box-shadow:var(--shadow)}.mobile-dialog::backdrop{background:rgba(0,0,0,.68);backdrop-filter:blur(4px)}.mobile-dialog form{padding:18px;display:grid;gap:14px}.dialog-head{display:flex;justify-content:space-between}.dialog-head h2{margin:0}.dialog-actions{display:flex;justify-content:flex-end;gap:9px}@media(min-width:541px){body{padding:24px 0}.mobile-shell{min-height:calc(100dvh - 48px);border:1px solid #203c58;border-radius:28px;overflow:hidden}.mobile-topbar{position:relative}.bottom-nav{bottom:24px;border-radius:0 0 28px 28px}}@media(max-width:360px){.screen{padding-left:12px;padding-right:12px}.hero-card .route-meta{gap:5px}.detail-grid{grid-template-columns:1fr}.auth-screen h1{font-size:27px}}

/* r009 field workflow extensions */
.section-row.compact{margin:0 0 11px}.test-row>span{display:flex;align-items:center;min-width:0}.test-row>span>strong,.test-row>span>small{display:block}.test-row>span>small{margin-top:3px}.test-row>b{font-size:11px;white-space:nowrap}.mini-tag{font-style:normal;font-size:9px;font-weight:800;padding:4px 7px;border-radius:10px;white-space:nowrap}.mini-tag.warning{background:#47320d;color:#ffca6c}.mini-tag.violet{background:#31205a;color:#c7a8ff}.mini-tag.success{background:#123d2c;color:#6ee7a2}.state-tag{display:inline-flex;align-items:center;padding:4px 7px;border-radius:9px;font-size:9px;font-weight:800}.state-tag.neutral{background:#172c40;color:#a8bacb}.state-tag.blue{background:#15365a;color:#72b5ff}.state-tag.violet{background:#30215c;color:#c5a7ff}.state-tag.success{background:#123d2c;color:#67e79d}.state-tag.failed{background:#4d2028;color:#ff98a4}.test-details{margin-top:11px;border-top:1px solid rgba(49,78,104,.58);padding-top:10px}.test-details summary{cursor:pointer;color:#6bb2ff;font-size:11px;font-weight:700;margin-bottom:10px}.empty{color:var(--muted);font-size:12px;text-align:center;padding:12px}.sync-item .state.applied,.sync-item .state.replayed{background:#123d2c;color:#6ee7a2}.sync-item .state.syncing{background:#31205a;color:#c7a8ff}.spinning{display:inline-block;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.icon-button:disabled{opacity:.4;cursor:not-allowed}.mobile-dialog select option{background:#081a2c;color:var(--text)}

/* r010 label, tube, and collection workflow */
.collection-workflow{display:grid;gap:11px}.collection-progress{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.collection-progress>div{padding:10px 7px;border-radius:10px;background:#071728;text-align:center}.collection-progress strong,.collection-progress span{display:block}.collection-progress strong{font-size:17px}.collection-progress span{font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.specimen-list{display:grid;gap:9px}.specimen-card{padding:12px;border:1px solid #1c3a55;border-radius:12px;background:#071728}.specimen-card-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.specimen-card h3{font-size:12px;margin:0 0 4px}.specimen-card p{font-size:10px;color:var(--muted);margin:0}.specimen-barcode{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#7fc1ff;font-size:9px;word-break:break-all;margin-top:8px}.specimen-actions{display:flex;gap:7px;margin-top:10px}.specimen-actions .button{flex:1;padding:9px 7px;font-size:10px}.collection-warning-card{padding:11px;border-radius:11px;border:1px solid #7a5414;background:#3d2b0b;color:#ffd17b;font-size:11px}.print-preview-body{max-height:50vh;overflow:auto;display:grid;gap:10px}.print-preview-label{padding:12px;border:1px solid #2a4965;border-radius:11px;background:#f5f7fa;color:#071728}.print-preview-label strong,.print-preview-label small,.print-preview-label code{display:block}.print-preview-label small{margin-top:4px;color:#42546a}.print-preview-label code{font-size:8px;white-space:pre-wrap;word-break:break-all;margin-top:8px;padding-top:8px;border-top:1px dashed #9aa8b6}.wide-dialog{width:min(calc(100% - 20px),540px)}.mobile-form-note{font-size:10px;line-height:1.55;color:var(--muted);margin:0}.handling-confirmation-list{display:grid;gap:8px}.collection-complete-banner{padding:15px;border-radius:12px;background:#0d3d2b;border:1px solid #20694a;text-align:center}.collection-complete-banner strong{display:block;color:#79efad}.collection-complete-banner small{display:block;color:#aed3bd;margin-top:4px}.button.compact{padding:8px 9px;font-size:10px}.button.warning{background:#a86c12;color:white}.collection-header-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.collection-header-row h2{font-size:17px;margin:4px 0}.collection-header-row p{font-size:10px;color:var(--muted);margin:0}.collection-action-stack{display:grid;gap:8px}.label-job-card{padding:11px;border-radius:11px;background:#071728;border:1px solid #1c3a55}.label-job-card>div{display:flex;justify-content:space-between;gap:10px}.label-job-card small{display:block;color:var(--muted);font-size:9px;margin-top:4px}
