*,*:before,*:after{box-sizing:border-box}body{margin:0;padding:0}:root{--primary: #1976D2;--primary-light: #BBDEFB;--accent: #FF5722;--accent-light: #FFCCBC;--success: #4CAF50;--warning: #FF9800;--danger: #f44336;--bg: #f5f6f8;--card-bg: #ffffff;--text: #333;--text-secondary: #666;--border: #e0e0e0;--radius: 8px;--shadow: 0 2px 8px rgba(0,0,0,.08)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans TC,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;background:linear-gradient(135deg,#1565c0,#1976d2);color:#fff;box-shadow:0 2px 8px #00000026}.app-header h1{font-size:20px;font-weight:700;letter-spacing:1px}.subtitle{font-size:12px;opacity:.8;margin-left:12px}.version{font-size:11px;opacity:.6;background:#ffffff26;padding:2px 8px;border-radius:10px}.tab-nav{display:flex;background:#fff;border-bottom:2px solid var(--border);padding:0 24px}.tab-nav button{padding:10px 16px;border:none;background:none;font-size:13px;font-weight:500;color:var(--text-secondary);cursor:pointer;border-bottom:3px solid transparent;transition:all .2s}.tab-nav button:hover{color:var(--primary)}.tab-nav button.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.app-main{flex:1;padding:16px 24px;overflow-y:auto}.app-footer{display:flex;justify-content:space-between;padding:8px 24px;background:#263238;color:#ffffffb3;font-size:11px}.calc-layout{display:grid;grid-template-columns:var(--calc-left, 360px) 8px 1fr;gap:4px;align-items:start}.wheel-type-bar{flex-wrap:wrap}.wheel-type-bar .btn-primary,.wheel-type-bar .btn-secondary{flex:1 1 auto}.calc-splitter{cursor:col-resize;align-self:stretch;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .15s;touch-action:none}.calc-splitter:hover,body.col-resizing .calc-splitter{background:#dbe7f5}.calc-splitter-grip{width:3px;height:46px;border-radius:2px;background:#b9c6d4}.calc-splitter:hover .calc-splitter-grip,body.col-resizing .calc-splitter-grip{background:var(--primary)}body.col-resizing{user-select:none;cursor:col-resize}.input-panel{display:flex;flex-direction:column;gap:12px;padding-right:8px;container-type:inline-size}.result-panel{display:flex;flex-direction:column;gap:16px}.result-top-row{display:flex;gap:16px;align-items:flex-start}.result-top-row>:first-child{flex:1}.stream-input{background:var(--card-bg);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.stream-input h3{font-size:13px;margin-bottom:10px;font-weight:600}.geometry-input{background:var(--card-bg);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.geometry-input h3{font-size:13px;margin-bottom:10px}.geometry-input h4{font-size:12px;margin:10px 0 6px;color:var(--text-secondary)}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.input-panel .field-grid{grid-template-columns:1fr}.input-panel .sector-angles{grid-template-columns:1fr 1fr}@container (min-width: 520px){.input-panel .field-grid{grid-template-columns:1fr 1fr}.input-panel .sector-angles{grid-template-columns:1fr 1fr 1fr}}.angle-total{text-align:right;font-size:11px;font-weight:600;margin-top:4px}.field-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.field-row label{font-size:12px;color:var(--text-secondary);min-width:56px;flex-shrink:0}.field-row select,.field-row .input-group{flex:1;min-width:0}.input-group{display:flex;align-items:center;gap:4px;min-width:0}.input-group input{width:100%;min-width:50px;padding:5px 6px;border:1px solid var(--border);border-radius:4px;font-size:13px;text-align:right;transition:border-color .2s}.input-group input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px #1976d21a}.unit{font-size:11px;color:var(--text-secondary);min-width:22px;white-space:nowrap;flex-shrink:0}select{padding:5px 8px;border:1px solid var(--border);border-radius:4px;font-size:12px;background:#fff;cursor:pointer}.action-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.action-buttons .btn-primary{flex:1 1 100%}.action-buttons .btn-secondary{flex:1 1 auto}.btn-primary{background:var(--primary);color:#fff;border:none;padding:10px 20px;border-radius:var(--radius);font-size:14px;font-weight:600;cursor:pointer;transition:background .2s;flex:1;white-space:nowrap}.btn-primary:hover{background:#1565c0}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:#fff;color:var(--primary);border:2px solid var(--primary);padding:8px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap}.btn-secondary:hover{background:var(--primary-light)}.btn-sm{background:var(--primary);color:#fff;border:none;padding:4px 12px;border-radius:4px;font-size:12px;cursor:pointer;white-space:nowrap}.btn-sm:hover{background:#1565c0}.btn-large{padding:12px 24px;font-size:15px}.results-table{background:var(--card-bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.results-table h3{font-size:14px;margin-bottom:12px}.results-table table{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:16px}.results-table th{padding:6px 10px;text-align:right;border-bottom:2px solid var(--border);font-weight:600;font-size:11px}.results-table th:first-child{text-align:left}.results-table td{padding:5px 10px;text-align:right;border-bottom:1px solid #f0f0f0}.results-table td:first-child{text-align:left;color:var(--text-secondary)}.highlight-row td{background:#e3f2fd}.highlight-value{font-weight:700;color:var(--primary);font-size:13px}.results-placeholder{background:var(--card-bg);border-radius:var(--radius);padding:40px;text-align:center;color:var(--text-secondary);box-shadow:var(--shadow)}.metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.metric-card{text-align:center;padding:10px 8px;background:#f8f9fa;border-radius:6px;border:1px solid #eee}.metric-card.primary{background:#e3f2fd;border-color:#90caf9}.metric-label{font-size:10px;color:var(--text-secondary);margin-bottom:2px}.metric-value{font-size:18px;font-weight:700;color:var(--text)}.metric-unit{font-size:10px;color:var(--text-secondary)}.balance-row{display:flex;justify-content:space-around;font-size:12px;padding:8px;background:#f8f9fa;border-radius:4px;margin-bottom:8px}.warnings{margin-top:8px}.warning-item{padding:6px 10px;background:#fff3e0;border-left:3px solid var(--warning);font-size:12px;margin-bottom:4px;border-radius:0 4px 4px 0}.selection-panel{background:var(--card-bg);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);max-width:900px}.selection-panel h3{font-size:16px;margin-bottom:16px}.selection-inputs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}.selection-inputs .btn-primary{grid-column:1 / -1}.selection-results table{width:100%;border-collapse:collapse;font-size:12px}.selection-results th{padding:8px;text-align:left;border-bottom:2px solid var(--border);font-size:11px;font-weight:600}.selection-results td{padding:6px 8px;border-bottom:1px solid #f0f0f0}.selection-results .best-match td{background:#e8f5e9}.no-results{padding:20px;text-align:center;color:var(--text-secondary)}.score-bar{display:flex;align-items:center;gap:6px;width:100%}.score-fill{height:8px;background:linear-gradient(90deg,#4caf50,#8bc34a);border-radius:4px;flex:1}.score-bar span{font-size:11px;font-weight:600;min-width:24px}.psychro-chart,.speed-chart{background:var(--card-bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.psychro-chart h3,.speed-chart h3{font-size:14px;margin-bottom:8px}.wheel-diagram{display:flex;justify-content:center;padding:8px}.template-grid h2{font-size:18px;margin-bottom:4px}.template-grid>p{color:var(--text-secondary);margin-bottom:16px}.template-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.template-card{background:var(--card-bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);cursor:pointer;transition:all .2s;border:2px solid transparent}.template-card:hover{border-color:var(--primary);box-shadow:0 4px 16px #1976d226;transform:translateY(-2px)}.template-card h3{font-size:15px;margin-bottom:6px;color:var(--primary)}.template-card p{font-size:12px;color:var(--text-secondary);margin-bottom:10px}.template-specs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.template-specs span{font-size:11px;padding:2px 8px;background:#f0f4f8;border-radius:10px}.template-materials{font-size:11px;color:var(--text-secondary);margin-bottom:10px}.purge-toggle{background:var(--card-bg);border-radius:var(--radius);padding:10px 14px;box-shadow:var(--shadow);font-size:13px;display:flex;align-items:center;gap:10px}.purge-toggle label{display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:500;color:#4caf50}.purge-toggle input[type=checkbox]{width:16px;height:16px;accent-color:#4CAF50}.purge-hint{font-size:11px;color:var(--warning)}.validation-warnings{margin-top:8px}.validation-item{padding:5px 10px;font-size:12px;margin-bottom:3px;border-radius:4px}.validation-error{background:#ffebee;border-left:3px solid #f44336;color:#c62828}.validation-warning{background:#fff3e0;border-left:3px solid #FF9800;color:#e65100}.validation-info{background:#e3f2fd;border-left:3px solid #2196F3;color:#1565c0}.dual-wheel-panel{max-width:1100px}.dual-wheel-panel h2{font-size:18px;margin-bottom:4px}.panel-desc{color:var(--text-secondary);font-size:13px;margin-bottom:16px}.dual-shared-inputs{background:var(--card-bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:16px}.dual-shared-inputs h4{font-size:13px;margin-bottom:10px;color:var(--text-secondary)}.dual-configs{display:flex;gap:12px;align-items:stretch}.dual-wheel-config{flex:1;background:var(--card-bg);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.dual-wheel-config h4{font-size:13px;margin-bottom:10px;font-weight:600}.dual-arrow{display:flex;align-items:center;font-size:28px;color:var(--text-secondary);font-weight:700;padding:0 4px}.dual-results{background:var(--card-bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-top:16px}.dual-results h3{font-size:15px;margin-bottom:12px}.dual-results-table{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:16px}.dual-results-table th{padding:6px 8px;text-align:center;border-bottom:2px solid var(--border);font-size:11px;font-weight:600}.dual-results-table td{padding:5px 8px;text-align:center;border-bottom:1px solid #f0f0f0}.dual-results-table .row-process td{background:#f5f5f5}.dual-results-table .row-w1 td{background:#e3f2fd}.dual-results-table .row-w2 td{background:#fff3e0}.dual-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.dual-detail-grid>div{padding:10px;background:#f8f9fa;border-radius:6px;font-size:12px}.dual-detail-grid h4{font-size:12px;margin-bottom:6px}.batch-calc{max-width:1100px}.batch-calc h2{font-size:18px;margin-bottom:4px}.batch-shared{background:var(--card-bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:16px}.batch-shared h4{font-size:13px;margin-bottom:10px;color:var(--text-secondary)}.batch-conditions{background:var(--card-bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.batch-conditions h4{font-size:13px;margin-bottom:10px}.batch-conditions table{width:100%;border-collapse:collapse;font-size:12px}.batch-conditions th{padding:6px 8px;text-align:center;border-bottom:2px solid var(--border);font-size:11px}.batch-conditions td{padding:4px 6px;text-align:center}.batch-conditions input{width:80px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;font-size:12px;text-align:center}.batch-conditions input[type=text]{width:100px;text-align:left}.batch-results{background:var(--card-bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-top:16px}.batch-results h3{font-size:15px;margin-bottom:12px}.batch-results table{width:100%;border-collapse:collapse;font-size:12px}.batch-results th{padding:6px 8px;text-align:center;border-bottom:2px solid var(--border);font-size:11px;font-weight:600}.batch-results td{padding:5px 8px;text-align:center;border-bottom:1px solid #f0f0f0}.energy-saving{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.es-header{padding:12px 16px;cursor:pointer;user-select:none;border-bottom:1px solid var(--border);transition:background .15s}.es-header:hover{background:#f5f7fa}.es-header h3{font-size:14px;margin-bottom:2px;color:#2e7d32}.es-subtitle{font-size:11px;color:var(--text-secondary)}.es-body{padding:14px 16px}.es-controls{display:flex;gap:16px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.es-controls .field-row{margin-bottom:0}.es-controls label{font-size:12px;display:flex;align-items:center;gap:4px}.es-flow{background:#f1f8e9;border:1px solid #C5E1A5;border-radius:6px;padding:12px;margin-bottom:14px}.es-flow-row{display:flex;align-items:center;gap:4px;justify-content:center;flex-wrap:wrap}.es-flow-box{padding:6px 10px;border-radius:4px;font-size:11px;text-align:center;font-weight:500;white-space:nowrap}.es-ambient{background:#e3f2fd;color:#1565c0;border:1px solid #90CAF9}.es-hx{background:#fff9c4;color:#f57f17;border:1px solid #FFF176}.es-preheat{background:#ffecb3;color:#e65100;border:1px solid #FFD54F}.es-heater{background:#ffccbc;color:#bf360c;border:1px solid #FF8A65}.es-regen{background:#ffcdd2;color:#c62828;border:1px solid #EF9A9A}.es-flow-arrow{font-size:16px;color:#999}.es-flow-label{text-align:center;font-size:10px;color:#666;margin-top:6px}.es-detail-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:10px}.es-detail-table td{padding:4px 8px;border-bottom:1px solid #f0f0f0}.es-detail-table td:first-child{color:var(--text-secondary)}.es-detail-table td:last-child{text-align:right;font-weight:500}.quick-ref{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);margin-top:16px;overflow:hidden}.quick-ref-header{padding:12px 16px;cursor:pointer;user-select:none;border-bottom:1px solid var(--border);transition:background .15s}.quick-ref-header:hover{background:#f5f7fa}.quick-ref-header h3{font-size:14px;margin-bottom:2px;color:var(--primary)}.quick-ref-subtitle{font-size:11px;color:var(--text-secondary)}.quick-ref-body{padding:12px 16px}.quick-ref-controls{display:flex;gap:12px;align-items:center;margin-bottom:12px}.quick-ref-controls .field-row{margin-bottom:0}.quick-ref-table{width:100%;border-collapse:collapse;font-size:11px}.quick-ref-table th{padding:5px 6px;text-align:center;border:1px solid var(--border);font-weight:600;font-size:10px;white-space:nowrap}.quick-ref-table td{padding:4px 6px;text-align:center;border:1px solid #eee}.quick-ref-table .col-group-lo{background:#e3f2fd;color:#1565c0}.quick-ref-table .col-group-hi{background:#fff3e0;color:#e65100}.quick-ref-table .model-cell{text-align:left}.quick-ref-table .mrc-cell{font-weight:700;color:var(--primary)}.quick-ref-table tbody tr:hover{background:#f5f5f5}.perf-curves{max-width:1400px}.perf-curves h2{font-size:18px;margin-bottom:4px}.perf-controls{background:var(--card-bg);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);margin-bottom:16px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}.perf-controls .field-row{margin-bottom:0}.perf-info{display:flex;gap:12px;flex-wrap:wrap}.perf-info span{font-size:11px;padding:3px 8px;background:#f0f4f8;border-radius:10px;color:var(--text-secondary)}.perf-chart-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.perf-chart-box{background:var(--card-bg);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow)}.perf-chart-box h4{font-size:12px;color:var(--text-secondary);margin-bottom:6px}.perf-chart-box svg{cursor:crosshair;display:block;margin:0 auto}.perf-readout{background:var(--card-bg);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);margin-bottom:12px}.perf-readout h4{font-size:13px;margin-bottom:8px;color:var(--primary)}.perf-readout table{width:100%;border-collapse:collapse;font-size:12px}.perf-readout th{padding:5px 8px;text-align:center;border-bottom:2px solid var(--border);font-size:11px;font-weight:600}.perf-readout td{padding:4px 8px;text-align:center;border-bottom:1px solid #f0f0f0}.perf-legend{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;font-size:12px}.legend-line{display:inline-block;width:20px;height:3px;vertical-align:middle;margin-right:4px;border-radius:2px}.panel-section{background:var(--card-bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:16px}.panel-section h3{font-size:15px;margin-bottom:12px}.panel-section h4{font-size:13px;margin-bottom:10px;color:var(--text-secondary)}.section-box{background:var(--card-bg);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:16px}.section-box h4{font-size:13px;margin-bottom:10px;color:var(--text-secondary)}.system-energy-panel,.regen-optimizer,.energy-economics-panel{max-width:1100px}.system-energy-panel h2,.regen-optimizer h2,.energy-economics-panel h2{font-size:18px;margin-bottom:4px}.metric-sublabel{font-size:9px;color:var(--text-secondary);margin-top:2px}.tab-nav{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.tab-nav button{white-space:nowrap;flex-shrink:0}@media(max-width:960px){.calc-layout{grid-template-columns:1fr;gap:16px}.calc-splitter{display:none}.result-top-row{flex-direction:column}.selection-inputs{grid-template-columns:1fr 1fr}.dual-configs{flex-direction:column}.dual-arrow{transform:rotate(90deg);justify-content:center}.dual-detail-grid{grid-template-columns:1fr}.tab-nav{flex-wrap:wrap}.perf-chart-pair{grid-template-columns:1fr}}@media(max-width:600px){.app-header{padding:10px 16px}.app-header h1{font-size:16px}.app-main{padding:12px}.metrics-grid{grid-template-columns:repeat(2,1fr)}.selection-inputs,.template-cards{grid-template-columns:1fr}}@media print{.tab-nav,.input-panel,.header-right,.action-buttons,.calc-splitter,button,select,input[type=range],.no-print{display:none!important}.app-header{border-bottom:1px solid #999;padding:6px 0}.app-main{padding:0}.calc-layout{display:block!important}body{background:#fff}}@media(max-width:600px){.results-panel table,.batch-table,.comparison-table{display:block;overflow-x:auto}}

.pm-engineering{max-width:1450px;margin:0 auto}.pm-heading{display:flex;gap:16px;justify-content:space-between;align-items:flex-start}.pm-heading h2{margin:4px 0 8px;color:#173b5b}.pm-status{white-space:nowrap;background:#e8f2ef;color:#24644b;padding:7px 12px;border-radius:16px;font-size:12px}.pm-dirty{background:#fff1d7;color:#805500}.pm-fieldset{border:0;padding:0;margin:0;min-width:0}.pm-section{border:1px solid #d6dfe8;border-radius:8px;padding:18px;margin:16px 0;background:#fff}.pm-section h3{margin:0 0 14px;color:#173b5b}.pm-section summary{font-weight:600;cursor:pointer;color:#173b5b}.pm-final{background:#f3f8fc;border-color:#adc7da}.pm-fields{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0}.pm-field{display:flex;flex-direction:column;gap:5px;flex:1 1 180px;font-size:13px;max-width:420px}.pm-field input,.pm-field select,.pm-field textarea,.pm-scenario-name input{box-sizing:border-box;max-width:100%;padding:8px;border:1px solid #bac8d4;border-radius:4px;background:#fff;color:#263644;font:inherit}.pm-field input[readonly]{background:#edf2f6}.pm-field input:focus,.pm-field textarea:focus{outline:2px solid #9bc5e5}.pm-actions{display:flex;flex-wrap:wrap;gap:7px;align-items:center}.pm-actions button{white-space:nowrap}.pm-table-scroll{overflow-x:auto;margin:12px 0}.pm-table-scroll th,.pm-table-scroll td{vertical-align:top;padding:9px}.pm-scenario-name{min-width:190px;display:flex;flex-direction:column;gap:6px}.pm-table-scroll td .pm-actions{min-width:135px}.pm-message,.pm-alert{padding:12px 14px;border-radius:5px;margin:10px 0;font-size:14px}.pm-message{background:#eaf5ee;color:#245b39}.pm-alert{background:#fcecec;color:#992c2c}.pm-warning{color:#855508}.pm-engineering .panel-desc{line-height:1.65;font-size:12px;color:#526575}.pm-engineering fieldset[disabled]{opacity:.72}@media(max-width:700px){.pm-heading{display:block}.pm-section{padding:12px}.pm-fields{gap:9px}.pm-field{flex-basis:140px}.pm-heading .pm-status{display:inline-block;margin:8px 0}} 
