#root{min-height:100vh}:root{--bg:#f5f7fa;--surface:#fff;--surface-soft:#eef4f6;--navy:#14213d;--navy-soft:#253858;--text:#314155;--muted:#6b7a8d;--line:#d9e1e8;--teal:#0f766e;--teal-soft:#dcefed;--orange:#d97706;--orange-soft:#fff2df;--danger:#b45309;--ok:#047857;--radius:8px;color:var(--text);background:var(--bg);font-synthesis:none;letter-spacing:0;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Helvetica Neue,Segoe UI,PingFang TC,Noto Sans TC,Arial,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.42}h1,h2,h3,p{margin:0}table{border-collapse:collapse;width:100%;font-size:14px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:12px 10px}th{color:var(--navy);background:var(--surface-soft);font-weight:700}.app-shell{grid-template-columns:288px minmax(0,1fr);min-height:100vh;display:grid}.side-nav{background:var(--navy);color:#fff;flex-direction:column;gap:24px;height:100vh;padding:28px 22px;display:flex;position:sticky;top:0}.brand-block{gap:12px;display:grid}.brand-block h1{font-size:28px;font-weight:760;line-height:1.18}.brand-block p{color:#c7d2e3;font-size:14px;line-height:1.6}.eyebrow{color:var(--teal);font-size:12px;font-weight:760;line-height:1.3;display:inline-flex}.side-nav .eyebrow{color:#8bd6d0}.side-nav nav{gap:8px;display:grid}.nav-item{border-radius:var(--radius);color:#edf4ff;text-align:left;background:#ffffff0a;border:1px solid #ffffff29;padding:12px 14px}.nav-item.active{color:var(--navy);background:#fff;border-color:#fff}.review-chip{border-radius:var(--radius);color:#c8fffa;border:1px solid #8bd6d07a;margin-top:auto;padding:12px 14px;font-size:14px}.workspace{align-content:start;gap:18px;min-width:0;padding:28px;display:grid}.topbar{border-bottom:2px solid var(--navy);justify-content:space-between;align-items:flex-end;gap:24px;padding-bottom:18px;display:flex}.topbar h2{color:var(--navy);margin-top:6px;font-size:30px;line-height:1.2}.topbar-meta{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.topbar-meta span,.notice-bar{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--muted);padding:10px 12px;font-size:14px}.notice-bar{background:var(--orange-soft);color:#7c4a03;border-color:#f1c27d}.view-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.panel,.metric-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.panel{grid-column:span 2;align-content:start;gap:16px;min-width:0;padding:18px;display:grid}.panel.wide{grid-column:span 4}.section-heading{gap:4px;display:grid}.section-heading h3{color:var(--navy);font-size:20px;line-height:1.25}.metric-card{align-content:space-between;gap:14px;min-height:112px;padding:18px;display:grid}.metric-card span{color:var(--muted);font-size:13px}.metric-card strong{color:var(--navy);font-size:24px;line-height:1.15}.metric-card.strong{background:var(--navy)}.metric-card.strong span,.metric-card.strong strong{color:#fff}.metric-card.warning{background:var(--orange-soft);border-color:#f1c27d}.metric-card.warning strong{color:var(--danger)}.metric-card.ok{background:var(--teal-soft);border-color:#9bd8d1}.metric-card.ok strong{color:var(--ok)}.flow-strip,.package-row,.filter-row,.price-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.flow-step{border-left:4px solid var(--teal);background:var(--surface-soft);border-radius:var(--radius);gap:8px;padding:14px;display:grid}.flow-step span{color:var(--muted);font-size:12px}.flow-step strong{color:var(--navy)}.detail-list{gap:10px;margin:0;display:grid}.detail-list div{border-bottom:1px solid var(--line);grid-template-columns:128px minmax(0,1fr);gap:12px;padding-bottom:10px;display:grid}.detail-list dt{color:var(--muted);font-size:13px}.detail-list dd{color:var(--navy);margin:0;font-weight:650}.stack-list{gap:10px;display:grid}.line-card{border:1px solid var(--line);border-radius:var(--radius);gap:6px;padding:13px;display:grid}.line-card strong{color:var(--navy)}.line-card span,.line-card p{color:var(--muted);font-size:14px;line-height:1.5}.select-filter{color:var(--muted);gap:6px;font-size:13px;display:grid}.select-filter select,.risk-row select,.discount-control input,.basket-row input{border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--navy);background:#fff;padding:10px}.list-button,.package-button{border:1px solid var(--line);border-radius:var(--radius);color:var(--text);text-align:left;background:#fff;gap:8px;padding:14px;display:grid}.list-button.active,.package-button.active{border-color:var(--teal);background:var(--teal-soft)}.list-button strong,.package-button strong{color:var(--navy);font-size:16px}.list-button span,.package-button span,.package-button small{color:var(--muted);line-height:1.5}.module-list,.basket-table,.risk-table,.section-list{gap:10px;display:grid}.module-card{border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:minmax(0,1fr) 168px;gap:14px;padding:14px;display:grid}.module-card span{color:var(--teal);font-size:12px;font-weight:700}.module-card strong{color:var(--navy);margin-top:4px;display:block}.module-card p{color:var(--muted);margin-top:6px;font-size:14px;line-height:1.5}.module-actions{align-content:space-between;justify-items:end;gap:10px;display:grid}.module-actions button,.basket-row button,.section-row button{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-soft);width:36px;height:36px;color:var(--navy);font-weight:760}.segmented{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.segmented button,.export-actions button{border:1px solid var(--line);border-radius:var(--radius);color:var(--navy);background:#fff;padding:10px}.segmented button.active,.export-actions button{background:var(--navy);color:#fff;border-color:var(--navy)}.basket-row{border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:minmax(0,1fr) 82px 36px 36px 36px;align-items:center;gap:8px;padding:10px;display:grid}.basket-row strong{color:var(--navy);display:block}.basket-row span{color:var(--muted);font-size:13px}.discount-control{grid-template-columns:minmax(0,1fr) 96px;align-items:center;gap:12px;display:grid}.risk-row{border:1px solid var(--line);border-radius:var(--radius);border-left-width:6px;grid-template-columns:minmax(0,1.3fr) minmax(160px,.7fr) 180px;align-items:start;gap:14px;padding:14px;display:grid}.risk-row.high{border-left-color:var(--orange)}.risk-row.medium{border-left-color:var(--teal)}.risk-row span,.risk-row p,.risk-row label{color:var(--muted);font-size:14px;line-height:1.5}.risk-row strong{color:var(--navy);margin-top:4px;display:block}.section-row{border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:minmax(0,1fr) 36px 36px;align-items:center;gap:8px;padding:10px;display:grid}.section-row label{color:var(--navy);align-items:center;gap:8px;font-weight:650;display:flex}.preview-box{white-space:pre-wrap;border:1px solid var(--line);border-radius:var(--radius);color:#e5edf8;background:#0f172a;max-height:620px;margin:0;padding:16px;font-size:13px;line-height:1.65;overflow:auto}.validation{border:1px solid var(--line);border-radius:var(--radius);gap:8px;padding:14px;line-height:1.5;display:grid}.validation.ok{background:var(--teal-soft);color:var(--ok);border-color:#9bd8d1}.validation.warn{background:var(--orange-soft);color:var(--danger);border-color:#f1c27d}.export-actions{gap:10px;display:grid}.loading-state{text-align:center;background:var(--bg);min-height:100vh;color:var(--navy);place-content:center;gap:12px;padding:24px;display:grid}.loading-state p{color:var(--muted)}@media (width<=1120px){.app-shell{grid-template-columns:1fr}.side-nav{height:auto;position:static}.side-nav nav{grid-template-columns:repeat(4,minmax(0,1fr))}.view-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel.wide{grid-column:span 2}}@media (width<=760px){.workspace{padding:18px}.topbar{flex-direction:column;align-items:stretch}.topbar-meta{justify-content:flex-start}.side-nav nav,.view-grid,.flow-strip,.package-row,.filter-row,.price-grid,.segmented{grid-template-columns:1fr}.panel,.panel.wide{grid-column:span 1}.module-card,.risk-row,.basket-row{grid-template-columns:1fr}.module-actions{justify-items:start}.detail-list div{grid-template-columns:1fr;gap:4px}}
