:root{--font-sans:"Inter", system-ui, -apple-system, sans-serif;--brand-dark:#111827;--brand-dark-hover:#1f2937;--color-bg:#f9fafb;--color-surface:#fff;--color-surface-raised:#fff;--color-border:#e5e7eb;--color-border-strong:#d1d5db;--color-text:#111827;--color-text-secondary:#374151;--color-text-muted:#6b7280;--color-primary:#1f2937;--color-primary-hover:#374151;--color-primary-soft:#f3f4f6;--color-primary-text:#111827;--color-danger:#dc2626;--color-danger-soft:#fef2f2;--color-success:#059669;--color-success-soft:#ecfdf5;--sidebar-bg:#111827;--sidebar-bg-hover:#ffffff14;--sidebar-border:#ffffff1a;--sidebar-text:#9ca3af;--sidebar-text-active:#fff;--sidebar-accent:#fff;--sidebar-active-bg:#ffffff1a;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-full:999px;--shadow-sm:0 1px 2px #0f172a0f;--shadow-md:0 4px 16px #0f172a14;--shadow-lg:0 12px 40px #0f172a1f;--layout-navbar-height:64px;--layout-sidebar-width:260px;--text-xs:.75rem;--text-sm:.875rem;--text-base:.875rem;--text-lg:1.125rem;--text-xl:1.5rem;--control-h:2.625rem;--control-px:.75rem;--control-py:.625rem;--radius-control:8px;font-family:var(--font-sans);font-size:var(--text-base);letter-spacing:-.01em;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;line-height:1.45}*,:before,:after{box-sizing:border-box}body{min-height:100vh;margin:0}a{color:var(--color-primary);text-decoration:none;transition:color .15s}a:hover{color:var(--color-primary-hover)}.guest-shell{min-height:100vh}.vuexy-layout{--vuexy-sidebar-width:var(--layout-sidebar-width);background:var(--color-bg);min-height:100vh}.vuexy-sidebar-overlay{display:none}.vuexy-sidebar{z-index:110;width:var(--vuexy-sidebar-width);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);height:100vh;box-shadow:var(--shadow-md);flex-direction:column;display:flex;position:fixed;top:0;left:0}.vuexy-sidebar-header{min-height:var(--layout-navbar-height);border-bottom:1px solid var(--sidebar-border);justify-content:space-between;align-items:center;gap:.75rem;padding:0 1.1rem;display:flex}.vuexy-brand{color:#fff;align-items:center;gap:.65rem;min-width:0;display:flex}.vuexy-brand:hover{color:#fff}.vuexy-brand-mark{color:#fff;background:#ffffff1a;border-radius:.75rem;flex-shrink:0;place-items:center;width:2.75rem;height:2.75rem;display:grid;box-shadow:inset 0 0 0 1px #fff3}.vuexy-brand-mark svg{width:1.35rem;height:1.35rem}.vuexy-brand-text{min-width:0;display:grid}.vuexy-brand-text strong{letter-spacing:-.02em;color:#fff;font-size:1.125rem;font-weight:600;line-height:1.2}.vuexy-brand-text small{font-size:var(--text-xs);color:var(--sidebar-text);line-height:1.2}.vuexy-sidebar-close{border:1px solid var(--sidebar-border);border-radius:var(--radius-control);width:2rem;height:2rem;color:var(--sidebar-text);box-shadow:none;background:#ffffff0f;justify-content:center;align-items:center;padding:0;display:none}.vuexy-sidebar-close svg{width:16px;height:16px}.vuexy-nav{flex-direction:column;flex:1;gap:2px;min-height:0;padding:.85rem .75rem 1rem;display:flex;overflow-y:auto}.vuexy-nav-label{letter-spacing:.08em;text-transform:uppercase;color:#6b7280;margin:0 .55rem .35rem;font-size:.6875rem;font-weight:700}.vuexy-nav-label--spaced{border-top:1px solid var(--sidebar-border);margin-top:.85rem;padding-top:.85rem}.vuexy-nav-link{border-radius:var(--radius-control);color:var(--sidebar-text);font-size:var(--text-sm);align-items:center;gap:.65rem;padding:.62rem .75rem;font-weight:500;line-height:1.3;transition:background .15s,color .15s;display:flex}.vuexy-nav-link:hover{background:var(--sidebar-bg-hover);color:#e5e7eb}.vuexy-nav-link.router-link-active{background:var(--sidebar-active-bg);color:var(--sidebar-text-active);font-weight:600;box-shadow:inset 3px 0 #ffffffd9}.vuexy-nav-link.router-link-active .vuexy-nav-icon{color:var(--sidebar-accent)}.vuexy-nav-link--nested{font-size:var(--text-sm);padding-left:1rem}.vuexy-nav-icon{color:#6b7280;flex-shrink:0;width:18px;height:18px;display:flex}.vuexy-nav-icon svg{width:18px;height:18px}.vuexy-main{min-height:100vh;margin-left:var(--vuexy-sidebar-width)}.vuexy-navbar{z-index:90;min-height:var(--layout-navbar-height);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm);background:#fffffffa;justify-content:space-between;align-items:center;gap:1rem;padding:0 1.5rem;display:flex;position:sticky;top:0}.vuexy-navbar-left{align-items:center;gap:.75rem;min-width:0;display:flex}.vuexy-menu-toggle{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:2.25rem;height:2.25rem;color:var(--color-text-secondary);box-shadow:none;justify-content:center;align-items:center;padding:0;display:none}.vuexy-menu-toggle svg{width:18px;height:18px}.vuexy-page-title{font-size:var(--text-xl);letter-spacing:-.02em;color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;margin:0;font-weight:600;overflow:hidden}.vuexy-navbar-right{align-items:center;gap:.75rem;display:flex}.vuexy-content{padding:1.25rem 1.5rem 2rem}.user-menu{margin-left:.35rem;position:relative}.user-menu-trigger{border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface);cursor:pointer;align-items:center;gap:.35rem;padding:.25rem .35rem .25rem .25rem;transition:border-color .15s,box-shadow .15s;display:inline-flex}.user-menu-trigger:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-sm)}.user-avatar,.user-menu-avatar{border-radius:var(--radius-full);background:var(--color-primary-soft);width:28px;height:28px;color:var(--color-text);font-size:var(--text-xs);place-items:center;font-weight:700;display:grid}.user-menu-chevron{width:14px;height:14px;color:var(--color-text-muted);margin-right:.15rem}.user-menu-dropdown{z-index:60;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:220px;box-shadow:var(--shadow-lg);padding:.5rem;animation:.15s slideUp;position:absolute;top:calc(100% + .5rem);right:0}.user-menu-header{border-bottom:1px solid var(--color-border);align-items:center;gap:.75rem;margin-bottom:.35rem;padding:.65rem .75rem;display:flex}.user-menu-header strong{font-size:var(--text-base);color:var(--color-text);display:block}.user-menu-header span{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:.1rem;display:block}.user-menu-item{border-radius:var(--radius-control);width:100%;color:var(--color-text-secondary);font:inherit;font-size:var(--text-base);text-align:left;cursor:pointer;box-shadow:none;background:0 0;border:none;padding:.45rem .65rem;font-weight:500;display:block}.user-menu-item:hover{background:var(--color-bg);color:var(--color-text)}.user-menu-logout{color:var(--color-text-secondary)}.user-menu-logout:hover{background:var(--color-primary);color:#fff}.card{background:var(--color-surface);box-shadow:var(--shadow-sm);border:1px solid #e5e7ebcc;border-radius:1rem;padding:1.25rem}.card h1,.card h2,.card h3{letter-spacing:-.02em;margin-top:0}.card h1{font-size:var(--text-lg);font-weight:700}.card h2{font-size:var(--text-base);font-weight:600}.stack{gap:.85rem;display:grid}.stack-lg{gap:1rem;display:grid}.page-header{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.page-header h1{font-size:var(--text-xl);letter-spacing:-.02em;color:var(--color-text);margin:0 0 .15rem;font-weight:600}.page-header .muted{font-size:var(--text-sm);margin:0}.toolbar{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.filters{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-control);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.75rem;display:flex}.filters input,.filters select{flex:1;width:auto;min-width:140px;max-width:220px}.form{gap:1.15rem;display:grid}label{font-size:var(--text-sm);color:var(--color-text-secondary);gap:.375rem;font-weight:500;display:grid}input,select,textarea{width:100%;min-height:var(--control-h);padding:var(--control-py) var(--control-px);border:1px solid var(--color-border-strong);border-radius:var(--radius-control);font:inherit;font-size:var(--text-sm);color:var(--color-text);background:var(--color-surface);transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 2px #0f172a0a}input:focus,select:focus,textarea:focus{border-color:#6b7280;outline:none;box-shadow:0 0 0 3px #6b728026}input::placeholder{color:var(--color-text-muted)}textarea{resize:vertical;min-height:auto;line-height:1.45}button,.btn{min-height:var(--control-h);padding:var(--control-py) 1rem;border-radius:var(--radius-control);background:var(--color-primary);color:#fff;font:inherit;font-size:var(--text-sm);cursor:pointer;box-shadow:none;border:none;justify-content:center;align-items:center;gap:.35rem;font-weight:500;line-height:1.2;transition:background .15s,transform .1s;display:inline-flex}button:hover:not(:disabled),.btn:hover{background:var(--color-primary-hover)}button:active:not(:disabled),.btn:active{transform:translateY(1px)}button:disabled,.btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-secondary{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border-strong);box-shadow:none}.btn-secondary:hover:not(:disabled){background:var(--color-primary-soft);color:var(--color-text)}.btn-link{color:var(--color-primary);min-height:auto;box-shadow:none;font-size:var(--text-base);background:0 0;padding:.2rem .4rem;font-weight:500}.btn-link:hover{background:var(--color-primary-soft);color:var(--color-primary-hover)}.btn-link.danger{color:var(--color-danger)}.btn-link.danger:hover{background:var(--color-danger-soft)}.table-wrap{border:1px solid var(--color-border);border-radius:1rem;overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:var(--text-base)}.table th{text-align:left;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);background:var(--color-bg);border-bottom:1px solid var(--color-border);padding:.5rem .75rem;font-weight:600}.table td{border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);padding:.55rem .75rem}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover td{background:#fafbfc}.table td.actions{white-space:nowrap}.table-actions{align-items:center;gap:.25rem;display:inline-flex}.btn-icon{border-radius:var(--radius-control);width:2rem;height:2rem;min-height:auto;color:var(--color-text-muted);box-shadow:none;cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.btn-icon svg{width:15px;height:15px}.btn-icon:hover:not(:disabled){background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-icon.btn-icon-danger:hover:not(:disabled){background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a80;place-items:center;padding:1rem;animation:.15s fadeIn;display:grid;position:fixed;inset:0}.modal{border-radius:1rem;width:min(480px,100%);max-height:90vh;animation:.2s slideUp;overflow:auto}.modal h2{font-size:var(--text-xl);letter-spacing:-.02em;color:var(--color-text);margin:0 0 1.25rem;font-weight:700;line-height:1.25}.modal .form{gap:1.15rem}.form-fields{gap:1.15rem;display:grid}.modal-wide{width:min(720px,100%)}.modal-actions{border-top:1px solid var(--color-border);justify-content:flex-end;gap:.75rem;margin-top:1.25rem;padding-top:1.25rem;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.pagination{justify-content:center;align-items:center;gap:1rem;padding-top:.5rem;display:flex}.pagination button{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border-strong);box-shadow:none;font-weight:500}.pagination button:hover:not(:disabled){background:var(--color-bg)}.pagination span{font-size:var(--text-sm);color:var(--color-text-muted)}.guest-layout{min-height:100vh;display:flex}.guest-brand{background:var(--brand-dark);flex-direction:column;justify-content:space-between;width:44%;display:none;position:relative;overflow:hidden}.guest-brand-glow{filter:blur(48px);pointer-events:none;background:#ffffff0d;border-radius:999px;position:absolute}.guest-brand-glow--top{width:20rem;height:20rem;top:-6rem;right:-6rem}.guest-brand-glow--bottom{width:24rem;height:24rem;bottom:-8rem;left:-4rem}.guest-brand:before{content:"";pointer-events:none;background:radial-gradient(at 0 0,#6b728066,#0000 55%);position:absolute;inset:0}.guest-brand-header,.guest-brand-body,.guest-brand-footer{z-index:1;position:relative}.guest-brand-header{align-items:center;gap:.75rem;padding:3rem 3rem 0;display:flex}.guest-brand-logo{color:#fff;background:#ffffff1a;border-radius:.75rem;place-items:center;width:2.75rem;height:2.75rem;display:grid;box-shadow:inset 0 0 0 1px #fff3}.guest-brand-logo svg{width:1.5rem;height:1.5rem}.guest-brand-logo--dark{box-shadow:none;background:#111827}.guest-brand-name{letter-spacing:-.02em;color:#fff;font-size:1.125rem;font-weight:600}.guest-brand-body{padding:0 3rem}.guest-brand-title{letter-spacing:-.03em;color:#fff;margin:0;font-size:1.875rem;font-weight:600;line-height:1.25}.guest-brand-desc{color:#9ca3af;max-width:22rem;margin:1rem 0 0;font-size:.875rem;line-height:1.6}.guest-brand-features{gap:1rem;margin:2.5rem 0 0;padding:0;list-style:none;display:grid}.guest-brand-features li{color:#d1d5db;align-items:flex-start;gap:.75rem;font-size:.875rem;line-height:1.45;display:flex}.guest-brand-check{color:#fff;background:#ffffff1a;border-radius:999px;flex-shrink:0;place-items:center;width:1.25rem;height:1.25rem;margin-top:.125rem;font-size:.625rem;display:grid}.guest-brand-footer{color:#6b7280;padding:0 3rem 2.5rem;font-size:.75rem}.guest-form-panel{background:var(--color-bg);flex-direction:column;flex:1;justify-content:center;align-items:center;padding:2.5rem 1rem;display:flex}.guest-form-mobile-brand{align-items:center;gap:.625rem;margin-bottom:2rem;display:flex}.guest-form-mobile-name{letter-spacing:-.02em;color:#111827;font-size:1.125rem;font-weight:600}.guest-form-wrap{width:100%;max-width:400px}.auth-card{background:#fff;border:1px solid #e5e7ebcc;border-radius:1rem;padding:1.5rem;box-shadow:0 1px 2px #0f172a0f}.auth-card-header{margin-bottom:2rem}.auth-card-title{letter-spacing:-.02em;color:#111827;margin:0;font-size:1.5rem;font-weight:600}.auth-card-subtitle{color:#6b7280;margin:.375rem 0 0;font-size:.875rem;line-height:1.5}.auth-form{gap:1.25rem;display:grid}.auth-field{display:grid}.auth-label{color:#374151;margin-bottom:.375rem;font-size:.875rem;font-weight:500}.auth-input-wrap{position:relative}.auth-input-icon{color:#9ca3af;pointer-events:none;align-items:center;padding-left:.75rem;display:flex;position:absolute;top:0;bottom:0;left:0}.auth-input-icon svg{width:1rem;height:1rem}.auth-input{color:#111827;width:100%;min-height:2.625rem;font:inherit;background:#fff;border:1px solid #d1d5db;border-radius:.5rem;padding:.625rem .75rem;font-size:.875rem;transition:border-color .15s,box-shadow .15s;display:block;box-shadow:0 1px 2px #0f172a0a}.auth-input--icon-left{padding-left:2.5rem}.auth-input--icon-both{padding-left:2.5rem;padding-right:2.5rem}.auth-input:focus{border-color:#6b7280;outline:none;box-shadow:0 0 0 3px #6b728026}.auth-input::placeholder{color:#9ca3af}.auth-input-action{color:#9ca3af;min-height:auto;box-shadow:none;background:0 0;border:none;align-items:center;padding:0 .75rem;display:flex;position:absolute;top:0;bottom:0;right:0}.auth-input-action:hover{color:#4b5563;background:0 0}.auth-input-action svg{width:1rem;height:1rem}.auth-remember{padding-top:.25rem}.auth-checkbox-label{color:#4b5563;cursor:pointer;align-items:center;gap:.625rem;font-size:.875rem;display:inline-flex}.auth-checkbox{accent-color:#1f2937;border-radius:.25rem;width:1rem;height:1rem;margin:0}.auth-submit{width:100%;min-height:var(--control-h);padding:var(--control-py) 1rem;border-radius:var(--radius-control);background:var(--color-primary);color:#fff;font-size:var(--text-sm);box-shadow:none;border:none;font-weight:500}.auth-submit:hover:not(:disabled){background:var(--color-primary-hover)}.auth-submit:focus-visible{outline:none;box-shadow:0 0 0 3px #1f293740}.auth-spinner{width:1rem;height:1rem;margin-right:.5rem;animation:.8s linear infinite auth-spin}.auth-spinner-track{opacity:.25}.auth-spinner-head{opacity:.75}@keyframes auth-spin{to{transform:rotate(360deg)}}.auth-card-note{text-align:center;color:#6b7280;margin:2rem 0 0;font-size:.875rem}.auth-card-note a{color:#1f2937;font-weight:500}.auth-card-footnote{text-align:center;color:#9ca3af;margin:.75rem 0 0;font-size:.75rem}input:-webkit-autofill{-webkit-text-fill-color:#111827;transition:background-color 5000s ease-in-out;-webkit-box-shadow:inset 0 0 0 1000px #fff}input:-webkit-autofill:hover{-webkit-text-fill-color:#111827;transition:background-color 5000s ease-in-out;-webkit-box-shadow:inset 0 0 0 1000px #fff}input:-webkit-autofill:focus{-webkit-text-fill-color:#111827;transition:background-color 5000s ease-in-out;-webkit-box-shadow:inset 0 0 0 1000px #fff}@media (width>=1024px){.guest-brand{display:flex}.guest-form-mobile-brand{display:none}.auth-card{padding:2.5rem}}@media (width>=640px){.guest-form-panel{padding-left:1.5rem;padding-right:1.5rem}}.hero{text-align:center;padding:3rem 1rem 2rem}.hero-badge{margin-bottom:1rem;display:inline-flex}.hero h1{letter-spacing:-.03em;margin:0 0 1rem;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;line-height:1.2}.hero p{max-width:540px;color:var(--color-text-muted);margin:0 auto 2rem;font-size:1.05rem;line-height:1.6}.hero-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;display:grid}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-control);padding:.85rem 1rem}.stat-card .label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin-bottom:.25rem;font-weight:600}.stat-card .value{font-size:var(--text-base);color:var(--color-text);word-break:break-all;font-weight:600}.muted{color:var(--color-text-muted)}.error{color:var(--color-danger);font-size:var(--text-sm);background:var(--color-danger-soft);border-radius:var(--radius-control);border:1px solid #fecaca;margin:0;padding:.45rem .65rem}.badge{border-radius:var(--radius-full);background:var(--color-primary-soft);color:var(--color-text-secondary);font-size:var(--text-xs);letter-spacing:.02em;align-items:center;padding:.15rem .5rem;font-weight:600;display:inline-flex}.badge-success{background:var(--color-success-soft);color:var(--color-success)}code{background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;padding:.15rem .4rem;font-size:.85em}.divider{border:none;border-top:1px solid var(--color-border);margin:.5rem 0}.form-row-2{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.contact-row{grid-template-columns:100px 1fr 150px;align-items:end;gap:.75rem;display:grid}.address-row{grid-template-columns:1.4fr 1fr 120px;align-items:end;gap:.75rem;display:grid}.bulk-import{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);padding:1rem 1.1rem}.bulk-import h3{font-size:var(--text-lg);margin:0 0 .25rem;font-weight:600}.bulk-import-actions{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.file-input-label{cursor:pointer;position:relative;overflow:hidden}.file-input-hidden{opacity:0;cursor:pointer;position:absolute;inset:0}.import-errors{color:var(--color-danger);font-size:var(--text-sm);margin:0;padding-left:1.1rem}.success{color:var(--color-success);font-size:var(--text-sm);margin:0}.card-muted.stack{gap:.75rem;display:grid}.empty-state{text-align:center;color:var(--color-text-muted);font-size:var(--text-base);padding:1.5rem 1rem}@media (width<=1024px){.vuexy-sidebar-overlay{z-index:105;background:#0f172a73;display:none;position:fixed;inset:0}.vuexy-layout--sidebar-open .vuexy-sidebar-overlay{display:block}.vuexy-sidebar{transition:transform .2s;transform:translate(-100%)}.vuexy-layout--sidebar-open .vuexy-sidebar{transform:translate(0)}.vuexy-sidebar-close,.vuexy-menu-toggle{display:inline-flex}.vuexy-main{margin-left:0}.vuexy-navbar,.vuexy-content{padding-left:1rem;padding-right:1rem}.address-row,.contact-row,.form-row-2{grid-template-columns:1fr}}
