@charset "UTF-8";:root{--color-bg-primary: #0a0a0f;--color-bg-surface: #1a1b26;--color-bg-elevated: #22233a;--color-accent-blue: #3b82f6;--color-accent-blue-hover: #2563eb;--color-border: #2d2e3f;--color-text-primary: #e2e8f0;--color-text-secondary: #94a3b8;--color-success: #22c55e;--color-warning: #f59e0b;--color-danger: #ef4444;--radius-sm: 4px;--radius: 8px;--radius-lg: 12px;--radius-full: 999px;--transition: .2s ease;--dur-fast: .12s;--dur-med: .22s;--dur-slow: .36s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .5), 0 2px 6px rgba(0, 0, 0, .3);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .6), 0 4px 16px rgba(0, 0, 0, .4);--shadow-glow-blue: 0 0 20px rgba(59, 130, 246, .25);--fs-xs: 11px;--fs-sm: 12px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 18px;--fs-2xl: 22px;--fs-3xl: 28px;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--z-dropdown: 100;--z-sticky: 200;--z-modal: 900;--z-toast: 1000;--surface-1: var(--color-bg-primary);--surface-2: var(--color-bg-surface);--surface-3: var(--color-bg-elevated);--color-bg-hover: rgba(255, 255, 255, .04);--color-bg-active: rgba(59, 130, 246, .08);--color-bg-overlay: rgba(0, 0, 0, .6);--gradient-accent: linear-gradient(135deg, var(--color-accent-blue), #6366f1);--gradient-surface: linear-gradient(180deg, var(--color-bg-surface), var(--color-bg-primary));--gradient-login: radial-gradient(circle at 20% 20%, rgba(59, 130, 246, .15), transparent 45%), radial-gradient(circle at 80% 70%, rgba(139, 92, 246, .12), transparent 45%), var(--color-bg-primary)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--color-bg-primary);color:var(--color-text-primary);font-family:Inter,system-ui,sans-serif;font-size:var(--fs-md);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-accent-blue);text-decoration:none}a:hover{color:var(--color-accent-blue-hover)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}*{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px;border-radius:inherit}::selection{background:#3b82f64d;color:var(--color-text-primary)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes progressBar{0%{width:100%}to{width:0%}}.anim-fade-in{animation:fadeIn var(--dur-med) var(--ease-out) both}.anim-slide-up{animation:slideUp var(--dur-med) var(--ease-out) both}.anim-scale-in{animation:scaleIn var(--dur-med) var(--ease-out) both}.anim-shake{animation:shake .4s var(--ease-out)}.anim-stagger>*{animation:slideUp var(--dur-med) var(--ease-out) both;animation-delay:calc(var(--i, 0) * 40ms)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius);font-size:var(--fs-md);font-weight:var(--fw-medium);cursor:pointer;border:none;transition:background var(--dur-fast) ease,color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform var(--dur-fast) ease;white-space:nowrap;line-height:1}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--color-accent-blue);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-accent-blue-hover);box-shadow:var(--shadow-glow-blue)}.btn-secondary{background:var(--color-bg-elevated);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-border)}.btn-danger{background:transparent;color:var(--color-danger);border:1px solid var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--color-danger);color:#fff}.btn-ghost{background:transparent;color:var(--color-text-secondary);border:none}.btn-ghost:hover:not(:disabled){background:var(--color-bg-hover);color:var(--color-text-primary)}.btn-sm{padding:4px 10px;font-size:var(--fs-sm);gap:4px}.btn-icon{padding:6px;border-radius:var(--radius)}.btn:disabled{opacity:.45;cursor:not-allowed}.card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm)}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-label{font-size:var(--fs-sm);color:var(--color-text-secondary);font-weight:var(--fw-medium);letter-spacing:.01em}.form-control{background:var(--color-bg-elevated);border:1px solid var(--color-border);color:var(--color-text-primary);border-radius:var(--radius);padding:9px 12px;font-size:var(--fs-md);width:100%;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease;font-family:inherit}.form-control:focus{outline:none;border-color:var(--color-accent-blue);box-shadow:0 0 0 3px #3b82f626}.form-control.ng-invalid.ng-touched{border-color:var(--color-danger)}.form-control.ng-invalid.ng-touched:focus{box-shadow:0 0 0 3px #ef444426}select.form-control option{background:var(--color-bg-elevated)}.input-group{position:relative}.input-group .input-icon{position:absolute;top:50%;left:10px;transform:translateY(-50%);color:var(--color-text-secondary);pointer-events:none;display:flex}.input-group .form-control{padding-left:34px}.input-group.input-group--right .input-icon{left:auto;right:10px}.form-grid{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:768px){.form-grid{grid-template-columns:repeat(2,1fr);gap:16px 20px}}.form-grid .form-group{margin-bottom:0}.form-grid--full{grid-column:1/-1}.table-wrapper{overflow-x:auto}table{width:100%;border-collapse:collapse}table th,table td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--color-border)}table th{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-secondary);font-weight:var(--fw-semibold);white-space:nowrap}table tr:last-child td{border-bottom:none}table tbody tr{transition:background var(--dur-fast) ease}table tbody tr:hover td{background:var(--color-bg-elevated)}table tbody tr.is-low td{background:#ef444408}.badge{display:inline-block;padding:3px 9px;border-radius:var(--radius-full);font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:.03em}.badge-ok{background:#22c55e1f;color:var(--color-success)}.badge-warn{background:#f59e0b1f;color:var(--color-warning)}.badge-danger{background:#ef44441f;color:var(--color-danger)}.badge-info{background:#3b82f61f;color:var(--color-accent-blue)}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--color-border);border-top-color:var(--color-accent-blue);border-radius:50%;animation:spin .65s linear infinite;flex-shrink:0}.skeleton{background:linear-gradient(90deg,var(--color-bg-elevated) 0%,var(--color-border) 50%,var(--color-bg-elevated) 100%);background-size:200% 100%;animation:shimmer 1.6s infinite;border-radius:var(--radius)}.skeleton-text{height:14px;border-radius:var(--radius-sm)}.skeleton-title{height:20px;border-radius:var(--radius-sm)}.skeleton-card{height:120px}.skeleton-row{height:44px;border-radius:0;border-bottom:1px solid var(--color-border)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:56px 16px;color:var(--color-text-secondary);text-align:center}.empty-state__icon{color:var(--color-text-secondary);opacity:.4;margin-bottom:4px}.empty-state__title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--color-text-primary)}.empty-state__desc{font-size:var(--fs-sm);max-width:300px;line-height:1.6}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);background:var(--color-bg-elevated);color:var(--color-text-primary);font-size:var(--fs-xs);font-weight:var(--fw-medium);padding:5px 9px;border-radius:var(--radius-sm);border:1px solid var(--color-border);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--dur-fast) ease;z-index:var(--z-dropdown);box-shadow:var(--shadow-md)}[data-tooltip]:hover:after{opacity:1}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--radius-full);font-size:var(--fs-xs);font-weight:var(--fw-medium);background:var(--color-bg-elevated);border:1px solid var(--color-border);color:var(--color-text-secondary);cursor:pointer;transition:background var(--dur-fast),border-color var(--dur-fast),color var(--dur-fast)}.chip:hover,.chip.active{background:#3b82f61f;border-color:#3b82f666;color:var(--color-accent-blue)}.divider{border:none;border-top:1px solid var(--color-border);margin:0}.metric-card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px;display:flex;align-items:flex-start;gap:16px;box-shadow:var(--shadow-sm);transition:border-color var(--dur-med) ease,box-shadow var(--dur-med) ease}.metric-card:hover{box-shadow:var(--shadow-md)}.metric-card__icon{width:44px;height:44px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;flex-shrink:0}.metric-card__body{flex:1;min-width:0}.metric-card__value{font-size:var(--fs-2xl);font-weight:var(--fw-bold);line-height:1.1;color:var(--color-text-primary)}.metric-card__label{font-size:var(--fs-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.06em;font-weight:var(--fw-medium);margin-top:2px}.metric-card--blue .metric-card__icon{background:#3b82f61f;color:var(--color-accent-blue)}.metric-card--danger .metric-card__icon{background:#ef44441f;color:var(--color-danger)}.metric-card--success .metric-card__icon{background:#22c55e1f;color:var(--color-success)}.metric-card--warning .metric-card__icon{background:#f59e0b1f;color:var(--color-warning)}.alert-bar{padding:11px 16px;border-radius:var(--radius);display:flex;align-items:center;gap:10px;font-size:var(--fs-sm)}.alert-bar--warning{background:#f59e0b14;border:1px solid rgba(245,158,11,.25);color:var(--color-warning)}.stock-progress{height:4px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden;margin-top:10px}.stock-progress__bar{height:100%;border-radius:var(--radius-full);transition:width var(--dur-slow) var(--ease-out)}.stock-progress__bar--ok{background:var(--color-success)}.stock-progress__bar--warn{background:var(--color-warning)}.stock-progress__bar--danger{background:var(--color-danger)}.stock-progress__bar--empty{width:0!important}.avatar{width:32px;height:32px;border-radius:var(--radius-full);background:var(--gradient-accent);display:flex;align-items:center;justify-content:center;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:#fff;flex-shrink:0;-webkit-user-select:none;user-select:none;letter-spacing:.05em}.dropdown{position:relative}.dropdown__menu{position:absolute;top:calc(100% + 8px);right:0;min-width:180px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);overflow:hidden;animation:slideDown var(--dur-fast) var(--ease-out) both}.dropdown__item{display:flex;align-items:center;gap:10px;padding:10px 14px;font-size:var(--fs-sm);color:var(--color-text-secondary);cursor:pointer;transition:background var(--dur-fast),color var(--dur-fast);border:none;background:none;width:100%;text-align:left}.dropdown__item:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.dropdown__item--danger{color:var(--color-danger)}.dropdown__item--danger:hover{background:#ef444414}.dropdown__divider{border-top:1px solid var(--color-border);margin:4px 0}.dropdown__header{padding:10px 14px 6px;font-size:var(--fs-xs);color:var(--color-text-secondary);font-weight:var(--fw-medium);border-bottom:1px solid var(--color-border)}.breadcrumb{display:flex;align-items:center;gap:4px;font-size:var(--fs-sm)}.breadcrumb__item{color:var(--color-text-secondary)}.breadcrumb__item:last-child{color:var(--color-text-primary);font-weight:var(--fw-medium)}.breadcrumb__sep{color:var(--color-border);display:flex}.table-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.table-toolbar .search-box{position:relative;flex:1;min-width:200px}.table-toolbar .search-box .search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--color-text-secondary);display:flex;pointer-events:none}.table-toolbar .search-box input{width:100%;background:var(--color-bg-elevated);border:1px solid var(--color-border);color:var(--color-text-primary);border-radius:var(--radius);padding:8px 12px 8px 34px;font-size:var(--fs-md);font-family:inherit;transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}.table-toolbar .search-box input:focus{outline:none;border-color:var(--color-accent-blue);box-shadow:0 0 0 3px #3b82f61f}.table-toolbar .search-box input::placeholder{color:var(--color-text-secondary)}.table-toolbar .search-box .clear-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--color-text-secondary);cursor:pointer;display:flex;padding:2px;border-radius:var(--radius-sm)}.table-toolbar .search-box .clear-btn:hover{color:var(--color-text-primary)}.pagination{display:flex;align-items:center;gap:4px;margin-top:16px;padding-top:16px;border-top:1px solid var(--color-border);justify-content:flex-end}.pagination__info{font-size:var(--fs-xs);color:var(--color-text-secondary);margin-right:auto}.pagination__btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-bg-elevated);color:var(--color-text-secondary);font-size:var(--fs-sm);cursor:pointer;transition:all var(--dur-fast)}.pagination__btn:hover:not(:disabled){border-color:var(--color-accent-blue);color:var(--color-accent-blue)}.pagination__btn.active{background:var(--color-accent-blue);border-color:var(--color-accent-blue);color:#fff;font-weight:var(--fw-semibold)}.pagination__btn:disabled{opacity:.4;cursor:not-allowed}.text-secondary{color:var(--color-text-secondary)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-primary{color:var(--color-accent-blue)}.text-muted{color:var(--color-text-secondary);opacity:.6}.text-sm{font-size:var(--fs-sm)}.text-xs{font-size:var(--fs-xs)}.text-lg{font-size:var(--fs-lg)}.fw-medium{font-weight:var(--fw-medium)}.fw-semibold{font-weight:var(--fw-semibold)}.fw-bold{font-weight:var(--fw-bold)}.mt-1{margin-top:var(--space-2)}.mt-2{margin-top:var(--space-4)}.mt-3{margin-top:var(--space-6)}.mt-4{margin-top:var(--space-8)}.mb-1{margin-bottom:var(--space-2)}.mb-2{margin-bottom:var(--space-4)}.mb-3{margin-bottom:var(--space-6)}.p-0{padding:0}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.flex-1{flex:1}.flex-wrap{flex-wrap:wrap}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.grid{display:grid}.w-full{width:100%}.h-full{height:100%}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.error-msg{font-size:var(--fs-xs);color:var(--color-danger);margin-top:4px;display:flex;align-items:center;gap:4px}.section-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-secondary);padding:0 0 8px}.toast-stack{position:fixed;top:24px;right:24px;z-index:var(--z-toast);display:flex;flex-direction:column;gap:10px;width:360px;max-width:calc(100vw - 48px);pointer-events:none}.toast{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);pointer-events:all;position:relative;overflow:hidden}.toast__icon{display:flex;flex-shrink:0;margin-top:1px}.toast__body{flex:1;min-width:0}.toast__title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-text-primary);line-height:1.3}.toast__message{font-size:var(--fs-sm);color:var(--color-text-secondary);margin-top:2px;line-height:1.4}.toast__close{display:flex;background:none;border:none;cursor:pointer;color:var(--color-text-secondary);padding:2px;border-radius:var(--radius-sm);flex-shrink:0;transition:color var(--dur-fast),background var(--dur-fast);margin-top:1px}.toast__close:hover{color:var(--color-text-primary);background:var(--color-bg-hover)}.toast__progress{position:absolute;bottom:0;left:0;height:2px;animation:progressBar linear forwards;border-radius:0 0 var(--radius-lg) var(--radius-lg)}.toast--success{border-left:3px solid var(--color-success)}.toast--success .toast__icon{color:var(--color-success)}.toast--success .toast__progress{background:var(--color-success)}.toast--error{border-left:3px solid var(--color-danger)}.toast--error .toast__icon{color:var(--color-danger)}.toast--error .toast__progress{background:var(--color-danger)}.toast--warning{border-left:3px solid var(--color-warning)}.toast--warning .toast__icon{color:var(--color-warning)}.toast--warning .toast__progress{background:var(--color-warning)}.toast--info{border-left:3px solid var(--color-accent-blue)}.toast--info .toast__icon{color:var(--color-accent-blue)}.toast--info .toast__progress{background:var(--color-accent-blue)}
