:root{--bg:#08111f;--bg-elevated:#0d1b30;--panel:#0f2038;--border:#1c3a5e;--text:#e6f1ff;--text-muted:#8fa8c8;--cyan:#22d3ee;--blue:#3b82f6;--ok:#34d399;--warn:#fbbf24;--error:#f87171;--radius:12px;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{min-height:100vh;font-family:var(--font);color:var(--text);background:radial-gradient(1200px 600px at 80% -10%, #12315a 0%, transparent 60%), var(--bg);flex-direction:column;margin:0;line-height:1.55;display:flex}h1,h2,h3,p{margin:0}.app-header{border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10;background:#0d1b30e6;grid-template-columns:auto 1fr auto;align-items:center;gap:24px;padding:14px 28px;display:grid;position:sticky;top:0}.brand{align-items:center;gap:12px;display:flex}.brand-logo{letter-spacing:.04em;color:#04202a;background:linear-gradient(135deg, var(--cyan), var(--blue));border-radius:10px;place-items:center;width:42px;height:42px;font-size:.8rem;font-weight:800;display:grid}.brand-text h1{letter-spacing:.12em;font-size:1.05rem}.brand-text p{color:var(--text-muted);font-size:.72rem}.main-nav{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.main-nav a{color:var(--text-muted);border-radius:8px;padding:8px 14px;font-size:.9rem;text-decoration:none;transition:background .15s,color .15s}.main-nav a:hover,.main-nav a.active{color:var(--cyan);background:#22d3ee1a}#simulation,#system,#compare,#install{scroll-margin-top:112px}.app-status{border:1px solid var(--border);color:var(--text-muted);background:var(--panel);border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-size:.82rem;display:flex}.status-dot{background:var(--warn);border-radius:50%;width:9px;height:9px}.app-status[data-state=ok] .status-dot{background:var(--ok);box-shadow:0 0 8px var(--ok)}.app-status[data-state=error] .status-dot{background:var(--error);box-shadow:0 0 8px var(--error)}.app-status[data-state=error]{color:var(--error);border-color:var(--error)}.app-main{flex-direction:column;flex:1;gap:24px;width:100%;max-width:1280px;margin:0 auto;padding:28px;display:flex}.phase-banner{border:1px solid var(--border);border-left:4px solid var(--cyan);border-radius:var(--radius);background:var(--bg-elevated);padding:18px 22px}.phase-banner h2{color:var(--cyan);margin-bottom:6px;font-size:1.15rem}.phase-banner p{color:var(--text-muted);font-size:.95rem}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);min-width:0;padding:20px}.card h3{margin-bottom:14px;font-size:1rem}.three-container{border:1px solid var(--border);border-radius:8px;width:100%;height:340px;overflow:hidden}.three-container canvas{width:100%;height:100%;display:block}.chart-wrap{height:340px;position:relative}.hint{color:var(--text-muted);margin-top:12px;font-size:.85rem}.hint.warning{color:var(--warn)}.app-footer{border-top:1px solid var(--border);color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;gap:8px;padding:14px 28px;font-size:.78rem;display:flex}@media (width<=900px){.app-header{grid-template-columns:1fr;gap:10px;padding:12px 16px;position:static}.main-nav{justify-content:flex-start}.app-status{justify-self:start}.app-main{padding:16px}.grid-2{grid-template-columns:1fr}.app-footer{padding:12px 16px}#simulation,#system,#compare,#install{scroll-margin-top:16px}}.dash{grid-template-columns:320px minmax(0,1fr) 360px;align-items:start;gap:24px;display:grid}.field,.check{margin-bottom:12px;font-size:.88rem;display:block}.field small{color:var(--text-muted)}.field input,.field select{width:100%;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);font:inherit;border-radius:8px;margin-top:4px;padding:8px 10px}.check input{accent-color:var(--cyan);margin-right:8px}fieldset{border:1px solid var(--border);border-radius:8px;margin:0 0 12px;padding:10px 12px}legend{color:var(--text-muted);padding:0 6px;font-size:.85rem}.err{min-height:0;color:var(--error);font-size:.78rem;font-style:normal;display:block}.field:has(.err:not(:empty)) input{border-color:var(--error)}.btn{width:100%;color:var(--cyan);border:1px solid var(--cyan);font:inherit;cursor:pointer;background:0 0;border-radius:8px;padding:9px 12px}.btn:hover{background:#22d3ee1f}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.kpis{grid-template-columns:1fr 1fr;gap:10px;margin:12px 0 16px;display:grid}.kpis div{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:10px 12px}.kpis dt{color:var(--text-muted);font-size:.74rem}.kpis dd{color:var(--cyan);margin:2px 0 0;font-size:1.15rem;font-weight:700}.kpis dd small{color:var(--text-muted);font-size:.72rem;font-weight:400}.chart-wrap.short{height:220px}@media (width<=1100px){.dash{grid-template-columns:300px minmax(0,1fr)}#result-panel{grid-column:1/-1}}@media (width<=760px){.dash{grid-template-columns:1fr}}.system-grid{grid-template-columns:minmax(0,1fr) 340px;gap:20px;display:grid}.three-container{height:520px;position:relative}.label-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.label3d{color:var(--text);white-space:nowrap;border:1px solid var(--border);background:#08111fd9;border-radius:6px;padding:2px 7px;font-size:.72rem}.label3d.selected{color:#04202a;background:var(--cyan);border-color:var(--cyan)}.sensor-label{color:#67e8f9;border-color:#22d3eea6}#component-panel h4{margin:0 0 8px;font-size:.95rem}.comp-list{grid-template-columns:1fr 1fr;gap:6px;margin:0 0 14px;padding:0;list-style:none;display:grid}.comp-list li{align-items:center;gap:6px;display:flex}.comp-list input{accent-color:var(--cyan)}.comp-list button{text-align:left;font:inherit;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);cursor:pointer;border-radius:6px;flex:1;padding:5px 8px;font-size:.8rem}.comp-list button.active{color:var(--cyan);border-color:var(--cyan)}.comp-info{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;max-height:300px;padding:12px;font-size:.82rem;overflow-y:auto}.comp-info h5{color:var(--cyan);margin:0;font-size:1rem}.comp-info .sci{color:var(--text-muted);margin:0 0 8px;font-style:italic}.comp-info dt{margin-top:8px;font-weight:600}.comp-info dd{color:var(--text-muted);margin:2px 0 0}.comp-info ul{margin:0;padding-left:18px}.dash{grid-template-columns:320px minmax(0,1fr)}@media (width<=1100px){.dash{grid-template-columns:300px minmax(0,1fr)}#result-panel{grid-column:auto}}@media (width<=900px){.system-grid{grid-template-columns:1fr}.three-container{height:400px}}@media (width<=760px){.dash{grid-template-columns:1fr}}.cooking-emission-lab{gap:20px;display:grid}.ce-panel{border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(#0f1d2ff5,#0a121df5);min-width:0;padding:clamp(14px,2vw,22px);scroll-margin-top:100px;box-shadow:0 12px 30px #0000002e}.ce-heading{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.ce-heading .eyebrow{color:var(--cyan);letter-spacing:.1em;font-size:.72rem}.ce-heading h3{margin:3px 0 0;font-size:1.08rem}.ce-stage-badge{color:var(--cyan);border:1px solid #22d3ee59;border-radius:999px;flex:none;padding:5px 9px;font-size:.72rem}.ce-intro{color:var(--text-muted);margin:10px 0 16px;font-size:.86rem}.ce-form{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.ce-form[data-form=cooking]{grid-template-columns:minmax(0,1fr)}.ce-quantity-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px;display:grid}.ce-field{min-width:0;font-size:.84rem;display:block}.ce-field small{color:var(--text-muted)}.ce-field input,.ce-field select{border:1px solid var(--border);width:100%;min-width:0;color:var(--text);background:var(--bg-elevated);font:inherit;border-radius:8px;margin-top:5px;padding:9px 10px}.ce-field [aria-invalid=true]{border-color:var(--error)}.ce-field .err{min-height:1em;color:var(--error);font-size:.76rem;font-style:normal;display:block}.ce-actions,.ce-value-unit{gap:12px;display:flex}.ce-value-unit>*{flex:1}.ce-actions .btn{width:auto}.ce-secondary{border-color:var(--border);background:#111e30cc}.ce-message{min-height:1.4em;color:var(--text-muted);font-size:.83rem}.literature-normalizer,.ce3-form{align-items:end}.ce3-form>.btn{grid-column:1/-1}.ce3-mode-note{color:#f7d67b;min-height:1.2em;margin-top:5px;font-size:.73rem;display:block}.ce3-output{grid-column:1/-1;gap:12px;min-width:0;display:grid}.ce3-summary{color:var(--text-muted);overflow-wrap:anywhere;background:#081523b3;border:1px solid #22d3ee38;border-radius:8px;padding:12px;font-size:.8rem}.ce3-summary p+p{margin-top:7px}.ce3-summary strong{color:var(--text)}.ce3-summary ul{margin:8px 0 0;padding-left:20px}.ce3-series{border:1px solid var(--border);background:#0815238c;border-radius:8px;min-width:0;padding:12px}.ce3-series summary{cursor:pointer;color:var(--cyan);font-size:.82rem}.ce3-series .literature-table-wrap{max-height:360px;margin-top:8px}.ce3-series table{min-width:700px}.ce4-aerosol-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin:0;padding:12px;display:grid}.ce4-aerosol-option{min-width:0;color:var(--text-muted);align-items:center;gap:8px;font-size:.82rem;display:flex}.ce4-aerosol-option input{accent-color:var(--cyan)}.ce4-swatch{background:var(--aerosol-color);width:11px;height:11px;box-shadow:0 0 8px var(--aerosol-color);border-radius:50%;flex:none}.ce4-aerosol-option[data-type=pm25] .ce4-swatch{--aerosol-color:#ffb547}.ce4-aerosol-option[data-type=ultrafine] .ce4-swatch{--aerosol-color:#7dd3fc}.ce4-aerosol-option[data-type=oil-aerosol] .ce4-swatch{--aerosol-color:#f97316}.ce4-aerosol-option[data-type=voc-vapor] .ce4-swatch{--aerosol-color:#c084fc}.ce4-limit{color:var(--text-muted);font-size:.78rem}.ce5-pathways{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.ce5-pathway-card{background:#0815239e;border:1px solid #3e5c787a;border-radius:10px;min-width:0;padding:14px}.ce5-pathway-card h4{color:var(--cyan);margin:0 0 10px;font-size:.9rem}.ce5-pathway-card dl{grid-template-columns:minmax(105px,.4fr) minmax(0,1fr);gap:7px 10px;margin:0;font-size:.79rem;display:grid}.ce5-pathway-card dt{color:var(--text);font-weight:600}.ce5-pathway-card dd{color:var(--text-muted);margin:0}.ce5-context,.ce5-sources{color:var(--text-muted);margin-top:10px;font-size:.75rem}.ce5-pathway-card a{color:var(--cyan);overflow-wrap:anywhere}.ce6-output{min-width:0;color:var(--text-muted);background:#081523b3;border:1px solid #22d3ee38;border-radius:8px;padding:12px;font-size:.82rem}.ce6-result-intro{margin-bottom:8px}.ce6-interpretation-list{gap:6px;margin:0;padding-left:20px;display:grid}.ce6-interpretation-list li{overflow-wrap:anywhere}.ce6-charts{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px;display:grid}.ce6-chart{border:1px solid var(--border);background:#0815238c;border-radius:8px;min-width:0;margin:0;padding:12px}.ce6-chart figcaption{color:var(--text);margin-bottom:8px;font-size:.83rem;font-weight:600}.ce6-chart-canvas{height:280px;position:relative}.ce6-caveat{color:var(--text-muted);margin-top:12px;font-size:.77rem}.ce7-actions{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.ce7-export{width:auto;min-width:150px}.ce7-export:disabled{cursor:not-allowed;opacity:.48}.ce7-export-status{min-height:1.4em;color:var(--text-muted);margin-top:8px;font-size:.78rem}.literature-normalizer>.btn,.ce-normalized-output{grid-column:1/-1}.ce-normalized-output{min-height:1.4em;color:var(--text-muted);overflow-wrap:anywhere;background:#081523b3;border:1px solid #22d3ee38;border-radius:8px;padding:10px 12px;font-size:.82rem}.literature-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px;display:grid}.literature-card{background:#0815239e;border:1px solid #3e5c787a;border-radius:10px;min-width:0;padding:13px;font-size:.79rem}.literature-card p{color:var(--text-muted);margin-top:7px}.literature-card-title{justify-content:space-between;align-items:start;gap:8px;display:flex}.literature-card-title h4{margin:0;font-size:.85rem}.literature-card-title span{color:var(--cyan);flex:none;font-size:.67rem}.literature-card .literature-title{color:var(--text);font-weight:600}.literature-card .literature-limit{color:#f7d67b}.literature-card a{color:var(--cyan);overflow-wrap:anywhere;margin-top:7px;display:inline-block}.literature-data{border:1px solid var(--border);background:#0815238c;border-radius:8px;margin-top:14px;padding:12px}.literature-data summary{cursor:pointer;color:var(--cyan);font-size:.84rem}.literature-data p{color:var(--text-muted);margin:8px 0;font-size:.77rem}.literature-table-wrap{width:100%;overflow-x:auto}.literature-data table{border-collapse:collapse;width:100%;font-size:.76rem}.literature-data th,.literature-data td{text-align:left;white-space:nowrap;border-bottom:1px solid #3e5c7859;padding:6px 8px}.literature-data th{color:var(--text)}.literature-data td{color:var(--text-muted)}@media (width<=760px){.ce-quantity-grid,.literature-list,.ce3-form,.ce4-aerosol-list,.ce5-pathways,.ce6-charts,.ce-form[data-form=literature]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){.ce-heading{flex-direction:column}.ce-quantity-grid,.literature-list,.ce3-form,.ce4-aerosol-list,.ce5-pathways,.ce6-charts,.ce-form[data-form=literature]{grid-template-columns:minmax(0,1fr)}.ce-actions,.ce-value-unit{flex-direction:column}.ce-actions .btn,.ce7-export{width:100%}}
