html,body,#app{width:100%;height:100%;overflow:hidden}*{box-sizing:border-box;margin:0;padding:0}.heat-exchanger-app{background:#f0f4f8;flex-direction:column;width:100%;height:100vh;font-family:Segoe UI,微软雅黑,system-ui,sans-serif;font-size:clamp(14px,1.2vw,20px);display:flex;position:fixed;inset:0;overflow:hidden}.top-nav{color:#fff;background:linear-gradient(135deg,#1a3e60 0%,#2c5a7a 100%);flex-shrink:0;justify-content:space-between;align-items:center;min-height:50px;padding:1px 10px;display:flex;box-shadow:0 2px 6px #0000001a}.nav-left-group{align-items:center;gap:30px;display:flex}.nav-left h1{margin:0;font-size:18px;line-height:1.2}.nav-left p{opacity:.8;margin:2px 0 0;font-size:11px}.nav-center{align-items:center;display:flex}.region-options{gap:20px;display:flex}.region-option{cursor:pointer;color:#ffffffb3;align-items:center;gap:6px;font-size:12px;font-weight:500;transition:all .2s;display:flex}.region-option:hover{color:#fffffff2}.region-option.active{color:#4fc3f7}.radio-custom{box-sizing:border-box;border:2px solid #ffffff80;border-radius:50%;width:14px;height:14px;transition:all .2s;display:inline-block;position:relative}.region-option.active .radio-custom{background:#4fc3f7;border-color:#4fc3f7;box-shadow:inset 0 0 0 3px #1a3e60}.nav-right{align-items:center;gap:15px;display:flex}.current-region-badge{color:#e0e0e0;background:#ffffff1a;border:1px solid #ffffff26;border-radius:16px;padding:4px 12px;font-size:12px}.toolbar{gap:8px;display:flex}.tool-btn{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:5px;align-items:center;gap:5px;padding:5px 12px;font-size:11px;transition:all .2s;display:flex}.tool-btn:hover{background:#fff3}@media (width<=768px){.top-nav{flex-direction:column;gap:8px;min-height:auto;padding:8px 12px}.nav-left-group{flex-direction:column;gap:8px;width:100%}.nav-left{text-align:center;width:100%}.nav-center{justify-content:center;width:100%}.region-options{gap:12px}.region-option{font-size:11px}.nav-right{flex-wrap:wrap;justify-content:center;width:100%}.nav-left h1{font-size:16px}.current-region-badge{padding:3px 10px;font-size:11px}.tool-btn{padding:4px 8px;font-size:10px}}@media (width<=480px){.region-options{flex-wrap:wrap;justify-content:center;gap:8px}.region-option{font-size:10px}.radio-custom{width:12px;height:12px}.nav-right{gap:8px}.current-region-badge{padding:2px 8px;font-size:10px}.toolbar{gap:5px}.tool-btn{padding:3px 6px;font-size:9px}}.main-content{flex:1;grid-template-columns:repeat(3,1fr);align-content:start;gap:.75rem;width:100%;height:100%;padding:.75rem;display:grid;overflow:hidden auto}.column{flex-direction:column;flex:1;gap:.5rem;height:100%;padding:0 .1rem;display:flex;overflow:visible}.column .section-card{flex-shrink:0}.column>:last-child{margin-top:auto}.column::-webkit-scrollbar{display:none}.section-card{background:#fff;border-radius:8px;flex-grow:1;flex-shrink:0;margin-bottom:.3rem;padding:.4rem .6rem;box-shadow:0 1px 4px #0000000f}.section-card:last-child{margin-bottom:0}.section-card.compact{padding:.3rem .5rem}.section-header{border-bottom:1px solid #e9ecef;margin-bottom:.25rem;padding-bottom:.15rem}.section-header h3{color:#1a3e60;font-size:.8rem;font-weight:600}.form-item{margin-bottom:.3rem}.form-item label{color:#495057;margin-bottom:1px;font-size:.7rem;font-weight:500;display:block}.form-row{gap:1rem;width:100%;margin-bottom:.3rem;display:flex}.form-item.half{flex:1;width:50%;min-width:0;margin-bottom:0}.form-item.half .input-with-unit{gap:.4rem;width:100%;display:flex}.form-item.half .input-with-unit .text-input{flex:1;width:auto;min-width:0}.form-item.half label{margin-bottom:1px}.select-input,.text-input{border:1px solid #dee2e6;border-radius:4px;width:100%;padding:.2rem .4rem;font-size:.7rem;transition:all .2s}.select-input:focus,.text-input:focus{border-color:#2c7da0;outline:none;box-shadow:0 0 0 2px #2c7da01a}.select-input:disabled,.text-input:disabled{cursor:not-allowed;background-color:#e9ecef}.input-with-unit{align-items:center;gap:.4rem;display:flex}.input-with-unit .text-input{flex:1}.unit{color:#6c757d;white-space:nowrap;font-size:.65rem}.calc-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#ff8c00,#ff6b00);border:none;border-radius:6px;width:100%;margin-top:.2rem;padding:.3rem;font-size:.8rem;font-weight:600;transition:all .2s}.calc-btn:hover{transform:translateY(-1px);box-shadow:0 2px 8px #ff6b004d}.calc-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.warning-area{gap:.5rem;display:flex}.warning-box{flex:1}.warning-box h4{color:#e67e22;margin-bottom:.1rem;font-size:.7rem;font-weight:600}.warning-text{resize:vertical;background:#fff8e8;border:1px solid #ffe0b5;border-radius:4px;width:100%;height:32px;padding:2px 4px;font-family:monospace;font-size:.65rem}.dimension-grid{grid-template-columns:repeat(2,1fr);gap:.3rem;display:grid}.dim-item{background-color:#f9f9f9;border-radius:6px;align-items:center;gap:.3rem;min-width:0;padding:2px 4px;transition:all .3s;display:flex}.dim-item:hover{background-color:#f0f0f0}.dim-label{color:#333;flex-shrink:0;width:80px;min-width:2rem;font-size:.7rem;font-weight:600}.dim-input{box-sizing:border-box;background-color:#fff;border:1px solid #ddd;border-radius:4px;flex:1;width:100%;min-width:0;max-width:100%;height:22px;padding:1px 3px;font-size:.7rem;transition:all .3s}.dim-input:read-only,.dim-input:disabled{color:#666;cursor:not-allowed;background-color:#f5f5f5;border-color:#e0e0e0}.dim-input:not(:read-only):not(:disabled){background-color:#fff;border-color:#4caf50}.dim-input:not(:read-only):not(:disabled):focus{border-color:#45a049;outline:none;box-shadow:0 0 0 2px #4caf5033}.dim-input[type=number]{-moz-appearance:textfield}.dim-input[type=number]::-webkit-inner-spin-button{opacity:.5;margin:0}.dim-input[type=number]::-webkit-outer-spin-button{opacity:.5;margin:0}.dim-unit{color:#999;text-align:left;flex-shrink:0;width:50px;margin-left:4px;font-size:.65rem}.results-container{flex-direction:column;gap:.5rem;display:flex}.results-season{margin-bottom:.3rem}.results-season h4{border-bottom:1.5px solid;margin-bottom:.2rem;padding-bottom:.1rem;font-size:.75rem;font-weight:600}.results-season .summer-title{color:#e67e22;border-bottom-color:#e67e22}.results-season .winter-title{color:#3498db;border-bottom-color:#3498db}.result-item{border-bottom:1px solid #f0f0f0;justify-content:space-between;padding:2px 0;font-size:.7rem;line-height:1.2;display:flex}.result-item:last-child{border-bottom:none}.result-value{color:#1a3e60;font-weight:600}.season-title{color:#495057;margin:.3rem 0 .15rem;padding-left:2px;font-size:.75rem;font-weight:600}.select-wrapper{position:relative}.loading-spinner{color:#2c7da0;align-items:center;gap:5px;margin-top:2px;font-size:.65rem;display:flex}.spinner{border:2px solid #e9ecef;border-top-color:#2c7da0;border-radius:50%;width:10px;height:10px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.params-table{border:1px solid #e9ecef;border-radius:5px;margin:.2rem 0;overflow-x:auto}.table-header-group{flex-direction:column;display:flex}.table-header-row{grid-template-columns:180px 1fr 1fr 1fr 1fr 60px;display:grid}.header-group{background:#f8f9fa;border-bottom:1px solid #e9ecef}.th-group{color:#495057;border-right:1px solid #e9ecef;justify-content:center;align-items:center;padding:2px 0;font-size:.7rem;font-weight:600;display:flex}.th-group.cooling-header{background:#f0f7fc;grid-column:2/4}.th-group.heating-header{background:#f0f7fc;grid-column:4/6}.th-group.first-col{border-right:none;grid-column:1/2}.th-group.unit-header{border-right:none;grid-column:6/7}.header-columns{background:#f8f9fa;border-bottom:1px solid #e9ecef}.th-col{color:#495057;text-align:center;border-right:1px solid #e9ecef;padding:2px 0;font-size:.65rem;font-weight:600}.th-col:last-child{border-right:none}.param-col{text-align:left;padding-left:.5rem}.table-body .table-row{border-bottom:1px solid #e9ecef;grid-template-columns:180px 1fr 1fr 1fr 1fr 60px;display:grid}.table-body .table-row:last-child{border-bottom:none}.td{text-align:center;border-right:1px solid #e9ecef;justify-content:center;align-items:center;min-height:24px;padding:2px;font-size:.7rem;line-height:1.2;display:flex}.td:last-child{border-right:none}.param-td{text-align:left;color:#333;justify-content:flex-start;padding-left:.5rem;font-weight:500}.data-td{background:#fff}.unit-td{color:#6c757d;background:#f8f9fa;font-size:.6rem;font-weight:500}.param-select{cursor:pointer;text-align:left;background-color:#fff;border:1px solid #dee2e6;border-radius:3px;width:95%;min-width:130px;height:22px;padding:1px 3px;font-size:.7rem;font-weight:500}.param-select:focus{border-color:#2c7da0;outline:none;box-shadow:0 0 0 2px #2c7da01a}.table-input-sm{text-align:center;background:#fff;border:1px solid #dee2e6;border-radius:3px;width:90%;max-width:90px;height:22px;padding:1px 3px;font-size:.7rem}.table-input-sm:focus{border-color:#2c7da0;outline:none;box-shadow:0 0 0 2px #2c7da01a}.io-table{border:1px solid #e9ecef;border-radius:5px;margin:.2rem 0;overflow-x:auto}.io-table-header{background:#f8f9fa;border-bottom:1px solid #e9ecef;grid-template-columns:85px 1fr 1fr 1fr 1fr 52px;display:grid}.io-table-header .io-th{color:#495057;text-align:center;border-right:1px solid #e9ecef;padding:2px;font-size:.6rem;font-weight:600}.io-table-row{border-bottom:1px solid #e9ecef;grid-template-columns:85px 1fr 1fr 1fr 1fr 52px;display:grid}.io-table-row:last-child{border-bottom:none}.io-table-row .io-td{color:#495057;text-align:center;border-right:1px solid #e9ecef;justify-content:center;align-items:center;min-height:22px;padding:2px;font-size:.65rem;display:flex}.io-input{text-align:center;background:#f8f9fa;border:1px solid #dee2e6;border-radius:3px;width:100%;height:20px;padding:1px 2px;font-size:.65rem}.io-input:read-only{background:#f8f9fa}.unit-col{color:#6c757d;text-align:center;background-color:#f8f9fa;font-size:.6rem;font-weight:500}@media (width<=1024px){.table-header-row,.table-body .table-row{grid-template-columns:150px 1fr 1fr 1fr 1fr 50px}.td,.th-col,.th-group{padding:1px 0;font-size:.65rem}.param-select{min-width:100px;height:20px;font-size:.65rem}.table-input-sm{max-width:60px;height:20px;font-size:.65rem}.io-table-header,.io-table-row{grid-template-columns:70px 1fr 1fr 1fr 1fr 40px}}@media (width<=768px){.table-header-row,.table-body .table-row{grid-template-columns:120px 1fr 1fr 1fr 1fr 40px}.td,.th-col,.th-group{font-size:.6rem}.param-select{min-width:80px;height:18px;font-size:.6rem}.table-input-sm{max-width:50px;height:18px;font-size:.6rem}.io-table-header,.io-table-row{grid-template-columns:55px 1fr 1fr 1fr 1fr 35px}.io-td,.io-th{font-size:.55rem}}@media (width<=480px){.table-header-row,.table-body .table-row{grid-template-columns:90px 1fr 1fr 1fr 1fr 35px}.td,.th-col,.th-group{font-size:.55rem}.param-select{min-width:60px;height:16px;font-size:.55rem}.table-input-sm{max-width:40px;height:16px;font-size:.55rem}.io-table-header,.io-table-row{grid-template-columns:45px 1fr 1fr 1fr 1fr 30px}.io-td,.io-th{font-size:.5rem}}.model-image-card{min-height:200px;margin-top:.5rem;overflow:hidden}.model-image-card .section-header{margin-bottom:.25rem;padding-bottom:.1rem}.model-image-card .section-header h3{margin:0;font-size:.8rem}.model-image-container{background-color:#fff;border:1px solid #e0e0e0;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;width:100%;height:auto;min-height:180px;padding:0;display:flex;overflow:hidden}.model-image-wrapper{flex-direction:column;justify-content:center;align-items:center;width:100%;height:auto;min-height:120px;padding:8px 0;display:flex}.model-image{object-fit:contain;object-position:center;width:auto;max-width:100%;height:auto;min-height:60px;max-height:200px;padding:4px;display:block}.image-overlay-info{color:#1a3e60;text-align:left;background:#fffffff2;border-top:1px solid #e0e0e0;flex-shrink:0;width:100%;min-height:32px;margin-top:auto;padding:6px 12px}.overlay-model{letter-spacing:.5px;color:#1a3e60;word-break:break-all;padding:0 4px;font-family:Segoe UI,Helvetica Neue,Arial,sans-serif;font-size:16px;font-weight:700;line-height:1.4}.ahri-badge{object-fit:contain;background-color:#ffffffe6;border-radius:4px;flex-shrink:0;width:70px;height:auto;margin:4px 8px 0 auto;padding:3px 6px;display:block;box-shadow:0 1px 3px #0000001a}.ahri-badge:hover{cursor:pointer;transition:transform .2s;transform:scale(1.05)}.ahri-badge.small{width:50px}.ahri-badge.medium{width:70px}.ahri-badge.large{width:90px}.ahri-badge.xlarge{width:110px}.image-placeholder{text-align:center;color:#999;width:100%;padding:30px 0;font-size:.7rem}.image-placeholder p{margin:0;padding:0}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width<=768px){.model-image-card{min-height:160px}.model-image-container{min-height:140px}.model-image-wrapper{min-height:100px}.model-image{min-height:40px;max-height:140px;padding:4px}.image-overlay-info{min-height:28px;padding:4px 10px}.overlay-model{font-size:11px}.ahri-badge{width:55px}}@media (width<=480px){.model-image-card{min-height:130px}.model-image-container{min-height:110px}.model-image-wrapper{min-height:80px}.model-image{min-height:30px;max-height:100px;padding:3px}.image-overlay-info{min-height:24px;padding:3px 8px}.overlay-model{font-size:10px;line-height:1.3}.ahri-badge{width:45px;padding:2px 4px}}@media (width<=360px){.model-image-card{min-height:100px}.model-image-container{min-height:90px}.model-image-wrapper{min-height:60px}.model-image{min-height:20px;max-height:80px;padding:2px}.image-overlay-info{min-height:20px;padding:2px 6px}.overlay-model{font-size:9px;line-height:1.2}.ahri-badge{width:35px;padding:2px 4px}}@media (width<=1200px){.main-content{grid-template-columns:1fr 1fr;gap:.5rem;padding:.5rem}}@media (width<=992px){.table-header-row,.table-body .table-row{grid-template-columns:130px 1fr 1fr 1fr 1fr 45px}}@media (width<=768px){.main-content{grid-template-columns:1fr;gap:.5rem;padding:.5rem;overflow:hidden auto}.column{min-width:unset;width:100%;height:auto;max-height:none;overflow:visible}}@media (width<=480px){.main-content{gap:.3rem;padding:.3rem}.section-card{padding:.2rem .3rem}.section-header h3{font-size:.7rem}}@media (width<=360px){.main-content{gap:.2rem;padding:.2rem}.section-card{border-radius:4px;padding:.15rem .2rem}.form-item label{font-size:.6rem}.select-input,.text-input{padding:.15rem .3rem;font-size:.6rem}}
