:root { --z:1.2; --ink:#1b2733; --muted:#66768a; --line:#dbe3ec; --canvas:#f3f6fa; --paper:#fff; --forest:#1f4e8c; --forest-soft:#e8f0fa; --lime:#8fc1f2; --amber:#9c5d12; --amber-soft:#fff3dc; --red:#a63d32; --red-soft:#fbe9e6; --blue:#1f4e8c; --blue-soft:#e8f0fa; font-family:"Yu Gothic UI","Meiryo",sans-serif; color:var(--ink); background:var(--canvas); }
* { box-sizing:border-box; }
body { margin:0; min-width:360px; background:var(--canvas); color:var(--ink); font-size:14px; }
a { color:inherit; text-decoration:none; }
a:hover { color:var(--forest); }
.app-shell { display:flex; min-height:100vh; }
.sidebar { position:fixed; inset:0 auto 0 0; z-index:4; display:flex; flex-direction:column; width:232px; padding:22px 14px 16px; background:#14284a; color:#e6edf7; }
.brand { display:flex; align-items:center; gap:11px; margin:2px 6px 30px; color:#fff; }
.brand:hover { color:#fff; }
.brand-logo { flex:0 0 auto; width:40px; height:40px; }
.brand .brand-text strong { font-family:"Bahnschrift","Segoe UI Variable Display","Segoe UI",sans-serif; font-size:22px; font-weight:600; letter-spacing:.02em; line-height:1; }
.brand-text strong em { color:#8fc1f2; font-style:normal; font-weight:300; }
.brand .brand-text small { margin-top:5px; color:#9fb3d1; font-family:"Bahnschrift","Segoe UI",sans-serif; font-size:9px; letter-spacing:.14em; }
.brand-mark { display:grid; width:38px; height:38px; place-items:center; background:var(--lime); color:#14284a; font-family:Georgia,serif; font-size:23px; font-weight:700; }
.brand strong,.brand small { display:block; }
.brand strong { font-size:12px; }
.brand small { margin-top:3px; color:#9fb3d1; font-size:9px; }
.nav-caption { margin:10px 10px 8px; color:#8ea6c8; font-size:10px; font-weight:700; }
.side-link { display:flex; align-items:center; gap:11px; min-height:38px; margin:2px 0; padding:0 10px; border-left:2px solid transparent; color:#c6d3e6; font-size:13px; }
.side-link:hover,.side-link.active { border-left-color:var(--lime); background:#22407a; color:#fff; }
.nav-glyph { width:23px; color:#8ea6c8; font-size:9px; }
.sidebar-foot { margin-top:auto; padding:14px 9px 0; border-top:1px solid #2e4a7c; color:#c6d3e6; font-size:11px; }
.sidebar-foot small { display:block; margin:6px 0 0 14px; color:#8ea6c8; font-size:10px; }
.online-dot { display:inline-block; width:7px; height:7px; margin-right:7px; border-radius:50%; background:#8fc1f2; }
.main-shell { width:calc(100% - 232px); min-height:100vh; margin-left:232px; }
.topbar { position:sticky; top:0; z-index:3; display:flex; justify-content:space-between; align-items:center; height:58px; padding:0 30px; border-bottom:1px solid var(--line); background:rgba(255,255,255,.96); }
.breadcrumb-line { color:var(--muted); font-size:12px; }
.breadcrumb-line span { margin:0 8px; color:#b7c3be; }
.topbar-right { display:flex; align-items:center; gap:16px; }
.plant-label { color:var(--muted); font-size:12px; }
.user-chip { padding:7px 10px; border:1px solid var(--line); background:#fff; font-size:11px; }
.page-content { max-width:1560px; margin:0 auto; padding:28px 30px 60px; }
.page-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:22px; }
.eyebrow { margin-bottom:6px; color:var(--forest); font-size:10px; font-weight:700; }
h1 { margin:0; font-size:25px; font-weight:700; }
.subtitle { margin:7px 0 0; color:var(--muted); font-size:12px; }
.heading-actions { display:flex; flex-wrap:wrap; gap:8px; }
.button { display:inline-flex; align-items:center; justify-content:center; min-height:36px; padding:0 13px; border:1px solid #cad7d1; background:#fff; color:var(--ink); font-size:12px; font-weight:600; cursor:pointer; }
.button:hover { border-color:var(--forest); color:var(--forest); }
.button-primary { border-color:var(--forest); background:var(--forest); color:#fff; }
.button-primary:hover { background:#236657; color:#fff; }
.button-small { min-height:29px; padding:0 9px; font-size:11px; }
.button-symbol { margin-right:7px; font-size:16px; line-height:1; }
.status { display:inline-flex; align-items:center; padding:4px 8px; font-size:10px; font-weight:700; white-space:nowrap; }
.status-planned { background:var(--amber-soft); color:var(--amber); }
.status-released { background:var(--blue-soft); color:var(--blue); }
.status-completed { background:var(--forest-soft); color:var(--forest); }
.status-late { background:var(--red-soft); color:var(--red); }
.panel { border:1px solid var(--line); background:var(--paper); }
.panel-heading { display:flex; justify-content:space-between; align-items:center; gap:12px; min-height:48px; padding:0 16px; border-bottom:1px solid var(--line); }
.panel-heading h2,.panel-heading h3 { margin:0; font-size:13px; font-weight:700; }
.panel-meta { color:var(--muted); font-size:10px; }
.panel-body { padding:15px 16px; }
.kpi-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-bottom:16px; }
.kpi { min-height:85px; padding:13px 15px; border:1px solid var(--line); background:#fff; }
.kpi-label { color:var(--muted); font-size:11px; }
.kpi-value { margin-top:6px; font-size:25px; font-weight:700; line-height:1; font-variant-numeric:tabular-nums; }
.kpi-note { margin-left:7px; color:var(--muted); font-size:10px; font-weight:400; }
.phase-strip { display:grid; grid-template-columns:repeat(3,1fr); margin-bottom:16px; border:1px solid var(--line); background:#fff; }
.phase { display:flex; align-items:center; gap:10px; min-height:54px; padding:9px 15px; color:var(--muted); }
.phase+.phase { border-left:1px solid var(--line); }
.phase-number { display:grid; width:24px; height:24px; place-items:center; border:1px solid #cbd9d1; color:var(--forest); font-size:10px; font-weight:700; }
.phase strong,.phase small { display:block; }
.phase strong { color:var(--ink); font-size:11px; }
.phase small { margin-top:2px; color:var(--muted); font-size:9px; }
.phase.current { background:var(--forest-soft); }
.toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
.segmented { display:inline-flex; border:1px solid var(--line); background:#fff; }
.segment { padding:8px 12px; color:var(--muted); font-size:11px; }
.segment+.segment { border-left:1px solid var(--line); }
.segment.active { background:var(--forest); color:#fff; }
.filters { display:flex; flex-wrap:wrap; gap:7px; }
.filter-control { min-height:33px; padding:0 9px; border:1px solid var(--line); background:#fff; color:var(--ink); font-size:11px; }
.data-table { width:100%; border-collapse:collapse; font-size:11px; }
.data-table th { position:sticky; top:0; z-index:3; padding:10px; border-bottom:1px solid var(--line); background:#f7f9f8; color:var(--muted); font-size:10px; font-weight:600; text-align:left; white-space:nowrap; }
.data-table td { padding:11px 10px; border-bottom:1px solid #edf1ef; vertical-align:middle; }
.data-table tr:last-child td { border-bottom:0; }
.data-table tbody tr:hover { background:#f8fbf9; }
.data-table .numeric { text-align:right; font-variant-numeric:tabular-nums; }
.record-link { color:var(--forest); font-weight:700; }
.record-sub { display:block; margin-top:3px; color:var(--muted); font-size:10px; }
.type-label { color:var(--muted); font-size:10px; }
.resource-cell { min-width:130px; }
.resource-name { display:block; margin-bottom:5px; font-size:10px; }
.mini-track { height:5px; background:#edf1ef; }
.mini-fill { height:100%; background:#73a58a; }
.mini-fill.warn { background:#d5a248; }
.mini-fill.over { background:#cf7565; }
.table-scroll { overflow-x:auto; }
.table-scroll:has(> table.data-table) { max-height:min(70vh,640px); overflow:auto; overscroll-behavior:contain; }
.plan-layout { display:grid; grid-template-columns:minmax(0,1fr) 310px; gap:14px; align-items:start; }
.side-stack { display:grid; gap:14px; }
.calendar-table { width:100%; border-collapse:collapse; font-size:10px; }
.calendar-table th,.calendar-table td { padding:8px 6px; border-bottom:1px solid #edf1ef; text-align:center; }
.calendar-table th { color:var(--muted); font-weight:600; }
.calendar-table td:first-child,.calendar-table th:first-child { padding-left:12px; text-align:left; white-space:nowrap; }
.load-cell { min-width:40px; color:var(--muted); font-size:9px; }
.load-cell.high { color:var(--red); font-weight:700; }
.trace-list { display:grid; }
.trace-item { display:grid; grid-template-columns:55px minmax(0,1fr) auto; gap:8px; align-items:center; padding:9px 0; border-bottom:1px solid #edf1ef; font-size:10px; }
.trace-item:last-child { border-bottom:0; }
.trace-date { color:var(--muted); font-variant-numeric:tabular-nums; }
.trace-item strong,.trace-item small { display:block; }
.trace-item strong { font-size:10px; }
.trace-item small { color:var(--muted); font-size:9px; }
.trace-qty { text-align:right; font-variant-numeric:tabular-nums; }
.trace-qty small { display:block; }
.section-gap { margin-top:16px; }
.day-bucket { display:grid; grid-template-columns:repeat(6,minmax(115px,1fr)); min-width:690px; }
.day-column { min-height:118px; padding:10px; border-right:1px solid #edf1ef; }
.day-column:last-child { border-right:0; }
.day-column.today { background:#f5faf6; }
.day-label { color:var(--muted); font-size:9px; }
.day-date { margin:3px 0 10px; font-size:12px; font-weight:700; }
.day-event { margin:4px 0; padding:5px 6px; border-left:2px solid var(--forest); background:var(--forest-soft); color:var(--forest); font-size:9px; line-height:1.4; }
.day-event.purchase { border-left-color:#6383a0; background:var(--blue-soft); color:#365f82; }
.day-event.late { border-left-color:var(--red); background:var(--red-soft); color:var(--red); }
.trace-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-bottom:1px solid var(--line); }
.trace-stat { padding:12px 14px; border-right:1px solid var(--line); }
.trace-stat:last-child { border-right:0; }
.trace-stat small,.trace-stat strong { display:block; }
.trace-stat small { color:var(--muted); font-size:10px; }
.trace-stat strong { margin-top:4px; font-size:16px; font-variant-numeric:tabular-nums; }
.detail-grid { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(270px,.7fr); gap:14px; }
.detail-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.detail-field { min-height:61px; padding:12px 14px; border-bottom:1px solid #edf1ef; }
.detail-field:nth-child(odd) { border-right:1px solid #edf1ef; }
.detail-field small,.detail-field strong { display:block; }
.detail-field small { margin-bottom:6px; color:var(--muted); font-size:10px; }
.detail-field strong { font-size:12px; }
.detail-tabs { display:flex; gap:18px; padding:0 16px; border-bottom:1px solid var(--line); }
.detail-tab { padding:12px 0 10px; border-bottom:2px solid transparent; color:var(--muted); font-size:11px; }
.detail-tab.active { border-bottom-color:var(--forest); color:var(--forest); font-weight:700; }
.hierarchy-note { padding:10px 12px; border-left:3px solid #7e9f8b; background:#f4f8f5; color:#52635b; font-size:10px; line-height:1.7; }
.info-banner { margin-bottom:14px; padding:10px 12px; border:1px solid #ead8af; background:#fff9eb; color:#77551c; font-size:11px; }
.page-footer { display:flex; justify-content:space-between; align-items:center; padding:12px 15px; border-top:1px solid var(--line); color:var(--muted); font-size:10px; }
.list-intro { display:flex; justify-content:space-between; gap:15px; align-items:center; margin-bottom:14px; }
.search-box { width:min(280px,100%); min-height:35px; padding:0 10px; border:1px solid var(--line); background:white; }
.master-tabs { display:flex; gap:2px; overflow-x:auto; margin-bottom:14px; border-bottom:1px solid var(--line); }
.master-tab { flex:0 0 auto; padding:10px 13px; color:var(--muted); font-size:11px; }
.master-tab.active { border-bottom:2px solid var(--forest); color:var(--forest); font-weight:700; }
.detail-actions { display:flex; gap:8px; }
.edit-panel { border-top:1px solid var(--line); background:#f8faf9; }
.edit-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; padding:16px; }
.edit-field { display:grid; gap:5px; color:var(--muted); font-size:10px; }
.edit-field input { min-height:34px; padding:0 9px; border:1px solid var(--line); background:#fff; color:var(--ink); font-size:11px; }
.edit-field input[readonly] { background:#f0f3f1; color:var(--muted); }
.edit-lines { grid-column:1/-1; }
.line-edit-input { width:100%; min-width:70px; min-height:30px; padding:0 6px; border:1px solid var(--line); background:#fff; font-size:10px; }
.line-edit-input[readonly] { background:#f0f3f1; color:var(--muted); }
.edit-actions { display:flex; gap:8px; grid-column:1/-1; }
.gantt-panel { overflow:hidden; }
.gantt-scroll-hint { padding:7px 13px; border-bottom:1px solid var(--line); color:var(--muted); font-size:10px; }
.gantt-panel > .table-scroll { height:min(72vh, calc(100vh - 250px)); min-height:320px; overflow:auto; overscroll-behavior:contain; scrollbar-gutter:stable; }
.gantt-header,.gantt-operation-row { display:grid; grid-template-columns:190px minmax(720px,1fr); width:max-content; min-width:100%; }
.gantt-header { position:sticky; top:0; z-index:3; border-bottom:1px solid var(--line); background:#f7f9f8; }
.gantt-label-header { position:sticky; left:0; z-index:2; display:flex; align-items:center; padding:10px 13px; color:var(--muted); font-size:10px; background:#f7f9f8; }
.gantt-date-grid { display:grid; grid-template-columns:repeat(var(--day-count,6),minmax(110px,1fr)); min-width:calc(var(--day-count,6) * 110px); }
.gantt-date { padding:10px 8px; border-left:1px solid var(--line); color:var(--muted); font-size:10px; text-align:center; }
.gantt-shipment+.gantt-shipment { border-top:1px solid var(--line); }
.gantt-shipment-header { display:flex; justify-content:space-between; align-items:center; gap:12px; min-height:58px; padding:9px 14px; background:#f4f8f5; }
.gantt-shipment-header .record-sub { margin-top:4px; }
.gantt-shipment-dates { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:9px; color:var(--muted); font-size:10px; }
.gantt-operation-row { min-height:48px; border-top:1px solid #edf1ef; }
.gantt-operation-label { position:sticky; left:0; z-index:2; display:flex; flex-direction:column; justify-content:center; padding:6px 12px; background:var(--paper); }
.gantt-operation-label strong { font-size:10px; }
.gantt-operation-label small { margin-top:3px; color:var(--muted); font-size:9px; }
.gantt-track { display:grid; grid-template-columns:repeat(var(--day-count,6),minmax(110px,1fr)); align-items:center; min-width:calc(var(--day-count,6) * 110px); min-height:48px; padding:4px 0; background-image:linear-gradient(to right,transparent calc(100% - 1px),var(--line) calc(100% - 1px)); background-size:calc(100% / var(--day-count,6)) 100%; }
.gantt-bar { z-index:1; display:flex; flex-direction:column; justify-content:center; min-height:34px; margin:0 4px; padding:4px 8px; overflow:hidden; border-left:3px solid #39745e; background:#e6f0ea; color:#204c3e; font-size:9px; white-space:nowrap; }
.gantt-bar:hover { color:#14372d; filter:brightness(.97); }
.gantt-bar strong { font-size:9px; }
.gantt-bar span { margin-top:2px; overflow:hidden; text-overflow:ellipsis; }
.gantt-bar.high-load { border-left-color:#c18c31; background:#fff2d6; color:#785117; }
.gantt-bar.overload { border-left-color:#b7473c; background:#f9e5e2; color:#8c3028; }
.gantt-bar.baseline { border-left-color:#637b70; background:#e9eeeb; color:#334a40; }
.gantt-bar.optimized { border-left-color:#39745e; background:#e1f0e7; color:#204c3e; }
.gantt-bar.optimized-split { border-left-color:#5078a5; background:#e5edf7; color:#315879; }
.gantt-dependency { display:flex; justify-content:flex-end; gap:10px; padding:0 12px 7px; color:var(--muted); font-size:9px; }
.gantt-dependency a { color:var(--forest); }
.gantt-legend { display:flex; flex-wrap:wrap; gap:15px; padding:10px 2px; color:var(--muted); font-size:10px; }
.legend-mark { display:inline-block; width:9px; height:9px; margin-right:5px; background:#73a58a; }
.legend-mark.high { background:#d5a248; }
.legend-mark.over { background:#cf7565; }
.resource-load-header,.resource-load-row { display:grid; grid-template-columns:185px minmax(840px,1fr); }
.resource-load-header { background:#f7f9f8; color:var(--muted); font-size:10px; font-weight:600; }
.resource-load-label { display:flex; flex-direction:column; justify-content:center; padding:12px; border-right:1px solid var(--line); }
.resource-load-label small { margin-top:4px; color:var(--muted); font-size:9px; }
.resource-load-days { display:grid; grid-template-columns:repeat(6,minmax(135px,1fr)); }
.resource-load-header .resource-load-days>div { padding:11px 8px; border-left:1px solid var(--line); text-align:center; }
.resource-load-row { border-top:1px solid var(--line); }
.resource-load-cell { min-width:0; min-height:140px; padding:9px 8px; border-left:1px solid #edf1ef; }
.load-value { font-size:14px; font-weight:700; font-variant-numeric:tabular-nums; }
.load-value.high { color:var(--amber); }
.load-value.over { color:var(--red); }
.load-meter { height:5px; margin:5px 0; background:#edf1ef; }
.load-meter>div { height:100%; background:#73a58a; }
.load-meter>div.high { background:#d5a248; }
.load-meter>div.over { background:#cf7565; }
.load-hours { color:var(--muted); font-size:9px; }
.load-orders { display:grid; gap:5px; margin-top:7px; }
.load-order { display:grid; grid-template-columns:auto auto; justify-content:start; align-items:center; gap:2px 6px; padding:5px; background:#f5f8f6; font-size:9px; }
.load-order small { grid-column:1/-1; overflow:hidden; color:var(--muted); font-size:8px; text-overflow:ellipsis; white-space:nowrap; }
.order-plan-link { color:var(--forest); font-weight:700; }
.order-shipment-link { color:var(--blue); }
.stacked-load-chart { min-width:980px; }
.stacked-load-header,.stacked-resource-row { display:grid; grid-template-columns:175px minmax(810px,1fr); }
.stacked-load-header { background:#f7f9f8; color:var(--muted); font-size:10px; font-weight:600; }
.stacked-resource-name { display:flex; flex-direction:column; justify-content:center; padding:12px; border-right:1px solid var(--line); }
.stacked-resource-name small { margin-top:4px; color:var(--muted); font-size:9px; }
.stacked-day-headings,.stacked-day-columns { display:grid; grid-template-columns:repeat(var(--day-count,6),minmax(135px,1fr)); }
.stacked-day-headings>div { padding:11px 8px; border-left:1px solid var(--line); text-align:center; }
.stacked-resource-row { border-top:1px solid var(--line); }
.stacked-scenario-heading { display:flex; align-items:center; gap:9px; padding:10px 12px; border-top:2px solid var(--line); background:#f4f8f5; color:var(--ink); font-size:11px; font-weight:700; }
.stacked-scenario-heading small { color:var(--muted); font-size:9px; font-weight:400; }
.stacked-day-cell { min-width:0; padding:7px 5px 9px; border-left:1px solid #edf1ef; }
.stack-total { min-height:26px; color:var(--ink); font-size:13px; font-weight:700; font-variant-numeric:tabular-nums; }
.stack-total small { display:block; color:var(--muted); font-size:8px; font-weight:400; }
.stack-total.high { color:var(--amber); }
.stack-total.over { color:var(--red); }
.stack-plot { position:relative; height:132px; margin:4px 1px 5px; overflow:hidden; background:#fbfcfb; }
.stack-gridline { position:absolute; z-index:0; right:0; left:0; border-top:1px solid #e8eeea; }
.stack-gridline span { display:none; position:absolute; top:-7px; left:0; padding-right:3px; background:#fbfcfb; color:#7a8982; font-size:7px; }
.stacked-day-cell:first-child .stack-gridline span { display:block; }
.line-150 { top:0; }
.line-100 { top:44px; }
.line-50 { top:88px; }
.line-0 { bottom:0; }
.capacity-line { position:absolute; z-index:3; top:44px; right:0; left:0; border-top:2px solid #a84a40; pointer-events:none; }
.capacity-line::after { position:absolute; top:-12px; right:1px; padding:1px 3px; background:#fff; color:#963c34; content:"100%"; font-size:7px; }
.stack-bar { position:absolute; z-index:2; bottom:0; left:50%; display:flex; flex-direction:column-reverse; width:42px; transform:translateX(-50%); }
.stack-segment { display:block; flex:0 0 auto; min-height:1px; overflow:hidden; border-top:1px solid rgba(255,255,255,.82); color:transparent; font-size:1px; }
.stack-segment.order-1042,.stack-swatch.order-1042 { background:#4d8b72; }
.stack-segment.order-1043,.stack-swatch.order-1043 { background:#5c80a0; }
.stack-segment.order-1044,.stack-swatch.order-1044 { background:#d49b45; }
.stack-order-list { display:grid; gap:4px; }
.stack-order { display:grid; grid-template-columns:auto auto; justify-content:start; align-items:center; gap:2px 5px; padding:4px; background:#f6f8f7; font-size:8px; }
.stack-order small { grid-column:1/-1; overflow:hidden; color:var(--muted); font-size:8px; text-overflow:ellipsis; white-space:nowrap; }
.stacked-legend { display:flex; flex-wrap:wrap; gap:13px; padding:10px 12px; border-top:1px solid var(--line); color:var(--muted); font-size:9px; }
.stack-swatch,.capacity-swatch { display:inline-block; width:9px; height:9px; margin-right:4px; vertical-align:-1px; }
.capacity-swatch { height:2px; background:#a84a40; }
.hatch-batch { background:repeating-linear-gradient(45deg,#7b5ea7 0 4px,#a58fcb 4px 8px); }
.gantt-bar.batch { position:relative; overflow:hidden; border:1px solid #5b3f8a; color:#fff; background:repeating-linear-gradient(45deg,#7b5ea7 0 6px,#8f74bb 6px 12px); }
.batch-fill { position:absolute; left:0; right:0; bottom:0; height:6px; background:rgba(0,0,0,.25); font-style:normal; }
.batch-fill::before { content:""; position:absolute; left:0; top:0; bottom:0; width:var(--fill); background:#ffd166; }
.batch-fill b { position:absolute; right:3px; bottom:5px; font-size:8px; color:#fff; }
.op-kind { display:inline-block; margin-right:5px; padding:0 4px; border-radius:3px; font-size:8px; font-weight:700; }
.op-kind.normal { background:#e3ece8; color:#3b6b57; }
.op-kind.batch { background:#7b5ea7; color:#fff; }
.legend-kind { display:inline-block; width:14px; height:9px; margin-right:4px; vertical-align:-1px; }
.legend-kind.normal { background:#4d8b72; }
.legend-kind.batch { background:repeating-linear-gradient(45deg,#7b5ea7 0 3px,#8f74bb 3px 6px); }
.stack-segment.batch,.stack-swatch.batch { background:repeating-linear-gradient(45deg,#7b5ea7 0 4px,#a58fcb 4px 8px); }
.stack-order.batch { background:#efe9f7; }
.axis-tag { display:inline-block; margin-right:3px; padding:0 3px; border-radius:2px; font-size:8px; font-weight:700; color:#fff; }
.axis-tag.time { background:#5c80a0; }
.axis-tag.cap { background:#7b5ea7; }
.batch-axis { position:relative; margin:2px 0; padding-bottom:5px; font-size:11px; font-weight:700; color:#5b3f8a; }
.batch-axis small { display:block; font-size:8px; font-weight:400; color:var(--muted); }
.batch-axis i { position:absolute; left:0; bottom:0; height:3px; background:#7b5ea7; }
.batch-axis.low i { background:#d49b45; }
.batch-axis.over i { background:#a84a40; }
.gantt-dependency.linked::before { color:var(--forest); content:"↳"; font-size:12px; font-weight:700; }
.calendar-day-cards { display:grid; grid-template-columns:repeat(6,minmax(120px,1fr)); overflow-x:auto; }
.calendar-day-card { display:grid; gap:7px; min-height:115px; padding:13px; border-right:1px solid var(--line); background:#fff; }
.calendar-day-card:last-child { border-right:0; }
.calendar-day-card>span:first-child { color:var(--muted); font-size:10px; }
.calendar-day-card>strong { font-size:18px; }
.calendar-day-card>small { color:var(--muted); font-size:9px; }
.calendar-open { border-top:3px solid #6c9d81; }
.calendar-closed { border-top:3px solid #c86a5e; background:#fbf5f4; }
.calendar-exception-layout { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(270px,.6fr); gap:14px; align-items:start; }
.calendar-exception-form { display:grid; gap:12px; padding:16px; }
.calendar-exception-form .button { justify-self:start; }
.calendar-hours-input { width:82px; min-height:32px; padding:0 7px; border:1px solid var(--line); background:#fff; font-variant-numeric:tabular-nums; }
.calendar-date-closed { background:#f7e9e7 !important; color:#8d3f37 !important; }
.stacked-day-cell.day-closed { display:grid; min-height:170px; place-content:center; background:repeating-linear-gradient(135deg,#f7f8f7,#f7f8f7 7px,#eef1ef 7px,#eef1ef 14px); }
.calendar-closed-message { display:grid; gap:5px; color:#8d3f37; text-align:center; }
.calendar-closed-message strong { font-size:12px; }
.calendar-closed-message small { max-width:110px; color:var(--muted); font-size:8px; }
.compare-gantt-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; align-items:start; }
.compare-gantt-grid>.panel { min-width:0; overflow:hidden; }
.compare-time-axis,.compare-gantt-operation { display:grid; grid-template-columns:150px minmax(540px,1fr); }
.compare-time-axis { background:#f7f9f8; color:var(--muted); font-size:9px; }
.compare-time-axis>div:first-child { display:flex; align-items:center; padding:7px; }
.compare-day-grid { display:grid; grid-template-columns:repeat(6,minmax(90px,1fr)); }
.compare-day-grid span { padding:7px 3px; border-left:1px solid var(--line); text-align:center; line-height:1.5; }
.compare-day-grid span.closed { background:#f7e9e7; color:#8d3f37; }
.compare-shipment { border-top:1px solid var(--line); }
.compare-shipment-heading { display:flex; flex-wrap:wrap; align-items:center; gap:7px; padding:8px; background:#f4f8f5; font-size:9px; }
.compare-gantt-operation { min-height:48px; border-top:1px solid #edf1ef; }
.compare-operation-label { display:flex; flex-direction:column; justify-content:center; padding:5px 8px; }
.compare-operation-label strong { font-size:9px; }
.compare-operation-label small { margin-top:3px; color:var(--muted); font-size:8px; }
.compare-gantt-track { display:grid; grid-template-columns:repeat(6,minmax(90px,1fr)); align-items:center; min-height:48px; padding:4px 0; background-image:linear-gradient(to right,transparent calc(100% - 1px),var(--line) calc(100% - 1px)); background-size:calc(100% / 6) 100%; }
.compare-task-bar { z-index:1; display:flex; flex-direction:column; justify-content:center; min-width:0; min-height:32px; margin:0 3px; padding:3px 5px; overflow:hidden; border-left:3px solid #39745e; background:#e6f0ea; color:#204c3e; font-size:8px; white-space:nowrap; }
.compare-task-bar:hover { color:#14372d; filter:brightness(.97); }
.compare-task-bar strong,.compare-task-bar small { overflow:hidden; text-overflow:ellipsis; }
.compare-task-bar strong { font-size:8px; }
.compare-task-bar small { font-size:7px; }
.baseline-bar { border-left-color:#637b70; background:#e9eeeb; color:#334a40; }
.baseline-over { border-left-color:#b7473c; background:#f9e5e2; color:#8c3028; }
.optimized-bar { border-left-color:#39745e; background:#e1f0e7; color:#204c3e; }
.split-bar { border-left-color:#5078a5; background:#e5edf7; color:#315879; }
.compare-placeholder { min-height:100px; padding:26px 15px; color:var(--muted); font-size:11px; text-align:center; }
.optimization-placeholder { display:grid; gap:8px; padding:20px; color:var(--muted); font-size:11px; }
.optimization-explanation { display:grid; gap:5px; }
.improved-value { color:var(--forest); font-weight:700; }
.worse-value { color:var(--red); font-weight:700; }
.help-notice { display:grid; grid-template-columns:130px minmax(0,1fr); gap:8px 14px; align-items:start; }
.help-logic { display:grid; gap:16px; }
.help-logic ol { display:grid; gap:13px; margin:0; padding-left:22px; }
.help-logic li { padding-left:4px; }
.help-logic li strong,.help-logic li span { display:block; }
.help-logic li strong { color:var(--ink); font-size:12px; }
.help-logic li span { margin-top:4px; color:var(--muted); font-size:11px; line-height:1.7; }
.help-logic code { display:inline-block; padding:3px 6px; background:#f1f5f2; color:var(--forest); font-size:10px; white-space:normal; }
.help-equation { display:grid; gap:6px; padding:12px; border-left:3px solid var(--forest); background:#f4f8f5; }
.help-equation span { color:var(--muted); font-size:10px; line-height:1.6; }
.help-direction-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0; border-top:1px solid var(--line); }
.help-direction-grid>div { padding:15px; }
.help-direction-grid>div+div { border-left:1px solid var(--line); }
.help-direction-grid h3 { margin:0 0 7px; font-size:12px; }
.help-direction-grid p { margin:0; color:var(--muted); font-size:11px; line-height:1.7; }
.help-limit { display:grid; gap:5px; border-top:1px solid var(--line); color:var(--muted); font-size:10px; line-height:1.6; }
.help-limit strong { color:var(--ink); font-size:11px; }
@media (max-width:1120px) { .sidebar{width:205px}.main-shell{width:calc(100% - 205px);margin-left:205px}.page-content{padding-right:20px;padding-left:20px}.plan-layout{grid-template-columns:minmax(0,1fr)}.side-stack{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:760px) { .app-shell{display:block}.sidebar{position:sticky;top:0;width:100%;height:auto;padding:8px 10px}.brand{flex:0 0 100%;margin:0 4px 8px}.brand-mark{width:31px;height:31px;font-size:18px}.nav-caption,.sidebar-foot{display:none}.side-link{display:inline-flex;min-height:34px;margin:1px;padding:0 8px;border:0;font-size:10px;white-space:nowrap}.nav-glyph{display:none}.sidebar{flex-direction:row;flex-wrap:wrap;align-items:center}.main-shell{width:100%;margin:0}.topbar{height:48px;padding:0 14px}.page-content{padding:20px 13px 40px}.page-heading{flex-direction:column}.heading-actions{width:100%}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.phase{gap:6px;padding:7px}.phase-number{flex:0 0 22px;width:22px;height:22px}.phase strong{font-size:9px}.phase small{font-size:8px}.side-stack,.detail-grid,.calendar-exception-layout{grid-template-columns:minmax(0,1fr)}.trace-summary{grid-template-columns:repeat(2,1fr)}.trace-stat:nth-child(2){border-right:0}.trace-stat:nth-child(-n+2){border-bottom:1px solid var(--line)}.list-intro{align-items:stretch;flex-direction:column}.gantt-shipment-header{align-items:flex-start;flex-direction:column}.gantt-shipment-dates{justify-content:flex-start}.gantt-header,.gantt-operation-row{grid-template-columns:150px minmax(720px,1fr)}.resource-load-header,.resource-load-row{grid-template-columns:150px minmax(840px,1fr)}.stacked-load-header,.stacked-resource-row{grid-template-columns:140px minmax(810px,1fr)} }
@media (max-width:760px) { .compare-gantt-grid{grid-template-columns:minmax(0,1fr)}.compare-time-axis,.compare-gantt-operation{grid-template-columns:125px minmax(540px,1fr)} }
@media (max-width:760px) { .help-notice{grid-template-columns:minmax(0,1fr)}.help-direction-grid{grid-template-columns:minmax(0,1fr)}.help-direction-grid>div+div{border-top:1px solid var(--line);border-left:0} }
/* ブルー基調: 強調色は警告(琥珀)・超過(赤)・バッチ(濃紺)のみ */
.data-table th,.gantt-header,.gantt-label-header,.resource-load-header,.stacked-load-header,.compare-time-axis { background:#f3f6fa; }
.data-table tbody tr:hover,.day-column.today { background:#f1f6fc; }
.data-table td,.day-column,.detail-field,.calendar-table th,.calendar-table td,.trace-item,.gantt-operation-row,.compare-gantt-operation,.stacked-day-cell { border-color:#e6ecf3; }
.gantt-shipment-header,.stacked-scenario-heading,.compare-shipment-heading,.hierarchy-note,.help-equation { background:#eef3fa; }
.hierarchy-note { border-left-color:#6f95c8; color:#44546a; }
.edit-panel { background:#f6f9fc; }
.mini-track { background:#e6ecf3; }
.mini-fill { background:#4a7fc1; }
.gantt-bar { border-left-color:#2f66b0; background:#e3edf9; color:#1c3d6e; }
.gantt-bar:hover { color:#10284b; }
.gantt-bar.optimized,.gantt-bar.optimized-split { border-left-color:#2f66b0; background:#e3edf9; color:#1c3d6e; }
.gantt-bar.baseline { border-left-color:#8a99ad; background:#eceff4; color:#44546a; }
.gantt-bar.batch { border:1px solid #14284a; color:#fff; background:repeating-linear-gradient(45deg,#1f3f7a 0 6px,#2d5399 6px 12px); }
.batch-fill::before { background:#8fc1f2; }
.legend-mark { background:#4a7fc1; }
.legend-kind.normal { background:#4a7fc1; }
.legend-kind.batch,.stack-segment.batch,.stack-swatch.batch,.hatch-batch { background:repeating-linear-gradient(45deg,#1f3f7a 0 4px,#2d5399 4px 8px); }
.op-kind.normal { background:#e3edf9; color:#1f4e8c; }
.op-kind.batch,.axis-tag.cap { background:#1f3f7a; color:#fff; }
.axis-tag.time { background:#6f95c8; }
.stack-order.batch { background:#e3edf9; }
.batch-axis { color:#1f3f7a; }
.batch-axis i { background:#1f3f7a; }
.stack-segment.order-1042,.stack-swatch.order-1042 { background:#4a7fc1; }
.stack-segment.order-1043,.stack-swatch.order-1043 { background:#7ea6d8; }
.stack-segment.order-1044,.stack-swatch.order-1044 { background:#a9c4e6; }
.stack-plot,.stack-gridline span { background:#fafcfe; }
.stack-gridline { border-top-color:#e6ecf3; }
.stack-order { background:#f3f6fa; }
.data-table td:last-child { white-space:nowrap; }
.run-steps { display:grid; }
.run-step { display:grid; grid-template-columns:44px minmax(0,1fr) 90px 80px; align-items:center; gap:12px; padding:14px 16px; border-bottom:1px solid var(--line); }
.run-step:last-child { border-bottom:0; }
.run-step.locked { color:var(--muted); }
.run-step-index { display:grid; width:30px; height:30px; place-items:center; border:1px solid #b9cde8; color:var(--forest); font-size:11px; font-weight:700; }
.run-step-main h3 { margin:0 0 4px; font-size:14px; font-weight:700; }
.run-step-main p { margin:0 0 4px; font-size:12px; }
.run-step-main small { color:var(--muted); font-size:11px; }
.run-step-state { font-size:11px; color:var(--muted); white-space:nowrap; }
.calendar-open { border-top-color:#4a7fc1; }
.day-event.purchase { border-left-color:#6f95c8; color:#1f4e8c; }
.login-page { display:grid; min-height:100vh; place-items:center; padding:24px; }
.login-card { width:min(420px,100%); padding:30px; border:1px solid var(--line); background:var(--paper); }
.login-brand { margin-bottom:24px; color:var(--ink); font-family:"Bahnschrift","Segoe UI",sans-serif; font-size:22px; font-weight:700; }
.login-brand span { color:var(--forest); font-weight:300; }
.login-card h1 { font-size:24px; }
.login-description { margin:8px 0 22px; color:var(--muted); }
.login-card form { display:grid; gap:16px; }
.login-field { display:grid; gap:6px; }
.login-field label { font-weight:600; }
.login-field input { min-height:40px; padding:8px 10px; border:1px solid var(--line); background:#fff; color:var(--ink); font:inherit; }
.login-field input:focus { border-color:var(--forest); outline:2px solid var(--forest-soft); }
.login-validation { color:var(--red); font-size:12px; }
.validation-summary-valid { display:none; }
.login-submit { min-height:42px; }
.logout-form { margin:0; }
/* 文字サイズ拡大（レイアウトは固定幅のまま、文字だけ引き上げ） */
body { font-size:15px; }
.eyebrow,.panel-meta,.kpi-note,.record-sub,.type-label,.resource-name,.calendar-table,.trace-item,.trace-item strong,.day-label,.day-event,.trace-stat small,.detail-field small,.hierarchy-note,.page-footer,.edit-field,.line-edit-input,.gantt-scroll-hint,.gantt-label-header,.gantt-date,.gantt-shipment-dates,.gantt-operation-label strong,.gantt-bar,.gantt-bar strong,.gantt-legend,.resource-load-header,.stacked-load-header,.stacked-legend,.compare-time-axis,.compare-shipment-heading,.compare-operation-label strong,.data-table th,.help-limit,.help-equation span,.help-logic code,.load-cell,.status,.phase-number,.nav-caption,.sidebar-foot small,.brand small,.mini-label { font-size:12px; }
.trace-item small,.gantt-operation-label small,.gantt-dependency,.stack-total small,.stack-order,.stack-order small,.calendar-day-card>small,.calendar-day-card>span:first-child,.stacked-resource-name small,.resource-load-label small,.stacked-scenario-heading small,.compare-operation-label small,.phase small,.calendar-closed-message small,.op-kind,.axis-tag,.batch-fill b,.batch-axis small { font-size:11px; }
.data-table,.button,.segment,.filter-control,.master-tab,.detail-tab,.edit-field input,.panel-heading h2,.panel-heading h3,.kpi-label,.detail-field strong,.stacked-scenario-heading,.phase strong,.info-banner,.user-chip,.breadcrumb-line,.plant-label,.subtitle,.day-date,.calendar-closed-message strong,.side-link,.sidebar-foot,.button-small,.help-limit strong,.help-direction-grid p,.help-logic li span { font-size:13px; }
.kpi-value { font-size:28px; }
h1 { font-size:28px; }
.nav-glyph { font-size:11px; }
.stack-total,.batch-axis { font-size:13px; }
.batch-fill b { display:none; }
.stack-gridline span,.capacity-line::after { font-size:9px; }
@media (min-width:761px) {
  .gantt-header,.gantt-operation-row { grid-template-columns:230px minmax(720px,1fr); }
  .resource-load-header,.resource-load-row { grid-template-columns:200px minmax(840px,1fr); }
  .stacked-load-header,.stacked-resource-row { grid-template-columns:190px minmax(810px,1fr); }
}
.assistant-panel,.assistant-proposal { max-width:980px; }
.assistant-messages { display:grid; gap:12px; max-height:460px; padding:16px; overflow:auto; }
.assistant-empty { margin:0; color:var(--muted); font-size:12px; }
.assistant-message { max-width:86%; padding:11px 13px; border:1px solid var(--line); background:#f7f9fc; }
.assistant-message-user { justify-self:end; border-color:#c8d8ed; background:#eef4fc; }
.assistant-message strong { display:block; margin-bottom:5px; color:var(--forest); font-size:11px; }
.assistant-message p { margin:0; font-size:12px; line-height:1.7; white-space:pre-wrap; overflow-wrap:anywhere; }
.assistant-form { display:grid; gap:8px; padding:15px 16px; border-top:1px solid var(--line); }
.assistant-label { font-size:11px; font-weight:700; }
.assistant-form textarea { width:100%; min-height:86px; padding:10px; border:1px solid var(--line); background:#fff; color:var(--ink); font:inherit; resize:vertical; }
.assistant-form textarea:focus { border-color:var(--forest); outline:2px solid var(--forest-soft); }
.assistant-form-actions { display:flex; justify-content:space-between; align-items:center; gap:10px; }
.assistant-form-actions small,.assistant-footer { color:var(--muted); font-size:10px; }
.assistant-proposal { margin-top:14px; }
.assistant-proposal-details { display:grid; grid-template-columns:110px minmax(0,1fr); gap:8px 12px; margin:14px 0; font-size:11px; }
.assistant-proposal-details dt { color:var(--muted); }
.assistant-proposal-details dd { margin:0; font-weight:600; }
.assistant-notice { max-width:980px; margin-bottom:12px; padding:11px 13px; font-size:11px; }
.assistant-notice-success { border:1px solid #c7d9ce; background:#eef6f0; color:#315d42; }
.assistant-notice-error { border:1px solid #e8c8c3; background:var(--red-soft); color:var(--red); }
.assistant-footer { display:flex; flex-wrap:wrap; gap:12px; max-width:980px; margin-top:12px; }
.assistant-footer a { color:var(--forest); font-weight:700; }
@media (max-width:760px) {
  .assistant-message { max-width:100%; }
  .assistant-proposal-details { grid-template-columns:90px minmax(0,1fr); }
}