:root{color-scheme:light;font-family:Inter,Noto Sans TC,Microsoft JhengHei,PingFang TC,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#eef2f4;color:#17201c;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--surface: #ffffff;--surface-strong: #f8faf9;--ink: #17201c;--muted: #68746f;--line: #dfe7e4;--line-strong: #cbd8d3;--green: #20745f;--green-soft: #e2f3eb;--blue: #2869b4;--blue-soft: #e3effc;--amber: #a76018;--amber-soft: #fff0d4;--red: #bd3d35;--red-soft: #ffe4e1;--violet: #6554a7;--shadow: 0 18px 50px rgba(41, 58, 51, .09)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(135deg,rgba(32,116,95,.08),transparent 34%),linear-gradient(315deg,rgba(167,96,24,.08),transparent 42%),#eef2f4}button,input,select{font:inherit}button{cursor:pointer}.app-shell{display:grid;grid-template-columns:286px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:24px;padding:26px 18px;color:#ecf4f0;background:#13211c}.brand{display:flex;align-items:center;gap:13px;padding:0 4px 8px}.brand-mark{display:grid;width:42px;height:42px;place-items:center;border-radius:8px;color:#123028;background:linear-gradient(135deg,#fff,#9fddc2);font-size:22px;font-weight:900;line-height:1}.brand>div>strong,.brand>div>span{display:block}.brand>div>strong{font-size:18px;letter-spacing:.08em}.brand>div>span{margin-top:2px;color:#a9bbb4;font-size:13px}.department-nav{display:grid;gap:9px}.department-button{width:100%;display:grid;gap:7px;padding:13px 14px;border:1px solid rgba(255,255,255,.08);border-radius:8px;color:#dfe9e5;text-align:left;background:#ffffff0a;transition:transform .16s ease,background .16s ease,border-color .16s ease}.department-button:hover,.department-button.is-active{transform:translate(2px);border-color:#9ddabf6b;background:#e7faf11f}.department-button span{font-size:15px;font-weight:750}.department-button small{display:flex;align-items:center;justify-content:space-between;color:#9fb4ac;font-size:12px}.source-panel{margin-top:auto;display:flex;gap:10px;padding:14px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#ffffff0f}.source-panel p{margin:0;color:#b8c8c2;font-size:12px;line-height:1.55}.workspace{min-width:0;padding:28px}.topbar,.control-strip,.section-heading,.detail-heading,.project-row-meta,.task-main,.task-controls,.topbar-actions,.inspector-grid,.info-cell{display:flex;align-items:center}.topbar{justify-content:space-between;gap:20px;margin-bottom:22px}.topbar h1,.detail-heading h2,.section-heading h2,.task-inspector h2{margin:0;color:var(--ink)}.topbar h1{font-size:clamp(28px,3vw,42px);line-height:1.05}.topbar p{max-width:680px;margin:9px 0 0;color:var(--muted);font-size:15px;line-height:1.6}.topbar-actions{gap:10px}.icon-button,.primary-action{display:inline-flex;align-items:center;justify-content:center;height:42px;border-radius:8px;border:1px solid var(--line);color:var(--ink);background:var(--surface)}.icon-button{width:42px}.primary-action{gap:8px;padding:0 16px;border-color:#1f6f5b;color:#fff;background:#1f6f5b;font-size:14px;font-weight:760}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.metric-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:6px 12px;min-height:110px;padding:18px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}.metric-card>span{grid-row:span 2;display:grid;width:42px;height:42px;place-items:center;border-radius:8px}.metric-card small{color:var(--muted);font-size:13px}.metric-card strong{align-self:end;font-size:30px;line-height:1}.metric-card.blue>span{color:var(--blue);background:var(--blue-soft)}.metric-card.red>span{color:var(--red);background:var(--red-soft)}.metric-card.amber>span{color:var(--amber);background:var(--amber-soft)}.metric-card.green>span{color:var(--green);background:var(--green-soft)}.control-strip{flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:18px}.segmented,.search-box,.select-box{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.segmented{padding:4px}.segmented button{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 12px;border:0;border-radius:6px;color:var(--muted);background:transparent;font-size:13px;font-weight:720}.segmented button.is-selected{color:#fff;background:#23362f}.search-box,.select-box{gap:8px;height:44px;padding:0 12px;color:var(--muted)}.search-box{flex:1;min-width:min(420px,100%)}.search-box input,.select-box select{width:100%;border:0;outline:0;color:var(--ink);background:transparent;font-size:14px}.select-box select{min-width:120px}.content-grid{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(380px,1.35fr);gap:16px;align-items:start;margin-bottom:18px}.project-list{display:grid;gap:10px}.project-row{display:grid;gap:10px;padding:16px;border:1px solid var(--line);border-radius:8px;color:var(--ink);text-align:left;background:#ffffffc2;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.project-row:hover,.project-row.is-active{transform:translateY(-1px);border-color:#8cbcaf;box-shadow:0 16px 30px #24443a1a}.project-row-heading{display:grid;gap:4px}.project-row-heading span,.mini-label{color:var(--green);font-size:12px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}.project-row-heading strong{font-size:16px;line-height:1.35}.project-row p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}.project-row-meta{gap:10px;color:var(--muted);font-size:12px}.priority-dot{width:9px;height:9px;border-radius:999px;background:var(--blue)}.priority-dot.high,.due-chip.high{color:var(--red);background:var(--red-soft)}.priority-dot.normal,.due-chip.normal{color:var(--blue);background:var(--blue-soft)}.priority-dot.watch,.due-chip.watch{color:var(--amber);background:var(--amber-soft)}.progress-track{height:7px;overflow:hidden;border-radius:999px;background:#e6ece9}.progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#1f6f5b,#66a88f)}.detail-panel,.erp-section,.gantt-section,.task-inspector{border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}.detail-panel{padding:18px}.detail-heading{justify-content:space-between;gap:14px;margin-bottom:16px}.detail-heading h2,.section-heading h2,.task-inspector h2{margin-top:4px;font-size:22px;line-height:1.2}.due-chip{display:inline-flex;align-items:center;gap:6px;min-width:max-content;padding:8px 10px;border-radius:8px;font-size:13px;font-weight:820}.department-brief{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:14px;border-radius:8px;background:var(--surface-strong)}.brief-icon{display:grid;width:42px;height:42px;place-items:center;border-radius:8px;color:var(--green);background:var(--green-soft)}.department-brief strong,.department-brief p,.department-brief small{display:block}.department-brief p{margin:4px 0 6px;color:#33423d;font-size:14px;line-height:1.55}.department-brief small{color:var(--muted);font-size:13px;line-height:1.5}.task-stack{display:grid;gap:10px;margin-top:14px}.task-item{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,.55fr);gap:14px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:8px;background:#fff}.task-item.is-selected{border-color:#87b9a9;background:#f8fffb}.task-main{min-width:0;gap:10px}.task-main strong,.task-main small{display:block}.task-main strong{font-size:14px;line-height:1.35}.task-main small{margin-top:3px;color:var(--muted);font-size:12px}.task-status-dot{display:grid;width:30px;height:30px;flex:0 0 auto;place-items:center;border:0;border-radius:999px;color:#fff}.task-status-dot span{width:9px;height:9px;border-radius:inherit;background:currentColor}.task-status-dot.risk{background:var(--red)}.task-status-dot.active{background:var(--blue)}.task-status-dot.waiting{background:var(--amber)}.task-status-dot.done{background:var(--green)}.task-controls{justify-content:end;gap:8px}.task-controls select{min-width:86px;height:32px;border:1px solid var(--line);border-radius:6px;color:var(--ink);background:#fff;font-size:12px}.task-controls input{width:110px;accent-color:var(--green)}.task-controls span{min-width:40px;color:var(--muted);font-size:12px;text-align:right}.gantt-section,.erp-section{padding:18px;margin-bottom:18px}.erp-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.erp-metric{display:grid;gap:7px;min-height:108px;padding:15px;border:1px solid var(--line);border-radius:8px;background:var(--surface-strong)}.erp-metric small{color:var(--muted);font-size:12px;font-weight:780}.erp-metric strong{color:var(--ink);font-size:24px;line-height:1.05}.erp-metric span{color:var(--muted);font-size:12px;line-height:1.45}.erp-metric.active{border-color:#bcd8ce}.erp-metric.warning{border-color:#ead0a0}.erp-metric.danger{border-color:#e8b4af}.erp-tabs{display:inline-flex;gap:4px;padding:4px;margin-bottom:14px;border:1px solid var(--line);border-radius:8px;background:#f5f8f6}.erp-tabs button{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 12px;border:0;border-radius:6px;color:var(--muted);background:transparent;font-size:13px;font-weight:760}.erp-tabs button.is-selected{color:#fff;background:#23362f}.erp-layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:14px;align-items:start}.erp-status-list{display:grid;gap:8px}.erp-status,.status-pill{display:inline-flex;align-items:center;gap:8px;border-radius:999px;font-size:12px;font-weight:760}.erp-status{justify-content:space-between;padding:9px 10px;background:#f3f6f4}.erp-status b{font-size:16px}.erp-status.neutral,.status-pill.neutral{color:#53615c;background:#eef2f0}.erp-status.active,.status-pill.active{color:var(--blue);background:var(--blue-soft)}.erp-status.warning,.status-pill.warning{color:var(--amber);background:var(--amber-soft)}.erp-status.danger,.status-pill.danger{color:var(--red);background:var(--red-soft)}.status-pill{padding:5px 9px;white-space:nowrap}.data-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px}.data-table{width:100%;min-width:920px;border-collapse:collapse;background:#fff}.data-table th,.data-table td{padding:12px 13px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.data-table th{position:sticky;top:0;z-index:1;color:#47554f;background:#eef4f1;font-size:12px;font-weight:850}.data-table td{color:#27332f;font-size:13px;line-height:1.45}.data-table td strong,.data-table td span{display:block}.data-table td strong{font-size:13px}.data-table td span{margin-top:3px;color:var(--muted);font-size:12px}.vendor-grid,.bom-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.vendor-item,.bom-item{display:grid;gap:10px;padding:15px;border:1px solid var(--line);border-radius:8px;background:#fff}.vendor-item>div:first-child,.bom-item>div:first-child{display:flex;align-items:center;gap:8px;color:var(--green)}.vendor-item strong,.bom-item h3{color:var(--ink)}.vendor-item p,.bom-item p{margin:0;color:#33423d;font-size:13px;line-height:1.5}.vendor-item small{color:var(--muted);font-size:12px;line-height:1.45}.vendor-kpis{display:flex;flex-wrap:wrap;gap:7px}.vendor-kpis span{padding:5px 8px;border-radius:999px;color:#34453f;background:#eef4f1;font-size:12px;font-weight:760}.bom-item h3{margin:0;font-size:19px}.bom-item strong{color:#33423d;font-size:14px}.section-heading{justify-content:space-between;gap:16px;margin-bottom:14px}.section-heading p{margin:0;color:var(--muted);font-size:13px}.gantt-board{display:grid;grid-template-columns:270px minmax(780px,1fr);overflow-x:auto;border:1px solid var(--line);border-radius:8px;background:#f8fbfa}.gantt-sidebar-heading,.gantt-axis{position:sticky;top:0;z-index:2;min-height:42px;border-bottom:1px solid var(--line);background:#eef4f1}.gantt-sidebar-heading{left:0;display:flex;align-items:center;padding:0 14px;color:#47554f;font-size:12px;font-weight:850}.gantt-axis{position:relative}.gantt-axis span{position:absolute;top:13px;transform:translate(-1px);color:#5f6c67;font-size:12px;font-weight:780}.gantt-row{display:contents}.gantt-row-label,.gantt-lane{min-height:54px;border-bottom:1px solid var(--line)}.gantt-row-label{position:sticky;left:0;z-index:1;display:grid;align-content:center;gap:3px;padding:8px 14px;border-right:1px solid var(--line);color:var(--ink);text-align:left;background:#fff}.gantt-row-label strong{overflow:hidden;font-size:13px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.gantt-row-label small{overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.gantt-lane{position:relative;min-width:780px;background:linear-gradient(90deg,rgba(37,64,55,.07) 1px,transparent 1px) 0 0 / 10% 100%,#fff}.gantt-row:hover .gantt-row-label,.gantt-row:hover .gantt-lane,.gantt-row.is-selected .gantt-row-label,.gantt-row.is-selected .gantt-lane{background-color:#f5fbf8}.gantt-bar{position:absolute;top:17px;height:20px;overflow:hidden;border-radius:6px;box-shadow:0 8px 18px #16241f24}.gantt-bar>span{display:block;height:100%;background:#ffffff47}.gantt-bar.risk{background:linear-gradient(90deg,#bd3d35,#e47b62)}.gantt-bar.active{background:linear-gradient(90deg,#2869b4,#62a3df)}.gantt-bar.waiting{background:linear-gradient(90deg,#a76018,#d89439)}.gantt-bar.done{background:linear-gradient(90deg,#20745f,#65aa90)}.gantt-bar.is-selected{outline:3px solid rgba(31,111,91,.2)}.today-line{position:absolute;top:0;bottom:0;width:2px;background:#14251f;opacity:.26}.today-line.is-hidden{display:none}.task-inspector{display:grid;grid-template-columns:minmax(0,.92fr) minmax(420px,1fr);gap:20px;align-items:center;padding:18px}.task-inspector p{max-width:760px;margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.55}.status-badge{display:inline-flex;margin-bottom:5px;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:850}.status-badge.green{color:var(--green);background:var(--green-soft)}.status-badge.blue{color:var(--blue);background:var(--blue-soft)}.status-badge.amber{color:var(--amber);background:var(--amber-soft)}.status-badge.red{color:var(--red);background:var(--red-soft)}.inspector-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.info-cell{align-items:flex-start;flex-direction:column;gap:7px;min-height:106px;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--surface-strong)}.info-cell span{color:var(--green)}.info-cell small{color:var(--muted);font-size:12px}.info-cell strong{font-size:14px;line-height:1.35}@media (max-width: 1180px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;gap:16px}.department-nav{grid-template-columns:repeat(4,minmax(150px,1fr))}.source-panel{margin-top:0}.content-grid,.task-inspector{grid-template-columns:1fr}.erp-metrics,.vendor-grid,.bom-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.erp-layout{grid-template-columns:1fr}}@media (max-width: 820px){.workspace{padding:20px 14px}.topbar{align-items:flex-start;flex-direction:column}.topbar-actions,.primary-action,.search-box,.select-box{width:100%}.kpi-grid,.department-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.task-item{grid-template-columns:1fr}.task-controls{justify-content:stretch}.task-controls input{flex:1}.gantt-board{grid-template-columns:220px minmax(680px,1fr)}.gantt-lane{min-width:680px}.inspector-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.erp-tabs{width:100%}.erp-tabs button{flex:1;justify-content:center}}@media (max-width: 560px){.kpi-grid,.erp-metrics,.inspector-grid,.vendor-grid,.bom-grid{grid-template-columns:1fr}.detail-heading,.section-heading{align-items:flex-start;flex-direction:column}.segmented{width:100%}.segmented button{flex:1;justify-content:center}}
