:root{--paper:#f7f1e6;--paper-2:#efe6d6;--ink:#2c2a25;--ink-soft:#6d665a;--forest:#2f4a3a;--forest-2:#3e6150;--moss:#6f8a4e;--amber:#e9a93c;--amber-soft:#ffe2a8;--falu:#a8432f;--sky:#7fb2d6;--good:#3f8a52;--warn:#c9822b;--bad:#c2483a;--shadow:0 10px 30px #1c1a1438, 0 2px 6px #1c1a141f;--radius:16px;--font:"Avenir Next", "Segoe UI", system-ui, -apple-system, sans-serif;--display:"Iowan Old Style", "Palatino", "Book Antiqua", Georgia, serif}*{box-sizing:border-box}html,body{height:100%;font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;background:#1d2a22;margin:0;overflow:hidden}#scene{touch-action:none;outline:none;width:100vw;height:100vh;display:block;position:fixed;inset:0}#ui{pointer-events:none;z-index:2;position:fixed;inset:0}#ui>*{pointer-events:auto}#ui .labels{pointer-events:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}svg{flex:none;width:22px;height:22px}.card{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow)}.top-left{align-items:center;gap:12px;padding:8px 14px 8px 10px;display:flex;position:absolute;top:16px;left:16px}.brand{align-items:center;gap:10px;display:flex}.brand .logo{background:var(--forest);width:34px;height:34px;color:var(--paper);border-radius:10px;place-items:center;display:grid}.brand .logo svg{width:24px;height:24px}.brand .name{font-family:var(--display);letter-spacing:.01em;font-size:19px;font-weight:600}.project-name{font:inherit;color:var(--ink-soft);text-overflow:ellipsis;-webkit-user-select:text;user-select:text;background:0 0;border:0;border-radius:6px;width:150px;padding:2px 4px;font-size:13px}@supports (field-sizing:content){.project-name{field-sizing:content;width:auto;min-width:110px;max-width:260px}}.project-name:focus{outline:2px solid var(--amber-soft);background:#fff}.progress{color:var(--ink-soft);align-items:center;gap:4px;font-size:12px;display:flex}.progress .pip{background:#d9cfbd;border-radius:50%;width:8px;height:8px}.progress .pip.on{background:var(--moss)}.top-right{align-items:flex-start;gap:10px;display:flex;position:absolute;top:16px;right:16px}.icon-btn{background:var(--paper);width:44px;height:44px;box-shadow:var(--shadow);border-radius:14px;place-items:center;transition:transform .12s,background .12s;display:grid}.icon-btn:hover{background:#fffaf0;transform:translateY(-1px)}.icon-btn.on{background:var(--forest);color:var(--paper)}.icon-btn[disabled]{opacity:.4;cursor:default;transform:none}.engine-pill{background:var(--paper);height:44px;box-shadow:var(--shadow);border-radius:14px;align-items:center;gap:9px;padding:0 16px 0 12px;font-size:13.5px;font-weight:600;display:flex}.engine-pill .dot{color:#fff;background:var(--good);border-radius:50%;place-items:center;width:26px;height:26px;display:grid}.engine-pill .dot svg{width:16px;height:16px}.engine-pill.checking .dot{background:var(--amber);animation:1s ease-in-out infinite pulse}.engine-pill.issues .dot{background:var(--bad)}.engine-pill.building .dot{background:var(--sky)}.engine-pill.empty .dot{background:#b9b1a1}.engine-pill small{color:var(--ink-soft);font-size:11.5px;font-weight:500;display:block}@keyframes pulse{50%{opacity:.75;transform:scale(.88)}}.dock{pointer-events:none;flex-direction:column;align-items:center;gap:10px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.dock>*{pointer-events:auto}.hint{color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-align:center;pointer-events:none;background:#1e241e9e;border-radius:999px;max-width:min(780px,92vw);padding:7px 14px;font-size:13px;line-height:1.35}.hint b{color:var(--amber-soft);font-weight:600}.toolbar{gap:4px;padding:6px;display:flex}.cat{width:78px;height:62px;color:var(--ink-soft);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:11.5px;font-weight:600;transition:background .12s,color .12s;display:flex}.cat svg{width:24px;height:24px}.cat:hover{background:var(--paper-2);color:var(--ink)}.cat.on{background:var(--forest);color:var(--paper)}.cat.danger.on{background:var(--bad)}.tray{width:max-content;max-width:min(1180px,96vw);padding:10px 12px;animation:.18s ease-out rise;overflow-x:auto}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.tray h3{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin:0 0 6px;font-size:11.5px;font-weight:700}.tray-row{flex-wrap:wrap;align-items:stretch;gap:8px;display:flex}.tray-sections{flex-wrap:wrap;justify-content:center;gap:10px 14px;display:flex}.tray-section{flex:none}.tray-section+.tray-section{border-left:1px solid #e3d8c4;padding-left:14px}.tray .tray-row{flex-wrap:nowrap}.tool-card{text-align:center;background:#fffaf1;border:2px solid #0000;border-radius:12px;flex-direction:column;flex:none;align-items:center;gap:4px;width:78px;padding:7px 5px 6px;font-size:11.5px;font-weight:600;line-height:1.12;transition:transform .1s,border-color .1s;display:flex}.tool-card:hover{border-color:var(--amber-soft);transform:translateY(-2px)}.tool-card.on{border-color:var(--amber);background:#fff3da}.tool-card[disabled]{opacity:.45;cursor:not-allowed;transform:none}.tool-card .thumb{background:var(--paper-2);width:58px;height:44px;color:var(--forest);border-radius:9px;place-items:center;display:grid;overflow:hidden}.tool-card .thumb svg{width:30px;height:30px}.tool-card .thumb img{object-fit:contain;width:100%;height:100%}.tool-card small{color:var(--ink-soft);font-size:10.5px;font-weight:500}.swatches{grid-template-columns:repeat(4,auto);gap:6px;max-width:300px;display:grid}.swatch{border:3px solid #fff;border-radius:50%;width:34px;height:34px;transition:transform .1s;position:relative;box-shadow:0 0 0 1px #0000001f,0 2px 4px #00000026}.swatch:hover{transform:scale(1.12)}.swatch.on{box-shadow:0 0 0 3px var(--amber), 0 2px 6px #00000040}.swatch.small{border-width:2px;width:26px;height:26px}.tabs{flex-wrap:wrap;gap:4px;margin-bottom:10px;display:flex}.tab{color:var(--ink-soft);background:var(--paper-2);border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600}.tab.on{background:var(--forest);color:var(--paper)}.side-left{gap:8px;display:flex;position:absolute;bottom:16px;left:16px}.side-right{gap:8px;padding:6px;display:flex;position:absolute;bottom:16px;right:16px}.side-right .icon-btn,.view-group .icon-btn{box-shadow:none;background:0 0}.side-right .icon-btn.on,.view-group .icon-btn.on{background:var(--forest);color:var(--paper)}.view-group{gap:4px;padding:6px;display:flex}.context{width:min(286px,100vw - 32px);max-height:calc(100vh - 188px);max-height:calc(100dvh - 188px);padding:14px 14px 12px;animation:.16s ease-out rise;display:flex;position:absolute}.context:has(.wall-buildup){width:min(350px,100vw - 32px)}.context-content{flex-direction:column;width:100%;min-width:0;min-height:0;display:flex}.context-heading{flex:none}.context-scroll{overscroll-behavior:contain;touch-action:pan-y;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#b8a98c var(--paper-2);overflow-wrap:anywhere;min-height:0;padding-right:5px;overflow:hidden auto}.context-scroll::-webkit-scrollbar{width:6px}.context-scroll::-webkit-scrollbar-track{background:var(--paper-2);border-radius:8px}.context-scroll::-webkit-scrollbar-thumb{background:#b8a98c;border-radius:8px}.context-scroll:focus-visible{outline:2px solid var(--forest);outline-offset:-2px}.context-section{border-top:1px solid #eadfcb;margin-top:10px;padding-top:8px}.context-section>summary{cursor:pointer;color:var(--forest);font-size:12px;font-weight:600}.fine{color:var(--ink-soft);font-size:12px;line-height:1.4}.context .title{align-items:center;gap:10px;margin-bottom:4px;display:flex}.context .title .badge{background:var(--paper-2);width:34px;height:34px;color:var(--forest);border-radius:10px;place-items:center;display:grid}.context .title h2{font-family:var(--display);margin:0;font-size:18px;font-weight:600}.context .title .x{width:28px;height:28px;color:var(--ink-soft);border-radius:8px;place-items:center;margin-left:auto;display:grid}.context .title .x:hover{background:var(--paper-2)}.context .sub{color:var(--ink-soft);margin:0 0 10px;font-size:12px;line-height:1.4}.context .group{margin:10px 0 0}.context .group>label{letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px;font-size:11px;font-weight:700;display:block}.actions{flex-wrap:wrap;gap:6px;display:flex}.action{background:#fffaf1;border:1.5px solid #eadfcb;border-radius:10px;align-items:center;gap:6px;padding:7px 10px;font-size:12.5px;font-weight:600;transition:background .1s;display:flex}.action svg{width:17px;height:17px}.action:hover{background:#fff1d6}.action.on{background:var(--forest);color:var(--paper);border-color:var(--forest)}.action.done{color:var(--good)}.action.danger{color:var(--bad)}.action.danger:hover{background:#fbe3dd}.chips{flex-wrap:wrap;gap:6px;display:flex}.tray .chips{max-width:300px}.tray .swatches{grid-template-columns:repeat(8,auto);max-width:none}.tray-section.systems{flex-direction:column;gap:5px;display:flex}.systems-row{grid-template-columns:92px auto;align-items:center;gap:6px;display:grid}.tray .systems-row .chips{gap:4px;max-width:360px}.systems-row .chip{padding:4px 9px}.chip{background:#fffaf1;border:1.5px solid #eadfcb;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:600}.chip.on{background:var(--forest);border-color:var(--forest);color:var(--paper)}.fields{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.field{color:var(--ink-soft);flex-direction:column;gap:2px;font-size:10.5px;font-weight:600;display:flex}.field input,.field select{width:100%;font:inherit;color:var(--ink);-webkit-user-select:text;user-select:text;background:#fff;border:1.5px solid #e3d8c4;border-radius:8px;padding:5px 6px;font-size:13px;font-weight:600}.field input:focus,.field select:focus{border-color:var(--amber);outline:none}.diagnostic-fields{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:8px}.diagnostic-fields .field,.diagnostic-fields select{min-width:0}.systems-section{border-top:1px solid #e3d8c4;padding:12px 0}.systems-section>summary{cursor:pointer;font-size:13px;font-weight:700}.systems-toggle{align-items:center;gap:8px;margin:9px 0;font-size:12px;display:flex}.native-declaration{resize:vertical;-webkit-user-select:text;user-select:text;width:100%;min-height:230px;margin:8px 0;font:11px/1.5 monospace}.route-bend-row{grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:end;gap:4px;margin:6px 0;display:grid}.slider-row{align-items:center;gap:8px;font-size:12.5px;display:flex}.slider-row input[type=range]{accent-color:var(--forest-2);flex:1}.slider-row output{text-align:right;min-width:52px;font-weight:700}.engine-note{color:#3c5240;background:#eef3e8;border-radius:10px;margin-top:10px;padding:8px 10px;font-size:11.5px;line-height:1.4}.engine-note.bad{color:#8a3025;background:#fbe6e1}.engine-note.pending{color:#2f5470;background:#e7f0f6}.engine-note b{font-weight:700}.inspector{flex-direction:column;width:360px;max-height:calc(100vh - 170px);padding:16px 16px 12px;animation:.18s ease-out rise;display:flex;position:absolute;top:72px;right:16px}.inspector h2{font-family:var(--display);margin:0;font-size:20px}.inspector .lead{color:var(--ink-soft);margin:4px 0 10px;font-size:12.5px;line-height:1.45}.inspector .scroll{margin:0 -6px;padding:0 6px;overflow:auto}.finding{cursor:pointer;background:#fffaf1;border:1.5px solid #0000;border-radius:12px;gap:10px;margin-bottom:6px;padding:9px 10px;font-size:12.5px;line-height:1.4;display:flex}.finding:hover{border-color:var(--amber-soft)}.finding .ic{color:#fff;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;margin-top:1px;display:grid}.finding .ic svg{width:13px;height:13px}.finding.issue .ic{background:var(--bad)}.finding.note .ic{background:var(--warn)}.finding.expected .ic{background:var(--sky)}.finding.ok .ic{background:var(--good)}.finding.hookup .ic{background:#9b8fbf}.finding b{font-weight:650;display:block}.finding .more{color:var(--ink-soft);margin-top:3px;font-size:11.5px;display:none}.finding.open .more{display:block}.metrics{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px;display:grid}.metric{background:#fffaf1;border-radius:12px;padding:8px 10px}.metric span{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);font-size:10.5px;font-weight:700;display:block}.metric strong{font-size:16px;font-family:var(--display)}.btn{background:var(--forest);color:var(--paper);border-radius:11px;align-items:center;gap:7px;padding:9px 14px;font-size:13px;font-weight:650;display:inline-flex}.btn svg{width:17px;height:17px}.btn:hover{background:var(--forest-2)}.btn.ghost{background:var(--paper-2);color:var(--ink)}.btn.ghost:hover{background:#e7dcc8}.btn.amber{background:var(--amber);color:#2b1d05}.popover{padding:14px;animation:.15s ease-out rise;position:absolute}.time-pop{width:300px;top:72px;right:120px}.time-pop .presets{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.menu-pop{flex-direction:column;gap:2px;width:270px;display:flex;top:72px;right:16px}.menu-item{text-align:left;border-radius:10px;align-items:center;gap:10px;padding:9px 10px;font-size:13.5px;font-weight:550;display:flex}.menu-item:hover{background:var(--paper-2)}.menu-item small{color:var(--ink-soft);margin-left:auto;font-size:11px}.menu-sep{background:#e3d8c4;height:1px;margin:6px 4px}.modal-back{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#181e1859;place-items:center;animation:.2s ease-out fade;display:grid;position:absolute;inset:0}@keyframes fade{0%{opacity:0}}.modal{width:min(560px,92vw);max-height:86vh;padding:26px 28px 22px;overflow:auto}.modal:has(.blueprints){width:min(1180px,96vw);max-height:92vh}.blueprint-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.blueprint-nav{flex-wrap:wrap;gap:6px 18px;margin:8px 0 12px;display:flex}.blueprint-group{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.blueprint-group>span{text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft);margin-right:2px;font-size:11px}.blueprint-sheet{background:#faf9f1;border-radius:10px;padding:8px}.blueprint-sheet svg{width:100%;max-width:none;height:auto;max-height:calc(92vh - 230px);display:block}.blueprint-sheet svg+svg{max-width:480px;margin-top:12px}.modal h1{font-family:var(--display);margin:0 0 6px;font-size:30px;font-weight:600}.modal p{color:#4a463d;font-size:14px;line-height:1.55}.modal .steps{grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0 18px;display:grid}.modal .step{background:#fffaf1;border-radius:14px;padding:12px;font-size:12.5px;line-height:1.4}.modal .step .n{background:var(--forest);width:28px;height:28px;color:var(--paper);border-radius:50%;place-items:center;margin-bottom:6px;font-weight:700;display:grid}.modal .row{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.keys{grid-template-columns:auto 1fr;gap:6px 14px;font-size:13px;display:grid}kbd{background:#fff;border:1px solid #ddd1bc;border-radius:6px;padding:2px 7px;font-family:inherit;font-size:12px;font-weight:650;display:inline-block;box-shadow:0 1px #ddd1bc}.slot{background:#fffaf1;border-radius:12px;align-items:center;gap:10px;margin-bottom:6px;padding:10px 12px;display:flex}.slot div{flex:1;font-size:13px}.slot div small{color:var(--ink-soft);font-size:11.5px;display:block}.slot input{font:inherit;-webkit-user-select:text;user-select:text;border:1.5px solid #e3d8c4;border-radius:9px;flex:1;padding:8px 10px}.toasts{pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:18px;left:50%;transform:translate(-50%)}.toast{color:#fff;box-shadow:var(--shadow);text-align:center;background:#202821e6;border-radius:999px;max-width:640px;padding:9px 16px;font-size:13.5px;font-weight:550;animation:.25s ease-out drop}.toast.good{background:#2f563af2}.toast.warn{background:#96462df2}.toast.out{opacity:0;transition:all .3s;transform:translateY(-6px)}@keyframes drop{0%{opacity:0;transform:translateY(-8px)}}.tooltip{color:#fff;pointer-events:none;white-space:nowrap;z-index:10;background:#202821eb;border-radius:9px;padding:6px 10px;font-size:12.5px;font-weight:550;position:absolute;transform:translate(14px,14px)}.labels{position:absolute;inset:0;overflow:hidden}.label{white-space:nowrap;color:#2c2a25;will-change:transform;background:#fffaf0f0;border-radius:8px;padding:4px 9px;font-size:12.5px;font-weight:650;position:absolute;top:0;left:0;box-shadow:0 3px 10px #0000002e}.label small{color:var(--ink-soft);font-size:11px;font-weight:500;display:block}.label.big{padding:6px 12px;font-size:15px}.label.bad{color:#8a3025;background:#fbe3dd}.label.room{font-family:var(--display);text-align:center;pointer-events:none;background:#fffaf0d1;font-size:13.5px}.label.room.planned{opacity:.75}.label.room.bad{color:#8a3025;background:#fbe3dd}.label.layer{color:#fff;background:#202821e0;font-weight:600}.label.layer small{color:#cfd8cd}.label.marker{background:var(--bad);color:#fff;cursor:pointer;border-radius:50%;place-items:center;width:26px;height:26px;padding:0;animation:1.6s ease-in-out infinite bob;display:grid}.label.marker svg{width:15px;height:15px}@keyframes bob{50%{margin-top:-4px}}.fps{color:#ffffffbf;text-shadow:0 1px 2px #00000080;pointer-events:none;font-size:11px;position:absolute;top:76px;left:16px}.walk-help{color:#fff;pointer-events:none;background:#202821b3;border-radius:999px;padding:9px 16px;font-size:13px;position:absolute;top:18px;left:50%;transform:translate(-50%)}.crosshair{pointer-events:none;background:#ffffffd9;border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 2px #0003}.hidden{display:none!important}@media (max-width:900px){.cat{width:62px;font-size:10.5px}.context{width:min(250px,100vw - 32px)}.inspector{width:300px}}#ui.flash:after{content:"";opacity:0;pointer-events:none;background:#fff;animation:.35s ease-out flash;position:fixed;inset:0}@keyframes flash{10%{opacity:.8}}.next-step{background:var(--amber-soft);color:#5a3b06;border-radius:999px;margin-left:8px;padding:3px 9px;font-size:11.5px;font-weight:700}.next-step:hover{background:var(--amber)}.room-uses{gap:4px;min-width:220px;display:grid}.room-use{justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.room-use select{font:inherit;border:1px solid var(--line,#d9d2c3);background:#fffaf2;border-radius:7px;padding:3px 6px;font-size:12px}.wall-buildup{flex-direction:column;gap:4px;margin:10px 0 6px;display:flex}.buildup-head{flex-direction:column;gap:1px;margin-bottom:2px;display:flex}.buildup-head strong{font-size:13px}.wall-buildup>.fine{margin:2px 0 0;font-size:11px}.layer-row{background:#fffaf1;border:1.5px solid #eadfcb;border-radius:8px;padding:5px 7px;position:relative}.layer-settings>summary{cursor:pointer;min-height:30px;padding-right:64px}.layer-settings>summary .layer-name:after{content:" ▾";color:var(--ink-soft)}.layer-settings[open]>summary .layer-name:after{content:" ▴"}.layer-settings>.fine{margin:5px 0}.layer-row>.layer-build{position:absolute;top:7px;right:7px}.technical-layer{border-bottom:1px solid #eadfcb;justify-content:space-between;gap:8px;padding:5px 0;font-size:11px;display:flex}.technical-layer .fine{white-space:nowrap;flex:none}.layer-row.planned{background:0 0;border-style:dashed}.layer-head{align-items:center;gap:6px;font-size:12px;display:flex}.layer-dot{background:var(--forest);border-radius:50%;flex:none;width:9px;height:9px}.layer-row.planned .layer-dot{background:0 0;border:1.5px solid #b8a98c}.layer-row.side-outside .layer-dot{background:#b5643f}.layer-row.side-inside .layer-dot{background:#c9a978}.layer-row.planned.side-outside .layer-dot,.layer-row.planned.side-inside .layer-dot{background:0 0}.layer-name{flex:1;font-weight:600}.layer-facts{color:#7d6f58;white-space:nowrap;font-size:11px}.layer-build{border:1.5px solid var(--forest);color:var(--forest);background:#fffaf1;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.layer-build.done{color:#8a7c62;border-color:#d9ccb4}.layer-row .chips,.layer-options{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.layer-row .chip{padding:3px 8px;font-size:11px}.verdict{border-left:4px solid var(--good);background:#fffaf1;border-radius:12px;margin:0 0 8px;padding:8px 10px;font-size:13px;line-height:1.45}.verdict.warn{border-left-color:var(--warn)}.verdict.bad{border-left-color:var(--bad)}.energy-chart{background:#fffaf1;border-radius:12px;width:100%;height:auto;display:block}.energy-chart .grid{stroke:var(--paper-2);stroke-width:1px}.energy-chart .tick{fill:var(--ink-soft);font-size:8px}.energy-chart .sun,.chart-keys .sun{fill:var(--amber);background:var(--amber);opacity:.85}.energy-chart .gen,.chart-keys .gen{fill:var(--falu);background:var(--falu)}.energy-chart .use{fill:none;stroke:var(--ink);stroke-width:1.2px}.chart-keys .use{background:var(--ink);height:2px!important}.energy-chart .battery,.chart-keys .battery{fill:var(--moss);background:var(--moss);opacity:.55}.energy-chart .temp{fill:none;stroke:var(--sky);stroke-width:1.4px}.chart-keys .temp{background:var(--sky);height:2px!important}.energy-chart .temp-tick{fill:var(--sky)}.energy-chart .unmet,.chart-keys .unmet{fill:var(--bad);background:var(--bad);opacity:.18}.year-chart .solar,.chart-keys .solar{fill:#c4861c;background:#c4861c}.year-chart .load,.chart-keys .load{fill:#2f78a8;background:#2f78a8}.year-chart .hit{fill:#0000}.year-chart .month:hover .hit{fill:#0000000a}.year-chart .short,.chart-keys .short{fill:var(--bad);color:var(--bad);font-weight:600}.year-table summary{cursor:pointer;color:var(--ink-soft);margin:6px 0;font-size:12px}.compare-table td.changed{font-weight:600}.labour-table .presets{gap:4px;display:flex}.labour-table .chip{padding:2px 8px}.labour-timeline{gap:3px;margin:4px 0 8px;display:grid}.labour-row{color:var(--ink-soft);grid-template-columns:42% 1fr;align-items:center;gap:8px;font-size:11px;display:grid}.labour-row>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.labour-track{background:var(--paper-2);border-radius:3px;height:10px;position:relative}.labour-track i{border-radius:3px;min-width:2px;position:absolute;top:0;bottom:0}.labour-track .own,.chart-keys .own{background:#c4861c}.labour-track .hired,.chart-keys .hired{background:#2f78a8}.chart-keys{color:var(--ink-soft);flex-wrap:wrap;gap:4px 12px;margin:6px 0 10px;font-size:11px;display:flex}.chart-keys .key{align-items:center;gap:5px;display:inline-flex}.chart-keys i{border-radius:2px;width:12px;height:8px;display:inline-block}.shop-total{background:var(--forest);color:var(--paper);border-radius:12px;justify-content:space-between;align-items:baseline;margin-bottom:8px;padding:8px 10px;display:flex}.shop-total strong{font-family:var(--display);font-size:18px}.shop-group{background:#fffaf1;border-radius:12px;margin-bottom:5px;padding:0 10px}.shop-group summary{cursor:pointer;justify-content:space-between;gap:8px;padding:8px 0;font-size:13px;font-weight:650;display:flex}.shop-line{border-top:1px solid var(--paper-2);grid-template-columns:minmax(0,1fr) auto auto;gap:8px;padding:4px 0;font-size:11.5px;display:grid}.shop-line>span:first-child{overflow-wrap:anywhere}.shop-line small{color:var(--ink-soft)}.shop-line .q,.shop-line .e{white-space:nowrap;text-align:right;color:var(--ink-soft)}.shop-line .e{color:var(--ink);min-width:52px}.shop-line.more{color:var(--ink-soft);font-style:italic}.busy-overlay{z-index:20;cursor:progress;background:#1c1a1447;place-items:center;display:grid;position:fixed;inset:0}.busy-card{border-radius:var(--radius);background:var(--paper);max-width:min(360px,100vw - 32px);color:var(--ink);box-shadow:var(--shadow);text-align:center;justify-items:center;gap:6px;padding:22px 26px;display:grid}.busy-card b{font-family:var(--display);font-size:18px}.busy-card small{color:var(--ink-soft);font-size:12.5px}.busy-spinner{border:3px solid var(--paper-2);border-top-color:var(--forest);border-radius:50%;width:26px;height:26px;animation:.9s linear infinite busy-spin}@keyframes busy-spin{to{transform:rotate(360deg)}}.power-table{border-collapse:collapse;width:100%;margin:6px 0 10px;font-size:12px}.power-table th{text-align:left;color:var(--ink-soft);border-bottom:1px solid #0000001f;padding:4px 6px 4px 0;font-weight:600}.power-table td{border-bottom:1px solid #0000000d;padding:4px 6px 4px 0}.power-diagram{background:#fbfaf4;border-radius:10px;padding:8px}.power-diagram svg{width:100%;max-width:none;height:auto;display:block}
