:root{--bg:#f5f7f9;--surface:#fff;--surface-2:#f7f9fb;--border:#e7e9ee;--border-strong:#d6dae1;--ink:#101623;--text:#3a4453;--text-muted:#667180;--text-faint:#9aa4b2;--primary:#0d9488;--primary-hover:#0f766e;--primary-50:#ecfaf7;--primary-100:#cdefe9;--green:#15803d;--green-bg:#dcfce7;--amber:#b45309;--amber-bg:#fef3c7;--red:#b91c1c;--red-bg:#fee2e2;--radius:12px;--radius-sm:8px;--radius-lg:18px;--shadow-sm:0 1px 2px #1018280d, 0 1px 3px #1018280d;--shadow-md:0 2px 4px #1018280a, 0 8px 20px -8px #1018281f;--shadow-lg:0 24px 48px -12px #10182833;--sidebar-w:248px;color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:DM Sans,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-size:15px;line-height:1.5}h1,h2,h3,h4{color:var(--ink);letter-spacing:-.015em;margin:0 0 .6em;font-family:DM Sans,sans-serif;line-height:1.2}a{color:var(--primary)}::selection{background:var(--primary-100);color:var(--primary-hover)}*{scrollbar-width:thin;scrollbar-color:#cfd6de transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#d4dae1 padding-box padding-box;border:2px solid #0000;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#bcc4cd}button{cursor:pointer;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);border-radius:var(--radius-sm);padding:9px 16px;font-family:inherit;font-size:.9rem;font-weight:500;transition:background .15s,border-color .15s,box-shadow .15s,transform 50ms}button:hover{background:var(--surface-2);border-color:var(--text-faint)}button:active{transform:translateY(.5px)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible{box-shadow:0 0 0 3px var(--primary-100);border-color:var(--primary);outline:none}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600;box-shadow:0 1px 2px #0d948847}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}input,textarea,select{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--ink);padding:9px 12px;font-family:inherit;font-size:.9rem;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100);outline:none}textarea{resize:vertical}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--primary);cursor:pointer}label{color:var(--ink);margin:22px 0 10px;font-size:.85rem;font-weight:600;display:block}label:first-child{margin-top:0}input[type=file]{color:var(--text-muted);cursor:pointer;padding:7px 10px;font-size:.85rem}input[type=file]::file-selector-button{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--ink);cursor:pointer;margin-right:12px;padding:8px 14px;font-family:inherit;font-size:.85rem;font-weight:600;transition:background .15s,border-color .15s}input[type=file]::file-selector-button:hover{background:var(--primary-50);border-color:var(--primary);color:var(--primary-hover)}select{appearance:none;cursor:pointer;background-color:var(--surface);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364707f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;padding-right:38px}select:hover{border-color:var(--text-faint)}.select-wrap{width:100%;position:relative}.select-trigger{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--ink);cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;font-size:.9rem;font-weight:500;transition:border-color .15s,box-shadow .15s;display:flex}.select-trigger:hover{border-color:var(--text-faint);background:var(--surface)}.select-wrap.open .select-trigger,.select-trigger:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100);outline:none}.select-trigger .placeholder{color:var(--text-faint)}.select-trigger svg{width:16px;height:16px;color:var(--text-muted);flex:none;transition:transform .15s}.select-wrap.open .select-trigger svg{transform:rotate(180deg)}.select-menu{z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-height:264px;box-shadow:var(--shadow-lg);padding:6px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.select-option{width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:7px;justify-content:space-between;align-items:center;gap:8px;padding:9px 10px;font-size:.9rem;display:flex}.select-option:hover{background:var(--surface-2);color:var(--ink)}.select-option.selected{background:var(--primary-50);color:var(--primary-hover);font-weight:600}.select-option svg{flex:none;width:15px;height:15px}.select-search{border:1px solid var(--border-strong);border-radius:7px;width:100%;margin-bottom:6px;padding:8px 10px;font-size:.88rem}.select-empty{color:var(--text-muted);padding:8px 10px;font-size:.85rem}.datepicker .select-trigger svg{color:var(--primary)}.select-wrap.datepicker.open .select-trigger svg{transform:none}.dp-menu{z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:288px;box-shadow:var(--shadow-lg);padding:12px;position:absolute;top:calc(100% + 6px);left:0}.dp-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.dp-title{color:var(--ink);font-size:.9rem;font-weight:700}.dp-nav{border:1px solid var(--border);background:var(--surface);width:30px;height:30px;color:var(--text-muted);border-radius:8px;place-items:center;padding:0;display:grid}.dp-nav:hover{background:var(--surface-2);color:var(--ink)}.dp-nav svg{width:16px;height:16px}.dp-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.dp-weekdays span{text-align:center;color:var(--text-faint);text-transform:uppercase;padding:4px 0;font-size:.68rem;font-weight:600}.dp-day{height:32px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:0;font-size:.85rem}.dp-day:hover:not(:disabled){background:var(--primary-50);color:var(--primary-hover)}.dp-day.today{box-shadow:inset 0 0 0 1px var(--border-strong)}.dp-day.selected{background:var(--primary);color:#fff;font-weight:600}.dp-day.selected:hover{background:var(--primary-hover);color:#fff}.dp-day:disabled{color:var(--text-faint);opacity:.4;cursor:not-allowed}.app-shell{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);flex-direction:column;height:100vh;padding:20px 14px 16px;display:flex;position:sticky;top:0;box-shadow:4px 0 24px -20px #10182824}.sidebar .brand{letter-spacing:-.02em;color:var(--ink);align-items:center;gap:10px;padding:6px 8px 20px;font-size:1.3rem;font-weight:700;display:flex}.sidebar .brand-logo{border-radius:9px;flex:none;width:30px;height:30px;box-shadow:0 4px 10px -4px #0f766e99}.sidebar .brand-word span{color:var(--primary)}.nav-label{letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);padding:4px 12px 8px;font-size:.68rem;font-weight:700}.nav-btn{text-align:left;width:100%;color:var(--text-muted);background:0 0;border:none;border-radius:9px;align-items:center;gap:11px;margin-bottom:2px;padding:10px 12px;font-size:.925rem;font-weight:500;display:flex;position:relative}.nav-btn svg{opacity:.9;flex:none;width:18px;height:18px}.nav-btn:hover{background:var(--surface-2);color:var(--ink)}.nav-btn.active{background:var(--primary-50);color:var(--primary-hover);font-weight:600}.nav-btn.active:before{content:"";background:var(--primary);border-radius:3px;width:3px;height:18px;position:absolute;top:50%;left:3px;transform:translateY(-50%)}.sidebar .spacer{flex:1}.sidebar-user{border-top:1px solid var(--border);align-items:center;gap:10px;margin-top:8px;padding:12px 8px;display:flex}.sidebar-avatar{background:var(--primary-50);width:34px;height:34px;color:var(--primary-hover);border-radius:50%;flex:none;place-items:center;font-size:.8rem;font-weight:700;display:grid}.sidebar-user .email{min-width:0;color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.sidebar-logout{justify-content:center;align-items:center;gap:8px;width:100%;display:inline-flex}.sidebar-logout svg{width:16px;height:16px}.main{flex:1;min-width:0;padding:32px 44px}.page-title{letter-spacing:-.02em;color:var(--ink);margin-bottom:22px;font-size:1.6rem;font-weight:700}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-md);border-radius:14px;margin-bottom:20px;padding:22px 24px}.card h3{align-items:center;gap:10px;display:flex}.card h3:before{content:"";background:var(--primary);border-radius:2px;flex:none;width:4px;height:18px}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:22px;display:flex}.tab{color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:10px 16px;font-weight:500}.tab:hover{color:var(--ink);background:0 0}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}table{border-collapse:collapse;width:100%;font-size:.88rem}th,td{text-align:left;border-bottom:1px solid var(--border);padding:11px 14px}th{color:var(--ink);text-transform:uppercase;letter-spacing:.03em;background:var(--surface-2);border-bottom:2px solid var(--primary-100);font-size:.76rem;font-weight:700}tbody tr:last-child td{border-bottom:none}tr:hover td{background:var(--surface-2)}.kpi-row{grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:22px;display:grid}.kpi-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-md);border-radius:14px;align-items:center;gap:16px;padding:20px 22px;display:flex;position:relative}.kpi-icon{background:var(--primary-50);width:44px;height:44px;color:var(--primary);border-radius:12px;flex:none;place-items:center;display:grid}.kpi-icon svg{width:22px;height:22px}.kpi-main{min-width:0}.kpi-value{color:var(--ink);letter-spacing:-.02em;font-size:1.9rem;font-weight:700;line-height:1.15}.kpi-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;align-items:center;margin-top:4px;font-size:.74rem;font-weight:500;display:flex}.section-title{color:var(--ink);letter-spacing:-.01em;align-items:center;gap:10px;margin:30px 0 14px;font-size:1.05rem;font-weight:700;display:flex}.section-title:before{content:"";background:var(--primary);border-radius:2px;flex:none;width:4px;height:16px}.chart-grid{gap:20px;display:grid}.chart-grid.cols-2{grid-template-columns:1fr 1fr}.chart-grid.cols-3{grid-template-columns:1fr 1fr 1fr}.chart-card{flex-direction:column;height:400px;display:flex}.chart-card h4{color:var(--ink);justify-content:space-between;align-items:center;gap:8px;margin:0 0 14px;font-size:.95rem;font-weight:600;display:flex}.chart-body{flex:1;min-height:0}.chart-note{color:var(--text-muted);margin:10px 0 0;font-size:.78rem}.filter-grid{grid-template-columns:1fr 1fr 1fr auto;align-items:end;gap:18px;display:grid}.filter-grid label{margin-top:0}@media (width<=1100px){.chart-grid.cols-3{grid-template-columns:1fr}}@media (width<=820px){.chart-grid.cols-2{grid-template-columns:1fr}.filter-grid{grid-template-columns:1fr 1fr}}.muted{color:var(--text-muted)}.badge{border-radius:20px;padding:3px 10px;font-size:.76rem;font-weight:600;display:inline-block}.badge-green{background:var(--green-bg);color:var(--green)}.badge-amber{background:var(--amber-bg);color:var(--amber)}.badge-red{background:var(--red-bg);color:var(--red)}.alert{border-radius:var(--radius-sm);overflow-wrap:anywhere;border:1px solid #0000;margin:12px 0;padding:12px 16px;font-size:.9rem}.alert-error{background:var(--red-bg);color:var(--red);border-color:#fecaca}.alert-success{background:var(--green-bg);color:var(--green);border-color:#bbf7d0}.alert-warn{background:var(--amber-bg);color:var(--amber);border-color:#fde68a}.alert-info{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.spinner{color:var(--text-muted);font-style:italic}.report-section{margin-bottom:6px}.report-section h5{color:var(--ink);margin:0 0 8px;font-size:.92rem;font-weight:700}.report-section p{margin:0 0 6px;line-height:1.55}.report-section ul{margin:0;padding-left:20px}.report-section li{margin-bottom:6px;line-height:1.55}.report-sep{border:none;border-top:1px solid var(--border);margin:18px 0}.progress-track{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;height:8px;margin:8px 0;overflow:hidden}.progress-fill{background:var(--primary);border-radius:6px;height:100%}.report-expander{border:1px solid var(--border);border-radius:var(--radius-sm);margin:8px 0;overflow:hidden}.report-expander>summary{cursor:pointer;color:var(--ink);background:var(--surface-2);padding:10px 14px;font-size:.88rem;font-weight:600;list-style:none}.report-expander>summary::-webkit-details-marker{display:none}.report-expander>summary:before{content:"▸ ";color:var(--text-muted)}.report-expander[open]>summary:before{content:"▾ "}.report-expander .qa{padding:12px 14px}.report-expander .qa div{margin-bottom:6px;line-height:1.5}.center-screen{text-align:center;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:440px;padding:44px}.auth-card h1{font-size:1.9rem}.auth-card h1 span{color:var(--primary)}.auth-layout{grid-template-columns:1.05fr .95fr;min-height:100vh;display:grid}.auth-brand{border-right:1px solid var(--border);background:radial-gradient(720px 420px at 100% 0,#0d948817,#0000 60%),linear-gradient(#f4faf8 0%,#e6f2ef 100%);grid-template-rows:1fr auto;padding:52px 60px;display:grid;position:relative}.auth-brand-inner{align-self:center;width:100%;max-width:480px;margin:0 auto}.brand-lockup{align-items:center;gap:12px;margin-bottom:46px;display:flex}.brand-mark{border-radius:12px;width:42px;height:42px;box-shadow:0 8px 18px -8px #0f766e99}.brand-word{letter-spacing:-.02em;color:var(--ink);font-size:1.55rem;font-weight:800}.brand-word span{color:var(--primary)}.auth-brand h1{letter-spacing:-.03em;color:var(--ink);margin:0 0 16px;font-size:2.5rem;line-height:1.1}.auth-brand h1 span{color:var(--primary)}.auth-tagline{color:var(--text-muted);max-width:46ch;margin:0 0 40px;font-size:1.02rem;line-height:1.6}.feature-list{gap:20px;margin:0;padding:0;list-style:none;display:grid}.feature{align-items:flex-start;gap:14px;display:flex}.feature-chip{width:40px;height:40px;color:var(--primary);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:10px;flex:none;place-items:center;display:grid}.feature-chip svg{width:20px;height:20px}.feature-body{flex-direction:column;gap:2px;display:flex}.feature-title{color:var(--ink);font-size:.95rem;font-weight:600}.feature-sub{color:var(--text-muted);font-size:.875rem;line-height:1.45}.auth-brand-footer{width:100%;max-width:480px;color:var(--text-faint);letter-spacing:.01em;border-top:1px solid #10162314;margin:40px auto 0;padding-top:22px;font-size:.82rem}.auth-panel{background:var(--bg);justify-content:center;align-items:center;padding:40px 32px;display:flex}.signin-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:380px;box-shadow:var(--shadow-lg);padding:40px 36px}.signin-eyebrow{letter-spacing:.09em;text-transform:uppercase;color:var(--primary);margin-bottom:12px;font-size:.76rem;font-weight:600}.signin-card h2{margin:0 0 8px;font-size:1.7rem;font-weight:700}.signin-sub{color:var(--text-muted);margin:0 0 28px;font-size:.95rem;line-height:1.55}.signin-card .btn-primary{justify-content:center;align-items:center;gap:9px;width:100%;padding:12px 16px;font-size:.95rem;display:inline-flex}.signin-card .btn-primary svg{width:18px;height:18px}.signin-secured{color:var(--text-muted);justify-content:center;align-items:center;gap:7px;margin-top:16px;font-size:.78rem;display:flex}.signin-secured svg{width:14px;height:14px}.signin-note{border-top:1px solid var(--border);color:var(--text-faint);text-align:center;margin-top:16px;padding-top:16px;font-size:.8rem;line-height:1.5}@media (width<=900px){.auth-layout{grid-template-columns:1fr}.auth-brand{padding:40px 30px}.auth-brand h1{font-size:2rem}.auth-brand-footer{margin-top:32px}.auth-panel{padding:40px 24px 56px}}@media (width<=640px){.main{padding:20px 18px}.kpi-row{grid-template-columns:1fr}.auth-brand .feature-list,.auth-brand-footer{display:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
