*{box-sizing:border-box}[hidden]{display:none!important}:root{--bar:#eceef1;--bar-line:#d3d7dc;--sub:#f5f6f8;--panel:#f7f8f9;--hover:#e0e3e7;--divider:#c9ced4;--paper:#fff;--canvas-bg:#dfe2e6;--text:#2a2f35;--muted:#6b737d;--orange:#ef8a1f;--orange-soft:#fdebd6;--sky:#1e9ad6;--sky-soft:#e1f2fb;--sky-text:#147bb0;--danger:#c0392b;--radius:7px;--touch:44px;--icon:20px}html,body{background:var(--bar);height:100%;color:var(--text);overscroll-behavior:none;margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px}body{-webkit-tap-highlight-color:transparent;flex-direction:column;height:100dvh;display:flex;overflow:hidden}button,select,input,textarea{font:inherit;color:inherit}input,select,textarea{font-size:16px}button{min-height:var(--touch);border:1px solid var(--bar-line);border-radius:var(--radius);background:var(--paper);color:var(--text);cursor:pointer;touch-action:manipulation;padding:0 12px;font-size:14px}button:disabled{opacity:.4;cursor:default}button.primary{color:var(--sky-text);font-weight:600}.has-icon{justify-content:center;align-items:center;gap:7px;display:inline-flex}.icon{width:var(--icon);height:var(--icon);flex-shrink:0}.has-icon .label:empty{display:none}@media (hover:hover){button:not(:disabled):hover{background-color:var(--hover)}}.flat-row{align-items:stretch;display:flex}.flat-row>button,.tool-group>button,.wall-options>button,.view-actions>button,.undo-actions>button,.export-actions>button{background:0 0;border:none;border-radius:0;position:relative}.tool-group>button+button:before,.wall-options>button+button:before,.wall-options>*+button:before,.view-actions>button+button:before,.undo-actions>button+button:before,.export-actions>button+button:before{content:"";background:var(--divider);width:1px;position:absolute;top:28%;bottom:28%;left:0}.app-header{min-height:52px;padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);background:var(--bar);border-bottom:1px solid var(--bar-line);align-items:stretch;display:flex}.app-header h1{align-items:center;margin:0;padding:0 18px 0 8px;display:flex}.app-header h1 img{width:auto;height:40px;display:block}.toolbar{flex-wrap:wrap;flex:1;align-items:stretch;gap:20px;min-width:0;padding:6px 0;display:flex}.tool-group{border:1px solid var(--bar-line);border-radius:var(--radius);background:var(--sub);align-items:stretch;display:flex;overflow:hidden}.tool-group>button{min-width:0;color:var(--text);padding:0 14px;font-weight:600}@media (width<=1599px){.toolbar{gap:10px}.tool-group>button{padding:0 8px}.app-header h1{padding-right:10px}}@media (width<=1379px){.toolbar{gap:8px}.tool-group>button{padding:0 5px}}@media (width>=701px) and (hover:hover) and (pointer:fine){.app-header{min-height:48px}.toolbar{gap:12px;padding:4px 0}.tool-group>button{width:42px;padding:0}.tool-group>button .label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.tool-group>button[aria-pressed=true]{color:var(--orange);box-shadow:inset 0 -2px 0 var(--orange);background:#ef8a1f12}.view-title{color:var(--muted);flex:1;align-items:center;margin:0;padding:0 16px;font-weight:600;display:flex}.view-title:empty{display:none}.wall-options{min-height:46px;padding:0 8px;padding-left:max(8px, env(safe-area-inset-left));padding-right:max(8px, env(safe-area-inset-right));background:var(--sub);border-bottom:1px solid var(--bar-line);flex-wrap:wrap;align-items:center;display:flex}.wall-options label{max-width:340px;color:var(--muted);flex:1;align-items:center;gap:8px;margin-right:8px;font-size:13px;display:flex}.wall-options select{border:1px solid var(--bar-line);border-radius:var(--radius);background:var(--paper);min-height:36px;color:var(--text);flex:1;padding:0 8px}.wall-options>button{font-weight:500}.wall-options>button.primary{color:var(--sky-text)}.outline-note{color:var(--muted);flex:1;padding:0 4px;font-size:13px}.file-menu{z-index:20;top:calc(56px + env(safe-area-inset-top));right:calc(var(--rail) + 8px);border:1px solid var(--bar-line);background:var(--panel);border-radius:10px;flex-direction:column;gap:6px;width:min(340px,100vw - 16px);padding:10px;display:flex;position:fixed;box-shadow:0 10px 30px #00000029}.file-menu button{text-align:left;justify-content:flex-start}.file-menu .note{color:var(--muted);margin:4px 2px 0;font-size:13px}:root{--rail:150px}.app-main{flex:1;min-height:0;display:flex;position:relative}.workspace{flex-direction:column;flex:1;min-width:0;display:flex;position:relative}@media (width>=900px){.workspace{flex-direction:row}}.view{background:var(--paper);flex:1;min-width:0;min-height:0;position:relative}#sheet-view{background:var(--canvas-bg)}.view canvas{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%;height:100%;display:block;position:absolute;inset:0}.view-actions,.undo-actions,.export-actions{border:1px solid var(--bar-line);background:#f7f8f9f5;border-radius:9px;display:flex;position:absolute;overflow:hidden;box-shadow:0 1px 3px #00000014}.view-actions{top:8px;right:8px}.undo-actions{bottom:8px;left:8px}.export-actions{bottom:8px;right:8px}.view-actions>button,.undo-actions>button,.export-actions>button{padding:0 12px}.status{border:1px solid var(--bar-line);width:fit-content;color:var(--muted);pointer-events:none;background:#f7f8f9f0;border-radius:9px;margin:0;padding:5px 10px;font-size:13px;position:absolute;top:8px;left:8px;right:190px}#elevation-status{max-width:calc(100% - 220px);inset:auto 8px 8px auto}.rail{width:var(--rail);padding:6px 0;padding-right:env(safe-area-inset-right);padding-bottom:max(6px, env(safe-area-inset-bottom));scrollbar-width:none;background:var(--bar);border-left:1px solid var(--bar-line);flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.rail button{text-align:left;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;background:0 0;border:none;border-radius:0;flex-shrink:0;justify-content:flex-start;min-height:40px;padding:4px 12px 4px 16px;font-size:13.5px;font-weight:500;line-height:1.2}.rail button[aria-pressed=true]{color:var(--orange);background:var(--paper);box-shadow:inset 3px 0 0 var(--orange);font-weight:600}.rail button.editing{background:var(--orange-soft)}.rail>.header-button{border:1px solid var(--bar-line);border-radius:var(--radius);background:var(--paper);justify-content:center;min-height:44px;margin:0 8px 6px;padding:0 10px;font-weight:600}.rail-heading{text-transform:uppercase;letter-spacing:.7px;color:#50575f;align-items:center;gap:6px;margin:12px 12px 4px;font-size:11px;font-weight:800;display:flex}.rail-heading .icon{width:15px;height:15px}.rail .rail-add{color:var(--sky-text);font-size:13px}.rail .rail-add .icon{width:15px;height:15px}.properties{z-index:30;top:var(--header-h,52px);left:0;right:var(--rail);max-height:42vh;padding:6px 12px 8px;padding-left:max(12px, env(safe-area-inset-left));padding-right:max(12px, env(safe-area-inset-right));background:var(--sub);border-bottom:1px solid var(--bar-line);flex-wrap:wrap;align-items:flex-end;gap:8px 10px;display:flex;position:fixed;overflow-y:auto;box-shadow:0 6px 14px #0000001a}.properties>*{flex:none}.properties .field{width:118px}:is(.properties .select-field,.properties .field:has(select)){width:170px}.properties .select-field.wide-select{width:200px}.properties .text-field,.properties .note-text{width:230px}.properties .title-field{width:300px}.properties .more-row{flex-wrap:wrap;flex:1 0 100%;order:10;align-items:flex-end;gap:8px 10px;display:flex}.properties .more-row[hidden]{display:none}.properties .more-row .field{width:118px}.properties .more-row>.danger-button{margin-left:auto}.properties .note{flex:220px;align-self:center;max-width:420px}.properties .button-row{gap:0;display:flex}.properties .button-row>button{border-radius:0}.properties .button-row>button:first-child{border-radius:var(--radius) 0 0 var(--radius)}.properties .button-row>button:last-child{border-radius:0 var(--radius) var(--radius) 0}.properties .button-row>button+button{margin-left:-1px}.properties .button-row>button[aria-pressed=true]{z-index:1;position:relative}.properties .button-row>button:only-child{border-radius:var(--radius)}.properties .danger-button{margin-top:0;margin-left:auto}.panel-header{border-right:1px solid var(--bar-line);align-self:stretch;align-items:center;gap:2px;padding-right:8px;display:flex}.panel-header h2{text-transform:uppercase;letter-spacing:.5px;color:var(--orange);white-space:nowrap;order:2;margin:0;font-size:13px;font-weight:700}.panel-header .icon-button{order:1}.icon-button{width:44px;color:var(--muted);background:0 0;border:none;padding:0}.properties .note{color:var(--muted);margin:0;font-size:13px;line-height:1.35}.field{color:var(--muted);flex-direction:column;gap:4px;font-size:12.5px;display:flex}.field input,.field select,.field textarea{min-height:var(--touch);border:1px solid var(--bar-line);border-radius:var(--radius);background:var(--paper);width:100%;color:var(--text);padding:0 10px}.field textarea{resize:vertical;min-height:60px;padding:8px 10px}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--sky);outline-offset:-1px}.input-with-unit{display:block;position:relative}.input-with-unit input{font-variant-numeric:tabular-nums;padding-right:30px}.input-with-unit .unit{pointer-events:none;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.button-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.button-row button[aria-pressed=true],.toggle-row button[aria-pressed=true],.on-off[aria-pressed=true]{background:var(--sky-soft);border-color:var(--sky);color:var(--sky-text);font-weight:600}.danger-button{color:var(--danger);border-color:#ecc4bf;margin-top:4px}.title-field{grid-template-columns:1fr auto;column-gap:6px;display:grid}.title-field>span{grid-column:1/-1}.link-toggle{white-space:nowrap;color:var(--muted);padding:0 10px;font-size:12.5px}.link-toggle .icon{width:16px;height:16px}.link-toggle[aria-pressed=true]{background:var(--sky-soft);border-color:var(--sky);color:var(--sky-text)}.view3d-canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}#view-3d .status{top:auto;bottom:8px}@media (width<=700px){.app-header h1{display:none}}@media (width<=520px){:root{--rail:66px;--icon:18px}html,body{font-size:13px}button{padding:0 9px;font-size:12.5px}.app-header{min-height:50px}.toolbar{gap:6px;padding:4px}.tool-group{flex:auto}.tool-group>button{letter-spacing:0;flex-direction:column;flex:1;gap:2px;min-width:44px;padding:4px 0 3px;font-size:10px;font-weight:600}.tool-group:first-child{flex-basis:100%}.tool-group>button+button:before{top:32%;bottom:32%}.wall-options{min-height:44px;padding:0 4px}.wall-options label>span{display:none}.wall-options>button{padding:0 8px;font-size:12px}.rail button{min-height:44px;padding:4px 6px 4px 8px;font-size:11px}.rail>.header-button{gap:4px;margin:0 4px 4px;padding:0 4px}.rail-heading{letter-spacing:0;margin:10px 4px 3px 8px;font-size:8.5px}.rail-heading .icon{display:none}.rail .rail-add{letter-spacing:-.2px;gap:2px;font-size:11px}.rail .rail-add .icon{width:12px;height:12px}.properties{gap:6px 8px;max-height:38vh;padding:4px 8px 6px}.properties .field{width:96px}.properties .select-field,.properties .select-field.wide-select,.properties .text-field,.properties .title-field{width:100%}.properties .field:has(select){width:100%}.properties .note{font-size:12.5px}.field{font-size:11.5px}.panel-header h2{font-size:14px}.view-actions>button,.undo-actions>button,.export-actions>button{padding:0 9px;font-size:12px}.status{padding:4px 8px;font-size:11.5px}.export-actions{bottom:60px}#elevation-status{max-width:calc(100% - 170px)}}.field>span:first-child{align-items:center;gap:4px;display:flex}.field>span:first-child .icon{width:14px;height:14px}.rail-group{border-radius:8px;flex-direction:column;flex-shrink:0;margin:3px 6px;padding:2px 0 4px;display:flex;overflow:hidden}.rail-group-0{background:#dce4ee}.rail-group-1{background:#dde6da}.rail-group-2{background:#eedcdc}.rail-group-3{background:#e4dfeb}.rail-group-4{background:#ece2d4}.rail-group .rail-heading{margin-top:8px}@media (width<=520px){.rail-group{margin:3px 2px}.rail .rail-group button{-webkit-hyphens:none;hyphens:none;overflow-wrap:normal;word-break:normal;padding:4px 3px 4px 5px}.rail-group .rail-heading{margin:7px 2px 3px 5px;font-size:7.5px}}.dim-editor{z-index:50;border:2px solid var(--sky);color:var(--sky-text);text-align:center;background:#fff;border-radius:8px;outline:none;margin:0;padding:0 8px;font:600 16px system-ui,-apple-system,sans-serif;position:fixed;box-shadow:0 2px 10px #0000002e}.title-editor{z-index:60;border:2px solid var(--sky);background:#fff;border-radius:10px;flex-direction:column;gap:6px;padding:6px;display:flex;position:fixed;box-shadow:0 4px 16px #0003}.title-editor textarea{resize:vertical;border:1px solid var(--bar-line);text-align:center;width:100%;min-height:44px;color:var(--text);border-radius:6px;padding:6px 8px}.title-editor-bar{justify-content:flex-end;gap:6px;display:flex}.title-editor-bar>button{min-height:var(--touch)}.toast{z-index:50;border:1px solid var(--bar-line);color:#fff;pointer-events:none;background:#2a2f35;border-radius:9px;max-width:min(560px,100vw - 32px);padding:10px 14px;font-size:14px;line-height:1.35;position:fixed;bottom:72px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #0000002e}.toast[hidden]{display:none}.second-view{border-left:1px solid var(--bar-line);border-top:1px solid var(--bar-line)}@media (width>=900px){.second-view{border-top:none}}.second-2d,.second-3d,.second-3d canvas{position:absolute;inset:0}.second-bar{z-index:2;border:1px solid var(--bar-line);background:#f7f8f9f5;border-radius:9px;align-items:center;gap:4px;padding:2px;display:flex;position:absolute;top:8px;right:8px}.second-bar select{border:1px solid var(--bar-line);border-radius:var(--radius);background:var(--paper);max-width:220px;min-height:36px;font:inherit;font-size:14px}.second-status{right:260px}[data-split][aria-pressed=true]{color:var(--orange)}.second-view .view-actions{top:auto;bottom:8px}@media (width>=701px) and (hover:hover) and (pointer:fine){.properties{--touch:34px;gap:6px 8px;padding:5px 12px 6px}.properties button{padding:0 10px;font-size:13px}.properties .field{gap:2px;font-size:11.5px}.properties .field input,.properties .field select{font-size:14px}.properties .field{width:100px}:is(.properties .select-field,.properties .field:has(select)){width:150px}.properties .icon-button{width:34px}.properties.one-row{flex-wrap:nowrap;overflow:hidden}.properties.one-row .note{flex:1 1 0;min-width:200px;max-width:420px}.properties .more-button,.properties.one-row .danger-button{order:9}.properties .fit-hidden{display:none!important}}
