:root{--canvas:#f2f4f7;--canvas-lift:#e9edf3;--surface:#fff;--surface-soft:#f8fafc;--surface-strong:#eef2f7;--surface-selected:#eff6ff;--surface-inverse:#0f172a;--surface-inverse-2:#172033;--ink:#111827;--ink-soft:#334155;--muted:#64748b;--subtle:#94a3b8;--hairline:#d9e0ea;--hairline-strong:#b8c4d4;--brand:#2563eb;--brand-press:#1d4ed8;--brand-soft:#dbeafe;--success:#0f9f6e;--warning:#b7791f;--danger:#dc2626;--steel:#475569;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--shadow-panel:0 16px 40px #0f172a14, 0 1px 0 #fffc inset;--shadow-soft:0 8px 22px #0f172a14;--shadow-pressed:0 5px 14px #0f172a1a;--focus:0 0 0 3px #2563eb2e;--font-ui:"IBM Plex Sans", "HarmonyOS Sans SC", "MiSans", "Microsoft YaHei", "PingFang SC", "Segoe UI", sans-serif;font-family:var(--font-ui);letter-spacing:0;color:var(--ink);background:var(--canvas);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.45}*{box-sizing:border-box}html{background:var(--canvas)}body{-webkit-tap-highlight-color:transparent;min-width:320px;margin:0;overflow-x:hidden}#root{min-height:100svh}::selection{color:#fff;background:var(--brand)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#64748b4d padding-box padding-box;border:3px solid #0000;border-radius:999px}.app-shell{background:linear-gradient(90deg, #94a3b814 1px, transparent 1px), linear-gradient(180deg, #94a3b80f 1px, transparent 1px), linear-gradient(180deg, #ffffffe0 0, #fff0 240px), linear-gradient(135deg, var(--canvas) 0, var(--canvas-lift) 100%);background-size:56px 56px,56px 56px,auto,auto;flex-direction:column;min-height:100svh;display:flex}.app-shell:before{content:"";z-index:50;background:#ffffffd1;height:1px;position:fixed;inset:0 0 auto}.app-header{border-radius:var(--radius-md);-webkit-backdrop-filter:blur(24px)saturate(1.15);backdrop-filter:blur(24px)saturate(1.15);z-index:20;background:linear-gradient(#fffffff0,#ffffffbd);border:1px solid #ffffffb8;justify-content:space-between;align-items:center;gap:24px;width:min(1220px,100% - 32px);min-height:78px;margin:18px auto 0;padding:14px 16px;display:flex;position:sticky;top:12px;box-shadow:0 18px 44px #0f172a1c,inset 0 1px #ffffffdb}.brand,.status-strip,.tabbar,.panel-title,.button-row,.timer-panel,.assist-strip,.metric-card,.search-box,.progress-head,.progress-row{align-items:center;display:flex}.brand{gap:14px;min-width:0}.brand svg{color:#fff;border-radius:var(--radius-md);background:linear-gradient(145deg,#1e293b 0%,#0f172a 62%,#0b1120 100%);border:1px solid #ffffff24;width:42px;height:42px;padding:9px;box-shadow:0 12px 26px #0f172a40,inset 0 1px #ffffff26}.brand div{gap:2px;min-width:0;display:grid}.brand strong{color:var(--ink);font-size:19px;font-weight:760;line-height:1.15}.brand span,.status-strip span,.panel-title span,.section-label,.shift-pill,.metric-card span,.assist-strip span,.toast-bar{color:var(--muted);letter-spacing:.16px;font-size:12px}.brand span{font-weight:650}.status-strip{flex-wrap:wrap;justify-content:flex-end;gap:8px}.status-strip span,.shift-pill{border-radius:var(--radius-md);min-height:32px;color:var(--ink-soft);white-space:nowrap;background:linear-gradient(#ffffffe6,#f8fafcd6);border:1px solid #d9e0eae6;align-items:center;gap:7px;padding:5px 11px;display:inline-flex;box-shadow:inset 0 1px #ffffffdb}.status-strip svg,.shift-pill svg{width:15px;height:15px;color:var(--brand)}.tabbar{border-radius:var(--radius-md);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);z-index:19;background:#ffffffa3;border:1px solid #ffffffbd;gap:6px;width:min(1220px,100% - 32px);margin:12px auto 0;padding:6px;position:sticky;top:104px;box-shadow:0 10px 28px #0f172a14,inset 0 1px #fffc}button,.upload-button{border:1px solid var(--brand);border-radius:var(--radius-md);color:#fff;background:linear-gradient(180deg, #3b82f6, var(--brand));min-height:44px;font:inherit;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:8px;padding:11px 16px;font-size:14px;font-weight:700;line-height:1;transition:background-color .14s,border-color .14s,color .14s,transform .14s,box-shadow .14s;display:inline-flex;box-shadow:0 10px 20px #2563eb2e}button:hover,.upload-button:hover{background:linear-gradient(180deg, #2f73ea, var(--brand-press));border-color:var(--brand-press);box-shadow:0 12px 22px #2563eb3d}button:active{box-shadow:var(--shadow-pressed);transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed;transform:none}button svg,.upload-button svg{flex:none;width:17px;height:17px}.tabbar button{min-height:44px;color:var(--muted);border-radius:var(--radius-sm);box-shadow:none;background:0 0;border:1px solid #0000;padding:0 18px}.tabbar button:hover{color:var(--ink);background:#f8fafce0}.tabbar button.active{color:var(--brand);background:var(--surface-selected);border-color:#2563eb2e;box-shadow:0 8px 18px #2563eb1f,inset 0 1px #fffc}.single-tabbar{justify-content:flex-start}.single-tabbar button{min-width:150px}.secondary{color:var(--ink);background:var(--surface);border-color:var(--hairline-strong);box-shadow:none}.secondary:hover{color:var(--brand);background:var(--brand-soft);border-color:var(--brand)}.danger{background:var(--danger);border-color:var(--danger);box-shadow:0 10px 20px #dc262629}.danger:hover{background:#8f1d14;border-color:#8f1d14}.header-action{min-height:32px;padding:5px 11px;font-size:12px;font-weight:700}.icon-button{min-width:94px}.page-grid{gap:16px;width:min(1220px,100% - 32px);min-width:0;margin:0 auto;padding:18px 0 112px;display:grid}.login-shell{background:linear-gradient(120deg,#0f172aeb,#1e293bb8),url(/assets/wheel-login.jpg) 50%/cover no-repeat;place-items:center;min-height:100svh;padding:28px;display:grid}.login-shell:before{background:linear-gradient(90deg,#0000,#ffffff85,#0000)}.login-screen{border-radius:var(--radius-md);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffff1f;border:1px solid #ffffff2e;grid-template-columns:minmax(0,1.1fr) 420px;gap:10px;width:min(1040px,100%);min-height:min(680px,100svh - 56px);padding:10px;display:grid;box-shadow:0 34px 90px #00000057,inset 0 1px #ffffff2e}.login-visual{border-radius:var(--radius-md);isolation:isolate;background:linear-gradient(#0f172a05,#0f172ad6),url(/assets/wheel-login.jpg) 50%/cover no-repeat;min-height:560px;position:relative;overflow:hidden}.login-visual:before{content:"";z-index:-1;background:linear-gradient(90deg,#0f172a3d,#0000 48%),radial-gradient(circle at 70% 35%,#ffffff24,#0000 32%);position:absolute;inset:0}.login-visual-copy{color:#fff;text-shadow:0 10px 28px #00000061;gap:6px;display:grid;position:absolute;bottom:28px;left:28px;right:28px}.login-visual-copy span{border-radius:var(--radius-sm);color:#ffffffd1;letter-spacing:1.1px;background:#0f172a57;border:1px solid #ffffff57;width:max-content;padding:6px 9px;font-size:11px;font-weight:800}.login-visual-copy strong{font-size:clamp(34px,5vw,58px);font-weight:820;line-height:1}.login-visual-copy em{color:#ffffffdb;font-size:17px;font-style:normal;font-weight:700}.login-card{align-content:center;gap:22px;padding:28px;display:grid}.login-brand{padding-bottom:4px}.login-form{gap:14px;display:grid}.login-message{border-radius:var(--radius-md);color:#991b1b;text-align:center;background:#fef2f2f0;border:1px solid #dc26262e;padding:10px 12px;font-size:13px;font-weight:750;line-height:1.4}.login-footnote{color:var(--muted);text-align:center;font-size:12px;font-weight:700}.info-list{gap:9px;display:grid}.info-list span{border-radius:var(--radius-md);color:var(--ink-soft);background:#f8fafcb8;border:1px solid #cbd5e1b8;padding:10px 12px;font-size:13px;font-weight:650;display:block}.page-grid>*,.dashboard-page>*{min-width:0}.capture-grid{grid-template-columns:360px minmax(0,1fr) 340px;align-items:start}.simple-capture-grid{grid-template-columns:360px minmax(0,1fr);align-items:start}.quick-panel,.stage-panel{grid-column:1}.form-panel{grid-area:1/2/span 2}.simple-form-panel{grid-row:1/span 2}.queue-panel{grid-area:1/3/span 2}.setup-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.setup-grid .table-panel{grid-column:1/-1}.panel,.metric-card{border-radius:var(--radius-md);box-shadow:var(--shadow-panel), 0 0 0 1px #94a3b824;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:linear-gradient(#fffffff5,#ffffffe0);border:1px solid #ffffffbd}.panel{padding:18px;position:relative;overflow:hidden}.panel:after,.metric-card:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#fffffff0,#0000);height:1px;position:absolute;inset:0 0 auto}.form-panel{border-top:0}.simple-form-panel{position:relative;overflow:hidden}.simple-form-panel:before{content:"";pointer-events:none;background:linear-gradient(90deg,#2563eb21,#0f172a0d),linear-gradient(#ffffff8c,#0000);height:68px;position:absolute;inset:0 0 auto}.panel-title{z-index:1;justify-content:space-between;gap:14px;margin-bottom:16px;position:relative}.panel-title div{gap:3px;min-width:0;display:grid}.panel-title strong{color:var(--ink);overflow-wrap:anywhere;font-size:21px;font-weight:750;line-height:1.2}.section-label{color:var(--ink-soft);margin-bottom:12px;font-weight:700}textarea,input,select{box-sizing:border-box;border-radius:var(--radius-md);width:100%;min-width:0;min-height:50px;color:var(--ink);font:inherit;letter-spacing:0;background:linear-gradient(#ffffffe6,#f8fafcfa);border:1px solid #cbd5e1e6;padding:11px 13px;font-size:15px;transition:background-color .14s,border-color .14s,box-shadow .14s;box-shadow:inset 0 1px #ffffffd1}textarea:focus,input:focus,select:focus,button:focus-visible,.upload-button:focus-within{border-color:var(--brand);box-shadow:var(--focus);background:#fff;outline:0}textarea{resize:vertical;min-height:112px}label{color:var(--muted);letter-spacing:.16px;z-index:1;gap:7px;font-size:12px;font-weight:700;display:grid;position:relative}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:16px;display:grid}.metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.wide-label{margin:14px 0 16px}.button-row{flex-wrap:wrap;gap:8px;margin-top:12px}.button-row.compact{margin-top:0}.scanner-box{gap:10px;margin-bottom:12px;display:grid}.scanner-box video{aspect-ratio:4/3;object-fit:cover;background:#0f1412;border:1px solid #2a3540;width:100%}.inline-alert{color:var(--danger);margin:0 0 10px;font-weight:700}.stage-list{background:0 0;border:0;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;display:grid}.stage{min-height:82px;color:var(--ink);border-radius:var(--radius-md);background:#f8fafcf0;border:1px solid #d9e0eaeb;flex-direction:column;gap:7px;padding:10px 6px;position:relative;overflow:hidden;box-shadow:inset 0 1px #fffc,0 5px 16px #0f172a0a}.stage:before{content:"";background:var(--stage-color);opacity:.32;height:3px;position:absolute;inset:0 0 auto}.stage:last-child{border-right:1px solid #d9e0eaeb}.stage:hover{color:var(--ink);background:#fff;border-color:#2563eb38}.stage span{overflow-wrap:anywhere}.stage svg{width:18px;height:18px;color:var(--stage-color)}.stage.active{color:#fff;background:linear-gradient(145deg, var(--surface-inverse), #1d2a44);box-shadow:0 16px 28px #0f172a33, inset 0 3px 0 var(--stage-color), inset 0 1px 0 #ffffff2e;border-color:#ffffff2e}.stage.active:before{opacity:1}.stage.active svg{color:#fff}.timer-panel{border:1px solid var(--hairline);background:linear-gradient(90deg, var(--brand) 0 4px, transparent 4px), var(--surface-soft);justify-content:space-between;gap:14px;margin:4px 0 16px;padding:15px}.timer-panel>div:first-child{grid-template-columns:auto auto;align-items:center;gap:2px 10px;display:grid}.timer-panel svg{color:var(--warning);grid-row:span 2}.timer-panel strong{color:var(--ink);font-size:30px;font-weight:750;line-height:1}.timer-panel span{color:var(--muted);font-size:12px}.unit-input{grid-template-columns:minmax(0,1fr) 58px;display:grid}.unit-input input{border-radius:var(--radius-md) 0 0 var(--radius-md);border-right:0}.unit-input span{border-radius:0 var(--radius-md) var(--radius-md) 0;min-height:50px;color:var(--muted);background:var(--surface-strong);border:1px solid #cbd5e1e6;place-items:center;font-size:13px;font-weight:700;display:grid}.simple-form-panel .unit-input input{font-size:24px;font-weight:760;line-height:1}.simple-form-panel .unit-input span{color:var(--brand);background:var(--brand-soft);border-color:#2563eb33}.table-action{min-height:34px;padding:8px 11px}.account-admin-panel{min-height:100%}.account-form-grid{align-items:end}.role-badge{border-radius:var(--radius-sm);min-height:30px;color:var(--brand);background:var(--brand-soft);border:1px solid #2563eb2e;align-items:center;padding:5px 10px;font-size:12px;font-weight:800;display:inline-flex}.table-actions{flex-wrap:wrap;gap:8px;display:flex}.assist-strip{border:1px solid var(--hairline);background:var(--surface);flex-wrap:wrap;gap:0;margin-top:2px}.assist-strip span{border-right:1px solid var(--hairline);min-height:42px;color:var(--ink-soft);align-items:center;gap:7px;padding:9px 12px;font-weight:700;display:inline-flex}.assist-strip span:last-child{border-right:0}.assist-strip svg{width:16px;height:16px;color:var(--brand)}.save-button{background:linear-gradient(180deg, #1e293b, var(--surface-inverse));border-color:#0f172ae6;width:100%;min-height:58px;font-size:16px;position:relative;overflow:hidden;box-shadow:0 18px 34px #0f172a38}.save-button:after{content:"";pointer-events:none;background:linear-gradient(120deg,#0000 0 30%,#ffffff2e 45%,#0000 60%);transition:transform .48s;position:absolute;inset:0;transform:translate(-120%)}.save-button:hover:after{transform:translate(120%)}.save-button:hover{background:var(--brand);border-color:var(--brand)}.specimen-list{border:1px solid var(--hairline);background:var(--surface);gap:0;max-height:590px;display:grid;overflow:auto}.specimen-row{min-height:58px;color:var(--ink);background:var(--surface);border:0;border-bottom:1px solid var(--hairline);text-align:left;grid-template-columns:82px minmax(0,1fr) 50px;display:grid}.specimen-row:last-child{border-bottom:0}.specimen-row:hover,.specimen-row.active{color:var(--ink);background:var(--brand-soft)}.specimen-row.active{box-shadow:inset 4px 0 0 var(--brand)}meter{width:100%;height:9px}meter::-webkit-meter-bar{background:var(--surface-strong);border:0;border-radius:0}meter::-webkit-meter-optimum-value{background:var(--brand)}.dashboard-page{gap:16px;width:min(1220px,100% - 32px);min-width:0;margin:0 auto;padding:18px 0 112px;display:grid}.metrics-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.metric-card{border-top:0;gap:12px;min-height:108px;padding:16px;position:relative;overflow:hidden}.metric-card:before{content:"";background:linear-gradient(180deg, var(--brand), #93c5fd);width:4px;position:absolute;inset:0 auto 0 0}.metric-card svg{width:32px;height:32px;color:var(--brand);background:var(--brand-soft);border-radius:var(--radius-md);padding:6px}.metric-card strong{color:var(--ink);margin-left:auto;font-size:36px;font-weight:750;line-height:1}.filter-panel{grid-template-columns:minmax(260px,1fr) 200px 170px auto auto;align-items:stretch;gap:10px;display:grid}.search-box{border-radius:var(--radius-md);background:#f8fafcf5;border:1px solid #cbd5e1e6;gap:9px;padding-left:12px}.search-box:focus-within{border-color:var(--brand);box-shadow:var(--focus)}.search-box svg{width:18px;height:18px;color:var(--muted)}.search-box input{box-shadow:none;border:0}.progress-table{gap:8px;padding-bottom:2px;display:grid;overflow-x:auto}.progress-head,.progress-row{grid-template-columns:minmax(250px,1.5fr) repeat(5,74px) 58px;align-items:center;gap:8px;min-width:760px;display:grid}.progress-head{color:var(--muted);font-size:12px;font-weight:800}.progress-row{border-radius:var(--radius-md);background:linear-gradient(#fffffff5,#f8fafceb);border:1px solid #d9e0eae6;min-height:50px;padding:0 12px}.progress-row strong{overflow-wrap:anywhere}.progress-row em{color:var(--muted);font-style:normal;font-weight:800}.done-dot,.empty-dot{border-radius:50%;place-self:center;width:22px;height:22px;display:inline-grid}.done-dot{background:linear-gradient(135deg, transparent 0 40%, #ffffff59 40% 46%, transparent 46%), var(--brand)}.empty-dot{border:2px solid var(--hairline-strong);background:#fff}.data-table{border-radius:var(--radius-md);border:1px solid #d9e0eae6;width:100%;overflow:auto;box-shadow:inset 0 1px #ffffffd1}table{border-collapse:collapse;text-align:left;background:#fffffff5;width:100%;min-width:960px}th,td{border-bottom:1px solid var(--hairline);vertical-align:middle;white-space:nowrap;padding:13px 12px}th{color:var(--ink-soft);z-index:1;background:#f1f5f9;font-size:12px;font-weight:800;position:sticky;top:0}td{color:var(--ink);font-size:14px}tbody tr:hover td{background:var(--surface-selected)}.upload-button{position:relative;overflow:hidden}.upload-button input{opacity:0;cursor:pointer;position:absolute;inset:0}.toast-bar{border-radius:var(--radius-md);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);width:min(760px,100% - 32px);min-height:46px;color:var(--ink-soft);z-index:30;background:#fffffff5;border:1px solid #d9e0eaf2;justify-content:center;align-items:center;padding:10px 16px;font-weight:650;display:flex;position:fixed;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 18px 45px #0f172a29}@media (width<=1180px){.capture-grid{grid-template-columns:minmax(0,1fr) 310px}.simple-capture-grid{grid-template-columns:1fr}.quick-panel,.stage-panel,.form-panel{grid-column:1}.form-panel{grid-row:auto}.queue-panel{grid-area:1/2/span 3}.stage-list{grid-template-columns:repeat(5,minmax(70px,1fr))}}@media (width<=820px){.app-shell{background:linear-gradient(180deg, #ffffffe6, #fff0 210px), var(--canvas);background-size:auto}.login-shell{padding:calc(10px + env(safe-area-inset-top)) 10px 14px;background:linear-gradient(#0f172a75,#0f172adb),url(/assets/wheel-login.jpg) 50%/cover no-repeat;place-items:start center;overflow-y:auto}.login-screen{grid-template-columns:1fr;align-content:start;gap:8px;min-height:0;padding:8px}.login-visual{min-height:clamp(185px,31svh,250px)}.login-visual-copy{bottom:18px;left:18px;right:18px}.login-card{gap:16px;padding:18px}.login-form{gap:12px}.login-card .save-button{min-height:54px}.app-header{border-radius:var(--radius-md);flex-direction:column;align-items:flex-start;width:calc(100% - 24px);margin-top:12px;padding:14px;position:sticky;top:10px}.brand strong{font-size:18px}.status-strip{grid-template-columns:repeat(3,minmax(0,1fr));justify-content:flex-start;width:100%;display:grid}.status-strip span{justify-content:center;padding-inline:8px}.tabbar{width:calc(100% - 24px);top:auto;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:40;border-radius:var(--radius-md);grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0;padding:6px;display:grid;position:fixed;overflow-x:visible;box-shadow:0 18px 42px #0f172a38,inset 0 1px #ffffffdb}.single-tabbar{grid-template-columns:1fr}.tabbar button{flex-direction:column;gap:4px;min-width:0;min-height:52px;padding:7px 6px;font-size:12px}.single-tabbar button{min-width:0}.tabbar button svg{width:18px;height:18px}.page-grid,.dashboard-page{width:calc(100% - 24px);padding:12px 0 calc(112px + env(safe-area-inset-bottom))}.capture-grid,.setup-grid,.metrics-row,.filter-panel{grid-template-columns:1fr}.quick-panel,.stage-panel,.form-panel,.queue-panel{grid-area:auto}.panel{border-radius:var(--radius-md);padding:14px}.form-grid,.metrics-grid{grid-template-columns:1fr}.stage-list{scroll-snap-type:x mandatory;grid-template-columns:repeat(5,minmax(68px,1fr));padding-bottom:2px;overflow-x:auto}.stage{scroll-snap-align:start;min-height:66px;padding-inline:8px}.timer-panel{flex-direction:column;align-items:stretch}.timer-panel .button-row button{flex:120px}.metric-card{min-height:78px}.metric-card strong{font-size:30px}.toast-bar{bottom:calc(82px + env(safe-area-inset-bottom));width:calc(100% - 24px)}}
