:root{--c-900: #212529;--c-800: #343a40;--c-700: #495057;--c-600: #6c757d;--c-400: #adb5bd;--c-300: #ced4da;--c-100: #e9ecef;--c-50: #f5f6f7;--white: #ffffff;--ok: #2f9e44;--warn: #e8590c;--danger: #d9480f;--focus: #1c7ed6;--radius: 10px;--shadow: 0 1px 3px rgb(33 37 41 / 10%);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--c-900);background:var(--c-50)}*{box-sizing:border-box}body{margin:0;font-size:15px;line-height:1.5}h1,h2,h3,h4{margin:0;font-weight:700}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit}a{color:var(--c-700)}.install-icon{font-size:1rem;line-height:1}.app{display:flex;min-height:100vh}.sidebar{width:240px;flex-shrink:0;background:var(--c-900);color:var(--c-300);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:40}.sidebar .brand{padding:22px 20px 18px;border-bottom:1px solid var(--c-800)}.sidebar .brand .name{color:var(--white);font-size:.98rem;font-weight:800;letter-spacing:.04em}.sidebar .brand .sub{font-size:.68rem;color:var(--c-600);text-transform:uppercase;letter-spacing:.14em;margin-top:3px}.nav{padding:12px 10px;display:flex;flex-direction:column;gap:2px;flex:1;overflow-y:auto}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:0;border-radius:8px;background:transparent;color:var(--c-400);text-align:left;font-size:.92rem;font-weight:500;width:100%}.nav-item:hover{background:var(--c-800);color:var(--white)}.nav-item.active{background:var(--c-700);color:var(--white)}.nav-item .icon{font-size:1rem;width:20px;text-align:center}.sidebar .side-footer{padding:14px 20px;border-top:1px solid var(--c-800);font-size:.78rem;color:var(--c-600)}.sidebar .side-footer .who{color:var(--c-300);font-weight:600}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:14px;padding:14px 28px;background:var(--white);border-bottom:1px solid var(--c-300);position:sticky;top:0;z-index:30}.topbar h1{font-size:1.15rem}.topbar .spacer{flex:1}.content{padding:26px 28px 60px;max-width:1200px;width:100%;margin:0 auto}.hamburger{display:none;background:none;border:1px solid var(--c-300);border-radius:8px;padding:6px 10px;font-size:1.05rem}.backdrop{display:none}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:24px}.kpi{background:var(--white);border:1px solid var(--c-300);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}.kpi .num{font-size:1.9rem;font-weight:800;line-height:1.1}.kpi .label{font-size:.78rem;color:var(--c-600);text-transform:uppercase;letter-spacing:.05em;margin-top:4px}.kpi.clickable{cursor:pointer;transition:border-color .12s}.kpi.clickable:hover{border-color:var(--c-600)}.kpi.warn .num{color:var(--warn)}.kpi.ok .num{color:var(--ok)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.card{background:var(--white);border:1px solid var(--c-300);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:20px}.card>.card-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--c-100)}.card>.card-head h2{font-size:.95rem}.card>.card-head .spacer{flex:1}.card>.card-body{padding:16px 18px}.card>.card-body.tight{padding:0}.table{width:100%;border-collapse:collapse;font-size:.9rem}.table th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--c-600);padding:10px 14px;border-bottom:1px solid var(--c-300);background:var(--c-50);white-space:nowrap}.table td{padding:11px 14px;border-bottom:1px solid var(--c-100);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tr.row-click{cursor:pointer}.table tr.row-click:hover td{background:var(--c-50)}.table .actions{display:flex;gap:6px;justify-content:flex-end}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.74rem;font-weight:600;white-space:nowrap;background:var(--c-100);color:var(--c-700)}.badge.ok{background:#d3f9d8;color:#2b8a3e}.badge.warn{background:#ffe8cc;color:#d9480f}.badge.danger{background:#ffe3e3;color:#c92a2a}.badge.info{background:#d0ebff;color:#1971c2}.badge.muted{background:var(--c-100);color:var(--c-600)}.badge.dark{background:var(--c-800);color:var(--white)}.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 15px;border-radius:8px;border:1px solid var(--c-300);background:var(--white);color:var(--c-800);font-size:.88rem;font-weight:600;transition:background .12s,border-color .12s}.btn:hover{background:var(--c-50);border-color:var(--c-400)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--c-900);border-color:var(--c-900);color:var(--white)}.btn.primary:hover{background:var(--c-700)}.btn.ok{background:var(--ok);border-color:var(--ok);color:var(--white)}.btn.ok:hover{filter:brightness(1.08)}.btn.warn{background:var(--warn);border-color:var(--warn);color:var(--white)}.btn.danger{background:var(--white);border-color:var(--danger);color:var(--danger)}.btn.danger:hover{background:#fff5f5}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--c-100)}.btn.sm{padding:4px 10px;font-size:.78rem;border-radius:6px}.btn.block{width:100%;justify-content:center}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .full{grid-column:1 / -1}.field label{display:block;font-size:.78rem;font-weight:600;color:var(--c-700);margin-bottom:5px}.field input,.field select,.field textarea{width:100%;padding:9px 11px;border:1px solid var(--c-300);border-radius:8px;background:var(--white);color:var(--c-900);outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--focus);box-shadow:0 0 0 3px #1c7ed61f}.field textarea{resize:vertical;min-height:74px}.field .hint{font-size:.74rem;color:var(--c-600);margin-top:4px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2125298c;display:flex;align-items:flex-start;justify-content:center;padding:4vh 16px;z-index:100;overflow-y:auto}.modal{background:var(--white);border-radius:14px;width:100%;max-width:640px;box-shadow:0 24px 60px #21252940;margin-bottom:4vh;display:flex;flex-direction:column;max-height:92vh;max-height:92dvh}.modal.wide{max-width:860px}.modal .modal-head{display:flex;align-items:center;gap:10px;padding:18px 22px;border-bottom:1px solid var(--c-100);flex-shrink:0}.modal .modal-head h2{font-size:1.05rem;flex:1}.modal .modal-body{padding:20px 22px;overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1;min-height:0;scrollbar-width:thin}.modal .modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:14px 22px;border-top:1px solid var(--c-100);background:var(--c-50);border-radius:0 0 14px 14px;flex-shrink:0}.toast-wrap{position:fixed;bottom:22px;right:22px;z-index:200;display:flex;flex-direction:column;gap:8px}.toast{background:var(--c-900);color:var(--white);border-radius:10px;padding:12px 18px;font-size:.88rem;box-shadow:0 10px 30px #2125294d;display:flex;gap:10px;align-items:center;max-width:360px}.toast.error{background:#a61e4d}.toast.ok{background:#2b8a3e}.bell{position:relative;background:none;border:1px solid var(--c-300);border-radius:8px;padding:6px 11px;font-size:1rem;line-height:1}.bell:hover{background:var(--c-50)}.bell .count{position:absolute;top:-7px;right:-7px;background:var(--danger);color:#fff;font-size:.66rem;font-weight:800;border-radius:999px;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;padding:0 4px}.notif-item{display:flex;gap:12px;padding:13px 18px;border-bottom:1px solid var(--c-100);align-items:flex-start}.notif-item:last-child{border-bottom:0}.notif-item.unread{background:#f0f7ff}.notif-item .dot{width:8px;height:8px;border-radius:50%;background:var(--focus);margin-top:7px;flex-shrink:0}.notif-item.read .dot{background:var(--c-300)}.notif-item .t{font-weight:600;font-size:.88rem}.notif-item .b{font-size:.82rem;color:var(--c-600)}.notif-item .when{font-size:.72rem;color:var(--c-400)}.section-title{display:flex;align-items:center;gap:12px;margin:26px 0 12px}.section-title h2{font-size:1rem}.section-title .spacer{flex:1}.empty{padding:36px 20px;text-align:center;color:var(--c-600);font-size:.9rem}.filter-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.filter-row input[type=search]{flex:1;min-width:200px;padding:9px 12px;border:1px solid var(--c-300);border-radius:8px;outline:none}.filter-row select{padding:9px 10px;border:1px solid var(--c-300);border-radius:8px;background:#fff}.chip-row{display:flex;gap:6px;flex-wrap:wrap}.chip{padding:3px 10px;border-radius:999px;font-size:.74rem;font-weight:600;border:1px solid var(--c-300);background:var(--white);color:var(--c-700)}.link-item{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--c-100)}.link-item:last-child{border-bottom:0}.muted{color:var(--c-600)}.small{font-size:.8rem}.mt0{margin-top:0}.divider{border:0;border-top:1px solid var(--c-100);margin:18px 0}.detail-head{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:20px}.avatar{width:46px;height:46px;border-radius:50%;background:var(--c-800);color:var(--white);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.05rem}.history-item{padding:10px 0;border-bottom:1px solid var(--c-100);font-size:.86rem}.history-item:last-child{border-bottom:0}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--c-900);padding:20px}.login-card{background:var(--white);border-radius:16px;padding:44px 40px;max-width:420px;width:100%;text-align:center}.login-card .logo{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--c-600);margin-bottom:10px}.login-card h1{font-size:1.5rem;margin-bottom:8px}.login-card p{color:var(--c-600);font-size:.9rem}.login-form{display:flex;flex-direction:column;gap:12px;margin-top:20px;text-align:left}.login-form .field{display:block;font-size:.78rem;font-weight:600;color:var(--c-700)}.login-form .field span{display:block;margin-bottom:5px}.login-form .field input{width:100%;padding:9px 11px;border:1px solid var(--c-300);border-radius:8px}.login-error{margin:12px 0 0;color:#a61e4d!important}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--c-300);margin-bottom:18px;flex-wrap:wrap}.tab{padding:9px 14px;border:0;background:none;font-size:.88rem;font-weight:600;color:var(--c-600);border-bottom:2px solid transparent;margin-bottom:-1px}.tab:hover{color:var(--c-900)}.tab.active{color:var(--c-900);border-bottom-color:var(--c-900)}@media(max-width:900px){.grid-2,.form-grid{grid-template-columns:1fr}}@media(max-width:768px){.sidebar{position:fixed;left:-260px;transition:left .18s ease;height:100vh}.sidebar.open{left:0}.backdrop.show{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#21252973;z-index:35}.hamburger{display:inline-flex}.content{padding:18px 14px 80px}.topbar{padding:12px 14px}.table-responsive{overflow-x:auto}}@media(max-width:420px){.install-app-btn.compact .install-label{display:none}.install-app-btn.compact{padding:7px 9px}}
