.editor{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.editor{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.editor button{touch-action:manipulation}.editor input{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.ed-top{height:64px;flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 12px;border-bottom:1px solid var(--line);background:var(--panel);position:relative;z-index:40}.ed-top-left,.ed-top-right{display:flex;align-items:center;gap:8px;min-width:0}.ed-icon-btn{width:44px;height:44px;border-radius:var(--radius-md);border:0;background:transparent;color:var(--ink);display:grid;place-items:center;font-size:22px;flex:none;text-decoration:none}.ed-icon-btn:hover:not(:disabled){background:var(--chip);color:var(--ink)}.ed-icon-btn:disabled{opacity:.3;cursor:default}.ed-mark{width:32px;height:32px;border-radius:8px;background:var(--ink);color:var(--bg);display:grid;place-items:center;font:700 10px/1 var(--font-mono);flex:none}.ed-title-wrap{min-width:0;margin-left:2px}.ed-title{font-weight:700;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ed-status{font-size:12px;color:var(--ink2);display:flex;gap:6px;align-items:center;white-space:nowrap}.ed-status-dot{width:7px;height:7px;border-radius:99px;background:var(--mute)}.ed-sep{width:1px;height:28px;background:var(--line2);margin:0 4px;flex:none}.ed-main{flex:1;min-height:0;display:flex}.ed-rail{width:76px;flex:none;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 0;border-right:1px solid var(--line);background:var(--panel)}.ed-tool{width:60px;height:58px;border-radius:var(--radius-md);border:0;background:transparent;color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11.5px;font-weight:600}.ed-tool .icon{font-size:22px}.ed-tool:hover:not(.active){background:var(--chip)}.ed-tool.active{background:var(--ink);color:var(--bg)}.ed-canvas{flex:1;min-width:0;position:relative;background:var(--canvas)}.canvas-wrap{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none}.plan-svg{display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.plan-svg.tool-wall{cursor:crosshair}.plan-svg .grid line{stroke:var(--grid);stroke-width:1px;vector-effect:non-scaling-stroke}.plan-svg .grid line.major{stroke:var(--grid2)}.plan-svg .wall{stroke:var(--wall);stroke-linecap:square}.plan-svg .wall.kind-foundation{stroke:var(--wall)}.plan-svg .wall.kind-existing{stroke:var(--found)}.plan-svg .wall.kind-demo{stroke:var(--L-demo);opacity:.6}.plan-svg .wall.selected{stroke:var(--accent)}.plan-svg .hit{stroke:transparent;fill:transparent;stroke-linecap:round}.plan-svg.tool-select [data-hit=wall],.plan-svg.tool-select [data-hit=node]{cursor:move}.plan-svg .node{fill:var(--raise);stroke:var(--ink);stroke-width:1.5px;vector-effect:non-scaling-stroke}.plan-svg .node.open{stroke:var(--accent)}.plan-svg .node.selected{fill:var(--accent);stroke:var(--accent)}.plan-svg .room{fill:transparent;stroke:none}.plan-svg .room.selected{stroke:var(--accent);fill:color-mix(in oklab,var(--accent) 10%,transparent)}.plan-svg .room-labels{pointer-events:none}.plan-svg .room-name{font-weight:700;fill:var(--ink);paint-order:stroke;stroke:var(--canvas);stroke-width:.3em;stroke-linejoin:round}.plan-svg .room-labels .unnamed .room-name{fill:var(--mute);font-weight:600}.plan-svg .room-area{font-family:var(--font-mono);fill:var(--ink2);paint-order:stroke;stroke:var(--canvas);stroke-width:.3em}.plan-svg .rooms{pointer-events:none}.plan-svg .opening .gap{stroke:var(--canvas);stroke-linecap:butt}.plan-svg .opening .jamb,.plan-svg .opening .leaf,.plan-svg .opening .glass{stroke:var(--ink)}.plan-svg .opening .swing{fill:none;stroke:var(--ink2);stroke-dasharray:none}.plan-svg .opening.selected .jamb,.plan-svg .opening.selected .leaf,.plan-svg .opening.selected .glass,.plan-svg .opening.selected .swing{stroke:var(--accent)}.plan-svg .opening.selected .gap{stroke:color-mix(in oklab,var(--accent) 22%,var(--canvas))}.plan-svg.tool-select [data-hit=opening]{cursor:ew-resize}.plan-svg .opening-preview{stroke:color-mix(in oklab,var(--accent) 45%,transparent);stroke-linecap:butt;pointer-events:none}.plan-svg .opening-preview.bad{stroke:color-mix(in oklab,var(--danger) 45%,transparent)}.plan-svg.tool-door,.plan-svg.tool-room{cursor:pointer}.plan-svg .overall line{stroke:var(--ink2)}.plan-svg .overall rect{fill:var(--canvas)}.plan-svg .overall text{font-family:var(--font-mono);font-weight:600;fill:var(--ink)}.plan-svg .dim rect{fill:var(--raise);stroke:var(--line2);stroke-width:1px;vector-effect:non-scaling-stroke}.plan-svg .dim text{font-family:var(--font-mono);font-weight:600;fill:var(--ink)}.plan-svg .dim.editable{cursor:text}.plan-svg .dim.selected rect{fill:var(--accent);stroke:var(--accent)}.plan-svg .dim.selected text{fill:var(--on-accent)}.plan-svg .drawing .rubber{stroke:var(--accent);stroke-linecap:round}.plan-svg .drawing .guide{stroke:var(--accent);opacity:.6}.plan-svg .drawing .start{fill:var(--raise);stroke:var(--accent)}.plan-svg .rubber-text{font-family:var(--font-mono);font-weight:700;fill:var(--accent);paint-order:stroke;stroke:var(--canvas);stroke-width:.25em}.plan-svg .snap circle{fill:none;stroke:var(--accent)}.plan-svg .snap text{font-family:var(--font-mono);font-weight:600;fill:var(--accent)}.ed-hint{position:absolute;left:50%;top:12px;transform:translate(-50%);z-index:10;max-width:calc(100% - 24px);padding:8px 8px 8px 14px;border-radius:20px;background:var(--raise);box-shadow:0 0 0 1px var(--line),0 8px 24px #0000000f;display:flex;flex-direction:column;gap:8px;animation:rise .15s ease}.ed-hint-row{display:flex;align-items:center;gap:10px;min-height:32px;padding-right:8px}.ed-hint-actions{display:flex;gap:8px;flex-wrap:wrap}.ed-alert .ed-hint-dot{background:var(--danger)}.ed-alert .ed-hint-text{color:var(--danger)}.ed-hint-dot{width:8px;height:8px;border-radius:99px;background:var(--accent);flex:none}.ed-hint-text{font-size:13px;font-weight:600}.ed-hint-btn{height:34px;padding:0 12px;border-radius:var(--radius-pill);border:1px solid var(--line2);background:transparent;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.ed-hint-btn .icon{font-size:18px}.ed-hint-btn[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.ed-hint-error{color:var(--danger);font-size:12.5px;font-weight:600;padding:0 8px 4px}.length-entry{display:flex;gap:8px;align-items:center;padding:0 0 2px}.length-entry input{flex:1;min-width:0;height:44px;padding:0 14px;border-radius:10px;border:2px solid var(--accent);background:var(--raise);font:600 17px var(--font-mono);outline:none}.dir-pad{display:flex;gap:4px}.dir-btn{width:44px;height:44px;border-radius:10px;border:1px solid var(--line2);background:var(--raise);display:grid;place-items:center;font-size:20px}.dir-btn:active{background:var(--ink);color:var(--bg)}.ed-controls{position:absolute;right:12px;bottom:12px;display:flex;gap:10px;z-index:10}.ed-seg,.ed-zoom{display:flex;padding:4px;gap:2px;border-radius:14px;background:var(--raise);box-shadow:0 0 0 1px var(--line)}.ed-seg button{height:40px;padding:0 12px;border-radius:10px;border:0;background:transparent;color:var(--ink2);font:600 13px var(--font-mono)}.ed-seg button[aria-pressed=true]{background:var(--ink);color:var(--bg)}.ed-zoom button{width:44px;height:40px;border:0;border-radius:10px;background:transparent;display:grid;place-items:center;font-size:20px;color:var(--ink)}.ed-zoom button:hover{background:var(--chip)}.dim-editor{position:absolute;z-index:50;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px}.dim-editor input{width:150px;height:44px;border-radius:10px;border:2px solid var(--accent);background:var(--raise);font:600 17px var(--font-mono);text-align:center;outline:none;box-shadow:0 10px 30px #0003}.dim-editor input.invalid{border-color:var(--danger)}.dim-hint{font-size:11.5px;font-weight:600;color:var(--ink2);background:var(--raise);padding:3px 8px;border-radius:6px;box-shadow:0 0 0 1px var(--line);white-space:nowrap}.panel{width:340px;flex:none;border-left:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;min-height:0}.panel-tabs{display:flex;gap:2px;margin:12px 12px 0;padding:4px;border-radius:14px;background:var(--chip)}.panel-tab{height:38px;padding:0 14px;border-radius:10px;border:0;background:transparent;font-weight:600;font-size:13.5px}.panel-tab.active{background:var(--raise);box-shadow:0 1px 2px #0000000f}.panel-body{flex:1;overflow:auto;padding:18px}.props{display:flex;flex-direction:column;gap:16px}.nosel{padding:18px;border-radius:16px;border:1.5px dashed var(--line2)}.nosel-title{font-size:16px;font-weight:700}.nosel-body{font-size:13px;color:var(--ink2);line-height:1.5;margin-top:6px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat{padding:12px;border-radius:12px;background:var(--chip)}.stat-v{font:600 17px var(--font-mono)}.stat-k{font-size:11.5px;color:var(--ink2);margin-top:2px}.prop-kicker{font:500 11px var(--font-mono);color:var(--accent);letter-spacing:.06em;text-transform:uppercase}.prop-title{font-size:22px;font-weight:800;letter-spacing:-.02em;margin:-8px 0 0}.prop-field{display:flex;flex-direction:column;gap:8px}.prop-label{font-size:13px;color:var(--ink2);font-weight:600;display:block;margin-bottom:6px}.prop-field .prop-label{margin-bottom:0}.prop-length{height:56px;padding:0 16px;border-radius:12px;border:1px solid var(--line2);background:var(--raise);font:600 22px var(--font-mono);outline:none;width:100%}.prop-length:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 20%,transparent)}.prop-length.invalid{border-color:var(--danger)}.prop-length.static{display:flex;align-items:center}.prop-error{color:var(--danger);font-size:12.5px;font-weight:600}.prop-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.prop-chip{height:46px;padding:0 14px;border-radius:10px;background:var(--chip);display:flex;align-items:center;font:600 14px var(--font-mono)}.prop-links{display:flex;gap:6px;flex-wrap:wrap}.prop-link{height:34px;padding:0 10px;border-radius:8px;border:1px solid var(--line2);background:var(--raise);font-size:12.5px}.prop-link:hover{border-color:var(--ink)}.prop-delete{height:44px;border-radius:12px;border:1px solid var(--line2);background:transparent;color:var(--danger);font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px}.prop-delete .icon{font-size:20px}@media(min-width:1280px){.panel{width:380px}}@media(max-width:640px){.ed-top{height:60px;padding:0 8px}.ed-top-right .lang-btn{display:none}.ed-controls{left:12px;right:12px;justify-content:space-between;bottom:max(12px,env(safe-area-inset-bottom))}}.prop-measure,.prop-text{height:46px;padding:0 14px;border-radius:10px;border:1px solid var(--line2);background:var(--raise);font:600 15px var(--font-mono);outline:none;width:100%}.prop-text{font:500 15px var(--font-sans)}.prop-measure:focus,.prop-text:focus{border-color:var(--accent)}.prop-measure.invalid{border-color:var(--danger)}.seg3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.seg3.two{grid-template-columns:1fr 1fr}.seg3 button{min-height:44px;padding:4px 8px;border-radius:10px;border:1px solid var(--line2);background:var(--raise);font-weight:600;font-size:13px;line-height:1.2}.seg3 button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.presets{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:-6px}.presets button{height:40px;border-radius:10px;border:1px solid var(--line2);background:var(--raise);font:600 13px var(--font-mono)}.presets button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.finishes{display:grid;grid-template-columns:1fr 1fr;gap:6px}.finish{min-height:44px;display:flex;align-items:center;gap:10px;padding:0 12px;border-radius:10px;border:1px solid var(--line2);background:var(--raise);font-size:13px;font-weight:600;text-align:left}.finish[aria-checked=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.finish-swatch{width:18px;height:18px;border-radius:5px;border:1px solid var(--line2);flex:none}.stats.three{grid-template-columns:1fr 1fr 1.4fr}.room-list{display:flex;flex-direction:column}.room-row{display:flex;justify-content:space-between;gap:8px;padding:10px 0;border-bottom:1px solid var(--line);font-weight:600;font-size:14px}.room-row-area{font-family:var(--font-mono);color:var(--ink2);font-weight:500}.ed-status[data-status=saved] .ed-status-dot{background:var(--L-frame)}.ed-status[data-status=saving] .ed-status-dot{background:var(--accent);animation:pulse 1.2s ease-in-out infinite}.ed-status[data-status=offline] .ed-status-dot{background:var(--L-plumb)}.ed-status[data-status=conflict] .ed-status-dot,.ed-status[data-status=error] .ed-status-dot{background:var(--danger)}.ed-more{position:relative}.ed-menu{right:0;top:52px;min-width:240px}.ed-notice{position:absolute;left:50%;bottom:24px;transform:translate(-50%);z-index:60;padding:12px 18px;border-radius:14px;background:var(--ink);color:var(--bg);font-weight:600;font-size:14px;box-shadow:var(--shadow-hover)}.plan-svg .wall.status-existing{stroke:var(--found)}.plan-svg .wall.kind-foundation.status-existing{stroke:var(--wall);opacity:.85}.plan-svg .wall.status-demo{stroke:var(--L-demo);opacity:.75}.plan-svg .walls.greyed .wall:not(.selected){stroke:var(--line2);opacity:1}.plan-svg .openings.greyed .opening:not(.selected){opacity:.45}.plan-svg .opening.status-demo .jamb,.plan-svg .opening.status-demo .leaf,.plan-svg .opening.status-demo .swing,.plan-svg .opening.status-demo .glass{stroke:var(--L-demo);stroke-dasharray:4 3}.plan-svg .opening.status-existing .jamb,.plan-svg .opening.status-existing .leaf,.plan-svg .opening.status-existing .glass{stroke:var(--mute)}.plan-svg .object circle:not(.hit),.plan-svg .object rect{fill:var(--raise);stroke:var(--trade)}.plan-svg .object text{font-family:var(--font-mono);font-weight:700;fill:var(--trade);pointer-events:none}.plan-svg .object.status-existing circle:not(.hit),.plan-svg .object.status-existing rect{stroke:var(--mute)}.plan-svg .object.status-existing text{fill:var(--mute);font-weight:500}.plan-svg .object.status-demo circle:not(.hit),.plan-svg .object.status-demo rect{stroke:var(--L-demo)}.plan-svg .object.status-demo text{fill:var(--L-demo)}.plan-svg .object.selected circle:not(.hit),.plan-svg .object.selected rect{stroke:var(--accent);fill:color-mix(in oklab,var(--accent) 12%,var(--raise))}.plan-svg.tool-select [data-hit=object]{cursor:move}.plan-svg .run polyline:not(.hit){fill:none;stroke:var(--trade);stroke-linecap:round;stroke-linejoin:round}.plan-svg .run text{font-family:var(--font-mono);font-weight:700;fill:var(--trade);paint-order:stroke;stroke:var(--canvas);stroke-width:.25em}.plan-svg .run polyline.hit{fill:none}.plan-svg .run.status-existing polyline:not(.hit){stroke:var(--mute)}.plan-svg .run.status-demo polyline:not(.hit){stroke:var(--L-demo)}.plan-svg .run.selected polyline:not(.hit){stroke:var(--accent)}.plan-svg .place-ghost{opacity:.6;pointer-events:none}.plan-svg .place-ghost circle{fill:var(--raise);stroke:var(--trade)}.plan-svg .place-ghost text{font-family:var(--font-mono);font-weight:700;fill:var(--trade)}.plan-svg.tool-object{cursor:copy}.library{position:absolute;left:10px;top:10px;bottom:10px;width:300px;z-index:20;display:flex;flex-direction:column;border-radius:20px;background:var(--panel);box-shadow:0 0 0 1px var(--line),0 20px 50px #0000001f;overflow:hidden}.library-head{display:flex;align-items:center;justify-content:space-between;padding:14px 14px 8px 18px}.library-title{font-size:19px;font-weight:800;margin:0}.library-close{width:36px;height:36px;border-radius:10px;border:0;background:var(--chip);display:grid;place-items:center;font-size:20px}.library-search{margin:4px 14px 10px;display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:12px;background:var(--raise);border:1px solid var(--line)}.library-search .icon{color:var(--mute);font-size:20px}.library-search input{flex:1;border:0;outline:none;background:transparent;font-size:14px;min-width:0}.library-chips{display:flex;gap:6px;overflow-x:auto;padding:0 14px 10px;scrollbar-width:none}.library-chip{flex:none;height:36px;padding:0 14px;border-radius:999px;border:0;background:var(--chip);font-weight:600;font-size:13px}.library-chip[aria-selected=true]{background:var(--ink);color:var(--bg)}.library-body{flex:1;overflow:auto;padding:0 14px 10px}.library-group-title{font:600 11px var(--font-mono);letter-spacing:.06em;color:var(--mute);text-transform:uppercase;margin:12px 0 8px}.library-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.library-tile{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;border-radius:12px;border:1px solid var(--line);background:var(--raise);font-size:12px;line-height:1.2;text-align:center;min-height:92px}.library-tile[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.library-symbol{width:38px;height:38px;border-radius:99px;border:1.5px solid var(--trade);color:var(--trade);display:grid;place-items:center;font:700 10px var(--font-mono)}.library-empty{padding:20px 4px;color:var(--mute);font-size:13px}.library-foot{display:flex;align-items:center;gap:8px;padding:10px 16px 14px;font-size:12px;color:var(--ink2);border-top:1px solid var(--line)}.library-foot .icon{font-size:18px}.trade-menu{position:relative}.trade-btn{height:44px;padding:0 12px;border-radius:12px;border:1px solid var(--line2);background:var(--raise);display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px;white-space:nowrap}.trade-btn .icon{font-size:18px}.trade-label{color:var(--ink2)}.trade-dot{width:10px;height:10px;border-radius:3px;flex:none}.trade-list{right:0;top:52px;min-width:240px}.ed-bottom-left{position:absolute;left:12px;bottom:12px;z-index:10;display:flex;gap:10px;align-items:center}.ed-phase{display:flex;gap:2px;padding:4px;border-radius:14px;background:var(--raise);box-shadow:0 0 0 1px var(--line)}.ed-phase button{height:40px;padding:0 12px;border-radius:10px;border:0;background:transparent;color:var(--ink2);font-weight:600;font-size:13px}.ed-phase button[aria-pressed=true]{background:var(--ink);color:var(--bg)}.status-seg button[data-status=demo][aria-pressed=true]{background:var(--L-demo);border-color:var(--L-demo);color:#fff}.status-seg button[data-status=existing][aria-pressed=true]{background:var(--mute);border-color:var(--mute);color:#fff}.chips-wrap{display:flex;flex-wrap:wrap;gap:6px}.chip-opt{min-height:38px;padding:0 12px;border-radius:10px;border:1px solid var(--line2);background:var(--raise);font-size:13px;font-weight:600}.chip-opt[aria-checked=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.prop-note{font-size:12px;color:var(--ink2);line-height:1.4;margin:0}.prop-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:600;font-size:14px}.obj-badge{display:inline-grid;place-items:center;min-width:34px;height:34px;padding:0 6px;margin-right:10px;border-radius:99px;border:1.5px solid var(--trade);color:var(--trade);font:700 11px var(--font-mono);vertical-align:middle}.layer-list{display:flex;flex-direction:column}.layer-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.layer-swatch{width:16px;height:16px;border-radius:4px;flex:none}.layer-text{flex:1;min-width:0;display:flex;flex-direction:column}.layer-name{font-weight:700;font-size:14px}.layer-hint{font-size:12px;color:var(--ink2)}.switch{width:52px;height:44px;border:0;background:transparent;display:grid;place-items:center;padding:0;flex:none}.switch-track{width:46px;height:28px;border-radius:99px;background:var(--line2);position:relative;transition:background .15s}.switch-knob{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:99px;background:#fff;transition:left .15s;box-shadow:0 1px 2px #0003}.switch[aria-checked=true] .switch-track{background:var(--ink)}.switch[aria-checked=true] .switch-knob{left:21px}.product-form{display:flex;flex-direction:column;gap:8px}.product-row{display:flex;gap:8px}.product-row .prop-text{flex:1;min-width:0}.btn-pill.small{height:44px;padding:0 14px;font-size:13px}.btn-pill.upload{cursor:pointer;justify-content:center}.product-card{display:flex;gap:12px;padding:12px;border-radius:14px;border:1px solid var(--line);background:var(--raise)}.product-img{width:84px;height:84px;border-radius:10px;object-fit:cover;flex:none;background:var(--chip)}.product-img.empty{display:grid;place-items:center;color:var(--mute);font-size:28px}.product-info{min-width:0;display:flex;flex-direction:column;gap:3px}.product-name{font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.product-price{font:600 14px var(--font-mono)}.product-meta{font-size:12px;color:var(--ink2)}.product-actions{display:flex;gap:12px;margin-top:2px}.product-a{border:0;background:transparent;padding:0;color:var(--accent);font-weight:600;font-size:13px;text-decoration:none}.panel-tab{cursor:pointer}@media(max-width:640px){.ed-bottom-left{bottom:70px}.trade-label{display:none}}.ed-hint.beside-library{left:calc(320px + (100% - 320px)/2);max-width:calc(100% - 340px)}@media(max-width:640px){.trade-btn{padding:0 10px;gap:4px}.trade-btn>span:not(.trade-dot){display:none}.ed-title{max-width:150px}}.plan-svg .lasso{fill:color-mix(in oklab,var(--accent) 10%,transparent);stroke:var(--accent);pointer-events:none}.multi-btn{height:48px;padding:0 16px;border-radius:999px;border:0;background:var(--raise);box-shadow:0 0 0 1px var(--line);display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:14px;color:var(--ink)}.multi-btn .icon{font-size:20px}.multi-btn.on{background:var(--ink);color:var(--bg)}.sel-chip{position:absolute;left:50%;bottom:76px;transform:translate(-50%);z-index:12;display:flex;align-items:center;gap:6px;padding:6px 6px 6px 16px;border-radius:999px;background:var(--ink);color:var(--bg);font-weight:700;font-size:14px;box-shadow:var(--shadow-hover);white-space:nowrap}.sel-chip button{width:32px;height:32px;border-radius:99px;border:0;background:#ffffff24;color:inherit;display:grid;place-items:center}.sel-chip .icon{font-size:18px}.drag-ghost{position:fixed;z-index:300;transform:translate(-50%,-50%);pointer-events:none;opacity:.85}.library-tile{touch-action:pan-y;user-select:none;-webkit-user-select:none}.mixed{color:var(--accent);font-weight:700}.sel-actions{display:flex;flex-direction:column;gap:8px}.prop-link.wide{height:44px;width:100%;font-weight:600;font-size:13.5px}.seg3 button.danger{color:var(--danger)}.panel-tabs .panel-tab{flex:1 1 auto;min-width:0;padding:0 6px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.warn-box{display:grid;gap:2px;padding:12px 12px 6px;border-radius:14px;background:color-mix(in oklch,var(--accent) 12%,var(--raise))}.warn-head{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;color:var(--accent);padding-bottom:6px}.warn-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid color-mix(in oklch,var(--accent) 20%,transparent)}.warn-t{flex:1;font-size:13.5px;font-weight:600}.warn-go{flex:0 0 auto;width:44px;height:44px;border-radius:12px;border:1px solid var(--line2);background:var(--raise);cursor:pointer}.ok-note{padding:10px 12px;border-radius:12px;background:var(--chip)}.circuits-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px}.circuits-head .btn-pill{max-width:70%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.circuit-list{display:grid;gap:6px}.circuit-row-wrap{border:1px solid var(--line);border-radius:14px;background:var(--raise);overflow:hidden}.circuit-row-wrap.open{border-color:var(--ink)}.circuit-row{display:flex;align-items:center;gap:10px;width:100%;min-height:56px;padding:8px 12px;border:0;background:transparent;text-align:left;cursor:pointer}.circuit-dot{flex:0 0 auto;width:12px;height:12px;border-radius:4px}.circuit-main{flex:1;min-width:0;display:grid}.circuit-name{font-weight:700;font-size:14px}.circuit-sub{font-size:12px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.circuit-len{font-family:var(--font-mono);font-size:12.5px;font-weight:600}.circuit-slot{min-width:28px;height:24px;display:grid;place-items:center;border-radius:7px;background:var(--chip);font-family:var(--font-mono);font-size:12px;font-weight:700}.circuit-edit{display:grid;gap:12px;padding:4px 12px 12px;border-top:1px solid var(--line)}.circuit-chip{display:inline-flex;align-items:center;gap:6px}.chip-opt.add{display:inline-flex;align-items:center;gap:4px;border-style:dashed}.chip-opt.add .icon{font-size:18px}.panel-sched{display:grid;gap:8px;margin-top:8px}.sched-head{display:flex;align-items:baseline;justify-content:space-between}.sched-count{font-family:var(--font-mono);font-size:12px;color:var(--mute)}.sched-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:8px;border-radius:14px;background:var(--chip)}.sched-slot{display:flex;align-items:center;gap:6px;min-height:36px;padding:0 8px;border-radius:9px;border:1px solid transparent;background:var(--raise);font-size:12px;text-align:left;min-width:0}.sched-slot:disabled{cursor:default;opacity:1}.sched-slot.free{border:1px dashed var(--ink2);cursor:pointer}.sched-slot.mine{border-color:var(--ink)}.sched-n{font-family:var(--font-mono);color:var(--mute);width:18px;text-align:right}.sched-dot{flex:0 0 auto;width:8px;height:14px;border-radius:3px}.sched-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sched-slot:not(.used) .sched-t{color:var(--mute)}.load-calc{display:flex;gap:10px;align-items:flex-start;padding:12px;border-radius:14px;border:1px dashed var(--line2);color:var(--ink2)}.load-calc span{display:grid;gap:2px}.load-t{font-weight:700;font-size:13.5px;color:var(--ink)}.load-b{font-size:12.5px}.draft-banner{display:flex;gap:10px;align-items:flex-start;padding:12px;border-radius:14px;background:color-mix(in oklch,var(--accent) 14%,var(--raise));color:var(--ink)}.draft-banner .icon{color:var(--accent)}.draft-banner>span{display:grid;gap:2px}.draft-t{font-weight:700;font-size:14px}.draft-b{font-size:12.5px;color:var(--ink2)}.trade-filter{gap:6px}.mat-bar{display:flex;align-items:center;justify-content:space-between}.mat-trade{display:grid;gap:8px}.mat-trade-head{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:6px;border-bottom:2px solid var(--ink)}.mat-trade-t{font-weight:700;font-size:15px}.mat-waste{font-family:var(--font-mono);font-size:12px;color:var(--mute)}.mat-cat{display:grid;gap:0}.mat-row{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px}.mat-name{font-weight:600}.mat-qty{font-family:var(--font-mono);font-size:12.5px;color:var(--mute);text-align:right}.mat-order{grid-column:1 / -1;font-family:var(--font-mono);font-size:12px;font-weight:600}.ed-toast{position:absolute;left:50%;top:84px;transform:translate(-50%);z-index:60;display:flex;align-items:center;gap:8px;max-width:min(560px,calc(100vw - 32px));padding:10px 16px;border-radius:14px;background:var(--ink);color:var(--bg);font-weight:600;font-size:14px;box-shadow:var(--shadow-hover);animation:toast-in .18s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%)}}.plan-svg .circuit-runs polyline{pointer-events:none;opacity:.9}.library-title{display:flex;align-items:baseline;gap:10px}.library-count{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--mute)}.library-chip{display:inline-flex;align-items:center;gap:6px}.library-chip-n{min-width:20px;height:20px;padding:0 5px;display:inline-grid;place-items:center;border-radius:6px;background:color-mix(in oklch,var(--ink) 8%,transparent);font-family:var(--font-mono);font-size:11px}.library-chip[aria-selected=true] .library-chip-n{background:color-mix(in oklch,var(--bg) 22%,transparent)}.style-glyph{width:46px;height:46px;fill:none;stroke:var(--trade);stroke-width:1.6;stroke-linejoin:round}.style-glyph .glass{fill:color-mix(in oklch,var(--sky, #bfe0f5) 55%,transparent)}.style-glyph .ghost{stroke-dasharray:2 2;opacity:.6}.style-glyph text{fill:var(--trade);stroke:none;font-family:var(--font-mono);font-weight:700}.size-menu{display:grid;gap:10px}.size-back{display:inline-flex;align-items:center;gap:6px;justify-self:start;height:40px;padding:0 12px;border-radius:10px;border:1px solid var(--line2);background:var(--raise);font-weight:600;cursor:pointer}.size-title{margin:0;font-size:18px}.size-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.size-chip{display:grid;grid-auto-flow:column;align-items:baseline;place-content:center;gap:3px;min-height:52px;border-radius:12px;border:1px solid var(--line2);background:var(--raise);font-family:var(--font-mono);cursor:pointer}.size-chip:hover{border-color:var(--ink)}.size-w{font-size:17px;font-weight:700}.size-x,.size-h{font-size:13px;color:var(--ink2)}.size-custom-row{display:grid;grid-template-columns:1fr auto 1fr auto;gap:8px;align-items:center}.chip-opt.mono{font-family:var(--font-mono)}.handing{display:block}.handing-wall{stroke:var(--ink);stroke-width:5;stroke-linecap:square}.handing-leaf{stroke:var(--ink);stroke-width:2.4;stroke-linecap:round}.handing-arc{fill:none;stroke:var(--ink2);stroke-width:1.3;stroke-dasharray:3 2}.handing-hinge{fill:var(--accent)}.handing-row{display:flex;gap:8px;flex-wrap:wrap}.handing-opt{display:grid;justify-items:center;gap:4px;min-width:84px;padding:8px 10px;border-radius:12px;border:1px solid var(--line2);background:var(--raise);font-size:12.5px;font-weight:600;cursor:pointer}.handing-opt[aria-checked=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.handing-opt.flip{align-content:center;color:var(--ink2)}.plan-svg .swing-flip{cursor:pointer}.plan-svg .swing-flip circle{fill:var(--ink)}.plan-svg .swing-flip text{fill:var(--bg);font-family:var(--font-icon);pointer-events:none}.product-head{display:grid;grid-template-columns:96px 1fr;gap:12px;align-items:start}.product-photo img,.product-photo .product-img{width:96px;height:96px;border-radius:12px;object-fit:cover;border:1px solid var(--line);background:var(--chip);display:grid;place-items:center}.product-head-t{display:grid;gap:6px;justify-items:start}.offers{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.offer{display:grid;gap:4px;align-content:start;padding:10px;border-radius:12px;border:1px solid var(--line2);background:var(--raise)}.offer.preferred{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.offer.cheapest .offer-price{color:var(--L-frame)}.offer-top{display:flex;align-items:center;justify-content:space-between;gap:6px}.offer-store{font-weight:700;font-size:14px}.offer-badge{display:inline-flex;align-items:center;gap:2px;padding:2px 6px;border-radius:6px;background:var(--ink);color:var(--bg);font-size:11px;font-weight:700}.offer-badge .icon{font-size:14px}.offer-price{font-family:var(--font-mono);font-size:16px;font-weight:700}.offer-low{justify-self:start;padding:1px 6px;border-radius:6px;background:color-mix(in oklch,var(--L-frame) 18%,transparent);color:var(--L-frame);font-size:11px;font-weight:700}.offer-meta{font-size:11.5px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.offer-actions{display:flex;flex-wrap:wrap;gap:4px 10px}.product-a.danger{color:var(--danger)}.mat-row.handed{grid-template-columns:auto 1fr auto}.mat-row.handed .handing{grid-row:span 2}.mat-row.handed .mat-order{grid-column:2 / -1}.mat-row.note .mat-name{font-weight:500;font-style:italic;color:var(--ink2)}.plan-svg .opening.lifted .gap{stroke:var(--accent);opacity:.55}.plan-svg .lv-runs polyline{stroke:var(--ink2);opacity:.8;pointer-events:none}.plan-options{display:grid;gap:8px;padding:12px;border-radius:14px;background:var(--chip)}.plan-option{display:grid;gap:6px}.plan-option-t{font-size:12.5px;font-weight:600;color:var(--ink2)}.chip-opt.small{min-height:34px;padding:0 10px;font-size:12.5px}.boxfill{display:grid;gap:6px;margin-top:8px}.boxfill-counts summary{cursor:pointer;font-size:12px;color:var(--mute)}.load-ref{display:block;font-family:var(--font-mono);font-size:11px;color:var(--mute);font-weight:400}.load-panel{display:grid;gap:12px;margin-top:8px}.load-sec{display:grid;gap:8px;padding:12px;border-radius:14px;border:1px solid var(--line);background:var(--raise)}.load-row{display:flex;flex-wrap:wrap;gap:8px;align-items:end}.load-row-t{flex:1 1 100%;font-weight:600;font-size:13.5px}.load-sw{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink2)}.load-field{display:grid;gap:4px;flex:1 1 120px;min-width:0}.load-field .prop-text{height:40px}.load-x{width:40px;height:40px;border-radius:10px;border:1px solid var(--line2);background:var(--raise);cursor:pointer}.load-circuit{display:grid;gap:8px;padding:10px;border-radius:12px;border:1px dashed var(--line2)}.load-circuit.status-removed{opacity:.6}.load-poles{width:96px}.load-result{display:grid;gap:10px}.load-table{width:100%;border-collapse:collapse;font-size:13px}.load-table td{padding:7px 0;border-bottom:1px solid var(--line);vertical-align:top}.load-table .load-c,.load-table .load-w{text-align:right;font-family:var(--font-mono);white-space:nowrap;padding-left:8px}.load-table .load-w{font-weight:700}.load-total td{border-top:2px solid var(--ink);font-weight:700}.load-l{font-weight:600}.load-note{color:var(--mute);font-weight:400}.load-verdict{display:flex;align-items:center;gap:8px;padding:12px;border-radius:12px;font-weight:700}.load-verdict.v-ok{background:color-mix(in oklch,var(--L-frame) 16%,var(--raise));color:var(--L-frame)}.load-verdict.v-near{background:color-mix(in oklch,var(--accent) 16%,var(--raise));color:var(--accent)}.load-verdict.v-upgrade{background:color-mix(in oklch,var(--danger) 14%,var(--raise));color:var(--danger)}.load-verdict.v-unknown{background:var(--chip);color:var(--ink2)}.load-spaces{font-size:13px;font-weight:600}.load-spaces.full{color:var(--danger)}.load-option{padding:10px;border-radius:12px;background:var(--chip);font-size:13px;font-weight:600}.load-disclaimer{display:flex;gap:8px;margin:0;font-size:12px;color:var(--ink2)}.load-circuit-sum{display:grid;gap:2px;text-align:left;padding:10px 12px;border-radius:12px;border:1px solid var(--line2);background:var(--raise);cursor:pointer}.load-circuit-sum.status-removed{opacity:.6;text-decoration:line-through}:root{color-scheme:light;--bg: #f3f1ec;--panel: #fbfaf7;--raise: #ffffff;--ink: #17181b;--ink2: #56575b;--mute: #8b8a85;--line: rgba(23, 24, 27, .09);--line2: rgba(23, 24, 27, .18);--chip: rgba(23, 24, 27, .06);--canvas: #f8f7f3;--grid: rgba(23, 24, 27, .05);--grid2: rgba(23, 24, 27, .11);--wall: #222327;--found: #7f7d78;--backdrop: #d9d6cf;--sky: linear-gradient(180deg, #eceae4, #f7f6f2);--accent: oklch(.68 .18 50);--on-accent: #ffffff;--danger: oklch(.62 .17 22);--L-demo: oklch(.62 .17 22);--L-slab: oklch(.62 .11 80);--L-rad: oklch(.62 .16 350);--L-frame: oklch(.62 .12 150);--L-elec: oklch(.56 .17 280);--L-plumb: oklch(.6 .12 238);--L-hvac: oklch(.6 .1 185);--L-fin: oklch(.6 .12 310);--conc: #c9c6bf;--dry: #efede8;--wood: #d9b98c;--status-draft: var(--mute);--status-sent: var(--accent);--status-approved: var(--L-frame);--status-archived: var(--line2);--font-sans: "Schibsted Grotesk", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--font-icon: "Material Symbols Rounded";--radius-sm: 9px;--radius-md: 12px;--radius-card: 18px;--radius-pill: 999px;--shadow-hover: 0 18px 40px rgba(0, 0, 0, .09)}[data-theme=dark]{color-scheme:dark;--bg: #121315;--panel: #18191c;--raise: #1f2024;--ink: #ecebe6;--ink2: #a9a8a3;--mute: #76756f;--line: rgba(236, 235, 230, .08);--line2: rgba(236, 235, 230, .17);--chip: rgba(236, 235, 230, .07);--canvas: #151619;--grid: rgba(236, 235, 230, .04);--grid2: rgba(236, 235, 230, .09);--wall: #e9e7e1;--found: #8a8882;--backdrop: #0a0a0b;--sky: linear-gradient(180deg, #1a1b1f, #121315);--conc: #5a5955;--dry: #cfcdc7;--wood: #8a6c48;--shadow-hover: 0 18px 40px rgba(0, 0, 0, .4)}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent)}a:hover{color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.icon{font-family:var(--font-icon);font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;-webkit-font-feature-settings:"liga";font-feature-settings:"liga";-webkit-user-select:none;user-select:none}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.icon-btn{width:40px;height:40px;border-radius:10px;border:1px solid var(--line2);background:transparent;display:grid;place-items:center;font-size:20px;flex:none}.lang-btn{height:40px;padding:0 12px;border-radius:10px;border:1px solid var(--line2);background:transparent;font:600 13px var(--font-mono);flex:none}.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:34px;height:34px;border-radius:var(--radius-sm);background:var(--ink);color:var(--bg);display:grid;place-items:center;font:700 11px/1 var(--font-mono);letter-spacing:.02em}.brand-name{font-weight:800;font-size:19px;letter-spacing:-.02em}.topbar{height:68px;flex:none;display:flex;align-items:center;gap:14px;padding:0 24px;border-bottom:1px solid var(--line);background:var(--bg);position:relative}.topbar-spacer{flex:1}.search{display:flex;align-items:center;gap:8px;height:44px;padding:0 14px;border-radius:var(--radius-md);background:var(--raise);border:1px solid var(--line);width:340px;min-width:0}.search .icon{font-size:20px;color:var(--mute)}.search input{flex:1;border:0;outline:none;background:transparent;font-size:14px;min-width:0}.search input::placeholder{color:var(--mute)}.search-inline{display:none}.avatar{width:40px;height:40px;border-radius:var(--radius-pill);background:var(--accent);color:var(--on-accent);display:grid;place-items:center;font-weight:700;font-size:14px;border:0;flex:none}.menu{position:absolute;right:24px;top:60px;z-index:20;min-width:220px;padding:6px;border-radius:var(--radius-md);background:var(--raise);box-shadow:0 0 0 1px var(--line),var(--shadow-hover)}.menu-head{padding:10px 12px 8px;font-size:13px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis}.menu-item{width:100%;display:flex;align-items:center;gap:10px;height:44px;padding:0 12px;border:0;border-radius:var(--radius-sm);background:transparent;font-weight:600;text-align:left}.menu-item:hover{background:var(--chip)}.menu-item .icon{font-size:20px}.screen{min-height:100%;display:flex;flex-direction:column;background:var(--bg)}.content{flex:1;overflow:auto;padding:32px 32px 40px}.list-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}.list-title-wrap{flex:1;min-width:240px}.kicker{font:500 12px var(--font-mono);color:var(--ink2);letter-spacing:.06em;text-transform:uppercase}.list-title{font-size:56px;font-weight:800;letter-spacing:-.045em;line-height:1;margin:8px 0 0}.btn-primary{height:52px;padding:0 22px;border-radius:var(--radius-pill);border:0;background:var(--ink);color:var(--bg);font-weight:700;font-size:15px;display:inline-flex;align-items:center;gap:8px;text-decoration:none}.btn-primary .icon{font-size:22px}.btn-primary:hover{color:var(--bg)}.btn-pill{height:44px;padding:0 18px;border-radius:var(--radius-pill);border:1px solid var(--line2);background:transparent;font-weight:600;display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:var(--ink)}.btn-pill.solid{border:0;background:var(--ink);color:var(--bg)}.filters{display:flex;gap:8px;margin-top:24px;flex-wrap:wrap}.chip-filter{height:40px;padding:0 16px;border-radius:var(--radius-pill);border:1px solid var(--line2);background:transparent;color:var(--ink);font-weight:600;font-size:14px}.chip-filter[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--bg)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px;margin-top:22px}.card{text-align:left;padding:0;border:1px solid var(--line);background:var(--raise);border-radius:var(--radius-card);overflow:hidden;display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s;color:var(--ink);text-decoration:none;animation:rise .3s ease both}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover);color:var(--ink)}.card-thumb{height:180px;position:relative;background-color:var(--canvas);border-bottom:1px solid var(--line);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:14px 14px}.card-thumb svg{position:absolute;left:40px;right:40px;top:34px;bottom:22px;width:calc(100% - 80px);height:calc(100% - 56px)}.card-thumb line{stroke:var(--ink);stroke-linecap:square}.card-thumb line.thin{opacity:.7}.thumb-empty{position:absolute;top:52px;right:40px;bottom:18px;left:40px;display:grid;place-items:center;color:var(--mute);border:2px dashed var(--line2);border-radius:var(--radius-md);font-size:12px;font-weight:600}.thumb-empty .icon{font-size:28px;display:block;text-align:center;margin-bottom:4px}.status-pill{position:absolute;left:12px;top:12px;display:flex;align-items:center;gap:7px;height:28px;padding:0 10px;border-radius:var(--radius-pill);background:var(--raise);border:1px solid var(--line);font-size:12px;font-weight:600}.status-dot{width:8px;height:8px;border-radius:99px;background:var(--status-draft)}.status-dot[data-status=sent]{background:var(--status-sent)}.status-dot[data-status=approved]{background:var(--status-approved)}.status-dot[data-status=archived]{background:var(--status-archived)}.versions{position:absolute;right:12px;top:12px;display:flex;gap:4px}.version{font:600 11px var(--font-mono);padding:3px 6px;border-radius:6px;background:var(--chip);color:var(--ink2)}.version.current{background:var(--ink);color:var(--bg)}.card-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:10px}.card-title{font-size:18px;font-weight:700;letter-spacing:-.01em}.card-client{font-size:13px;color:var(--ink2);margin-top:2px}.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{display:flex;gap:5px;height:26px;align-items:center;padding:0 8px;border-radius:7px;background:var(--chip);font-size:11.5px;max-width:100%}.tag-k{color:var(--mute)}.tag-v{font-family:var(--font-mono);font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-ago{font-size:12px;color:var(--mute)}.skeleton{height:296px;border-radius:var(--radius-card);background:var(--chip);animation:pulse 1.4s ease-in-out infinite}.state{margin:40px auto;max-width:420px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}.state-icon{width:72px;height:72px;border-radius:20px;border:2px dashed var(--line2);display:grid;place-items:center;font-size:32px;color:var(--mute)}.state-title{font-size:22px;font-weight:700;margin:0}.state-body{font-size:14px;color:var(--ink2);line-height:1.5;margin:0}.state-actions{display:flex;gap:8px;margin-top:6px;flex-wrap:wrap;justify-content:center}.login-wrap{min-height:100%;display:grid;place-items:center;padding:24px 16px;background:var(--bg)}.login-card{width:100%;max-width:400px;padding:32px;border-radius:22px;background:var(--raise);border:1px solid var(--line);display:flex;flex-direction:column;gap:16px}.login-title{font-size:32px;font-weight:800;letter-spacing:-.03em;margin:8px 0 0;line-height:1.1}.login-sub{color:var(--ink2);margin:0}.field{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13px}.field input{height:48px;padding:0 14px;border-radius:var(--radius-md);border:1px solid var(--line2);background:var(--panel);font-size:16px;font-weight:400;outline:none}.field input:focus{border-color:var(--ink)}.form-error{color:var(--danger);font-size:13px;font-weight:600;margin:0}.login-card .btn-primary{justify-content:center;width:100%}.login-card .btn-primary:disabled{opacity:.6;cursor:default}.login-tools{display:flex;gap:8px;justify-content:flex-end}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#0a0a0c73;display:grid;place-items:center;padding:20px}.modal{width:min(560px,100%);max-height:100%;overflow:auto;border-radius:22px;background:var(--panel);color:var(--ink);box-shadow:0 40px 100px #00000059;padding:24px;display:flex;flex-direction:column;gap:14px;animation:rise .25s ease}.modal-title{font-size:24px;font-weight:800;letter-spacing:-.02em;margin:0}.modal-body{color:var(--ink2);margin:0;line-height:1.5}.choice{display:flex;align-items:flex-start;gap:14px;text-align:left;padding:16px;border-radius:16px;border:1px solid var(--line2);background:var(--raise);color:var(--ink)}.choice:hover:not(:disabled){border-color:var(--ink)}.choice:disabled{opacity:.6}.choice .icon{font-size:24px;color:var(--accent)}.choice-t{display:block;font-weight:700;font-size:15px}.choice-b{display:block;font-size:13px;color:var(--ink2);margin-top:2px}.modal.wide{width:min(760px,100%);gap:18px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.src-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.src-card{display:flex;flex-direction:column;gap:8px;padding:18px;border-radius:16px;border:1px solid var(--line2);background:var(--raise)}.src-card.selected{border-color:var(--ink);background:var(--chip)}.src-icon{width:48px;height:48px;border-radius:14px;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-size:26px}.src-title{font-weight:800;font-size:17px}.src-body{font-size:13px;color:var(--ink2);line-height:1.4}.link-kicker{font:600 11px var(--font-mono);letter-spacing:.06em;color:var(--mute);margin-bottom:8px;text-transform:uppercase}.link-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}.link-note{font-size:12.5px;color:var(--ink2);margin-top:6px}.combo{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink2)}.combo-label{font-size:12px;color:var(--ink2)}.combo-box{position:relative;display:flex}.combo-box input{flex:1;min-width:0;height:46px;border-radius:12px;border:1px solid var(--line2);background:var(--raise);color:var(--ink);padding:0 36px 0 12px;font-size:14px;outline:none}.combo-box input:focus{border-color:var(--ink)}.combo-box input.mono,.combo-opt .mono{font-family:var(--font-mono)}.combo-box input:disabled{opacity:.6}.combo-caret{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--mute);font-size:20px;pointer-events:none}.combo-list{z-index:200;max-height:280px;overflow:auto;padding:6px;border-radius:14px;background:var(--raise);box-shadow:0 20px 50px #0000002e,0 0 0 1px var(--line)}.combo-opt{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:9px 12px;border:0;border-radius:10px;background:transparent;text-align:left;font-size:14px;color:var(--ink);min-height:44px;justify-content:center}.combo-opt.active,.combo-opt:hover{background:var(--chip)}.combo-opt[aria-selected=true]{font-weight:700}.combo-opt.none{color:var(--ink2)}.combo-hint{font-size:12px;color:var(--ink2)}.combo-empty{padding:10px 12px;font-size:13px;color:var(--mute)}.local-chip{position:absolute;left:12px;bottom:10px;display:flex;align-items:center;gap:6px;height:24px;padding:0 8px;border-radius:999px;background:var(--raise);border:1px solid var(--line);font-size:11.5px;font-weight:600;color:var(--ink2)}.local-chip .icon{font-size:15px;color:var(--L-plumb)}@media(max-width:640px){.topbar{height:60px;padding:0 16px;gap:8px}.topbar .search{display:none}.menu{right:16px;top:54px}.content{padding:20px 16px 32px}.list-title{font-size:40px}.list-head .btn-primary{height:48px;padding:0 18px}.search-inline{display:flex;width:100%;margin-top:18px}.filters{flex-wrap:nowrap;overflow-x:auto;margin-left:-16px;margin-right:-16px;padding:0 16px;scrollbar-width:none}.chip-filter{flex:none}.grid{grid-template-columns:1fr;gap:14px}}
