@import"https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400..800&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap";.layout{min-height:100vh;display:flex;flex-direction:row}.sidebar{width:240px;min-width:240px;background:var(--sidebar-bg);display:flex;flex-direction:column;position:sticky;top:0;align-self:flex-start;max-height:100vh;overflow:hidden;transition:width .28s cubic-bezier(.4,0,.2,1),min-width .28s cubic-bezier(.4,0,.2,1);z-index:10}.sidebar.collapsed{width:0;min-width:0}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.25rem 1rem;border-bottom:1px solid var(--sidebar-border);flex-shrink:0;min-height:64px}.sidebar-brand{font-family:var(--font-display);font-size:1.125rem;font-weight:800;letter-spacing:.05em;color:#fff;white-space:nowrap;overflow:hidden;display:flex;align-items:center;gap:.5rem}.sidebar-brand:before{content:"";display:inline-block;width:8px;height:8px;background:var(--sidebar-active-accent);border-radius:2px;flex-shrink:0}.sidebar-brand a{text-decoration:none;color:inherit;letter-spacing:inherit}.sidebar-toggle{background:none;border:none;cursor:pointer;color:var(--sidebar-text);width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);flex-shrink:0;font-size:1.125rem;line-height:1;transition:background .15s ease,color .15s ease}.sidebar-toggle:hover{background:#ffffff14;color:#fff}.hamburger-btn{position:fixed;top:1rem;left:1rem;z-index:100;background:var(--surface);border:1.5px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;font-size:1.125rem;padding:.375rem .5rem;box-shadow:var(--shadow-md);color:var(--text-primary);line-height:1;transition:var(--transition-fast);display:flex}.hamburger-btn:hover{background:var(--background);border-color:var(--primary-color);color:var(--primary-color)}.sidebar-menu{display:flex;flex-direction:column;gap:2px;flex:1;overflow-y:auto;overflow-x:hidden;padding:.75rem;min-height:0}.sidebar-menu::-webkit-scrollbar{width:3px}.sidebar-menu::-webkit-scrollbar-thumb{background:#ffffff1a}.nav-link{display:flex;align-items:center;gap:.625rem;padding:.5625rem .75rem;color:var(--sidebar-text);text-decoration:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;white-space:nowrap;transition:background .15s ease,color .15s ease;position:relative;border-left:2px solid transparent}.nav-link:hover{background:#ffffff0f;color:var(--sidebar-text-hover);text-decoration:none}.nav-link.active{background:var(--sidebar-active-bg);color:var(--sidebar-active-text);font-weight:600;border-left-color:var(--sidebar-active-accent)}.sidebar-user{display:flex;flex-direction:column;gap:.75rem;padding:.875rem 1rem;border-top:1px solid var(--sidebar-user-border);margin-top:auto;flex-shrink:0;background:#00000026}.user-info{display:flex;align-items:center;gap:.625rem;min-width:0}.user-avatar{width:32px;height:32px;border-radius:var(--radius-full);background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0;letter-spacing:.03em}.user-details{display:flex;flex-direction:column;min-width:0;overflow:hidden}.user-name{font-size:var(--font-size-sm);font-weight:600;color:#ffffffe6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.user-role{font-size:11px;color:#fff6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;text-transform:capitalize}.content-area{flex:1;display:flex;flex-direction:column;min-height:100vh;min-width:0}.main-content{flex:1;padding:1.75rem 2rem;max-width:var(--container-lg);width:100%;margin:0 auto}.footer{background:var(--surface);border-top:1px solid var(--border-color);padding:.875rem 2rem;text-align:center;color:var(--text-muted);font-size:var(--font-size-xs);letter-spacing:.01em}.sidebar-backdrop{display:none}@media (max-width: 768px),(orientation: landscape) and (max-height: 500px){.sidebar{width:0;min-width:0;border-right:none;position:fixed;top:0;left:0;height:100vh;z-index:200}.sidebar:not(.collapsed){width:240px;min-width:240px;box-shadow:4px 0 24px #0000004d}.main-content{padding:4rem 1rem 1rem}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:199}}@media (max-width: 480px){.main-content{padding:3.5rem .75rem .75rem}}.login-container{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:var(--background)}.login-container:before{content:"";display:block;background:radial-gradient(ellipse at 30% 20%,rgba(13,148,136,.35) 0%,transparent 60%),radial-gradient(ellipse at 80% 80%,rgba(245,158,11,.2) 0%,transparent 55%),linear-gradient(145deg,#18181b,#0f172a)}.login-card{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:3rem 2.5rem;background:var(--surface);min-height:100vh}.login-header{text-align:center;margin-bottom:2.25rem;width:100%;max-width:380px}.login-brand-mark{display:inline-flex;align-items:center;gap:.5rem;margin-bottom:1.75rem}.login-brand-mark-dot{width:10px;height:10px;background:var(--primary-color);border-radius:2px;display:inline-block}.login-brand-name{font-family:var(--font-display);font-size:1rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--text-primary)}.login-header h1{font-family:var(--font-display);font-size:1.75rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem;letter-spacing:-.02em;line-height:1.2}.login-header p{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:var(--line-height-relaxed)}.login-form{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:380px}.login-form .form-group{display:flex;flex-direction:column;gap:.375rem}.login-form .form-group label{font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary)}.login-form .form-group input{width:100%;padding:.625rem .875rem;border:1.5px solid var(--border-color);border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--text-primary);background:var(--surface);transition:border-color .15s ease,box-shadow .15s ease}.login-form .form-group input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #0d94881f}.login-form .btn-primary{padding:.6875rem 1rem;font-size:var(--font-size-base);font-weight:700;letter-spacing:.01em;margin-top:.25rem}@media (max-width: 768px){.login-container{grid-template-columns:1fr}.login-container:before{display:none}.login-card{justify-content:flex-start;padding-top:3rem}}.dt-root{display:flex;flex-direction:column;gap:var(--spacing-3)}.dt-select-cell{width:2.5rem;text-align:center}.dt-select-cell input{cursor:pointer}.dt-row--selected{background:var(--color-primary-subtle, rgba(13, 148, 136, .08))}.dt-toolbar{display:flex;justify-content:flex-end}.dt-filter{width:16rem;max-width:100%;padding:.4375rem .875rem;font-size:var(--font-size-sm);color:var(--color-text);background-color:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-md);transition:border-color .15s ease}.dt-filter:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #0d94881f}.dt-table{width:100%;border-collapse:collapse;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}.dt-th{padding:.75rem 1rem;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);background-color:var(--color-bg-muted);border-bottom:2px solid var(--color-border);text-align:left;white-space:nowrap}.dt-td{padding:.8125rem 1rem;font-size:var(--font-size-sm);border-bottom:1px solid var(--color-border)}.dt-filter-th{padding:.4rem .75rem .55rem;background-color:var(--color-bg-muted);border-bottom:1px solid var(--color-border);font-weight:var(--font-weight-normal);text-transform:none;letter-spacing:normal}.dt-column-filter{width:100%;min-width:5rem;padding:.3rem .5rem;font-size:var(--font-size-sm);font-family:var(--font-body);color:var(--color-text);background-color:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color .15s ease}.dt-column-filter:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #0d94881f}.dt-column-filter-range{display:flex;gap:.35rem}.dt-column-filter-range .dt-column-filter{min-width:3.5rem}.dt-row{transition:background .12s ease}.dt-row:hover{background-color:var(--color-bg-muted)}.dt-row:last-child .dt-td{border-bottom:none}.dt-align-left{text-align:left}.dt-align-center{text-align:center}.dt-align-right{text-align:right}.dt-sort-button{display:inline-flex;align-items:center;gap:var(--spacing-1);padding:0;background:none;border:none;font:inherit;text-transform:inherit;letter-spacing:inherit;color:inherit;cursor:pointer}.dt-sort-indicator{font-size:.625rem;color:var(--color-primary)}.dt-empty{padding:var(--spacing-8);text-align:center;color:var(--color-text-muted)}.dt-skeleton{display:block;height:.75rem;border-radius:var(--radius-sm);background-color:var(--color-bg-inset);animation:dt-pulse 1.2s ease-in-out infinite}@keyframes dt-pulse{0%,to{opacity:1}50%{opacity:.4}}.dt-pagination{display:flex;align-items:center;justify-content:space-between;font-size:var(--font-size-sm);color:var(--color-text-muted)}.dt-pagination-controls{display:flex;align-items:center;gap:var(--spacing-3)}.dt-button{padding:.3125rem .75rem;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);background-color:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-md);transition:var(--transition-fast)}.dt-button:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.dt-button:disabled{opacity:.5;cursor:not-allowed}.tabs-navigation{display:flex;border-bottom:2px solid var(--color-border);background:var(--color-bg-muted);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.tabs-navigation::-webkit-scrollbar{height:3px}.tabs-navigation::-webkit-scrollbar-thumb{background:var(--color-border)}.tab-button{flex-shrink:0;padding:var(--spacing-3) var(--spacing-4);border:none;border-bottom:2px solid transparent;margin-bottom:-2px;background:none;color:var(--color-text-muted);font-family:var(--font-sans);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease}.tab-button:hover{color:var(--color-primary)}.tab-button.active{color:var(--color-primary);border-bottom-color:var(--color-primary);background:var(--color-surface)}.tab-content{padding:var(--spacing-5)}.tab-panel{animation:tabFadeIn .25s ease-out}@keyframes tabFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.tab-panel{animation:none}}.form-field{display:flex;flex-direction:column;gap:var(--spacing-1);margin-bottom:var(--spacing-4)}.form-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:.01em;color:var(--color-text)}.form-required{color:var(--color-danger)}.form-control{width:100%;padding:.5rem .75rem;font-family:inherit;font-size:var(--font-size-sm);color:var(--color-text);background-color:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-md);transition:border-color .15s ease,box-shadow .15s ease}.form-control:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #0d94881f}.form-control[aria-invalid=true]{border-color:var(--color-danger)}.form-control[aria-invalid=true]:focus{box-shadow:0 0 0 3px var(--color-danger-subtle)}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-muted)}.form-error{font-size:var(--font-size-xs);color:var(--color-danger)}.io-controls{display:inline-flex;align-items:center;gap:var(--spacing-2, .5rem);flex-wrap:wrap}.io-controls-error{color:var(--danger-color, #b91c1c);font-size:var(--font-size-xs)}.io-hint{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0 0 1rem;line-height:var(--line-height-normal)}.io-file-input{display:block;width:100%;font-size:var(--font-size-sm);margin-bottom:1rem}.io-preview{margin-top:1rem;display:flex;flex-direction:column;gap:.75rem}.io-stats{display:flex;flex-wrap:wrap;gap:.75rem}.io-stat{display:inline-flex;align-items:baseline;gap:.3rem;padding:.35rem .75rem;border-radius:var(--radius-md);background:var(--background);border:1px solid var(--border-color);font-size:var(--font-size-sm);color:var(--text-secondary)}.io-stat strong{font-size:var(--font-size-md);font-variant-numeric:tabular-nums;color:var(--text-primary)}.io-stat--created strong{color:var(--success-color, #16a34a)}.io-stat--updated strong{color:var(--primary-color, #2563eb)}.io-stat--skipped strong{color:var(--warning-text, #b45309)}.io-errors{background:var(--danger-light);border:1px solid rgba(220,38,38,.25);border-radius:var(--radius-md);padding:.75rem 1rem}.io-error-list{margin:.5rem 0 0;padding-left:1.1rem;font-size:var(--font-size-xs);color:var(--text-secondary);max-height:12rem;overflow-y:auto}.io-error-list li{margin-bottom:.2rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-height:90vh;display:flex;flex-direction:column;border-top:3px solid var(--primary-color);animation:slideUp .28s cubic-bezier(.34,1.56,.64,1);overflow:hidden}@keyframes slideUp{0%{opacity:0;transform:translateY(24px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-content.modal-small{width:90%;max-width:var(--modal-sm)}.modal-content.modal-medium{width:90%;max-width:var(--modal-md)}.modal-content.modal-large{width:90%;max-width:var(--modal-xl)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border-color);flex-shrink:0}.modal-header h2{font-family:var(--font-display);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary);margin:0;letter-spacing:-.01em}.modal-close{background:none;border:none;font-size:1.375rem;color:var(--text-muted);cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:var(--transition-fast);line-height:1}.modal-close:hover{background:var(--danger-light);color:var(--danger-color)}.modal-body{flex:1;overflow-y:auto;padding:1.5rem;font-size:var(--font-size-sm)}.modal-footer{display:flex;justify-content:flex-end;gap:.625rem;padding:1.125rem 1.5rem;border-top:1px solid var(--border-color);background:#f8fafc;flex-shrink:0;border-radius:0 0 var(--radius-xl) var(--radius-xl)}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.detail-section{background:var(--background);border-radius:var(--radius-md);padding:1rem;border:1px solid var(--border-color)}.detail-section.full-width{grid-column:1 / -1}.detail-section.error-section{background:var(--danger-light);border-color:#dc262640}.section-title{font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin:0 0 .875rem;padding-bottom:.5rem;border-bottom:2px solid var(--border-color)}.detail-row{display:flex;justify-content:space-between;align-items:center;padding:.5625rem 0;border-bottom:1px solid var(--border-color);gap:.75rem}.detail-row:last-child{border-bottom:none}.detail-row label{font-size:var(--font-size-xs);font-weight:600;color:var(--text-secondary);flex-shrink:0;margin-right:.75rem}.detail-value{font-size:var(--font-size-sm);color:var(--text-primary);text-align:right;font-weight:500}.detail-value.highlight{font-weight:700;color:var(--primary-color);font-size:var(--font-size-md)}.detail-value.metric{font-weight:700;font-variant-numeric:tabular-nums}.detail-value.file-name{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--success-color)}.success-text{color:var(--success-color);font-weight:700}.error-text{color:var(--danger-color);font-weight:600}.summary-text,.comments-text{font-family:var(--font-mono);font-size:var(--font-size-xs);line-height:1.65;white-space:pre-wrap;word-wrap:break-word;background:var(--surface);padding:.875rem;border-radius:var(--radius-md);border:1px solid var(--border-color);margin:0;color:var(--text-primary)}.info-section{background:var(--background);border-radius:var(--radius-md);padding:.875rem 1rem;margin-bottom:1.25rem;border:1px solid var(--border-color)}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.info-item{display:flex;flex-direction:column;gap:.25rem}.info-item.full-width{grid-column:1 / -1}.info-item label{font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted)}.info-item span{font-size:var(--font-size-sm);color:var(--text-primary);font-weight:500}.form-section{display:flex;flex-direction:column;gap:1rem}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.form-group{display:flex;flex-direction:column;gap:.375rem}.form-group.full-width{grid-column:1 / -1}.form-group label{font-size:var(--font-size-xs);font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:.03em}.form-control{padding:.5rem .75rem;border:1.5px solid var(--border-color);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-family:var(--font-body);color:var(--text-primary);background:var(--surface);transition:border-color .15s ease,box-shadow .15s ease;line-height:var(--line-height-normal)}.form-control:hover{border-color:var(--border-hover)}.form-control:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #0d94881f}.form-control:disabled{background:#f8fafc;cursor:not-allowed;opacity:.65}textarea.form-control{resize:vertical;min-height:80px}.field-error{font-size:var(--font-size-xs);color:var(--danger-color);font-weight:600}.error-message{padding:.75rem 1rem;background:var(--danger-light);border:1px solid rgba(220,38,38,.2);border-left:3px solid var(--danger-color);border-radius:var(--radius-md);color:var(--danger-text);font-size:var(--font-size-sm)}.error-message strong{font-weight:700}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.5rem 1rem;border:none;border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:var(--transition-fast);white-space:nowrap;line-height:var(--line-height-tight)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--primary-color);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 3px 8px #0d948840}.btn-success{background:var(--success-color);color:#fff}.btn-success:hover:not(:disabled){background:var(--success-dark);transform:translateY(-1px)}.status-badge{display:inline-flex;align-items:center;padding:.25rem .625rem;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em}.status-badge.success{background:var(--success-light);color:var(--success-text)}.status-badge.failed{background:var(--danger-light);color:var(--danger-text)}.status-badge.partial{background:var(--warning-light);color:var(--warning-text)}.status-badge.pending{background:var(--info-light);color:var(--info-text)}.modal-subtable{width:100%;border-collapse:collapse;font-size:var(--font-size-xs)}.modal-subtable th,.modal-subtable td{text-align:left;padding:.5rem .625rem;border-bottom:1px solid var(--border-color)}.modal-subtable th{font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.6875rem}.modal-subtable tbody tr:last-child td{border-bottom:none}.modal-empty{color:var(--text-muted);font-size:var(--font-size-sm);padding:.5rem 0}@media (max-width: 768px){.detail-grid,.info-grid,.form-grid{grid-template-columns:1fr}.modal-content{width:95%;max-height:95vh;border-radius:var(--radius-lg)}.modal-header,.modal-body,.modal-footer{padding:1rem}}.catalog-page{display:flex;flex-direction:column;gap:var(--spacing-4)}.catalog-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-4)}.catalog-header-actions{display:inline-flex;align-items:center;gap:var(--spacing-3);flex-wrap:wrap}.catalog-error{color:var(--color-danger, #b91c1c)}.catalog-row-actions{display:inline-flex;gap:var(--spacing-3);white-space:nowrap}.catalog-row-action{background:none;border:none;padding:0;color:var(--color-primary, #2563eb);cursor:pointer;font:inherit;text-decoration:none}.catalog-row-action:hover{text-decoration:underline}.catalog-row-action--danger{color:var(--color-danger, #b91c1c)}.form-checkbox{display:inline-flex;align-items:center;gap:var(--spacing-2);margin-top:var(--spacing-2)}.part-status{display:inline-block;padding:var(--spacing-1) var(--spacing-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-full);background:var(--color-bg-inset);color:var(--color-text-muted)}.part-status--active{background:var(--color-success-subtle);color:var(--color-success)}.part-status--new{background:var(--color-info-subtle);color:var(--color-info)}.part-status--pending_approval,.part-status--pending_info{background:var(--color-warning-subtle);color:var(--color-warning)}.part-status--rejected{background:var(--color-danger-subtle);color:var(--color-danger)}.part-status--inactive{background:var(--color-bg-inset);color:var(--color-text-muted)}.part-page{--color-primary: #0d9488;--color-primary-hover: #0f766e;--color-primary-active: #115e59;--color-primary-subtle: #ccfbf1;max-width:880px}.part-page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-4);margin-bottom:var(--spacing-4)}.part-page-heading{display:flex;align-items:center;gap:var(--spacing-3)}.part-page-heading h1{margin:0;font-size:var(--font-size-xl)}.part-page-back{display:inline-block;margin-bottom:var(--spacing-3);color:var(--color-primary);font-size:var(--font-size-sm);text-decoration:none}.part-page-back:hover{text-decoration:underline}.part-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--spacing-4);margin:0}.detail-item{display:flex;flex-direction:column;gap:var(--spacing-1)}.detail-item dt{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted)}.detail-item dd{margin:0;font-size:var(--font-size-sm);color:var(--color-text)}.detail-item dd.mono{font-family:var(--font-mono)}.detail-empty{color:var(--color-text-muted);font-size:var(--font-size-sm)}.detail-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.detail-table th,.detail-table td{text-align:left;padding:var(--spacing-2) var(--spacing-3);border-bottom:1px solid var(--color-border-muted)}.detail-table th{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--spacing-4)}.form-actions{display:flex;justify-content:flex-end;gap:var(--spacing-3);padding:var(--spacing-4) var(--spacing-5);border-top:1px solid var(--color-border);background:var(--color-bg-muted)}.part-button{display:inline-flex;align-items:center;padding:var(--spacing-2) var(--spacing-5);border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer}.part-button--primary{background:var(--color-primary);color:var(--color-text-on-primary)}.part-button--primary:hover{background:var(--color-primary-hover)}.part-button--primary:disabled{opacity:.6;cursor:not-allowed}.part-button--secondary{background:var(--color-surface);border-color:var(--color-border);color:var(--color-text);text-decoration:none}.part-button--secondary:hover{background:var(--color-bg-muted)}.part-form-error{margin:0;padding:var(--spacing-3) var(--spacing-5);background:var(--color-danger-subtle);color:var(--color-danger);font-size:var(--font-size-sm)}.part-page-message{padding:var(--spacing-5);color:var(--color-text-muted)}.part-header-actions{display:flex;gap:var(--spacing-2);flex-shrink:0}.part-button--danger{background:var(--color-danger);color:#fff}.part-button--danger:hover{background:var(--danger-dark)}.part-button--sm{padding:.3125rem .75rem;font-size:var(--font-size-xs)}.part-confirm{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-3);flex-wrap:wrap;margin-bottom:var(--spacing-4);padding:var(--spacing-3) var(--spacing-4);background:var(--color-danger-subtle);border:1px solid var(--color-danger);border-radius:var(--radius-md);color:var(--danger-text);font-size:var(--font-size-sm)}.part-confirm-actions{display:flex;gap:var(--spacing-2)}.spec-editor{font-family:var(--font-mono);min-height:9rem;resize:vertical}.detail-markdown{margin:0;white-space:pre-wrap;font-family:inherit;line-height:1.5}.part-row-actions{display:inline-flex;gap:var(--spacing-3);white-space:nowrap}.part-row-action{background:none;border:none;padding:0;font:inherit;color:var(--color-primary);cursor:pointer}.part-row-action:hover{text-decoration:underline}.part-row-action--danger{color:var(--color-danger)}.part-suppliers{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-4) var(--spacing-5);margin-top:var(--spacing-4)}.part-suppliers-title{margin:0 0 var(--spacing-3);font-size:var(--font-size-md)}.part-suppliers-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.part-suppliers-table th,.part-suppliers-table td{text-align:left;padding:var(--spacing-2);border-bottom:1px solid var(--color-border-muted);vertical-align:middle}.part-suppliers-table th{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.part-suppliers-table input{width:100%;padding:var(--spacing-1) var(--spacing-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);font:inherit}.part-suppliers-table input[type=checkbox]{width:auto}.part-suppliers-empty{color:var(--color-text-muted);text-align:center;padding:var(--spacing-4)}.part-suppliers-actions{display:flex;gap:var(--spacing-3);white-space:nowrap}.part-suppliers-add{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-2);margin-top:var(--spacing-3)}.part-suppliers-add select,.part-suppliers-add input{padding:var(--spacing-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);font:inherit}.part-suppliers-primary{display:inline-flex;align-items:center;gap:var(--spacing-1);font-size:var(--font-size-sm)}.part-search-panel{padding:var(--spacing-4);margin-bottom:var(--spacing-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.part-search-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:var(--spacing-3)}.part-search-field{display:flex;flex-direction:column;gap:.3rem}.part-search-field span{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted)}.part-search-actions{display:flex;gap:var(--spacing-2);margin-top:var(--spacing-4)}.parts-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-4)}.parts-header h1{margin:0;font-size:var(--font-size-xl)}.parts-header-actions{display:inline-flex;align-items:center;gap:var(--spacing-3);flex-wrap:wrap}.parts-new-button{display:inline-flex;align-items:center;padding:var(--spacing-2) var(--spacing-4);background:var(--color-primary);color:var(--color-text-on-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);text-decoration:none}.parts-new-button:hover{background:var(--color-primary-hover)}.part-link{color:var(--color-primary);font-family:var(--font-mono);font-size:var(--font-size-sm);text-decoration:none;background:none;border:none;padding:0;cursor:pointer}.part-link:hover{text-decoration:underline}.parts-tabs{display:flex;flex-wrap:wrap;gap:var(--spacing-1);margin-bottom:var(--spacing-4);border-bottom:1px solid var(--color-border)}.parts-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;border-bottom:2px solid transparent;padding:var(--spacing-2) var(--spacing-3);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);cursor:pointer;transition:var(--transition-fast)}.parts-tab:hover{color:var(--color-text)}.parts-tab--active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.parts-error{padding:var(--spacing-4);background:var(--color-danger-subtle);color:var(--color-danger);border-radius:var(--radius-md)}.parts-selection-bar{display:flex;align-items:center;gap:var(--spacing-3);flex-wrap:wrap;padding:var(--spacing-2) var(--spacing-4);margin-bottom:var(--spacing-3);background:var(--color-primary-subtle, rgba(13, 148, 136, .08));border:1px solid var(--color-border);border-radius:var(--radius-md)}.parts-selection-count{font-weight:var(--font-weight-medium);font-size:var(--font-size-sm)}.parts-selection-prompt{font-size:var(--font-size-sm);color:var(--color-text-muted)}.supplier-status,.supplier-stage{display:inline-block;padding:var(--spacing-1) var(--spacing-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-full);background:var(--color-bg-inset);color:var(--color-text-muted)}.supplier-status--active{background:var(--color-success-subtle);color:var(--color-success)}.supplier-status--new{background:var(--color-info-subtle);color:var(--color-info)}.supplier-status--pending_approval,.supplier-status--pending_info{background:var(--color-warning-subtle);color:var(--color-warning)}.supplier-status--rejected{background:var(--color-danger-subtle);color:var(--color-danger)}.supplier-status--inactive{background:var(--color-bg-inset);color:var(--color-text-muted)}.supplier-stage--supplier_approved{background:var(--color-success-subtle);color:var(--color-success)}.supplier-stage--supplier_rejected{background:var(--color-danger-subtle);color:var(--color-danger)}.supplier-stage--pending_approval{background:var(--color-warning-subtle);color:var(--color-warning)}.suppliers-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-4)}.suppliers-header h1{margin:0;font-size:var(--font-size-xl)}.suppliers-header-actions{display:inline-flex;align-items:center;gap:var(--spacing-3);flex-wrap:wrap}.suppliers-new-button{display:inline-flex;align-items:center;padding:var(--spacing-2) var(--spacing-4);background:var(--color-primary);color:var(--color-text-on-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);text-decoration:none}.suppliers-new-button:hover{background:var(--color-primary-hover)}.supplier-link{color:var(--color-primary);font-family:var(--font-mono);font-size:var(--font-size-sm);text-decoration:none;background:none;border:none;padding:0;cursor:pointer}.supplier-link:hover{text-decoration:underline}.suppliers-tabs{display:flex;flex-wrap:wrap;gap:var(--spacing-1);margin-bottom:var(--spacing-4);border-bottom:1px solid var(--color-border)}.suppliers-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;border-bottom:2px solid transparent;padding:var(--spacing-2) var(--spacing-3);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);cursor:pointer;transition:var(--transition-fast)}.suppliers-tab:hover{color:var(--color-text)}.suppliers-tab--active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.suppliers-error{padding:var(--spacing-4);background:var(--color-danger-subtle);color:var(--color-danger);border-radius:var(--radius-md)}.suppliers-selection-bar{display:flex;align-items:center;gap:var(--spacing-3);flex-wrap:wrap;padding:var(--spacing-2) var(--spacing-4);margin-bottom:var(--spacing-3);background:var(--color-primary-subtle, rgba(13, 148, 136, .08));border:1px solid var(--color-border);border-radius:var(--radius-md)}.suppliers-selection-count{font-weight:var(--font-weight-medium);font-size:var(--font-size-sm)}.suppliers-selection-prompt{font-size:var(--font-size-sm);color:var(--color-text-muted)}.supplier-row-actions{display:inline-flex;gap:var(--spacing-3);white-space:nowrap}.supplier-row-action{background:none;border:none;padding:0;font:inherit;color:var(--color-primary);cursor:pointer;text-decoration:none}.supplier-row-action:hover{text-decoration:underline}.supplier-row-action--danger{color:var(--color-danger)}.supplier-page{max-width:960px}.supplier-page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-4);margin-bottom:var(--spacing-4)}.supplier-page-header h1{margin:0;font-size:var(--font-size-xl)}.supplier-page-back{display:inline-block;margin-bottom:var(--spacing-3);color:var(--color-primary);font-size:var(--font-size-sm);text-decoration:none}.supplier-page-back:hover{text-decoration:underline}.supplier-form-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-4) var(--spacing-5);margin-bottom:var(--spacing-4)}.supplier-form-section h2{margin:0 0 var(--spacing-3);font-size:var(--font-size-md)}.supplier-form-hint{margin:0 0 var(--spacing-3);color:var(--color-text-muted);font-size:var(--font-size-sm)}.supplier-form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--spacing-4)}.supplier-form-actions{display:flex;justify-content:flex-end;gap:var(--spacing-3);margin-top:var(--spacing-4)}.supplier-form-error{margin:0 0 var(--spacing-4);padding:var(--spacing-3) var(--spacing-4);background:var(--color-danger-subtle);color:var(--color-danger);border-radius:var(--radius-md);font-size:var(--font-size-sm);white-space:pre-wrap}.supplier-page-message{padding:var(--spacing-5);color:var(--color-text-muted)}.supplier-info-banner{margin-bottom:var(--spacing-4);padding:var(--spacing-3) var(--spacing-4);background:var(--color-info-subtle);color:var(--color-info);border:1px solid var(--color-info);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.supplier-info-banner ul{margin:var(--spacing-2) 0 0;padding-left:var(--spacing-5)}.supplier-info-banner li{margin:var(--spacing-1) 0}.supplier-subform{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.supplier-subform th,.supplier-subform td{text-align:left;padding:var(--spacing-2);border-bottom:1px solid var(--color-border-muted)}.supplier-subform th{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.supplier-subform input,.supplier-subform select{width:100%;padding:var(--spacing-1) var(--spacing-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);font:inherit}.supplier-subform-add{margin-top:var(--spacing-2)}:root{--primary-color: #0d9488;--primary-dark: #0f766e;--primary-hover: #0f766e;--primary-light: #ccfbf1;--primary-muted: rgba(13, 148, 136, .08);--secondary-color: #64748b;--secondary-dark: #475569;--sidebar-bg: #18181b;--sidebar-border: rgba(255, 255, 255, .06);--sidebar-text: rgba(255, 255, 255, .55);--sidebar-text-hover: rgba(255, 255, 255, .9);--sidebar-active-text: #ffffff;--sidebar-active-bg: rgba(245, 158, 11, .12);--sidebar-active-accent: #f59e0b;--sidebar-user-border: rgba(255, 255, 255, .08);--success-color: #16a34a;--success-dark: #15803d;--success-light: #dcfce7;--success-text: #14532d;--danger-color: #dc2626;--danger-dark: #b91c1c;--danger-light: #fee2e2;--danger-text: #991b1b;--warning-color: #d97706;--warning-dark: #b45309;--warning-light: #fef3c7;--warning-text: #92400e;--info-color: #2563eb;--info-dark: #1d4ed8;--info-light: #dbeafe;--info-text: #1e40af;--background: #f1f5f9;--surface: #ffffff;--surface-raised: #ffffff;--border-color: #e2e8f0;--border-hover: #cbd5e1;--text-primary: #0f172a;--text-secondary: #64748b;--text-muted: #94a3b8;--font-display: "Bricolage Grotesque", "Plus Jakarta Sans", system-ui, sans-serif;--font-body: "Plus Jakarta Sans", system-ui, sans-serif;--radius-xl: 16px;--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .04);--shadow: 0 1px 3px 0 rgb(0 0 0 / .08), 0 1px 2px -1px rgb(0 0 0 / .06);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .08);--transition-fast: all .15s ease;--transition-normal: all .25s ease;--transition-slow: all .35s ease;--container-sm: 800px;--container-md: 1200px;--container-lg: 1600px;--modal-sm: 480px;--modal-md: 640px;--modal-xl: 920px;--font-size-md: 15px;--color-primary: #0d9488;--color-primary-hover: #0f766e;--color-primary-active: #115e59;--color-primary-subtle: #ccfbf1;--color-success: #16a34a;--color-success-subtle: #dcfce7;--color-warning: #d97706;--color-warning-subtle: #fef3c7;--color-danger: #dc2626;--color-danger-subtle: #fee2e2;--color-info: #2563eb;--color-info-subtle: #dbeafe;--color-bg: #f1f5f9;--color-bg-muted: #f8fafc;--color-bg-inset: #f1f5f9;--color-surface: #ffffff;--color-border: #e2e8f0;--color-border-muted: #eef2f6;--color-text: #0f172a;--color-text-muted: #64748b;--color-text-subtle: #94a3b8;--color-text-on-primary: #ffffff;--spacing-0: 0;--spacing-1: .25rem;--spacing-2: .5rem;--spacing-3: .75rem;--spacing-4: 1rem;--spacing-5: 1.5rem;--spacing-6: 2rem;--spacing-8: 3rem;--spacing-10: 4rem;--font-sans: "Plus Jakarta Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "Courier New", monospace;--font-size-xs: 12px;--font-size-sm: 13px;--font-size-base: 14px;--font-size-lg: 18px;--font-size-xl: 22px;--font-size-2xl: 28px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px;--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .08), 0 1px 2px -1px rgb(0 0 0 / .06);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .08), 0 2px 4px -2px rgb(0 0 0 / .06);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .08), 0 4px 6px -4px rgb(0 0 0 / .06);--z-base: 1;--z-sticky: 100;--z-overlay: 1000;--z-modal: 1100;--z-toast: 1200;--layout-sidebar-width: 240px;--layout-header-height: 56px;--layout-content-max-width: 1600px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-body);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--text-primary);background-color:var(--background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0;font-family:var(--font-display);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);letter-spacing:-.02em;color:var(--text-primary)}h1{font-size:var(--font-size-2xl)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}p{margin:0}a{color:var(--primary-color);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer}code,pre{font-family:var(--font-mono)}:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.5rem 1rem;border:none;border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:600;line-height:var(--line-height-tight);cursor:pointer;text-decoration:none;white-space:nowrap;transition:var(--transition-fast);outline:none}.btn:focus-visible{box-shadow:0 0 0 3px #0d94884d}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--primary-color);color:#fff;box-shadow:0 1px 2px #0d948840}.btn-primary:hover:not(:disabled){background:var(--primary-dark);box-shadow:0 4px 8px #0d94884d;transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:var(--secondary-color);color:#fff}.btn-secondary:hover:not(:disabled){background:var(--secondary-dark);transform:translateY(-1px)}.btn-danger{background:var(--danger-color);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-dark);transform:translateY(-1px)}.btn-link{background:none;color:var(--primary-color);padding:.375rem .5rem;text-decoration:underline;text-underline-offset:2px}.btn-link:hover{color:var(--primary-dark)}.btn-sm{padding:.3125rem .75rem;font-size:var(--font-size-xs)}.btn-lg{padding:.75rem 1.5rem;font-size:var(--font-size-md, 15px)}.btn-block{width:100%}.badge{display:inline-flex;align-items:center;padding:.1875rem .625rem;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:700;letter-spacing:.03em}.badge-success{background:var(--success-light);color:var(--success-text)}.badge-warning{background:var(--warning-light);color:var(--warning-text)}.badge-info{background:var(--info-light);color:var(--info-text)}.badge-danger{background:var(--danger-light);color:var(--danger-text)}.status-badge{display:inline-flex;align-items:center;padding:.25rem .625rem;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase}.status-badge.active{background:var(--success-light);color:var(--success-text)}.status-badge.inactive{background:var(--danger-light);color:var(--danger-text)}.alert{padding:.75rem 1rem;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;margin-bottom:1rem;border-left:3px solid}.alert-error{background:var(--danger-light);color:var(--danger-text);border-color:var(--danger-color)}.alert-success{background:var(--success-light);color:var(--success-text);border-color:var(--success-color)}.alert-warning{background:var(--warning-light);color:var(--warning-text);border-color:var(--warning-color)}.alert-info{background:var(--info-light);color:var(--info-text);border-color:var(--info-color)}.loading{display:flex;align-items:center;justify-content:center;gap:.625rem;min-height:50vh;font-size:var(--font-size-base);color:var(--text-muted)}.loading:before{content:"";width:20px;height:20px;border:2.5px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}::selection{background:#0d948826;color:var(--text-primary)}
