@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--brand: #2563eb;--brand-ink: #fff;--brand-soft: color-mix(in srgb, var(--brand) 10%, white);--bg: #f4f5f7;--panel: #ffffff;--ink: #0f172a;--ink-2: #334155;--muted: #64748b;--line: #e2e6ec;--line-2: #cfd5dd;--hover: #f1f3f6;--err: #dc2626;--err-soft: #fef2f2;--warn: #b45309;--warn-soft: #fffbeb;--info: #2563eb;--info-soft: #eff6ff;--ok: #15803d;--radius: 10px;--shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 4px 16px rgba(15, 23, 42, .06);--shadow-lg: 0 10px 40px rgba(15, 23, 42, .18);font-family:Inter Variable,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{overscroll-behavior:none}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--brand)}h1,h2,h3{margin:0;letter-spacing:-.01em}.muted{color:var(--muted)}.small{font-size:12px}.row{display:flex;align-items:center;gap:8px}.grow{flex:1;min-width:0}.stack{display:flex;flex-direction:column;gap:12px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 12px;border-radius:8px;border:1px solid var(--line-2);background:#fff;cursor:pointer;font-weight:500;white-space:nowrap;transition:background .12s,border-color .12s,box-shadow .12s}.btn:hover{background:var(--hover)}.btn:focus-visible,.icon-btn:focus-visible,.tab:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.btn.primary:hover{filter:brightness(1.06)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--hover)}.btn.danger{color:var(--err)}.btn.sm{height:28px;padding:0 9px;font-size:13px}.btn.lg{height:42px;padding:0 18px;font-size:15px}.icon-btn{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:8px;border:0;background:transparent;cursor:pointer;color:var(--ink-2)}.icon-btn:hover{background:var(--hover);color:var(--ink)}.icon-btn[aria-pressed=true]{background:var(--brand-soft);color:var(--brand)}.icon-btn:disabled{opacity:.35;cursor:default;background:transparent}.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);font-weight:500;min-width:0}.input,.select,.field input,.field select,.field textarea{height:34px;padding:0 10px;border:1px solid var(--line-2);border-radius:8px;background:#fff;color:var(--ink);font-size:14px;font-weight:400;min-width:0;width:100%}.field textarea{height:auto;padding:8px 10px;resize:vertical}.input:focus,.select:focus,.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2);cursor:pointer}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.badge{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px;border-radius:999px;font-size:11.5px;font-weight:600;background:var(--hover);color:var(--ink-2)}.badge.err{background:var(--err-soft);color:var(--err)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.ok{background:#f0fdf4;color:var(--ok)}.banner{padding:9px 14px;font-size:13px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line);background:var(--warn-soft);color:#7c2d12}.banner.err{background:var(--err-soft);color:#7f1d1d}.banner.info{background:var(--info-soft);color:#1e3a8a}.empty{padding:28px 16px;text-align:center;color:var(--muted);font-size:13px}.kbd{font-size:11px;padding:1px 5px;border-radius:4px;border:1px solid var(--line-2);background:#fff;color:var(--muted)}.app{display:flex;flex-direction:column;height:100%}.topnav{height:56px;display:flex;align-items:center;gap:16px;padding:0 20px;background:#fff;border-bottom:1px solid var(--line)}.logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;color:var(--ink);text-decoration:none}.logo img{max-height:30px;max-width:120px;object-fit:contain}.logo-mark{width:28px;height:28px;border-radius:8px;background:var(--brand);display:grid;place-items:center;color:#fff}.nav-links{display:flex;gap:2px}.nav-links a{padding:7px 12px;border-radius:8px;color:var(--ink-2);text-decoration:none;font-weight:500;display:flex;gap:7px;align-items:center}.nav-links a:hover{background:var(--hover)}.nav-links a[aria-current=page]{background:var(--brand-soft);color:var(--brand)}.page{flex:1;overflow:auto}.page-inner{max-width:1120px;margin:0 auto;padding:32px 24px 64px}.page-head{display:flex;align-items:flex-end;gap:16px;margin-bottom:24px;flex-wrap:wrap}.page-head h1{font-size:26px}.proj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.proj{padding:18px;display:flex;flex-direction:column;gap:10px;cursor:pointer;transition:transform .12s,box-shadow .12s;text-align:left}.proj:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.proj h3{font-size:16px}.proj .meta{display:flex;gap:6px;flex-wrap:wrap}.proj .thumb{height:92px;border-radius:8px;background:linear-gradient(135deg,var(--brand-soft),#fff);border:1px solid var(--line);display:grid;place-items:center;color:var(--brand)}.auth{min-height:100%;display:grid;grid-template-columns:1.1fr 1fr}.auth-hero{background:radial-gradient(1200px 600px at -10% -10%,#1d4ed8,#0f172a 60%);color:#e2e8f0;padding:56px;display:flex;flex-direction:column;justify-content:space-between}.auth-hero h1{font-size:40px;line-height:1.1;color:#fff;max-width:520px}.auth-hero ul{list-style:none;padding:0;margin:28px 0 0;display:grid;gap:12px}.auth-hero li{display:flex;gap:10px;align-items:center}.auth-form{display:grid;place-items:center;padding:32px 20px}.auth-form form{width:100%;max-width:380px;display:flex;flex-direction:column;gap:14px}.form-error{color:var(--err);font-size:13px;background:var(--err-soft);padding:8px 10px;border-radius:8px}@media(max-width:860px){.auth{grid-template-columns:1fr}.auth-hero{padding:32px 20px}.auth-hero h1{font-size:28px}}.editor{display:grid;grid-template-rows:52px auto 1fr;height:100%;background:var(--bg)}.ed-top{display:flex;align-items:center;gap:10px;padding:0 12px;background:#fff;border-bottom:1px solid var(--line);min-width:0}.ed-title{font-weight:650;font-size:15px;border:1px solid transparent;border-radius:6px;padding:4px 6px;background:transparent;min-width:80px;max-width:320px}.ed-title:hover{border-color:var(--line)}.ed-title:focus{outline:none;border-color:var(--brand)}.save-state{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:5px;white-space:nowrap}.tabs{display:flex;background:var(--hover);padding:3px;border-radius:9px;gap:2px}.tab{border:0;background:transparent;padding:5px 12px;border-radius:7px;cursor:pointer;font-weight:500;color:var(--ink-2);display:flex;gap:6px;align-items:center;font-size:13px}.tab[aria-selected=true]{background:#fff;color:var(--ink);box-shadow:0 1px 2px #00000014}.sep{width:1px;height:24px;background:var(--line)}.ed-body{display:grid;grid-template-columns:56px 300px 1fr 330px;min-height:0}.ed-body.no-inspector{grid-template-columns:56px 300px 1fr}.rail{background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;padding:8px 0;gap:4px}.rail button{width:44px;height:48px;border:0;background:transparent;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;color:var(--muted);cursor:pointer;font-weight:500}.rail button:hover{background:var(--hover);color:var(--ink)}.rail button[aria-pressed=true]{background:var(--brand-soft);color:var(--brand)}.side{background:#fff;border-right:1px solid var(--line);overflow:auto;min-height:0}.side-head{position:sticky;top:0;z-index:2;background:#fff;padding:14px 14px 10px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line)}.side-head h2{font-size:14px;flex:1}.side-sec{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:10px}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:650}.inspector{background:#fff;border-left:1px solid var(--line);overflow:auto;min-height:0}.clist{list-style:none;margin:0;padding:6px}.citem{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;cursor:pointer;border:1px solid transparent}.citem:hover{background:var(--hover)}.citem[aria-selected=true]{background:var(--brand-soft);border-color:color-mix(in srgb,var(--brand) 30%,white)}.citem.drop-before{box-shadow:inset 0 2px 0 var(--brand)}.citem .letter{width:30px;height:26px;border-radius:6px;background:var(--hover);display:grid;place-items:center;font-weight:700;font-size:12.5px;flex:none}.citem[aria-selected=true] .letter{background:var(--brand);color:#fff}.citem .name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.citem .sub{font-size:11.5px;color:var(--muted)}.grip{color:#a3acb9;cursor:grab;display:grid;place-items:center}.dot{width:8px;height:8px;border-radius:50%;flex:none}.dot.err{background:var(--err)}.dot.warn{background:#f59e0b}.rcd-group{padding:8px 8px 2px;font-size:11.5px;color:var(--muted);font-weight:600;display:flex;gap:6px;align-items:center}.sym-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.sym{border:1px solid var(--line);border-radius:9px;background:#fff;padding:6px 4px 5px;display:flex;flex-direction:column;align-items:center;gap:3px;cursor:grab;font-size:10.5px;color:var(--ink-2);text-align:center;line-height:1.2;min-height:74px}.sym:hover{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.sym svg{width:46px;height:34px}.workspace{position:relative;overflow:hidden;min-width:0;min-height:0;background:#e9ecf0;background-image:radial-gradient(#d3d8df 1px,transparent 1px);background-size:20px 20px;touch-action:none}.workspace.panning{cursor:grabbing}.canvas{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}.sheet{background:#fff;box-shadow:0 2px 6px #00000014,0 12px 32px #0f172a1a;margin-bottom:28px;display:block}.sheet svg{display:block}.ws-tools{position:absolute;right:14px;bottom:14px;display:flex;gap:2px;background:#fff;border-radius:10px;box-shadow:var(--shadow);padding:3px;align-items:center;z-index:5}.ws-tools .z{min-width:46px;text-align:center;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.ws-float{position:absolute;left:14px;top:14px;display:flex;gap:4px;background:#fff;border-radius:10px;box-shadow:var(--shadow);padding:4px;z-index:5;align-items:center;flex-wrap:wrap;max-width:calc(100% - 28px)}.ws-hint{position:absolute;left:50%;bottom:16px;transform:translate(-50%);background:#0f172a;color:#fff;padding:7px 12px;border-radius:8px;font-size:12.5px;z-index:5;box-shadow:var(--shadow-lg)}.tray{position:absolute;left:14px;bottom:14px;top:64px;width:230px;background:#fff;border-radius:12px;box-shadow:var(--shadow);z-index:4;display:flex;flex-direction:column;overflow:hidden}.tray-head{padding:10px 12px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:6px;font-weight:600;font-size:13px}.tray-list{overflow:auto;padding:6px;display:flex;flex-direction:column;gap:3px}.chip{display:flex;align-items:center;gap:8px;padding:5px 7px;border-radius:8px;border:1px solid var(--line);background:#fff;cursor:grab;font-size:12px;text-align:left}.chip:hover{border-color:var(--brand)}.chip[aria-pressed=true]{border-color:var(--brand);background:var(--brand-soft)}.chip svg{width:30px;height:22px;flex:none}.chip b{font-size:12px}.insp-head{padding:14px;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center}.insp-head .letter{width:38px;height:34px;border-radius:8px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:750}.insp-sec{padding:14px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:10px}.pt{border:1px solid var(--line);border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:8px;background:#fff}.pt[aria-selected=true]{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.pt-row{display:flex;align-items:center;gap:6px}.pt-row svg.symprev{width:34px;height:26px;flex:none}.issues{display:flex;flex-direction:column;gap:6px}.issue{display:flex;gap:8px;padding:8px 10px;border-radius:8px;font-size:12.5px;line-height:1.35;align-items:flex-start;cursor:pointer;border:1px solid transparent;text-align:left;background:none;width:100%}.issue.err{background:var(--err-soft);color:#991b1b}.issue.warn{background:var(--warn-soft);color:#92400e}.issue.info{background:var(--info-soft);color:#1e40af}.issue:hover{border-color:currentColor}.menu{position:fixed;z-index:50;background:#fff;border-radius:10px;box-shadow:var(--shadow-lg);border:1px solid var(--line);padding:5px;min-width:210px}.menu button{display:flex;width:100%;align-items:center;gap:9px;border:0;background:none;padding:7px 9px;border-radius:6px;cursor:pointer;font-size:13px;text-align:left}.menu button:hover{background:var(--hover)}.menu button.danger{color:var(--err)}.menu hr{border:0;border-top:1px solid var(--line);margin:4px 0}.menu .label{padding:6px 9px 3px;font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.overlay{position:fixed;inset:0;background:#0f172a59;z-index:40;display:grid;place-items:center;padding:16px}.modal{background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);width:100%;max-width:480px;max-height:90vh;overflow:auto}.modal-head{padding:18px 20px 6px;display:flex;align-items:center}.modal-head h2{font-size:18px;flex:1}.modal-body{padding:10px 20px 20px;display:flex;flex-direction:column;gap:12px}.drawer{position:absolute;right:0;top:0;bottom:0;width:380px;background:#fff;box-shadow:var(--shadow-lg);z-index:30;display:flex;flex-direction:column}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:#0f172a;color:#fff;padding:10px 16px;border-radius:10px;z-index:60;box-shadow:var(--shadow-lg);font-size:13px}.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.plan{padding:24px;display:flex;flex-direction:column;gap:14px}.plan.current{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.plan .price{font-size:28px;font-weight:750;letter-spacing:-.02em}.plan ul{margin:0;padding:0;list-style:none;display:grid;gap:8px}.plan li{display:flex;gap:8px;align-items:center;font-size:13.5px}.ctable{width:100%;border-collapse:collapse;font-size:13px;background:#fff}.ctable th{text-align:left;font-size:11.5px;color:var(--muted);font-weight:600;padding:9px 10px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff}.ctable td{padding:8px 10px;border-bottom:1px solid var(--line)}.ctable tr{cursor:pointer}.ctable tr:hover td{background:var(--hover)}.ctable tr[aria-selected=true] td{background:var(--brand-soft)}@media(max-width:1280px){.ed-body{grid-template-columns:56px 260px 1fr 300px}}@media(max-width:1020px){.ed-body,.ed-body.no-inspector{grid-template-columns:56px 1fr}.ed-body .side{display:none}.ed-body.panel-open .side{display:block;position:absolute;left:56px;top:0;bottom:0;width:300px;z-index:20;box-shadow:var(--shadow-lg)}.inspector{position:absolute;right:0;top:0;bottom:0;width:min(340px,100%);z-index:25;box-shadow:var(--shadow-lg)}.ed-body{position:relative}.hide-md{display:none!important}}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
