:root{--bg: #0f1f33;--panel: #14274050;--panel-solid: #142740;--line: #2b3f57;--text: #dddbd7;--muted: #989ca0;--accent: #f2703f;--accent-dim: #b83e1b;--warn: #e6b840;--ok: #6fa86a;--sel: #1f3e60;--track: #1a2c42;--disabled: #545e6a;color-scheme:dark;--cta: #5b7a57;--cta-line: #4b6848;--cta-hover: #6a8b65;--on-cta: #fffaf2;--float-bg: rgba(255, 250, 242, .9);--float-line: #dddbd7;--float-ink: #0f1f33;--font-body: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Space Grotesk", "Inter", ui-sans-serif, system-ui, sans-serif;font-family:var(--font-body)}:root[data-theme=light]{--bg: #fffaf2;--panel: #ffffff50;--panel-solid: #ffffff;--line: #e3dfd7;--text: #313e4e;--muted: #767d85;--accent: #c0411f;--accent-dim: #e8884a;--warn: #9a7a1b;--ok: #4e8449;--sel: #d2ebf7;--track: #ede8de;--disabled: #babbbb;color-scheme:light;--cta: #5b7a57;--cta-line: #4b6848;--cta-hover: #4b6848;--on-cta: #fffaf2}@media (prefers-color-scheme: light){:root:not([data-theme=dark]):not([data-theme=light]){--bg: #fffaf2;--panel: #ffffff50;--panel-solid: #ffffff;--line: #e3dfd7;--text: #313e4e;--muted: #767d85;--accent: #c0411f;--accent-dim: #e8884a;--warn: #9a7a1b;--ok: #4e8449;--sel: #d2ebf7;--track: #ede8de;--disabled: #babbbb;color-scheme:light;--cta: #5b7a57;--cta-line: #4b6848;--cta-hover: #4b6848;--on-cta: #fffaf2}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}a{color:inherit}.app{display:flex;flex-direction:column;height:100%}.version{margin-left:auto;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.home{overflow-y:auto;background:#eef3e9}.home .home-head h1{color:#1e2a1c}.home .version{color:#3e4a3a}.home .tile{background:#fff;border-color:transparent;color:#1e2a1c;box-shadow:0 1px 3px #1e2a1c1f}.home .tile-blurb{color:#5f6a5a}.home .logo{color:#1e2a1c}.home-head{display:flex;align-items:center;gap:10px;padding:20px 20px 4px}.home-head h1{font-family:var(--font-display);letter-spacing:-.025em;font-size:22px;font-weight:600;margin:0}.grid{display:grid;grid-template-columns:repeat(auto-fill,170px);gap:14px;padding:16px 20px 24px}.tile{display:flex;flex-direction:column;gap:3px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel-solid);text-decoration:none;color:var(--text);cursor:pointer;transition:border-color .12s,transform .12s}.tile:hover{border-color:var(--accent);transform:translateY(-1px)}.tile-art{width:100%;aspect-ratio:16 / 10;margin-bottom:6px;display:flex;align-items:center;justify-content:center}.tile-art .tool-icon{height:72%;width:auto}.tool-icon{display:block;flex:0 0 auto}.tile-name{font-family:var(--font-display);font-size:14px;font-weight:600}.tile-blurb{font-size:11px;color:var(--muted)}.topbar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--panel-solid)}.back{display:inline-flex;align-items:center;gap:6px;text-decoration:none;font-size:13px;color:var(--muted)}.back:hover{color:var(--accent)}.topbar-title{font-family:var(--font-display);font-weight:600;font-size:15px}.tool-main{flex:1;display:flex;min-height:0}.controls{width:300px;flex:0 0 auto;padding:16px;overflow-y:auto;border-right:1px solid var(--line);background:var(--panel-solid)}.stage{flex:1;position:relative;min-width:0}.stage canvas{display:block}.controls h2{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:18px 0 10px}.field{margin-bottom:12px;flex:1}.field label{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:4px}.field label b{color:var(--text);font-variant-numeric:tabular-nums}.color-row{display:flex;gap:12px;align-items:center}.color-row input[type=color]{width:44px;height:36px;flex:0 0 auto;padding:2px;background:var(--bg);border:1px solid var(--line);border-radius:6px;cursor:pointer}.btn{padding:10px 16px;border:1px solid var(--line);background:var(--bg);color:var(--text);border-radius:9px;cursor:pointer;font-size:14px}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.6;cursor:default}.btn.primary{background:var(--cta);border-color:var(--cta-line);color:var(--on-cta);font-weight:700}.btn.primary:hover:not(:disabled){background:var(--cta-hover);border-color:var(--cta-hover)}.action-top{width:100%;padding:14px 16px;font-size:15px}.reset{width:100%;margin-top:8px}.stats{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.stats div{display:flex;justify-content:space-between;margin-bottom:4px}.stats b{color:var(--text);font-variant-numeric:tabular-nums}.rotate-toggle{position:absolute;top:12px;right:12px;width:34px;height:34px;border-radius:8px;border:1px solid var(--float-line);background:var(--float-bg);color:var(--float-ink);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.rotate-toggle:hover{border-color:var(--accent)}@media (max-width: 640px){.tool-main{flex-direction:column}.controls{width:100%;border-right:none;border-bottom:1px solid var(--line);max-height:50%}.stage{min-height:300px}}@media (max-width: 400px){.grid{grid-template-columns:repeat(2,1fr)}}.row{display:flex;gap:12px;align-items:center}.check{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--text);cursor:pointer}.check input{accent-color:var(--accent)}.field label{align-items:center}.num{display:inline-flex;align-items:center;gap:4px}.num input{width:58px;padding:3px 6px;text-align:right;font:inherit;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:5px}.num input:focus{outline:none;border-color:var(--accent)}.num .unit{font-size:11px;color:var(--muted);min-width:10px}.camera-tool{flex:1;display:flex;flex-direction:column;min-height:0}.cam-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 18px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--panel-solid)}.cam-strip{flex:1 1 100%;display:flex;align-items:center;gap:6px;overflow-x:auto}.cam-chip{flex:0 0 auto;display:flex;align-items:center;gap:6px;padding:3px 8px 3px 3px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);cursor:pointer;font-size:12px;max-width:170px}.cam-chip span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cam-chip:hover{border-color:var(--accent-dim)}.cam-chip[aria-pressed=true]{border-color:var(--cta);background:#e4ece1}.cam-chip img,.thumb-ph{width:48px;height:27px;object-fit:cover;border-radius:4px;background:var(--track);flex:0 0 auto}.strip-btns{display:flex;gap:4px;margin-left:4px}.strip-btns .btn{padding:0 14px;height:36px;font-size:13px;white-space:nowrap}.status{margin-left:auto;font-size:11px;color:var(--muted);white-space:nowrap;display:flex;gap:6px;align-items:center}.link{background:none;border:none;padding:0;color:var(--accent);cursor:pointer;font:inherit}.cam-inputs{display:flex;gap:12px;align-items:flex-end;border:none;margin:0;padding:0;min-width:0}.cam-inputs:disabled{opacity:.5}.grp{display:flex;align-items:flex-end;gap:8px}.grp+.grp{padding-left:18px;border-left:1px solid var(--line)}.f{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted)}.f .num input{width:70px}.f .unit{min-width:14px}.f select{padding:5px 6px;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:6px;font:inherit;font-size:12px}.name-input{width:130px;padding:3px 6px;font:inherit;font-size:13px;font-weight:600;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:5px}.export{margin-left:auto}.export .btn{padding:6px 12px;white-space:nowrap}.cam-main{flex:1;display:flex;min-height:0;padding:12px;background:var(--track)}.photo{flex:1;min-width:0;min-height:0;display:flex}.photo.dock-below{flex-direction:column}.photo-area{flex:1;min-width:0;min-height:0;display:flex;align-items:flex-start;justify-content:center}.photo.dock-side .photo-area{align-items:center}.photo-frame{flex:0 0 auto}.dock{flex:0 0 auto;display:flex;min-width:0;min-height:0}.dock .inset{position:relative;left:auto;bottom:auto;width:100%;height:100%;aspect-ratio:auto;border-radius:10px}.dock .inset .grow{display:none}.splitter{flex:0 0 10px;position:relative;touch-action:none}.splitter.below{cursor:row-resize}.splitter.side{cursor:col-resize}.splitter:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:3px;background:var(--muted);opacity:.45}.splitter.below:after{width:40px;height:4px}.splitter.side:after{width:4px;height:40px}.splitter:hover:after{opacity:1;background:var(--accent)}.camera-tool{position:relative}.placing{position:absolute;top:0;left:0;right:0;z-index:25;display:flex;gap:14px;align-items:center;justify-content:center;padding:14px 16px;background:#22c55e;color:#052e14;font-size:16px;font-weight:700;box-shadow:0 4px 18px #052e1459;animation:placing-in .18s ease-out}.placing button{border:none;border-radius:7px;padding:6px 14px;background:#052e14;color:#fff;font:inherit;font-size:14px;cursor:pointer}.placing-hint{font-size:13px;font-weight:600;opacity:.75}.placing .pulse{width:12px;height:12px;border-radius:50%;background:#052e14;animation:placing-pulse 1s ease-in-out infinite}@keyframes placing-in{0%{transform:translateY(-100%)}to{transform:none}}@keyframes placing-pulse{50%{transform:scale(1.6);opacity:.35}}.placing-cursor{cursor:crosshair}.ctx-menu{position:fixed;z-index:30;min-width:200px;padding:4px;border-radius:8px;background:var(--panel-solid);border:1px solid var(--line);box-shadow:0 6px 20px #0f1f3333;display:flex;flex-direction:column}.ctx-menu button{text-align:left;padding:7px 10px;border:none;border-radius:5px;background:transparent;color:var(--text);font:inherit;font-size:13px;cursor:pointer}.ctx-menu button:hover{background:var(--sel)}.ctx-menu button.danger{color:var(--accent)}.xy{display:contents}.xy:disabled .num input{opacity:.55;cursor:not-allowed}.lock{align-self:flex-end;height:32px;width:32px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--muted);cursor:pointer}.lock:hover{border-color:var(--accent-dim);color:var(--text)}.lock[aria-pressed=true]{background:#0f1f33;border-color:#0f1f33;color:#fff}.photo-frame{position:relative;box-shadow:0 0 0 1px var(--line),0 2px 10px #0f1f331f}.photo-frame>canvas{display:block;width:100%;height:100%}.inset{position:absolute;left:3%;bottom:4%;width:max(220px,24%);aspect-ratio:4 / 3;display:flex;flex-direction:column;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 3px 14px #0f1f3333;transition:width .15s}.inset.big{width:max(360px,55%)}.inset-bar{position:absolute;z-index:2;top:6px;left:6px;display:flex;gap:1px;padding:2px;border-radius:7px;background:#ffffffeb;box-shadow:0 1px 4px #0f1f3326}.inset-bar button{padding:3px 8px;border:none;border-radius:5px;background:transparent;color:#767d85;font:inherit;font-size:11px;font-weight:600;cursor:pointer}.inset-bar button:hover{color:#0f1f33}.inset-bar button[aria-pressed=true]{background:#0f1f33;color:#fff}.inset-bar .grow{padding:3px 6px}.inset-body{flex:1;position:relative;min-height:0;overflow:hidden}.inset-body>*{position:absolute;top:0;right:0;bottom:0;left:0}.inset-caption{flex:0 0 auto;padding:5px 10px;font-size:12px;font-weight:600;color:#0f1f33;background:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inset .hint{display:none}.inset .fit-btn{top:6px;right:6px;width:24px;height:24px;font-size:12px}.plan .ground{fill:none;stroke:#111;stroke-width:2.5;pointer-events:none}.plan .dim{font-size:11px;font-weight:600;fill:#0f1f33;paint-order:stroke;stroke:#fff;stroke-width:3px}.model-view{position:absolute;top:0;right:0;bottom:0;left:0}.model-view canvas{display:block;width:100%;height:100%;touch-action:none}.hint{position:absolute;left:12px;bottom:12px;padding:6px 10px;border-radius:6px;background:var(--float-bg);border:1px solid var(--float-line);color:var(--float-ink);font-size:12px;pointer-events:none}.fit-btn{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:8px;border:1px solid var(--float-line);background:var(--float-bg);color:var(--float-ink);cursor:pointer;font-size:15px}.fit-btn:hover{border-color:var(--accent)}.empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--muted);font-size:13px;padding:16px;text-align:center}.plan{position:absolute;top:0;right:0;bottom:0;left:0;background:#f6f3ec}.plan canvas,.plan svg{position:absolute;top:0;right:0;bottom:0;left:0}.plan .wedge{fill:#46586e2e;stroke:#46586e;stroke-width:1;cursor:pointer}.plan .dot{fill:#46586e;stroke:#fff;stroke-width:1.5;cursor:pointer}.plan .sel .wedge{fill:#e8562d38;stroke:#e8562d;cursor:grab}.plan .sel .dot{fill:#e8562d;cursor:grab}.plan .axis{stroke:#e8562d;stroke-width:1.5;stroke-dasharray:3 3;pointer-events:none}.plan .turn{fill:#fff;stroke:#e8562d;stroke-width:2.5;cursor:grab}.plan .north path{fill:#0f1f33}.plan .north text{font-size:10px;font-weight:700;fill:#0f1f33}.name-input:focus{outline:none;border-color:var(--accent)}.field select{width:100%;padding:6px 8px;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:6px;font:inherit;font-size:13px}@media (max-width: 900px){.cam-main{padding:6px}.export{margin-left:0}}.cam-bar .f select,.cam-bar .f .num input,.cam-bar .name-input{height:32px;box-sizing:border-box;padding-top:0;padding-bottom:0}.cam-bar .f select{padding:0 6px}.cam-bar .export .btn{height:32px;padding:0 16px;font-size:14px}.plan svg{cursor:grab}.plan svg:active{cursor:grabbing}.plan svg.placing-cursor{cursor:crosshair}.plan-fit{position:absolute;right:8px;bottom:8px;padding:3px 9px;border:none;border-radius:6px;background:#ffffffeb;box-shadow:0 1px 4px #0f1f3326;color:#0f1f33;font:inherit;font-size:11px;font-weight:600;cursor:pointer}.plan-fit:hover{color:var(--accent)}.logo{display:inline-flex;flex:0 0 auto;color:var(--text)}.logo svg{display:block}.back .logo{color:currentColor}.topbar .tool-icon{box-sizing:content-box;padding:2px;border-radius:5px;background:#fffaf2}.field input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:18px;margin:0;background:transparent;cursor:pointer}.field input[type=range]::-webkit-slider-runnable-track{height:3px;border-radius:2px;background:linear-gradient(to right,var(--cta) var(--pct, 0%),var(--track) var(--pct, 0%))}.field input[type=range]::-moz-range-track{height:3px;border-radius:2px;background:var(--track)}.field input[type=range]::-moz-range-progress{height:3px;border-radius:2px;background:var(--cta)}.field input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;margin-top:-7.5px;border-radius:50%;background:var(--cta);border:2px solid #fff;box-shadow:0 1px 3px #0f1f334d}.field input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--cta);border:2px solid #fff;box-shadow:0 1px 3px #0f1f334d}.field input[type=range]:hover::-webkit-slider-thumb{background:var(--cta-hover)}.field input[type=range]:focus-visible{outline:none}.field input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px #5b7a5759}.check input,.cam-bar input[type=checkbox]{accent-color:var(--cta)}.color-pair{display:flex;gap:16px;margin-bottom:12px}.color-pair label{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text);cursor:pointer}.color-pair input[type=color]{width:44px;height:36px;padding:2px;background:var(--bg);border:1px solid var(--line);border-radius:6px;cursor:pointer}.plan .boundary{fill:none;stroke:#0f1f33;stroke-width:1.5;stroke-dasharray:6 4;pointer-events:none}.cam-row{flex:1 1 100%;display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}.download-all{margin-left:auto;height:32px;padding:0 16px}.popover{position:relative}.pop-btn{height:32px;padding:0 12px;font-size:13px;white-space:nowrap}.pop-btn[aria-expanded=true]{border-color:var(--cta);background:#e4ece1}.pop-btn span{font-size:10px;margin-left:4px;color:var(--muted)}.pop-panel{position:absolute;z-index:30;top:calc(100% + 6px);left:0;min-width:360px;padding:12px 14px 14px;border-radius:10px;background:var(--panel-solid);border:1px solid var(--line);box-shadow:0 8px 24px #0f1f332e}.pop-panel h3{margin:10px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.pop-panel h3:first-child{margin-top:0}.pop-row{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.pop-row .check{height:32px}.pop-wide{width:100%;margin-top:12px}.pop-panel .f select,.pop-panel .f .num input{height:32px;box-sizing:border-box;padding-top:0;padding-bottom:0}.pop-panel .f select{padding:0 6px}.pop-panel .f .num input{width:76px}.home .soon-tile{cursor:default;box-shadow:none;background:#fff9}.home .soon-tile:hover{transform:none;border-color:transparent}.soon-tile .tile-art{opacity:.55;filter:grayscale(.4)}.soon{display:inline-block;margin-left:6px;padding:2px 6px;border-radius:4px;background:#dfe6da;color:#4d5a48;font-family:var(--font-body);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;vertical-align:middle}.home .soon-tile{position:relative}.soon-tile .soon{position:absolute;top:10px;right:10px;margin:0}.flip-btn{height:32px;padding:0 12px;font-size:13px;align-self:flex-end;white-space:nowrap}.section-drawing{position:relative}.section-drawing>canvas{display:block;width:100%;height:100%}.section-drawing svg{position:absolute;top:0;right:0;bottom:0;left:0}.section-lines{pointer-events:none}.section-edit.tool-dim,.section-edit.tool-angle{cursor:crosshair}.section-edit .preview{opacity:.6;pointer-events:none}.section-edit .hit{stroke:transparent;stroke-width:14;fill:none;cursor:pointer}.section-edit .note.sel .hit{stroke:#22c55e40}.section-edit .h-pt{fill:#fff;stroke:#22863a;stroke-width:2;cursor:move}.section-edit .h-tip{fill:#22c55e;stroke:#fff;stroke-width:2;cursor:grab}.section-edit .h-offset{fill:#22c55e;stroke:#fff;stroke-width:1.5;cursor:ns-resize}.section-edit .snap{fill:none;stroke:#22c55e;stroke-width:2;pointer-events:none}.tool-palette{position:absolute;top:8px;left:8px;display:flex;gap:1px;padding:2px;border-radius:8px;background:#fffffff0;box-shadow:0 1px 5px #0f1f332e}.tool-palette button{padding:5px 10px;border:none;border-radius:6px;background:transparent;color:#4a5560;font:inherit;font-size:12px;font-weight:600;cursor:pointer}.tool-palette button[aria-pressed=true]{background:var(--cta);color:#fff}.tool-hint{position:absolute;top:8px;left:50%;transform:translate(-50%);padding:5px 10px;border-radius:6px;background:#0f1f33;color:#fff;font-size:12px;pointer-events:none;white-space:nowrap}.note-inspector{position:absolute;top:48px;right:8px;display:flex;gap:8px;align-items:flex-end;padding:8px;border-radius:8px;background:#fffffff5;box-shadow:0 2px 10px #0f1f3333}.note-inspector .num input{width:60px;height:30px;box-sizing:border-box}.note-inspector .btn{height:30px;padding:0 10px;font-size:12px}.note-inspector .btn.danger{color:var(--accent)}.note-inspector .seg{display:flex;gap:1px;padding:2px;border-radius:6px;background:var(--track)}.note-inspector .seg button{padding:5px 9px;border:none;border-radius:5px;background:transparent;font:inherit;font-size:12px;cursor:pointer;color:#4a5560}.note-inspector .seg button[aria-pressed=true]{background:#fff;color:#0f1f33;font-weight:600}.plan .cut-line{fill:none;stroke:#46586e;stroke-width:2;stroke-dasharray:9 3 2 3;pointer-events:none}.plan .cut-arrows{fill:none;stroke:#46586e;stroke-width:2;pointer-events:none}.plan .cut-hit{fill:none;stroke:transparent;stroke-width:14;cursor:pointer}.plan .cut.sel .cut-line,.plan .cut.sel .cut-arrows{stroke:#e8562d;stroke-width:2.5}.plan .cut.sel .cut-hit{cursor:move}.plan .cut-rubber{stroke:#22c55e;stroke-width:2;stroke-dasharray:5 4;pointer-events:none}.pop-color{width:44px;height:32px;padding:2px;border:1px solid var(--line);border-radius:6px;background:var(--bg);cursor:pointer}.section-edit .hit-box{fill:transparent;cursor:move}.section-edit .note.sel .hit-box{fill:#22c55e26;stroke:#22c55e;stroke-width:1}.palette-sep{width:1px;margin:3px 4px;background:#d6d8d4}.tool-palette .palette-clear{color:var(--accent)}.tool-palette .palette-clear:disabled{color:#b5b8b3;cursor:default}.note-text{height:30px;box-sizing:border-box;width:110px;padding:0 7px;font:inherit;font-size:13px;border:1px solid var(--line);border-radius:5px;background:var(--bg);color:var(--text)}.note-text.wide{width:180px}.note-inspector .pop-color{width:38px;height:30px}.note-inspector{flex-wrap:wrap;max-width:calc(100% - 16px)}.pop-check{margin-top:8px;font-size:13px}.datum-check{height:30px;font-size:12px}.verticals-btn{height:32px;padding:0 12px;font-size:13px;align-self:flex-end;white-space:nowrap}.verticals-btn[aria-pressed=true]{background:var(--cta);border-color:var(--cta-line);color:var(--on-cta)}.terrain-tool{--panel: var(--panel-solid);--panel-2: var(--track);--pop-bg: var(--panel-solid);--shadow: rgba(15, 31, 51, .35);--on-accent: #fff;--warn-bg: color-mix(in srgb, var(--warn) 18%, var(--panel-solid))}.terrain-tool .controls{display:flex;flex-direction:column;gap:14px;border-right:none}.terrain-tool section{display:flex;flex-direction:column;gap:8px}.seg{display:flex;gap:2px;padding:2px;border:1px solid var(--line);border-radius:9px;background:var(--bg)}.seg button{flex:1;padding:7px 0;border:none;border-radius:7px;background:none;color:var(--muted);font:inherit;font-size:13px;font-weight:600;cursor:pointer}.seg button.on{background:var(--sel);color:var(--text)}.blurb{margin:0;font-size:12px;color:var(--muted);line-height:1.45}.t-h{margin:4px 0 0;font-size:13px;font-weight:600}.t-gap{margin-top:4px}.t-write{margin-top:8px;padding-top:10px;border-top:1px solid var(--line)}.terrain-tool .stats{margin-top:0;padding-top:0;border-top:none}.terrain-canvas{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.terrain-canvas canvas{display:block;touch-action:none}.t-tip,.t-hud{display:none;position:absolute;z-index:5;padding:5px 9px;border-radius:6px;background:#0f1f33;color:#fff;font-size:12px;pointer-events:none;white-space:nowrap}.t-hud{left:50%;top:12px;transform:translate(-50%)}.t-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:13px;pointer-events:none}@media (max-width: 700px){.terrain-tool{flex-direction:column-reverse}.terrain-tool .controls{width:auto;max-height:45%;border-right:none;border-top:1px solid var(--line)}}.t-offset{width:90px;height:32px;padding:0 8px;font:inherit;font-size:13px;text-align:right;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px}.t-unit{align-self:center;font-size:12px;color:var(--muted)}.t-float{position:absolute;top:12px;right:12px;z-index:6;display:flex;flex-direction:column;gap:8px;width:280px;max-height:calc(100% - 24px);overflow-y:auto}.t-card{border:1px solid var(--line);border-radius:10px;background:var(--panel-solid);box-shadow:0 4px 16px #0f1f3329}.t-card-head{width:100%;display:flex;justify-content:space-between;align-items:center;padding:9px 12px;border:none;background:none;color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer}.t-card-body{display:flex;flex-direction:column;gap:8px;padding:10px 12px 12px}.t-card-head+.t-card-body{padding-top:0}.t-card .t-write{margin-top:2px}.t-foot{margin-top:auto}@media (max-width: 700px){.t-float{width:min(280px,calc(100% - 24px))}}.t-solar{display:flex;flex-direction:column;gap:10px;font-size:13px;color:var(--text)}.t-solar input:not([type=checkbox]),.t-solar select{box-sizing:border-box;height:32px;padding:0 8px;font:inherit;font-size:13px;font-variant-numeric:tabular-nums;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px}.t-solar input[type=number]{text-align:right}.t-solar input:focus-visible,.t-solar select:focus-visible,.t-solar button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.t-solar input::-webkit-calendar-picker-indicator{opacity:.55;cursor:pointer}.t-solar input[type=checkbox]{width:15px;height:15px;margin:0;accent-color:var(--cta)}.t-solar button{height:32px;padding:0 12px;font:inherit;font-size:13px;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:8px;cursor:pointer;transition:border-color .12s,background .12s}.t-solar button:hover:not(:disabled){border-color:var(--muted)}.t-solar button:disabled{opacity:.5;cursor:default}.t-solar button[data-active=true]{background:var(--sel);border-color:var(--accent);font-weight:600}.t-solar h2,.t-solar h3{font-size:11px}.t-solar button.t-bake{background:var(--cta);border-color:var(--cta-line);color:var(--on-cta);font-weight:700}.t-solar button.t-bake:hover:not(:disabled){background:var(--cta-hover);border-color:var(--cta-hover)}.t-slider{display:grid;grid-template-columns:auto 1fr 40px;align-items:center;gap:8px;font-size:12px;color:var(--muted);padding-left:24px}.t-slider input{width:100%;accent-color:var(--cta)}.t-slider-val{text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}.t-label{width:100%;box-sizing:border-box;height:32px;padding:0 8px;font:inherit;font-size:13px;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px}.t-colour{grid-template-columns:auto 1fr 32px}.t-seg-sm button{padding:4px 0;font-size:11px}.t-swatch{width:32px;height:26px}.t-resize{flex:0 0 6px;margin-left:-3px;margin-right:-3px;position:relative;z-index:7;cursor:col-resize;touch-action:none}.t-resize:after{content:"";position:absolute;top:0;bottom:0;left:2px;width:1px;background:var(--line);transition:background .12s,width .12s}.t-resize:hover:after,.t-resize:active:after{left:1px;width:3px;background:var(--accent)}@media (max-width: 700px){.t-resize{display:none}.terrain-tool .controls{width:auto!important}}.t-view{position:absolute;top:12px;left:12px;z-index:6;display:flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line);border-radius:9px;background:var(--panel-solid);box-shadow:0 4px 16px #0f1f3329}.t-view button{padding:5px 12px;border:none;border-radius:6px;background:none;color:var(--muted);font:inherit;font-size:12px;font-weight:600;cursor:pointer}.t-view button.on{background:var(--sel);color:var(--text)}.t-view kbd,.t-kbd{display:inline-block;min-width:16px;padding:1px 4px;margin:0 3px;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;font:600 10px/1.3 var(--font-body, inherit);color:var(--muted);text-align:center}
