:root{--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--text-xs: 12px;--text-sm: 13px;--text-md: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 24px;--accent-700: #4338ca;--accent-600: #4f46e5;--accent-100: #e0e7ff;--accent-50: #eef2ff;--ink-900: #101828;--ink-800: #1d2939;--bg: #f6f7f9;--surface: #ffffff;--surface-2: #fafbfc;--border: #e4e7ec;--border-strong: #d0d5dd;--text: #101828;--text-2: #475467;--muted: #667085;--danger-700: #b42318;--danger-600: #d92d20;--danger-200: #fecdca;--danger-50: #fef3f2;--success-50: #ecfdf3;--success-200: #abefc6;--success-700: #067647;--info-50: #eff8ff;--info-200: #b2ddff;--info-700: #175cd3;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--shadow-xs: 0 1px 2px rgba(16, 24, 40, .05);--shadow-md: 0 8px 20px -6px rgba(16, 24, 40, .14), 0 2px 6px -2px rgba(16, 24, 40, .07);--shadow-lg: 0 24px 48px -12px rgba(16, 24, 40, .28);--focus-ring: 0 0 0 3px rgba(79, 70, 229, .25);--ease: cubic-bezier(.2, 0, 0, 1);--dur: .14s;--sidebar-w: 248px;--sidebar-w-collapsed: 72px;--topbar-h: 60px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--text-md);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:var(--accent-700)}fieldset{border:0;margin:0;padding:0;min-width:0}kbd{font-family:inherit}:focus-visible{outline:2px solid var(--accent-600);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:fixed;left:12px;top:-48px;z-index:200;background:var(--surface);color:var(--text);padding:8px 14px;border-radius:var(--radius-md);box-shadow:var(--shadow-md);text-decoration:none;transition:top var(--dur) var(--ease)}.skip-link:focus{top:12px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.m-16{margin:16px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.985)}}@keyframes shimmer{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 14px;border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:600;line-height:1;white-space:nowrap;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn:disabled{opacity:.55}.btn--sm{height:30px;padding:0 10px;font-size:var(--text-sm)}.btn--primary{background:var(--accent-600);color:#fff;box-shadow:var(--shadow-xs)}.btn--primary:hover:not(:disabled){background:var(--accent-700)}.btn--secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow-xs)}.btn--secondary:hover:not(:disabled){background:var(--surface-2);border-color:#c3c9d4}.btn--danger{background:var(--danger-600);color:#fff}.btn--danger:hover:not(:disabled){background:var(--danger-700)}.btn--danger:focus-visible{box-shadow:0 0 0 3px #d92d2040}.btn--ghost{background:transparent;color:var(--text-2)}.btn--ghost:hover:not(:disabled){background:#f0f2f5;color:var(--text)}.icon-btn{display:inline-grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:var(--radius-md);background:transparent;color:var(--muted);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.icon-btn:hover:not(:disabled){background:#f0f2f5;color:var(--text)}.icon-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.icon-btn:disabled{opacity:.4}.icon-btn--danger:hover:not(:disabled){background:var(--danger-50);color:var(--danger-600)}.icon-btn--sm{width:24px;height:24px}.input{display:block;width:100%;height:38px;padding:0 12px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:var(--text-md);color:var(--text);box-shadow:var(--shadow-xs);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.input::placeholder{color:#98a2b3}.input:hover{border-color:#c3c9d4}.input:focus{outline:none;border-color:var(--accent-600);box-shadow:var(--focus-ring)}.select{appearance:none;padding-right:34px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px;min-width:0}.field label{font-size:var(--text-sm);font-weight:600;color:var(--text)}.field__req{color:var(--danger-600);margin-left:3px}.field__hint{font-size:var(--text-xs);color:var(--muted)}.field__error{font-size:var(--text-xs);color:var(--danger-600);font-weight:500}.field--error .input{border-color:var(--danger-600)}.field--error .input:focus{box-shadow:0 0 0 3px #d92d2038}.alert{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1px solid;border-radius:var(--radius-md);font-size:var(--text-sm)}.alert>svg{flex:none;margin-top:1px}.alert__body{flex:1;min-width:0}.alert--danger{background:var(--danger-50);border-color:var(--danger-200);color:var(--danger-700)}.alert--success{background:var(--success-50);border-color:var(--success-200);color:var(--success-700)}.alert--info{background:var(--info-50);border-color:var(--info-200);color:var(--info-700)}.alert .btn{margin:-4px 0}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:var(--text-xs);font-weight:500}.badge--neutral{background:#f0f2f5;color:var(--text-2)}.badge--success{background:var(--success-50);color:var(--success-700)}.skeleton{display:block;border-radius:4px;background:linear-gradient(90deg,#f0f2f5 25%,#e4e7ec 37%,#f0f2f5 63%) 0 0 / 200% 100%;animation:shimmer 1.4s linear infinite}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:56px 24px}.empty-state__icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--accent-50);color:var(--accent-600);border:1px solid var(--accent-100);margin-bottom:14px}.empty-state h3{font-size:var(--text-lg);font-weight:600}.empty-state p{color:var(--muted);margin-top:4px;max-width:420px}.empty-state .btn{margin-top:18px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px}.page-header h1{font-size:var(--text-2xl);font-weight:650;letter-spacing:-.015em;line-height:1.25}.page-header p{color:var(--muted);margin-top:2px}.page-header__actions{display:flex;gap:8px;flex:none}.modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:#10182880;animation:fade var(--dur) ease-out}.modal{display:flex;flex-direction:column;width:min(var(--modal-w, 640px),100%);max-height:min(90vh,820px);background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:pop .18s var(--ease)}.modal:focus{outline:none}.modal--sm{--modal-w: 440px}.modal--lg{--modal-w: 720px}.modal__header{display:flex;justify-content:space-between;gap:16px;padding:20px 24px 16px;border-bottom:1px solid var(--border)}.modal__header h2{font-size:var(--text-lg);font-weight:600;line-height:1.3;overflow-wrap:anywhere}.modal__header p{color:var(--muted);font-size:var(--text-sm);margin-top:2px}.modal__body{flex:1;min-height:0;overflow-y:auto;padding:20px 24px}.modal__form{display:flex;flex-direction:column;flex:1;min-height:0}.modal__footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 24px;border-top:1px solid var(--border);background:var(--surface-2);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.confirm-text{color:var(--text-2);overflow-wrap:anywhere}.confirm-text b{color:var(--text)}.toasts{position:fixed;right:20px;bottom:20px;z-index:300;display:grid;gap:8px;width:min(380px,calc(100vw - 40px))}.toast{display:flex;align-items:center;gap:10px;padding:12px 12px 12px 14px;background:var(--ink-900);color:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-size:var(--text-sm);animation:pop .2s var(--ease)}.toast>span{flex:1;overflow-wrap:anywhere}.toast>svg{flex:none;color:#75e0a7}.toast--danger>svg{color:#fda29b}.toast .icon-btn{color:#98a2b3}.toast .icon-btn:hover{background:#ffffff1a;color:#fff}.pagination{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:12px 16px;border-top:1px solid var(--border);font-size:var(--text-sm);color:var(--muted)}.pagination__controls{display:flex;align-items:center;gap:6px}.pagination__size{display:flex;align-items:center;gap:8px;margin-right:8px}.pagination__size .input{height:32px;width:72px;font-size:var(--text-sm)}.pagination__page{min-width:48px;text-align:center;font-variant-numeric:tabular-nums}.splash{min-height:100vh;display:grid;place-items:center;color:var(--accent-600)}.sidebar{position:fixed;inset:0 auto 0 0;z-index:60;width:var(--sidebar-w);display:flex;flex-direction:column;background:var(--surface);border-right:1px solid var(--border);transition:width var(--dur) var(--ease),transform .22s var(--ease)}.sidebar__brand{display:flex;align-items:center;gap:10px;height:var(--topbar-h);padding:0 16px;border-bottom:1px solid var(--border);flex:none}.brand-mark{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--accent-600);color:#fff;font-weight:700;font-size:15px;box-shadow:inset 0 -2px #00000026}.brand-text{min-width:0;display:flex;flex-direction:column;line-height:1.25;white-space:nowrap}.brand-text strong{color:var(--text);font-size:var(--text-md);font-weight:650}.brand-text small{color:var(--muted);font-size:11.5px}.sidebar__close{display:none;margin-left:auto}.sidebar__nav{flex:1;overflow-y:auto;padding:14px 10px}.nav-group+.nav-group{margin-top:20px}.nav-group__label{margin:0 10px 6px;font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:#98a2b3;white-space:nowrap}.nav-group ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}.nav-link{position:relative;display:flex;align-items:center;gap:12px;width:100%;height:38px;padding:0 11px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--text-2);font-size:13.5px;font-weight:500;text-decoration:none;text-align:left;white-space:nowrap;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.nav-link svg{flex:none;color:#98a2b3;transition:color var(--dur) var(--ease)}.nav-link:hover{background:#f0f2f5;color:var(--text)}.nav-link:hover svg{color:var(--text-2)}.nav-link:focus-visible{outline:none;box-shadow:var(--focus-ring)}.nav-link[aria-current=page]{background:var(--accent-50);color:var(--accent-700);font-weight:600}.nav-link[aria-current=page] svg{color:var(--accent-600)}.sidebar__foot{flex:none;padding:10px;border-top:1px solid var(--border)}.scrim{position:fixed;inset:0;z-index:55;background:#10182880;animation:fade var(--dur) ease-out}.app__main{min-height:100vh;margin-left:var(--sidebar-w);transition:margin-left var(--dur) var(--ease)}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;height:var(--topbar-h);padding:0 32px;background:#fffffff0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.topbar nav{flex:1;min-width:0}.topbar__menu{display:none;margin-left:-8px;color:var(--text)}.breadcrumb{display:flex;align-items:center;gap:6px;margin:0;padding:0;list-style:none;font-size:var(--text-sm);color:var(--muted)}.breadcrumb li{display:flex;align-items:center;white-space:nowrap}.breadcrumb [aria-current=page]{color:var(--text);font-weight:600;overflow:hidden;text-overflow:ellipsis}.page{max-width:1440px;margin:0 auto;padding:28px 32px 56px}.page:focus{outline:none}.user-menu{position:relative;flex:none}.user-btn{display:flex;align-items:center;gap:8px;height:40px;padding:0 8px 0 6px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--text-2);transition:background var(--dur) var(--ease)}.user-btn:hover,.user-btn[aria-expanded=true]{background:#f0f2f5}.user-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.user-btn__name{font-size:var(--text-sm);font-weight:600;color:var(--text);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--accent-100);color:var(--accent-700);font-size:11px;font-weight:700}.menu{position:absolute;right:0;top:calc(100% + 6px);z-index:70;min-width:220px;padding:6px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);animation:pop .14s var(--ease)}.menu__head{display:flex;flex-direction:column;padding:8px 10px 10px;margin-bottom:4px;border-bottom:1px solid var(--border)}.menu__head strong{font-size:var(--text-sm);overflow-wrap:anywhere}.menu__head span{font-size:var(--text-xs);color:var(--muted)}.menu__item{display:flex;align-items:center;gap:10px;width:100%;height:36px;padding:0 10px;border:0;border-radius:var(--radius-sm);background:transparent;font-size:var(--text-sm);text-align:left}.menu__item:hover:not(:disabled),.menu__item:focus-visible{background:#f0f2f5;outline:none}@media(min-width:901px){.is-collapsed .sidebar{width:var(--sidebar-w-collapsed)}.is-collapsed .app__main{margin-left:var(--sidebar-w-collapsed)}.is-collapsed .brand-text,.is-collapsed .nav-link span{display:none}.is-collapsed .sidebar__brand,.is-collapsed .nav-link{justify-content:center;padding:0}.is-collapsed .nav-link[aria-current=page]:before{left:-10px}.is-collapsed .nav-group__label{height:1px;margin:0 14px 10px;font-size:0;background:var(--border)}.is-collapsed .nav-group+.nav-group{margin-top:14px}}@media(max-width:900px){.sidebar{width:280px;transform:translate(-100%)}.sidebar.is-open{transform:none;box-shadow:var(--shadow-lg)}.sidebar__close{display:grid}.sidebar__foot{display:none}.app__main{margin-left:0}.topbar{padding:0 16px}.topbar__menu{display:grid}.page{padding:20px 16px 40px}}@media(max-width:640px){.user-btn__name,.user-btn>svg{display:none}.breadcrumb__parent,.breadcrumb__sep{display:none}.page-header{flex-wrap:wrap}.page-header h1{font-size:21px}}.data-surface{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);overflow:hidden}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.search{position:relative;flex:1 1 260px;max-width:360px}.search .input{padding-left:36px;padding-right:40px}.search input[type=search]::-webkit-search-cancel-button{display:none}.search__icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.search__clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:26px;height:26px;border:0;border-radius:6px;background:transparent;color:var(--muted)}.search__clear:hover{background:#f0f2f5;color:var(--text)}.search__kbd{position:absolute;right:10px;top:50%;transform:translateY(-50%);min-width:20px;padding:1px 6px;text-align:center;font-size:11px;color:var(--muted);border:1px solid var(--border-strong);border-radius:5px;background:var(--surface-2)}.toolbar__filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.toolbar__filters .select{width:auto;min-width:148px;height:36px;font-size:var(--text-sm)}.table-wrap{overflow-x:auto;transition:opacity var(--dur) var(--ease)}.table-wrap.is-refreshing{opacity:.55;pointer-events:none}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--text-sm)}.table th,.table td{padding:0 14px;height:52px;text-align:left;vertical-align:middle;white-space:nowrap;border-bottom:1px solid var(--border)}.table th{height:40px;background:var(--surface-2);font-size:var(--text-xs);font-weight:600;color:var(--muted)}.table th:first-child,.table td:first-child{padding-left:20px}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:#f9fafb}.table .num{text-align:right;font-variant-numeric:tabular-nums}.th-sort{display:inline-flex;align-items:center;gap:4px;padding:4px 6px;margin:0 -6px;border:0;border-radius:5px;background:transparent;font:inherit;color:inherit}.th-sort:hover{color:var(--text);background:#f0f2f5}.th-sort__idle{opacity:.45}th[aria-sort=ascending] .th-sort,th[aria-sort=descending] .th-sort{color:var(--text)}.table .num .th-sort{flex-direction:row-reverse}.col-product{min-width:220px;white-space:normal}.link-cell{display:block;max-width:340px;padding:0;border:0;background:none;color:var(--text);font-weight:600;text-align:left}.link-cell:hover{color:var(--accent-700);text-decoration:underline;text-underline-offset:3px}.cell-sub{display:block;margin-top:1px;font-size:var(--text-xs);color:var(--muted)}.col-actions{position:sticky;right:0;width:1%;padding:0 12px!important;background:var(--surface);border-left:1px solid var(--border)}.table th.col-actions{background:var(--surface-2)}.row-actions{display:flex;justify-content:flex-end;gap:2px}@media(max-width:720px){.toolbar{padding:12px}.search{flex-basis:100%;max-width:none}.toolbar__filters{width:100%}.toolbar__filters .select{flex:1 1 140px}.table thead{display:none}.table,.table tbody{display:block}.table tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px;padding:14px 16px;border-bottom:1px solid var(--border)}.table tbody tr:last-child{border-bottom:0}.table td,.table td:first-child{display:block;height:auto;padding:0;border:0;text-align:left!important;white-space:normal;background:none!important}.table td[data-label]:before{content:attr(data-label);display:block;margin-bottom:1px;font-size:11px;color:var(--muted)}.table td.col-product{grid-column:1 / -1;min-width:0}.table td.col-product:before{display:none}.table td.col-actions{grid-column:1 / -1;position:static;width:auto;padding:0!important;border:0}.link-cell{max-width:none}.pagination{justify-content:center}}.detail-group+.detail-group{margin-top:22px}.detail-group h3{margin-bottom:8px;font-size:var(--text-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.detail-group dl{margin:0}.detail-row{display:flex;justify-content:space-between;gap:24px;padding:10px 0;border-bottom:1px solid var(--border);font-size:var(--text-sm)}.detail-row:last-child{border-bottom:0}.detail-row dt{color:var(--muted)}.detail-row dd{margin:0;font-weight:500;text-align:right;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.form-section+.form-section{margin-top:8px;padding-top:20px;border-top:1px solid var(--border)}.form-section legend{padding:0;margin-bottom:14px;font-size:var(--text-sm);font-weight:650;color:var(--text)}.form-grid{display:grid;gap:0 16px}.form-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.form-section .field:last-child{margin-bottom:0}.form-grid .field{margin-bottom:16px}@media(max-width:640px){.form-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:420px){.form-grid--3{grid-template-columns:1fr}}@media(max-width:560px){.modal-backdrop{padding:0;align-items:end}.modal{width:100%;max-height:94vh;border-radius:16px 16px 0 0}.modal__header,.modal__body,.modal__footer{padding-left:16px;padding-right:16px}.modal__footer{border-radius:0}}.login{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;background-color:var(--bg);background-image:radial-gradient(circle at 1px 1px,#d0d5dd 1px,transparent 0);background-size:24px 24px}.login:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 60% 50% at 50% 40%,var(--bg) 30%,transparent 100%);pointer-events:none}.login__card{position:relative;width:min(400px,100%);padding:36px 32px 28px;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-md)}.login__logo{display:flex;align-items:center;gap:10px;margin-bottom:28px}.login__logo strong{display:block;font-size:var(--text-md);line-height:1.2}.login__logo small{color:var(--muted);font-size:11.5px}.login__card h1{font-size:var(--text-2xl);font-weight:650;letter-spacing:-.02em}.login__sub{margin:4px 0 24px;color:var(--muted)}.password{position:relative}.password .input{padding-right:44px}.password__toggle{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:6px;background:transparent;color:var(--muted)}.password__toggle:hover{background:#f0f2f5;color:var(--text)}.login__submit{width:100%;height:40px;margin-top:8px}.login__foot{position:relative;margin-top:20px;font-size:var(--text-xs);color:var(--muted);text-align:center}.login>main{width:min(400px,100%);position:relative}
