:root{color:#17231e;font-synthesis:none;text-rendering:optimizelegibility;background:#f3f5f2;font-family:Inter,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1,h2,h3,.logo strong{font-family:Aptos Display,Inter,Segoe UI,sans-serif}.eyebrow{color:#16805b;letter-spacing:.14em;text-transform:uppercase;margin:0 0 8px;font-size:.72rem;font-weight:800}.brand-mark,.logo>span{color:#fff;background:#146c4f;border-radius:13px;place-items:center;width:42px;height:42px;font-family:Aptos Display,Inter,sans-serif;font-size:1.4rem;font-weight:800;display:grid;box-shadow:0 8px 24px #146c4f33}.loading,.no-access{text-align:center;place-content:center;justify-items:center;min-height:100vh;display:grid}.loading p{color:#728078}.login-page{background:#f7f8f5;grid-template-columns:minmax(340px,1.1fr) minmax(420px,.9fr);min-height:100vh;display:grid}.login-brand{color:#fff;background:linear-gradient(150deg,#0c4435,#176f52 58%,#1b8b65);flex-direction:column;justify-content:center;padding:9vw;display:flex;position:relative;overflow:hidden}.login-brand:before,.login-brand:after{content:"";border:1px solid #fff2;border-radius:50%;position:absolute}.login-brand:before{width:560px;height:560px;top:-180px;right:-250px}.login-brand:after{width:390px;height:390px;bottom:-210px;right:-140px}.login-brand .brand-mark{color:#146c4f;background:#fff;position:absolute;top:48px;left:9vw}.login-brand .eyebrow{color:#a7e5cf}.login-brand h1{letter-spacing:-.065em;max-width:650px;margin:0 0 24px;font-size:clamp(3rem,5.8vw,6.8rem);line-height:.97}.login-brand>p:last-child{color:#d2eee4;max-width:500px;font-size:1.1rem;line-height:1.65}.login-card{background:#fff;border:1px solid #dfe5e0;border-radius:24px;align-self:center;width:min(460px,100% - 48px);margin:auto;padding:48px;box-shadow:0 30px 80px #123c2d12}.login-card h2{letter-spacing:-.035em;margin:0 0 28px;font-size:1.8rem}label{color:#4b5a52;gap:8px;margin-bottom:18px;font-size:.84rem;font-weight:700;display:grid}input,select,textarea{color:#17231e;background:#fff;border:1px solid #d7ded9;border-radius:11px;outline:none;width:100%;transition:all .2s}input,select{height:48px;padding:0 14px}textarea{resize:vertical;min-height:94px;padding:12px 14px}input:focus,select:focus,textarea:focus{border-color:#16805b;box-shadow:0 0 0 3px #16805b18}.privacy-note{color:#829087;text-align:center;margin:20px 0 0;font-size:.78rem;line-height:1.5}.primary,.secondary,.danger,.danger-ghost{border:0;border-radius:10px;min-height:44px;padding:0 18px;font-weight:800}.primary{color:#fff;background:#167453;box-shadow:0 6px 16px #16745328}.primary:hover{background:#105f44}.secondary{color:#33463d;background:#e9eeea}.danger{color:#fff;background:#b83a43}.danger-ghost{color:#a62f38;background:#fbecee}.full{width:100%}button:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}.alert{border-radius:10px;margin-top:16px;padding:12px 14px;font-size:.86rem;line-height:1.45}.alert.error{color:#8d2730;background:#fcecee;border:1px solid #f4cdd1}.alert.success{color:#126144;background:#e5f5ee;border:1px solid #c9e9db}.alert.info{color:#2e5870;background:#eaf3f8;border:1px solid #d3e6ef}.portal-shell{grid-template-columns:250px 1fr;min-height:100vh;display:grid}aside{color:#dce9e3;background:#112d24;flex-direction:column;height:100vh;padding:28px 20px 22px;display:flex;position:sticky;top:0}.logo{align-items:center;gap:12px;padding:0 8px 32px;display:flex}.logo strong,.logo small{display:block}.logo strong{color:#fff;font-size:1.1rem}.logo small{color:#89a69a;letter-spacing:.08em;text-transform:uppercase;font-size:.7rem}nav{gap:6px;display:grid}nav button{color:#9ab2a8;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:12px;width:100%;padding:12px 14px;font-size:.9rem;font-weight:700;display:flex}nav button span{text-align:center;width:22px;font-size:1.25rem}nav button:hover,nav button.active{color:#fff;background:#ffffff12}.sidebar-user{border-top:1px solid #ffffff15;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;margin-top:auto;padding:16px 8px 0;display:grid}.sidebar-user>span{color:#13533e;text-transform:uppercase;background:#bde6d6;border-radius:50%;place-items:center;width:36px;height:36px;font-weight:800;display:grid}.sidebar-user strong,.sidebar-user small{text-overflow:ellipsis;white-space:nowrap;max-width:120px;display:block;overflow:hidden}.sidebar-user strong{color:#fff;font-size:.78rem}.sidebar-user small{color:#89a69a;font-size:.7rem}.sidebar-user button{color:#90aa9f;background:0 0;border:0;font-size:1.1rem}.workspace{width:min(1180px,100%);margin:0 auto;padding:38px 52px 64px}.workspace>header{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:34px;display:flex}.workspace h1{letter-spacing:-.045em;margin:0;font-size:2rem}.clinic-select{background:#fff;border:1px solid #dde4df;border-radius:11px;align-items:center;min-width:230px;padding:0 8px 0 14px;display:flex}.clinic-select select{box-shadow:none;border:0;font-size:.82rem;font-weight:700}.live-dot{background:#24a774;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #24a7741c}.scan-panel{text-align:center;background:#fff;border:1px solid #dfe5e0;border-radius:20px;padding:48px;box-shadow:0 14px 45px #233b3210}.scan-panel>p:not(.eyebrow){color:#69766f}.scan-panel h2{margin-bottom:10px;font-size:1.65rem}.scan-icon{color:#167453;background:#e4f3ed;border-radius:20px;place-items:center;width:68px;height:68px;margin:0 auto 20px;font-size:2.5rem;display:grid}.segmented{background:#eef1ee;border-radius:10px;margin:24px auto 14px;padding:4px;display:inline-flex}.segmented button{color:#77837d;background:0 0;border:0;border-radius:7px;padding:9px 18px;font-size:.8rem;font-weight:800}.segmented button.active{color:#185d46;background:#fff;box-shadow:0 2px 8px #203d3215}.scan-form{grid-template-columns:1fr auto;gap:10px;max-width:650px;margin:auto;display:grid}.scan-form input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.camera-reader{background:#10271f;border:1px solid #d7e2dc;border-radius:16px;width:min(620px,100%);min-height:250px;margin:4px auto 18px;position:relative;overflow:hidden}.open-camera{color:#d8eee5;background:radial-gradient(circle at 50% 35%,#234b3d,#10271f 70%);border:0;place-content:center;justify-items:center;gap:7px;width:100%;min-height:250px;display:grid}.open-camera span{color:#fff;background:#ffffff12;border:1px solid #ffffff2e;border-radius:16px;place-items:center;width:58px;height:58px;margin-bottom:6px;font-size:1.7rem;display:grid}.open-camera strong{font-size:1rem}.open-camera small{color:#91b4a6;font-size:.72rem}.camera-reader video{object-fit:cover;background:#08150f;width:100%;height:360px;display:block}.camera-frame{aspect-ratio:1;width:min(230px,55%);position:absolute;top:50%;left:50%;transform:translate(-50%,-55%)}.camera-frame span{filter:drop-shadow(0 0 5px #0d6445);border-style:solid;border-color:#70e1b4;width:36px;height:36px;position:absolute}.camera-frame span:first-child{border-width:3px 0 0 3px;border-radius:8px 0 0;top:0;left:0}.camera-frame span:nth-child(2){border-width:3px 3px 0 0;border-radius:0 8px 0 0;top:0;right:0}.camera-frame span:nth-child(3){border-width:0 3px 3px 0;border-radius:0 0 8px;bottom:0;right:0}.camera-frame span:nth-child(4){border-width:0 0 3px 3px;border-radius:0 0 0 8px;bottom:0;left:0}.camera-status{color:#dcece6;text-align:left;background:linear-gradient(#0000,#07130ed9);padding:15px 110px 15px 18px;font-size:.73rem;font-weight:700;position:absolute;bottom:0;left:0;right:0}.camera-close{z-index:2;color:#fff;background:#0c1d17c9;border:1px solid #ffffff35;border-radius:7px;padding:7px 10px;font-size:.66rem;font-weight:800;position:absolute;bottom:10px;right:13px}.camera-alert{text-align:left;max-width:620px;margin:-7px auto 15px}.manual-divider{color:#8a958f;align-items:center;max-width:650px;margin:8px auto 12px;font-size:.67rem;display:flex}.manual-divider:before,.manual-divider:after{content:"";background:#e0e6e2;flex:1;height:1px}.manual-divider span{padding:0 12px}.recent-card,.action-card,.profile-card{background:#fff;border:1px solid #dfe5e0;border-radius:18px;margin-top:24px}.recent-card{padding:28px}.section-heading,.profile-heading{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.section-heading h2{margin:0;font-size:1.25rem}.section-heading>span{color:#66756d;background:#eef1ef;border-radius:8px;padding:6px 10px;font-size:.72rem;font-weight:800}.scan-list{border-top:1px solid #edf0ee;margin-top:18px}.scan-row{border-bottom:1px solid #edf0ee;grid-template-columns:10px 1fr auto;align-items:center;gap:13px;padding:13px 4px;display:grid}.scan-row strong,.scan-row small{display:block}.scan-row strong{font-size:.87rem}.scan-row small{color:#89948e;margin-top:2px;font-size:.74rem}.outcome-dot{background:#9aa49f;border-radius:50%;width:8px;height:8px}.outcome-dot.success{background:#23a573}.outcome-dot.invalid_card,.outcome-dot.wrong_clinic,.outcome-dot.not_found{background:#d7555d}.pill{color:#58665f;letter-spacing:.04em;text-transform:uppercase;background:#edf0ee;border-radius:999px;align-items:center;padding:5px 9px;font-size:.65rem;font-weight:800;display:inline-flex}.pill.active,.pill.success,.pill.assigned{color:#126246;background:#ddf3e9}.pill.expired,.pill.invalid_card,.pill.rejected,.pill.revoked,.pill.not_found,.pill.wrong_clinic{color:#9d3038;background:#fbe6e8}.empty{color:#89938e;text-align:center;padding:40px 20px 20px}.empty>span{font-size:2rem}.empty h3{color:#4a5951;margin:8px 0 3px}.empty p{margin:0;font-size:.84rem}.back-row{color:#76827b;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:.78rem;display:flex}.link-button{color:#167453;background:0 0;border:0;font-weight:800}.profile-card{grid-template-columns:260px 1fr;display:grid;overflow:hidden}.profile-photo{background:linear-gradient(145deg,#dce9e3,#b9d2c7);min-height:330px}.profile-photo img{object-fit:cover;width:100%;height:100%}.profile-photo span{color:#477162;place-items:center;width:100%;height:100%;font-family:Aptos Display,Inter,sans-serif;font-size:4rem;font-weight:800;display:grid}.profile-main{padding:34px}.profile-heading h2{letter-spacing:-.035em;margin:0;font-size:1.7rem}.details-grid{grid-template-columns:repeat(2,1fr);gap:18px;margin:28px 0 20px;display:grid}.details-grid .wide{grid-column:1/-1}dt{color:#8a958f;letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px;font-size:.7rem;font-weight:800}dd{margin:0;font-size:.92rem;font-weight:700}.scan-disclosure{color:#527064;background:#edf6f2;border-radius:9px;margin:0;padding:10px 12px;font-size:.75rem}.action-card{grid-template-columns:1fr 260px auto;align-items:center;gap:24px;padding:26px 30px;display:grid}.action-card h3{margin:0 0 6px;font-size:1.13rem}.action-card p:not(.eyebrow){color:#78847d;margin:0;font-size:.82rem}.photo-drop{color:#5e7066;text-align:center;cursor:pointer;background:#f6f8f6;border:1px dashed #b8c7bf;border-radius:12px;place-items:center;min-height:115px;margin:0;display:grid;overflow:hidden}.photo-drop input{display:none}.photo-drop span{font-size:1.4rem}.photo-drop strong,.photo-drop small{display:block}.photo-drop small{color:#98a29d}.photo-drop.has-photo img{object-fit:cover;width:100%;height:115px}.doctor-action{grid-template-columns:1fr 230px auto}.doctor-action label{grid-column:1/-1;margin:0}.doctor-action .alert{grid-column:1/-1}.photo-check{border-radius:11px;align-items:center;gap:11px;padding:12px;display:flex}.photo-check.ready{color:#176448;background:#e8f5ef}.photo-check.missing{color:#9b5d19;background:#fff3de}.photo-check>span{background:#fffa;border-radius:50%;place-items:center;width:30px;height:30px;font-weight:900;display:grid}.photo-check strong,.photo-check small{font-size:.75rem;display:block}.photo-check small{opacity:.75;margin-top:2px}.decision-row{justify-content:flex-end;gap:10px;display:flex}@media (width<=900px){.portal-shell{grid-template-columns:84px 1fr}aside{padding:24px 12px}.logo{justify-content:center;padding:0 0 28px}.logo>div,.sidebar-user>div,.sidebar-user>button,nav button:not(.active):after{display:none}nav button{justify-content:center;padding:13px;font-size:0}nav button span{font-size:1.3rem}.sidebar-user{justify-content:center;display:flex}.workspace{padding:32px 28px}.profile-card{grid-template-columns:210px 1fr}.action-card,.doctor-action{grid-template-columns:1fr}.doctor-action label,.doctor-action .alert{grid-column:auto}}@media (width<=700px){.login-page{grid-template-columns:1fr}.login-brand{display:none}.login-card{padding:34px 26px}.portal-shell{display:block}aside{z-index:5;flex-direction:row;width:100%;height:70px;padding:8px 16px;position:fixed;top:auto;bottom:0}.logo,.sidebar-user{display:none}nav{grid-template-columns:1fr 1fr;width:100%}nav button{flex-direction:column;gap:1px;font-size:.64rem}.workspace{padding:24px 18px 100px}.workspace>header{flex-direction:column;align-items:stretch}.clinic-select{width:100%}.scan-panel{padding:30px 18px}.scan-form,.profile-card{grid-template-columns:1fr}.profile-photo{min-height:260px}.details-grid{grid-template-columns:1fr}.details-grid .wide{grid-column:auto}.action-card{padding:22px}.decision-row{flex-direction:column}.decision-row button{width:100%}.recent-card{padding:20px}}.public-card-page{background:radial-gradient(circle at 50% 0,#e8f4ef,#f5f7f4 55%);place-items:center;min-height:100vh;padding:24px;display:grid}.public-card-shell{background:#fff;border:1px solid #dce4df;border-radius:24px;width:min(480px,100%);overflow:hidden;box-shadow:0 25px 80px #19382b1c}.public-card-brand{border-bottom:1px solid #e9edea;align-items:center;gap:10px;padding:22px 26px;display:flex}.public-card-brand>span{color:#fff;background:#176e50;border-radius:11px;place-items:center;width:39px;height:39px;font-size:1.2rem;font-weight:900;display:grid}.public-card-brand strong,.public-card-brand small{display:block}.public-card-brand strong{font-size:.92rem}.public-card-brand small{color:#89958e;letter-spacing:.08em;text-transform:uppercase;margin-top:2px;font-size:.64rem}.public-card-loading,.public-card-error,.public-card-profile{text-align:center;padding:42px 34px}.public-card-loading span{border:3px solid #d6e9e1;border-top-color:#176e50;border-radius:50%;width:32px;height:32px;margin:0 auto 14px;animation:.8s linear infinite spin;display:block}.public-card-loading p{color:#7f8b84;margin:0;font-size:.8rem}.public-card-error>span{color:#a23942;background:#f8e7e9;border-radius:50%;place-items:center;width:52px;height:52px;margin:0 auto 15px;font-size:1.3rem;font-weight:900;display:grid}.public-card-error h1{margin-bottom:8px}.public-card-error p{color:#7f8a84}.public-avatar{color:#176749;background:#e3f2eb;border-radius:50%;place-items:center;width:84px;height:84px;margin:0 auto 20px;font-size:1.6rem;font-weight:900;display:grid}.public-card-profile h1{letter-spacing:-.045em;margin:0 0 9px;font-size:2rem}.public-card-note{color:#7e8983;font-size:.78rem}.public-card-profile dl{text-align:left;gap:9px;margin:25px 0;display:grid}.public-card-profile dl>div{background:#f4f7f5;border-radius:10px;justify-content:space-between;align-items:center;padding:14px 15px;display:flex}.public-card-profile dt{margin:0}.public-card-profile dd{font-size:.82rem}.public-card-profile a{color:#176e50;text-decoration:none}.public-privacy{color:#527064;text-align:left;background:#edf6f2;border-radius:10px;padding:13px;font-size:.68rem;line-height:1.55}@keyframes spin{to{transform:rotate(360deg)}}.patient-camera-open{color:#176448;background:#f2f8f5;border:1px dashed #96b5a7;border-radius:12px;place-items:center;width:100%;min-height:125px;display:grid}.patient-camera-open span{font-size:1.7rem}.patient-camera-open strong,.patient-camera-open small{display:block}.patient-camera-open small{color:#71847a;font-weight:500}.patient-camera-live{background:#102019;border-radius:13px;position:relative;overflow:hidden}.patient-camera-live video{object-fit:cover;width:100%;max-height:440px;display:block}.camera-loading{color:#fff;background:#102019;place-items:center;display:grid;position:absolute;inset:0}.patient-camera-controls{background:#102019;gap:9px;padding:12px;display:flex}.patient-camera-controls button{flex:1}.captured-photo{gap:10px;display:grid}.captured-photo img{object-fit:cover;border-radius:12px;width:100%;max-height:420px}
