:root{--navy:#0d1117;--navy2:#161b22;--navy3:#1c2333;--navy4:#21262d;--blue:#4cc9f0;--blue2:#3aa8d8;--blue-dim:#4cc9f01f;--blue-border:#4cc9f04d;--green:#3fb950;--green-dim:#3fb9501f;--amber:#d29922;--amber-dim:#d299221f;--red:#f85149;--red-dim:#f851491f;--text1:#e6edf3;--text2:#8b949e;--text3:#6e7681;--border:#ffffff14;--border2:#4cc9f040;--radius:8px;--radius2:12px;--sidebar-w:220px;--topbar-h:56px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:14px}body{background:var(--navy);color:var(--text1);-webkit-font-smoothing:antialiased;font-family:-apple-system,Inter,Segoe UI,sans-serif;line-height:1.6}a{color:var(--blue);text-decoration:none}a:hover{color:var(--blue2)}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,select,textarea{font-family:inherit;font-size:14px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--navy2)}::-webkit-scrollbar-thumb{background:var(--navy4);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text3)}.text-green{color:var(--green)}.text-amber{color:var(--amber)}.text-red{color:var(--red)}.text-blue{color:var(--blue)}.text-muted{color:var(--text2)}.text-faint{color:var(--text3)}.text-bold{font-weight:600}.text-right{text-align:right}.text-center{text-align:center}.flex{display:flex}.flex-col{flex-direction:column;display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.card{background:var(--navy2);border:1px solid var(--border);border-radius:var(--radius2);padding:20px}.card-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.card-title{color:var(--text1);font-size:13px;font-weight:600}.btn{border-radius:var(--radius);border:1px solid #0000;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:600;transition:all .15s;display:inline-flex}.btn-primary{background:var(--blue);color:var(--navy)}.btn-primary:hover{background:var(--blue2)}.btn-ghost{color:var(--text2);border-color:var(--border);background:0 0}.btn-ghost:hover{border-color:var(--text3);color:var(--text1)}.btn-outline{color:var(--blue);border-color:var(--blue-border);background:0 0}.btn-outline:hover{background:var(--blue-dim)}.btn-danger{background:var(--red-dim);color:var(--red);border-color:#f851494d}.btn-danger:hover{background:#f8514933}.btn-sm{padding:5px 12px;font-size:12px}.btn-lg{padding:12px 24px;font-size:15px}.btn:disabled{opacity:.5;cursor:not-allowed}.badge{border-radius:20px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.form-field{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--text2);letter-spacing:.3px;font-size:12px;font-weight:600}.form-input{background:var(--navy3);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text1);outline:none;padding:10px 14px;font-size:14px;transition:border-color .15s}.form-input::placeholder{color:var(--text3)}.form-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #4cc9f01a}select.form-input{appearance:none;cursor:pointer}.data-table th{color:var(--text3);letter-spacing:.5px;text-transform:uppercase;text-align:left;border-bottom:1px solid var(--border);padding:0 0 10px;font-size:11px;font-weight:600}.page-content{padding:24px 28px}.page-header{justify-content:space-between;align-items:flex-start;margin-bottom:24px;display:flex}.page-title{letter-spacing:-.3px;font-size:20px;font-weight:700}.page-subtitle{color:var(--text2);margin-top:3px;font-size:13px}.empty-state svg{opacity:.4}.empty-state h3{color:var(--text2);font-size:15px}.spinner{border:2px solid var(--navy4);border-top-color:var(--blue);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-center{justify-content:center;align-items:center;padding:48px;display:flex}.alert-item{border-radius:var(--radius);align-items:flex-start;gap:10px;margin-bottom:8px;padding:12px;display:flex}.alert-item.danger{background:var(--red-dim);border:1px solid #f8514933}.alert-item.warn{background:var(--amber-dim);border:1px solid #d2992233}.alert-item.info{background:var(--blue-dim);border:1px solid var(--blue-border)}.alert-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:5px}.alert-dot.danger{background:var(--red)}.alert-dot.warn{background:var(--amber)}.alert-dot.info{background:var(--blue)}@media (width<=768px){:root{--sidebar-w:0px}.page-content{padding:16px}.hide-mobile{display:none!important}}.sidebar{width:var(--sidebar-w);background:var(--navy2);border-right:1px solid var(--border);z-index:50;flex-direction:column;flex-shrink:0;height:100vh;display:flex;position:fixed;top:0;left:0}.sidebar-head{border-bottom:1px solid var(--border);padding:20px 16px 14px}.sidebar-logo{align-items:center;gap:8px;margin-bottom:6px;display:flex}.logo-img{object-fit:contain;background:var(--navy4);border:1px solid var(--border);border-radius:7px;flex-shrink:0;width:28px;height:28px}.logo-text{color:var(--text1);letter-spacing:-.3px;font-size:15px;font-weight:700}.logo-text span{color:var(--blue)}.sidebar-owner{color:var(--text3);padding-left:36px;font-size:11px}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:10px 8px;display:flex;overflow-y:auto}.nav-item{border-radius:var(--radius);color:var(--text2);align-items:center;gap:9px;padding:8px 10px;font-size:13px;text-decoration:none;transition:all .12s;display:flex;position:relative}.nav-item:hover{background:var(--navy4);color:var(--text1)}.nav-item.active{background:var(--blue-dim);color:var(--blue);border:1px solid var(--blue-border)}.nav-badge{background:var(--red);color:#fff;text-align:center;border-radius:20px;min-width:18px;margin-left:auto;padding:1px 6px;font-size:10px;font-weight:700}.sidebar-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:14px;display:flex}.sidebar-user{flex:1;align-items:center;gap:9px;min-width:0;display:flex}.sidebar-avatar{background:var(--blue-dim);border:1px solid var(--blue-border);width:30px;height:30px;color:var(--blue);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.sidebar-name{color:var(--text1);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.sidebar-role{color:var(--text3);font-size:11px}.btn-icon{border-radius:var(--radius);width:30px;height:30px;color:var(--text3);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:flex}.btn-icon:hover{background:var(--navy4);color:var(--red)}.app-layout{min-height:100vh;display:flex}.app-main{margin-left:var(--sidebar-w);flex-direction:column;flex:1;min-width:0;display:flex}@media (width<=768px){.app-main{margin-left:0}}.login-page{background:var(--navy);grid-template-columns:1fr 460px;min-height:100vh;display:grid}.login-left{background:var(--navy2);border-right:1px solid var(--border);flex-direction:column;justify-content:space-between;padding:48px;display:flex}.login-left-inner{max-width:420px}.login-headline{letter-spacing:-1px;color:var(--text1);margin-bottom:16px;font-size:34px;font-weight:800;line-height:1.15}.login-desc{color:var(--text2);margin-bottom:36px;font-size:15px;line-height:1.7}.login-metrics{flex-direction:column;gap:12px;display:flex}.login-metric{background:var(--navy3);border:1px solid var(--border);border-radius:10px;align-items:center;gap:14px;padding:14px 16px;display:flex}.metric-icon{border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:16px;display:flex}.metric-green{background:var(--green-dim)}.metric-amber{background:var(--amber-dim)}.metric-blue{background:var(--blue-dim)}.metric-label{color:var(--text3);margin-bottom:2px;font-size:11px}.metric-val{color:var(--text1);font-size:14px;font-weight:600}.login-copy{color:var(--text3);font-size:12px}.login-right{justify-content:center;align-items:center;padding:48px 40px;display:flex}.login-form-wrap{width:100%;max-width:360px}.login-portal-label{color:var(--text3);letter-spacing:1px;text-transform:uppercase;margin-bottom:10px;font-size:11px}.login-form-title{letter-spacing:-.4px;margin-bottom:6px;font-size:22px;font-weight:700}.login-form-sub{color:var(--text2);margin-bottom:28px;font-size:13px}.login-form{flex-direction:column;gap:16px;display:flex}.login-error{background:var(--red-dim);border-radius:var(--radius);color:var(--red);border:1px solid #f851494d;padding:10px 14px;font-size:13px}.login-cashier-note{border-top:1px solid var(--border);margin-top:28px;padding-top:20px}.login-cashier-label{color:var(--text3);letter-spacing:.8px;text-transform:uppercase;text-align:center;margin-bottom:10px;font-size:11px}.login-cashier-text{background:var(--navy2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text2);text-align:center;padding:12px 14px;font-size:12px;line-height:1.6}@media (width<=900px){.login-page{grid-template-columns:1fr}.login-left{display:none}.login-right{padding:32px 24px}}.kpi-card{background:var(--navy2);border:1px solid var(--border);border-radius:var(--radius2);padding:18px 20px;transition:border-color .15s}.kpi-card:hover{border-color:#ffffff1f}.kpi-label{color:var(--text3);letter-spacing:.3px;text-transform:uppercase;align-items:center;gap:6px;margin-bottom:10px;font-size:11px;font-weight:500;display:flex}.kpi-value{letter-spacing:-.8px;margin-bottom:6px;font-size:26px;font-weight:700}.kpi-sub{color:var(--text3);align-items:center;gap:4px;font-size:12px;display:flex}.kpi-amber .kpi-value{color:var(--amber)}.kpi-red .kpi-value{color:var(--red)}.kpi-green .kpi-value{color:var(--green)}.kpi-blue .kpi-value{color:var(--blue)}.topbar{height:var(--topbar-h);border-bottom:1px solid var(--border);background:var(--navy2);z-index:40;justify-content:space-between;align-items:center;gap:16px;padding:0 28px;display:flex;position:sticky;top:0}.topbar-left{min-width:0}.topbar-title{letter-spacing:-.3px;white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:700;overflow:hidden}.topbar-subtitle{color:var(--text3);margin-top:1px;font-size:12px}.topbar-right{flex-shrink:0;align-items:center;gap:10px;display:flex}.topbar-date{color:var(--text3);font-size:12px}.spin{animation:.7s linear infinite spin}.badge{white-space:nowrap;border-radius:20px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-green{background:var(--green-dim);color:var(--green)}.badge-amber{background:var(--amber-dim);color:var(--amber)}.badge-red{background:var(--red-dim);color:var(--red)}.badge-blue{background:var(--blue-dim);color:var(--blue)}.badge-muted{background:var(--navy4);color:var(--text3)}.empty-state{color:var(--text3);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:48px 24px;display:flex}.empty-icon{opacity:.4}.empty-state h3{color:var(--text2);font-size:15px;font-weight:600}.empty-state p{max-width:320px;font-size:13px;line-height:1.5}.table-wrap{width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th{color:var(--text3);letter-spacing:.5px;text-transform:uppercase;text-align:left;border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;padding:0 0 10px;font-size:11px;font-weight:600}.sortable{cursor:pointer}.sortable:hover{color:var(--text1)}.th-inner{align-items:center;gap:4px;display:inline-flex}.data-table td{border-bottom:1px solid var(--border);color:var(--text2);vertical-align:middle;padding:12px 0;font-size:13px}.data-table td:first-child{color:var(--text1);font-weight:500}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#ffffff05}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px;display:grid}.dash-grid{grid-template-columns:1fr 340px;gap:16px;margin-bottom:20px;display:grid}.shops-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.shop-card{cursor:default}.shop-stats{border-top:1px solid var(--border);grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px;padding-top:16px;display:grid}.shop-stat-val{letter-spacing:-.5px;font-size:18px;font-weight:700}.shop-stat-label{color:var(--text3);margin-top:2px;font-size:11px}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;display:grid}.detail-label{color:var(--text3);text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px;font-size:11px}
