.app{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden}.canvas{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto;background:#fafaf7;cursor:default}.canvas--placement-mode,.canvas--placement-mode .canvas-inner{cursor:crosshair}.canvas-inner{position:relative;width:6000px;height:4000px}.formula{position:absolute;display:flex;flex-direction:row;align-items:center;gap:4px;white-space:nowrap}.element{position:relative;display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 8px;font-size:22px;font-family:JetBrains Mono,SF Mono,Menlo,Consolas,monospace;line-height:1;color:#2a2a2a;background:transparent;border:2px solid transparent;border-radius:10px;white-space:nowrap;cursor:pointer;transition:border-color .08s,background .08s;-webkit-user-select:none;user-select:none}.element--multi-selected,.label--multi-selected{border-color:#2563eb;background:color-mix(in srgb,#2563eb 10%,transparent)}.element--empty{min-width:14px;width:14px;padding:0}.element--selected{border-color:transparent;background:#c5e8c0}.element--selected.element--ref{border-color:var(--formula-color, #2a2a2a);background:color-mix(in srgb,var(--formula-color, currentColor) 22%,transparent);color:var(--formula-color, currentColor)!important;font-weight:700}.element--inline-cursor:after{content:"";display:inline-block;width:1.5px;height:22px;background:#2a2a2a;margin-left:2px;animation:blink 1s steps(2,end) infinite}@keyframes blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.element--op,.element--paren{color:#4a4a4a}.element--equals{color:#2a2a2a;font-weight:600}.element--ref{font-weight:500;border-color:currentColor}.result{position:relative;display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 8px;margin-left:4px;font-size:22px;font-family:JetBrains Mono,SF Mono,Menlo,Consolas,monospace;line-height:1;font-weight:400;border:1px solid transparent;border-radius:10px;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.result--unselected-highlighted{font-weight:400}.result--source-highlighted{border-color:var(--formula-color, currentColor);background:transparent}.result--selected{border-color:var(--formula-color, currentColor);background:color-mix(in srgb,var(--formula-color, currentColor) 22%,transparent);color:var(--formula-color, currentColor)!important;font-weight:400}.result--error{font-weight:400;font-size:16px;font-style:italic}.label{position:absolute;display:inline-block;padding:6px 10px;font-size:18px;line-height:1.4;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;color:#4a4a4a;background:transparent;border:1.5px dashed transparent;border-radius:4px;cursor:text;-webkit-user-select:none;user-select:none;white-space:pre-wrap;max-width:480px;transition:background .1s,border-color .1s,box-shadow .1s}.font--standard{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif}.font--caveat{font-family:Caveat,Comic Sans MS,Songti SC,cursive}.font--kalam{font-family:Kalam,Comic Sans MS,Songti SC,cursive}.font--dancing{font-family:Dancing Script,Comic Sans MS,Songti SC,cursive}.font--patrick{font-family:Patrick Hand,Comic Sans MS,Songti SC,cursive}.font--mshan{font-family:Ma Shan Zheng,KaiTi,STKaiti,Songti SC,cursive}.font--longcang{font-family:Long Cang,STKaiti,KaiTi,Songti SC,cursive}.label--font-caveat{font-size:26px;line-height:1.2;font-weight:500}.label--font-kalam{font-size:20px;line-height:1.3;font-weight:400}.label--font-dancing{font-size:24px;line-height:1.2;font-weight:500}.label--font-patrick{font-size:20px;line-height:1.3;font-weight:400}.label--font-mshan{font-size:22px;line-height:1.3;font-weight:400}.label--font-longcang{font-size:24px;line-height:1.2;font-weight:400}.element--font-caveat{font-size:22px;line-height:1.2;font-weight:500}.element--font-kalam{font-size:18px;line-height:1.3;font-weight:400}.element--font-dancing{font-size:20px;line-height:1.2;font-weight:500}.element--font-patrick{font-size:18px;line-height:1.3;font-weight:400}.element--font-mshan{font-size:19px;line-height:1.3;font-weight:400}.element--font-longcang{font-size:21px;line-height:1.2;font-weight:400}.result--font-caveat{font-size:24px;line-height:1.2;font-weight:400}.result--font-kalam{font-size:20px;line-height:1.3;font-weight:400}.result--font-dancing{font-size:22px;line-height:1.2;font-weight:400}.result--font-patrick{font-size:20px;line-height:1.3;font-weight:400}.result--font-mshan{font-size:21px;line-height:1.3;font-weight:400}.result--font-longcang{font-size:23px;line-height:1.2;font-weight:400}.label--selected{border-color:#b08968;background:#fff8e7;box-shadow:0 2px 6px #b0896826}.label--border-dashed,.label--border-solid{border-color:currentColor}.label--border-solid{border-style:solid}.label--border-bold{border-width:3px;padding:4.5px 8.5px}.label--border-dashed.label--selected,.label--border-solid.label--selected{border-color:#b08968;box-shadow:0 0 0 3px #b089682e}.label--empty{min-width:18px;min-height:24px}.label--cursor:after{content:"";display:inline-block;width:1.5px;height:18px;background:#b08968;margin-left:2px;vertical-align:middle;animation:blink 1s steps(2,end) infinite}.label--input{background:transparent;border:1.5px dashed #b08968;outline:none;padding:6px 10px;border-radius:4px;cursor:text;box-sizing:content-box;-webkit-user-select:text;user-select:text;white-space:pre;min-width:24px;max-width:480px;line-height:1.4;color:inherit}.toolbar{position:fixed;background:linear-gradient(180deg,#fff,#fbfaf6);border:1px solid rgba(0,0,0,.06);border-radius:14px;box-shadow:0 1px 2px #0000000a,0 6px 20px #00000012;padding:5px;display:flex;gap:2px;z-index:100}.toolbar--top-horizontal{top:16px;left:50%;transform:translate(-50%);flex-direction:row}.toolbar--right-vertical{right:16px;top:50%;transform:translateY(-50%);flex-direction:column}.toolbar--left-vertical{left:16px;top:50%;transform:translateY(-50%);flex-direction:column}.toolbar button{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid transparent;padding:7px 12px;font-size:13px;font-weight:500;letter-spacing:.01em;line-height:1;border-radius:9px;cursor:pointer;color:#2a2a2a;font-family:inherit;white-space:nowrap;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease,color .15s ease,box-shadow .15s ease,transform .1s ease}.toolbar__icon{flex-shrink:0;opacity:.78;transition:opacity .15s ease}.toolbar button:hover:not(:disabled){background:#0000000d}.toolbar button:hover:not(:disabled) .toolbar__icon{opacity:1}.toolbar button:active:not(:disabled){background:#00000017;transform:scale(.97)}.toolbar button:disabled{opacity:.35;cursor:not-allowed}.toolbar button:disabled .toolbar__icon{opacity:.55}.toolbar select{background:transparent;border:none;padding:6px 8px;font-size:13px;border-radius:8px;cursor:pointer;color:#2a2a2a;font-family:inherit;white-space:nowrap;max-width:180px}.toolbar select:hover{background:#f0efe8}.font-bar{position:fixed;right:16px;top:50%;transform:translateY(-50%);z-index:110;display:flex;flex-direction:column;gap:6px;padding:8px;background:#fff;border:1px solid #d8d8d2;border-radius:16px;box-shadow:0 6px 20px #0000001f;font-family:Georgia,Songti SC,STSong,"Source Han Serif SC",serif;transition:opacity .12s ease}.font-bar__group{display:flex;flex-direction:column;gap:4px;align-items:center}.font-bar__divider{width:28px;height:1px;background:#e5e4dd;margin:2px 0}.font-bar__btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:transparent;border:1.5px solid transparent;border-radius:10px;cursor:pointer;color:#2a2a2a;font-size:20px;line-height:1;transition:background .1s,color .1s,border-color .1s}.font-bar__btn:hover{background:#f0efe8}.font-bar__btn.is-active{background:#2563eb;color:#fff;border-color:#1d4ed8}.font-bar__btn.is-active:hover{background:#1d4ed8}.font-bar__btn--standard{font-weight:600}.font-bar__btn--caveat{font-size:26px;font-weight:700}.font-bar__btn--kalam{font-size:20px;font-weight:400}.font-bar__btn--dancing{font-size:26px;font-weight:700}.font-bar__btn--patrick{font-size:22px;font-weight:400}.font-bar__btn--mshan{font-size:26px;font-weight:400}.font-bar__btn--longcang{font-size:28px;font-weight:400}.font-bar__step{width:40px;height:26px;display:flex;align-items:center;justify-content:center;background:transparent;border:1.5px solid #e5e4dd;border-radius:8px;cursor:pointer;color:#2a2a2a;font-size:18px;line-height:1;padding:0;transition:background .1s,border-color .1s,color .1s}.font-bar__step:hover{background:#f0efe8;border-color:#c8c7bf}.font-bar__step:active{background:#e5e4dd}.font-bar__size{width:40px;height:28px;display:flex;align-items:center;justify-content:center;background:#f5f4ed;border:1.5px solid #e5e4dd;border-radius:8px;cursor:pointer;color:#2a2a2a;font-family:JetBrains Mono,SF Mono,Menlo,Consolas,monospace;font-size:13px;font-weight:600;line-height:1;padding:0;transition:background .1s,border-color .1s,color .1s}.font-bar__size:hover{background:#ece9dd;border-color:#c8c7bf}.toolbar button:hover{background:#f0efe8}.toolbar button:disabled{opacity:.4;cursor:not-allowed}.toolbar-toggle.is-active{background:#2563eb;color:#fff;font-weight:600;box-shadow:inset 0 1px #ffffff1f,0 1px 2px #2563eb59}.toolbar-toggle.is-active:hover{background:#1d4ed8}.toolbar-toggle.is-active:active:not(:disabled){background:#1e40af}.toolbar-toggle.is-active .toolbar__icon{opacity:1}.toolbar-divider{width:1px;background:#00000014;align-self:stretch;margin:6px 3px}.toolbar--right-vertical .toolbar-divider,.toolbar--left-vertical .toolbar-divider{width:auto;height:1px;margin:3px 6px}.lang-switcher{position:relative;display:inline-flex}.lang-switcher__btn{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid transparent;padding:7px 10px;font-size:13px;font-weight:500;line-height:1;border-radius:9px;cursor:pointer;color:#2a2a2a;font-family:inherit;white-space:nowrap;-webkit-tap-highlight-color:transparent;transition:background-color .15s ease,color .15s ease,box-shadow .15s ease,transform .1s ease}.lang-switcher__btn:hover,.lang-switcher__btn.is-open{background:#f0efe8}.lang-switcher__icon{flex-shrink:0;opacity:.85}.lang-switcher__current{font-size:13px}.lang-switcher__chev{flex-shrink:0;opacity:.6;margin-left:2px;transition:transform .15s ease}.lang-switcher__btn.is-open .lang-switcher__chev{transform:rotate(180deg)}.lang-switcher__menu{position:absolute;top:calc(100% + 6px);right:0;min-width:140px;margin:0;padding:4px;list-style:none;background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:10px;box-shadow:0 1px 2px #0000000a,0 8px 24px #0000001a;z-index:200;font-family:inherit;font-size:13px;color:#2a2a2a}.toolbar--left-vertical .lang-switcher__menu,.toolbar--right-vertical .lang-switcher__menu{top:0;right:auto;left:calc(100% + 6px)}.lang-switcher__item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .1s ease}.lang-switcher__item:hover{background:#f0efe8}.lang-switcher__item.is-selected{background:#2563eb;color:#fff;font-weight:600}.lang-switcher__check{width:12px;display:inline-block;text-align:center;font-size:12px}.insert-indicator{position:absolute;width:3px;background:#2563eb;border-radius:2px;pointer-events:none;z-index:50;box-shadow:0 0 0 1px #2563eb40}.insert-indicator--h{height:36px}.marquee{position:absolute;pointer-events:none;z-index:45;background:#2563eb1a;border:1.5px solid #2563eb;border-radius:4px;box-shadow:0 0 0 1px #2563eb26}.snap-highlight{position:absolute;pointer-events:none;z-index:40;border:2px dashed #2563eb;border-radius:14px;background:#2563eb0f;box-shadow:0 0 0 4px #2563eb0d;animation:snap-pulse .9s ease-in-out infinite}@keyframes snap-pulse{0%,to{opacity:.85}50%{opacity:.55}}.drag-ghost{position:absolute;pointer-events:none;z-index:1000;opacity:.85;transform:translate(-50%,-50%)}.connections{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10}.connection-path{fill:none;stroke-width:2;opacity:.7}.hint{position:fixed;bottom:12px;left:50%;transform:translate(-50%);padding:4px 12px;font-size:12px;color:#8a8a85;background:#ffffffb3;border-radius:12px;pointer-events:none;z-index:90}.hint--empty{bottom:auto;top:50%;left:50%;transform:translate(-50%,-50%);font-size:13px;padding:0;color:#2a2a2a;background:transparent;box-shadow:none;max-width:none}.empty-hint{display:flex;flex-direction:column;align-items:center;text-align:center;padding:28px 36px 22px;max-width:440px;background:transparent;border:1.5px dashed #d8c9a8;border-radius:18px;box-shadow:none;-webkit-user-select:text;user-select:text}.empty-hint__title{display:flex;align-items:center;gap:10px;font-family:Ma Shan Zheng,KaiTi,STKaiti,cursive;font-size:30px;line-height:1.2;color:#2a2a2a;position:relative}.empty-hint__title:after{content:"";position:absolute;left:14%;right:14%;bottom:-6px;height:6px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 6' preserveAspectRatio='none'><path d='M 2 4 Q 50 1, 100 3 T 198 3' stroke='%23e07a5f' stroke-width='1.6' fill='none' stroke-linecap='round'/></svg>") no-repeat center / 100% 100%;opacity:.55}.empty-hint__wave{display:inline-flex;align-items:center;justify-content:center;transform:translateY(-2px)}.empty-hint__subtitle{margin-top:14px;font-family:Ma Shan Zheng,KaiTi,STKaiti,Songti SC,cursive;font-size:17px;line-height:1.5;color:#6a6a65}.empty-hint__sample{margin:18px 0 6px;padding:4px 8px 0}.empty-hint__steps{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:10px;text-align:left;width:100%;font-family:Ma Shan Zheng,KaiTi,STKaiti,Songti SC,cursive;font-size:18px;line-height:1.4;color:#2a2a2a}.empty-hint__steps li{display:flex;align-items:center;gap:12px}.empty-hint__steps b{font-weight:700;color:#2a2a2a;background:linear-gradient(180deg,transparent 60%,#fde6c6 60%);padding:0 2px}.empty-hint__steps code{font-family:JetBrains Mono,SF Mono,Menlo,Consolas,monospace;font-size:15px;background:#f5f0e3;color:#6b4a2b;padding:1px 6px;border-radius:5px;transform:rotate(-1.2deg);display:inline-block}.empty-hint__icon{flex-shrink:0;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;background:#fff8e7;border-radius:8px}.empty-hint__shortcut{margin-top:18px;padding-top:14px;border-top:1.5px dashed #efe9dc;font-family:Ma Shan Zheng,KaiTi,STKaiti,Songti SC,cursive;font-size:14px;line-height:1.6;color:#8a8a85;width:100%;text-align:center}.empty-hint__shortcut kbd{font-family:JetBrains Mono,SF Mono,Menlo,Consolas,monospace;font-size:12px;background:#f5f4ed;border:1px solid #e5e4dd;border-radius:4px;padding:1px 5px;margin:0 1px;color:#4a4a45;box-shadow:0 1px #d8d7cf}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;width:100%;height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}body{background:#fafaf7;color:#2a2a2a}input,textarea{-webkit-user-select:text;user-select:text}
