:root{--bg:#F7F1E4;--surface:#FFFFFF;--ink:#1C3838;--ink-soft:#5E7575;--primary:#0E6E6E;--primary-dark:#0A4D4D;--primary-soft:#DFEFEE;--accent:#FF6F4D;--accent-soft:#FFE6DD;--gold:#FFC247;--gold-soft:#FFF3D6;--line:#E7DECB;--danger:#D2554E;--success:#4C9D6E;--radius:14px;--shadow:0 8px 24px -12px rgba(28,56,56,.25);font-size:16px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Inter,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:Fraunces,serif;margin:0;letter-spacing:-.01em}.hidden{display:none!important}button{font-family:inherit;cursor:pointer}a{color:var(--primary)}::selection{background:var(--gold-soft)}:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.landing-nav{display:flex;align-items:center;justify-content:space-between;padding:22px 6%;position:relative;z-index:5}.brand{display:flex;align-items:center;gap:10px;font-family:Fraunces,serif;font-weight:700;font-size:1.25rem;color:var(--primary-dark)}.brand-mark{width:34px;height:34px;flex:none}.landing-nav .btn{font-size:.9rem}.hero{position:relative;padding:40px 6% 100px;overflow:hidden}.hero-curve{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;opacity:.5;pointer-events:none}.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:center;max-width:1180px;margin:0 auto}.eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:Space Mono,monospace;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--primary-dark);background:var(--primary-soft);border-radius:999px;padding:6px 14px;margin-bottom:22px}.hero h1{font-size:clamp(2.4rem,5vw,3.6rem);line-height:1.06;color:var(--primary-dark);margin-bottom:20px}.hero h1 em{font-style:italic;color:var(--accent)}.hero p.lead{font-size:1.12rem;line-height:1.65;color:var(--ink-soft);max-width:520px;margin-bottom:32px}.hero-ctas{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:36px}.hero-stats{display:flex;gap:32px;flex-wrap:wrap}.hero-stats div{font-family:Space Mono,monospace}.hero-stats .num{font-size:1.7rem;font-weight:700;color:var(--primary-dark);display:block}.hero-stats .lbl{font-size:.78rem;color:var(--ink-soft)}.hero-illustration{position:relative}.illu-card{background:var(--surface);border-radius:24px;box-shadow:var(--shadow);padding:18px;position:relative}.section{padding:70px 6%;max-width:1180px;margin:0 auto}.section-head{max-width:640px;margin-bottom:42px}.section-head .eyebrow{margin-bottom:14px}.section-head h2{font-size:clamp(1.8rem,3.4vw,2.6rem);color:var(--primary-dark);margin-bottom:12px}.section-head p{color:var(--ink-soft);line-height:1.6}.portal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}.portal-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px;transition:transform .18s ease,box-shadow .18s ease}.portal-card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}.portal-card .icon{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;font-size:1.4rem}.portal-card h3{font-size:1.15rem;margin-bottom:8px;color:var(--ink)}.portal-card p{color:var(--ink-soft);font-size:.92rem;line-height:1.55;margin-bottom:14px}.portal-card .go{font-size:.85rem;font-weight:700;color:var(--primary-dark);cursor:pointer}.flow-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.flow-step{padding:24px 20px;border-right:1px solid var(--line);position:relative}.flow-step:last-child{border-right:none}.flow-step .step-no{font-family:Space Mono,monospace;font-size:.75rem;color:var(--accent);font-weight:700;display:block;margin-bottom:10px}.flow-step h4{font-size:.98rem;margin-bottom:6px}.flow-step p{font-size:.85rem;color:var(--ink-soft);line-height:1.5;margin:0}.footer{padding:36px 6%;border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;color:var(--ink-soft);font-size:.85rem}.btn{border:none;border-radius:10px;padding:12px 22px;font-weight:700;font-size:.95rem;display:inline-flex;align-items:center;gap:8px;transition:opacity .15s,transform .1s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{opacity:.92}.btn-outline{background:transparent;border:1.5px solid var(--primary-dark);color:var(--primary-dark)}.btn-outline:hover{background:var(--primary-soft)}.btn-ghost{background:var(--primary-soft);color:var(--primary-dark)}.btn-ghost:hover{background:#cfe6e4}.btn-sm{padding:8px 14px;font-size:.82rem;border-radius:8px}.btn-danger{background:var(--accent-soft);color:var(--danger)}.btn-danger:hover{background:#ffd6cf}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;position:relative}.login-wrap .back-link{position:absolute;top:24px;left:24px;font-size:.88rem;font-weight:700;color:var(--primary-dark);display:flex;align-items:center;gap:6px;text-decoration:none}.login-card{background:var(--surface);border-radius:20px;box-shadow:var(--shadow);width:100%;max-width:430px;padding:40px 36px}.login-card .brand{justify-content:center;margin-bottom:6px}.login-card .sub{text-align:center;color:var(--ink-soft);font-size:.92rem;margin-bottom:26px}.role-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;background:var(--bg);border-radius:12px;padding:5px;margin-bottom:24px}.role-tab{border:none;background:transparent;border-radius:9px;padding:9px 4px;font-size:.74rem;font-weight:700;color:var(--ink-soft);text-align:center;line-height:1.3}.role-tab.active{background:var(--primary);color:#fff;box-shadow:0 4px 10px -4px #0e6e6e99}.field{margin-bottom:16px}.field label{display:block;font-size:.8rem;font-weight:700;color:var(--ink);margin-bottom:6px}.field input{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:11px 13px;font-size:.95rem;font-family:inherit;background:var(--bg);color:var(--ink)}.field input:focus{border-color:var(--primary);background:#fff}.login-card .btn-primary{width:100%;justify-content:center;margin-top:6px;font-size:1rem;padding:13px}.login-meta{display:flex;justify-content:space-between;font-size:.8rem;margin-bottom:18px}.login-meta a{text-decoration:none;font-weight:600}.demo-box{margin-top:22px;border:1px dashed var(--line);border-radius:10px;padding:12px 14px;font-size:.78rem;color:var(--ink-soft);background:var(--bg)}.demo-box b{color:var(--ink)}.info-msg{background:#e4f4ea;color:var(--primary-dark);border-radius:8px;padding:11px 13px;font-size:.86rem;font-weight:600;margin-bottom:16px;line-height:1.45}.login-card a.btn-primary{width:100%;justify-content:center;text-decoration:none}.forgot-link{text-align:center;margin-top:16px;font-size:.86rem;font-weight:600}.error-msg{background:var(--accent-soft);color:var(--danger);border-radius:8px;padding:9px 12px;font-size:.82rem;font-weight:600;margin-bottom:14px}.app{display:flex;min-height:100vh}.sidebar{width:248px;flex:none;background:var(--primary-dark);color:#fff;display:flex;flex-direction:column;padding:22px 16px;position:sticky;top:0;height:100vh}.sidebar .brand{color:#fff;margin-bottom:30px;padding:0 8px}.sidebar .brand-mark path{fill:#fff}.side-section-label{font-family:Space Mono,monospace;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:#ffffff73;margin:18px 12px 8px}.side-link{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:10px;color:#ffffffc7;font-size:.9rem;font-weight:600;border:none;background:transparent;width:100%;text-align:left;margin-bottom:2px}.side-link .ic{width:20px;text-align:center;flex:none}.side-link:hover{background:#ffffff14;color:#fff}.side-link.active{background:#fff;color:var(--primary-dark)}.sidebar-foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding-top:14px}.user-chip{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;margin-bottom:6px}.avatar{width:36px;height:36px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;flex:none}.user-chip .who{line-height:1.25}.user-chip .name{font-size:.85rem;font-weight:700;color:#fff}.user-chip .role{font-size:.72rem;color:#ffffff8c}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:20px 32px;border-bottom:1px solid var(--line);background:var(--surface);position:sticky;top:0;z-index:4}.topbar h2{font-size:1.35rem;color:var(--primary-dark)}.topbar .crumb{font-size:.78rem;color:var(--ink-soft);font-family:Space Mono,monospace;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}.topbar-right{display:flex;align-items:center;gap:14px}.child-selector{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--ink-soft)}.child-selector select{width:auto;min-width:180px;padding:7px 10px;font-size:.85rem;border:1.5px solid var(--line);border-radius:10px;background:var(--surface);color:var(--primary-dark);font-weight:600}.icon-btn{width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:1rem;position:relative}.icon-btn .dot{position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--accent);border:2px solid var(--surface)}.content{padding:28px 32px;flex:1}.grid{display:grid;gap:18px}.cols-4{grid-template-columns:repeat(4,1fr)}.cols-3{grid-template-columns:repeat(3,1fr)}.cols-2{grid-template-columns:repeat(2,1fr)}@media (max-width:1100px){.cols-4,.cols-3{grid-template-columns:repeat(2,1fr)}}@media (max-width:760px){.cols-4,.cols-3,.cols-2{grid-template-columns:1fr}.sidebar{display:none}.app.show-sidebar .sidebar{display:flex;position:fixed;z-index:50}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px}.card h3{font-size:1rem;margin-bottom:14px}.stat-card{display:flex;flex-direction:column;gap:8px}.stat-card .top{display:flex;justify-content:space-between;align-items:flex-start}.stat-card .ic{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1.05rem}.stat-card .val{font-family:Space Mono,monospace;font-size:1.9rem;font-weight:700;color:var(--ink)}.stat-card .lbl{font-size:.82rem;color:var(--ink-soft)}.stat-card .delta{font-size:.75rem;font-weight:700}.delta.up{color:var(--success)}.delta.warn{color:var(--accent)}.tone-teal{background:var(--primary-soft);color:var(--primary-dark)}.tone-coral{background:var(--accent-soft);color:var(--accent)}.tone-gold{background:var(--gold-soft);color:#a2700c}.tone-green{background:#e4f4ea;color:var(--success)}table{width:100%;border-collapse:collapse;font-size:.88rem}th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft);font-family:Space Mono,monospace;padding:0 12px 10px;border-bottom:1px solid var(--line)}td{padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}tr:last-child td{border-bottom:none}.table-wrap{overflow-x:auto}.badge{display:inline-flex;align-items:center;gap:5px;font-size:.74rem;font-weight:700;padding:4px 10px;border-radius:999px}.badge-wait{background:var(--gold-soft);color:#a2700c}.badge-progress{background:var(--primary-soft);color:var(--primary-dark)}.badge-done{background:#e4f4ea;color:var(--success)}.badge-overdue{background:var(--accent-soft);color:var(--danger)}.badge-room{background:var(--bg);color:var(--ink-soft);border:1px solid var(--line)}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}.searchbox{display:flex;align-items:center;gap:8px;background:var(--surface);border:1.5px solid var(--line);border-radius:10px;padding:9px 14px;flex:1;min-width:220px;max-width:380px}.searchbox input{border:none;background:transparent;outline:none;font-size:.9rem;width:100%;font-family:inherit}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:20px;flex-wrap:wrap}.tab-btn{border:none;background:transparent;padding:10px 16px;font-weight:700;font-size:.86rem;color:var(--ink-soft);border-bottom:2px solid transparent;margin-bottom:-1px}.tab-btn.active{color:var(--primary-dark);border-color:var(--accent)}.queue-item{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:var(--surface)}.queue-pos{width:34px;height:34px;border-radius:50%;background:var(--primary-soft);color:var(--primary-dark);display:flex;align-items:center;justify-content:center;font-weight:700;font-family:Space Mono,monospace;flex:none}.queue-item .info{flex:1;min-width:0}.queue-item .info .nm{font-weight:700;font-size:.94rem}.queue-item .info .meta{font-size:.78rem;color:var(--ink-soft)}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}@media (max-width:700px){.form-grid{grid-template-columns:1fr}}.form-grid label{display:block;font-size:.8rem;font-weight:700;margin-bottom:6px;color:var(--ink)}.form-grid input,.form-grid select,.form-grid textarea{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:10px 12px;font-size:.9rem;font-family:inherit;background:var(--bg)}.form-grid textarea{resize:vertical;min-height:70px}.full{grid-column:1/-1}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c383873;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:var(--surface);border-radius:16px;max-width:520px;width:100%;padding:26px;max-height:88vh;overflow:auto}.modal h3{margin-bottom:16px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.notif-item{display:flex;gap:12px;padding:14px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px}.notif-item .ic{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex:none;font-size:1rem}.notif-item .body strong{font-size:.9rem}.notif-item .body p{margin:4px 0 0;font-size:.82rem;color:var(--ink-soft)}.notif-item .time{font-size:.72rem;color:var(--ink-soft);margin-left:auto;white-space:nowrap}.toast{position:fixed;bottom:24px;right:24px;background:var(--ink);color:#fff;padding:13px 20px;border-radius:10px;font-size:.88rem;font-weight:600;z-index:200;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);transition:opacity .2s,transform .2s;pointer-events:none}.toast.show{opacity:1;transform:translateY(0)}.profile-head{display:flex;gap:18px;align-items:center;margin-bottom:24px;flex-wrap:wrap}.profile-head .avatar{width:64px;height:64px;font-size:1.4rem}.profile-head h2{font-size:1.5rem;margin-bottom:4px}.profile-head .meta{color:var(--ink-soft);font-size:.88rem}.empty{text-align:center;padding:40px 20px;color:var(--ink-soft)}.empty .ic{font-size:2rem;margin-bottom:10px}.chart-box{position:relative;height:240px}.chart-box.sm{height:180px}.vax-row{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}.vax-row:last-child{border-bottom:none}.vax-dot{width:12px;height:12px;border-radius:50%;flex:none}.vax-row .vname{font-weight:700;font-size:.9rem}.vax-row .vdate{font-size:.78rem;color:var(--ink-soft)}.vax-row .vstatus{margin-left:auto}.spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.page-loading{display:flex;align-items:center;justify-content:center;min-height:60vh;color:var(--ink-soft);font-size:.9rem}@media (max-width:760px){.content{padding:18px}.topbar{padding:14px 18px}.hero-grid{grid-template-columns:1fr}.hero-illustration{order:-1}}
