:root{--bg:#fbfaff;--bg2:#f5f2fd;--panel:#ffffffe6;--panel-solid:#fff;--border:#ebe7f5;--border-2:#ddd6ee;--text:#1c1a24;--muted:#77718a;--accent:#7c3aed;--accent-2:#8b5cf6;--accent-soft:#f3edff;--accent-line:#ddd0fb;--on-accent:#fff;--danger:#dc2626;--ok:#16a34a;--shadow:0 10px 34px -12px #3b2a7a47, 0 1px 2px #3b2a7a0f;--shadow-lg:0 24px 60px -18px #28185a59;--cv-dot:#ddd8ea;--cv-dot-major:#c4bcdb;--cv-ink:#221f2e;--cv-muted:#8d87a3;--cv-dim:#7c3aed;--glow:radial-gradient(1200px 700px at 70% 25%, #f2ecff, transparent 70%);--hit:36px;--chip:30px;--r:16px;--font:Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#111017;--bg2:#1d1c26;--panel:#1b1a23e6;--panel-solid:#1c1b24;--border:#2c2a38;--border-2:#3a3749;--text:#ecebf3;--muted:#9a95ad;--accent:#8b5cf6;--accent-2:#a78bfa;--accent-soft:#8b5cf629;--accent-line:#8b5cf661;--danger:#f87171;--ok:#4ade80;--shadow:0 12px 34px -12px #000000b3, 0 1px 2px #0006;--shadow-lg:0 24px 60px -18px #000c;--cv-dot:#2b2938;--cv-dot-major:#3f3c52;--cv-ink:#e3e0f0;--cv-muted:#827d97;--cv-dim:#b99cff;--glow:radial-gradient(1200px 700px at 70% 25%, #1c1630, transparent 70%);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (pointer:coarse){:root{--hit:44px;--chip:38px}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0}html,body{overscroll-behavior:none;height:100%;overflow:hidden}body{font-family:var(--font);color:var(--text);background:var(--glow), var(--bg);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;font-size:13.5px}input,textarea,select{-webkit-user-select:text;user-select:text;font:inherit;color:inherit}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0}button:disabled{opacity:.38;cursor:default}kbd{font:500 11px var(--font);background:var(--bg2);border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:6px;padding:2px 6px}.ic{flex-shrink:0;display:block}#cv{touch-action:none;cursor:default;display:block;position:fixed;inset:0}body.tool-active #cv{cursor:crosshair}body.panning #cv{cursor:grabbing}.card{background:var(--panel);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow)}.ib{width:var(--hit);height:var(--hit);color:var(--muted);border-radius:10px;flex-shrink:0;place-items:center;transition:background .15s,color .15s;display:grid}.ib:hover:not(:disabled){background:var(--bg2);color:var(--text)}.ib.sm{width:calc(var(--hit) - 6px);height:calc(var(--hit) - 6px)}.ib.on{background:var(--accent);color:var(--on-accent)}.ib.on:hover{background:var(--accent-2);color:var(--on-accent)}.chip{height:var(--chip);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:0 11px;font-size:12.5px;transition:background .15s,color .15s;display:inline-flex}.chip:hover{background:var(--bg2);color:var(--text)}.chip.on{background:var(--accent-soft);color:var(--accent);font-weight:500}.chip.primary{background:var(--accent);color:var(--on-accent);font-weight:600}.btn{background:var(--bg2);border:1px solid var(--border);border-radius:12px;height:40px;padding:0 18px;font-weight:600}.btn.primary{background:var(--accent);color:var(--on-accent);box-shadow:0 6px 16px -6px var(--accent);border-color:#0000}.btn.danger{color:var(--danger)}.btn.primary.danger{background:var(--danger);color:#fff;box-shadow:none}.btn-text{color:var(--accent);padding:4px 6px;font-weight:600}.cmd{top:calc(14px + var(--sat));z-index:20;border-radius:26px;align-items:center;gap:6px;width:max-content;height:52px;padding:0 7px;transition:left .25s;display:flex;position:fixed;left:50%;transform:translate(-50%)}.logo{color:#fff;background:conic-gradient(from 200deg,#a78bfa,#7c3aed,#c084fc,#a78bfa);border-radius:50%;flex-shrink:0;place-items:center;width:38px;height:38px;display:grid;box-shadow:0 4px 12px -4px #7c3aed}.fn{white-space:nowrap;border-radius:10px;align-items:center;gap:4px;max-width:240px;height:38px;padding:0 6px;font-weight:600;display:flex}.fn #pname{text-overflow:ellipsis;overflow:hidden}.fn:hover{background:var(--bg2)}.vs{background:var(--border);flex-shrink:0;width:1px;height:24px}.search{background:var(--bg2);width:320px;height:38px;color:var(--muted);border-radius:19px;flex-shrink:1;align-items:center;gap:9px;min-width:0;padding:0 8px 0 13px;display:flex}.search-t{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.search kbd{background:var(--panel-solid)}.pbtn{background:var(--accent);height:38px;color:var(--on-accent);box-shadow:0 6px 16px -6px var(--accent);border-radius:19px;flex-shrink:0;align-items:center;gap:7px;padding:0 16px;font-weight:600;display:flex}.hint{top:calc(76px + var(--sat));z-index:19;opacity:0;pointer-events:none;border-radius:22px;flex-wrap:wrap;align-items:center;gap:4px 10px;width:max-content;max-width:calc(100vw - 28px);min-height:44px;padding:4px 6px 4px 12px;transition:opacity .18s,transform .18s,left .25s;display:flex;position:fixed;left:50%;transform:translate(-50%,-6px)}.hint.show{opacity:1;pointer-events:auto;transform:translate(-50%)}.h-tool{color:var(--accent);white-space:nowrap;align-items:center;gap:7px;display:flex}.h-tool b{color:var(--text);font-weight:600}.h-ic{color:var(--accent)}.h-txt{color:var(--muted);font-size:12.5px}.h-txt b{color:var(--text);font-weight:600}.h-in{align-items:center;gap:6px;display:flex}.h-in:empty,.h-act:empty{display:none}.h-field{background:var(--bg2);border:1px solid var(--border);border-radius:10px;align-items:center;gap:6px;height:34px;padding:0 10px;display:flex}.h-field:focus-within{border-color:var(--accent);background:var(--panel-solid)}.h-field span{color:var(--muted);font-size:11.5px}.h-field input{width:68px;font:500 13px var(--mono);text-align:right;background:0 0;border:0;outline:none}.h-field i{color:var(--muted);font-size:11px;font-style:normal}.h-ok{width:34px;height:34px}.h-act{gap:4px;display:flex}.props{top:calc(78px + var(--sat));right:calc(14px + var(--sar));width:296px;max-height:calc(100% - 78px - 196px - var(--sat) - var(--sab));z-index:18;opacity:0;pointer-events:none;touch-action:pan-y;background:var(--panel-solid);z-index:22;padding-bottom:6px;transition:opacity .18s,transform .18s;position:fixed;overflow-y:auto;transform:translate(12px)}.props.show{opacity:1;pointer-events:auto;transform:none}.p-head{background:var(--panel-solid);z-index:1;align-items:center;gap:10px;padding:12px 8px 8px 14px;display:flex;position:sticky;top:0}.p-title{flex:1;min-width:0}.p-title b{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;display:block;overflow:hidden}.p-title small{color:var(--muted);font-size:11.5px}.p-actions{border-bottom:1px solid var(--border);gap:2px;padding:0 8px 8px;display:flex}.p-actions .ib:last-child{margin-left:auto}.p-sec{border-bottom:1px solid var(--border);padding:0 14px}.p-sec:last-child{border-bottom:0}.p-sec summary{cursor:pointer;justify-content:space-between;align-items:center;height:42px;font-size:12.5px;font-weight:600;list-style:none;display:flex}.p-sec summary::-webkit-details-marker{display:none}.p-sec summary .ic{color:var(--muted);transition:transform .2s}.p-sec:not([open]) summary .ic{transform:rotate(-90deg)}.p-sec[open]{padding-bottom:12px}.p-row{grid-template-columns:84px 1fr;align-items:center;gap:8px;min-height:36px;margin-bottom:6px;display:grid}.p-l{color:var(--muted);font-size:12px}.p-num,.p-txt,.p-sel,.p-area{background:var(--bg2);border:1px solid var(--border);border-radius:9px;outline:none;align-items:center;gap:6px;width:100%;min-width:0;height:34px;padding:0 9px;display:flex}@media (pointer:coarse){.p-num,.p-txt,.p-sel{height:40px}}.p-num:focus-within,.p-txt:focus,.p-sel:focus,.p-area:focus{border-color:var(--accent);background:var(--panel-solid)}.p-num input{width:100%;min-width:0;font:500 12.5px var(--mono);background:0 0;border:0;outline:none}.p-num i{color:var(--muted);font-size:11px;font-style:normal}.p-sel{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 14px),calc(100% - 9px);background-repeat:no-repeat;background-size:5px 5px;padding-right:22px;font-size:12.5px}.p-area{resize:vertical;height:auto;margin-bottom:8px;padding:8px 9px;display:block}.p-pair{grid-template-columns:1fr 1fr;gap:6px;min-width:0;display:grid}.p-lab{min-width:0;position:relative}.p-lab small{color:var(--muted);pointer-events:none;font-size:11px;position:absolute;top:50%;left:9px;transform:translateY(-50%)}.p-lab .p-num{padding-left:26px}.p-val{font:500 12.5px var(--mono)}.p-colors{flex-wrap:wrap;gap:6px;display:flex}.p-col{border:1px solid var(--border-2);width:24px;height:24px;color:var(--muted);background:var(--bg2);border-radius:50%;place-items:center;display:grid}@media (pointer:coarse){.p-col{width:30px;height:30px}}.p-col.on{box-shadow:0 0 0 2px var(--panel-solid), 0 0 0 4px var(--accent)}.p-chips{flex-wrap:wrap;gap:4px;display:flex}.p-chips .chip{background:var(--bg2);height:28px}.segc{background:var(--bg2);border:1px solid var(--border);border-radius:11px;gap:2px;min-width:0;padding:3px;display:flex}.segc.sm .seg-i{height:28px;padding:0 6px;font-size:12px}.seg-i{height:32px;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;border-radius:8px;flex:1;min-width:0;font-weight:500;overflow:hidden}.seg-i.on{background:var(--panel-solid);color:var(--accent);box-shadow:0 1px 3px #0000001f}@media (pointer:coarse){.segc.sm .seg-i{height:34px}}.snapbar{left:calc(14px + var(--sal));bottom:calc(14px + var(--sab));z-index:18;border-radius:25px;align-items:center;gap:3px;height:50px;padding:0 7px 0 6px;transition:left .25s;display:flex;position:fixed}.toolbtn{background:var(--accent);width:38px;height:38px;color:var(--on-accent);box-shadow:0 5px 14px -5px var(--accent);border-radius:50%;flex-shrink:0;place-items:center;margin-right:4px;display:grid}.ldot-s{border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.layer-chip{color:var(--text)}.coords{font:500 11.5px var(--mono);color:var(--muted);white-space:pre;min-width:138px;padding:0 6px}.mm{right:calc(14px + var(--sar));bottom:calc(14px + var(--sab));z-index:18;width:208px;padding:8px;position:fixed}.mm canvas{background:var(--bg2);cursor:pointer;touch-action:none;border-radius:9px;width:100%;height:108px;display:block}.mm .z{justify-content:space-between;align-items:center;padding-top:6px;display:flex}.zpct{white-space:nowrap;border-radius:8px;min-width:64px;padding:4px 8px;font-size:12.5px;font-weight:600}.zpct:hover{background:var(--bg2)}.radial{z-index:50;touch-action:none;display:none;position:fixed;inset:0}.radial.open{animation:.14s ease-out rIn;display:block}@keyframes rIn{0%{opacity:0;transform:scale(.96)}}.r-svg{filter:drop-shadow(0 16px 30px #28185a47);position:absolute;inset:0}.r-seg,.r-sub,.r-center{fill:var(--panel-solid);stroke:var(--border);stroke-width:1px;cursor:pointer;transition:fill .1s}.r-seg.hot,.r-sub.hot,.r-center:hover{fill:var(--accent-soft);stroke:var(--accent-line)}.r-seg.cur,.r-sub.cur,.r-center.cur{fill:var(--accent);stroke:var(--accent)}.r-sub{fill:var(--panel-solid)}.r-lab{color:var(--text);pointer-events:none;text-align:center;white-space:nowrap;flex-direction:column;align-items:center;gap:3px;font-size:11px;font-weight:500;display:flex;position:absolute;transform:translate(-50%,-50%)}.r-lab .ic{color:var(--muted)}.r-lab.hot .ic{color:var(--accent)}.r-lab.cur,.r-lab.cur .ic{color:var(--on-accent)}.r-lab.sub{font-size:10.5px}.r-lab.sub .ic{color:var(--accent)}.r-lab.sub.cur .ic{color:var(--on-accent)}.r-lab.center .ic{color:var(--accent)}.r-lab.center.cur .ic{color:var(--on-accent)}.r-more{opacity:.45;background:currentColor;border-radius:50%;width:4px;height:4px;position:absolute;bottom:-7px}.menu{z-index:60;min-width:230px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);box-shadow:var(--shadow-lg);background:var(--panel-solid);border-radius:14px;padding:6px;animation:.12s ease-out mIn;position:fixed;overflow-y:auto}@keyframes mIn{0%{opacity:0;transform:translateY(-4px)}}.menu-h{letter-spacing:.07em;text-transform:uppercase;color:var(--muted);padding:8px 10px 4px;font-size:10.5px;font-weight:600}.menu-sep{background:var(--border);height:1px;margin:5px 4px}.menu-i{text-align:left;border-radius:9px;align-items:center;gap:10px;width:100%;height:36px;padding:0 10px;display:flex}@media (pointer:coarse){.menu-i{height:44px}}.menu-i:hover:not(:disabled){background:var(--bg2)}.menu-i .ic{color:var(--muted)}.menu-i.on,.menu-i.on .ic{color:var(--accent)}.menu-i.danger,.menu-i.danger .ic{color:var(--danger)}.menu-l{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.ic-sp{width:17px}.modal-back{z-index:70;-webkit-backdrop-filter:blur(3px);touch-action:auto;background:#140e2852;justify-content:center;align-items:center;padding:12px;animation:.15s ease-out fIn;display:flex;position:fixed;inset:0}.modal-back.out{opacity:0;transition:opacity .15s}@keyframes fIn{0%{opacity:0}}.modal{background:var(--panel-solid);width:min(480px,100%);max-height:calc(100% - 24px);box-shadow:var(--shadow-lg);touch-action:pan-y;border-radius:22px;animation:.18s ease-out dIn;overflow-y:auto}.modal.wide{width:min(640px,100%)}@keyframes dIn{0%{opacity:0;transform:translateY(10px)scale(.98)}}.modal-h{justify-content:space-between;align-items:center;padding:16px 12px 6px 22px;display:flex}.modal-h h2{font-size:17px;font-weight:650}.modal-b{padding:8px 22px 18px}.modal-b p.muted{color:var(--muted);line-height:1.5}.modal-f{justify-content:flex-end;gap:8px;padding:0 22px 20px;display:flex}.form{grid-template-columns:1fr 1fr;gap:14px;display:grid}.f-row{flex-direction:column;gap:6px;min-width:0;display:flex}.f-row.full{grid-column:1/-1}.f-row.tog{flex-direction:row;grid-column:1/-1;justify-content:space-between;align-items:center}.f-l{color:var(--muted);font-size:12px;font-weight:500}.f-h{color:var(--muted);font-size:11.5px;line-height:1.45}.inp{background:var(--bg2);border:1px solid var(--border);border-radius:11px;outline:none;width:100%;height:42px;padding:0 12px}.inp:focus{border-color:var(--accent);background:var(--panel-solid)}.switch{appearance:none;background:var(--border-2);cursor:pointer;border-radius:14px;flex-shrink:0;width:46px;height:28px;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0000004d}.switch:checked{background:var(--accent)}.switch:checked:after{transform:translate(18px)}.pal-back{align-items:flex-start;padding-top:max(10vh,20px)}.palette{background:var(--panel-solid);width:min(580px,100%);box-shadow:var(--shadow-lg);border-radius:20px;animation:.16s ease-out dIn;overflow:hidden}.pal-top{border-bottom:1px solid var(--border);height:58px;color:var(--muted);align-items:center;gap:10px;padding:0 14px;display:flex}.pal-in{color:var(--text);background:0 0;border:0;outline:none;flex:1;height:100%;font-size:15.5px}.pal-list{touch-action:pan-y;max-height:min(56vh,520px);padding:6px;overflow-y:auto}.pal-g{letter-spacing:.07em;text-transform:uppercase;color:var(--muted);padding:10px 10px 4px;font-size:10.5px;font-weight:600}.pal-i{text-align:left;border-radius:10px;align-items:center;gap:12px;width:100%;height:40px;padding:0 10px;display:flex}@media (pointer:coarse){.pal-i{height:46px}}.pal-i span{flex:1}.pal-i .ic{color:var(--muted)}.pal-i.on{background:var(--accent-soft)}.pal-i.on .ic,.pal-i.on span{color:var(--accent)}.pal-empty{text-align:center;color:var(--muted);padding:26px}.layers,.projects{flex-direction:column;gap:4px;display:flex}.lrow,.prow{border:1px solid #0000;border-radius:12px;align-items:center;gap:8px;padding:5px 6px;display:flex}.lrow.on,.prow.on{background:var(--accent-soft);border-color:var(--accent-line)}.ldot{border:2px solid var(--panel-solid);width:20px;height:20px;box-shadow:0 0 0 1px var(--border-2);border-radius:50%;flex-shrink:0;margin-left:4px}.lname,.pname{text-align:left;flex-direction:column;flex:1;gap:1px;min-width:0;padding:4px 2px;display:flex}.lname b,.pname b{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.lname small,.pname small{color:var(--muted);font-size:11.5px}.pic{background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:10px;flex-shrink:0;place-items:center;display:grid}.add-row{height:42px;color:var(--accent);border-radius:12px;align-items:center;gap:8px;padding:0 12px;font-weight:600;display:flex}.add-row:hover{background:var(--accent-soft)}.kbd-list{flex-direction:column;display:flex}.kbd-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:9px 0;display:flex}.kbd-row:last-child{border-bottom:0}.kbd-row kbd{white-space:normal;text-align:right}.toasts{left:50%;bottom:calc(84px + var(--sab));z-index:80;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:max-content;max-width:calc(100vw - 24px);display:flex;position:fixed;transform:translate(-50%)}.toast{pointer-events:auto;background:var(--panel-solid);box-shadow:var(--shadow-lg);border-radius:14px;align-items:center;gap:12px;padding:10px 14px 10px 16px;line-height:1.4;transition:opacity .3s,transform .3s;animation:.2s ease-out tIn;display:flex}.toast.out{opacity:0;transform:translateY(6px)}@keyframes tIn{0%{opacity:0;transform:translateY(8px)}}.txt-edit{z-index:40;border-color:var(--accent);border-radius:14px;align-items:center;gap:6px;padding:5px 5px 5px 12px;display:flex;position:fixed}.txt-edit input{min-width:220px;height:36px;font-family:var(--font);background:0 0;border:0;outline:none}.fab,.dial,.dial-back{display:none}@media (width<=1180px){.search{width:230px}}@media (width<=980px){.search{justify-content:center;width:38px;padding:0}.search-t,.search kbd{display:none}}@media (width<=760px){.coords{display:none}}@media (width<=700px){.hide-s{display:none!important}.mm{display:none}}@media (width<=600px){.hide-xs{display:none!important}.cmd{left:calc(10px + var(--sal));right:calc(10px + var(--sar));width:auto;top:calc(10px + var(--sat));justify-content:space-between;transform:none}.fn{flex:1;justify-content:center;max-width:none}.hint{top:calc(70px + var(--sat));border-radius:18px;width:auto;max-width:none;left:10px;right:10px;transform:translateY(-6px)}.hint.show{transform:none}.hint:not(.tip) .h-txt{flex-basis:100%;order:5;padding-bottom:2px}.hint.tip{flex-wrap:nowrap}.snapbar{left:calc(12px + var(--sal));bottom:calc(24px + var(--sab));height:48px;padding:0 5px}.snapbar .chip span:not(:only-child){display:none}.snapbar .chip{padding:0 9px}.toolbtn{display:none}.props{width:auto;max-height:56vh;padding-bottom:calc(10px + var(--sab));z-index:30;border-radius:22px 22px 0 0;inset:auto 0 0;transform:translateY(20px)}.props.show{transform:none}.fab{right:calc(16px + var(--sar));bottom:calc(18px + var(--sab));background:var(--accent);width:60px;height:60px;color:var(--on-accent);box-shadow:0 12px 26px -8px var(--accent);z-index:32;border-radius:50%;place-items:center;display:grid;position:fixed}body.dial-open .dial{display:flex}body.dial-open .dial-back{display:block}.dial{right:calc(20px + var(--sar));bottom:calc(92px + var(--sab));z-index:31;flex-direction:column;align-items:flex-end;gap:9px;max-height:calc(100vh - 180px);padding:4px;position:fixed;overflow-y:auto}.dial-i{align-items:center;gap:12px;animation:.16s ease-out tIn;display:flex}.dial-i b{background:var(--panel-solid);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;padding:7px 12px;font-weight:600}.dial-i span{background:var(--panel-solid);border:1px solid var(--border);width:50px;height:50px;color:var(--muted);box-shadow:var(--shadow);border-radius:50%;place-items:center;display:grid}.dial-i.on span{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.dial-i.on b{color:var(--accent)}.dial-back{z-index:30;background:linear-gradient(90deg, transparent 10%, var(--bg) 85%);opacity:.92;position:fixed;inset:0}.toasts{bottom:calc(96px + var(--sab))}.form{grid-template-columns:1fr}.modal{border-radius:20px}}
