:root,:host{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Pro";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Pro";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-regular:normal 400 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-light:normal 300 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-thin:normal 100 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-duotone-solid:normal 900 1em/1 "Font Awesome 6 Sharp Duotone"}svg:not(:root).svg-inline--fa,svg:not(:host).svg-inline--fa{box-sizing:content-box;overflow:visible}.svg-inline--fa{display:var(--fa-display,inline-block);vertical-align:-.125em;height:1em;overflow:visible}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.07143em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{margin:auto;position:absolute;inset:0}.fa-layers-text,.fa-layers-counter{text-align:center;display:inline-block;position:absolute}.fa-layers{text-align:center;vertical-align:-.125em;width:1em;height:1em;display:inline-block;position:relative}.fa-layers svg.svg-inline--fa{transform-origin:50%}.fa-layers-text{transform-origin:50%;top:50%;left:50%;transform:translate(-50%,-50%)}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);transform:scale(var(--fa-counter-scale,.25));transform-origin:100% 0;overflow:hidden}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:100% 100%;top:auto}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:0 100%;top:auto;right:auto}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:100% 0}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:0 0}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{vertical-align:.225em;font-size:.625em;line-height:.1em}.fa-xs{vertical-align:.125em;font-size:.75em;line-height:.08333em}.fa-sm{vertical-align:.05357em;font-size:.875em;line-height:.07143em}.fa-lg{vertical-align:-.075em;font-size:1.25em;line-height:.05em}.fa-xl{vertical-align:-.125em;font-size:1.5em;line-height:.04167em}.fa-2xl{vertical-align:-.1875em;font-size:2em;line-height:.03125em}.fa-fw{text-align:center;width:1.25em}.fa-ul{margin-left:var(--fa-li-margin,2.5em);padding-left:0;list-style-type:none}.fa-ul>li{position:relative}.fa-li{left:calc(-1 * var(--fa-li-width,2em));text-align:center;width:var(--fa-li-width,2em);line-height:inherit;position:absolute}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28, .84, .42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4, 0, .6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4, 0, .6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{transition-duration:0s;transition-delay:0s;animation-duration:1ms;animation-iteration-count:1;animation-delay:-1ms}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1)translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1), var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9), var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05), var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1, 1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1)translateY(0)}to{transform:scale(1)translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{vertical-align:middle;width:2.5em;height:2em;display:inline-block;position:relative}.fa-stack-1x,.fa-stack-2x{z-index:var(--fa-stack-z-index,auto);margin:auto;position:absolute;inset:0}.svg-inline--fa.fa-stack-1x{width:1.25em;height:1em}.svg-inline--fa.fa-stack-2x{width:2.5em;height:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.sr-only,.fa-sr-only,.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse,.fa-duotone.fa-inverse{color:var(--fa-inverse,#fff)}.home{-webkit-user-select:text;user-select:text;background:var(--bg);scroll-behavior:smooth;--home-max:1180px;--home-gutter:clamp(16px, 4vw, 40px);height:100%;scroll-padding-top:80px;font-size:16px;line-height:1.7;overflow:hidden auto}.home h1,.home h2,.home h3,.home p{margin:0}.home .nw{white-space:nowrap}.home h1,.home h2,.home h3{text-wrap:balance}.home p{text-wrap:pretty}.home a{color:inherit;text-decoration:none}.home-nav{z-index:5;height:64px;padding:0 max(var(--home-gutter), calc((100% - var(--home-max)) / 2));background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);align-items:center;gap:16px;display:flex;position:sticky;top:0}.home-brand{align-items:center;gap:10px;font-size:20px;font-weight:600;display:flex}.home-links{align-items:center;gap:4px;margin-left:auto;display:flex}.home-links>a,.home-link-btn{font:inherit;color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;padding:8px 14px;font-size:15px;font-weight:500}.home-links>a:hover,.home-link-btn:hover{background:var(--surface-hover);color:var(--text)}.home-theme{place-items:center;width:40px;display:inline-grid;padding:8px 0!important}.home-links .home-btn{margin-left:8px}.home .show-xs{display:none}.home-btn{border:1px solid var(--border-strong);background:var(--surface);height:48px;font:inherit;color:var(--text);cursor:pointer;white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:0 24px;font-size:16px;font-weight:600;transition:background .15s,border-color .15s,transform .15s;display:inline-flex}.home-btn:hover{border-color:var(--accent);transform:translateY(-1px)}.home-btn.primary{border-color:var(--accent);background:var(--accent);color:#fff}.home-btn.primary:hover{background:var(--accent-hover)}.home-btn.small{border-radius:8px;height:38px;padding:0 16px;font-size:15px}.home-btn.inverse{color:#b91c1c;background:#fff;border-color:#fff}.home-btn.inverse:hover{background:#fee2e2}.home-btn.ghost{color:#fff;background:0 0;border-color:#fff9}.home-btn.ghost:hover{background:#ffffff1a;border-color:#fff}.home-hero{max-width:var(--home-max);padding:clamp(40px, 8vw, 96px) var(--home-gutter) clamp(48px, 8vw, 104px);grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:center;gap:clamp(32px,5vw,72px);margin:0 auto;display:grid}.home-eyebrow{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:4px 12px;font-size:14px;font-weight:600;display:inline-block;margin-bottom:18px!important}.home-hero h1{letter-spacing:-.01em;font-size:clamp(34px,5.2vw,58px);font-weight:600;line-height:1.3}.home-hero h1 em{color:var(--accent);font-style:normal}.home-sub{max-width:34em;color:var(--text-muted);font-size:clamp(16px,1.6vw,19px);margin-top:20px!important}.home-cta{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.home-note{color:var(--text-faint);font-size:14px;margin-top:16px!important}.home-window{border:1px solid var(--border);background:var(--surface);border-radius:14px;overflow:hidden;box-shadow:0 30px 60px -20px #0000004d,0 10px 20px -10px #00000026}.home-window-bar{border-bottom:1px solid var(--border);height:34px;color:var(--text-muted);align-items:center;gap:6px;padding:0 12px;font-size:12px;display:flex}.home-window-bar i{background:var(--border-strong);border-radius:50%;width:10px;height:10px}.home-window-bar span{background:var(--surface-2);border-radius:6px;margin-left:10px;padding:2px 10px}.home-window-tools,.home-window-timeline{background:var(--surface-2);gap:8px;padding:8px 12px;display:flex}.home-window-tools b,.home-window-timeline b{background:var(--border);border-radius:5px;width:22px;height:22px}.home-window-tools b.on,.home-window-timeline b.on{background:var(--accent)}.home-window-timeline{border-top:1px solid var(--border)}.home-window-timeline b{width:16px;height:16px}.home-window-canvas{background:linear-gradient(180deg, var(--viewport-top), var(--viewport-bottom));width:100%;height:auto;display:block}.home-window-canvas .grid-line{stroke:var(--border);stroke-width:.6px}.home-window-canvas .face{stroke:#3f3f46;stroke-width:1.2px;stroke-linejoin:round}.home-window-canvas .top{fill:#d4d4d8}.home-window-canvas .front{fill:#a1a1aa}.home-window-canvas .side{fill:#8a8a93}.home-window-canvas .hole{fill:#71717a;stroke:#3f3f46;stroke-width:1px}.home-window-canvas .dim line{stroke:var(--text-muted);stroke-width:1px;stroke-dasharray:3 3}.home-window-canvas .dim text{fill:var(--text-muted);text-anchor:middle;font-size:12px;font-family:var(--font)}.home-window-canvas .origin{fill:var(--warning)}.home-demo-section{padding-top:clamp(24px,4vw,48px)}.home-demo{border:1px solid var(--border);background:var(--surface);border-radius:14px;max-width:1040px;margin:40px auto 0;overflow:hidden;box-shadow:0 30px 60px -20px #0000004d,0 10px 20px -10px #00000026}.home-demo video{width:100%;height:auto;display:block}.home-section{max-width:var(--home-max);padding:clamp(48px, 8vw, 96px) var(--home-gutter);margin:0 auto}.home-section h2,.home-band h2{text-align:center;font-size:clamp(26px,3.4vw,38px);font-weight:600;line-height:1.4}.home-section-sub{text-align:center;color:var(--text-muted);font-size:17px;margin-top:10px!important}.home-features{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:20px;margin-top:48px;display:grid}.home-feature{border:1px solid var(--border);background:var(--surface);border-radius:14px;padding:28px;transition:border-color .15s,box-shadow .15s}.home-feature:hover{border-color:var(--accent);box-shadow:var(--shadow)}.home-feature-icon{background:var(--accent-soft);width:48px;height:48px;color:var(--accent);border-radius:12px;place-items:center;margin-bottom:16px;display:inline-grid}.home-feature h3{font-size:18px;font-weight:600;line-height:1.5}.home-feature p{color:var(--text-muted);margin-top:6px;font-size:15px}.home-steps-section{border-top:1px solid var(--border)}.home-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:48px 0 0;padding:0;list-style:none;display:grid}.home-steps li{text-align:center;padding:0 12px;position:relative}.home-steps li+li:before{content:"";background:linear-gradient(90deg, var(--border), var(--accent));width:calc(100% - 56px);height:2px;position:absolute;top:28px;right:calc(50% + 40px)}.home-step-num{background:var(--accent);color:#fff;width:56px;height:56px;box-shadow:0 0 0 8px var(--accent-soft);border-radius:50%;place-items:center;margin-bottom:16px;font-size:22px;font-weight:600;display:inline-grid}.home-steps h3{font-size:20px;font-weight:600}.home-steps p{color:var(--text-muted);margin-top:6px}.home-steps-more{text-align:center;margin-top:40px!important}.home-steps-more a{align-items:center;gap:8px;font-weight:600;display:inline-flex;color:var(--accent)!important}.home-steps-more a:hover{text-decoration:underline}.home-band{margin:0 var(--home-gutter) clamp(48px, 6vw, 80px);padding:clamp(40px, 6vw, 72px) var(--home-gutter);text-align:center;color:#fff;background:radial-gradient(circle at 20% 0,#f87171,#0000 60%),linear-gradient(135deg,#dc2626,#7f1d1d);border-radius:20px}@media (width>=1260px){.home-band{max-width:calc(var(--home-max) - 2 * var(--home-gutter));margin-left:auto;margin-right:auto}}.home-band p{opacity:.9;margin-top:8px;font-size:17px}.home-band .home-cta{justify-content:center}.home-footer{padding:28px max(var(--home-gutter), calc((100% - var(--home-max)) / 2));border-top:1px solid var(--border);color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:14px;display:flex}.home-footer nav{gap:20px;display:flex}.home-footer a:hover{color:var(--text)}@media (width<=900px){.home-hero{text-align:center;grid-template-columns:minmax(0,1fr)}.home-sub{margin-left:auto!important;margin-right:auto!important}.home-hero .home-cta{justify-content:center}.home-window{width:100%;max-width:560px;margin:0 auto}}@media (width<=720px){.home .hide-sm{display:none}.home-steps{grid-template-columns:minmax(0,1fr);gap:32px}.home-steps li+li:before{display:none}}@media (width<=480px){.home-nav{gap:8px;height:56px}.home .hide-xs{display:none}.home .show-xs{display:inline}.home-links>a,.home-link-btn{padding:8px 10px}.home-cta{flex-direction:column}.home-cta .home-btn{width:100%}.home-feature{padding:22px}}:root{--font:"Inter", "Noto Sans Thai", system-ui, -apple-system, "Segoe UI", sans-serif;--bg:#f4f4f5;--surface:#fff;--surface-2:#f2f2f3;--surface-hover:#ececee;--border:#e2e2e5;--border-strong:#c9c9ce;--text:#18181b;--text-muted:#5f5f68;--text-faint:#9a9aa2;--accent:#dc2626;--accent-hover:#b91c1c;--accent-soft:#dc26261a;--accent-ring:#dc262659;--success:#3c9b3c;--success-hover:#33873a;--danger:#c2410c;--warning:#e8a33c;--icon-fill:#dc262629;--viewport-top:#fff;--viewport-bottom:#dcdce0;--shadow:0 4px 16px #0000001a, 0 1px 3px #00000014;--shadow-sm:0 1px 3px #0000001a;--radius:6px;--tool-active-bg:#18181b1f;--tool-active-border:#18181b3d}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d0d0d;--surface:#171717;--surface-2:#121212;--surface-hover:#262626;--border:#2a2a2a;--border-strong:#3a3a3a;--text:#ececec;--text-muted:#a3a3a3;--text-faint:#6e6e6e;--accent:#e5484d;--accent-hover:#ec5d5e;--accent-soft:#e5484d29;--accent-ring:#e5484d73;--danger:#f97316;--icon-fill:#e5484d3d;--viewport-top:#262626;--viewport-bottom:#0d0d0d;--shadow:0 4px 18px #0009, 0 1px 3px #0006;--shadow-sm:0 1px 3px #00000080;--tool-active-bg:#ffffff14;--tool-active-border:#ffffff2e}}:root[data-theme=dark]{--bg:#0d0d0d;--surface:#171717;--surface-2:#121212;--surface-hover:#262626;--border:#2a2a2a;--border-strong:#3a3a3a;--text:#ececec;--text-muted:#a3a3a3;--text-faint:#6e6e6e;--accent:#e5484d;--accent-hover:#ec5d5e;--accent-soft:#e5484d29;--accent-ring:#e5484d73;--danger:#f97316;--icon-fill:#e5484d3d;--viewport-top:#262626;--viewport-bottom:#0d0d0d;--shadow:0 4px 18px #0009, 0 1px 3px #0006;--shadow-sm:0 1px 3px #00000080;--tool-active-bg:#ffffff14;--tool-active-border:#ffffff2e}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}html{touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-text-size-adjust:100%}body{font-family:var(--font);color:var(--text);background:var(--bg);overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;font-size:12px;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}button:disabled{cursor:default;opacity:.4}button:focus-visible,input:focus-visible{outline:2px solid var(--accent-ring);outline-offset:1px}kbd{font-family:var(--font);color:var(--text-muted);border:1px solid var(--border);background:var(--surface-2);border-bottom-width:2px;border-radius:3px;padding:0 4px;font-size:10px;line-height:15px}.muted{color:var(--text-muted)}.small{font-size:11px}.spacer{flex:1}.cad-icon{flex:none;display:block}.cad-icon .f{fill:var(--icon-fill);stroke:none}.fa-wrap{flex:none;justify-content:center;align-items:center;display:inline-flex}.app{grid-template:"bar bar"36px"side tools""side work"1fr"side time"38px/auto minmax(0,1fr);height:100%;display:grid}.app>.appbar{grid-area:bar}.app>.toolbar{grid-area:tools}.app>.workspace{grid-area:work}.app>.timeline{grid-area:time}.workspace{min-height:0;position:relative;overflow:hidden}.icon-btn{min-width:28px;height:28px;color:var(--text-muted);border-radius:4px;justify-content:center;align-items:center;gap:3px;padding:0 6px;transition:background .12s,color .12s;display:inline-flex}.icon-btn:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.icon-btn.active{background:var(--accent-soft);color:var(--accent)}.icon-btn.small{min-width:22px;height:22px;padding:0 4px}.caret{border:3.5px solid #0000;border-top-color:currentColor;margin-top:4px}.btn{border:1px solid var(--border-strong);background:var(--surface);border-radius:4px;height:26px;padding:0 14px;font-weight:500}.btn:hover{background:var(--surface-hover)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-hover)}.tt-anchor{display:inline-flex}.tooltip{z-index:1000;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:260px;box-shadow:var(--shadow);pointer-events:none;padding:10px 12px;animation:.12s ease-out fade-in;position:fixed}.tooltip-above{transform:translateY(-100%)}.tooltip-title{justify-content:space-between;align-items:center;font-size:12.5px;font-weight:600;display:flex}.tooltip-text{color:var(--text-muted);margin-top:4px;line-height:1.45}.tooltip-footer{border-top:1px solid var(--border);color:var(--warning);margin-top:8px;padding-top:6px;font-size:11px;font-weight:500}@keyframes fade-in{0%{opacity:0}}.menu-anchor{position:relative}.dropdown,.context-menu{z-index:200;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:220px;box-shadow:var(--shadow);padding:4px;animation:.1s ease-out fade-in;position:absolute}.dropdown{top:calc(100% + 4px);left:0}.dropdown.up{top:auto;bottom:calc(100% + 6px)}.context-menu{position:fixed}.context-menu.up{transform:translateY(-100%)}.dropdown-item{text-align:left;white-space:nowrap;border-radius:4px;align-items:center;gap:10px;width:100%;height:30px;padding:0 10px;display:flex}.dropdown-item>kbd,.dropdown-item>.muted{margin-left:auto}.dropdown-item>.muted+kbd{margin-left:0}.dropdown-item:hover:not(:disabled),.dropdown-item.hover{background:var(--surface-hover)}.dropdown-item.planned{color:var(--text-muted)}.dropdown-sep{background:var(--border);height:1px;margin:4px 6px}.dropdown-heading{letter-spacing:.04em;color:var(--text-faint);text-transform:uppercase;padding:6px 10px 4px;font-size:10.5px;font-weight:600}.check-dot{border:1.5px solid var(--border-strong);border-radius:50%;flex:none;width:8px;height:8px}.dropdown-item.checked .check-dot{background:var(--accent);border-color:var(--accent)}.appbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:0 8px;display:flex}.appbar-left,.appbar-right{align-items:center;gap:2px;display:flex}.appbar-sep,.navbar-sep{background:var(--border);width:1px;height:18px;margin:0 4px}.doc-tabs{flex:1;justify-content:flex-start;align-self:stretch;align-items:flex-end;padding-left:12px;display:flex}.doc-tab{border:1px solid var(--border);background:var(--bg);border-bottom:none;border-radius:6px 6px 0 0;align-items:center;gap:8px;min-width:180px;max-width:280px;height:30px;padding:0 8px 0 14px;font-weight:500;display:flex}.doc-tab-dot{background:var(--accent);border-radius:2px;width:8px;height:8px}.doc-tab-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.doc-tab-ver{color:var(--text-faint);font-size:11px}.doc-tab-close{color:var(--text-faint);border-radius:3px;padding:3px;display:inline-flex}.doc-tab-close:hover{background:var(--surface-hover);color:var(--text)}.avatar{color:#fff;background:linear-gradient(135deg,#ef4444,#b91c1c);border-radius:50%;place-items:center;width:24px;height:24px;margin-left:6px;font-size:11px;font-weight:600;display:grid}.toolbar{background:var(--bg);border-bottom:1px solid var(--border)}.toolbar-groups{flex-wrap:wrap;align-items:stretch;min-height:64px;padding:4px 6px 2px;display:flex}.tool-group{border-right:1px solid var(--border);flex-direction:column;align-items:stretch;padding:0 6px;display:flex;position:relative}.tool-group:last-child{border-right:none}.tool-group-buttons{flex:1;gap:1px;display:flex}.tool-btn{width:38px;height:38px;color:var(--text);border-radius:5px;place-items:center;transition:background .12s;display:grid}.tool-btn:hover{background:var(--surface-hover)}.tool-btn.active{background:var(--tool-active-bg);color:var(--accent);box-shadow:inset 0 0 0 1px var(--tool-active-border);border-radius:7px}.tool-btn.planned{color:var(--text-muted)}.tool-btn.finish{background:var(--success);color:#fff;width:46px}.tool-btn.finish:hover{background:var(--success-hover)}.tool-group-label{letter-spacing:.06em;height:18px;color:var(--text-muted);border-radius:3px;justify-content:center;align-items:center;gap:4px;margin-top:2px;font-size:10px;font-weight:600;display:inline-flex}.tool-group-label:hover,.tool-group-label.open{background:var(--surface-hover);color:var(--text)}.group-dropdown{top:calc(100% + 2px);left:6px}.finish-group .tool-group-label{color:var(--success)}.viewport{background:linear-gradient(180deg, var(--viewport-top) 0%, var(--viewport-bottom) 100%);position:absolute;inset:0}.viewport canvas{display:block}.navbar{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:8px;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.panel-header{border-bottom:1px solid var(--border);align-items:center;gap:4px;height:30px;padding:0 6px;display:flex}.panel-title{letter-spacing:.08em;color:var(--text-muted);font-size:10.5px;font-weight:600}.browser{z-index:10;flex-direction:column;width:260px;max-height:calc(100% - 80px);display:flex;position:absolute;top:10px;left:10px}.browser.collapsed{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:auto;padding:2px}.tree{padding:4px 0;overflow-y:auto}.tree-row{cursor:default;white-space:nowrap;align-items:center;gap:3px;height:24px;padding-right:8px;display:flex}.tree-row:hover{background:var(--surface-hover)}.tree-row.selected{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}.tree-row.dimmed .tree-label,.tree-row.dimmed .tree-icon{opacity:.45}.tree-caret,.tree-eye{width:16px;height:16px;color:var(--text-muted);border-radius:3px;flex:none;place-items:center;display:grid}.tree-eye.off{color:var(--text-faint)}.tree-eye:hover:not(.placeholder),.tree-caret:hover{background:var(--surface-2);color:var(--text)}.tree-radio{border:1.5px solid var(--border-strong);background:var(--surface);border-radius:50%;flex:none;width:12px;height:12px;margin:0 2px}.tree-radio.on{border-color:var(--accent);background:radial-gradient(circle, var(--accent) 0 3px, var(--surface) 3.5px)}.tree-radio.small{width:11px;height:11px;display:inline-block}.tree-icon{color:var(--text-muted);margin:0 3px;display:inline-flex}.tree-label{text-overflow:ellipsis;align-items:center;gap:6px;display:inline-flex;overflow:hidden}.tree-badge{color:var(--accent);display:inline-flex}.tree-rename{border:1px solid var(--accent);background:var(--surface);width:150px;height:20px;color:var(--text);font:inherit;border-radius:3px;outline:none;padding:0 4px}.command-panel{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:300px;box-shadow:var(--shadow);animation:.12s ease-out fade-in;position:absolute;top:175px;right:14px}.command-header{border-bottom:1px solid var(--border);letter-spacing:.06em;align-items:center;gap:8px;height:34px;padding:0 6px 0 10px;font-size:11px;font-weight:600;display:flex}.command-header span{flex:1}.command-body{padding:10px 12px;line-height:1.5}.command-body p{margin:0}.command-footer{border-top:1px solid var(--border);align-items:center;gap:6px;padding:8px 10px;display:flex}.timeline{background:var(--surface);border-top:1px solid var(--border);align-items:center;gap:8px;padding:0 8px;display:flex}.timeline-controls{border-right:1px solid var(--border);align-items:center;gap:1px;padding-right:8px;display:flex}.timeline-track{flex:1;align-items:center;gap:4px;height:30px;padding:0 4px;display:flex;position:relative;overflow:auto hidden}.timeline-item{height:26px;color:var(--text);border:1px solid #0000;border-radius:4px;place-items:center;display:grid}.timeline-item:hover{background:var(--surface-hover)}.timeline-item.selected{background:var(--accent-soft);border-color:var(--accent-ring)}.timeline-item.rolled{opacity:.35}.timeline-item.suppressed{opacity:.4;background:repeating-linear-gradient(-45deg, transparent 0 3px, var(--border) 3px 4px)}.timeline-item.error{color:var(--danger);box-shadow:inset 0 -2px 0 var(--danger)}.timeline-marker{background:var(--accent);cursor:ew-resize;border-radius:2px;width:6px;margin-left:-3px;transition:left .12s;position:absolute;top:2px;bottom:2px}.timeline-marker.dragging{box-shadow:0 0 0 3px var(--accent-ring);transition:none}.timeline-empty{color:var(--text-faint);margin-left:16px}.marking-backdrop{z-index:300;position:fixed;inset:0}.marking-menu{width:0;height:0;position:absolute}.marking-center{background:var(--surface);border:1px solid var(--border-strong);width:28px;height:28px;box-shadow:var(--shadow-sm);color:var(--text-muted);border-radius:50%;place-items:center;display:grid;position:absolute;top:-14px;left:-14px}.marking-item{background:var(--surface);border:1px solid var(--border);height:28px;box-shadow:var(--shadow-sm);white-space:nowrap;border-radius:14px;align-items:center;gap:8px;margin-top:-14px;padding:0 12px 0 8px;animation:.1s ease-out fade-in;display:flex;position:absolute;top:0;left:0}.marking-item:hover{background:var(--accent);border-color:var(--accent);color:#fff}.marking-item.align-center{translate:-50%}.marking-item.align-right{translate:-100%}.marking-overflow{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:220px;box-shadow:var(--shadow);padding:4px;position:absolute;left:-110px}.modal-backdrop{z-index:400;background:#14191e1f;justify-content:center;padding-top:16vh;display:flex;position:fixed;inset:0}.shortcut-box{background:var(--surface);border:1px solid var(--border);width:min(460px,100vw - 32px);box-shadow:var(--shadow);border-radius:8px;align-self:flex-start;animation:.1s ease-out fade-in;overflow:hidden}.shortcut-input{border-bottom:1px solid var(--border);height:44px;color:var(--text-muted);align-items:center;gap:10px;padding:0 14px;display:flex}.shortcut-input input{height:100%;color:var(--text);font:inherit;background:0 0;border:none;outline:none;flex:1;font-size:14px}.shortcut-results{max-height:360px;padding:4px;overflow-y:auto}.empty{text-align:center;color:var(--text-faint);padding:16px}.toasts{z-index:100;pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;bottom:64px;left:50%;transform:translate(-50%)}.toast{color:#fff;box-shadow:var(--shadow);background:#2b3138;border-radius:6px;padding:8px 14px;animation:.15s ease-out fade-in}.command-body{flex-direction:column;gap:2px;max-height:calc(100vh - 360px);display:flex;overflow-y:auto}.field-section{border-top:1px solid var(--border);margin-top:6px;padding-top:8px}.field-section-title{letter-spacing:.06em;color:var(--text-faint);text-transform:uppercase;margin-bottom:4px;font-size:10.5px;font-weight:600}.field-row{grid-template-columns:104px 1fr;align-items:center;gap:8px;min-height:30px;display:grid}.field-label{color:var(--text-muted)}.field-control{min-width:0}.field-input,.field-select{border:1px solid var(--border-strong);background:var(--surface);width:100%;height:26px;color:var(--text);font:inherit;font-variant-numeric:tabular-nums;border-radius:4px;outline:none;padding:0 8px}.field-input:focus,.field-select:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.field-input.invalid{border-color:var(--danger);box-shadow:0 0 0 2px #d0453c26}.segmented{border:1px solid var(--border-strong);border-radius:4px;display:flex;overflow:hidden}.segmented button{height:24px;color:var(--text-muted);flex:1;justify-content:center;align-items:center;gap:5px;font-weight:500;display:inline-flex}.segmented button+button{border-left:1px solid var(--border)}.segmented button:hover{background:var(--surface-hover)}.segmented button.on{background:var(--accent-soft);color:var(--accent)}.command-error{color:var(--danger);background:#d0453c1a;border-radius:4px;align-items:center;gap:8px;margin:0 12px 8px;padding:6px 8px;display:flex}.btn:disabled{opacity:.5}.statusbar{pointer-events:none;gap:6px;display:flex;position:absolute;bottom:14px;right:12px}.status-chip{background:var(--surface);border:1px solid var(--border);height:26px;box-shadow:var(--shadow-sm);color:var(--text-muted);font-variant-numeric:tabular-nums;border-radius:6px;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.status-chip.error{color:var(--danger);pointer-events:auto}.status-chip .fa-wrap svg{animation:1s linear infinite spin}.status-chip.error .fa-wrap svg{animation:none}@keyframes spin{to{transform:rotate(360deg)}}.sketch-palette{width:250px}.palette-status{background:var(--surface-2);border-radius:4px;padding:6px 8px;font-weight:500}.palette-status span{align-items:center;gap:6px;display:inline-flex}.status-good{color:var(--success)}.status-free{color:#1f6fd1}.status-bad{color:var(--danger)}.palette-hint{color:var(--text-muted);margin:6px 0 0;font-size:11.5px;line-height:1.45}.palette-check{cursor:pointer;align-items:center;gap:8px;height:24px;display:flex}.palette-check input{accent-color:var(--accent);margin:0}.palette-look{align-items:center;gap:6px;margin-top:6px;display:inline-flex}.btn.finish{background:var(--success);border-color:var(--success);color:#fff;align-items:center;gap:6px;display:inline-flex}.btn.finish:hover{background:var(--success-hover)}.tree-tag{background:var(--accent-soft);color:var(--accent);border-radius:3px;padding:0 5px;font-size:10px}.sk-glyph{pointer-events:auto;background:var(--surface);border:1px solid var(--border-strong);width:17px;height:17px;color:var(--text-muted);box-shadow:var(--shadow-sm);border-radius:3px;place-items:center;display:grid}.sk-glyph:hover,.sk-glyph.selected{border-color:var(--accent);color:var(--accent)}.sk-glyph.conflict,.sk-dim.conflict{border-color:var(--danger);color:var(--danger)}.sk-dim{pointer-events:auto;background:var(--surface);border:1px solid var(--border);color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap;box-shadow:var(--shadow-sm);border-radius:3px;padding:1px 5px;font-size:11px}.sk-dim:hover,.sk-dim.selected{border-color:var(--accent);color:var(--accent)}.sk-readout{color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap;background:#141e2dd1;border-radius:3px;align-items:center;gap:4px;padding:2px 6px;font-size:11px;display:inline-flex;transform:translate(14px,10px)}.sk-prompt{z-index:350;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:200px;box-shadow:var(--shadow);flex-direction:column;gap:4px;padding:8px;display:flex;position:fixed}.sk-prompt label{letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);font-size:10.5px;font-weight:600}.sk-prompt input{border:1px solid var(--accent);background:var(--surface);height:26px;color:var(--text);font:inherit;border-radius:4px;outline:none;padding:0 8px}.sk-prompt input.invalid{border-color:var(--danger)}.sk-prompt-error{color:var(--danger);font-size:11px}.selection-chip{border:1px dashed var(--border-strong);height:26px;color:var(--text-muted);border-radius:4px;align-items:center;gap:6px;padding:0 4px 0 8px;display:flex}.selection-chip.filled{border-style:solid;border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:500}.selection-chip.clickable{cursor:pointer}.selection-chip.active{box-shadow:0 0 0 2px var(--accent-ring)}.selection-chip:not(.active) .selection-arrow{opacity:.35}.selection-arrow{font-size:10px}.selection-text{flex:1}.selection-clear{border-radius:3px;width:18px;height:18px;font-size:14px;line-height:1}.selection-clear:hover{background:var(--surface-hover)}.field-check{accent-color:var(--accent);margin:0}.check-list{flex-direction:column;gap:2px;max-height:120px;display:flex;overflow-y:auto}.check-list label{align-items:center;gap:6px;display:flex}.measure-item{padding:4px 0}.measure-title{font-weight:600}.measure-value{color:var(--text-muted);font-variant-numeric:tabular-nums}.measure-value.strong{color:var(--text);font-weight:600}.sk-hud{gap:4px;display:flex;transform:translate(16px,12px)}.sk-hud-input{border:1px solid var(--border-strong);background:var(--surface);height:22px;color:var(--text);font:inherit;font-variant-numeric:tabular-nums;box-shadow:var(--shadow-sm);border-radius:3px;outline:none;padding:0 6px;font-size:11.5px}.sk-hud-input.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.sk-hud-input.typed{color:var(--accent);font-weight:600}.sk-hud-input.invalid{border-color:var(--danger)}.sk-hud-input.arrow{transform:translate(4px,-50%)}.sk-snap{border:2px solid var(--accent);background:var(--surface);width:10px;height:10px}.sk-snap.point{border-radius:1px}.sk-snap.mid{border:none;border-left:6px solid #0000;border-right:6px solid #0000;border-bottom:10px solid var(--accent);background:0 0;width:0;height:0}.sk-snap.curve{background:linear-gradient(45deg, transparent 43%, var(--accent) 43% 57%, transparent 57%), linear-gradient(-45deg, transparent 43%, var(--accent) 43% 57%, transparent 57%);border:none;width:12px;height:12px}.sk-infer{background:var(--accent);color:#fff;border-radius:3px;place-items:center;width:18px;height:18px;display:inline-grid;transform:translate(14px,-26px)}.sk-hud-input::placeholder{color:var(--text);opacity:.75}.sk-hud-input{pointer-events:auto}.command-header,.browser .panel-header{cursor:grab;touch-action:none}.command-header:active,.browser .panel-header:active{cursor:grabbing}.command-header button,.browser .panel-header button{cursor:pointer}.joint-glyph{background:var(--surface);color:#8a5cd6;width:22px;height:22px;box-shadow:var(--shadow-sm);border:1.5px solid #8a5cd6;border-radius:50%;place-items:center;display:grid}.joint-glyph:hover,.joint-glyph.selected{color:#fff;background:#8a5cd6}.pt-snap{background:#f5b81c40;border:2px solid #f5b81c;width:12px;height:12px;box-shadow:0 0 0 1px #00000059}.pt-snap.vertex{border-radius:1px}.pt-snap.center,.pt-snap.face{border-radius:50%}.pt-snap.midpoint{transform:rotate(45deg)}.pt-snap.surface{border-radius:50%;width:8px;height:8px}.pt-mark{color:#1d232a;width:18px;height:18px;box-shadow:var(--shadow-sm);background:#f5b81c;border-radius:50%;place-items:center;font-size:10.5px;font-weight:700;display:grid}.gizmo-hud{pointer-events:auto;align-items:center;gap:4px;display:inline-flex;transform:translate(10px,-50%)}.gizmo-hud-axis{color:#fff;white-space:nowrap;border-radius:3px;height:20px;padding:0 5px;font-size:11px;font-weight:600;line-height:20px}.gizmo-hud-axis.axis-X{background:#e0473c}.gizmo-hud-axis.axis-Y{background:#3fae49}.gizmo-hud-axis.axis-Z{background:#2f7fe0}.doc-tab-dirty{color:var(--accent);font-size:10px}.export-dialog{background:var(--surface);border:1px solid var(--border);width:min(420px,100vw - 32px);box-shadow:var(--shadow);border-radius:8px;align-self:flex-start;animation:.1s ease-out fade-in}.export-name{align-items:center;gap:6px;display:flex}.params-dialog{width:min(720px,100vw - 32px)}.params-table{border-collapse:collapse;width:100%;margin-bottom:10px}.params-table th{text-align:left;color:var(--text-muted,#6b7785);padding:4px;font-size:11px;font-weight:600}.params-table td{padding:3px 4px}.params-table .field-input{box-sizing:border-box;width:100%}.params-value{white-space:nowrap;font-variant-numeric:tabular-nums}.params-dialog .error-text{color:#d23c3c;font-size:11px}.window-box{pointer-events:none;z-index:5;background:#0696d714;border:1px solid #0696d7;position:absolute}.window-box.crossing{background:#2e9e4f14;border-style:dashed;border-color:#2e9e4f}.material-swatch{border:1px solid var(--border,#d0d5db);border-radius:6px;height:28px;margin-top:8px}.drawing-overlay{z-index:60;background:var(--panel-bg,#eef1f4);flex-direction:column;display:flex;position:fixed;inset:0}.drawing-toolbar{border-bottom:1px solid var(--border,#d0d5db);background:var(--surface);align-items:center;gap:10px;padding:8px 14px;display:flex}.drawing-toolbar .spacer{flex:1}.drawing-check{align-items:center;gap:4px;font-size:12px;display:flex}.drawing-canvas{flex:1;justify-content:center;align-items:flex-start;padding:24px;display:flex;overflow:auto}.drawing-svg{background:#fff;max-width:100%;height:auto;box-shadow:0 4px 20px #0000002e}.drawing-msg{margin-top:40px}.field-range{width:100%;accent-color:var(--accent,#0696d7)}.group-dropdown{max-height:calc(100vh - 140px);overflow-y:auto}.units-row{gap:4px;padding:2px 0 6px;display:flex}.units-btn{border:1px solid var(--border,#d0d5db);cursor:pointer;color:inherit;background:0 0;border-radius:4px;padding:1px 7px;font-size:11px}.units-btn.active{background:var(--accent,#0696d7);border-color:var(--accent,#0696d7);color:#fff}.tool-cursor{z-index:20;pointer-events:none;background:var(--surface);width:24px;height:24px;color:var(--accent);box-shadow:var(--shadow-sm);border:1px solid var(--border);border-radius:6px;place-items:center;position:absolute;top:0;left:0}.drawing-toolbar{flex-wrap:wrap;row-gap:6px}.drawing-toolbar .field-select.small{width:auto;height:26px;padding:0 6px;font-size:12px}.drawing-sep{background:var(--border);width:1px;height:22px}.drawing-body{flex:1;min-height:0;display:flex}.drawing-body .drawing-canvas{flex-direction:column;align-items:center}.drawing-side{border-left:1px solid var(--border);background:var(--surface);flex-direction:column;gap:8px;width:230px;padding:12px;display:flex;overflow-y:auto}.drawing-side-title{color:var(--text-muted);letter-spacing:.4px;font-size:11px;font-weight:600}.drawing-field{color:var(--text-muted);flex-direction:column;gap:3px;font-size:11px;display:flex}.drawing-field .field-input{box-sizing:border-box;width:100%}.drawing-svg.tool-dimension,.drawing-svg.tool-note{cursor:crosshair}.drawing-svg.tool-select .view{cursor:move}.drawing-svg .dim{cursor:pointer}.login-screen{background:linear-gradient(180deg, var(--viewport-top), var(--viewport-bottom));place-items:center;min-height:100vh;padding:16px;display:grid}.login-card{background:var(--surface);border:1px solid var(--border);width:min(360px,100%);box-shadow:var(--shadow);border-radius:8px;flex-direction:column;gap:12px;padding:24px;display:flex}.login-brand{align-items:center;gap:10px;font-size:18px;font-weight:600;display:flex}.login-tabs button{height:30px}.login-field{color:var(--text-muted);flex-direction:column;gap:4px;display:flex}.login-field .field-input{width:100%;height:30px}.login-error{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger);border-radius:4px;padding:6px 10px}.login-submit{height:32px}.login-links{justify-content:space-between;gap:12px;padding-top:4px;display:flex}.login-links a,.login-links .link-btn{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:none}.login-links a:hover,.login-links .link-btn:hover{text-decoration:underline}.dropdown.dropdown-right{left:auto;right:0}button.avatar{cursor:pointer;border:none}.app>.data-panel{grid-area:side}.data-panel{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;width:300px;min-height:0;display:flex}.data-crumbs{border-bottom:1px solid var(--border);color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;display:flex}.data-crumb-wrap{align-items:center;gap:2px;display:inline-flex}.data-crumb{color:var(--text-muted);border-radius:3px;padding:2px 6px;font-weight:500}.data-crumb:hover{background:var(--surface-hover);color:var(--text)}.data-crumb-wrap:last-child .data-crumb{color:var(--text)}.data-open.data-folder{color:var(--text);flex-direction:row;align-items:center;gap:8px}.data-folder svg{color:var(--warning)}.data-item.drop-over,.data-crumb.drop-over{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.data-row[draggable=true]{cursor:grab}.data-footer{border-top:1px solid var(--border);padding:8px 10px}.drop-hint{z-index:50;border:2px dashed var(--accent);background:var(--accent-soft);color:var(--accent);pointer-events:none;border-radius:8px;place-items:center;font-weight:600;display:grid;position:absolute;inset:8px}.doc-tabs{gap:2px;overflow:hidden}.doc-tab{cursor:default;min-width:120px}.doc-tab:not(.active){color:var(--text-muted);background:0 0}.doc-tab:not(.active) .doc-tab-dot{background:var(--text-faint)}.doc-tab:not(.active):hover{background:var(--surface-hover)}.doc-tab-new{align-self:center;margin-left:4px}.data-list{flex:1;padding:4px;overflow-y:auto}.data-note{color:var(--text-muted);padding:12px 8px}.data-item{border-radius:4px}.data-item.open{background:var(--accent-soft)}.data-row{align-items:center;gap:2px;display:flex}.data-open{text-align:left;border-radius:4px;flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:0;padding:6px 8px;display:flex}.data-open:hover,.data-version:hover{background:var(--surface-hover)}.data-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:500;overflow:hidden}.data-meta{color:var(--text-muted);align-items:center;gap:6px;font-size:11px;display:flex}.data-versions{border-left:1px solid var(--border);margin:0 0 4px 12px;padding:0;list-style:none}.data-version{border-radius:4px;align-items:center;gap:8px;width:100%;padding:4px 8px;font-size:11.5px;display:flex}.data-version .muted{margin-left:auto}.dropdown-heading .muted{letter-spacing:0;text-transform:none;font-weight:400}.pick-input{border-radius:4px}.pick-input.active{box-shadow:0 0 0 2px var(--accent-ring)}.dlg-backdrop{z-index:1000;background:#0f141a73;place-items:center;padding:16px;animation:.16s ease-out dlg-fade;display:grid;position:fixed;inset:0}.dlg-backdrop.closing{animation:.14s ease-in reverse forwards dlg-fade}.dlg-card{text-align:center;background:var(--surface);width:min(420px,100%);max-height:calc(100dvh - 32px);color:var(--text);border:1px solid var(--border);border-radius:12px;flex-direction:column;align-items:center;gap:10px;padding:24px 24px 20px;animation:.22s cubic-bezier(.2,.9,.3,1.25) dlg-pop;display:flex;overflow-y:auto;box-shadow:0 24px 60px #00000047}.dlg-backdrop.closing .dlg-card{animation:.14s ease-in forwards dlg-out}.dlg-icon{border-radius:50%;place-items:center;width:60px;height:60px;animation:.4s ease-out dlg-icon;display:grid}.dlg-icon-warning{color:var(--warning);background:color-mix(in srgb, var(--warning) 14%, transparent)}.dlg-icon-question,.dlg-icon-info{color:var(--accent);background:var(--accent-soft)}.dlg-icon-error{color:var(--danger);background:color-mix(in srgb, var(--danger) 14%, transparent)}.dlg-icon-success{color:var(--success);background:color-mix(in srgb, var(--success) 14%, transparent)}.dlg-title{overflow-wrap:anywhere;margin:4px 0 0;font-size:17px;font-weight:600;line-height:1.35}.dlg-text{color:var(--text-muted);white-space:pre-line;overflow-wrap:anywhere;margin:0;line-height:1.55}.dlg-field{text-align:left;color:var(--text-muted);flex-direction:column;align-self:stretch;gap:4px;margin-top:4px;display:flex}.dlg-input{width:100%;height:36px;font-size:14px}.dlg-input.invalid{border-color:var(--danger)}.dlg-error{color:var(--danger);font-size:12px}.dlg-actions{flex-wrap:wrap;justify-content:center;align-self:stretch;gap:8px;margin-top:10px;display:flex}.dlg-btn{border:1px solid var(--border-strong);background:var(--surface);min-width:96px;height:38px;color:var(--text);border-radius:8px;flex:1 1 0;padding:0 16px;font-size:13.5px;font-weight:500}.dlg-btn:hover{background:var(--surface-hover)}.dlg-btn:focus-visible{box-shadow:0 0 0 3px var(--accent-ring);outline:none}.dlg-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.dlg-btn.primary:hover{background:var(--accent-hover)}.dlg-btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.dlg-btn.danger:hover{filter:brightness(.92)}@media (width<=560px){.dlg-backdrop{place-items:end stretch;padding:0}.dlg-card{width:100%;max-height:90dvh;padding:22px 18px calc(18px + env(safe-area-inset-bottom));border-bottom:none;border-radius:16px 16px 0 0;animation-name:dlg-sheet}.dlg-backdrop.closing .dlg-card{animation:.14s ease-in reverse forwards dlg-sheet}.dlg-actions{flex-direction:column-reverse}.dlg-btn{flex:none;height:44px;font-size:15px}.dlg-input{height:42px;font-size:16px}}@keyframes dlg-fade{0%{opacity:0}}@keyframes dlg-pop{0%{opacity:0;transform:scale(.92)translateY(6px)}}@keyframes dlg-out{to{opacity:0;transform:scale(.96)}}@keyframes dlg-sheet{0%{transform:translateY(100%)}}@keyframes dlg-icon{0%{opacity:0;transform:scale(.4)rotate(-12deg)}}@media (prefers-reduced-motion:reduce){.dlg-backdrop,.dlg-card,.dlg-icon{animation:none!important}}.data-panel{position:relative}.data-upload{align-items:center;gap:5px;height:22px;margin-right:2px;padding:0 8px;font-size:11.5px;display:inline-flex}.data-drop-hint{z-index:5;text-align:center;border:2px dashed var(--accent);background:color-mix(in srgb, var(--surface) 80%, var(--accent) 20%);color:var(--accent);pointer-events:none;border-radius:8px;place-items:center;padding:16px;font-weight:600;display:grid;position:absolute;inset:6px}.data-scrim{display:none}@media (width<=1023px){.app>.data-panel{z-index:300;width:min(340px,88vw);box-shadow:var(--shadow);animation:.18s ease-out data-slide;position:fixed;top:36px;bottom:0;left:0}.data-scrim{z-index:299;background:#0f141a59;animation:.18s ease-out dlg-fade;display:block;position:fixed;inset:36px 0 0}}@keyframes data-slide{0%{transform:translate(-100%)}}.dropdown-item.danger{color:var(--danger)}.data-menu{z-index:400;min-width:210px}.touch-bar{display:none}@media (hover:none) and (pointer:coarse){.touch-bar{z-index:20;flex-wrap:wrap;gap:6px;max-width:calc(100% - 24px);display:flex;position:absolute;bottom:14px;left:12px}.touch-btn{border:1px solid var(--border);background:var(--surface);height:44px;color:var(--text);box-shadow:var(--shadow-sm);border-radius:22px;align-items:center;gap:7px;padding:0 14px;font-size:13px;font-weight:500;display:inline-flex}.touch-btn.on{background:var(--accent);border-color:var(--accent);color:#fff}.navbar,.statusbar{bottom:66px}.icon-btn{min-width:36px;min-height:36px}.icon-btn.small{min-width:34px;min-height:34px}.tool-btn{min-width:44px;min-height:44px}.dropdown-item{height:44px;font-size:13.5px}.tree-row{min-height:34px}.timeline-item{min-width:34px;min-height:34px}.doc-tab{height:34px}.doc-tab-close{padding:8px}.btn{height:36px}.field-input,.field-select{min-height:34px;font-size:16px}.selection-chip{height:36px}.segmented button{height:34px}.data-open{padding:10px 8px}.data-crumb{padding:8px 10px}.data-upload{height:32px;padding:0 12px}}.upload-progress{background:var(--surface);width:min(320px,100vw - 32px);color:var(--text);border:1px solid var(--border);box-shadow:var(--shadow);z-index:101;border-radius:8px;padding:10px 12px;animation:.15s ease-out fade-in;position:absolute;bottom:64px;right:16px}.upload-progress-head{align-items:baseline;gap:8px;font-size:12px;display:flex}.upload-progress-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.upload-progress-percent{font-variant-numeric:tabular-nums;color:var(--text-muted)}.upload-progress-track{background:var(--border);border-radius:3px;height:6px;margin:8px 0 6px;overflow:hidden}.upload-progress-bar{background:var(--accent);border-radius:3px;height:100%;transition:width .2s ease-out}.upload-progress-stage{color:var(--text-muted);font-size:11px}.test-motion{align-items:center;gap:8px;display:flex}.test-motion input{min-width:0;accent-color:var(--accent);flex:1}.test-motion span{text-align:right;font-variant-numeric:tabular-nums;width:52px;color:var(--text-muted)}.joint-glyph.draft{color:#ff8c00;pointer-events:none;border-color:#ff8c00}
