*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#e9e8e4;--surface:#ffffff;--border:#e2e0d8;--bn:#d1cfc6;--text:#1a1a18;--t2:#5a5854;--t3:#9a9890;--accent:#2563eb;--ab:#eff6ff;--panel:#ffffff;--muted:#f4f3f0;--input-bg:#f7f6f3;--radius:6px;--dot:#c8c6be}:root[data-theme=dark]{--bg:#191815;--surface:#242320;--border:#3a382f;--bn:#4a4842;--text:#f0efe9;--t2:#a8a69c;--t3:#75736a;--accent:#3b82f6;--ab:#16233d;--panel:#242320;--muted:#2c2b26;--input-bg:#201f1b;--dot:#3a3936}body{font-family:-apple-system,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);height:100vh;overflow:hidden;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none}#topbar{height:44px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 12px;gap:8px;flex-shrink:0;z-index:100}.logo{font-size:15px;font-weight:700;letter-spacing:-.5px;color:var(--text)}.logo em{color:var(--accent);font-style:normal}.sep{width:1px;height:18px;background:var(--border)}.btn{height:28px;padding:0 9px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:11px;font-weight:500;text-decoration:none;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;white-space:nowrap;transition:background .1s,color .1s}.btn:hover{background:var(--muted)}.btn.on{background:var(--ab);color:var(--accent)}.btn.on,.btn.pri{border-color:var(--accent)}.btn.pri{background:var(--accent);color:#fff}.btn.pri:hover{background:#1d4ed8}.btn svg{width:13px;height:13px;flex-shrink:0}.mode-group{gap:2px;background:var(--muted);border-radius:8px;padding:3px}.mode-btn,.mode-group{display:flex;align-items:center}.mode-btn{height:28px;padding:0 10px;border-radius:6px;border:none;background:transparent;color:var(--t2);font-size:12px;font-weight:500;cursor:pointer;gap:5px;white-space:nowrap;transition:all .1s}.mode-btn:hover{background:var(--surface);color:var(--text)}.mode-btn.on{background:var(--accent);color:#fff;box-shadow:0 1px 3px rgba(37,99,235,.3)}.mode-btn.on .mode-key{color:rgba(255,255,255,.65)}.mode-key{font-size:10px;font-weight:400;color:var(--t3)}.mode-btn svg{width:13px;height:13px;flex-shrink:0}.bg{display:flex;gap:1px}.bg .btn{border-radius:0}.bg .btn:first-child{border-radius:var(--radius) 0 0 var(--radius)}.bg .btn:last-child{border-radius:0 var(--radius) var(--radius) 0}.tb-center{flex:1 1;justify-content:center;min-width:0}.tb-center,.tr{display:flex;align-items:center;gap:6px}.mobile-save-btn{display:none;border-radius:50%}#wcd{position:relative}#wct{display:flex;align-items:center;gap:5px;height:28px;padding:0 8px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:11px;font-weight:500}#wct:hover{background:var(--muted)}.wcp{width:24px;height:4px;border-radius:2px}#wcdd{position:absolute;top:32px;left:0;z-index:600;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:5px;box-shadow:0 4px 16px rgba(0,0,0,.1);min-width:175px;display:none}#wcdd.open{display:block}.wci{display:flex;align-items:center;gap:7px;padding:5px 7px;border-radius:4px;cursor:pointer;font-size:11px}.wci:hover{background:var(--muted)}.wci.sel{background:var(--ab)}.wcid{width:18px;height:3px;border-radius:2px;flex-shrink:0}.wcil{flex:1 1;font-size:11px;color:var(--text);font-family:inherit;min-width:0}.wci input[type=color],.wcil{border:none;background:transparent}.wci input[type=color]{width:16px;height:16px;padding:0;cursor:pointer;border-radius:3px}#main{flex:1 1}#lp,#main{display:flex;overflow:hidden}#lp{width:244px;background:var(--panel);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;transition:width .2s ease;position:relative}.lp-scroll{flex:1 1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}#lp .lp-resize-handle{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:50;display:flex;align-items:center;justify-content:center;touch-action:none}.lp-resize-grip{width:2px;height:32px;border-radius:2px;background:var(--border);opacity:0;transition:opacity .15s,background .15s}.lp-resize-handle:hover .lp-resize-grip{opacity:1;background:var(--accent)}.ps-resize-handle{width:100%;height:10px;margin-top:2px;cursor:row-resize;display:flex;align-items:center;justify-content:center;touch-action:none}.ps-resize-grip{width:32px;height:3px;border-radius:2px;background:var(--border);opacity:.6;transition:opacity .15s,background .15s}.ps-resize-handle:hover .ps-resize-grip{opacity:1;background:var(--accent)}.ps-thumb{flex-shrink:0;width:72px;height:54px;border:1px solid var(--border);border-radius:6px;background:var(--surface);cursor:pointer;overflow:hidden;transition:border-color .12s,box-shadow .12s}.ps-thumb:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ps-thumb.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 0 3px var(--ab)}.ps-row{display:flex;gap:8px;align-items:center;padding:5px 6px;border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:border-color .12s,background .12s,box-shadow .12s}.ps-row.active,.ps-row:hover{border-color:var(--accent);background:var(--ab)}.ps-row.active{box-shadow:0 0 0 1px var(--accent)}.ps{padding:8px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.pl{font-size:9px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.08em;padding:0;display:block}.lp-add-section-label{padding:10px 12px 2px;font-size:13px;font-weight:700;color:var(--text)}.lp-lib-scroll{max-height:300px;overflow-y:auto;padding-bottom:4px}.lp-lib-grid{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:5px;gap:5px}.di{border:1px solid var(--border);border-radius:var(--radius);padding:6px 4px;background:var(--surface);cursor:pointer;text-align:center;font-size:11px;font-weight:600;color:var(--t2);transition:all .1s}.di:hover{border-color:var(--accent);color:var(--accent);background:var(--ab)}.di-circ{border-radius:50%!important;padding:0!important;width:36px;height:36px;display:flex!important;align-items:center;justify-content:center;justify-self:center}.lp-edit{display:flex;flex-direction:column;gap:0}.lp-edit,.lp-section{border-bottom:1px solid var(--border)}.lp-section{padding:8px 12px}.lp-section:last-child{border-bottom:none}.lp-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.lp-section-header .pl{margin-bottom:0;padding:0}.lp-del-btn{font-size:9px;color:#dc2626;background:none;border:none;cursor:pointer;padding:0}.lp-del-btn:hover{text-decoration:underline}.lp-wc-edit-btn{width:22px;height:22px;border-radius:4px;border:1px solid var(--border);background:var(--surface);color:var(--fg-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.lp-wc-edit-btn:hover{background:var(--bg);color:var(--fg)}.lp-wc-popup{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:6px;margin-bottom:6px;display:flex;flex-direction:column;gap:3px}.lp-wc-popup-row{display:flex;align-items:center;gap:6px;height:22px}.lp-wc-popup-swatch{width:14px;height:14px;border-radius:3px;flex-shrink:0;border:1px solid rgba(0,0,0,.08)}.lp-wc-popup-label{font-size:10px;color:var(--fg);flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lp-wc-del-btn{width:18px;height:18px;border-radius:4px;border:none;background:none;color:#dc2626;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;padding:0}.lp-wc-del-btn:hover{background:rgba(220,38,38,.12)}.lp-wc-swatch-wrap{position:relative;display:inline-flex;flex-shrink:0}.lp-wc-badge{position:absolute;top:-5px;right:-5px;width:13px;height:13px;border-radius:50%;background:#dc2626;color:#fff;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;font-size:8px;line-height:1;z-index:1}.lp-wc-badge:hover{background:#b91c1c}.lp-wc-edit-btn.done{color:var(--accent);border-color:var(--accent)}.lp-section .pl{padding:0;margin-bottom:6px;display:block}.lp-section .pl.accent{color:var(--accent)}.lp-sub-label{font-size:9px;color:var(--t3);margin-bottom:5px;display:block}.lp-shape-row{display:flex;align-items:center;gap:8px}.lp-shape-row-label{font-size:9px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.08em;flex-shrink:0}.lp-shape-icon-btn{width:28px;height:28px;border:1px solid var(--border);border-radius:6px;background:var(--surface);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--t2);transition:all .1s}.lp-shape-icon-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--ab)}.lp-wire-add-btn{width:100%;height:30px;border:1px solid var(--border);border-radius:6px;background:var(--surface);display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;color:var(--t2);font-size:11px;font-weight:600;transition:all .1s}.lp-wire-add-btn.active,.lp-wire-add-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--ab)}.lp-wire-add-btn.active{box-shadow:0 0 0 2px rgba(37,99,235,.18)}.lp-size-row{display:flex;align-items:center;gap:6px}.lp-size-label{font-size:10px;font-weight:500;color:var(--t2)}.lp-size-input{flex:1 1;height:28px;border:1px solid var(--border);border-radius:var(--radius);padding:0 8px 0 28px;font-size:12px;color:var(--text);background:var(--input-bg);font-family:inherit;min-width:0;position:relative}.lp-size-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--ab)}.lp-mini-field{display:flex;flex:1 1;align-items:center;border:1px solid var(--border);border-radius:var(--radius);background:var(--input-bg);padding:0 8px;gap:4px;min-width:0;overflow:hidden;transition:border-color .1s,box-shadow .1s}.lp-mini-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px var(--ab)}.lp-mini-field-label{font-size:10px;font-weight:500;color:var(--t2);flex-shrink:0}.lp-mini-field input{flex:1 1;height:28px;border:none;background:transparent;font-size:12px;color:var(--text);font-family:inherit;min-width:0;outline:none}.lp-swatches{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:0}.lp-swatch{width:22px;height:22px;border-radius:5px;cursor:pointer;border:2px solid transparent;flex-shrink:0;transition:transform .1s}.lp-swatch:hover{transform:scale(1.1);outline:1.5px solid rgba(0,0,0,.15);outline-offset:1px}.lp-swatch.active{box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--accent)}.lp-color-edit{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.lp-color-edit input[type=color]{width:18px;height:18px;border:none;padding:0;cursor:pointer;border-radius:3px;background:transparent}.lp-align-row{display:flex;gap:3px}.lp-align-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:4px;gap:4px}.lp-align-btn{padding:0!important;height:26px;width:26px;flex-shrink:0;justify-content:center;border-radius:var(--radius)}.lp-align-btn:hover{background:var(--muted);border-color:var(--border)}.lp-align-row .lp-align-btn{flex:1 1;width:auto}.lp-btn-row{display:flex;gap:3px;margin-bottom:4px}.lp-btn-row:last-child{margin-bottom:0}.lp-flex-btn{flex:1 1;min-width:0}.lp-end-btn{display:flex;align-items:center;gap:4px;width:100%;height:26px;padding:0 6px!important;font-size:11px;border-radius:var(--radius)}.lp-end-icon{font-size:12px;flex-shrink:0;width:14px;text-align:center}.lp-end-label{font-size:10px;color:var(--t3);flex:1 1;text-align:left}.lp-end-dd{position:absolute;top:calc(100% + 2px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);z-index:200;box-shadow:0 4px 12px rgba(0,0,0,.12)}.lp-end-dd-item{display:flex;align-items:center;gap:6px;padding:5px 8px;cursor:pointer;font-size:11px}.lp-end-dd-item:hover{background:var(--muted)}.lp-end-dd-item.on{color:var(--accent);font-weight:500}.lp-text-field{position:relative;flex:1 1;min-width:0}.lp-text-input{width:100%;height:28px;border:1px solid var(--border);border-radius:var(--radius);padding:0 30px 0 8px;font-size:12px;color:var(--text);background:var(--input-bg);font-family:inherit;min-width:0;transition:border-color .1s,box-shadow .1s}.lp-text-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--ab)}.lp-text-swatch{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:16px;height:16px;border-radius:2px;cursor:pointer;flex-shrink:0;box-shadow:0 0 0 1px rgba(0,0,0,.15)}.lp-text-swatch:hover{transform:translateY(-50%) scale(1.12)}.lp-stroke-select{height:28px;border:1px solid var(--border);border-radius:var(--radius);padding:0 6px;font-size:11px;color:var(--text);background:var(--input-bg);font-family:inherit;cursor:pointer;flex-shrink:0;min-width:52px;transition:border-color .1s}.lp-stroke-select:focus{outline:none;border-color:var(--accent)}.lp-bottom{position:absolute;right:12px;bottom:12px;z-index:50}.lp-shortcut-btn{width:32px;height:32px;padding:0;justify-content:center;border-radius:50%;flex-shrink:0;background:var(--surface);box-shadow:0 2px 8px rgba(0,0,0,.12)}.lp-shortcut-popup{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px;box-shadow:0 6px 20px rgba(0,0,0,.12);z-index:500;width:max-content;max-width:300px;display:grid;grid-template-columns:max-content max-content;grid-column-gap:12px;column-gap:12px;grid-row-gap:2px;row-gap:2px;align-items:baseline}.lp-sc-row{display:contents;font-size:10px;line-height:2;color:var(--t2)}.lp-sc-row .lp-sc-key{color:var(--t3);white-space:nowrap}.lp-sc-sep{grid-column:1/-1;height:1px;background:var(--border);margin:5px 0}#wire-panel{display:none}.dg{display:grid;grid-template-columns:1fr 1fr;grid-gap:4px;gap:4px}.dg1{grid-template-columns:1fr}.psg{padding:9px}.wpb{width:100%;justify-content:center}.export-dd{position:absolute;top:36px;right:0;z-index:600;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:5px;box-shadow:0 6px 20px rgba(0,0,0,.1);min-width:200px;max-width:calc(100vw - 24px);white-space:nowrap;overflow-x:auto}.export-dd.align-left{left:0;right:auto}.export-item{display:flex;align-items:center;gap:7px;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:11px;white-space:nowrap}.export-badge,.export-item:hover{background:var(--muted)}.export-badge{font-size:9px;font-weight:700;padding:2px 5px;border-radius:3px;color:var(--t2);letter-spacing:.04em}.export-hint{margin-left:auto;font-size:9px;color:var(--t3)}.pro-tag{background:var(--t3)}.pro-tag,.soon-tag{font-size:7px;font-weight:700;padding:1px 3px;border-radius:3px;color:#fff;letter-spacing:.04em;line-height:1.3}.soon-tag{background:rgba(0,0,0,.35)}.acc-header{gap:9px;padding:8px 10px 10px}.acc-avatar,.acc-header{display:flex;align-items:center}.acc-avatar{width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0}.acc-header-text{min-width:0;flex:1 1}.acc-header-name{font-size:11px;font-weight:600;color:var(--text)}.acc-header-name,.acc-header-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acc-header-sub{font-size:9px;color:var(--t3)}.acc-sub-item{display:flex;align-items:center;gap:7px;padding:6px 10px 6px 34px;border-radius:6px;cursor:pointer;font-size:11px;white-space:nowrap}.acc-sub-item:hover{background:var(--muted)}.acc-sub-check{width:13px;color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.acc-menu{width:220px}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1500;display:flex;align-items:center;justify-content:center;padding:16px}.modal-card{background:var(--surface);border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.22);max-width:calc(100vw - 32px);padding:24px 22px;position:relative}.modal-card .modal-close{position:absolute;top:10px;right:10px;width:26px;height:26px;border-radius:50%;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--t3)}.modal-close:hover{background:var(--muted);color:var(--text)}#ctx{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.1);padding:3px;z-index:2000;display:none;min-width:128px}.ci{padding:6px 10px;border-radius:5px;font-size:11px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.ci:hover{background:var(--muted)}.ci .ks{color:var(--t3);font-size:10px}.ci.d{color:#dc2626}.ci.d:hover{background:rgba(220,38,38,.12)}.csep{height:1px;background:var(--border);margin:3px 0}#cw{flex:1 1;position:relative;overflow:hidden;touch-action:none;background-color:var(--bg);background-image:radial-gradient(circle,var(--dot) 1.1px,transparent 1.1px);background-size:22px 22px;background-position:11px 11px}#canvas-vp{position:absolute;inset:0;transform-origin:0 0;will-change:transform}#cw.hand-mode,#cw.space-pan{cursor:-webkit-grab;cursor:grab}#cw.hand-mode.panning,#cw.space-pan.panning{cursor:-webkit-grabbing;cursor:grabbing}#svg-layer{overflow:visible;z-index:1}#node-layer,#svg-layer{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}#node-layer{z-index:2}#wire-layer{z-index:3}#snap-svg,#wire-layer{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}#snap-svg{z-index:4}#group-layer{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}#zoom-ctl{position:absolute;left:14px;bottom:14px;z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.1);overflow:hidden;touch-action:none}#zoom-ctl,.zoom-btn{display:flex;align-items:center}.zoom-btn{width:28px;height:28px;border:none;background:transparent;color:var(--t2);justify-content:center;cursor:pointer;transition:background .1s,color .1s;flex-shrink:0}.zoom-btn:hover{background:var(--muted);color:var(--text)}.zoom-pct{min-width:44px;height:28px;padding:0 4px;border:none;border-left:1px solid var(--border);border-right:1px solid var(--border);background:transparent;color:var(--text);font-size:11px;font-weight:600;cursor:pointer;flex-shrink:0}.zoom-pct:hover{background:var(--muted)}#fit-ctl{position:absolute;left:122px;bottom:14px;z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.1);overflow:hidden;touch-action:none}#fit-ctl,.fit-btn{display:flex;align-items:center}.fit-btn{width:28px;height:28px;border:none;background:transparent;color:var(--t2);justify-content:center;cursor:pointer;transition:background .1s,color .1s;flex-shrink:0}.fit-btn:hover{background:var(--muted);color:var(--text)}#pan-ctl{display:none;position:absolute;left:164px;bottom:14px;z-index:50;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.1);overflow:hidden;touch-action:none}.pan-toggle-btn{width:28px;height:28px;border:none;background:transparent;color:var(--t2);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .1s,color .1s;flex-shrink:0}.pan-toggle-btn:hover{background:var(--muted);color:var(--text)}.pan-toggle-btn.on{background:var(--accent);color:#fff}.guide{position:absolute;pointer-events:none;z-index:900}.guide.h{width:100%;height:1px}.guide.h,.guide.v{background:rgba(37,99,235,.5);top:0;left:0}.guide.v{width:1px;height:100%}#sr{position:absolute;border:1px solid var(--accent);background:rgba(37,99,235,.05);pointer-events:none;display:none;z-index:10}.node.pre-sel{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.15)}.wv.pre-sel{stroke-dasharray:5 3;opacity:.7}.node{position:absolute;background:var(--surface);border:1.5px solid var(--bn);border-radius:6px;cursor:pointer;min-width:70px;will-change:transform;pointer-events:auto;box-shadow:0 1px 3px rgba(0,0,0,.07)}.node.node-circ{border-radius:50%;min-width:0;display:flex;align-items:center;justify-content:center}.node-in.circ-in{padding:4px}.circ-in{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;height:100%}.nn.circ-name,.nn.circ-name-sm{font-size:11px;font-weight:600;text-align:center;line-height:1.2;word-break:break-all}.nn.circ-name-sm{position:relative;max-width:120%;flex-shrink:0}.circ-icon-svg{flex-shrink:0}.node.sel{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.18),0 2px 8px rgba(37,99,235,.2)}.node.cs{border-color:#16a34a;box-shadow:0 0 0 3px rgba(22,163,74,.18)}#cw.wire-mode .node:hover{border-color:var(--accent);box-shadow:0 0 0 2px rgba(37,99,235,.35)}.junc-dot.sel{box-shadow:0 0 0 3px rgba(37,99,235,.35)!important}.node-in{padding:6px 10px;display:flex;flex-direction:column;gap:2px;min-height:38px;justify-content:center}.nn{font-size:13px;color:var(--text)}.nn,.nv{font-weight:600;line-height:1.3}.nv{color:var(--t2);font-family:Courier New,monospace;white-space:pre-wrap;word-break:break-all}.nv,html[lang=en] .nn:not(.circ-name):not(.circ-name-sm){font-size:11px}html[lang=en] .nv{font-size:9px}.nn[contenteditable=true],.nv[contenteditable=true]{cursor:text;outline:1.5px solid var(--accent);border-radius:3px;padding:0 2px;background:#f9f8f6}.node.grp-sel.sel{border-color:var(--bn)!important;box-shadow:0 1px 3px rgba(0,0,0,.07)!important;outline:none!important}.node.grp-sel .node-rh,.node.grp-sel .port{opacity:0!important;pointer-events:none!important}.node-rh{position:absolute;width:9px;height:9px;border-radius:2px;background:var(--surface);border:1.5px solid var(--accent);opacity:0;transition:opacity .12s;pointer-events:none;z-index:6;box-shadow:0 1px 3px rgba(0,0,0,.15)}.node.sel .node-rh{opacity:1;pointer-events:all}.node-rh.tl{top:-5px;left:-5px;cursor:nwse-resize}.node-rh.tr{top:-5px;right:-5px;cursor:nesw-resize}.node-rh.bl{bottom:-5px;left:-5px;cursor:nesw-resize}.node-rh.br{bottom:-5px;right:-5px;cursor:nwse-resize}.grp{position:absolute;border:1.25px dashed #c4c2b8;border-radius:12px;pointer-events:auto;cursor:pointer}.grp:hover{border-color:var(--t3)}.grp.sel{border-color:var(--accent);border-style:solid;border-width:1.5px}.grp-lbl{position:absolute;top:-14px;left:6px;font-size:9px;font-weight:500;color:var(--t3);letter-spacing:.05em}.grp.sel .grp-lbl{color:var(--accent)}.port{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--surface);border:1.5px solid var(--accent);cursor:crosshair;opacity:0;transition:opacity .12s;pointer-events:none;z-index:5;box-shadow:0 1px 3px rgba(0,0,0,.1)}#cw.connecting .port,.node.sel .port{opacity:1;pointer-events:all}#cw.connecting .port:hover,.node.sel .port:hover,.port.active{background:#16a34a;border-color:#16a34a}.port.t{top:-4px}.port.b,.port.t{left:50%;transform:translateX(-50%)}.port.b{bottom:-4px}.port.l{left:-4px}.port.l,.port.r{top:50%;transform:translateY(-50%)}.port.r{right:-4px}.port-tick{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--surface);border:1.5px solid var(--accent);cursor:crosshair;opacity:0;transition:opacity .12s;pointer-events:none;z-index:4}#cw.connecting .port-tick.show,.node.sel .port-tick.show{opacity:1;pointer-events:all}.port-tick:hover{background:#16a34a;border-color:#16a34a}.port-tick.t.lo{left:25%}.port-tick.t.hi,.port-tick.t.lo{top:-3px;transform:translateX(-50%)}.port-tick.t.hi{left:75%}.port-tick.b.lo{left:25%}.port-tick.b.hi,.port-tick.b.lo{bottom:-3px;transform:translateX(-50%)}.port-tick.b.hi{left:75%}.port-tick.l.lo{top:25%}.port-tick.l.hi,.port-tick.l.lo{left:-3px;transform:translateY(-50%)}.port-tick.l.hi{top:75%}.port-tick.r.lo{top:25%}.port-tick.r.hi,.port-tick.r.lo{right:-3px;transform:translateY(-50%)}.port-tick.r.hi{top:75%}.wh{pointer-events:stroke;cursor:pointer;stroke-width:14;stroke:transparent}.wh,.wv{fill:none}.wv{pointer-events:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round}.wv.sel{stroke-width:2.25;stroke-dasharray:6 4}.wpd{cursor:move}.wpd,.wsd{pointer-events:all}.wsd{cursor:pointer;opacity:.6}#sb{height:24px;background:var(--surface);border-top:1px solid var(--border);display:flex;align-items:center;padding:0 12px;gap:8px;font-size:10px;color:var(--t3);flex-shrink:0}#sm{font-weight:500;color:var(--text)}#sh{color:var(--accent)}.ep-popup{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.12);z-index:3000;width:244px;max-width:calc(100vw - 24px);max-height:calc(100vh - 20px);overflow-y:auto}.ep-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 8px;border-bottom:1px solid var(--border)}.ep-title{font-size:11px;font-weight:700;color:var(--text)}.ep-close{background:none;border:none;cursor:pointer;color:var(--t3);font-size:13px;line-height:1;padding:2px 4px}.ep-close:hover{color:var(--text)}.ep-row{display:flex;align-items:center;gap:6px}.ep-label{font-size:9px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.06em;width:72px;flex-shrink:0}.ep-input{flex:1 1;height:28px;border:1px solid var(--border);border-radius:var(--radius);padding:0 8px;font-size:12px;color:var(--text);background:var(--input-bg);font-family:inherit}.ep-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--ab)}.ep-input-sm{height:26px;font-size:11px;min-width:0;width:96px}.ep-color-swatch{width:18px;height:18px;border-radius:4px;flex-shrink:0}.ep-color-dd{position:absolute;right:0;top:24px;z-index:4000;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px;box-shadow:0 6px 20px rgba(0,0,0,.12);min-width:148px}.ep-palette-row{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:7px}.ep-swatch{width:16px;height:16px;border-radius:50%;cursor:pointer;transition:transform .1s}.ep-swatch:hover{transform:scale(1.2)}.ep-swatch.active{outline:2px solid var(--text);outline-offset:1px}.ep-custom-color{display:flex;align-items:center;gap:6px;font-size:9px;color:var(--t3);cursor:pointer}.ep-custom-color input[type=color]{width:16px;height:16px;border:none;padding:0;cursor:pointer;border-radius:50%;background:transparent}.ep-divider{height:1px;background:var(--border)}.mobile-edit-trigger{position:fixed;z-index:250;display:flex;align-items:center;justify-content:center;gap:5px;height:34px;padding:0 14px;border:none;border-radius:17px;background:var(--accent);color:#fff;font-size:12px;font-weight:600;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.25);white-space:nowrap}.mobile-edit-trigger:active{background:#1d4ed8}.lp-sub-divider{height:1px;background:var(--border);margin:0 8px}.ep-section-label{font-size:9px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.06em}.layout-dir-btn{display:flex;align-items:center;justify-content:center;gap:5px;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;color:var(--t2);font-size:11px;font-weight:500;flex:1 1;transition:all .1s}.layout-dir-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--ab)}.gap-preset-btn{height:26px;min-width:28px;padding:0 6px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:10px;color:var(--t2);cursor:pointer}.gap-preset-btn.active,.gap-preset-btn:hover{border-color:var(--accent);color:var(--accent)}.gap-preset-btn.active{background:var(--ab)}.gap-custom-input{height:26px;width:44px;border:1px solid var(--border);border-radius:var(--radius);padding:0 6px;font-size:11px;color:var(--text);background:var(--input-bg);font-family:inherit}.gap-custom-input:focus{outline:none;border-color:var(--accent)}.lp-node-row{display:flex;align-items:center;gap:6px;margin-bottom:5px}.lp-node-input{flex:1 1;height:28px;border:1px solid var(--border);border-radius:var(--radius);padding:0 8px;font-size:12px;color:var(--text);background:var(--input-bg);font-family:inherit;min-width:0;transition:all .1s}.lp-node-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--ab)}.lp-node-color-swatch{width:18px;height:18px;border-radius:4px;cursor:pointer;flex-shrink:0}.lp-node-color-swatch:hover{outline:1.5px solid var(--accent);outline-offset:1px}.lp-color-pair-row{display:flex;align-items:center;gap:6px;margin-top:3px}.lp-color-pair-label{font-size:9px;color:var(--t3)}.lp-color-split-row{display:flex;margin-top:8px;margin-bottom:8px}.lp-color-split-cell{flex:1 1;display:flex;align-items:center;gap:5px}.lp-checkbox{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:16px;height:16px;border-radius:4px;border:1.5px solid var(--border);background:var(--surface);cursor:pointer;flex-shrink:0;margin:0;position:relative;transition:background .12s,border-color .12s}.lp-checkbox:checked,.lp-checkbox:hover{border-color:var(--accent)}.lp-checkbox:checked{background:var(--accent)}.lp-checkbox:checked:after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.lp-checkbox:indeterminate{background:var(--accent);border-color:var(--accent)}.lp-checkbox:indeterminate:after{content:"";position:absolute;left:3px;top:6.5px;width:8px;height:2px;background:#fff;border-radius:1px}.lp-checkbox:disabled{opacity:.5;cursor:default}.lp-field-label{font-size:10px;font-weight:500;color:var(--t2);margin-bottom:4px}.lp-stroke-style-row{display:flex;gap:4px;margin-top:4px}.lp-stroke-style-btn{flex:1 1;height:26px;padding:0!important;font-size:11px;justify-content:center;border-radius:var(--radius)}.lp-dot-row{display:flex;gap:5px;margin-top:8px}.lp-dot-btn{height:28px;padding:0 8px!important;font-size:11px;flex:1 1;justify-content:center;border-radius:var(--radius)}.lp-swatch-gradient{background:conic-gradient(from 0deg,#ef4444,#f59e0b,#22c55e,#3b82f6,#a855f7,#ef4444)!important;cursor:pointer}.lp-shape-item{display:flex;align-items:center;gap:7px;padding:6px 8px;border-radius:5px;cursor:pointer;font-size:11px;color:var(--text)}.lp-shape-item:hover,.mpill{background:var(--muted)}.mpill{padding:2px 9px;border-radius:10px;font-size:10px;font-weight:600;color:var(--t2)}.mpill.p{background:var(--ab);color:var(--accent)}#my-diagrams-page{flex:1 1;display:flex;flex-direction:column;overflow:hidden;padding:20px 24px;background:var(--panel)}#mdp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}#mdp-save-row{display:flex;gap:8px;margin-bottom:20px}#mdp-empty{flex:1 1;display:flex;align-items:center;justify-content:center;color:var(--t3);font-size:13px}#mdp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));grid-gap:14px;gap:14px;overflow-y:auto;padding-right:4px;flex:1 1;align-content:start}.mdp-card{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}.mdp-thumb{height:100px;background:var(--panel);cursor:pointer;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border);transition:background .12s}.mdp-thumb:hover{background:var(--ab)}.mdp-thumb svg{width:100%;height:100%}.mdp-info{display:flex;flex-direction:column;gap:2px;padding:6px 6px 7px 8px}.mdp-name{font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.mdp-name:hover{color:var(--accent)}.mdp-date{font-size:10px;color:var(--t3)}.mdp-actions{display:flex;gap:2px;flex-shrink:0}[title]:hover:after{content:attr(title);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:#1a1a18;color:#fff;font-size:10px;font-weight:500;padding:4px 8px;border-radius:5px;white-space:nowrap;pointer-events:none;z-index:9999;box-shadow:0 2px 8px rgba(0,0,0,.2);line-height:1.3}[title]{position:relative}[title]:hover:before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translateX(-50%);border:4px solid transparent;border-top-color:#1a1a18;pointer-events:none;z-index:9999}.btn[title]:hover:after,.ci[title]:hover:after,.export-item[title]:hover:after,.gap-preset-btn[title]:hover:after,.layout-dir-btn[title]:hover:after,.lp-align-btn[title]:hover:after,.lp-dot-btn[title]:hover:after,.lp-end-btn[title]:hover:after,.lp-flex-btn[title]:hover:after,.lp-shape-icon-btn[title]:hover:after,.lp-shortcut-btn[title]:hover:after,.lp-stroke-style-btn[title]:hover:after,.lp-swatch[title]:hover:after,.lp-wc-edit-btn[title]:hover:after,.mode-btn[title]:hover:after{bottom:calc(100% + 8px)}.btn[title]:hover:before,.ci[title]:hover:before,.export-item[title]:hover:before,.gap-preset-btn[title]:hover:before,.layout-dir-btn[title]:hover:before,.lp-align-btn[title]:hover:before,.lp-dot-btn[title]:hover:before,.lp-end-btn[title]:hover:before,.lp-flex-btn[title]:hover:before,.lp-shape-icon-btn[title]:hover:before,.lp-shortcut-btn[title]:hover:before,.lp-stroke-style-btn[title]:hover:before,.lp-swatch[title]:hover:before,.lp-wc-edit-btn[title]:hover:before,.mode-btn[title]:hover:before{bottom:calc(100% + 4px)}.lp-swatch.active[title]:hover:after,.lp-swatch.active[title]:hover:before{display:none}.panel-toggle-btn{display:flex}#lp-backdrop{display:none}@media (min-width:769px){#lp.collapsed{width:0;min-width:0;padding:0;border-right:none;overflow:hidden}}@media (max-width:768px){#topbar{height:44px}.logo{order:2;flex:1 1;text-align:center}.account-btn-wrap,.mobile-save-btn{order:3}.mode-group,.sep,.topbar-spacer,.tr{display:none}#pan-ctl{display:flex}.account-btn-wrap>.btn,.mobile-save-btn,.panel-toggle-btn{width:38px!important;height:38px!important}.mobile-save-btn{display:flex}.account-btn-wrap>.btn svg,.panel-toggle-btn svg{width:18px;height:18px}#main{position:relative}#lp{position:absolute;top:0;left:0;bottom:0;z-index:400;width:244px!important;transform:translateX(-100%);transition:transform .2s ease;box-shadow:2px 0 16px rgba(0,0,0,.18)}#lp.open{transform:translateX(0)}#lp .lp-resize-handle{display:none}#lp-backdrop.show{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.32);z-index:399}.mobile-only-item{display:flex}.acc-menu{width:min(280px,calc(100vw - 24px))}.acc-sub-item,.export-item{min-height:38px;font-size:13px}.lp-text-input,input[type=email],input[type=number],input[type=password],input[type=text],textarea{font-size:16px!important}.export-item>svg:first-child{width:16px!important;height:16px!important}.export-hint{color:var(--accent);font-size:13px;font-weight:600}}@media (min-width:769px){.mobile-only-item{display:none}}.legal-page{height:100vh;overflow-y:auto;-webkit-user-select:text;-moz-user-select:text;user-select:text;background:var(--bg)}.legal-header{position:-webkit-sticky;position:sticky;top:0;background:var(--surface);border-bottom:1px solid var(--border);height:44px;padding:0 16px;gap:8px;z-index:10}.legal-back,.legal-header{display:flex;align-items:center}.legal-back{gap:5px;font-size:12px;color:var(--t2);text-decoration:none;font-weight:500}.legal-back:hover{color:var(--accent)}.legal-body{max-width:720px;margin:0 auto;padding:40px 20px 80px}.legal-body h1{font-size:22px;font-weight:700;margin-bottom:6px}.legal-body .legal-updated{font-size:12px;color:var(--t3);margin-bottom:8px}.legal-body .legal-notice{font-size:12px;color:#b45309;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:10px 12px;margin-bottom:28px;line-height:1.6}.legal-body h2{font-size:15px;font-weight:700;margin:28px 0 10px}.legal-body p{margin-bottom:10px}.legal-body p,.legal-body ul{font-size:13px;color:var(--t2);line-height:1.8}.legal-body ul{margin:0 0 10px 18px}.legal-body li{margin-bottom:4px}.legal-body table{width:100%;border-collapse:collapse;font-size:12px;margin:10px 0 16px}.legal-body td,.legal-body th{border:1px solid var(--border);padding:8px 10px;text-align:left;color:var(--t2)}.legal-body th{background:var(--muted);font-weight:600;color:var(--text)}