*,:before,:after{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}body{color:#1f2937;overscroll-behavior:none;-webkit-user-select:none;user-select:none;background:#fff;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}[data-theme=dark] body{background:#1f2226}.tool-icon{width:calc(31px * var(--icon-scale,1));height:calc(31px * var(--icon-scale,1));object-fit:contain;margin:0 auto;display:block}.btn-icon{width:calc(29px * var(--icon-scale,1));height:calc(29px * var(--icon-scale,1));object-fit:contain;vertical-align:calc(-7px * var(--icon-scale,1));margin-right:5px}.help-icon,.toolbar-svg{margin:0 auto;display:block}.help-icon{width:calc(29px * var(--icon-scale,1));height:calc(29px * var(--icon-scale,1))}.toolbar-svg{width:calc(26px * var(--icon-scale,1));height:calc(26px * var(--icon-scale,1))}.stage{touch-action:none;position:fixed;inset:0;overflow:hidden}.stage[data-tool=pen]{cursor:crosshair}.stage[data-tool=eraser]{cursor:cell}.stage[data-tool=select]{cursor:default}.stage[data-tool=select][data-handle=nwse]{cursor:nwse-resize}.stage[data-tool=select][data-handle=nesw]{cursor:nesw-resize}.stage[data-tool=select][data-handle=rotate],.stage[data-tool=pan]{cursor:grab}.stage[data-tool=pan]:active{cursor:grabbing}.layer{display:block;position:absolute;inset:0}.stage>.layer{pointer-events:none}.toolbar{--icon-scale:1.1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffeb;border-radius:15px;align-items:stretch;gap:12px;padding:7.5px 10px;font-size:17.5px;display:flex;position:fixed;top:12px;left:12px;right:12px;box-shadow:0 2px 12px #0f172a24}.toolbar__side{flex-wrap:wrap;align-content:center;align-items:center;gap:7.5px;min-width:0;display:flex}.toolbar__side--left{flex:auto}.toolbar__side--right{flex-flow:column;flex:none;justify-content:center;align-items:flex-end}.toolbar__group{align-items:center;gap:7.5px;display:inline-flex}.toolbar__row{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7.5px 18px;display:flex}.toolbar__partition{background:#cbd5e1;border-radius:1px;flex:none;width:2px}.toolbar button{min-width:42.5px;height:42.5px;color:inherit;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:11px;padding:0 12.5px;font-size:18.75px;line-height:1}.toolbar button:hover{background:#f1f5f9}.toolbar button:active{background:#e2e8f0}.toolbar button:disabled{opacity:.4;cursor:default}.toolbar button.is-active{color:#fff;background:#2563eb;border-color:#2563eb}.toolbar button.is-active:hover{background:#1d4ed8}.toolbar__zoom{text-align:center;font-variant-numeric:tabular-nums;min-width:50px}.toolbar__sep{background:#e2e8f0;width:1px;height:27.5px}[data-theme=dark] .toolbar{color:#e5e7eb;background:#26292ef0;box-shadow:0 2px 12px #00000073}[data-theme=dark] .toolbar button:not(.is-active){color:#e5e7eb;background:#3a3f47;border-color:#4b515b}[data-theme=dark] .toolbar button:not(.is-active):hover{background:#474d56}[data-theme=dark] .toolbar button:not(.is-active):active{background:#545b66}[data-theme=dark] .toolbar__sep{background:#4b515b}[data-theme=dark] .toolbar__partition{background:#6b7280}[data-theme=dark] .swatch.is-active{border-color:#fff;box-shadow:inset 0 0 0 2px #2b2f36}.seg{gap:5px;display:inline-flex}.seg__btn{min-width:47.5px}.toolbar .seg__btn{font-size:calc(19.5px * var(--icon-scale,1))}.seg__btn.is-active{color:#fff;background:#2563eb;border-color:#2563eb}.seg__btn.is-active:hover{background:#1d4ed8}.swatches{align-items:center;gap:6px;display:inline-flex}.swatch{cursor:pointer;border:2px solid #0f172a26;border-radius:50%;width:30px;min-width:30px;height:30px;padding:0}.swatch.is-active{border-color:#0f172a;box-shadow:inset 0 0 0 2px #fff}.swatch--custom{background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);position:relative;overflow:hidden}.swatch--custom input{opacity:0;cursor:pointer;position:absolute;inset:-4px}.size{align-items:center;gap:10px;display:inline-flex}.size input[type=range]{width:138px}.size__field{color:#64748b;align-items:baseline;gap:2px;display:inline-flex}.size__input{text-align:right;color:#0f172a;width:52px;font:inherit;font-variant-numeric:tabular-nums;border:1px solid #0f172a26;border-radius:7.5px;padding:2.5px 5px}.size__unit{font-variant-numeric:tabular-nums}@media (pointer:coarse) and (width<=599px),(pointer:coarse) and (height<=499px){.toolbar{zoom:.8;--icon-scale:.96}}@media (width<=1079px){.toolbar{flex-direction:column}.toolbar__partition{width:auto;height:2px}.toolbar__side--right{align-items:stretch}.toolbar__row{justify-content:flex-start}}.connstatus{white-space:nowrap;align-items:center;gap:7.5px;font-size:16.25px;display:inline-flex}.connstatus__dot{background:#94a3b8;border-radius:50%;width:10px;height:10px}.connstatus--connected .connstatus__dot{background:#16a34a}.connstatus--connecting .connstatus__dot,.connstatus--confirming .connstatus__dot{background:#d97706}.connstatus--failed .connstatus__dot,.connstatus--disconnected .connstatus__dot{background:#dc2626}.conn-open{align-items:center;display:inline-flex}.toolbar .lang-btn .welcome-flag{width:auto;height:calc(18px * var(--icon-scale,1))}.perf-hud{z-index:90;color:#e2e8f0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172adb;border-radius:12px;width:200px;padding:10px 12px;font-size:12px;position:fixed;bottom:12px;right:12px;box-shadow:0 2px 12px #0f172a4d}.perf-hud__head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.perf-hud__close{color:#94a3b8;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:16px;line-height:1}.perf-hud__close:hover{color:#fff}.perf-hud__grid{grid-template-columns:auto 1fr;gap:2px 10px;margin:0 0 8px;display:grid}.perf-hud__grid dt{color:#94a3b8}.perf-hud__grid dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.perf-hud__seed{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:6px;display:flex}.perf-hud__seed span{color:#94a3b8;width:100%}.perf-hud__seed button{color:#e2e8f0;cursor:pointer;background:#94a3b81f;border:1px solid #94a3b866;border-radius:7px;flex:1;min-width:0;padding:3px 4px;font-size:12px}.perf-hud__seed button:hover{background:#94a3b847}.perf-hud__hint{color:#64748b;margin:0;font-size:11px;line-height:1.35}.modal-overlay{z-index:100;background:#0f172a73;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;width:min(560px,100%);max-height:calc(100vh - 32px);padding:16px 18px 18px;overflow:auto;box-shadow:0 12px 40px #0f172a4d}.modal__head{align-items:center;gap:12px;margin-bottom:8px;display:flex}.modal__title{flex:1;margin:0;font-size:18px}.modal__close{cursor:pointer;color:#64748b;background:0 0;border:none;border-radius:8px;padding:4px 6px;font-size:18px;line-height:1}.modal__close:hover{background:#f1f5f9}.conn-body{color:#334155;font-size:14px}.conn-hint{color:#64748b;margin:6px 0}.conn-ok{color:#15803d;margin:8px 0;font-weight:600}.conn-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;margin-top:10px;padding:8px 10px}.pdf-actions{align-items:center;gap:8px;margin:4px 0 10px;display:flex}.pdf-actions .conn-hint{flex:1;margin:0}.pdf-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;max-height:50vh;padding:2px;display:grid;overflow:auto}.pdf-thumb{cursor:pointer;background:#f8fafc;border:2px solid #e2e8f0;border-radius:8px;justify-content:center;align-items:center;min-height:96px;padding:4px;display:flex;position:relative}.pdf-thumb img{max-width:100%;max-height:130px;display:block}.pdf-thumb.is-selected{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb40}.pdf-thumb__num{color:#475569;background:#ffffffd9;border-radius:4px;padding:0 4px;font-size:11px;position:absolute;top:2px;left:4px}.pdf-thumb__ph{color:#94a3b8;font-size:18px}.pdf-foot{justify-content:flex-end;margin-top:12px;display:flex}.modal button.pdf-import-btn{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:8px;padding:8px 14px;font-weight:600}.modal button.pdf-import-btn:disabled{opacity:.5;cursor:default}.modal--confirm{width:min(420px,100%)}.confirm-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.modal button.confirm-cancel{color:#334155;cursor:pointer;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;padding:8px 14px}.modal button.confirm-cancel:hover{background:#e2e8f0}.modal button.confirm-danger{color:#fff;cursor:pointer;background:#dc2626;border:1px solid #dc2626;border-radius:8px;padding:8px 14px;font-weight:600}.modal button.confirm-danger:hover{background:#b91c1c;border-color:#b91c1c}.merge-boards{background:#f1f5f9;border-radius:8px;grid-template-columns:auto 1fr;gap:4px 14px;margin:10px 0;padding:10px 12px;font-size:14px;display:grid}.merge-boards dt{font-weight:600}.merge-boards dd{margin:0}[data-theme=dark] .merge-boards{color:#e5e7eb;background:#1f2329}.help-modal{width:min(640px,100%)}.help-body h3{margin:16px 0 6px;font-size:15px}.help-body p{margin:8px 0;line-height:1.5}.help-body ul{margin:6px 0;padding-left:20px}.help-body li{margin:4px 0;line-height:1.45}.help-inline-icon{vertical-align:middle;object-fit:contain;width:1.4em;height:1.4em;display:inline-block}.help-credit{text-align:center;color:#64748b;margin-top:18px;font-style:italic}[data-theme=dark] .help-credit{color:#9aa5b1}.welcome-modal{width:min(460px,100%)}.help-body ol{margin:6px 0;padding-left:20px}.welcome-legal{margin-top:4px}.welcome-lang{color:#64748b;align-items:center;gap:4px;margin-bottom:8px;font-size:13px;display:flex}:root .modal .welcome-lang button{min-height:0;color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:5px;padding:2px 4px;display:inline-flex}:root .modal .welcome-lang button:hover:not(:disabled){background:0 0;text-decoration:underline}:root .modal .welcome-lang button[aria-pressed=true]{color:#2563eb;font-weight:600}.welcome-flag{border-radius:2px;flex:none;box-shadow:0 0 0 1px #0003}[data-theme=dark] .welcome-lang{color:#9aa5b1}[data-theme=dark] .modal .welcome-lang button[aria-pressed=true]{color:#93c5fd}.welcome-legal a,.help-legal a{color:inherit}.help-legal{text-align:center;color:#64748b;margin:4px 0 0;font-size:13px}[data-theme=dark] .help-legal{color:#9aa5b1}.welcome-actions{justify-content:space-between;align-items:center}.welcome-dontshow{cursor:pointer;align-items:center;gap:6px;font-size:14px;display:inline-flex}.welcome-credit{text-align:center;opacity:.5;margin:14px 0 0;font-size:12px}.conn-choose{gap:10px;margin-top:10px;display:flex}.modal button.conn-bigbtn{text-align:left;cursor:pointer;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;flex-direction:column;flex:1;gap:6px;padding:14px 16px;line-height:1.4;display:flex}.modal button.conn-bigbtn:hover:not(:disabled){background:#eff6ff;border-color:#2563eb}.conn-bigbtn strong{font-size:15px}.conn-bigbtn span{color:#64748b;font-size:13px}.conn-steps{margin:8px 0 0;padding-left:20px}.conn-steps>li{margin-bottom:16px}.conn-steprow{justify-content:space-between;align-items:center;gap:10px;display:flex}.conn-code{align-items:flex-start;gap:8px;margin:8px 0;display:flex}.conn-code textarea{resize:vertical;word-break:break-all;border:1px solid #cbd5e1;border-radius:8px;flex:1;padding:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.conn-actions{justify-content:space-between;gap:10px;margin-top:12px;display:flex}.modal button{cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:9px;min-height:34px;padding:0 12px;font-size:14px}.modal button:hover:not(:disabled){background:#f1f5f9}.modal button:disabled{opacity:.45;cursor:default}.modal button.is-primary{color:#fff;background:#2563eb;border-color:#2563eb}.modal button.is-primary:hover:not(:disabled){background:#1d4ed8}.conn-bigcode{letter-spacing:10px;text-align:center;color:#1e293b;text-transform:lowercase;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:12px;margin:12px 0;padding:18px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:44px;font-weight:700}.conn-codeinput{box-sizing:border-box;letter-spacing:8px;text-align:center;text-transform:lowercase;border:1px solid #cbd5e1;border-radius:10px;width:100%;margin:12px 0;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:30px}.conn-codeinput:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #bfdbfe}.modal button.conn-link{color:#2563eb;background:0 0;border:none;min-height:auto;padding:4px 0;font-size:13px;text-decoration:underline}.modal button.conn-link:hover:not(:disabled){color:#1d4ed8;background:0 0}.modal button.conn-inline-btn{min-height:26px;margin-left:10px;padding:0 8px;font-size:12px}[data-theme=dark] .modal{color:#e5e7eb;background:#2a2e34;box-shadow:0 12px 40px #0000008c}[data-theme=dark] .modal__title{color:#f1f5f9}[data-theme=dark] .conn-body{color:#cbd5e1}[data-theme=dark] .conn-hint,[data-theme=dark] .conn-bigbtn span,[data-theme=dark] .pdf-thumb__num{color:#9aa5b1}[data-theme=dark] .modal__close{color:#cbd5e1}[data-theme=dark] .modal__close:hover{background:#3a3f47}[data-theme=dark] .modal button{color:#e5e7eb;background:#3a3f47;border-color:#4b515b}[data-theme=dark] .modal button:hover:not(:disabled){background:#474d56}[data-theme=dark] .modal button.is-primary,[data-theme=dark] .modal button.pdf-import-btn{color:#fff;background:#2563eb;border-color:#2563eb}[data-theme=dark] .modal button.confirm-danger{color:#fff;background:#dc2626;border-color:#dc2626}[data-theme=dark] .modal button.conn-link{color:#60a5fa;background:0 0}[data-theme=dark] .modal button.conn-bigbtn{background:#343a42;border-color:#4b515b}[data-theme=dark] .modal button.conn-bigbtn:hover:not(:disabled){background:#2d3a4f;border-color:#2563eb}[data-theme=dark] .conn-bigcode{color:#f1f5f9;background:#1f2329;border-color:#4b515b}[data-theme=dark] .conn-codeinput,[data-theme=dark] .conn-code textarea{color:#e5e7eb;background:#1f2329;border-color:#4b515b}[data-theme=dark] .pdf-thumb{background:#343a42;border-color:#4b515b}[data-theme=dark] .conn-error{color:#fca5a5;background:#3a1f22;border-color:#7f1d1d}.progress{background:#e2e8f0;border-radius:3px;height:6px;overflow:hidden}.progress__bar{background:#2563eb;border-radius:3px;height:100%;transition:width .25s}.progress--indeterminate .progress__bar{width:40%;animation:1.1s ease-in-out infinite progress-slide}@keyframes progress-slide{0%{transform:translate(-100%)}to{transform:translate(250%)}}@media (prefers-reduced-motion:reduce){.progress--indeterminate .progress__bar{animation-duration:3s}}[data-theme=dark] .progress{background:#4b515b}.loading-toast{z-index:40;color:#1e293b;background:#fffffff5;border-radius:12px;flex-direction:column;gap:8px;width:min(260px,100% - 32px);padding:12px 16px;font-size:14px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #0f172a33}[data-theme=dark] .loading-toast{color:#e5e7eb;background:#2a2e34f5}.loading-toast--error{border-left:4px solid #dc2626}.sync-window{z-index:40;color:#1e293b;pointer-events:none;background:#fffffff5;border-radius:12px;flex-direction:column;gap:8px;width:min(280px,100% - 32px);padding:12px 16px;font-size:14px;display:flex;position:fixed;bottom:16px;left:16px;box-shadow:0 6px 24px #0f172a33}[data-theme=dark] .sync-window{color:#e5e7eb;background:#2a2e34f5}.sync-window__head{justify-content:space-between;gap:8px;font-weight:600;display:flex}.sync-window__detail{opacity:.75;font-size:12px}.export-name{flex-direction:column;gap:6px;margin:4px 0 8px;font-size:14px;display:flex}.export-name__label{font-weight:600}.export-name__field{align-items:center;gap:6px;display:flex}.export-name__field input{min-width:0;color:inherit;background:#fff;border:1px solid #cbd5e1;border-radius:8px;flex:1;padding:8px 10px;font-size:16px}.export-name__field input:focus{outline-offset:1px;outline:2px solid #2563eb}.export-name__ext{color:#64748b}[data-theme=dark] .export-name__field input{background:#1f2328;border-color:#4b515b}.export-error{color:#dc2626;margin:8px 0 0;font-size:14px}.export-notice{border-left:4px solid #16a34a;gap:4px;width:min(340px,100% - 32px)}.export-notice__head{justify-content:space-between;align-items:center;display:flex}.export-notice__file{overflow-wrap:anywhere;font-weight:600}.export-notice__close{color:inherit;cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:20px;line-height:1}.pdf-progress{flex-direction:column;flex:1;gap:8px;display:flex}.welcome-logo{vertical-align:-.3em;width:auto;height:1.3em}.toolbar button.call-mute,.toolbar button.call-end{padding:0 8px}.toolbar button.call-end,[data-theme=dark] .toolbar button.call-end{color:#fff;background:linear-gradient(135deg,#86c96a 0%,#3ea657 40%,#0e8a42 72%,#0b5e35 100%);border-color:#0b5e35}.toolbar button.call-end:hover,[data-theme=dark] .toolbar button.call-end:hover{filter:brightness(1.08)}.toolbar button.call-btn.is-ringing{animation:1.2s ease-in-out infinite call-ring}@keyframes call-ring{50%{background:#bfdbfe;border-color:#2563eb}}@media (prefers-reduced-motion:reduce){.toolbar button.call-btn.is-ringing{border-color:#2563eb;animation:none}}.call-toast{width:min(360px,100% - 32px)}
