*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;min-height:100vh}#root{min-height:100vh}.app-shell{min-height:100vh;background-color:#e8f0f4;background-image:url(/Media/Application_Background.png);background-size:contain;background-position:center;background-repeat:no-repeat;background-attachment:fixed}.content{padding:1rem 2rem 2rem;width:90%;max-width:90vw;margin:0 auto}.app-layout{display:flex;flex-direction:column;height:100dvh;min-height:100vh;overflow:hidden}.app-layout-main{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column}.header{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-shrink:0;padding:.75rem 1.5rem;background:#ffffffe6;border-bottom:1px solid #ccc;z-index:20}.header-title{font-size:1.15rem;font-weight:600;color:#1a4a6d}.btn{padding:.5rem 1rem;border:1px solid #1e5a8c;background:#1e5a8c;color:#fff;border-radius:6px;cursor:pointer;font-size:.95rem;text-decoration:none;display:inline-block}.btn:hover{background:#16466e}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:#555;border-color:#555}.btn-secondary:hover{background:#333}.btn-danger{background:#a33;border-color:#a33}.btn-danger:hover{background:#822}.card{background:#fffffff2;border-radius:8px;padding:1.5rem;margin-bottom:1rem;box-shadow:0 2px 8px #0000001a}.menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.login-box{max-width:360px;margin:4rem auto}.login-box input{width:100%;padding:.6rem;margin-bottom:1rem;border:1px solid #ccc;border-radius:6px;font-size:1rem}.login-box label{display:block;margin-bottom:.25rem;font-weight:500}.login-title{color:#1a4a6d}table.data-grid{width:100%;border-collapse:collapse;background:#fff}.data-grid-wrapper{overflow:auto;min-height:200px;max-height:min(600px,calc(100vh - 16rem));max-height:min(600px,calc(100dvh - 16rem));border:1px solid #ddd;border-radius:4px}.data-grid-wrapper thead th{position:sticky;top:0;z-index:2;background:#f0f0f0;box-shadow:0 1px #ddd;overflow:visible}.data-grid th,.data-grid td{padding:.5rem .75rem;border-bottom:1px solid #eee;text-align:left;font-size:.9rem;white-space:nowrap}.data-grid tbody tr:hover{background:#f5f9fc}table.data-grid.data-grid--bordered{border:1px solid #c5cdd4}table.data-grid.data-grid--bordered th,table.data-grid.data-grid--bordered td{border:1px solid #c5cdd4;border-bottom:1px solid #c5cdd4}table.data-grid.data-grid--bordered thead th{background:#e8eef3;font-weight:600}.report-col-filter{position:relative;display:inline-flex;align-items:center;gap:.25rem}.report-col-filter .filter-btn{padding:.2rem .35rem;border:1px solid #ccc;background:#f5f5f5;border-radius:4px;cursor:pointer;font-size:.75rem;line-height:1}.report-col-filter .filter-btn:hover{background:#e8e8e8}.report-col-filter .filter-btn.active{background:#1e5a8c;color:#fff;border-color:#1e5a8c}.report-col-filter-dropdown{position:absolute;top:100%;left:0;margin-top:2px;min-width:180px;max-height:240px;overflow-y:auto;background:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 4px 12px #00000026;z-index:30;padding:.5rem}.report-col-filter-dropdown .filter-actions{padding-bottom:.5rem;margin-bottom:.5rem;border-bottom:1px solid #eee;display:flex;gap:.5rem}.report-col-filter-dropdown .filter-actions button{padding:.25rem .5rem;font-size:.8rem;border:1px solid #ccc;background:#fff;border-radius:4px;cursor:pointer}.report-filter-search{display:flex;flex-direction:column;gap:.35rem;padding-bottom:.5rem;margin-bottom:.5rem;border-bottom:1px solid #eee}.report-filter-search input{width:100%;padding:.35rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:.85rem}.report-filter-search button{padding:.3rem .5rem;font-size:.8rem;border:1px solid #1e5a8c;background:#1e5a8c;color:#fff;border-radius:4px;cursor:pointer}.report-filter-search button:hover{background:#16466c}.report-col-filter-dropdown .filter-options{display:flex;flex-direction:column;gap:.25rem}.report-col-filter-dropdown label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:400;font-size:.85rem}.report-col-filter-dropdown input[type=checkbox]{margin:0}.toolbar{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0;align-items:center}.error{color:#a33;margin:.5rem 0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal-card{background:#fff;border-radius:8px;padding:1.5rem;min-width:320px;max-width:min(560px,95vw);max-height:90vh;overflow:auto;box-shadow:0 8px 24px #0003}.modal-card--wide{max-width:min(1120px,96vw)}.supply-chain-history-modal{display:flex;flex-direction:column;gap:.75rem}.supply-chain-history-grid-wrap{overflow:auto;max-height:220px;border:1px solid #dde5ea;border-radius:6px}.modal-card label{display:block;margin-bottom:.25rem;font-weight:500;font-size:.9rem}.modal-card input,.modal-card select{width:100%;padding:.5rem .65rem;margin-bottom:.85rem;border:1px solid #ccc;border-radius:4px;font-size:.95rem}.modal-card input:disabled,.modal-card select:disabled{background:#f0f0f0;color:#555}.modal-card textarea{width:100%;padding:.5rem .65rem;margin-bottom:.85rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem;font-family:ui-monospace,Consolas,monospace;resize:vertical;min-height:4rem}.form-row-readonly{padding:.5rem .65rem;margin-bottom:.85rem;border:1px solid #bbb;border-radius:4px;background:#eef2f5;color:#222;font-weight:500;min-height:1.25rem;word-break:break-all}.order-forecast-grid{border-collapse:separate;border-spacing:0;font-size:12px;white-space:nowrap;min-width:100%}.order-forecast-grid th,.order-forecast-grid td{border:1px solid #cfd8dc;padding:.28rem .45rem;text-align:right;background:#fff}.order-forecast-grid thead th{background:#e8f0f4;font-weight:600;color:#1a4a6d}.order-forecast-grid .metric-col{text-align:left;font-weight:600;background:#f4f7f9;min-width:170px}.order-forecast-grid .sticky-col{position:sticky;left:0;z-index:2}.order-forecast-grid .sticky-head{position:sticky;top:0;z-index:3}.order-forecast-grid th.sticky-col.sticky-head{z-index:4;background:#dce8f0}.order-forecast-grid td.neg{color:#a33;font-weight:600}.order-forecast-grid tbody tr:nth-child(2n) td{background:#fafcfd}.order-forecast-grid tbody tr:nth-child(2n) th.metric-col{background:#eef3f6}.order-forecast-grid td.demand-editable{cursor:cell}.order-forecast-grid td.demand-overridden{background:#fff8e1!important;box-shadow:inset 0 0 0 1px #e6b800}.order-forecast-grid td.demand-editing{padding:.1rem .2rem}.order-forecast-grid .demand-override-input{width:100%;min-width:52px;box-sizing:border-box;font-size:12px;padding:.15rem .25rem;border:1px solid #1e5a8c;border-radius:3px;text-align:right}.create-order-grid td{cursor:cell}.create-order-grid td.cell-selected{background:#c5dff0!important;outline:1px solid #1e5a8c}.create-order-grid .sticky-col-2{left:120px;z-index:2;box-shadow:2px 0 #cfd8dc}.create-order-grid th.sticky-col-2.sticky-head{z-index:4;background:#dce8f0}.create-order-grid tbody tr:nth-child(2n) th.sticky-col-2{background:#eef3f6}.create-order-grid .col-head{vertical-align:bottom;text-align:center;line-height:1.25;min-width:72px}.create-order-grid .col-head-date{font-weight:600}.create-order-grid .col-head-total{margin-top:.2rem;font-weight:700;font-variant-numeric:tabular-nums;color:#0d3d5c}.create-order-grid .col-head-select{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;margin-top:.25rem;font-weight:400;font-size:11px;color:#555;cursor:pointer;-webkit-user-select:none;user-select:none}.create-order-grid .col-head-select input{margin:0;cursor:pointer}.review-orders-page{display:flex;flex-direction:column;flex:1 1 0;min-height:0;margin-bottom:0;overflow:hidden}.review-orders-filters,.review-orders-hint{flex-shrink:0}.review-orders-scroll{flex:1;min-height:0;overflow:auto;border:1px solid #d5dee4;border-radius:4;background:#fff}.review-orders-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.review-orders-table th,.review-orders-table td{border:1px solid #d5dee4;border-top:none;border-left:none;padding:.4rem .5rem;text-align:left;vertical-align:middle}.review-orders-table th:first-child,.review-orders-table td:first-child{border-left:1px solid #d5dee4}.review-orders-table thead th{background:#e8f0f4;color:#1a4a6d;font-weight:600;position:sticky;top:0;z-index:3;border-top:1px solid #d5dee4;box-shadow:0 1px #c5d3dc}.review-orders-table .order-header-row{cursor:pointer;background:#fff}.review-orders-table .order-header-row:hover{background:#f0f6fa}.review-orders-table .order-header-row.expanded{background:#e3eef6}.review-orders-table .expand-cell{text-align:center;color:#1a4a6d;font-weight:700;width:36px}.review-orders-table .order-detail-wrap>td{padding:0;border-top:none;background:#f4f8fb}.review-orders-table .order-detail-panel{margin:.35rem .5rem .6rem 2rem;max-height:min(280px,40vh);overflow:auto;border:1px solid #cfd8dc;border-radius:4;background:#fff}.review-order-lines-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;background:#fff}.review-order-lines-table th,.review-order-lines-table td{border:1px solid #d5dee4;border-top:none;border-left:none;padding:.35rem .5rem;text-align:left;vertical-align:middle}.review-order-lines-table th:first-child,.review-order-lines-table td:first-child{border-left:1px solid #d5dee4}.review-order-lines-table thead th{background:#dce8f0;color:#1a4a6d;font-weight:600;position:sticky;top:0;z-index:2;border-top:1px solid #d5dee4;box-shadow:0 1px #c5d3dc}.review-order-lines-table td.num{text-align:right;font-variant-numeric:tabular-nums}.review-order-lines-table tbody tr:nth-child(2n) td{background:#fafcfd}.system-dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}.system-dashboard-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.dashboard-panel{border:1px solid #dde5ea;border-radius:8px;padding:.75rem 1rem;background:#fafcfd}.dashboard-panel h3{margin:0;font-size:15px}.dashboard-panel-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.65rem}.dashboard-charts-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:1rem;margin-top:1rem}.dashboard-grids-row{display:grid;gap:1rem;margin-top:1rem}.dashboard-grids-row--2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.dashboard-grids-row--3{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.dashboard-ranked-grid-wrap,.dashboard-matrix-wrap{overflow:auto;border:1px solid #dde5ea;border-radius:6px;background:#fff}.dashboard-matrix-wrap{max-height:420px}.dashboard-ranked-grid{table-layout:fixed;width:100%}.dashboard-ranked-label-col{text-align:left!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-ranked-value-col{text-align:right!important;width:28%}.dashboard-ranked-grid--supplier .dashboard-ranked-label-col{width:52%;max-width:52%}.dashboard-ranked-grid--item .dashboard-ranked-label-col{width:52%;max-width:52%;font-size:10px;font-weight:500;white-space:normal;line-height:1.25}.dashboard-ranked-grid th.sticky-col.sticky-head,.dashboard-ranked-grid th.sticky-col{z-index:4}.dashboard-matrix-grid{border-collapse:collapse;--dashboard-metric-col-width: 128px;--dashboard-total-col-width: 88px;--dashboard-head-row-height: 31px}.dashboard-matrix-grid .metric-col{min-width:var(--dashboard-metric-col-width);max-width:var(--dashboard-metric-col-width);width:var(--dashboard-metric-col-width);text-align:left;white-space:normal;line-height:1.25}.dashboard-matrix-grid .dashboard-total-col{position:sticky;left:var(--dashboard-metric-col-width);z-index:3;min-width:var(--dashboard-total-col-width);max-width:var(--dashboard-total-col-width);width:var(--dashboard-total-col-width);font-weight:600;background:#eef4f8;text-align:right}.dashboard-matrix-grid th.sticky-col.sticky-head,.dashboard-matrix-grid .dashboard-total-col.sticky-head{z-index:5}.dashboard-matrix-grid tr.dashboard-totals-row th,.dashboard-matrix-grid tr.dashboard-totals-row .dashboard-totals-value{position:sticky;z-index:3;background:#e8f0f5;font-weight:700;border-bottom:1px solid #c5d3dc;text-align:right}.dashboard-matrix-grid tr.dashboard-totals-row th.metric-col{text-align:left;z-index:6}.dashboard-matrix-grid tr.dashboard-totals-row th.dashboard-total-col{text-align:right;z-index:6}.dashboard-matrix-grid tr.dashboard-totals-row th.metric-col{left:0;top:var(--dashboard-head-row-height)}.dashboard-matrix-grid tr.dashboard-totals-row th.dashboard-total-col{left:var(--dashboard-metric-col-width);top:var(--dashboard-head-row-height)}.dashboard-matrix-grid tr.dashboard-totals-row .dashboard-totals-value{top:var(--dashboard-head-row-height)}.dashboard-matrix-grid tr.dashboard-totals-row--planned th.metric-col,.dashboard-matrix-grid tr.dashboard-totals-row--planned th.dashboard-total-col,.dashboard-matrix-grid tr.dashboard-totals-row--planned .dashboard-totals-value{top:calc(var(--dashboard-head-row-height) * 2)}.dashboard-matrix-grid thead tr:first-child th.sticky-head,.dashboard-matrix-grid thead tr:first-child th.dashboard-total-col{top:0}.dashboard-ranked-grid th,.dashboard-ranked-grid td,.dashboard-matrix-grid th,.dashboard-matrix-grid td{white-space:nowrap}.dashboard-matrix-grid .dashboard-total-col{font-weight:600;background:#eef4f8}.dashboard-chart-tooltip{background:#fff;border:1px solid #ccc;border-radius:4px;padding:.5rem .65rem;font-size:12px;box-shadow:0 2px 8px #0000001f}.etl-page-layout{display:flex;gap:1.25rem;align-items:flex-start}.etl-page-main{flex:1;min-width:0}.etl-sidebar{flex:0 0 320px;max-width:360px;display:flex;flex-direction:column;gap:1rem;position:sticky;top:1rem;align-self:flex-start}.etl-progress-panel{flex:0 0 auto;width:100%;max-width:none;border:1px solid #dde5ea;border-radius:8px;background:#fafbfd;padding:1rem;position:static}.etl-progress-panel-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.etl-progress-panel-header h3{margin:0;font-size:1rem}.etl-progress-meta{margin:0 0 .75rem;font-size:12px;color:#666}.etl-progress-error-box{margin:.75rem 0;padding:.65rem .75rem;font-size:12px;line-height:1.4;color:#b71c1c;background:#ffebee;border:1px solid #ef9a9a;border-radius:6px;word-break:break-word}.etl-progress-error{margin:.75rem 0 0;font-size:12px;color:#b00020}.etl-stop-btn{width:100%;margin-bottom:1rem}.etl-job-badge{display:inline-block;padding:.15rem .45rem;border-radius:999px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.etl-job-badge--idle{background:#eceff1;color:#546e7a}.etl-job-badge--running{background:#e3f2fd;color:#1565c0}.etl-job-badge--completed,.etl-job-badge--completed_with_errors{background:#e8f5e9;color:#2e7d32}.etl-job-badge--failed{background:#ffebee;color:#c62828}.etl-job-badge--cancelled{background:#f5f5f5;color:#757575}.etl-step-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.etl-step{display:flex;gap:.65rem;align-items:flex-start}.etl-step-indicator{flex:0 0 12px;width:12px;height:12px;border-radius:50%;margin-top:.2rem;background:#cfd8dc}.etl-step--running .etl-step-indicator{background:#1976d2;box-shadow:0 0 0 3px #1976d233;animation:etl-pulse 1.2s ease-in-out infinite}.etl-step--completed .etl-step-indicator,.etl-step--completed_with_errors .etl-step-indicator{background:#43a047}.etl-step--failed .etl-step-indicator{background:#e53935}.etl-step--cancelled .etl-step-indicator{background:#9e9e9e}.etl-step-body{flex:1;min-width:0}.etl-step-title{font-size:13px;font-weight:600;line-height:1.3}.etl-step-status{font-size:11px;color:#666;margin-top:.1rem}.etl-step-detail{font-size:11px;color:#444;margin-top:.2rem;line-height:1.35;word-break:break-word}.etl-result-banner{margin-top:1.5rem;padding:1rem;border:1px solid #e0e0e0;border-radius:6px}.etl-result-banner--success{background:#f1f8e9}.etl-result-banner--warn{background:#fff8e1}@keyframes etl-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.85}}@media (max-width: 960px){.etl-page-layout{flex-direction:column}.etl-sidebar{flex:1 1 auto;width:100%;max-width:none;position:static}}
