:root{--teal:#2b8a8a;--teal-800:#174e4e;--teal-700:#237071;--teal-600:#1e5b5d;--teal-500:#2b8a8a;--teal-400:#6ecdc7;--teal-200:#a7e3df;--teal-100:#d1f1ef;--teal-50:#effaf9;--saffron:#d99a2b;--saffron-50:#fef3d7;--saffron-700:#b87a1c;--red:#d65a4a;--red-50:#fbe6e2;--green:#2f9e6b;--green-50:#e2f5ec;--blue:#4a8fcf;--blue-50:#e3eef9;--purple:#7b6acb;--purple-50:#ece9f7;--ink-900:#14191c;--ink-800:#232a2e;--ink-700:#3e474c;--ink-500:#5d676d;--ink-400:#818b91;--ink-300:#b0b8bc;--ink-200:#d8dee0;--ink-100:#e6ebed;--ink-50:#eef2f3;--bg:#f5f7f8;--card:#fff;--border:#e6ebed;--border-2:#eef2f3;--mono:"JetBrains Mono", monospace;--font:"Inter", system-ui, sans-serif;--r-sm:8px;--r-md:10px;--r-lg:14px;--sidebar-w:220px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);color:var(--ink-800);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:14px}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit}a{color:var(--teal-700);text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--ink-200);border-radius:3px}.app-shell{min-height:100vh}.main-area{min-width:0;margin-left:var(--sidebar-w);flex-direction:column;display:flex}.main-content{flex:1;padding:28px 32px 36px}.sidebar{background:var(--teal);color:#fff;width:var(--sidebar-w);z-index:100;flex-direction:column;height:100vh;display:flex;position:fixed;top:0;left:0}.sidebar-logo{align-items:center;gap:10px;padding:16px 16px 12px;display:flex}.sidebar-logo-img{background:#fff3;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:13px;font-weight:700;display:flex}.sidebar-logo-title{letter-spacing:-.01em;font-size:14px;font-weight:700}.sidebar-logo-subtitle{color:#fff9;letter-spacing:.06em;text-transform:uppercase;font-size:10px;font-weight:600}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:6px 10px;display:flex;overflow-y:auto}.sidebar-group-label{text-transform:uppercase;letter-spacing:.06em;color:#ffffff80;padding:14px 10px 6px;font-size:10px;font-weight:600}.sidebar-divider{background:#ffffff1f;height:1px;margin:10px}.sidebar-link{color:#ffffffc7;border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:13px;font-weight:500;text-decoration:none;transition:background .15s;display:flex}.sidebar-link svg{opacity:.7;flex-shrink:0}.sidebar-link:hover{background:#ffffff1a}.sidebar-link.active{color:#fff;background:#ffffff2e;font-weight:600}.sidebar-link.active svg{opacity:1}.sidebar-footer{cursor:pointer;border-top:1px solid #ffffff1a;align-items:center;gap:10px;padding:14px 18px;display:flex}.sidebar-avatar{background:#fff3;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:600;display:flex}.sidebar-footer-name{font-size:13px;font-weight:600}.sidebar-footer-role{color:#ffffff8c;font-size:11px}.page{flex-direction:column;gap:20px;display:flex}.page-title{color:var(--ink-900);letter-spacing:-.02em;margin:0 0 4px;font-size:24px;font-weight:700}.page-subtitle{color:var(--ink-400);margin:0;font-size:13px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}.card-header{border-bottom:1px solid var(--border-2);align-items:center;padding:14px 22px;display:flex}.card-header-title{color:var(--ink-500);font-size:13px;font-weight:600}.card-header-action{color:var(--teal-700);cursor:pointer;margin-left:auto;font-size:12px;font-weight:600}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.kpi-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px}.kpi-label{color:var(--ink-400);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:600}.kpi-value{color:var(--ink-900);font-size:22px;font-weight:700;font-family:var(--mono);margin-top:6px}.kpi-value span{color:var(--ink-300);font-size:13px;font-weight:500}.kpi-hint{margin-top:2px;font-size:12px;font-weight:600}.action-row{align-items:center;gap:14px;padding:15px 22px;display:flex}.action-row+.action-row{border-top:1px solid var(--border-2)}.action-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;display:flex}.action-text{flex:1;min-width:0}.action-title{color:var(--ink-900);font-size:13px;font-weight:700}.action-desc{color:var(--ink-400);font-size:12px}.btn{border-radius:10px;align-items:center;gap:6px;padding:10px 22px;font-size:14px;font-weight:600;transition:opacity .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--teal);color:#fff}.btn-primary:hover:not(:disabled){background:var(--teal-700)}.btn-secondary{background:var(--card);border:1px solid var(--border);color:var(--ink-800)}.btn-secondary:hover:not(:disabled){background:var(--bg)}.btn-ghost{color:var(--ink-500);background:0 0}.quick-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.quick-card{border:1px solid var(--border);color:var(--ink-700);cursor:pointer;border-radius:10px;flex-direction:column;gap:7px;padding:13px;font-size:12px;font-weight:600;transition:background .15s;display:flex}.quick-card:hover{background:var(--bg)}.schedule-item{align-items:center;gap:12px;padding:14px 18px;display:flex}.schedule-item+.schedule-item{border-top:1px solid var(--border-2)}.schedule-time{font-family:var(--mono);width:44px;font-size:12px;font-weight:700}.schedule-active{background:var(--teal-50)}.schedule-active .schedule-time{color:var(--teal-700)}.bar-chart{align-items:flex-end;gap:14px;height:180px;display:flex}.bar-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:8px;height:100%;display:flex}.bar-col .bar{border-radius:6px 6px 0 0;width:100%}.bar-col .bar-label{color:var(--ink-300);font-size:11px}.badge{border-radius:20px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.badge-red{background:var(--red-50);color:var(--red)}.badge-saffron{background:var(--saffron-50);color:var(--saffron-700)}.badge-teal{background:var(--teal-100);color:var(--teal-700)}.badge-green{background:var(--green-50);color:var(--green)}.badge-blue{background:var(--blue-50);color:var(--blue)}.badge-purple{background:var(--purple-50);color:var(--purple)}.empty-state{text-align:center;color:var(--ink-300);padding:48px 24px;font-size:14px}.notice-item{padding:14px 18px}.notice-item+.notice-item{border-top:1px solid var(--border-2)}.notice-title{color:var(--ink-900);margin-bottom:3px;font-size:13px;font-weight:700}.notice-body{color:var(--ink-500);font-size:12px;line-height:1.5}.field{flex-direction:column;gap:4px;display:flex}.field-label{color:var(--ink-500);font-size:12px;font-weight:600}.field-input{border:1px solid var(--border);height:40px;color:var(--ink-800);background:var(--card);border-radius:8px;outline:none;padding:0 12px;font-size:14px;transition:border-color .15s}.field-input:focus{border-color:var(--teal)}.field-textarea{border:1px solid var(--border);color:var(--ink-800);background:var(--card);resize:vertical;border-radius:8px;outline:none;min-height:80px;padding:10px 12px;font-size:14px;transition:border-color .15s}.field-textarea:focus{border-color:var(--teal)}.toast-container{z-index:9999;flex-direction:column;gap:8px;display:flex;position:fixed;top:16px;right:16px}.toast{color:#fff;border-radius:10px;padding:12px 20px;font-size:13px;font-weight:600;animation:.3s toastIn;box-shadow:0 8px 24px #00000026}.toast-success{background:var(--green)}.toast-error{background:var(--red)}.toast-info{background:var(--blue)}@keyframes toastIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media (width<=1024px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=768px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.main-area{margin-left:0}.kpi-grid{grid-template-columns:1fr 1fr}}.auth-body{background:var(--bg);min-height:100dvh;font-family:var(--sans);color:var(--ink-700)}.auth-split{flex-direction:column;min-height:100dvh;display:flex}@media (width>=1024px){.auth-split{flex-direction:row}}.auth-brand{display:none}@media (width>=1024px){.auth-brand{background:linear-gradient(160deg, var(--teal-600) 0%, var(--teal-800) 100%);color:#fff;flex-direction:column;justify-content:center;align-items:center;width:48%;min-height:100vh;padding:48px 40px;display:flex;position:relative;overflow:hidden}}.auth-brand:before{content:"";pointer-events:none;background:#ffffff0a;border-radius:50%;width:320px;height:320px;position:absolute;top:-80px;right:-80px}.auth-brand:after{content:"";pointer-events:none;background:#ffffff08;border-radius:50%;width:260px;height:260px;position:absolute;bottom:-100px;left:-60px}.auth-ornament{opacity:.04;pointer-events:none;background-image:radial-gradient(circle at 20% 30%,#ffffff26 1px,#0000 1px),radial-gradient(circle at 70% 60%,#ffffff1a 1px,#0000 1px),radial-gradient(circle at 45% 85%,#ffffff1f 1px,#0000 1px);background-size:60px 60px,80px 80px,50px 50px;position:absolute;inset:0}.auth-brand-content{z-index:1;text-align:center;max-width:400px;position:relative}.auth-brand-logo{width:96px;height:96px;margin:0 auto 24px}.auth-brand-title{letter-spacing:-.03em;margin-bottom:8px;font-size:28px;font-weight:800}.auth-brand-subtitle{opacity:.7;margin-bottom:40px;font-size:14px;line-height:1.6}.auth-features{z-index:1;flex-direction:column;gap:14px;width:100%;max-width:380px;margin-bottom:36px;display:flex;position:relative}.auth-feature-item{opacity:.85;align-items:center;gap:12px;font-size:13px;line-height:1.4;display:flex}.auth-feature-item svg{opacity:.7;flex-shrink:0;width:18px;height:18px}.auth-stats{z-index:1;justify-content:center;gap:32px;display:flex;position:relative}.auth-stat{text-align:center}.auth-stat-value{font-size:24px;font-weight:800;font-family:var(--mono);letter-spacing:-.02em}.auth-stat-label{text-transform:uppercase;letter-spacing:.06em;opacity:.55;margin-top:2px;font-size:11px}.auth-pane{background:var(--card);flex:1;justify-content:center;align-items:center;padding:32px 20px;display:flex}@media (width>=768px){.auth-pane{padding:48px 40px}}@media (width>=1024px){.auth-pane{width:52%;padding:48px 64px}}.auth-pane-inner{width:100%;max-width:400px}.auth-mobile-brand{text-align:center;margin-bottom:32px}.auth-mobile-brand img,.auth-mobile-brand svg{width:40px;height:40px;margin:0 auto 12px}.auth-mobile-brand h1{color:var(--teal-600);letter-spacing:-.02em;margin-bottom:4px;font-size:20px;font-weight:800}.auth-mobile-brand p{color:var(--ink-400);font-size:13px}@media (width>=1024px){.auth-mobile-brand{display:none}}.auth-tabs{background:var(--ink-50);border:1px solid var(--border);border-radius:var(--r);gap:2px;margin-bottom:28px;padding:3px;display:flex}.auth-tab{text-align:center;color:var(--ink-400);cursor:pointer;background:0 0;border:none;border-radius:7px;flex:1;padding:9px 12px;font-size:13px;font-weight:600;transition:all .15s}.auth-tab:hover{color:var(--ink-600)}.auth-tab.active{background:var(--card);color:var(--ink-800);box-shadow:var(--shadow-sm)}.auth-form{flex-direction:column;gap:18px;display:flex}.auth-form-title{color:var(--ink-800);letter-spacing:-.02em;margin-bottom:4px;font-size:22px;font-weight:800}.auth-form-subtitle{color:var(--ink-400);margin-bottom:4px;font-size:13px}.auth-field{flex-direction:column;gap:5px;display:flex}.auth-field label{color:var(--ink-600);font-size:12px;font-weight:600}.auth-field label .req{color:var(--red);margin-left:2px}.auth-input-wrap{align-items:center;display:flex;position:relative}.auth-input-icon{width:18px;height:18px;color:var(--ink-300);pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;left:12px}.auth-field input{border:1px solid var(--border);background:var(--card);width:100%;height:44px;color:var(--ink-700);border-radius:8px;outline:none;padding:0 14px;font-size:14px;transition:border-color .15s,box-shadow .15s}.auth-field input.has-icon{padding-left:40px}.auth-field input::placeholder{color:var(--ink-300)}.auth-field input:focus{border-color:var(--teal-400);box-shadow:0 0 0 3px var(--teal-50)}.auth-field.error input{border-color:var(--red);box-shadow:0 0 0 3px var(--red-bg)}.auth-field .auth-err{color:var(--red);font-size:11px;font-weight:500}.auth-toggle-pw{width:30px;height:30px;color:var(--ink-300);border-radius:var(--r-sm);justify-content:center;align-items:center;transition:color .15s;display:flex;position:absolute;right:10px}.auth-toggle-pw:hover{color:var(--ink-600)}.auth-strength{gap:4px;margin-top:-4px;display:flex}.auth-strength-bar{background:var(--ink-100);border-radius:2px;flex:1;height:3px;transition:background .3s}.auth-strength[data-score="1"] .auth-strength-bar:first-child{background:var(--red)}.auth-strength[data-score="2"] .auth-strength-bar:nth-child(-n+2){background:var(--saffron-500)}.auth-strength[data-score="3"] .auth-strength-bar:nth-child(-n+3){background:var(--saffron-300)}.auth-strength[data-score="4"] .auth-strength-bar{background:var(--green)}.auth-strength-text{color:var(--ink-400);margin-top:2px;font-size:11px}.auth-check{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.auth-check input[type=checkbox]{appearance:none;border:1.5px solid var(--ink-300);cursor:pointer;background:var(--card);border-radius:4px;flex-shrink:0;width:18px;height:18px;margin-top:1px;transition:all .15s;position:relative}.auth-check input[type=checkbox]:checked{background:var(--teal-500);border-color:var(--teal-500)}.auth-check input[type=checkbox]:checked:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:5px;height:9px;position:absolute;top:3px;left:5.5px;transform:rotate(45deg)}.auth-check input[type=checkbox]:focus-visible{box-shadow:0 0 0 3px var(--teal-50)}.auth-check-label{color:var(--ink-500);font-size:13px;line-height:1.4}.auth-check-label a{color:var(--teal-500);font-weight:500}.auth-check-label a:hover{text-decoration:underline}.auth-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.auth-forgot{color:var(--teal-500);font-size:13px;font-weight:500;transition:color .15s}.auth-forgot:hover{color:var(--teal-600);text-decoration:underline}.auth-submit{background:var(--teal-500);color:#fff;cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:8px;width:100%;height:46px;font-size:14px;font-weight:700;transition:background .15s,transform .1s;display:flex}.auth-submit:hover{background:var(--teal-600)}.auth-submit:active{background:var(--teal-700);transform:scale(.99)}.auth-submit:disabled{opacity:.5;pointer-events:none}.auth-submit .spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.6s linear infinite auth-spin}@keyframes auth-spin{to{transform:rotate(360deg)}}.auth-divider{color:var(--ink-300);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:14px;font-size:12px;font-weight:500;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.auth-google{background:var(--card);width:100%;height:44px;color:var(--ink-700);border:1px solid var(--border);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:10px;font-size:13px;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s;display:flex}.auth-google:hover{background:var(--ink-50);border-color:var(--ink-300);box-shadow:var(--shadow-sm)}.auth-google svg,.auth-google img{flex-shrink:0;width:18px;height:18px}.auth-footer{text-align:center;color:var(--ink-400);margin-top:8px;font-size:13px}.auth-footer a{color:var(--teal-500);font-weight:600}.auth-footer a:hover{text-decoration:underline}.auth-centered{background:var(--bg);justify-content:center;align-items:center;min-height:100dvh;padding:24px 20px;display:flex}.auth-centered-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-xl);width:100%;max-width:420px;box-shadow:var(--shadow);padding:32px 24px}@media (width>=768px){.auth-centered-card{padding:40px 36px}}.auth-centered-card .auth-centered-logo{width:44px;height:44px;margin:0 auto 20px}.auth-centered-card .auth-centered-title{text-align:center;color:var(--ink-800);margin-bottom:6px;font-size:20px;font-weight:800}.auth-centered-card .auth-centered-sub{text-align:center;color:var(--ink-400);margin-bottom:24px;font-size:13px}.auth-layout-toggle{z-index:100;background:var(--ink-800);color:#fff;border-radius:var(--r);cursor:pointer;box-shadow:var(--shadow-lg);border:none;align-items:center;gap:8px;padding:8px 14px;font-size:12px;font-weight:600;transition:background .15s;display:flex;position:fixed;bottom:20px;right:20px}.auth-layout-toggle:hover{background:var(--ink-700)}.auth-layout-toggle svg{width:16px;height:16px}@media (width<=767px){.auth-layout-toggle{bottom:16px;right:16px}}.auth-field-group{grid-template-columns:1fr;gap:14px;display:grid}@media (width>=480px){.auth-field-group{grid-template-columns:repeat(2,1fr)}}.auth-phone-wrap{gap:8px;display:flex}.auth-phone-code{flex-shrink:0;width:80px}.auth-phone-code select{border:1px solid var(--border);background:var(--ink-50);width:100%;height:44px;color:var(--ink-600);border-radius:8px;outline:none;padding:0 8px;font-size:13px}.auth-phone-code select:focus{border-color:var(--teal-400);box-shadow:0 0 0 3px var(--teal-50)}.auth-phone-wrap input{flex:1}.auth-message{border-radius:var(--r);align-items:flex-start;gap:10px;padding:12px 14px;font-size:13px;line-height:1.45;display:flex}.auth-message.success{background:var(--green-bg);color:var(--green);border:1px solid #2f9e6b26}.auth-message.error{background:var(--red-bg);color:var(--red);border:1px solid #d65a4a26}.auth-message svg{flex-shrink:0;width:18px;height:18px;margin-top:1px}.auth-animate-in{animation:.4s cubic-bezier(.32,.72,0,1) auth-slide-up}@keyframes auth-slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.auth-brand-animate{animation:.6s auth-fade-in}@keyframes auth-fade-in{0%{opacity:0}to{opacity:1}}.auth-form .auth-field:first-child{animation-delay:50ms}.auth-form .auth-field:nth-child(2){animation-delay:.1s}.auth-form .auth-field:nth-child(3){animation-delay:.15s}.auth-form .auth-field:nth-child(4){animation-delay:.2s}.auth-form .auth-field:nth-child(5){animation-delay:.25s}@media (prefers-reduced-motion:reduce){.auth-animate-in,.auth-brand-animate{animation:none}.auth-submit,.auth-google,.auth-field input{transition-duration:.01ms!important}}
