:root{--app-bg: #e8ecf2;--chrome: #ffffff;--chrome-2: #f4f6fa;--chrome-3: #eef1f6;--chrome-border: #e3e8f1;--chrome-ink: #1c2533;--chrome-muted: #6a7688;--accent: #1b4fd8;--accent-2: #0f3bb0;--accent-soft: #e9f0ff;--canvas: #ffffff;--sheet-border: #dbe2ee;--ink: #27313f;--ink-soft: #5b6678;--grid: #1b4fd8;--joist: #6f86b8;--joist-over: #d8392b;--bearing: #d8392b;--dim: #7a8aa3;--ok: #1e9e6a;--warn: #d8392b;--shadow: 0 1px 2px rgba(20, 30, 50, .05), 0 10px 30px rgba(20, 30, 50, .09);--shadow-sm: 0 1px 2px rgba(20, 30, 50, .08), 0 3px 8px rgba(20, 30, 50, .06);--radius: 10px;--radius-sm: 7px}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font-family:Manrope,system-ui,sans-serif;-webkit-font-smoothing:antialiased;background:var(--app-bg);color:var(--chrome-ink);font-size:13px}.mono{font-family:IBM Plex Mono,monospace;font-variant-numeric:tabular-nums}.app{height:100vh;width:100vw;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none}.topbar{height:56px;flex:none;display:flex;align-items:center;gap:14px;padding:0 16px;background:var(--chrome);border-bottom:1px solid var(--chrome-border);z-index:10}.brand{display:flex;align-items:center;gap:9px}.brand-mark{width:30px;height:30px;border-radius:8px;background:var(--accent);display:grid;place-items:center;box-shadow:0 2px 6px #1b4fd859}.brand-name{font-weight:800;font-size:15px;letter-spacing:-.3px}.brand-name span{color:var(--accent)}.pill-warn{margin-left:auto;font-size:11px;font-weight:600;color:var(--warn);background:#fdecea;border:1px solid #f6cfca;padding:4px 10px;border-radius:999px}.autosave-pill{margin-left:auto;font-size:11px;font-weight:700;color:var(--ok);background:#e6f6ee;border:1px solid #bfe6d2;padding:4px 10px;border-radius:999px}.autosave-pill+.pill-warn{margin-left:0}.account-chip{max-width:220px;height:30px;padding:0 11px;border:1px solid var(--chrome-border);border-radius:999px;background:var(--chrome-2);color:var(--ink-soft);font:inherit;font-size:11.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.account-chip:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.toolbar{height:46px;flex:none;display:flex;align-items:center;gap:14px;padding:0 14px;background:var(--chrome-2);border-bottom:1px solid var(--chrome-border);z-index:9}.tool-group{display:flex;gap:4px}.tool{display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:600;font-size:12.5px;padding:6px 11px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--ink-soft);cursor:pointer;transition:background .12s,color .12s,border-color .12s}.tool:hover{background:var(--chrome-3)}.tool.active{background:var(--accent-soft);color:var(--accent);border-color:#c5d6fb}.tool-glyph{font-size:14px;line-height:1}.toolbar-hint{margin-left:auto;font-size:11.5px;color:var(--chrome-muted)}.main{flex:1;display:flex;min-height:0}.canvas-wrap{flex:1;position:relative;min-width:0;background:var(--app-bg)}.stage-host{position:absolute;top:0;right:0;bottom:0;left:0}.left-rail{width:200px;flex:none;display:flex;flex-direction:column;min-height:0;background:var(--chrome);border-right:1px solid var(--chrome-border)}.library{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 12px}.library-title{margin:0 0 12px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--chrome-muted);font-weight:700}.library-group{margin-bottom:16px}.library-group h3{margin:0 0 8px;font-size:11px;font-weight:700;color:var(--ink-soft)}.symbol-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.symbol-chip{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px 9px;border:1px solid var(--chrome-border);border-radius:var(--radius-sm);background:var(--chrome-2);color:var(--ink);cursor:grab;transition:border-color .12s,box-shadow .12s,transform 80ms}.symbol-chip:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}.symbol-chip:active{cursor:grabbing;transform:scale(.97)}.symbol-glyph{font-size:20px;line-height:1;color:var(--accent)}.symbol-label{font-size:10.5px;font-weight:600;text-align:center;line-height:1.25;color:var(--ink-soft)}.library-note{margin-top:4px}.layers{flex:none;border-top:1px solid var(--chrome-border);background:var(--chrome);padding:12px 12px 14px}.layer-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.layer-row{display:flex;align-items:center;gap:8px;width:100%;padding:6px 7px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--ink);cursor:pointer;text-align:left;transition:background-color .12s,border-color .12s,opacity .12s}.layer-row:hover{background:var(--chrome-2);border-color:var(--chrome-border)}.layer-row:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.layer-row.off{opacity:.5}.layer-eye{display:inline-flex;color:var(--accent);flex:none}.layer-row.off .layer-eye{color:var(--chrome-muted)}.layer-swatch{width:10px;height:10px;border-radius:3px;flex:none;box-shadow:inset 0 0 0 1px #0000001f}.layer-row.off .layer-swatch{filter:grayscale(1)}.layer-name{flex:1;font-size:12px;font-weight:600;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-count{flex:none;min-width:20px;text-align:center;font-family:var(--font-mono, "IBM Plex Mono", monospace);font-size:10.5px;font-weight:600;color:var(--chrome-muted);background:var(--chrome-2);border-radius:999px;padding:1px 6px}.context-menu{position:absolute;z-index:20;min-width:184px;padding:5px;background:var(--chrome);border:1px solid var(--chrome-border);border-radius:var(--radius-sm);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:1px}.ctx-header{padding:5px 9px 6px;font-size:10px;letter-spacing:.07em;text-transform:uppercase;font-weight:700;color:var(--chrome-muted)}.ctx-divider{height:1px;margin:4px 2px;background:var(--chrome-border)}.ctx-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 9px;border:none;border-radius:5px;background:transparent;color:var(--ink);font-size:12.5px;font-weight:600;text-align:left;cursor:pointer;transition:background-color .11s,color .11s}.ctx-item:hover{background:var(--accent);color:#fff}.ctx-item.danger:hover{background:var(--bearing)}.ctx-item:disabled{opacity:.45;cursor:default}.ctx-check{width:12px;flex:none;font-size:12px;color:var(--accent)}.ctx-item:hover .ctx-check{color:#fff}.ctx-label{flex:1}.tool-divider{width:1px;height:22px;background:var(--chrome-border)}.tool:disabled{opacity:.38;cursor:default}.tool:disabled:hover{background:transparent}.inspector{position:absolute;top:14px;right:14px;z-index:15;width:226px;padding:12px;background:var(--chrome);border:1px solid var(--chrome-border);border-radius:var(--radius);box-shadow:var(--shadow)}.inspector-head{display:flex;align-items:center;gap:8px;margin-bottom:11px}.inspector-glyph{font-size:16px;line-height:1;color:var(--accent)}.inspector-title{flex:1;font-size:13px;font-weight:700;color:var(--ink)}.inspector-x{width:24px;height:24px;flex:none;border:1px solid var(--chrome-border);border-radius:var(--radius-sm);background:var(--chrome-2);color:var(--ink-soft);font-size:11px;cursor:pointer;transition:background .12s,color .12s,border-color .12s}.inspector-x:hover{background:var(--bearing);color:#fff;border-color:var(--bearing)}.inspector-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.inspector-grid label{display:flex;flex-direction:column;gap:3px;font-size:10px;letter-spacing:.02em;font-weight:700;text-transform:uppercase;color:var(--chrome-muted)}.inspector-grid .num{width:100%;margin:0;padding:6px 8px}.inspector-row{display:flex;gap:6px;margin-bottom:8px}.ins-btn{flex:1;padding:7px 4px;border:1px solid var(--chrome-border);border-radius:var(--radius-sm);background:var(--chrome-2);color:var(--ink);font-size:11.5px;font-weight:600;cursor:pointer;transition:border-color .12s,background .12s}.ins-btn:hover{border-color:var(--accent);background:var(--accent-soft)}.ins-delete{width:100%;padding:8px;border:1px solid transparent;border-radius:var(--radius-sm);background:#d8392b1a;color:var(--bearing);font-weight:700;font-size:12px;cursor:pointer;transition:background .12s,color .12s}.ins-delete:hover{background:var(--bearing);color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#141e326b;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:var(--chrome);border:1px solid var(--chrome-border);border-radius:var(--radius);box-shadow:var(--shadow);max-height:88vh;overflow:auto}.tpl-modal{width:min(820px,100%);padding:22px 24px 26px}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.modal-head h2{margin:0 0 3px;font-size:17px;font-weight:700;color:var(--ink)}.modal-close{flex:none;width:30px;height:30px;border:1px solid var(--chrome-border);border-radius:var(--radius-sm);background:var(--chrome-2);color:var(--ink-soft);font-size:13px;cursor:pointer;transition:background .12s,color .12s}.modal-close:hover{background:var(--bearing);color:#fff;border-color:var(--bearing)}.tpl-section{margin-bottom:22px}.tpl-cat{margin:0 0 12px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--chrome-muted);border-bottom:1px solid var(--chrome-border);padding-bottom:7px}.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}.tpl-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px;border:1px solid var(--chrome-border);border-radius:var(--radius-sm);background:var(--chrome-2);cursor:pointer;text-align:left;transition:border-color .13s,box-shadow .13s,transform 90ms}.tpl-card:hover{border-color:var(--accent);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.tpl-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tpl-thumb{width:100%;height:auto;margin-bottom:6px;background:var(--app-bg);border:1px solid var(--sheet-border);border-radius:6px}.tpl-name{font-size:13px;font-weight:700;color:var(--ink)}.tpl-blurb{font-size:11.5px;line-height:1.35;color:var(--chrome-muted)}.proj-modal{width:min(540px,100%);padding:22px 24px 24px}.auth-modal{width:min(420px,100%);padding:22px 24px 24px}.auth-google{margin-bottom:14px}.auth-divider{display:flex;align-items:center;gap:10px;margin:4px 0 14px;color:var(--chrome-muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.auth-divider:before,.auth-divider:after{content:"";height:1px;flex:1;background:var(--chrome-border)}.auth-status,.auth-config{margin-top:12px}.auth-config{padding:12px;border:1px solid #f6cfca;border-radius:var(--radius-sm);background:#fdecea;color:var(--warn)}.auth-config strong{display:block;margin-bottom:5px}.proj-save{display:flex;gap:8px;margin-bottom:18px}.proj-save .num{flex:1;margin:0}.proj-save .btn-accent{flex:none;width:auto;margin:0;padding:0 18px}.proj-empty{text-align:center;padding:22px 0 8px}.proj-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:46vh;overflow-y:auto}.proj-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--chrome-border);border-radius:var(--radius-sm);background:var(--chrome-2)}.proj-row.active{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.proj-meta{display:flex;flex-direction:column;gap:2px;min-width:0}.proj-name{font-size:13px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.proj-date{font-size:10.5px;color:var(--chrome-muted)}.proj-actions{display:flex;gap:6px;flex:none}.btn-outline.sm,.btn-ghost-danger.sm{width:auto;margin:0;padding:5px 12px;font-size:12px}.btn-ghost-danger{border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--bearing);font-weight:600;cursor:pointer;transition:background .12s,border-color .12s}.btn-ghost-danger:hover{background:#d8392b1a;border-color:var(--bearing)}.panel{width:320px;flex:none;background:var(--chrome);border-left:1px solid var(--chrome-border);overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:18px}.panel h2{margin:0 0 2px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--chrome-muted);font-weight:700}.field{display:flex;flex-direction:column;gap:6px}.field-row{display:flex;gap:10px}.field-row .field{flex:1}label.lbl{font-size:12px;color:var(--ink-soft);font-weight:600}input.num,select.sel{font:inherit;padding:8px 10px;border:1px solid var(--chrome-border);border-radius:var(--radius-sm);background:var(--chrome-2);color:var(--ink)}input.num:focus,select.sel:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.seg{display:flex;border:1px solid var(--chrome-border);border-radius:var(--radius-sm);overflow:hidden}.seg button{flex:1;font:inherit;font-weight:600;padding:8px 6px;border:0;background:var(--chrome-2);color:var(--ink-soft);cursor:pointer;transition:background .12s,color .12s}.seg button+button{border-left:1px solid var(--chrome-border)}.seg button.active{background:var(--accent);color:#fff}.seg button:not(.active):hover{background:var(--chrome-3)}.card{background:var(--chrome-2);border:1px solid var(--chrome-border);border-radius:var(--radius);padding:12px 14px}.stat{display:flex;justify-content:space-between;align-items:baseline;padding:5px 0}.stat+.stat{border-top:1px dashed var(--chrome-border)}.stat .k{color:var(--ink-soft);font-size:12px}.stat .v{font-weight:700;font-size:13px}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px}.badge.ok{color:var(--ok);background:#e6f6ee}.badge.warn{color:var(--warn);background:#fdecea}.diag{font-size:12px;line-height:1.45;color:var(--warn);background:#fdecea;border:1px solid #f6cfca;border-radius:var(--radius-sm);padding:9px 11px}.note{font-size:11px;color:var(--chrome-muted);line-height:1.5}.hint{position:absolute;left:16px;bottom:14px;font-size:11.5px;color:var(--chrome-muted);background:#ffffffd9;border:1px solid var(--chrome-border);border-radius:999px;padding:6px 12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.legend{display:flex;gap:14px;flex-wrap:wrap}.legend span{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-soft)}.legend i{width:14px;height:3px;border-radius:2px}.zoombar{position:absolute;right:16px;bottom:14px;display:flex;gap:1px;background:var(--chrome-border);border-radius:var(--radius-sm);overflow:hidden;box-shadow:var(--shadow-sm)}.zoombar button{font:inherit;font-weight:700;font-size:14px;min-width:34px;height:32px;border:0;background:var(--chrome);color:var(--ink);cursor:pointer;transition:background .12s}.zoombar button.fit{font-size:12px;letter-spacing:.02em;color:var(--accent)}.zoombar button:hover{background:var(--chrome-3)}.edge-edit{position:absolute;width:80px;padding:4px 6px;font-size:12px;text-align:center;border:1.5px solid var(--accent);border-radius:5px;background:#fff;color:var(--ink);box-shadow:var(--shadow-sm);z-index:5}.edge-edit:focus{outline:none}.tabs{display:flex;gap:4px;background:var(--chrome-3);padding:4px;border-radius:var(--radius);position:sticky;top:-16px;z-index:2}.tabs button{flex:1;font:inherit;font-weight:700;font-size:12px;padding:7px 0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink-soft);cursor:pointer;transition:background .12s,color .12s}.tabs button.active{background:var(--chrome);color:var(--accent);box-shadow:var(--shadow-sm)}.btn-accent,.btn-outline{font:inherit;font-weight:700;font-size:12.5px;padding:9px 12px;border-radius:var(--radius-sm);cursor:pointer;width:100%;transition:filter .12s,background .12s}.btn-accent{background:var(--accent);color:#fff;border:1px solid var(--accent-2)}.btn-accent:hover{filter:brightness(1.07)}.btn-outline{background:var(--chrome);color:var(--accent);border:1px solid var(--accent);margin-top:8px}.btn-outline:hover{background:var(--accent-soft)}.op-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.op-list li{display:flex;align-items:center;justify-content:space-between;background:var(--chrome-2);border:1px solid var(--chrome-border);border-radius:var(--radius-sm);padding:6px 6px 6px 10px;font-size:12px}.op-list .x{border:0;background:transparent;color:var(--warn);font-size:17px;line-height:1;cursor:pointer;padding:0 6px}.wall-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}.toggle{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink);font-weight:600;cursor:pointer}.toggle input{width:15px;height:15px;accent-color:var(--accent)}.table-scroll{overflow-x:auto}.span-table{width:100%;border-collapse:collapse;font-size:11.5px}.span-table th{text-align:center;font-weight:700;color:var(--chrome-muted);padding:4px 2px;border-bottom:1px solid var(--chrome-border)}.span-table th:first-child{text-align:left}.span-table .rowhead{white-space:nowrap;color:var(--ink);font-weight:600;padding-right:8px}.span-table td{padding:3px 2px}.span-table .cell{width:52px;font:inherit;text-align:right;padding:4px 5px;border:1px solid var(--chrome-border);border-radius:5px;background:var(--chrome-2);color:var(--ink)}.span-table .cell:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.landing{min-height:100vh;background:#f7f9fc;color:var(--ink);overflow-x:hidden}.landing-nav{position:sticky;top:0;z-index:30;height:68px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 max(24px,calc((100vw - 1160px)/2));background:#ffffffeb;border-bottom:1px solid var(--chrome-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.landing-brand{display:inline-flex;align-items:center;gap:10px;color:inherit;text-decoration:none}.landing-links{display:flex;align-items:center;gap:22px;font-size:13px;font-weight:700}.landing-links a{color:var(--ink-soft);text-decoration:none}.landing-links a:hover{color:var(--accent)}.landing-links .landing-login{padding:9px 14px;border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);background:var(--chrome)}.landing-hero{display:grid;grid-template-columns:minmax(0,.9fr) minmax(520px,1.1fr);gap:44px;align-items:center;max-width:1160px;margin:0 auto;padding:74px 24px 68px}.landing-hero-copy h1{margin:0;max-width:520px;font-size:clamp(38px,5vw,60px);line-height:1;letter-spacing:0;color:#172033}.landing-kicker{margin:0 0 14px;color:var(--accent);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.landing-lede{max-width:590px;margin:22px 0 0;font-size:18px;line-height:1.65;color:var(--ink-soft)}.landing-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.landing-primary,.landing-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 18px;border-radius:var(--radius-sm);font-weight:800;font-size:14px;text-decoration:none}.landing-primary{background:var(--accent);color:#fff;border:1px solid var(--accent-2);box-shadow:0 8px 22px #1b4fd838}.landing-primary:hover{background:var(--accent-2)}.landing-secondary{background:#fff;color:var(--accent);border:1px solid #c7d5ef}.landing-secondary:hover{background:var(--accent-soft)}.landing-proof{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}.landing-proof span{padding:7px 10px;border:1px solid var(--chrome-border);border-radius:999px;background:#fff;color:var(--chrome-muted);font-size:12px;font-weight:700}.product-shot{overflow:hidden;border:1px solid #cfd9ea;border-radius:8px;background:#fff;box-shadow:0 24px 70px #1720332e}.shot-top{height:42px;display:flex;align-items:center;gap:8px;padding:0 14px;border-bottom:1px solid var(--chrome-border);background:var(--chrome-2);color:var(--ink-soft);font-size:12px}.shot-top strong{margin-left:8px;color:var(--ink)}.shot-dot{width:9px;height:9px;border-radius:50%;background:#b8c2d1}.shot-body{display:grid;grid-template-columns:104px minmax(300px,1fr) 140px;min-height:430px}.shot-rail,.shot-panel{padding:16px 12px;background:#fff;border-color:var(--chrome-border)}.shot-rail{border-right:1px solid var(--chrome-border)}.shot-panel{border-left:1px solid var(--chrome-border)}.shot-rail span,.shot-panel span{display:block;margin:0 0 10px;color:var(--chrome-muted);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.shot-rail i,.shot-rail b{display:flex;align-items:center;height:34px;margin-bottom:8px;padding:0 8px;border:1px solid var(--chrome-border);border-radius:7px;background:var(--chrome-2);color:var(--ink-soft);font-size:10.5px;font-style:normal;font-weight:800}.shot-rail b{height:24px}.shot-panel strong{display:block;margin-bottom:18px;font-size:14px}.shot-panel b,.shot-panel em{display:block;margin:-4px 0 18px;padding:8px 9px;border-radius:7px;background:var(--chrome-2);color:var(--ink);font-style:normal;font-size:12px;font-weight:800}.shot-panel em{color:var(--ok);background:#e6f6ee}.shot-canvas{position:relative;background:linear-gradient(rgba(27,79,216,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(27,79,216,.07) 1px,transparent 1px),#e8ecf2;background-size:38px 38px}.plan-outline{position:absolute;top:54px;right:42px;bottom:54px;left:42px;background:#fff;border:1px solid #dbe2ee;box-shadow:0 14px 30px #141e321f}.wall,.bearing-wall,.joist,.beam,.column,.dimension,.drag-cursor,.snap-guide,.moving-symbol,.plan-label{position:absolute;display:block}.wall{background:var(--wall, #33425e)}.wall-a,.wall-c{left:9%;right:9%;height:4px}.wall-a{top:18%}.wall-c{bottom:18%}.wall-b,.wall-d{top:18%;bottom:18%;width:4px}.wall-b{right:9%}.wall-d{left:9%}.bearing-wall{left:9%;right:9%;top:48%;height:5px;background:var(--bearing)}.joist{top:21%;bottom:21%;width:2px;background:#6f86b8}.j1{left:26%}.j2{left:39%}.j3{left:52%}.j4{left:65%}.beam{left:23%;right:23%;top:58%;height:6px;border-radius:99px;background:var(--beam)}.column{width:12px;height:12px;background:var(--column)}.c1{left:22%;top:55%}.c2{right:22%;top:55%}.dimension{padding:4px 8px;border:1px solid var(--accent);border-radius:5px;background:#fff;color:var(--accent);font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:700}.dim-a{left:41%;bottom:8%}.dim-b{left:2%;top:46%}.plan-label{z-index:5;padding:3px 6px;border:1px solid var(--chrome-border);border-radius:5px;background:#ffffffeb;color:var(--ink-soft);font-family:IBM Plex Mono,monospace;font-size:9.5px;font-weight:800;white-space:nowrap}.label-opening{left:18%;top:17%}.label-joists{right:14%;top:27%}.label-beam{left:37%;top:61%;color:var(--beam)}.label-snap{right:10%;top:53%;color:#9a6100;border-color:#f59e0b8c;animation:guidePulse 5.2s ease-in-out infinite}.drag-cursor{z-index:6;width:18px;height:18px;left:18%;top:20%;border-left:12px solid var(--ink);border-top:8px solid transparent;border-bottom:8px solid transparent;filter:drop-shadow(0 3px 4px rgba(20,30,50,.22));animation:cursorDrag 5.2s ease-in-out infinite}.moving-symbol{z-index:5;width:18px;height:18px;left:21%;top:26%;border:2px solid var(--accent);border-radius:4px;background:#fff;box-shadow:0 0 0 4px #1b4fd81f;animation:symbolDrag 5.2s ease-in-out infinite}.snap-guide{z-index:4;opacity:0;background:var(--guide, #f59e0b);animation:guidePulse 5.2s ease-in-out infinite}.snap-x{left:10%;right:10%;top:58%;height:1px}.snap-y{top:19%;bottom:19%;left:52%;width:1px}.landing-section,.feature-band{max-width:1160px;margin:0 auto;padding:72px 24px}.section-head{max-width:680px;margin-bottom:26px}.section-head h2,.feature-band h2{margin:0;font-size:clamp(30px,4vw,46px);line-height:1.08;letter-spacing:0}.workflow-grid,.export-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.workflow-grid article,.export-grid div{min-height:190px;padding:22px;border:1px solid var(--chrome-border);border-radius:8px;background:#fff;box-shadow:var(--shadow-sm)}.mini-illo{position:relative;height:118px;margin-bottom:20px;overflow:hidden;border:1px solid var(--chrome-border);border-radius:8px;background:linear-gradient(rgba(27,79,216,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(27,79,216,.07) 1px,transparent 1px),#f4f6fa;background-size:24px 24px}.mini-plan,.mini-edge,.mini-handle,.mini-joist,.mini-beam,.mini-symbol,.mini-dim,.mini-guide,.mini-label{position:absolute;display:block}.mini-plan{top:22px;right:28px;bottom:22px;left:28px;border:3px solid var(--wall, #33425e);background:#fff}.mini-edge{height:3px;background:var(--accent);transform-origin:left center}.mini-edge.e1{left:28px;top:22px;width:42px;animation:edgeGrowA 3.8s ease-in-out infinite}.mini-edge.e2{left:70px;top:22px;width:3px;height:42px;animation:edgeGrowB 3.8s ease-in-out infinite}.mini-handle{width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid #fff;box-shadow:var(--shadow-sm)}.mini-handle.h1{left:64px;top:16px;animation:handleMoveA 3.8s ease-in-out infinite}.mini-handle.h2{left:64px;top:58px;animation:handleMoveB 3.8s ease-in-out infinite}.mini-joist{top:27px;bottom:27px;width:2px;background:#6f86b8;opacity:0}.mj1{left:42%;animation:joistIn 3.9s ease-in-out infinite}.mj2{left:52%;animation:joistIn 3.9s .18s ease-in-out infinite}.mj3{left:62%;animation:joistIn 3.9s .36s ease-in-out infinite}.mini-beam{left:30%;right:30%;top:58%;height:6px;border-radius:99px;background:var(--beam);transform:scaleX(0);transform-origin:left center;animation:beamIn 3.9s .55s ease-in-out infinite}.mini-symbol{width:18px;height:18px;left:28%;top:28%;border:2px solid var(--accent);border-radius:4px;background:#fff;animation:miniSymbolDrag 4s ease-in-out infinite}.mini-dim{left:40%;bottom:17px;padding:3px 7px;border:1px solid var(--accent);border-radius:5px;background:#fff;color:var(--accent);font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:700;opacity:0;animation:dimAppear 4s ease-in-out infinite}.mini-guide{left:56%;top:22px;bottom:22px;width:1px;background:#f59e0b;opacity:0;animation:guidePulse 4s ease-in-out infinite}.mini-label{z-index:4;padding:2px 5px;border:1px solid var(--chrome-border);border-radius:4px;background:#fffffff2;color:var(--ink-soft);font-family:IBM Plex Mono,monospace;font-size:9px;font-weight:800;line-height:1.2;white-space:nowrap}.mini-width{left:41%;bottom:16px}.mini-height{left:8px;top:48%;transform:rotate(-90deg)}.mini-edit{right:14px;top:12px;color:var(--accent)}.mini-spacing{right:16px;top:15px}.mini-bearing{left:25%;top:54%;color:var(--bearing)}.mini-member{left:13%;bottom:12px;color:var(--beam)}.mini-symbol-label{left:14%;top:13px;animation:dimAppear 4s ease-in-out infinite}.mini-guide-label{right:15%;top:38px;color:#9a6100;border-color:#f59e0b8c;opacity:0;animation:guidePulse 4s ease-in-out infinite}.step,.export-grid span{display:inline-block;margin-bottom:24px;color:var(--accent);font-family:IBM Plex Mono,monospace;font-weight:800}.workflow-grid h3{margin:0 0 10px;font-size:19px}.workflow-grid p,.export-grid p,.feature-list span{margin:0;color:var(--ink-soft);font-size:14px;line-height:1.6}.feature-band{display:grid;grid-template-columns:.8fr 1.2fr;gap:42px;align-items:start;border-top:1px solid var(--chrome-border);border-bottom:1px solid var(--chrome-border)}.feature-list{display:grid;grid-template-columns:1fr 1fr;gap:12px}.feature-list div{position:relative;overflow:hidden;min-height:142px;padding:18px;border:1px solid var(--chrome-border);border-radius:8px;background:#fff}.feature-list strong{display:block;margin-bottom:8px;font-size:15px}.feature-motion{position:absolute;right:16px;bottom:16px;width:64px;height:34px;border-radius:7px;opacity:.82}.feature-motion em{position:absolute;display:inline-flex;align-items:center;height:16px;padding:0 5px;border-radius:4px;background:#fff;color:var(--ink-soft);font-family:IBM Plex Mono,monospace;font-size:8px;font-style:normal;font-weight:800;box-shadow:var(--shadow-sm);white-space:nowrap}.param-motion{width:92px;height:46px;border:1px solid var(--chrome-border);background:linear-gradient(90deg,rgba(27,79,216,.12),transparent),#fff}.param-motion em:first-child{left:8px;top:7px}.param-motion em:last-child{right:7px;bottom:7px;color:var(--accent)}.snap-motion{border:1px dashed #f59e0b;background:linear-gradient(90deg,transparent 48%,#f59e0b 48% 52%,transparent 52%),#fff;animation:featureNudge 3.4s ease-in-out infinite}.snap-motion em{left:13px;top:9px;color:#9a6100}.status-motion{background:linear-gradient(90deg,var(--bearing) 0 20%,#6f86b8 20% 42%,var(--beam) 42% 72%,var(--ok) 72%);animation:statusSweep 3.4s ease-in-out infinite}.status-motion em{right:8px;top:9px;color:var(--ok)}.save-motion{border:1px solid var(--chrome-border);background:#fff}.save-motion em{right:6px;bottom:-22px;color:var(--accent)}.save-motion:before,.save-motion:after{content:"";position:absolute;left:13px;right:13px;height:4px;border-radius:99px;background:var(--accent);animation:saveLines 3.4s ease-in-out infinite}.save-motion:before{top:10px}.save-motion:after{top:20px;animation-delay:.16s}.export-grid div{position:relative;overflow:hidden}.export-illo{position:relative;display:block;width:94px;height:70px;margin-bottom:18px;border:1px solid var(--chrome-border);border-radius:7px;background:#fff}.export-illo em,.export-illo b{position:absolute;left:9px;z-index:2;color:var(--ink-soft);font-family:IBM Plex Mono,monospace;font-size:7.5px;font-style:normal;font-weight:800;white-space:nowrap}.export-illo em{top:5px}.export-illo b{bottom:6px;max-width:70px;overflow:hidden;text-overflow:ellipsis}.export-illo:before{content:"";position:absolute;left:16px;top:15px;width:48px;height:34px;border:2px solid var(--wall, #33425e);background:repeating-linear-gradient(90deg,transparent 0 8px,#6f86b8 8px 10px,transparent 10px 16px)}.export-illo:after{position:absolute;right:10px;bottom:9px;padding:3px 5px;border-radius:4px;background:var(--accent);color:#fff;font-family:IBM Plex Mono,monospace;font-size:9px;font-weight:800;animation:exportPop 3.8s ease-in-out infinite}.png-illo:after{content:"PNG"}.pdf-illo:after{content:"PDF"}.dxf-illo:after{content:"DXF"}.export-section{text-align:left}.bottom-cta{margin-top:22px}.landing-footer{display:flex;justify-content:space-between;gap:20px;max-width:1160px;margin:0 auto;padding:28px 24px 36px;border-top:1px solid var(--chrome-border);color:var(--chrome-muted);font-size:12px;font-weight:700}@media (max-width: 980px){.landing-hero,.feature-band{grid-template-columns:1fr}.landing-hero{padding-top:46px}.product-shot{max-width:760px}}@media (max-width: 760px){.landing-nav{height:auto;padding:14px 18px;align-items:flex-start}.landing-links{justify-content:flex-end;gap:10px;flex-wrap:wrap;font-size:12px}.landing-links a:not(.landing-login){display:none}.landing-hero,.landing-section,.feature-band{padding-left:18px;padding-right:18px}.landing-hero{grid-template-columns:1fr}.shot-body{grid-template-columns:76px minmax(220px,1fr)}.shot-panel{display:none}.workflow-grid,.export-grid,.feature-list{grid-template-columns:1fr}.landing-footer{flex-direction:column;padding-left:18px;padding-right:18px}}@keyframes cursorDrag{0%,12%,to{transform:translate(0)}42%,64%{transform:translate(118px,96px)}78%{transform:translate(172px,96px)}}@keyframes symbolDrag{0%,12%,to{transform:translate(0)}42%,64%{transform:translate(118px,96px)}78%{transform:translate(172px,96px)}}@keyframes guidePulse{0%,34%,76%,to{opacity:0}42%,68%{opacity:1}}@keyframes edgeGrowA{0%,18%,to{transform:scaleX(.2)}45%,72%{transform:scaleX(1.8)}}@keyframes edgeGrowB{0%,30%,to{transform:scaleY(.2)}55%,72%{transform:scaleY(1.3)}}@keyframes handleMoveA{0%,18%,to{transform:translate(0)}45%,72%{transform:translate(52px)}}@keyframes handleMoveB{0%,30%,to{transform:translate(0)}55%,72%{transform:translate(52px,12px)}}@keyframes joistIn{0%,18%,to{opacity:0;transform:scaleY(.2)}34%,78%{opacity:1;transform:scaleY(1)}}@keyframes beamIn{0%,34%,to{transform:scaleX(0)}55%,82%{transform:scaleX(1)}}@keyframes miniSymbolDrag{0%,15%,to{transform:translate(0)}42%,62%{transform:translate(62px,16px)}78%{transform:translate(88px,16px)}}@keyframes dimAppear{0%,46%,to{opacity:0;transform:translateY(5px)}58%,86%{opacity:1;transform:translateY(0)}}@keyframes featureNudge{0%,to{transform:translate(-8px)}50%{transform:translate(8px)}}@keyframes statusSweep{0%,to{clip-path:inset(0 70% 0 0)}55%,82%{clip-path:inset(0)}}@keyframes saveLines{0%,to{transform:scaleX(.35);transform-origin:left center;opacity:.45}55%{transform:scaleX(1);opacity:1}}@keyframes exportPop{0%,42%,to{transform:translateY(8px);opacity:0}58%,82%{transform:translateY(0);opacity:1}}@media (prefers-reduced-motion: reduce){.drag-cursor,.moving-symbol,.snap-guide,.mini-edge,.mini-handle,.mini-joist,.mini-beam,.mini-symbol,.mini-dim,.mini-guide,.feature-motion,.save-motion:before,.save-motion:after,.export-illo:after{animation:none}.snap-guide,.mini-joist,.mini-dim,.mini-guide{opacity:1}.mini-beam{transform:scaleX(1)}}
