:root{--primary:#1a73e8;--primary-dark:#1662c4;--primary-light:#49a3f1;--primary-glow:rgba(26,115,232,.5);--primary-soft:#e3effd;--navy:#344767;--navy-2:#2a2a31;--blue:#1a73e8;--blue-2:#1662c4;--blue-3:#49a3f1;--bg:#f0f2f5;--card:#fff;--line:#e9ecef;--line-soft:#f1f3f5;--text:#344767;--muted:#7b809a;--faint:#a2a7bd;--green:#43a047;--green-bg:#e6f4ea;--red:#e53935;--red-bg:#fdecea;--amber:#fb8c00;--amber-bg:#fff3e0;--radius:12px;--radius-lg:16px;--shadow:0 2px 6px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.06);--shadow-md:0 6px 16px rgba(0,0,0,.1);--shadow-sidebar:0 12px 28px rgba(20,20,40,.18)}body,html{background:var(--bg);color:var(--text);font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit}.app{display:flex;min-height:100vh}.sidebar{width:262px;flex-shrink:0;background:#2a2a31;color:#ffffffbf;display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:16px;height:calc(100vh - 32px);margin:16px 0 16px 16px;border-radius:var(--radius-lg);box-shadow:var(--shadow-sidebar);overflow:hidden}.brand{padding:20px 20px 16px;margin:0 6px;border-bottom:1px solid hsla(0,0%,100%,.12);gap:12px}.brand,.brand .brand-mark{display:flex;align-items:center}.brand .brand-mark{width:38px;height:38px;border-radius:10px;background:linear-gradient(310deg,var(--primary),var(--primary-light));justify-content:center;color:#fff;font-weight:700;font-size:16px;flex-shrink:0;box-shadow:0 4px 10px -2px var(--primary-glow)}.brand h1{font-size:15px;color:#fff;font-weight:700;letter-spacing:.2px;line-height:1.2}.brand span{font-size:11.5px;color:hsla(0,0%,100%,.55)}.nav{padding:14px 14px 18px;overflow-y:auto;flex:1 1}.nav a{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:8px;font-size:13.5px;color:hsla(0,0%,100%,.78);margin-bottom:3px;transition:background .15s,color .15s,box-shadow .15s;white-space:nowrap}.nav a:hover{background:hsla(0,0%,100%,.08);color:#fff}.nav a.active{background:linear-gradient(310deg,var(--primary-dark),var(--primary));color:#fff;font-weight:500;box-shadow:0 4px 10px -2px var(--primary-glow)}.nav a .nav-ico{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.1);flex-shrink:0;transition:background .15s}.nav a.active .nav-ico{background:#fff;color:var(--primary)}.nav a .nav-ico svg{width:15px;height:15px}.nav a .dot{width:6px;height:6px;border-radius:50%;background:var(--primary-light);opacity:.6}.nav a.active .dot{background:#fff;opacity:1}.nav .disabled{opacity:.4;cursor:not-allowed}.side-foot{border-top:1px solid hsla(0,0%,100%,.12);padding:12px 20px 16px;margin:0 6px;display:flex;flex-direction:column;gap:8px}.side-user{font-size:11.5px;color:hsla(0,0%,100%,.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-logout{background:hsla(0,0%,100%,.08);color:#fff;border:none;border-radius:8px;padding:8px 12px;font:inherit;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}.side-logout:hover{background:hsla(0,0%,100%,.16)}.nav-section{margin:16px 14px 6px;font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:hsla(0,0%,100%,.4);font-weight:600}.main{flex:1 1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 28px 8px;background:transparent;flex-wrap:wrap}.topbar .title .crumb{font-size:12px;color:var(--muted);margin-bottom:2px}.topbar .title .crumb b{color:var(--text);font-weight:600}.topbar .title h2{font-size:22px;font-weight:700;color:var(--text);letter-spacing:-.2px}.topbar .title p{color:var(--muted);font-size:13px}.topbar .controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.content{padding:12px 28px 48px}input[type=date],input[type=number],input[type=password],input[type=text],select{font:inherit;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);outline:none;transition:border-color .12s,box-shadow .12s}input:focus,select:focus{border-color:var(--primary-light);box-shadow:0 0 0 3px rgba(26,115,232,.15)}label.field{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:500}.settings-field input{width:100%}.topbar .controls select{background:#fff;box-shadow:var(--shadow);border-color:transparent;font-weight:500;color:var(--text)}.combo-caret{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:11px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.combo-menu{position:absolute;top:100%;left:0;z-index:40;margin-top:4px;width:max-content;min-width:100%;max-width:420px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-md);max-height:260px;overflow-y:auto}.combo-option{white-space:normal;padding:8px 12px;font-size:13.5px;cursor:pointer}.combo-option:hover{background:var(--primary-soft)}.combo-empty{color:var(--muted);cursor:default}.combo-empty:hover{background:none}.btn{font:inherit;padding:9px 18px;border-radius:8px;border:1px solid transparent;letter-spacing:.3px;transition:filter .12s,background .12s,box-shadow .12s,transform .05s}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55}.btn-primary{background:linear-gradient(310deg,var(--primary-dark),var(--primary));box-shadow:0 4px 10px -3px var(--primary-glow)}.btn-primary:hover:not(:disabled){filter:brightness(1.06)}.btn-ghost{background:#fff;border-color:var(--line);color:var(--text);box-shadow:var(--shadow)}.btn-ghost:hover:not(:disabled){background:#f8fafc}.btn-navy{background:var(--navy);color:#fff}.btn-navy:hover:not(:disabled){filter:brightness(1.15)}.card{background:var(--card);border:none;border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:18px 20px}.card h3{font-size:15px;font-weight:700;color:var(--text)}.card .sub{color:var(--muted);font-size:12.5px}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:16px;gap:16px;margin-bottom:22px}.kpi{background:var(--card);border:none;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.kpi .k-label{color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}.kpi .k-value{font-size:25px;font-weight:700;margin-top:6px;color:var(--text);letter-spacing:-.5px}.kpi .k-sub{font-size:12px;color:var(--faint);margin-top:4px}.kpi.accent .k-value{color:var(--primary)}.kpi .k-sub.up{color:var(--green);font-weight:600}.kpi .k-sub.down{color:var(--red);font-weight:600}.ot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));grid-gap:14px;gap:14px}.ot-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fff;transition:box-shadow .12s}.ot-card:hover{box-shadow:var(--shadow)}.ot-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.ot-name{font-weight:600;color:var(--text)}.ot-value{font-size:20px;font-weight:700;color:var(--text);letter-spacing:-.3px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ot-sub{font-size:11.5px;color:var(--muted);margin-top:4px}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data thead th{text-align:left;padding:11px 16px;background:#f7f8fa;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--line);white-space:nowrap;position:-webkit-sticky;position:sticky;top:0;z-index:1}table.data th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color .12s,background .12s}table.data th.sortable:hover{color:var(--primary);background:var(--primary-soft)}table.data th.sorted{color:var(--primary)}table.data tbody td{padding:11px 16px;border-bottom:1px solid var(--line-soft);white-space:nowrap}table.data tbody tr:nth-child(2n){background:#fbfcfd}table.data tbody tr:hover{background:var(--primary-soft)}.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.6}.pill.up{background:var(--green-bg);color:var(--green)}.pill.down{background:var(--red-bg);color:var(--red)}.pill.flat{background:#eef0f2;color:var(--muted)}.rank{display:inline-flex;width:22px;height:22px;border-radius:6px;align-items:center;justify-content:center;font-size:11px;font-weight:700;background:var(--primary-soft);color:var(--primary)}table.data tfoot td{padding:12px 16px;font-weight:700;background:#f8fafc;border-top:2px solid var(--line);white-space:nowrap}.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.neg{color:var(--red)}table.data thead tr.group-row th{padding:8px 16px 4px;border-bottom:none;position:static}table.data thead tr.group-row th.group-label{text-align:center;color:var(--primary);border-top:1px solid var(--primary-light);border-right:1px solid var(--primary-light);border-radius:8px 8px 0 0}table.data td.group-box,table.data th.group-box,table.data thead tr.group-row th.group-label{background:var(--primary-soft);border-left:1px solid var(--primary-light)}table.data td.group-box.group-end,table.data th.group-box.group-end{border-right:1px solid var(--primary-light)}table.data tbody tr:nth-child(2n) td.group-box{background:#e5eefc}table.data tbody tr:last-child td.group-box.group-start{border-bottom-left-radius:8px}table.data tbody tr:last-child td.group-box.group-end{border-bottom-right-radius:8px}table.data td.group-box{font-weight:500}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.badge.ok{background:var(--green-bg);color:var(--green)}.badge.off{background:var(--red-bg);color:var(--red)}.badge.mock{background:var(--amber-bg);color:var(--amber)}.status-select{border:none;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:600;cursor:pointer}.status-select.ok{background:var(--green-bg);color:var(--green)}.status-select.off{background:var(--red-bg);color:var(--red)}.row{display:flex;gap:16px;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-gap:18px;gap:18px}.section-title{margin:4px 0 12px;color:var(--text)}.muted{color:var(--muted)}.filters{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:20px}.toast{position:fixed;bottom:20px;right:20px;background:var(--navy);color:#fff;padding:12px 18px;border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.25);z-index:100;font-size:13px;max-width:360px}.role-gate{margin:40px auto;max-width:460px;text-align:center;padding:40px 28px}.role-gate .lock{width:56px;height:56px;border-radius:14px;background:var(--primary-soft);color:var(--primary);display:inline-flex;align-items:center;justify-content:center;margin-bottom:16px}.role-gate h3{font-size:18px;margin-bottom:6px}.bar{height:8px;background:linear-gradient(310deg,var(--primary-dark),var(--primary))}.bar,.bar-track{border-radius:999px}.bar-track{background:var(--line-soft);overflow:hidden}.spinner{display:inline-block;width:14px;height:14px;border:2px solid hsla(0,0%,100%,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(1turn)}}:root{--color-primary:#06c;--color-primary-dark:#036;--color-primary-light:#e6f2ff;--color-success:#2ecc71;--color-warning:#f39c12;--color-danger:#e74c3c;--color-info:#3498db;--color-text-dark:#2c3e50;--color-text-gray:#95a5a6;--color-text-light:#ecf0f1;--color-bg-white:#fff;--color-bg-light:#f9f9f9;--color-border:#ecf0f1;--font-family-heading:"Segoe UI",Tahoma,sans-serif;--font-family-body:"Segoe UI",Tahoma,sans-serif;--font-family-mono:"Courier New",monospace;--font-weight-regular:400;--font-weight-bold:600;--font-weight-mono-bold:700;--font-size-h1:32px;--font-size-h2:24px;--font-size-h3:18px;--font-size-h4:16px;--font-size-body:14px;--font-size-small:12px;--font-size-summary:24px;--line-height-heading:1.2;--line-height-body:1.5;--line-height-input:1.4;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--border-radius:4px;--border-radius-lg:8px;--border-width:1px;--border-style:1px solid var(--color-border);--shadow-sm:0 2px 4px rgba(0,0,0,.1);--shadow-md:0 4px 8px rgba(0,0,0,.15);--shadow-lg:0 10px 40px rgba(0,0,0,.3);--sidebar-width:260px;--sidebar-width-collapsed:70px;--header-height:60px;--max-content-width:1400px;--transition-fast:150ms ease-in-out;--transition-normal:250ms ease-in-out;--transition-slow:350ms ease-in-out}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-family-body);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);line-height:var(--line-height-body);background-color:var(--color-bg-white);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-heading);font-weight:var(--font-weight-bold);line-height:var(--line-height-heading);color:var(--color-primary-dark);margin-bottom:var(--spacing-md)}h1{font-size:var(--font-size-h1)}h2{font-size:var(--font-size-h2)}h3{font-size:var(--font-size-h3)}h4{font-size:var(--font-size-h4)}p{margin-bottom:var(--spacing-md)}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-dark);text-decoration:underline}button{font-family:inherit;cursor:pointer;border:none;transition:all var(--transition-fast)}button:disabled{cursor:not-allowed;opacity:.6}input,select,textarea{font-family:inherit;font-size:inherit}input[type=date],input[type=email],input[type=number],input[type=password],input[type=text],select,textarea{width:100%;padding:10px 12px;border:var(--border-style);border-radius:var(--border-radius);font-size:var(--font-size-body);line-height:var(--line-height-input);transition:all var(--transition-fast)}input[type=date]:focus,input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=text]:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(0,102,204,.1)}input[type=date]:disabled,input[type=email]:disabled,input[type=number]:disabled,input[type=password]:disabled,input[type=text]:disabled,select:disabled,textarea:disabled{background-color:var(--color-bg-light);opacity:.6;cursor:not-allowed}textarea{resize:vertical;min-height:100px}label{display:block;margin-bottom:var(--spacing-xs);font-weight:var(--font-weight-bold);color:var(--color-text-dark)}.required:after{content:" *";color:var(--color-danger)}.form-error{border-color:var(--color-danger)!important;background-color:rgba(231,76,60,.05)}.error-message{color:var(--color-danger)}.error-message,.helper-text{margin-top:var(--spacing-xs);font-size:var(--font-size-small)}.helper-text{color:var(--color-text-gray)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:12px 24px;border:none;border-radius:var(--border-radius);font-size:var(--font-size-body);font-weight:var(--font-weight-bold);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.btn-primary{background-color:var(--color-primary);color:var(--color-bg-white)}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-dark)}.btn-primary:active:not(:disabled){transform:translateY(1px)}.btn-secondary{background-color:var(--color-primary-light);color:var(--color-primary)}.btn-secondary:hover:not(:disabled){background-color:rgba(0,102,204,.15)}.btn-danger{background-color:var(--color-danger);color:var(--color-bg-white)}.btn-danger:hover:not(:disabled){background-color:#c0392b}.btn-ghost{background-color:transparent;color:var(--color-primary);border:1px solid var(--color-primary)}.btn-ghost:hover:not(:disabled){background-color:var(--color-primary-light)}.btn-icon{padding:8px;border-radius:var(--border-radius);background-color:transparent;color:var(--color-text-dark);width:36px;height:36px}.btn-icon:hover{background-color:var(--color-bg-light)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-sm{padding:8px 16px;font-size:var(--font-size-small)}.btn-lg{padding:14px 28px;font-size:16px}.btn-block{width:100%}.card{background-color:var(--color-bg-white);border:var(--border-style);border-radius:var(--border-radius);padding:var(--spacing-md);box-shadow:var(--shadow-sm);transition:all var(--transition-normal)}.card:hover{box-shadow:var(--shadow-md)}.card-header{margin-bottom:var(--spacing-md);border-bottom:var(--border-style);padding-bottom:var(--spacing-md)}.card-header h4{margin-bottom:4px}.card-subtitle{font-size:var(--font-size-small);color:var(--color-text-gray)}.card-body{flex:1 1}.card-footer{margin-top:var(--spacing-md);border-top:var(--border-style);padding-top:var(--spacing-md);display:flex;justify-content:flex-end;gap:var(--spacing-md)}table{width:100%;border-collapse:collapse}thead{background-color:var(--color-primary-dark);color:var(--color-bg-white)}th{text-align:left;font-weight:var(--font-weight-bold);border:var(--border-style);border-color:var(--color-primary-dark)}td,th{padding:var(--spacing-md)}td{border:var(--border-style);font-size:var(--font-size-body)}tbody tr:nth-child(odd){background-color:var(--color-bg-white)}tbody tr:nth-child(2n){background-color:var(--color-bg-light)}tbody tr:hover{background-color:var(--color-primary-light)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background-color:var(--color-bg-white);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);max-width:600px;width:90%;max-height:90vh;overflow-y:auto;animation:modalSlideIn var(--transition-normal)}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-header{padding:var(--spacing-lg);border-bottom:var(--border-style);display:flex;justify-content:space-between;align-items:center}.modal-header h3{margin:0}.modal-close{background:none;border:none;font-size:24px;color:var(--color-text-gray);cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.modal-close:hover{color:var(--color-text-dark)}.modal-body{padding:var(--spacing-lg)}.modal-footer{padding:var(--spacing-lg);border-top:var(--border-style);justify-content:flex-end}.alert,.modal-footer{display:flex;gap:var(--spacing-md)}.alert{padding:12px 16px;border-radius:var(--border-radius);border-left:4px solid;align-items:flex-start;margin-bottom:var(--spacing-md)}.alert-info{background-color:rgba(52,152,219,.1);border-color:#3498db;color:#2c3e50}.alert-success{background-color:rgba(46,204,113,.1);border-color:#2ecc71;color:#27ae60}.alert-warning{background-color:rgba(243,156,18,.1);border-color:#f39c12;color:#d68910}.alert-error{background-color:rgba(231,76,60,.1);border-color:#e74c3c;color:#c0392b}.alert-close{background:none;border:none;font-size:18px;cursor:pointer;color:inherit;margin-left:auto}.toast-container{position:fixed;bottom:24px;right:24px;z-index:2000;flex-direction:column}.toast,.toast-container{display:flex;gap:var(--spacing-md)}.toast{background-color:var(--color-bg-white);padding:var(--spacing-md);border-radius:var(--border-radius);box-shadow:var(--shadow-lg);align-items:center;min-width:300px;animation:toastSlideIn var(--transition-normal)}@keyframes toastSlideIn{0%{opacity:0;transform:translateX(400px)}to{opacity:1;transform:translateX(0)}}.toast-success{border-left:4px solid var(--color-success)}.toast-error{border-left:4px solid var(--color-danger)}.toast-warning{border-left:4px solid var(--color-warning)}.toast-info{border-left:4px solid var(--color-info)}.container{max-width:var(--max-content-width);margin:0 auto;padding:0 var(--spacing-md)}.flex{display:flex}.flex-col{flex-direction:column}.flex-center{align-items:center;justify-content:center}.flex-between{justify-content:space-between}.flex-wrap{flex-wrap:wrap}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.grid{display:grid}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}.m-auto{margin:auto}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.p-md{padding:var(--spacing-md)}.p-lg{padding:var(--spacing-lg)}.text-center{text-align:center}.text-right{text-align:right}.text-sm{font-size:var(--font-size-small)}.text-lg{font-size:16px}.text-bold{font-weight:var(--font-weight-bold)}.text-success{color:var(--color-success)}.text-danger{color:var(--color-danger)}.text-warning{color:var(--color-warning)}.text-gray{color:var(--color-text-gray)}.bg-light{background-color:var(--color-bg-light)}.bg-primary-light{background-color:var(--color-primary-light)}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.rounded{border-radius:var(--border-radius)}.rounded-lg{border-radius:var(--border-radius-lg)}.shadow{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}@media (max-width:768px){:root{--font-size-h1:28px;--font-size-h2:22px;--font-size-h3:16px;--spacing-lg:16px;--spacing-md:12px}.grid-cols-2,.grid-cols-3,.grid-cols-4{grid-template-columns:1fr}.modal{width:95%;max-height:95vh}.toast-container{bottom:12px;right:12px}.toast{min-width:280px}}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.no-select{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@import url("https://fonts.googleapis.com/css2?family=Sora:wght@600;700;800&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap");:root{--font-heading:"Sora","Segoe UI",system-ui,sans-serif;--font-body:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;--mono:"Courier New",ui-monospace,monospace;--font-family-heading:var(--font-heading);--font-family-body:var(--font-body);--ground:#ecf0f1;--ground-dark:#036;--ground-brand:#036;--glass:#fff;--glass-strong:#fff;--glass-soft:#fff;--glass-edge:#e2e8f0;--glass-edge-strong:#cbd5e1;--glass-blur:0px;--panel-dark:#036;--panel-dark-solid:#036;--glass-dark:hsla(0,0%,100%,.08);--glass-dark-edge:hsla(0,0%,100%,.12);--grad-accent:#06c;--grad-success:#2ecc71;--ink-muted:#95a5a6;--ink-soft:#64748b;--hair:#e2e8f0;--shadow-glass:none;--shadow-glass-lg:0 4px 14px rgba(0,51,102,.08);--shadow-panel:none;--shadow-accent:none;--radius-glass:10px;--radius-tile:10px;--radius-control:8px;--sidebar-width:208px;--sidebar-width-collapsed:72px}body{font-family:var(--font-body);background:var(--ground);background-color:var(--ground);color:var(--color-text-dark)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:0}.mono,.num{font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.card,.glass{background:#fff;border:1px solid var(--glass-edge);border-radius:var(--radius-glass);box-shadow:var(--shadow-glass)}.card{padding:16px 18px}.card:hover{box-shadow:var(--shadow-glass-lg)}.card-header{border-bottom:1px solid #f1f5f9}.card-header h4{font-family:var(--font-heading);font-size:13.5px;font-weight:700;color:var(--color-primary-dark)}.card-subtitle{color:var(--ink-muted);font-size:11.5px}.glass-pill{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 13px;border-radius:var(--radius-control);background:#fff;border:1.5px solid #cbd5e1;color:var(--ink-soft);font-size:12.5px}.btn{font-family:var(--font-body);font-weight:600;letter-spacing:0;border-radius:var(--radius-control)}.btn-primary{background:var(--color-primary);border-color:transparent;box-shadow:none;color:#fff}.btn-primary:hover:not(:disabled){background:#0059b3;box-shadow:none}.btn-secondary{background:#fff;border:1px solid #e2e8f0;color:#334155}.btn-secondary:hover:not(:disabled){background:#f8fafc}.form-input,.form-select,.form-textarea{background:#fff;border:1.5px solid #cbd5e1;border-radius:var(--radius-control);font-family:var(--font-body)}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-primary);background:#fff;box-shadow:0 0 0 3px rgba(0,102,204,.12)}.glass-table-wrap{border-radius:var(--radius-glass);overflow:hidden;background:#fff;border:1px solid var(--glass-edge);box-shadow:var(--shadow-glass)}.glass-table-wrap table{width:100%;border-collapse:collapse;font-size:13.5px}.glass-table-wrap thead tr{background:#f8fafc}.glass-table-wrap th{text-align:left;padding:11px 18px;font:700 11px/1.2 var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);border-bottom:1px solid var(--hair)}.glass-table-wrap td{padding:11px 18px;border-bottom:1px solid #f8fafc}.glass-table-wrap tbody tr:hover{background:#f8fafc}.glass-table-wrap tfoot td{background:#f8fafc;font-weight:700;color:var(--color-primary-dark);border-top:1px solid var(--hair);border-bottom:none}.page-head{display:flex;align-items:center;gap:16px;min-height:54px;margin:-16px -24px 18px -8px;padding:0 24px 0 20px;background:#fff;border-bottom:1px solid var(--glass-edge);flex-wrap:wrap}.page-crumb{font-size:11.5px;color:var(--ink-muted)}.page-title{font-family:var(--font-heading);font-size:17px;font-weight:700;color:var(--color-primary-dark);line-height:1.2;margin:0}.page-sub{font-size:12px;color:var(--ink-muted)}.page-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-left:auto}.kpi{position:relative;overflow:visible;padding:16px 18px;border-radius:var(--radius-tile);background:#fff;border:1px solid var(--glass-edge);box-shadow:var(--shadow-glass);margin-top:0}.kpi-badge{position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:rgba(0,102,204,.1);box-shadow:none;color:var(--color-primary)}.kpi-label{text-align:left;font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.kpi-value{text-align:left;font-family:var(--font-heading);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:24px;font-weight:800;color:var(--color-primary-dark);line-height:1.2;margin-top:4px}.kpi-foot{font-size:11.5px;color:var(--ink-muted);margin-top:3px}.kpi-rule{height:1px;background:#f1f5f9;margin:11px 0 8px}.total-block{padding:14px 16px;border-radius:var(--radius-glass);background:var(--color-primary-dark);box-shadow:none;display:flex;align-items:baseline;color:#fff}.total-block-label{flex:1 1;font-family:var(--font-heading);font-size:15px;font-weight:700;letter-spacing:0}.total-block-value{font-family:var(--mono);font-size:22px;font-weight:700}.chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:700;white-space:nowrap}.chip-accent{background:rgba(0,102,204,.1);color:#06c}.chip-success{background:rgba(46,204,113,.14);color:#1e8449}.chip-warning{background:rgba(243,156,18,.14);color:#b9770e}.chip-danger{background:rgba(231,76,60,.12);color:#c0392b}.app-menu-btn{display:none;width:40px;height:40px;margin-bottom:12px;border-radius:var(--radius-control);background:#fff;border:1px solid var(--glass-edge-strong);color:var(--color-primary-dark);cursor:pointer;place-items:center}.app-scrim{display:none}.glass-sidebar{width:208px;flex-shrink:0;margin:0;display:flex;flex-direction:column;padding:0;border-radius:0;background:var(--color-primary-dark);border:0;border-right:1px solid hsla(0,0%,100%,.12);box-shadow:none;overflow:hidden;transition:width .42s cubic-bezier(.4,0,.2,1)}.glass-sidebar[data-collapsed=true]{width:72px;padding-left:0;padding-right:0}.gs-label{white-space:nowrap;transition:opacity .2s ease .14s}.glass-sidebar[data-collapsed=true] .gs-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0;opacity:0;transition:opacity .12s ease}.gs-brand{display:flex;align-items:center;gap:10px;width:100%;padding:16px 16px 13px;background:none;border:0;border-bottom:1px solid hsla(0,0%,100%,.12);color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:0;transition:padding .42s cubic-bezier(.4,0,.2,1),background .16s ease}.gs-brand:hover{background:hsla(0,0%,100%,.06)}.gs-brand:focus-visible{outline:2px solid rgba(143,200,255,.9);outline-offset:2px}.glass-sidebar[data-collapsed=true] .gs-brand{justify-content:center;padding:16px 0 13px}.gs-logo{width:34px;height:34px;flex:none;object-fit:contain;border-radius:8px;background:#fff;padding:4px}.gs-brand-text{display:flex;flex-direction:column;min-width:0}.gs-brand-name{font-family:var(--font-heading);font-size:14px;font-weight:700;color:#fff;letter-spacing:0;line-height:1.1}.gs-brand-sub{font-size:10px;color:hsla(0,0%,100%,.55);letter-spacing:.08em;margin-top:2px}.gs-nav{flex:1 1;display:flex;flex-direction:column;padding:10px;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.22) transparent}.gs-nav::-webkit-scrollbar{width:6px}.gs-nav::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.22);border-radius:3px}.gs-caption{font-size:10px;font-weight:600;letter-spacing:.1em;color:hsla(0,0%,100%,.4);padding:12px 10px 5px}.glass-sidebar[data-collapsed=true] .gs-caption{display:flex;justify-content:center;padding:11px 0 7px}.glass-sidebar[data-collapsed=true] .gs-caption:after{content:"";width:22px;height:1px;background:hsla(0,0%,100%,.18)}.glass-sidebar[data-collapsed=true] .gs-group:first-child .gs-caption{padding-top:4px}.gs-row{display:flex;align-items:center;gap:11px;padding:10px 12px;margin-bottom:2px;border-radius:8px;color:hsla(0,0%,100%,.72);font-family:var(--font-body);font-size:13.5px;font-weight:600;transition:background .12s,color .12s}.gs-row:hover{background:hsla(0,0%,100%,.08);color:#fff}.gs-row[aria-current=page],.gs-row[data-active=true]{background:var(--color-primary);color:#fff}.gs-icon{flex:none}.glass-sidebar[data-collapsed=true] .gs-row{width:44px;height:40px;padding:0;margin:0 auto 4px;justify-content:center}.gs-user-wrap{position:relative}.gs-user{display:flex;align-items:center;gap:10px;padding:13px 14px;transition:padding .42s cubic-bezier(.4,0,.2,1);width:100%;background:none;border:0;border-top:1px solid hsla(0,0%,100%,.12);text-align:left;cursor:pointer;font-family:inherit}.gs-user:hover{background:hsla(0,0%,100%,.06)}.gs-user-menu{position:absolute;bottom:calc(100% + 6px);left:10px;right:10px;padding:6px;border-radius:12px;background:rgba(20,32,60,.96);border:1px solid hsla(0,0%,100%,.14);box-shadow:0 12px 30px rgba(0,0,0,.35);z-index:5}.gs-logout-btn{display:flex;align-items:center;gap:9px;width:100%;padding:9px 11px;border:0;border-radius:8px;background:none;color:#fff;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.gs-logout-btn:hover{background:rgba(229,57,53,.28)}.glass-sidebar[data-collapsed=true] .gs-user{justify-content:center;padding:13px 0}.glass-sidebar[data-collapsed=true] .gs-user-menu{left:6px;right:6px}.gs-avatar{width:32px;height:32px;flex:none;border-radius:50%;background:var(--color-primary);display:grid;place-items:center;font-family:var(--font-body);font-weight:700;font-size:13px;color:#fff}.gs-user-text{flex:1 1;min-width:0}.gs-user-name{font-size:12.5px;font-weight:600;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gs-user-meta{font-size:10.5px;color:hsla(0,0%,100%,.5)}@media (max-width:1100px){.app-menu-btn{display:grid}.glass-sidebar,.glass-sidebar[data-collapsed=true]{width:208px;position:fixed;z-index:60;top:0;left:0;height:100vh;transform:translateX(-100%);transition:transform .26s ease}.glass-sidebar[data-collapsed=true] .gs-label{position:static;width:auto;height:auto;margin:0;-webkit-clip-path:none;clip-path:none;opacity:1}.glass-sidebar[data-collapsed=true] .gs-row{width:auto;height:auto;padding:10px 12px;margin:0 0 2px;justify-content:flex-start}.glass-sidebar[data-collapsed=true] .gs-brand,.glass-sidebar[data-collapsed=true] .gs-user{justify-content:flex-start}.glass-sidebar[data-collapsed=true] .gs-caption{display:block;padding:12px 10px 5px}.glass-sidebar[data-collapsed=true] .gs-caption:after{content:none}.glass-sidebar[data-collapsed=true][data-open=true],.glass-sidebar[data-open=true]{transform:translateX(0)}.app-scrim{display:block;position:fixed;inset:0;z-index:55;background:rgba(4,26,48,.44)}.app-shell>main{padding:16px!important}}@media (min-width:1101px){.glass-sidebar{position:-webkit-sticky;position:sticky;top:0;height:100vh}}@media (prefers-reduced-motion:reduce){.glass-sidebar,.gs-brand,.gs-label,.gs-user{transition:none}}.tabbar{display:flex;gap:2px;overflow-x:auto;margin-bottom:16px;padding:0 4px;border-bottom:1px solid var(--hair);scrollbar-width:thin}.tabbar::-webkit-scrollbar{height:5px}.tabbar::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:3px}.tabbar-tab{display:inline-flex;align-items:center;gap:7px;flex:none;padding:11px 15px;border:0;border-bottom:3px solid transparent;background:none;font-family:var(--font-body);font-size:13.5px;font-weight:600;letter-spacing:0;color:var(--ink-muted);white-space:nowrap;cursor:pointer;transition:color .16s ease,border-color .16s ease,background .16s ease;border-radius:8px 8px 0 0}.tabbar-tab:hover{color:var(--color-primary-dark);background:#f8fafc}.tabbar-tab[data-active=true]{color:var(--color-primary-dark);border-bottom-color:var(--color-primary)}.tabbar-tab:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.tabbar-count{font-family:var(--font-body);font-size:11px;font-weight:600;padding:1px 7px;border-radius:7px;background:#f1f5f9;color:var(--ink-soft)}.tabbar-tab[data-active=true] .tabbar-count{background:rgba(0,102,204,.12);color:#06c}[role=tabpanel]:focus{outline:none}[role=tabpanel]:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px;border-radius:10px}.section-head{margin-bottom:14px;flex-wrap:wrap}.section-title{font-family:var(--font-heading);font-size:15px;font-weight:700;color:var(--color-primary-dark);margin:0;line-height:1.2}.section-sub{font-size:11.5px;color:var(--ink-muted)}.section-action{margin-left:auto}.table-wrapper{border-radius:var(--radius-glass);overflow:auto;background:#fff;border:1px solid var(--glass-edge);box-shadow:var(--shadow-glass)}.table-wrapper table{width:100%;border-collapse:collapse;font-size:13.5px}.table-wrapper thead{background:transparent;color:inherit}.table-wrapper thead tr{background:#f8fafc}.table-wrapper th{padding:11px 18px;font:700 11px/1.2 var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);border:0;border-bottom:1px solid var(--hair);white-space:nowrap}.table-wrapper td{padding:11px 18px;border:0;border-bottom:1px solid #f8fafc;color:var(--color-text-dark)}.table-wrapper tbody tr:last-child td{border-bottom:0}.table-wrapper tbody tr:hover{background:#f8fafc}.table-empty{padding:30px 18px;text-align:center;border-radius:var(--radius-glass);background:#fff;border:1px solid var(--glass-edge);color:var(--ink-muted);font-size:12.5px}.table-empty p{margin:0}.print-slip-overlay{position:fixed;inset:0;z-index:200;background:rgba(4,26,48,.5);display:flex;flex-direction:column;align-items:center;overflow-y:auto;padding:24px 16px}.print-slip-screen-bar{width:100%;max-width:420px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;padding:10px 14px;border-radius:10px;background:hsla(0,0%,100%,.95);font-size:12.5px;color:var(--ink-soft)}.print-slip{width:320px;background:#fff;border:1.5px solid #000;box-shadow:0 20px 50px rgba(0,0,0,.35);font-size:12px;color:#000;font-family:var(--font-body)}.print-slip-sect{padding:8px 12px;border-top:1px solid #000}.print-slip-head{padding:12px 12px 10px;text-align:center}.print-slip-logo{display:flex;justify-content:center}.print-slip-logo img{max-width:180px;max-height:110px;width:auto;height:auto;object-fit:contain}.print-slip-name{font-family:var(--font-heading);font-size:17px;font-weight:800;color:#000;letter-spacing:.02em;margin-top:6px;line-height:1.25}.print-slip-meta{display:flex;flex-direction:column;gap:3px;font-size:11.5px}.print-slip-meta b{font-weight:700}.print-slip-pair{display:flex;justify-content:space-between;gap:8px}.print-slip-cols{display:grid;grid-template-columns:1fr 58px 64px;font-size:11.5px;padding:3px 0;grid-gap:6px;gap:6px;align-items:baseline}.print-slip-cols-head{font-weight:700;border-bottom:1px solid #000;padding-bottom:5px;margin-bottom:3px}.print-slip-num{text-align:right;font-family:var(--mono)}.print-slip-deal-tag{font-size:10.5px}.print-slip-total-box{display:flex;justify-content:space-between;font-weight:700;font-size:13px}.print-slip-charges{display:flex;flex-direction:column;gap:3px;font-size:11.5px}.print-slip-charge-row{display:flex;align-items:baseline;gap:8px}.print-slip-charge-row span:first-child{flex:1 1}.print-slip-charge-pct{font-family:var(--mono)}.print-slip-grand{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--font-heading);font-weight:800;font-size:15px}.print-slip-grand .print-slip-num{font-size:18px}.print-slip-paid-tag{text-align:center;font-family:var(--font-heading);font-size:15px;font-weight:800;letter-spacing:.18em}.print-slip-customer{display:flex;flex-direction:column;gap:2px;font-size:11px}.print-slip-kitchen-items{display:flex;flex-direction:column;gap:8px;padding-top:10px;padding-bottom:10px}.print-slip-kitchen-line{display:flex;gap:10px;font-size:15px}.print-slip-kitchen-qty{font-family:var(--mono);font-weight:700;min-width:28px}.print-slip-footer{text-align:center;font-size:10px}@media print{@page{size:80mm auto;margin:4mm}body *{visibility:hidden}.print-slip-overlay,.print-slip-overlay *{visibility:visible}.print-slip-overlay{position:absolute;inset:auto;top:0;left:0;padding:0;background:none;display:block}.print-slip-screen-bar{display:none}.print-slip{width:100%;box-shadow:none}}.chip{padding:3px 9px;border-radius:999px;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase}.glass-table-wrap td[style*=right],.kpi-value,.num,.table-wrapper td[style*=right],.table-wrapper th[style*=right],.total-value{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.glass-table-wrap tfoot td,.table-wrapper tfoot td{background:#fff;border-top:2px solid var(--panel-dark);border-bottom:0;font-family:var(--font-heading);font-weight:700;font-size:13px;color:var(--ink);padding:12px 18px}.filter-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-bottom:12px}.filter-field{background:#fff;border:1px solid var(--glass-edge);border-radius:var(--radius-control);padding:6px 11px;min-width:128px}.filter-field>label,.filter-label{display:block;font-size:9.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-muted);margin-bottom:1px}.seg{display:inline-flex;border:1px solid var(--glass-edge-strong);border-radius:var(--radius-control);overflow:hidden;background:#fff}.seg>button{font:600 11.5px/1 var(--font-body);padding:9px 13px;border:0;border-right:1px solid var(--hair);background:transparent;color:var(--ink-soft);cursor:pointer}.seg>button:last-child{border-right:0}.seg>button:hover{background:var(--ground);color:var(--panel-dark)}.seg>button[aria-pressed=true]{background:var(--panel-dark);color:#fff}.seg>button:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));grid-gap:11px;gap:11px;margin-bottom:14px}.kpi-delta{font-size:11.5px;font-weight:600}.kpi-delta[data-dir=up]{color:#1b7a45}.kpi-delta[data-dir=down]{color:#c0392b}.kpi-delta[data-dir=flat]{color:var(--ink-soft)}.btn-secondary{border-color:var(--glass-edge-strong)}.btn-secondary:hover:not(:disabled){border-color:var(--panel-dark);color:var(--panel-dark)}.btn-danger{background:#fff;border:1px solid #e9c4bf;color:#c0392b}.btn-danger:hover:not(:disabled){background:#fdecea;border-color:#c0392b}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.glass-sidebar{margin:14px 0 14px 14px;border-radius:16px;border-right:0;box-shadow:0 6px 20px rgba(0,51,102,.14)}.page-head{margin:0 0 14px;padding:10px 16px;min-height:0;border:1px solid var(--glass-edge);border-radius:var(--radius-glass)}@media (max-width:1100px){.glass-sidebar{margin:0;border-radius:0;box-shadow:none}}