*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d0d12;--surface:#16161f;--surface2:#1e1e2a;--surface3:#262635;--border:#2b2b3a;--border-strong:#3a3a4d;--accent:#7c5cfc;--accent-hover:#9375ff;--accent-soft:#7c5cfc29;--text:#ececf3;--text-muted:#9797b3;--text-faint:#6b6b85;--success:#3ecf8e;--warning:#f0a94a;--danger:#ec5b5b;--info:#4aa8f0;--disabled:#c06fb8;--success-soft:#3ecf8e26;--warning-soft:#f0a94a26;--danger-soft:#ec5b5b26;--info-soft:#4aa8f026;--muted-soft:#9797b326;--disabled-soft:#c06fb829;--radius-sm:6px;--radius:10px;--radius-lg:14px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--fs-label:12px;--fs-sm:13px;--fs-control:14px;--fs-base:15px;--fs-lg:18px;--fs-xl:22px;--fs-2xl:28px;--shadow-sm:0 1px 2px #00000059;--shadow-md:0 6px 20px #00000059;--shadow-lg:0 20px 60px #00000080;--ring:0 0 0 3px #7c5cfc66;--sidebar-w:232px}[data-theme=light]{--bg:#f4f5f9;--surface:#fff;--surface2:#f0f1f6;--surface3:#e7e8f0;--border:#dcdee8;--border-strong:#c6c8d8;--accent-soft:#7c5cfc1f;--text:#1d1d28;--text-muted:#5b5b72;--text-faint:#8a8aa0;--success-soft:#3ecf8e29;--warning-soft:#f0a94a2e;--danger-soft:#ec5b5b24;--info-soft:#4aa8f024;--muted-soft:#5b5b721f;--disabled-soft:#c06fb824}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:var(--fs-base);-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.6}a{color:var(--accent);text-decoration:none;transition:color .15s}a:hover{color:var(--accent-hover)}:focus-visible{box-shadow:var(--ring);border-radius:var(--radius-sm);outline:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-5)}.btn{border-radius:var(--radius-sm);font-size:var(--fs-control);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:.4rem;padding:.55rem 1.2rem;font-weight:500;line-height:1.2;transition:background .15s,opacity .15s,border-color .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{box-shadow:var(--ring)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-ghost{background:var(--surface2);color:var(--text);border-color:var(--border)}.btn-ghost:hover:not(:disabled){background:var(--surface3);border-color:var(--border-strong)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#f06d6d}.btn-sm{font-size:var(--fs-sm);padding:.35rem .8rem}.btn-block{width:100%}input,select,textarea{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:var(--fs-control);outline:none;width:100%;padding:.55rem .85rem;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:var(--ring)}input::placeholder{color:var(--text-faint)}input[type=checkbox],input[type=radio]{cursor:pointer;width:auto;min-width:0;accent-color:var(--accent);box-shadow:none;flex:none;margin:0;padding:0}input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{box-shadow:var(--ring)}:is(label:has(>input[type=checkbox]),label:has(>input[type=radio])){white-space:nowrap}label{font-size:var(--fs-sm);color:var(--text-muted);margin-bottom:.3rem;display:block}.form-group{flex-direction:column;gap:.3rem;margin-bottom:1rem;display:flex}.badge{font-size:var(--fs-label);border-radius:999px;padding:.15rem .55rem;font-weight:600;line-height:1.5;display:inline-block}.badge-active{background:var(--success-soft);color:var(--success)}.badge-expiring{background:var(--warning-soft);color:var(--warning)}.badge-expired{background:var(--danger-soft);color:var(--danger)}.badge-handled{background:var(--accent-soft);color:var(--accent-hover)}.badge-cancelled{background:var(--muted-soft);color:var(--text-muted)}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-accent{background:var(--accent-soft);color:var(--accent-hover)}.badge-neutral{background:var(--muted-soft);color:var(--text-muted)}.badge-disabled{background:var(--disabled-soft);color:var(--disabled);border:1px solid #c06fb866}.error-msg{color:var(--danger);font-size:var(--fs-sm);margin-top:.4rem}.success-msg{color:var(--success);font-size:var(--fs-sm);margin-top:.4rem}table{border-collapse:collapse;width:100%;font-size:var(--fs-control)}th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border);font-weight:500;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:.04em;padding:.65rem .75rem}td{border-bottom:1px solid var(--border);padding:.65rem .75rem}tr:last-child td{border-bottom:none}tr:hover td{background:var(--surface2)}.table-wrap{border-radius:var(--radius);width:100%;overflow-x:auto}.page-wrap{max-width:1180px;margin:0 auto;padding:2rem 1.5rem}.page-title{font-size:var(--fs-xl);margin-bottom:1.5rem;font-weight:700}.grid-2{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}@media (max-width:720px){.grid-2,.grid-3{grid-template-columns:1fr}}.stat-card{text-align:center}.stat-num{font-size:var(--fs-2xl);font-weight:700;line-height:1.1}.stat-label{font-size:var(--fs-label);color:var(--text-muted);margin-top:.2rem}nav{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:1.5rem;height:56px;padding:0 1.25rem;display:flex}.nav-brand{color:var(--text);font-size:1rem;font-weight:700}.nav-link{font-size:var(--fs-control);color:var(--text-muted)}.nav-link:hover,.nav-link.active{color:var(--text)}.nav-spacer{flex:1}.admin-shell{min-height:100vh;display:flex}.admin-sidebar{width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;height:100vh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-brand{font-weight:700;font-size:var(--fs-base);color:var(--text);border-bottom:1px solid var(--border);align-items:center;gap:.5rem;padding:1.1rem 1.25rem;display:flex}.sidebar-nav{flex-direction:column;flex:1;gap:.25rem;padding:.75rem .6rem;display:flex}.sidebar-section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);padding:.9rem .75rem .35rem;font-size:10.5px;font-weight:600}.sidebar-section-label:first-child{padding-top:.35rem}.sidebar-link{border-radius:var(--radius-sm);font-size:var(--fs-control);color:var(--text-muted);align-items:center;gap:.6rem;padding:.5rem .75rem;line-height:1.3;transition:background .12s,color .12s;display:flex}.sidebar-link:hover{background:var(--surface2);color:var(--text)}.sidebar-link.active{background:var(--accent-soft);color:var(--text);font-weight:600}.sidebar-link .ico{text-align:center;flex-shrink:0;width:1.15rem;font-size:.95rem}.sidebar-foot{border-top:1px solid var(--border);padding:.75rem}.admin-main{flex:1;min-width:0}.admin-topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:40;align-items:center;gap:.75rem;height:52px;padding:0 1rem;display:none;position:sticky;top:0}.hamburger{border-radius:var(--radius-sm);background:var(--surface2);border:1px solid var(--border);width:36px;height:36px;color:var(--text);cursor:pointer;justify-content:center;align-items:center;font-size:1.1rem;display:inline-flex}.sidebar-backdrop{z-index:45;background:#0000008c;display:none;position:fixed;inset:0}@media (max-width:860px){.admin-topbar{display:flex}.admin-sidebar{z-index:50;height:100vh;box-shadow:var(--shadow-lg);transition:transform .2s;position:fixed;top:0;left:0;transform:translate(-100%)}.admin-shell.nav-open .admin-sidebar{transform:translate(0)}.admin-shell.nav-open .sidebar-backdrop{display:block}}.slot-bar{gap:3px;margin-top:.4rem;display:flex}.slot{background:var(--surface2);border:1px solid var(--border);border-radius:2px;width:16px;height:8px}.slot.used{background:var(--accent);border-color:var(--accent)}.slot.warning{background:var(--warning);border-color:var(--warning)}.slot.full{background:var(--danger);border-color:var(--danger)}.modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;background:#0009;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:420px;max-height:calc(100vh - 2rem);box-shadow:var(--shadow-lg);padding:1.5rem;overflow-y:auto}.modal-title{margin-bottom:.6rem;font-size:1.05rem;font-weight:700}.modal-message{font-size:var(--fs-base);color:var(--text);white-space:pre-wrap;word-break:break-word;line-height:1.6}.modal-actions{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.modal-card.modal-form{max-width:460px}.modal-form label{font-size:var(--fs-control);margin-bottom:.35rem}.modal-form input,.modal-form select,.modal-form textarea{font-size:var(--fs-base);padding:.6rem .8rem}.modal-form .form-group{margin-bottom:1rem}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.page-header-titles{min-width:0}.page-header-title{font-size:var(--fs-xl);font-weight:700;line-height:1.2}.page-header-sub{font-size:var(--fs-sm);color:var(--text-muted);margin-top:.25rem}.page-header-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.card-head{font-size:var(--fs-label);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:1rem;font-weight:600;display:flex}.empty-state{text-align:center;color:var(--text-muted);padding:2.5rem 1rem}.empty-state .ico{opacity:.6;margin-bottom:.5rem;font-size:1.8rem}.empty-state .empty-title{font-size:var(--fs-base);color:var(--text);margin-bottom:.35rem;font-weight:600}.empty-state .empty-desc{font-size:var(--fs-sm)}.spinner{border:2px solid var(--border-strong);border-top-color:var(--accent);vertical-align:-.15em;border-radius:50%;width:1.1em;height:1.1em;animation:.7s linear infinite sas-spin;display:inline-block}.loading-row{color:var(--text-muted);font-size:var(--fs-sm);justify-content:center;align-items:center;gap:.6rem;padding:1.5rem 0;display:flex}@keyframes sas-spin{to{transform:rotate(360deg)}}.toast-stack{z-index:1100;flex-direction:column;gap:.5rem;max-width:min(360px,100vw - 2rem);display:flex;position:fixed;bottom:1rem;right:1rem}.toast{background:var(--surface2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--text);box-shadow:var(--shadow-md);border-left-width:3px;padding:.7rem .9rem;animation:.18s sas-toast-in}.toast-success{border-left-color:var(--success)}.toast-error{border-left-color:var(--danger)}.toast-info{border-left-color:var(--info)}.toast-warning{border-left-color:var(--warning)}@keyframes sas-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@keyframes sas-marquee{0%{transform:translate(0)}15%{transform:translate(0)}85%{transform:translateX(var(--sas-marquee-dist,0))}to{transform:translateX(var(--sas-marquee-dist,0))}}.seg-toggle{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);gap:3px;padding:3px;display:inline-flex}.seg-toggle button{width:auto;font-size:var(--fs-sm);color:var(--text-muted);border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;background:0 0;border:none;align-items:center;gap:.35rem;padding:.32rem .72rem;font-weight:500;transition:background .12s,color .12s;display:inline-flex}.seg-toggle button:hover:not(.is-active){color:var(--text);background:var(--surface3)}.seg-toggle button.is-active{background:var(--accent);color:#fff}.code-reveal{align-items:center;gap:.4rem;display:inline-flex}.code-reveal code{font-size:var(--fs-sm);letter-spacing:.03em;color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.code-reveal.big code{font-size:var(--fs-base);letter-spacing:.06em;font-weight:600}.code-btn{width:auto;padding:.12rem .4rem;font-size:10px;line-height:1.4}.unfilled{color:var(--danger);font-size:var(--fs-sm)}.dash{color:var(--text-faint)}.codes-table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-sm)}.codes-table thead th{z-index:3;background:var(--surface2);color:var(--text-muted);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:.05em;text-align:left;border-bottom:1px solid var(--border-strong);white-space:nowrap;padding:.75rem 1.1rem;font-weight:600;position:sticky;top:0}.codes-table tbody td{border-bottom:1px solid var(--border);vertical-align:middle;padding:.95rem 1.1rem}.codes-table tbody tr:last-child td{border-bottom:none}.codes-table tbody tr{transition:background .12s}.codes-table tbody tr:hover td{background:var(--surface2)}.codes-table th.col-num,.codes-table td.col-num{text-align:right}.codes-table th.col-mid,.codes-table td.col-mid{text-align:center}.cust-name{font-size:var(--fs-control);color:var(--text);font-weight:600}.cust-email{font-size:var(--fs-label);color:var(--text-muted);margin-top:3px}.cust-meta{font-size:var(--fs-label);color:var(--text-faint);margin-top:3px}.svc-cell{white-space:nowrap;align-items:center;gap:.4rem;display:inline-flex}.slot-chip{font-size:var(--fs-label);color:var(--accent-hover);background:var(--accent-soft);border-radius:999px;padding:.05rem .45rem;font-weight:600}.exp-date{font-size:var(--fs-sm);color:var(--text);white-space:nowrap}.exp-rel{font-size:var(--fs-label);white-space:nowrap;margin-top:3px}.src-plat{font-size:var(--fs-sm);color:var(--text-muted)}.src-order{font-size:var(--fs-label);color:var(--text-faint);margin-top:3px}.row-actions{white-space:nowrap;justify-content:flex-end;gap:.4rem;display:inline-flex}.codes-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1rem;display:grid}.code-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;transition:border-color .15s,box-shadow .15s;display:flex;overflow:hidden}.code-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.cc-focal{border-bottom:1px solid var(--border);flex-direction:column;gap:.55rem;padding:1rem 1.1rem .9rem;display:flex}.cc-name{font-size:var(--fs-xl);color:var(--text);font-weight:700;line-height:1.2}.cc-code{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);align-self:flex-start;max-width:100%;padding:.28rem .55rem;display:inline-flex}.cc-expiry{border-bottom:1px solid var(--border);background:var(--surface2);justify-content:space-between;align-items:center;gap:.6rem;padding:.7rem 1.1rem;display:flex}.cc-expiry.lvl-danger{background:var(--danger-soft);box-shadow:inset 3px 0 0 var(--danger)}.cc-expiry.lvl-warning{background:var(--warning-soft);box-shadow:inset 3px 0 0 var(--warning)}.cc-expiry.lvl-calm,.cc-expiry.lvl-muted{background:var(--surface2)}.cc-exp-line{flex-wrap:nowrap;align-items:baseline;gap:.5rem;min-width:0;display:flex;overflow:hidden}.cc-exp-days{font-size:var(--fs-base);white-space:nowrap;font-weight:700}.cc-exp-date{font-size:var(--fs-sm);color:var(--text-muted);white-space:nowrap;font-weight:400}.cc-svc{padding:.85rem 1.1rem .6rem}.cc-chip{border-radius:var(--radius-sm);background:var(--surface2);border:1px solid var(--border);font-size:var(--fs-sm);align-items:center;gap:.4rem;padding:.35rem .65rem;display:inline-flex}.cc-metao{flex-direction:column;gap:.3rem;padding:0 1.1rem 1rem;display:flex}.cc-mrow{align-items:baseline;gap:.6rem;min-width:0;display:flex}.cc-mlabel{width:3.2rem;font-size:var(--fs-label);color:var(--text-faint);flex:none}.cc-mval{min-width:0;font-size:var(--fs-sm);color:var(--text-muted)}.cc-pid{color:var(--text)}.cc-empty{color:var(--text-muted);font-style:italic;font-size:var(--fs-sm)}.cc-foot{border-top:1px solid var(--border);justify-content:flex-end;align-items:center;gap:.75rem;margin-top:auto;padding:.7rem 1.1rem;display:flex}.cc-actions{flex-shrink:0;gap:.4rem;display:inline-flex}@media (max-width:520px){.codes-grid{grid-template-columns:1fr}}
