:root{--color-primary: #0e7c86;--color-primary-dark: #095a62;--color-accent: #1f9d55;--color-danger: #c0392b;--color-warning: #b8860b;--color-bg: #f5f7f8;--color-surface: #ffffff;--color-border: #dfe5e7;--color-text: #1b2528;--color-text-muted: #5c6b70;--sidebar-w-expanded: 15rem;--sidebar-w-collapsed: 4rem}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,Arial,sans-serif;background:var(--color-bg);color:var(--color-text)}a{color:var(--color-primary)}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:.95rem}.top-nav{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.top-nav .brand{font-weight:700;font-size:1.1rem;color:var(--color-primary-dark);text-decoration:none}.top-nav nav{display:flex;gap:1.25rem;align-items:center}.top-nav nav a,.top-nav nav button.linklike{color:var(--color-text);text-decoration:none;background:none;border:none;font-size:.95rem;padding:0}.top-nav nav a.active{color:var(--color-primary);font-weight:600}.page-container{max-width:1100px;margin:0 auto;padding:1.5rem}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:1.25rem}.card+.card{margin-top:1rem}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1rem;border-radius:8px;border:1px solid var(--color-primary);background:var(--color-primary);color:#fff;font-weight:600;font-size:.9rem}.btn:hover{background:var(--color-primary-dark)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--color-surface);color:var(--color-primary)}.btn-secondary:hover{background:#eef6f7}.btn-danger{background:var(--color-danger);border-color:var(--color-danger)}.btn-small{padding:.3rem .65rem;font-size:.8rem}.btn-google{background:#fff;color:#3c4043;border-color:var(--color-border)}.btn-google:hover{background:#f7f7f8}.field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.85rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.form-row-3{grid-template-columns:.8fr 1fr 1fr}.form-row-4{grid-template-columns:1fr 1fr 1fr 1fr}@media(max-width:560px){.form-row,.form-row-3,.form-row-4{grid-template-columns:1fr}}.field label{font-size:.82rem;font-weight:600;color:var(--color-text-muted)}.field input,.field select,.field textarea{padding:.5rem .65rem;border:1px solid var(--color-border);border-radius:6px;background:#fff}.field-row{display:flex;gap:.75rem;flex-wrap:wrap}.field-row>.field{flex:1;min-width:160px}.error-banner{background:#fdecea;border:1px solid #f5c6cb;color:var(--color-danger);padding:.6rem .9rem;border-radius:6px;margin-bottom:1rem;font-size:.9rem}.info-banner{background:#eaf7f6;border:1px solid #bfe6e2;color:var(--color-primary-dark);padding:.6rem .9rem;border-radius:6px;margin-bottom:1rem;font-size:.9rem}table.data-grid{width:100%;border-collapse:collapse;font-size:.9rem}table.data-grid th{text-align:left;padding:.55rem .6rem;border-bottom:2px solid var(--color-border);color:var(--color-text-muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.02em}table.data-grid td{padding:.55rem .6rem;border-bottom:1px solid var(--color-border)}table.data-grid tbody tr:hover{background:#f8fbfb}.grid-refetching{opacity:.55;transition:opacity .15s}.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600}.badge-registered{background:#eef1f2;color:#4a5568}.badge-sample_collected{background:#fef3e2;color:#b8860b}.badge-processing{background:#e6f0fb;color:#2563eb}.badge-report_ready{background:#e7f8ee;color:#1f9d55}.badge-delivered{background:#eef1ff;color:#4338ca}.flag-normal{color:var(--color-text)}.flag-low{color:#2563eb;font-weight:700}.flag-high,.flag-abnormal{color:var(--color-danger);font-weight:700}.dm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#141e2080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.dm-card{display:flex;flex-direction:column;background:var(--color-surface);border-radius:12px;width:100%;max-width:560px;max-height:86vh;overflow:hidden;box-shadow:0 20px 60px #00000040}.dm-card-wide{max-width:820px}.dm-head{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border)}.dm-head h3{margin:0;font-size:1.05rem}.dm-close{background:none;border:none;font-size:1.5rem;line-height:1;color:var(--color-text-muted)}.dm-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:1.1rem 1.25rem}.dm-foot{flex-shrink:0;display:flex;justify-content:flex-end;gap:.6rem;padding:.9rem 1.25rem;border-top:1px solid var(--color-border)}.admin-shell{display:flex;min-height:100vh}.admin-sidebar{flex-shrink:0;width:var(--sidebar-w-expanded);background:#0c2b30;color:#dfefee;display:flex;flex-direction:column;transition:width .15s ease}.admin-sidebar.collapsed{width:var(--sidebar-w-collapsed)}.admin-sidebar .side-brand{padding:1.1rem 1rem;font-weight:700;white-space:nowrap;overflow:hidden;border-bottom:1px solid rgba(255,255,255,.08)}.admin-sidebar nav{flex:1;padding:.6rem .4rem;display:flex;flex-direction:column;gap:.2rem}.admin-sidebar nav button{display:flex;align-items:center;gap:.7rem;background:none;border:none;color:#cfe4e2;padding:.6rem .7rem;border-radius:8px;text-align:left;font-size:.92rem;white-space:nowrap;overflow:hidden}.admin-sidebar nav button:hover{background:#ffffff14}.admin-sidebar nav button.active{background:var(--color-primary);color:#fff}.admin-sidebar .side-icon{flex-shrink:0;width:1.3rem;text-align:center;font-weight:700}.admin-sidebar .side-footer{border-top:1px solid rgba(255,255,255,.08);padding:.5rem}.admin-sidebar .side-footer button{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;background:none;border:none;color:#cfe4e2;padding:.6rem;border-radius:8px}.admin-sidebar .side-footer button:hover{background:#ffffff14}.admin-main{flex:1;min-width:0}.admin-topbar{display:flex;justify-content:space-between;align-items:center;padding:.9rem 1.5rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.admin-content{padding:1.5rem;max-width:1200px}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:1.25rem}.summary-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:1rem}.summary-card .value{font-size:1.7rem;font-weight:700;color:var(--color-primary-dark)}.summary-card .label{font-size:.82rem;color:var(--color-text-muted)}.tabs{display:flex;gap:.4rem;border-bottom:1px solid var(--color-border);margin-bottom:1.1rem}.tabs button{background:none;border:none;padding:.6rem .9rem;font-size:.92rem;color:var(--color-text-muted);border-bottom:2px solid transparent}.tabs button.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#eef7f7,#f5f7f8);padding:1rem}.auth-card{width:100%;max-width:400px;background:#fff;border-radius:14px;padding:2rem;box-shadow:0 10px 40px #00000014}.auth-card h1{font-size:1.3rem;margin:0 0 .3rem;color:var(--color-primary-dark)}.auth-card .sub{color:var(--color-text-muted);font-size:.88rem;margin-bottom:1.2rem}.auth-divider{text-align:center;color:var(--color-text-muted);font-size:.8rem;margin:.85rem 0}.auth-switch{text-align:center;margin-top:1rem;font-size:.88rem;color:var(--color-text-muted)}.auth-switch button{background:none;border:none;color:var(--color-primary);font-weight:600}.empty-state{text-align:center;padding:2.5rem 1rem;color:var(--color-text-muted)}.repeat-row-table{width:100%;border-collapse:collapse}.repeat-row-table th{text-align:left;font-size:.78rem;color:var(--color-text-muted);padding:.3rem .4rem}.repeat-row-table td{padding:.25rem .4rem}.repeat-row-table input,.repeat-row-table select{width:100%;padding:.35rem .4rem;border:1px solid var(--color-border);border-radius:5px}@media(max-width:768px){.admin-sidebar{position:fixed;z-index:900;height:100vh}.admin-sidebar:not(.mobile-open){transform:translate(-100%)}.admin-main{width:100%}}
