:root{--color-brand-coral: #e4816b;--color-brand-teal: #54948c;--color-brand-orange: #ffab41;--color-brand-yellow-soft: #f9edc1;--color-page: #f5f3ed;--color-surface: #ffffff;--color-surface-muted: #f5f5f5;--color-surface-subtle: #f2f2f2;--color-surface-strong: #e8e8e8;--color-sidebar: #faf9f5;--color-text: #1d1d1d;--color-text-secondary: #4d4d4d;--color-text-muted: #949494;--color-text-inverse: #ffffff;--color-border: #dddddd;--color-border-strong: #cccccc;--color-border-muted: rgba(29, 29, 29, .15);--color-action-primary: #1d1d1d;--color-selection: #54948c;--color-warning: #ffab41;--color-error: #f04f36;--color-info-soft: #f9edc1;--color-overlay: rgba(0, 0, 0, .5);--color-text-80: rgba(29, 29, 29, .8);--color-text-50: rgba(29, 29, 29, .5);--color-outline-30: rgba(128, 128, 128, .3);--color-outline-20: rgba(128, 128, 128, .2);--color-outline-16: rgba(128, 128, 128, .16);--color-teal-soft: rgba(84, 148, 140, .14);--color-coral-soft: rgba(228, 129, 107, .16);--color-error-soft: rgba(240, 79, 54, .14);--font-ui: "Nunito Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-heading: "Montserrat", "Nunito Sans", system-ui, sans-serif;--text-xs: .75rem;--text-sm: .8125rem;--text-md: .9375rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--leading-tight: 1.25;--leading-body: 1.45;--sidebar-width: 248px;--sidebar-rail: 72px;--topbar-height: 3.5rem;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--control-height: 2.35rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--shadow: 0 10px 28px rgba(29, 29, 29, .05);--shadow-soft: 0 1px 0 var(--color-border-muted);--ease-out: cubic-bezier(.16, 1, .3, 1);--duration: .18s}*{box-sizing:border-box}html{height:100%}body,#root{min-height:100%}body{margin:0;background:var(--color-page);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-md);line-height:var(--leading-body);overflow-x:hidden}h1,h2,h3,.brand{font-family:var(--font-heading);letter-spacing:-.02em}h1,h2,h3,p{margin:0}h1{font-size:var(--text-2xl);font-weight:700;line-height:var(--leading-tight)}h2{font-size:var(--text-lg);font-weight:700;line-height:var(--leading-tight)}a{color:var(--color-selection)}img{max-width:100%;display:block}button,input,select,textarea{font-family:inherit;font-size:inherit}::selection{background:var(--color-teal-soft)}.app-shell{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;min-height:100dvh}.sidebar{display:flex;flex-direction:column;gap:var(--space-6);position:sticky;top:0;align-self:start;width:var(--sidebar-width);height:100dvh;max-height:100dvh;min-height:0;overflow:hidden;background:var(--color-sidebar);border-right:1px solid var(--color-border);padding:var(--space-6) var(--space-4) var(--space-5);transition:width .22s var(--ease-out),transform .22s var(--ease-out)}.icon-btn{display:inline-grid;place-items:center;width:2.25rem;height:2.25rem;border:0;border-radius:var(--radius-sm);padding:0;background:transparent;color:var(--color-text-secondary);cursor:pointer;flex-shrink:0}.icon-btn:hover{background:var(--color-surface-subtle);color:var(--color-text)}.icon-btn svg{width:1.15rem;height:1.15rem}.topbar,.sidebar-backdrop{display:none}.brand-block{display:flex;flex-direction:column;gap:.35rem;padding:0 var(--space-2);flex-shrink:0;min-width:0;width:100%}.brand-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:0;width:100%}.brand-block img{height:36px;width:auto;max-width:calc(100% - 2.75rem);min-width:0;object-fit:contain;object-position:left center}.brand-block .brand-mark{width:40px;height:40px;max-width:40px;object-position:center}.brand-kicker{color:var(--color-text-secondary);font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase}.nav-groups{display:flex;flex-direction:column;gap:var(--space-5);flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:none}.nav-groups::-webkit-scrollbar{display:none}.nav-group{display:flex;flex-direction:column;gap:.2rem}.nav-label{padding:0 var(--space-3) var(--space-1);color:var(--color-text-muted);font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.sidebar a.nav-link{display:flex;align-items:center;gap:.65rem;text-decoration:none;color:var(--color-text-secondary);padding:.48rem .7rem;border-radius:var(--radius-sm);transition:background-color var(--duration) var(--ease-out),color var(--duration) var(--ease-out)}.sidebar a.nav-link:hover{background:var(--color-surface-subtle);color:var(--color-text)}.sidebar a.nav-link.active{background:var(--color-teal-soft);color:var(--color-text);font-weight:700}.sidebar a.nav-link.active svg{color:var(--color-selection)}.nav-icon{width:1.05rem;height:1.05rem;flex-shrink:0}.app-shell.is-collapsed .sidebar{width:var(--sidebar-rail);padding-inline:.55rem;align-items:center}.app-shell.is-collapsed .brand-block{align-items:center;padding:0}.app-shell.is-collapsed .brand-row{flex-direction:column;gap:.75rem}.app-shell.is-collapsed .sidebar-toggle{order:-1}.app-shell.is-collapsed .brand-kicker,.app-shell.is-collapsed .nav-text,.app-shell.is-collapsed .user-meta{display:none}.app-shell.is-collapsed .nav-groups,.app-shell.is-collapsed .nav-group,.app-shell.is-collapsed .sidebar-footer{width:100%;align-items:center}.app-shell.is-collapsed .nav-label{width:1.5rem;height:1px;margin:.35rem 0;padding:0;overflow:hidden;background:var(--color-border);color:transparent;font-size:0}.app-shell.is-collapsed .sidebar a.nav-link{justify-content:center;width:2.5rem;height:2.5rem;padding:0}.app-shell.is-collapsed .user-chip{justify-content:center;width:2.5rem;margin:0;padding:.25rem}.app-shell.is-collapsed .sidebar-footer .btn{width:2.5rem;padding-inline:0}.sidebar-footer{display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border);flex-shrink:0}.user-chip{display:flex;align-items:center;gap:.7rem;min-width:0;text-decoration:none;color:inherit;border-radius:var(--radius-sm);padding:.4rem .5rem;margin:-.4rem -.5rem;transition:background-color var(--duration) var(--ease-out)}a.user-chip:hover,a.user-chip.active{background:var(--color-teal-soft)}.user-avatar{width:2rem;height:2rem;border-radius:999px;background:var(--color-brand-coral);color:var(--color-text);display:grid;place-items:center;font-size:var(--text-xs);font-weight:700;flex-shrink:0}.user-meta{min-width:0}.user-meta strong,.user-meta span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-meta span{color:var(--color-text-muted);font-size:var(--text-xs)}.main{display:flex;flex-direction:column;padding:var(--space-8) var(--space-10) var(--space-6);min-width:0;min-height:100dvh}.page{display:flex;flex-direction:column;gap:var(--space-6);min-width:0;max-width:100%}.page-body{min-width:0;max-width:100%;display:flex;flex-direction:column;gap:var(--space-6);padding:6px 6px 1.5rem}.page-header{display:flex;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:var(--space-4);flex-wrap:wrap}.page-header .lede{margin-top:.4rem;color:var(--color-text-secondary);max-width:62ch}.page-actions{display:flex;gap:.65rem;flex-wrap:wrap;align-items:center}.page-tabs{display:flex;flex-shrink:0;gap:.25rem;min-width:0;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--color-border);-webkit-overflow-scrolling:touch}.page-tabs::-webkit-scrollbar{display:none}.page-tab{display:inline-flex;align-items:center;gap:.4rem;flex-shrink:0;text-decoration:none;color:var(--color-text-secondary);font-weight:650;padding:.55rem .85rem;border-bottom:2px solid transparent;margin-bottom:-1px}.page-tab:hover{color:var(--color-text)}.page-tab.active{color:var(--color-text);font-weight:700;border-bottom-color:var(--color-selection)}.tab-alert{display:inline-flex;align-items:center;gap:.2rem;color:var(--color-error);font-size:var(--text-xs);font-weight:700}.tab-alert svg{width:.95rem;height:.95rem}.action-menu{display:inline-flex}.action-menu-menu{position:fixed;z-index:60;min-width:12.5rem;margin:0;padding:.35rem;list-style:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 18px 40px #1d1d1d1f}.action-menu-item{display:flex;align-items:center;width:100%;border:0;border-radius:6px;padding:.55rem .7rem;background:transparent;color:var(--color-text);font-weight:600;text-align:left;cursor:pointer}.action-menu-item:hover{background:var(--color-teal-soft)}.action-menu-item.is-danger{color:var(--color-error)}.action-menu-item.is-danger:hover{background:var(--color-error-soft)}.action-menu-item:disabled{opacity:.45;cursor:not-allowed}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:var(--control-height);border:1px solid transparent;border-radius:var(--radius-sm);padding:.45rem .9rem;font-weight:700;cursor:pointer;text-decoration:none;transition:background-color var(--duration) var(--ease-out),border-color var(--duration) var(--ease-out),opacity var(--duration) var(--ease-out),transform var(--duration) var(--ease-out)}.btn svg{width:1rem;height:1rem}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled,.btn[aria-busy=true]{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--color-action-primary);color:var(--color-text-inverse)}.btn-primary:hover{background:#2a2a2a}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover{background:var(--color-surface-muted)}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover{background:var(--color-surface-subtle);color:var(--color-text)}.btn-accent{background:var(--color-brand-coral);color:var(--color-text)}.btn-accent:hover{background:#d8735d}.btn-danger{background:var(--color-error-soft);color:var(--color-text);border-color:transparent}.btn-danger:hover{background:#f04f3638}.btn-sm{min-height:1.9rem;padding:.2rem .65rem;font-size:var(--text-sm);font-weight:600}.field{display:flex;flex-direction:column;gap:.35rem;min-width:0}.secret-input{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.45rem;align-items:center}.secret-cell{display:inline-flex;align-items:center;gap:.25rem}.secret-cell code{font-size:var(--text-sm)}.field-label{font-size:var(--text-sm);font-weight:600;color:var(--color-text-secondary)}.field-help{font-size:var(--text-xs);color:var(--color-text-muted)}.field-error{font-size:var(--text-xs);font-weight:600;color:var(--color-error)}.field.has-error .input,.field.has-error .select,.field.has-error textarea.input,.field.has-error .input:hover,.field.has-error .select:hover{border-color:var(--color-error)}.field.has-error .input:focus-visible,.field.has-error .select:focus-visible,.field.has-error textarea.input:focus-visible{outline-color:var(--color-error);box-shadow:0 0 0 3px var(--color-error-soft)}.field.is-attention .field-label{color:var(--color-text)}.field.is-attention .input,.field.is-attention .select,.field.is-attention textarea.input{border-color:var(--color-text);background:var(--color-brand-yellow-soft)}.field.is-attention .input:focus-visible,.field.is-attention .select:focus-visible,.field.is-attention textarea.input:focus-visible{outline-color:var(--color-text);box-shadow:0 0 0 3px var(--color-brand-yellow-soft)}.input,.select,textarea.input{width:100%;min-height:var(--control-height);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.4rem .7rem;background:var(--color-surface);color:var(--color-text);transition:border-color var(--duration) var(--ease-out),box-shadow var(--duration) var(--ease-out)}.input:hover,.select:hover{border-color:var(--color-border-strong)}.search{display:flex;align-items:center;gap:.5rem;width:24rem;max-width:100%;flex:0 1 24rem;min-height:var(--control-height);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 .75rem;background:var(--color-surface)}.search input{border:0;outline:none;width:100%;background:transparent;min-height:2rem}.search svg{color:var(--color-text-muted);width:1rem;height:1rem}.check{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--text-sm);font-weight:600}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);min-width:0;max-width:100%}.panel-body{padding:var(--space-5)}.table-wrap{overflow:auto;min-width:0;max-width:100%;-webkit-overflow-scrolling:touch}table.data{width:100%;border-collapse:collapse}table.data th,table.data td{text-align:left;padding:.78rem 1rem;border-bottom:1px solid var(--color-border);font-size:var(--text-sm);white-space:nowrap}table.data th.center,table.data td.center{text-align:center}table.data th{color:var(--color-text-secondary);font-weight:700;background:var(--color-surface-muted);position:sticky;top:0}table.data tbody tr{transition:background-color var(--duration) var(--ease-out)}table.data tbody tr:hover{background:var(--color-page)}table.data tbody tr.clickable{cursor:pointer}table.data td.wrap{white-space:normal;max-width:22rem}.table-count{margin:0 0 .55rem;font-size:var(--text-sm);font-weight:700;color:var(--color-text-secondary)}.select-all-note{display:flex;flex-wrap:wrap;align-items:center;gap:.15rem .35rem;margin:0;font-size:var(--text-sm);color:var(--color-text-secondary)}.table-footer{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding:.7rem 1rem;color:var(--color-text-secondary);font-size:var(--text-sm)}.badge{display:inline-flex;align-items:center;gap:.35rem;border-radius:999px;padding:.18rem .55rem;font-size:.75rem;font-weight:700;background:var(--color-surface-muted);color:var(--color-text);text-transform:lowercase}.badge svg{width:.85rem;height:.85rem}.badge.ok{background:var(--color-teal-soft)}.badge.warn,.badge.progress{background:var(--color-brand-yellow-soft)}.badge.err{background:var(--color-error-soft)}.badge.neutral{background:var(--color-surface-strong);color:var(--color-text-secondary)}.type-capsule{display:inline-flex;align-items:center;border-radius:999px;padding:.2rem .7rem;font-size:.75rem;font-weight:700;background:var(--color-surface-strong);color:var(--color-text);white-space:nowrap}.import-status{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.import-progress{color:var(--color-text-secondary);font-size:.75rem;font-weight:600;white-space:nowrap}.import-error-list{margin:0;padding-left:1.1rem;display:flex;flex-direction:column;gap:.35rem}.kpi-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--space-3)}.kpi{padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:.45rem}.kpi .kpi-label{display:flex;align-items:center;gap:.4rem;color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:600}.kpi .kpi-label svg{width:.95rem;height:.95rem;color:var(--color-selection)}.kpi strong{font-size:1.55rem;font-weight:700;letter-spacing:-.03em}.supplier-list{display:flex;flex-direction:column;gap:var(--space-3)}.supplier-card{display:grid;grid-template-columns:minmax(0,1.2fr) repeat(4,minmax(0,1fr));gap:var(--space-4);align-items:center;padding:1.1rem 1.25rem;text-decoration:none;color:inherit;transition:border-color var(--duration) var(--ease-out),background-color var(--duration) var(--ease-out)}.supplier-card:hover{border-color:var(--color-brand-teal);background:#fcfbf8}.supplier-card h2{font-family:var(--font-ui);font-size:1.05rem}.supplier-card .code{color:var(--color-text-muted);font-size:var(--text-sm);margin-top:.15rem}.metric{display:flex;flex-direction:column;gap:.15rem}.metric span{color:var(--color-text-muted);font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase}.metric strong{font-size:1.05rem}.dash-attention{display:flex;flex-wrap:wrap;gap:.55rem}.dash-chip{display:inline-flex;align-items:baseline;gap:.45rem;padding:.45rem .75rem;border-radius:999px;background:var(--color-coral-soft);color:var(--color-text);text-decoration:none;font-size:var(--text-sm);font-weight:600}.dash-chip strong{font-size:var(--text-md)}.dash-chip:hover{background:var(--color-teal-soft)}.dash-quiet{color:var(--color-text-secondary);font-size:var(--text-sm)}.dash-facts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;padding:0;overflow:hidden}.dash-fact{padding:1rem 1.15rem 1.1rem;border-right:1px solid var(--color-border);display:flex;flex-direction:column;gap:.2rem;min-width:0}.dash-fact:last-child{border-right:0}.dash-fact span{color:var(--color-text-muted);font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase}.dash-fact strong{font-size:1.35rem;letter-spacing:-.03em}.dash-fact p{color:var(--color-text-secondary);font-size:var(--text-xs);line-height:1.35}.dash-charts{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.dash-chart{padding:1.15rem 1.2rem 1rem;display:flex;flex-direction:column;gap:.85rem}.dash-chart header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3)}.dash-chart header .muted{margin-top:.25rem}.day-chart{display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:.35rem;height:11.5rem}.day-col{display:flex;flex-direction:column;height:100%;min-width:0;gap:.3rem}.day-stack{flex:1;display:flex;flex-direction:column-reverse;background:#1d1d1d0d;border-radius:5px 5px 2px 2px;overflow:hidden;min-height:0}.day-seg{display:block;width:100%;min-height:2px}.day-col>span{font-size:.62rem;color:var(--color-text-muted);text-align:center;font-variant-numeric:tabular-nums}.chart-legend,.mix-legend{display:flex;flex-wrap:wrap;gap:.65rem 1rem;margin:0;padding:0;list-style:none;color:var(--color-text-secondary);font-size:var(--text-xs);font-weight:600}.chart-legend i,.mix-legend i{display:inline-block;width:.55rem;height:.55rem;border-radius:2px;margin-right:.35rem;vertical-align:.05rem}.mix{display:flex;flex-direction:column;gap:.55rem}.mix-bar{display:flex;height:.7rem;border-radius:999px;overflow:hidden;background:var(--color-surface-strong)}.mix-seg{display:block;height:100%;min-width:0}.mix-legend{gap:.5rem 1.1rem}.mix-legend strong{margin-left:.35rem;color:var(--color-text)}.dash-split{display:grid;grid-template-columns:minmax(16rem,.9fr) minmax(0,1.4fr);gap:var(--space-4);align-items:start}.dash-mix-panel{padding:1.15rem 1.2rem 1.2rem;display:flex;flex-direction:column;gap:.85rem}.dash-mix-panel h3{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-secondary)}.dash-dl{display:grid;grid-template-columns:1fr 1fr;gap:.65rem 1rem;margin:.25rem 0 0}.dash-dl div{display:flex;justify-content:space-between;gap:.5rem;font-size:var(--text-sm)}.dash-dl dt{color:var(--color-text-secondary)}.dash-dl dd{margin:0;font-weight:700}.dash-runs{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.dash-runs-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3)}.dash-runs-head a{font-size:var(--text-sm);font-weight:700}.spark{display:flex;align-items:flex-end;gap:2px;width:7.5rem;height:1.7rem}.spark i{flex:1;background:var(--color-brand-teal);border-radius:1px;min-height:2px}.supplier-board{display:flex;flex-direction:column;gap:.85rem;padding:1.15rem 1.25rem 1.2rem;text-decoration:none;color:inherit;transition:border-color var(--duration) var(--ease-out),background-color var(--duration) var(--ease-out)}.supplier-board:hover{border-color:var(--color-brand-teal);background:#fcfbf8}.supplier-board-head{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:var(--space-4);align-items:center}.supplier-board h2{font-family:var(--font-ui);font-size:1.05rem}.supplier-board .code{color:var(--color-text-muted);font-size:var(--text-sm);margin-top:.15rem}.coverage-line{display:flex;justify-content:space-between;gap:var(--space-3);align-items:baseline}.coverage-line span{color:var(--color-text-muted);font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-right:.5rem}.coverage-line p{color:var(--color-text-secondary);font-size:var(--text-sm)}.supplier-board-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4)}.supplier-board-grid span{display:block;color:var(--color-text-muted);font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-bottom:.2rem}.supplier-board-grid strong{display:block;font-size:var(--text-sm)}.supplier-board-grid p{color:var(--color-text-secondary);font-size:var(--text-xs);margin-top:.2rem}.toolbar{display:flex;gap:.75rem;flex-wrap:wrap;align-items:end;min-width:0;max-width:100%}.toolbar>.select,.toolbar>.menu-select{width:15rem;max-width:100%;flex:0 0 15rem}.toolbar .field{width:18rem;max-width:100%;flex:0 0 18rem}.toolbar .field .menu-select,.toolbar .field .select{width:100%;flex:none}.menu-select{position:relative}.menu-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;min-height:var(--control-height);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.4rem .7rem;background:var(--color-surface);color:var(--color-text);font-weight:600;cursor:pointer;text-align:left}.menu-select-trigger span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-select-trigger svg{width:1rem;height:1rem;color:var(--color-text-muted);flex-shrink:0}.menu-select-trigger:hover{border-color:var(--color-border-strong)}.menu-select-trigger[aria-expanded=true]{border-color:var(--color-brand-teal);box-shadow:0 0 0 3px var(--color-teal-soft)}.menu-select-menu{position:absolute;z-index:80;top:calc(100% + .4rem);left:0;right:0;margin:0;padding:.35rem;list-style:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 18px 40px #1d1d1d1f}.menu-select-option{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;border:0;border-radius:6px;padding:.55rem .7rem;background:transparent;color:var(--color-text);font-weight:600;text-align:left;cursor:pointer}.menu-select-option:hover,.menu-select-option.is-selected{background:var(--color-teal-soft)}.menu-select-option svg{width:.95rem;height:.95rem;color:var(--color-selection);flex-shrink:0}.file-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dropzone-wrap{min-width:min(100%,28rem);flex:1;position:relative}.dropzone-wrap:focus-within .dropzone{outline:3px solid var(--color-selection);outline-offset:2px}.dropzone{display:flex;align-items:center;gap:1rem;min-height:5.5rem;padding:1rem 1.15rem;border:1.5px dashed var(--color-border-strong);border-radius:var(--radius);background:var(--color-page);cursor:pointer;color:var(--color-text);transition:border-color var(--duration) var(--ease-out),background-color var(--duration) var(--ease-out)}.dropzone:hover,.dropzone.is-dragging{border-color:var(--color-brand-teal);background:var(--color-teal-soft)}.dropzone-icon{display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:999px;background:var(--color-teal-soft);color:var(--color-selection);flex-shrink:0}.dropzone-icon svg{width:1.15rem;height:1.15rem}.dropzone-copy{display:flex;flex-direction:column;gap:.15rem}.dropzone-copy span{color:var(--color-text-muted);font-size:var(--text-sm)}.dropzone-file{display:flex;align-items:center;gap:.85rem;min-height:5.5rem;padding:1rem 1.15rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.dropzone-file>svg{width:1.35rem;height:1.35rem;color:var(--color-selection);flex-shrink:0}.dropzone-file-meta{min-width:0;flex:1}.dropzone-file-meta strong,.dropzone-file-meta span{display:block}.dropzone-file-meta strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropzone-file-meta span{color:var(--color-text-muted);font-size:var(--text-sm);margin-top:.15rem}.dropzone-clear{display:grid;place-items:center;width:2rem;height:2rem;border:0;border-radius:999px;background:var(--color-surface-muted);color:var(--color-text-secondary);cursor:pointer}.dropzone-clear svg{width:1rem;height:1rem}.dropzone-clear:hover{background:var(--color-error-soft);color:var(--color-text)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:center}.empty{display:flex;flex-direction:column;align-items:flex-start;gap:.55rem;padding:2.4rem 1.5rem}.empty svg{width:1.5rem;height:1.5rem;color:var(--color-brand-coral)}.empty p{color:var(--color-text-secondary);max-width:46ch}.error{color:var(--color-error)}.muted{color:var(--color-text-secondary)}.tiny{color:var(--color-text-muted);font-size:var(--text-xs);overflow-wrap:anywhere}.tiny code{overflow-wrap:anywhere}.column-list{display:flex;flex-wrap:wrap;gap:.4rem}.column-chip{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:6px;padding:.2rem .45rem}.column-chip.required{background:var(--color-teal-soft);border-color:transparent}.lock-note{display:flex;gap:.6rem;align-items:flex-start;padding:.85rem 1rem;background:var(--color-info-soft);border-radius:var(--radius);color:var(--color-text)}.lock-note svg{width:1rem;height:1rem;margin-top:.15rem;flex-shrink:0}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:var(--space-6);background:var(--color-overlay)}.modal-dialog{width:min(42rem,100%);max-height:min(88dvh,46rem);overflow:auto;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 24px 60px #1d1d1d2e}.modal-dialog.is-wide{width:min(54rem,100%)}.modal-dialog.is-wide:has(.inventory-detail){width:min(68rem,100%)}.supplier-url-row{display:grid;grid-template-columns:minmax(8rem,11rem) 1fr auto;gap:.65rem;align-items:center}.supplier-url-row .tiny{margin-top:.15rem}.supplier-url-row .error{grid-column:1 / -1;margin:0}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3)}.modal-header .muted{margin-top:.35rem}.modal-meta{margin-top:.45rem}.modal-meta .type-capsule{white-space:normal;overflow-wrap:anywhere}.inventory-detail{display:flex;flex-direction:column;gap:var(--space-5)}.inventory-detail h3{margin:0 0 .75rem;font-size:var(--text-sm);letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-secondary)}.inventory-detail .facts{grid-template-columns:9.5rem 1fr 9.5rem 1fr}.inventory-detail .facts>div{display:contents}@media(max-width:720px){.inventory-detail .facts{grid-template-columns:9.5rem 1fr}}.inventory-detail .muted{margin:0 0 .85rem}.load-progress{display:flex;flex-direction:column;gap:.65rem}.load-progress-track{height:.7rem;overflow:hidden;border-radius:999px;background:var(--color-surface-strong)}.load-progress-bar{height:100%;width:0;border-radius:inherit;background:var(--color-brand-teal);transition:width .35s ease}.load-progress-bar.is-busy{background-image:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);background-size:45% 100%;background-repeat:no-repeat;animation:load-shimmer 1.1s linear infinite}.load-progress-bar.is-failed{background:var(--color-error)}.job-toast{position:fixed;right:1.25rem;bottom:1.25rem;z-index:70;width:min(24rem,calc(100vw - 2.5rem));display:flex;flex-direction:column;gap:.55rem;padding:.95rem 1rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 18px 48px #1d1d1d2e}.job-toast-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.job-toast-head strong{font-size:var(--text-sm)}.flash-toast-stack{position:fixed;top:1.25rem;right:1.25rem;z-index:80;display:flex;flex-direction:column;align-items:flex-end;gap:.65rem;width:min(26rem,calc(100vw - 2.5rem));pointer-events:none}.flash-toast{display:flex;align-items:center;gap:.8rem;width:100%;padding:1rem 1.25rem;background:#e5f6ee;border:1px solid #1f8a4c;border-radius:var(--radius-lg);box-shadow:0 18px 48px #145c3229;color:#145c32;font-size:var(--text-md);font-weight:700;animation:toast-in .28s ease}.flash-toast svg{width:1.45rem;height:1.45rem;flex-shrink:0;color:#1f8a4c}.flash-toast.is-leaving{animation:toast-out .32s ease forwards}@keyframes toast-in{0%{opacity:0;transform:translateY(-.75rem)}to{opacity:1;transform:none}}@keyframes toast-out{0%{opacity:1;transform:none}to{opacity:0;transform:translate(120%)}}@keyframes load-shimmer{0%{background-position:-40% 0}to{background-position:140% 0}}.modal-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.65rem;padding-top:.25rem}.facts{display:grid;grid-template-columns:9.5rem 1fr;gap:.55rem 1rem;margin:0}.facts dt{color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:700}.facts dd{margin:0;font-size:var(--text-sm);overflow-wrap:anywhere}.facts a{color:var(--color-selection);font-weight:700}.facts dd pre{margin:0;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.delete-summary{display:flex;flex-direction:column;gap:.55rem}.confirm-phrase{margin:0;padding:.75rem .9rem;border-radius:var(--radius-sm);background:var(--color-surface-strong);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;overflow-wrap:anywhere}.delete-summary h3{font-size:var(--text-sm);color:var(--color-text-secondary)}.cascade-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}.cascade-list li{display:flex;gap:.65rem;align-items:baseline;padding:.55rem .7rem;background:var(--color-error-soft);border-radius:var(--radius-sm);font-size:var(--text-sm)}.log-block{display:flex;flex-direction:column;gap:.45rem;background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.85rem 1rem;overflow:auto;max-height:22rem}.log-block pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;color:var(--color-text)}.skeleton{background:linear-gradient(90deg,var(--color-surface-subtle),var(--color-surface-strong),var(--color-surface-subtle));background-size:200% 100%;animation:shimmer 1.2s var(--ease-out) infinite;border-radius:6px;color:transparent}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.login-screen{min-height:100dvh;display:grid;place-items:center;padding:var(--space-8);background:radial-gradient(circle at 12% 18%,rgba(228,129,107,.16),transparent 36%),radial-gradient(circle at 88% 82%,rgba(84,148,140,.16),transparent 32%),var(--color-page)}.login-card{width:min(420px,100%);padding:2rem 1.75rem 1.6rem;display:flex;flex-direction:column;gap:1.25rem}.login-card img{align-self:flex-start;height:32px;width:auto;max-width:min(11.5rem,100%);object-fit:contain;object-position:left center}.login-card form{display:flex;flex-direction:column;gap:.9rem}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.search:focus-within,.menu-select-trigger:focus-visible{outline:3px solid var(--color-selection);outline-offset:2px}.search input:focus-visible{outline:none}@media(max-width:1100px){.kpi-row{grid-template-columns:repeat(3,minmax(0,1fr))}.supplier-card{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.dash-facts{grid-template-columns:repeat(3,minmax(0,1fr))}.dash-fact{border-bottom:1px solid var(--color-border)}.dash-fact:nth-child(3n){border-right:0}.dash-charts,.dash-split,.supplier-board-head{grid-template-columns:1fr}.supplier-board-grid{grid-template-columns:1fr 1fr}}@media(max-width:1023px){.app-shell{display:block}.topbar{display:flex;align-items:center;gap:.65rem;position:sticky;top:0;height:var(--topbar-height);padding:0 .65rem;background:var(--color-sidebar);border-bottom:1px solid var(--color-border);z-index:25}.topbar-mark{width:32px;height:32px;flex-shrink:0}.topbar-title{color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:700;letter-spacing:.06em;text-transform:uppercase}.topbar-avatar{margin-left:auto;width:2rem;height:2rem;border-radius:999px;background:var(--color-brand-coral);color:var(--color-text);display:grid;place-items:center;font-size:var(--text-xs);font-weight:700;text-decoration:none;flex-shrink:0}.main{min-height:0;padding:1.25rem 1.5rem 2rem}.sidebar{position:fixed;top:0;left:0;z-index:45;width:min(18.5rem,calc(100vw - 3.25rem));height:100dvh;max-height:100dvh;transform:translate(-105%);box-shadow:none}.app-shell.is-drawer-open .sidebar{transform:none;box-shadow:0 18px 48px #1d1d1d2e}.sidebar-backdrop{display:block;position:fixed;inset:0;z-index:40;border:0;padding:0;background:var(--color-overlay);cursor:pointer}body:has(.app-shell.is-drawer-open){overflow:hidden}.sidebar a.nav-link{min-height:44px}.icon-btn{width:44px;height:44px}}@media(max-width:860px){.kpi-row,.dash-facts{grid-template-columns:1fr 1fr}.dash-fact:nth-child(3n){border-right:1px solid var(--color-border)}.dash-fact:nth-child(2n){border-right:0}.hide-sm{display:none}}@media(max-width:600px){.main{padding:1rem .9rem 1.5rem}h1{font-size:var(--text-xl)}.page-header{align-items:stretch}.page-actions{width:100%}.page-actions>*{flex:1 1 auto}.page-actions .btn{width:100%}.search,.toolbar>.select,.toolbar>.menu-select,.toolbar .field{flex:1 1 100%;width:100%}table.data th,table.data td{padding:.6rem .7rem}.table-footer{flex-wrap:wrap}.select-all-note{align-items:flex-start}.dash-facts{grid-template-columns:1fr}.dash-fact,.dash-fact:nth-child(2n),.dash-fact:nth-child(3n){border-right:0}.dash-fact:last-child{border-bottom:0}.day-col:nth-child(2n)>span{visibility:hidden}.dash-dl,.supplier-card,.supplier-board-head{grid-template-columns:1fr}.supplier-board-grid{grid-template-columns:1fr 1fr}.modal-backdrop{align-items:end;padding:0}.modal-dialog,.modal-dialog.is-wide,.modal-dialog.is-wide:has(.inventory-detail){width:100%;max-height:92dvh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-4)}.facts,.inventory-detail .facts{grid-template-columns:1fr}.facts dt{margin-top:.35rem}.supplier-url-row{grid-template-columns:1fr}.flash-toast-stack{top:calc(var(--topbar-height) + .75rem);right:.75rem;left:.75rem;width:auto;align-items:stretch}.login-screen{padding:1rem;align-items:start}.login-card{width:100%;padding:1.35rem 1rem 1.2rem}}@media(max-width:400px){.main{padding:.85rem .7rem 1.25rem}.page-actions{flex-direction:column}.page-actions .btn,.page-actions>*{width:100%}}@media(pointer:coarse){.input,.select,textarea.input,.search input,.menu-select-trigger{font-size:16px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
