:root{--flue: #0b1114;--tile: #141e24;--tile-hi: #1b282f;--tile-sunk: #0e161a;--tubuli: #2a3a44;--tubuli-soft: #1f2d35;--mortar: #e6e2d7;--ash: #93a5af;--ash-dim: #61737d;--ember: #ff6b35;--ember-deep: #c1421a;--ember-wash: rgba(255, 107, 53, .12);--frigid: #4cc9e8;--frigid-deep: #1c7d99;--frigid-wash: rgba(76, 201, 232, .12);--gold: #e9b44c;--display: "IBM Plex Sans Condensed", "Arial Narrow", system-ui, sans-serif;--body: "IBM Plex Sans", system-ui, -apple-system, sans-serif;--mono: "IBM Plex Mono", "SF Mono", ui-monospace, monospace;--rail: 232px;--gap: 20px;--radius: 3px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--flue);color:var(--mortar);font-family:var(--body);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--display);font-weight:600;margin:0;letter-spacing:-.01em}a{color:var(--frigid)}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.shell{display:grid;grid-template-rows:auto 1fr;height:100%}.topbar{display:flex;align-items:center;gap:18px;padding:0 20px;height:58px;border-bottom:1px solid var(--tubuli);background:var(--tile)}.wordmark{display:flex;align-items:baseline;gap:10px;flex-shrink:0}.wordmark b{font-family:var(--display);font-weight:700;font-size:21px;letter-spacing:.16em;text-transform:uppercase}.wordmark span{font-size:11px;color:var(--ash-dim);letter-spacing:.04em}.pilae{display:flex;align-items:flex-end;gap:3px;height:18px;flex-shrink:0}.pilae i{display:block;width:4px;border-radius:1px}.topbar-spacer{flex:1}.project-name{background:var(--tile-sunk);border:1px solid var(--tubuli);border-radius:var(--radius);padding:6px 10px;min-width:200px;font-family:var(--display);font-size:15px;font-weight:600}.main{display:grid;grid-template-columns:var(--rail) 1fr;min-height:0}.rail{border-right:1px solid var(--tubuli);background:var(--tile);padding:16px 0;overflow-y:auto;display:flex;flex-direction:column}.rail-heading{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ash-dim);padding:0 18px 8px}.stage{display:grid;grid-template-columns:26px 1fr;align-items:baseline;gap:10px;width:100%;text-align:left;background:none;border:0;border-left:2px solid transparent;padding:9px 18px 9px 16px;cursor:pointer;color:var(--ash)}.stage:hover{background:var(--tile-hi);color:var(--mortar)}.stage.is-active{border-left-color:var(--ember);background:var(--tile-hi);color:var(--mortar)}.stage-num{font-family:var(--mono);font-size:11px;color:var(--ash-dim)}.stage.is-active .stage-num{color:var(--ember)}.stage-label{font-family:var(--display);font-size:15px;font-weight:600}.stage-note{grid-column:2;font-family:var(--mono);font-size:10.5px;color:var(--ash-dim);letter-spacing:.02em}.rail-foot{margin-top:auto;padding:16px 18px 4px;border-top:1px solid var(--tubuli-soft);font-size:11.5px;color:var(--ash-dim);line-height:1.6}.rail-foot a{color:var(--ash)}.content{overflow-y:auto;padding:24px 28px 80px}.content-inner{max-width:1080px;margin:0 auto;animation:rise .16s ease-out}@keyframes rise{0%{opacity:0;transform:translateY(4px)}}.page-head{margin-bottom:22px}.page-head h2{font-size:26px;letter-spacing:-.02em}.page-head p{margin:6px 0 0;color:var(--ash);max-width:66ch}.panel{background:var(--tile);border:1px solid var(--tubuli);border-radius:var(--radius);padding:18px;margin-bottom:var(--gap)}.panel>h3{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ash);font-family:var(--mono);font-weight:500;margin-bottom:14px}.panel-note{color:var(--ash);font-size:12.5px;margin:0 0 14px;max-width:72ch}.grid{display:grid;gap:14px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>label{font-size:11.5px;color:var(--ash);letter-spacing:.01em}.field-hint{font-size:11px;color:var(--ash-dim)}.control{background:var(--tile-sunk);border:1px solid var(--tubuli);border-radius:var(--radius);padding:7px 9px;width:100%;min-width:0}.control:hover{border-color:var(--ash-dim)}input.control,.control.numeric{font-family:var(--mono);font-variant-numeric:tabular-nums}select.control{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ash) 50%),linear-gradient(135deg,var(--ash) 50%,transparent 50%);background-position:right 12px center,right 7px center;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:26px}.suffix-wrap{position:relative;display:block}.suffix-wrap .suffix{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:11px;color:var(--ash-dim);pointer-events:none}.suffix-wrap input{padding-right:42px}.btn{background:var(--tile-hi);border:1px solid var(--tubuli);border-radius:var(--radius);padding:7px 13px;cursor:pointer;font-size:13px;white-space:nowrap;transition:border-color .12s,background .12s}.btn:hover{border-color:var(--ash-dim);background:#22323a}.btn.primary{background:var(--ember);border-color:var(--ember);color:#16090b;font-weight:600}.btn.primary:hover{background:#ff7d4d;border-color:#ff7d4d}.btn.ghost{background:none}.btn.danger:hover{border-color:var(--ember-deep);color:var(--ember);background:none}.btn.small{padding:4px 9px;font-size:12px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.readouts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--tubuli);border:1px solid var(--tubuli);border-radius:var(--radius);overflow:hidden;margin-bottom:var(--gap)}.readout{background:var(--tile);padding:14px 16px}.readout .k{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ash-dim);display:block;margin-bottom:5px}.readout .v{font-family:var(--display);font-size:27px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.readout .u{font-family:var(--mono);font-size:11px;color:var(--ash);margin-left:5px;font-weight:400}.readout .sub{font-size:11.5px;color:var(--ash-dim);margin-top:4px}.v.heat{color:var(--ember)}.v.cool{color:var(--frigid)}.strip{border:1px solid var(--tubuli);border-radius:var(--radius);background:var(--tile);padding:14px 16px 10px;margin-bottom:var(--gap)}.strip h4{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ash-dim);font-weight:500;margin-bottom:10px}.table-wrap{overflow-x:auto;border:1px solid var(--tubuli);border-radius:var(--radius)}table{width:100%;border-collapse:collapse;font-size:13px}thead th{background:var(--tile-sunk);font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ash-dim);font-weight:500;text-align:right;padding:9px 12px;border-bottom:1px solid var(--tubuli);white-space:nowrap}thead th:first-child,tbody td:first-child{text-align:left}tbody td{padding:8px 12px;border-bottom:1px solid var(--tubuli-soft);text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}tbody td:first-child{font-family:var(--body)}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--tile-hi)}tfoot td{padding:9px 12px;text-align:right;font-family:var(--mono);font-weight:600;border-top:1px solid var(--tubuli);background:var(--tile-sunk)}tfoot td:first-child{text-align:left;font-family:var(--display)}.num-heat{color:var(--ember)}.num-cool{color:var(--frigid)}.room-card{border:1px solid var(--tubuli);border-radius:var(--radius);background:var(--tile);margin-bottom:12px;overflow:hidden}.room-head{display:flex;align-items:center;gap:12px;padding:11px 14px;background:var(--tile-hi);border-bottom:1px solid var(--tubuli);cursor:pointer}.room-head input{background:none;border:0;border-bottom:1px dashed transparent;font-family:var(--display);font-size:16px;font-weight:600;padding:1px 0;flex:1;min-width:0}.room-head input:hover,.room-head input:focus{border-bottom-color:var(--ash-dim)}.room-stat{font-family:var(--mono);font-size:12px;color:var(--ash);white-space:nowrap;font-variant-numeric:tabular-nums}.room-body{padding:16px}.subsection{margin-top:18px}.subsection>h4{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ash-dim);font-weight:500;margin-bottom:9px;display:flex;align-items:center;gap:10px}.surface-row{display:grid;gap:8px;align-items:end;padding:9px 0;border-top:1px solid var(--tubuli-soft)}.surface-row.wall{grid-template-columns:74px 1fr 90px 130px 118px 34px}.surface-row.window{grid-template-columns:78px 78px 70px 1fr 118px 74px 74px 34px}.surface-row.door{grid-template-columns:78px 88px 1fr 34px}.icon-btn{background:none;border:1px solid var(--tubuli);border-radius:var(--radius);color:var(--ash-dim);cursor:pointer;height:31px;line-height:1;font-size:15px}.icon-btn:hover{color:var(--ember);border-color:var(--ember-deep)}.notice{border:1px solid var(--tubuli);border-left:2px solid var(--gold);border-radius:var(--radius);background:var(--tile);padding:11px 14px;margin-bottom:12px;font-size:12.5px;color:var(--ash)}.notice.bad{border-left-color:var(--ember)}.notice.good{border-left-color:var(--frigid)}.notice strong{color:var(--mortar)}.chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;border:1px solid var(--tubuli);border-radius:100px;padding:2px 9px;color:var(--ash)}.chip .dot{width:6px;height:6px;border-radius:50%}.legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;font-family:var(--mono);font-size:11px;color:var(--ash)}.legend i{display:inline-block;width:11px;height:3px;margin-right:6px;vertical-align:middle}.hit-list{border:1px solid var(--tubuli);border-radius:var(--radius);background:var(--tile-sunk);max-height:220px;overflow-y:auto;margin-top:8px}.hit{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--tubuli-soft);padding:9px 12px;cursor:pointer;color:var(--mortar);font-size:13px}.hit:hover{background:var(--tile-hi)}.hit small{display:block;color:var(--ash-dim);font-family:var(--mono);font-size:11px}.empty{border:1px dashed var(--tubuli);border-radius:var(--radius);padding:28px;text-align:center;color:var(--ash)}.chart-block{background:var(--tile);border:1px solid var(--tubuli);border-radius:var(--radius);padding:16px 16px 10px;margin-bottom:var(--gap)}.chart-block h3{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ash-dim);font-weight:500;margin-bottom:4px}.chart-block .lede{color:var(--ash);font-size:12.5px;margin:0 0 12px;max-width:74ch}svg text{font-family:var(--mono);fill:var(--ash-dim)}.chart-svg{display:block;width:100%;height:auto}.chart-block,.strip{overflow-x:auto}.draw-in{stroke-dasharray:2400;stroke-dashoffset:2400;animation:draw .9s ease-out forwards}@keyframes draw{to{stroke-dashoffset:0}}.report-body h3{font-size:17px;margin:22px 0 10px}.report-body p{color:var(--ash);max-width:74ch}.split{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}@media (max-width: 1000px){.main{grid-template-columns:1fr}.rail{border-right:0;border-bottom:1px solid var(--tubuli);flex-direction:row;overflow-x:auto;padding:8px;gap:4px}.rail-heading,.rail-foot,.stage-note{display:none}.stage{width:auto;border-left:0;border-bottom:2px solid transparent;padding:8px 12px;grid-template-columns:auto auto}.stage.is-active{border-left-color:transparent;border-bottom-color:var(--ember)}.content{padding:16px 14px 60px}.grid.cols-3,.grid.cols-4,.split,.surface-row.wall,.surface-row.window,.surface-row.door{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.grid.cols-2,.grid.cols-3,.grid.cols-4,.split{grid-template-columns:1fr}.topbar{gap:8px;padding:0 12px;overflow-x:auto}.wordmark span,.project-name{display:none}.chart-svg,.chart-block .legend{min-width:620px}}@media (prefers-reduced-motion: reduce){*,.draw-in{animation:none!important;transition:none!important;stroke-dashoffset:0!important}}@media print{body{background:#fff;color:#000}.topbar,.rail,.no-print{display:none!important}.main{grid-template-columns:1fr}.content{overflow:visible;padding:0}.panel,.chart-block,.readouts,.table-wrap{border-color:#bbb;background:#fff;break-inside:avoid}.readout{background:#fff}thead th,tfoot td{background:#f2f2f2;color:#333}}
