: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)}.autosave-pill,.pill-warn{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;padding:4px 11px;border-radius:999px;border:1px solid var(--chrome-border);background:var(--chrome-2);color:var(--chrome-muted);white-space:nowrap}.autosave-pill:before,.pill-warn:before{content:"";width:6px;height:6px;border-radius:50%;flex:none}.autosave-pill{margin-left:auto;color:var(--ink-soft)}.autosave-pill:before{background:var(--ok)}.pill-warn{color:#946700;background:#fdf6e8;border-color:#efe1bd}.pill-warn:before{background:#e0a216}.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}.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(404px,100%);padding:30px 30px 28px;position:relative;text-align:center}.auth-close{position:absolute;top:16px;right:16px}.auth-brand{display:inline-flex;align-items:center;gap:10px;margin-bottom:22px}.auth-brand-mark{width:34px;height:34px;border-radius:9px;background:var(--accent);display:grid;place-items:center;box-shadow:0 4px 12px #1b4fd847}.auth-brand-name{font-weight:800;font-size:17px;letter-spacing:-.4px;color:var(--ink)}.auth-brand-name span{color:var(--accent)}.auth-title{margin:0 0 6px;font-size:20px;font-weight:800;letter-spacing:-.4px;color:var(--ink)}.auth-reason{margin:0 auto 22px;max-width:30ch}.auth-field{text-align:left;margin-bottom:14px}.auth-submit{width:100%;padding:12px;font-size:14px}.auth-hint{margin:14px 0 0;font-size:12px;color:var(--chrome-muted)}.auth-status{margin-top:14px}.auth-error{padding:10px 12px;border:1px solid #f6cfca;border-radius:var(--radius-sm);background:#fdecea;color:var(--warn);text-align:left}.auth-sent{padding:4px 0 2px}.auth-sent-icon{display:grid;place-items:center;width:56px;height:56px;margin:0 auto 16px;border-radius:50%;background:#e7f6ef}.auth-sent h2{margin:0 0 8px;font-size:20px;font-weight:800;letter-spacing:-.4px;color:var(--ink)}.auth-sent .note{margin:0 auto 20px;max-width:34ch}.auth-resend{width:100%;padding:11px}.auth-config{margin-top:12px;padding:12px;border:1px solid #f6cfca;border-radius:var(--radius-sm);background:#fdecea;color:var(--warn);text-align:left}.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:0}.panel>.field{padding:18px 0;gap:9px}.panel>.field+.field{border-top:1px solid var(--chrome-border)}.panel h2{margin:0 0 5px;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;display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--chrome-muted);background:#ffffffd9;border:1px solid var(--chrome-border);border-radius:999px;padding:6px 8px 6px 12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.hint-close{display:grid;place-items:center;width:18px;height:18px;border:0;border-radius:50%;background:var(--chrome-3);color:var(--chrome-muted);font-size:10px;line-height:1;cursor:pointer;transition:background .12s,color .12s}.hint-close:hover{background:var(--chrome-ink);color:#fff}.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:100px;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;display:inline-flex;align-items:center;justify-content:center;gap:5px;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);padding:0 11px}.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}.stage-host.crosshair canvas{cursor:crosshair!important}.cal-input{position:absolute;z-index:6;display:flex;align-items:center;gap:4px}.cal-input input{width:92px;padding:4px 6px;font-size:12px;text-align:right;border:1.5px solid var(--warn);border-radius:5px;background:#fff;color:var(--ink);box-shadow:var(--shadow-sm)}.cal-input input:focus{outline:none}.cal-unit{padding:2px 5px;border:1px solid var(--chrome-border);border-radius:4px;background:#fff;font-size:11px;font-weight:700;color:var(--chrome-muted)}.bg-bar{position:absolute;top:14px;left:50%;transform:translate(-50%);z-index:6;display:flex;align-items:center;gap:12px;padding:7px 10px 7px 14px;background:#fffffff0;border:1px solid var(--chrome-border);border-radius:999px;box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.bg-bar-title{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--ink-soft)}.bg-steps{display:flex;gap:6px}.bg-step{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12px;font-weight:600;padding:6px 11px;border:1px solid var(--chrome-border);border-radius:999px;background:var(--chrome-2);color:var(--ink-soft);cursor:pointer;transition:background .12s,color .12s,border-color .12s}.bg-step:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.bg-step.active{background:var(--accent);border-color:var(--accent-2);color:#fff}.bg-step:disabled{opacity:.5;cursor:not-allowed}.bg-step-num{display:grid;place-items:center;width:16px;height:16px;border-radius:50%;background:#00000014;font-size:10px;font-weight:800}.bg-step.active .bg-step-num{background:#ffffff40}.bg-step-done{color:var(--ok);font-weight:800}.bg-step.active .bg-step-done{color:#fff}.bg-opacity{display:inline-flex;align-items:center;gap:6px;color:var(--chrome-muted)}.bg-opacity input{width:80px;accent-color:var(--accent)}.bg-remove{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:12px;font-weight:600;padding:6px 10px;border:1px solid var(--chrome-border);border-radius:999px;background:var(--chrome);color:var(--ink-soft);cursor:pointer}.bg-remove:hover{border-color:var(--warn);color:var(--warn)}.bg-detecting{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--accent)}.bg-spinner{width:14px;height:14px;border:2px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;animation:bg-spin .7s linear infinite}@keyframes bg-spin{to{transform:rotate(360deg)}}.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)}}.tool-danger{color:var(--bearing)}.tool-danger:hover{background:#fdecea}.btn-danger{font:inherit;font-weight:700;font-size:12.5px;padding:9px 12px;border-radius:var(--radius-sm);background:var(--bearing);color:#fff;border:1px solid #c22f23;cursor:pointer;transition:filter .12s}.btn-danger:hover{filter:brightness(1.06)}.confirm-modal{width:min(400px,100%);padding:24px 24px 20px}.confirm-title{margin:0 0 8px;font-size:18px;font-weight:800;letter-spacing:-.3px;color:var(--ink)}.confirm-message{margin:0 0 20px;line-height:1.55}.confirm-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.confirm-actions .btn-outline,.confirm-actions .btn-accent,.confirm-actions .btn-danger{margin:0;width:auto;padding:9px 18px;white-space:nowrap}.newproj-modal{width:min(560px,100%);padding:24px 26px 26px}.newproj-choices{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media (max-width: 520px){.newproj-choices{grid-template-columns:1fr}}.newproj-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;text-align:left;padding:20px 18px;border:1px solid var(--chrome-border);border-radius:var(--radius);background:var(--chrome-2);cursor:pointer;transition:border-color .13s,background .13s,transform .13s,box-shadow .13s}.newproj-card:hover{border-color:var(--accent);background:var(--chrome);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.newproj-illo{display:grid;place-items:center;width:56px;height:56px;border-radius:12px;background:var(--accent-soft);color:var(--accent);margin-bottom:4px}.newproj-title{font-size:15px;font-weight:700;color:var(--ink)}.newproj-desc{font-size:12.5px;line-height:1.5;color:var(--ink-soft)}.cad-modal{width:min(940px,100%);padding:22px 24px 24px}.cad-body{display:grid;grid-template-columns:1fr 200px;gap:18px}@media (max-width: 680px){.cad-body{grid-template-columns:1fr}}.cad-stage{position:relative;min-height:360px;height:min(60vh,520px);background:linear-gradient(var(--chrome-3) 1px,transparent 1px) 0 0 / 22px 22px,linear-gradient(90deg,var(--chrome-3) 1px,transparent 1px) 0 0 / 22px 22px,var(--chrome);border:1px solid var(--chrome-border);border-radius:var(--radius);overflow:hidden}.cad-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;padding:18px;box-sizing:border-box;display:block}.cad-empty{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;display:grid;place-items:center;text-align:center;padding:24px}.cad-legend h3{margin:0 0 10px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--chrome-muted)}.cad-legend ul{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:2px}.cad-layer{display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--ink)}.cad-layer:hover{background:var(--chrome-2)}.cad-layer input{accent-color:var(--accent)}.cad-swatch{width:14px;height:14px;border-radius:4px;flex:none;box-shadow:inset 0 0 0 1px #0000001f}.cad-layer-name{flex:1}.cad-layer-count{font-size:11px;color:var(--chrome-muted)}.cad-export{width:100%}.tool svg{flex:none}.tool-icon{padding:6px 8px}.toolbar-right{margin-left:auto;display:flex;align-items:center;gap:4px}.tool-cmd{gap:8px;color:var(--chrome-muted);border:1px solid var(--chrome-border);background:var(--chrome-2)}.tool-cmd:hover{background:var(--chrome-3)}.cmd-hint{font-size:11px;font-weight:700;letter-spacing:.02em;color:var(--chrome-muted)}.cmd-backdrop{align-items:flex-start;padding-top:12vh}.cmd-palette{width:min(560px,92vw);background:var(--chrome);border:1px solid var(--chrome-border);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.cmd-search{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--chrome-border);color:var(--chrome-muted)}.cmd-input{flex:1;border:none;outline:none;font:inherit;font-size:15px;color:var(--ink);background:transparent}.cmd-list{list-style:none;margin:0;padding:6px;max-height:50vh;overflow-y:auto}.cmd-item{display:flex;align-items:center;gap:12px;width:100%;padding:9px 12px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;font:inherit;font-size:14px;color:var(--ink);text-align:left}.cmd-item.active{background:var(--accent-soft);color:var(--accent)}.cmd-item svg{flex:none;color:var(--chrome-muted)}.cmd-item.active svg{color:var(--accent)}.cmd-label{flex:1}.cmd-group{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--chrome-muted)}.cmd-kbd,.shortcut-keys kbd{font-family:var(--mono, ui-monospace, monospace);font-size:11px;font-weight:600;padding:2px 7px;border-radius:5px;background:var(--chrome-3);border:1px solid var(--chrome-border);color:var(--ink-soft)}.cmd-empty{padding:22px;text-align:center}.shortcuts-modal{width:min(640px,100%);padding:22px 24px 24px}.shortcuts-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px 32px}@media (max-width: 560px){.shortcuts-grid{grid-template-columns:1fr}}.shortcuts-section h3{margin:0 0 8px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--chrome-muted)}.shortcuts-section ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.shortcuts-section li{display:flex;align-items:center;justify-content:space-between;gap:12px}.shortcut-label{font-size:13.5px;color:var(--ink)}.shortcut-keys{display:flex;gap:4px;flex:none}.library-search{display:flex;align-items:center;gap:8px;padding:7px 10px;margin-bottom:14px;border:1px solid var(--chrome-border);border-radius:var(--radius-sm);background:var(--chrome-2);color:var(--chrome-muted)}.library-search:focus-within{border-color:var(--accent);background:var(--chrome)}.library-search-input{flex:1;min-width:0;border:none;outline:none;background:transparent;font:inherit;font-size:13px;color:var(--ink)}.library-search-input::-webkit-search-cancel-button{-webkit-appearance:none}.page-doc{padding-bottom:56px}.page-head{max-width:820px;margin:0 auto;padding:64px 24px 8px;text-align:center}.page-head h1{margin:8px 0 0;font-size:clamp(32px,4.5vw,48px);line-height:1.05;letter-spacing:-.01em;color:#172033}.page-head .landing-lede{margin:18px auto 0}.landing-links a.active{color:var(--accent)}.footer-links{display:flex;gap:22px}.footer-links a{color:var(--chrome-muted);text-decoration:none}.footer-links a:hover{color:var(--accent)}.contrib-cta{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;max-width:1000px;margin:40px auto 0;padding:26px 30px;background:linear-gradient(180deg,#fff,var(--chrome-2));border:1px solid var(--chrome-border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.contrib-cta h2{margin:0 0 6px;font-size:20px;color:var(--ink)}.contrib-cta p{margin:0;max-width:560px;color:var(--ink-soft);font-size:15px;line-height:1.6}.contrib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;max-width:1000px;margin:28px auto 0;padding:0 24px}.contrib-card{display:flex;gap:14px;padding:20px;background:#fff;border:1px solid var(--chrome-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:transform .12s,box-shadow .12s,border-color .12s}.contrib-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#c7d5ef}.contrib-avatar{flex:none;width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:800;font-size:15px}.contrib-meta h3{margin:0 0 3px;font-size:16px;color:var(--ink)}.contrib-meta h3 a{color:inherit;text-decoration:none}.contrib-meta h3 a:hover{color:var(--accent)}.contrib-role{display:inline-block;color:var(--accent);font-size:12px;font-weight:700}.contrib-blurb{margin:8px 0 0;color:var(--ink-soft);font-size:13px;line-height:1.55}.contrib-card-empty{border-style:dashed;background:transparent;box-shadow:none}.contrib-card-empty:hover{transform:none;box-shadow:none;border-color:var(--chrome-border)}.contrib-avatar-empty{background:transparent;border:1px dashed #c7d5ef;color:var(--chrome-muted);font-size:22px;font-weight:400}.doc-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:44px;max-width:1000px;margin:32px auto 0;padding:0 24px;align-items:start}.doc-toc{position:sticky;top:92px;display:flex;flex-direction:column;gap:12px}.doc-toc-title{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--chrome-muted)}.doc-toc nav{display:flex;flex-direction:column;border-left:2px solid var(--chrome-border)}.doc-toc nav a{padding:6px 14px;margin-left:-2px;border-left:2px solid transparent;color:var(--ink-soft);text-decoration:none;font-size:14px;font-weight:600}.doc-toc nav a:hover{color:var(--accent)}.doc-toc nav a.active{color:var(--accent);border-left-color:var(--accent)}.doc-content{min-width:0}.doc-section{padding:22px 0;border-bottom:1px solid var(--chrome-border)}.doc-section:first-child{padding-top:0}.doc-section h2{margin:0 0 10px;font-size:22px;color:var(--ink)}.doc-section p{margin:0;color:var(--ink-soft);font-size:15px;line-height:1.7}.doc-section ul,.doc-section ol{margin:10px 0 0;padding-left:20px;color:var(--ink-soft);font-size:15px;line-height:1.7}.doc-section li{margin:4px 0}.doc-section strong{color:var(--ink)}.doc-section code{padding:1px 6px;border:1px solid var(--chrome-border);border-radius:5px;background:var(--chrome-2);font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,monospace;font-size:13px;color:var(--ink)}.doc-cta{margin-top:30px}@media (max-width: 860px){.page-head{padding-top:44px}.doc-layout{grid-template-columns:1fr;gap:18px}.doc-toc{position:static}.doc-toc nav{display:none}.contrib-cta{padding:22px}}select.num,textarea.num{font:inherit;width:100%;padding:8px 10px;border:1px solid var(--chrome-border);border-radius:var(--radius-sm);background:var(--chrome-2);color:var(--ink)}select.num:focus,textarea.num:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.field .lbl{font-size:12px;color:var(--ink-soft);font-weight:600}.lbl-opt{color:var(--chrome-muted);font-weight:500}.feedback-fab{position:fixed;right:22px;bottom:22px;z-index:90;display:inline-flex;align-items:center;gap:8px;padding:12px 18px;border:1px solid var(--accent-2);border-radius:999px;background:var(--accent);color:#fff;font:inherit;font-weight:700;font-size:14px;cursor:pointer;box-shadow:0 10px 26px #1b4fd857;transition:transform .12s,background .12s,box-shadow .12s}.feedback-fab:hover{background:var(--accent-2);transform:translateY(-1px);box-shadow:0 14px 30px #1b4fd866}.feedback-fab svg{flex:none}.feedback-modal{position:relative;width:min(560px,100%);padding:24px 26px 26px}.feedback-title{margin:0 4px 4px 0;font-size:20px;font-weight:800;color:var(--ink)}.feedback-sub{margin:0 0 18px}.feedback-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.feedback-modal .field{margin-bottom:14px}.feedback-modal input.num{width:100%}.feedback-textarea{resize:vertical;min-height:96px;line-height:1.5}.feedback-file{font:inherit;font-size:13px;color:var(--ink-soft)}.feedback-error{margin:12px 0 0;color:var(--warn)}.feedback-submit{width:100%;margin-top:16px}.feedback-sent{padding:14px 6px;text-align:center}.feedback-sent-icon{display:inline-grid;place-items:center;width:52px;height:52px;margin-bottom:8px;border-radius:50%;background:#e7f6ef}.feedback-sent h2{margin:0 0 8px;font-size:20px;color:var(--ink)}.feedback-actions{display:flex;gap:10px;justify-content:center;margin-top:18px}.admin{min-height:100vh;background:#f7f9fc;color:var(--ink)}.admin-bar{position:sticky;top:0;z-index:30;height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 max(20px,calc((100vw - 1160px)/2));background:#ffffffeb;border-bottom:1px solid var(--chrome-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.admin-bar-right{display:flex;align-items:center;gap:12px;font-size:13px}.admin-tag{font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}.admin-email{color:var(--ink-soft);font-weight:600}.btn-sm{min-height:32px;padding:0 12px;font-size:12px}.admin-body{max-width:1160px;margin:0 auto;padding:28px 20px 56px}.admin-signin,.admin-denied{max-width:420px;margin:48px auto;padding:28px;background:#fff;border:1px solid var(--chrome-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);text-align:center}.admin-signin h2,.admin-denied h2{margin:0 0 8px;color:var(--ink)}.admin-signin .field{margin:16px 0;text-align:left}.admin-signin .num,.admin-signin .btn-accent{width:100%}.admin-denied .btn-outline{margin-top:16px}.admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}.admin-filters{display:flex;gap:10px;flex-wrap:wrap}.admin-filters .num{width:auto;min-width:150px}.admin-search{min-width:200px}.admin-toolbar-right{display:flex;align-items:center;gap:12px}.admin-count{color:var(--chrome-muted);font-size:13px;font-weight:600}.admin-list{display:flex;flex-direction:column;gap:12px}.admin-card{display:flex;gap:18px;justify-content:space-between;padding:18px 20px;background:#fff;border:1px solid var(--chrome-border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.admin-card-main{flex:1;min-width:0}.admin-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.fb-cat{padding:3px 8px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.02em;text-transform:uppercase}.fb-cat-bug{background:#fdecea;color:#c0392b}.fb-cat-feature{background:var(--accent-soft);color:var(--accent)}.fb-cat-uiux{background:#f0e9ff;color:#6b3fd8}.fb-cat-general{background:var(--chrome-3);color:var(--ink-soft)}.fb-contrib{padding:2px 8px;border:1px solid var(--chrome-border);border-radius:6px;background:var(--chrome-2);font-size:12px;font-weight:700;color:var(--ink)}.admin-date{margin-left:auto;color:var(--chrome-muted);font-size:12px}.admin-details{margin:0 0 10px;color:var(--ink);font-size:14px;line-height:1.55;white-space:pre-wrap}.admin-meta{display:flex;align-items:center;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--ink-soft)}.admin-meta a{color:var(--accent);text-decoration:none}.admin-url,.admin-ua{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-card-side{display:flex;flex:none;flex-direction:column;align-items:flex-end;gap:10px}.fb-status-select{width:auto;min-width:132px;font-weight:700}.fb-status-new{border-color:var(--accent);color:var(--accent)}.fb-status-in_progress{border-color:#e0a216;color:#946700}.fb-status-planned{border-color:#6b3fd8;color:#6b3fd8}.fb-status-completed{border-color:var(--ok);color:var(--ok)}.fb-status-rejected{border-color:var(--warn);color:var(--warn)}.admin-shot{padding:0;border:1px solid var(--chrome-border);border-radius:8px;overflow:hidden;background:var(--chrome-2);line-height:0;cursor:pointer}.admin-shot img{display:block;width:96px;height:64px;object-fit:cover}.admin-empty{padding:32px;text-align:center}.admin-lightbox{z-index:110;cursor:zoom-out}.admin-lightbox img{max-width:92vw;max-height:88vh;border-radius:8px;box-shadow:var(--shadow)}@media (max-width: 700px){.feedback-grid{grid-template-columns:1fr}.admin-card{flex-direction:column}.admin-card-side{flex-direction:row;align-items:center}.admin-filters .num{flex:1}.feedback-fab span{display:none}}
