@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/archivo-vietnamese-300-normal-DlA9Skee.woff2)format("woff2"),url(/assets/archivo-vietnamese-300-normal-D1FN3R2n.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/archivo-latin-ext-300-normal-0WwdIqab.woff2)format("woff2"),url(/assets/archivo-latin-ext-300-normal-D3llZCfd.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Archivo;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/archivo-latin-300-normal-AMs-pvbP.woff2)format("woff2"),url(/assets/archivo-latin-300-normal-BRswihEa.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-vietnamese-400-normal-BF4g3tCF.woff2)format("woff2"),url(/assets/archivo-vietnamese-400-normal-FGOLYM1a.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-ext-400-normal-B5tPZzqW.woff2)format("woff2"),url(/assets/archivo-latin-ext-400-normal-DrmqtLj6.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-400-normal-C81ewxNO.woff2)format("woff2"),url(/assets/archivo-latin-400-normal-Bl602Mgc.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-vietnamese-500-normal-k0drYPZA.woff2)format("woff2"),url(/assets/archivo-vietnamese-500-normal-7W3lD2kQ.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-latin-ext-500-normal-RFhg4CpD.woff2)format("woff2"),url(/assets/archivo-latin-ext-500-normal-D7mXw3Kz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-latin-500-normal-CGugC8dq.woff2)format("woff2"),url(/assets/archivo-latin-500-normal-pkzA7jw9.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-vietnamese-600-normal-anCjMumA.woff2)format("woff2"),url(/assets/archivo-vietnamese-600-normal-C8xBVdfP.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-ext-600-normal-Dm61iqcg.woff2)format("woff2"),url(/assets/archivo-latin-ext-600-normal-D7uErJuz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-600-normal-3BBy0ZsW.woff2)format("woff2"),url(/assets/archivo-latin-600-normal-DwYieO8P.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-vietnamese-700-normal-nuAQAQa7.woff2)format("woff2"),url(/assets/archivo-vietnamese-700-normal-Bz2vkKqq.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-latin-ext-700-normal-DD_nkw6b.woff2)format("woff2"),url(/assets/archivo-latin-ext-700-normal-CgyfnKjw.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-latin-700-normal-D9cHMWGj.woff2)format("woff2"),url(/assets/archivo-latin-700-normal-lT5TFe7H.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f3f4f8;--panel:#fff;--panel-2:#f0f1f6;--line:#dcdfe8;--txt:#1b2033;--muted:#5f657a;--signal:#dc9a00;--on-signal:#1a1200;--ok:#2f855a;--warn:#b45309;--danger:#c02626;--canvas:#dfe3ec;--backdrop:#1218306b;--shadow:0 1px 2px #161c3c0f, 0 8px 24px #161c3c14;--radius:8px;--font:Archivo, "Helvetica Neue", Arial, sans-serif;--fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-lg:14px;--fs-xl:17px;--fw-normal:400;--fw-medium:500;--fw-strong:600;--frame-bg:#141b34;--frame-txt:#eef0f8;--frame-muted:#a4abc4;--frame-line:#27305a;--frame-hover:#212a50;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0f1319;--panel:#171d25;--panel-2:#1e2632;--line:#2b3441;--txt:#e7ecf2;--muted:#94a0ae;--signal:#ffc400;--on-signal:#181200;--ok:#4ade80;--warn:#fb923c;--danger:#f87171;--canvas:#cfd5dc;--backdrop:#05080c80;--shadow:0 1px 2px #0006, 0 10px 28px #00000059;--frame-bg:var(--panel);--frame-txt:var(--txt);--frame-muted:var(--muted);--frame-line:var(--line);--frame-hover:var(--panel-2);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--txt);font-family:var(--font);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;min-width:1024px;line-height:1.4}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}small{font-size:var(--fs-xs)}h1,h2{letter-spacing:-.01em;margin:0 0 8px}h1{font-size:var(--fs-xl);font-weight:var(--fw-strong)}h2{font-size:var(--fs-lg);font-weight:var(--fw-strong)}.muted{color:var(--muted)}.icon{flex:none;width:18px;height:18px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.shell{grid-template-rows:auto 1fr;grid-template-columns:208px 1fr;height:100%;display:grid}.shell-collapsed{grid-template-columns:52px 1fr}.titlebar,.sidebar{--panel:var(--frame-bg);--panel-2:var(--frame-hover);--line:var(--frame-line);--txt:var(--frame-txt);--muted:var(--frame-muted);color:var(--txt)}.titlebar{background:var(--panel);border-bottom:1px solid var(--line);grid-column:1/-1;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:3px 12px;display:grid}.titlebar-side{align-items:center;gap:10px;min-width:0;display:flex}.titlebar-end{justify-content:flex-end}.project-title{align-items:center;gap:4px;min-width:0;max-width:280px;display:flex}.project-name-text{font-weight:var(--fw-strong);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.titlebar-home{color:var(--txt);border-radius:var(--radius);cursor:pointer;background:0 0;border:0;flex:none;padding:4px;display:flex}.titlebar-home:hover{background:var(--panel-2)}.project-rename{color:var(--muted);border-radius:var(--radius);cursor:pointer;background:0 0;border:0;flex:none;padding:4px;display:flex}.project-rename:hover,.project-rename:focus-visible{color:inherit;background:var(--panel-2)}.titlebar input.project-name{width:280px;font-weight:var(--fw-strong);border-radius:var(--radius);background:0 0;border:1px solid #0000;padding:6px 8px}.project-name:hover,.project-name:focus{border-color:var(--line);background:var(--panel-2)}.save-state{white-space:nowrap;font-size:var(--fs-sm);color:var(--muted)}.save-error{color:var(--danger);font-weight:var(--fw-strong)}.sidebar{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;gap:2px;padding:10px;display:flex}.nav-item{border-radius:var(--radius);color:var(--muted);font-weight:var(--fw-medium);text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:9px 10px;display:flex}.nav-item-bottom{margin-top:auto}.nav-item:hover{background:var(--panel-2)}.nav-item[aria-current=page]{background:var(--panel-2);color:var(--txt)}.nav-item[aria-current=page] .icon{color:var(--signal)}.main{min-width:0;min-height:0;position:relative;overflow:auto}.split{height:100%;display:flex}.split-list{width:var(--list-width,380px);border-right:1px solid var(--line);flex:none;padding:18px;overflow:auto}.split-detail{flex:1;min-width:0;padding:18px 24px;overflow:auto}.list-actions{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.list-actions .btn{font-size:var(--fs-md);padding:5px 10px}.list-search{align-items:center;gap:10px;margin:0 0 10px;display:flex}.list-search input{flex:1;min-width:0}.list-search span{font-size:var(--fs-sm);flex:none}.empty{border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);text-align:center;background:var(--panel);margin:12px 0;padding:18px 16px}.empty p{margin:0 0 6px}.empty .steps-title{font-size:var(--fs-sm);font-weight:var(--fw-strong);margin-top:12px}.steps{text-align:left;margin:0;padding-left:20px;display:inline-block}.login-form{gap:12px;width:min(260px,100%);display:grid}.login-error{color:var(--danger,#e5484d);margin:0}.user-menu{position:relative}.user-menu-list{z-index:20;min-width:184px;font-size:var(--fs-sm);background:var(--panel);border:1px solid var(--line);border-radius:8px;margin-top:4px;padding:4px;position:absolute;top:100%;right:0;box-shadow:0 6px 18px #00000038}.user-menu-list:before{content:"";height:6px;position:absolute;top:-6px;left:0;right:0}.user-menu-list button{white-space:nowrap;width:100%;font-size:inherit;font-weight:var(--fw-medium);text-align:left;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;padding:5px 10px}.user-menu-group{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:3px 0;padding:3px 0}.menu-label{color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-strong);letter-spacing:.06em;text-transform:uppercase;padding:3px 10px 2px;display:block}.export-list{min-width:250px}.export-row{align-items:center;gap:6px;padding:2px 6px 2px 10px;display:flex}.export-row>span{white-space:nowrap;flex:1}.user-menu-list .export-format{border:1px solid var(--line);width:auto;font-size:var(--fs-sm);font-weight:var(--fw-strong);padding:3px 8px}.menu-check{width:1.1em;color:var(--signal);font-size:var(--fs-xs);display:inline-block}.user-menu-list button:hover,.user-menu-list button:focus-visible{background:var(--panel-2)}.nav-toggle{width:28px;height:28px;color:var(--muted);border-radius:var(--radius);cursor:pointer;background:0 0;border:0;justify-content:center;align-self:flex-end;align-items:center;margin-bottom:6px;padding:0;display:flex}.nav-toggle:hover{background:var(--panel-2)}.sidebar-collapsed{padding:10px 6px}.sidebar-collapsed .nav-toggle{align-self:center}.sidebar-collapsed .nav-item{justify-content:center;padding:9px 0}.sidebar-collapsed .nav-label{display:none}.titlebar .btn{font-size:var(--fs-md);padding:3px 9px}.titlebar input.project-name{padding:3px 6px}.welcome{place-items:center;min-height:100%;padding:24px;display:grid}.welcome-page{gap:14px;width:min(560px,100%);display:grid}.welcome-block{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:12px;padding:18px 20px}.welcome-block h1,.welcome-block h2{margin:0}.welcome-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.welcome-head p{margin:4px 0 0}.welcome-block-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.welcome-block>h2{margin-bottom:10px}.usage{color:var(--muted);font-size:var(--fs-sm);white-space:nowrap}.usage-warn{color:var(--danger)}.usage-bar{background:var(--panel-2);border-radius:2px;height:4px;margin-top:14px;overflow:hidden}.usage-bar>span{background:var(--muted);height:100%;display:block}.usage-warn+.usage-bar>span{background:var(--danger)}.new-project{gap:8px;display:flex}.new-project input{flex:1;min-width:0}.welcome-actions{flex-wrap:wrap;gap:8px;display:flex}.welcome-status{text-align:center;margin:0}.recent-list{margin:0;padding:0;list-style:none}.recent-row{border-top:1px solid var(--line);align-items:center;gap:4px;display:flex}.recent-row:first-child{border-top:0}.recent-row .recent-item{flex:1;min-width:0}.recent-delete{color:var(--muted);padding:6px}.recent-delete:hover:not(:disabled){color:var(--danger)}.recent-item{border-radius:var(--radius);text-align:left;background:0 0;border:0;flex-direction:column;width:100%;padding:9px 8px;display:flex}.recent-item:hover:not(:disabled){background:var(--panel-2)}.recent-name{font-weight:var(--fw-medium)}.recent-path{color:var(--muted);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.note{border-radius:var(--radius);background:var(--panel-2);color:var(--muted);font-size:var(--fs-md);margin:0;padding:10px 12px}.btn{white-space:nowrap;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);font-weight:var(--fw-medium);font-size:var(--fs-md);align-items:center;gap:6px;padding:6px 12px;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--muted)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--signal);border-color:var(--signal);color:var(--on-signal)}.btn-danger{color:var(--danger);background:0 0}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--panel-2);border-color:#0000}:where(input:not([type=color]):not([type=checkbox]),select,textarea){border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);width:100%;padding:6px 9px}input[type=color]{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);width:44px;height:38px;padding:2px}.field{flex-direction:column;gap:4px;display:flex}.field>span:first-child{color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-strong)}.field small{color:var(--muted)}.color-input{gap:8px;display:flex}.item-list{margin:0;padding:0;list-style:none}.item{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);text-align:left;align-items:center;gap:12px;width:100%;margin-bottom:4px;padding:7px 10px;display:flex}.item:hover{border-color:var(--muted)}.item[aria-current=true]{border-color:var(--signal);box-shadow:inset 3px 0 0 var(--signal)}.item-text{flex-direction:column;min-width:0;display:flex}.item-title{font-weight:var(--fw-medium)}.item-sub{color:var(--muted);font-size:var(--fs-sm)}.swatch{border:1px solid #0003;border-radius:6px;flex:none;width:26px;height:26px}.editor{max-width:720px}.form-grid{grid-template-columns:minmax(110px,140px) minmax(0,1fr) minmax(150px,200px);gap:14px;margin-bottom:16px;display:grid}.specs-grid{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}.group-title{color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-strong);margin:14px 0 6px}fieldset{border:1px solid var(--line);border-radius:var(--radius);margin:0 0 16px;padding:12px}legend{color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-strong);padding:0 6px}.field-list{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.form-actions{z-index:4;border-top:1px solid var(--line);background:var(--bg);gap:8px;margin:0 -24px -18px;padding:10px 24px;display:flex;position:sticky;bottom:-18px}.push-right{margin-left:auto}.form-error{border:1px solid var(--danger);border-radius:var(--radius);color:var(--danger);margin:0 0 12px;padding:8px 10px}.dialog{border:1px solid var(--line);background:var(--panel);color:var(--txt);box-shadow:var(--shadow);border-radius:12px;padding:0}.dialog::backdrop{background:var(--backdrop)}.dialog-body{width:min(440px,90vw);padding:20px}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.toasts{z-index:100;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);max-width:420px;box-shadow:var(--shadow);align-items:center;gap:12px;padding:10px 12px;display:flex}.toast-error{border-color:var(--danger)}.toast-close{font-size:var(--fs-xl);background:0 0;border:0;margin-left:auto;line-height:1}.page{padding:18px 24px}.grid{border-collapse:collapse;width:100%;font-size:var(--fs-md)}.grid th{border-bottom:1px solid var(--line);color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-strong);text-align:left;padding:6px 8px}.grid td{border-bottom:1px solid var(--line);padding:3px 4px}.grid td input{padding:5px 8px}.grid .num{font-variant-numeric:tabular-nums;white-space:nowrap}.col-narrow{width:150px}.row-actions{white-space:nowrap;text-align:right}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.folder-dialog{width:min(720px,80vw)}.folder-list{border:1px solid var(--line);border-radius:var(--radius);max-height:46vh;overflow:auto}.folder-row{border-bottom:1px solid var(--line);font-size:var(--fs-md);grid-template-columns:auto minmax(0,2fr) minmax(0,1fr);align-items:center;gap:10px;padding:4px 8px;display:grid}.folder-name,.folder-path{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.field-options{font-size:var(--fs-md);grid-column:1/-1}.field-options summary{cursor:pointer;color:var(--muted)}.history-list{max-height:50vh;margin:0;padding:0;list-style:none;overflow:auto}.history-list li{border-bottom:1px solid var(--line);font-size:var(--fs-md);justify-content:space-between;gap:16px;padding:5px 0;display:flex}.shortcut-list{margin:0}.shortcut-list div{font-size:var(--fs-md);grid-template-columns:200px 1fr;gap:12px;padding:3px 0;display:grid}.shortcut-list dt,.shortcut-list dd{margin:0}kbd{border:1px solid var(--line);background:var(--panel-2);font-family:inherit;font-size:var(--fs-sm);border-radius:4px;padding:1px 6px}.col-open{width:70px}.planview{flex-direction:column;height:100%;display:flex}.toolbars{border-bottom:1px solid var(--line);background:var(--panel)}.toolbar{background:var(--panel);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 10px;display:flex}.toolbar+.toolbar{padding-top:0}.toolbar select{width:auto;max-width:260px}.toolbar .toolbar-end{margin-left:auto}.toolbar-group{align-items:center;gap:6px;display:flex}.toolbar-small{font-size:var(--fs-sm)}.toolbar-small .btn{font-size:var(--fs-sm);padding:3px 8px}.toolbar-small .toolbar-value{min-width:38px}.toolbar-sep{background:var(--line);width:1px;height:22px;margin:0 4px}.toolbar-value{text-align:center;font-variant-numeric:tabular-nums;min-width:46px}.viewport{background:var(--canvas);outline-offset:-2px;touch-action:none;-webkit-user-select:none;user-select:none;flex:1;min-height:0;position:relative;overflow:hidden}.viewport.tool-place{cursor:crosshair}.viewport.panning,.viewport.tool-pan{cursor:grab}.viewport.tool-pan:active{cursor:grabbing}.stage{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.stage-bg{background:#fff;box-shadow:0 2px 12px #00000040}.stage-markers{pointer-events:none}.layer-full{width:100%;height:100%;display:block}.layer-region{pointer-events:none;opacity:0;position:absolute;top:0;left:0}.marker{pointer-events:auto;transform:translate(-50%, -50%) scale(calc(1 / var(--k,1)));transform-origin:50%;cursor:pointer;position:absolute}.marker svg{display:block;overflow:visible}.marker-selected{outline:3px solid var(--signal);outline-offset:3px;z-index:2;border-radius:8px}.callout{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:var(--fw-strong);letter-spacing:-.01em;white-space:nowrap;cursor:grab;touch-action:none;z-index:3;border:1.5px solid #fff;border-radius:999px;align-items:center;line-height:1;display:flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 3px #00000073}.callout:active{cursor:grabbing}.leader{pointer-events:none;position:absolute;top:50%;left:50%;overflow:visible}.marquee{border:1px solid var(--signal);pointer-events:none;background:#ffc40026;position:absolute}.viewport-note{border-radius:var(--radius);background:var(--panel);margin:0;padding:6px 10px;position:absolute;top:10px;left:10px}.viewport-error{color:var(--danger)}.statusbar{white-space:nowrap;border-top:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:var(--fs-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:2px 12px;padding:4px 12px;display:flex}.statusbar>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.statusbar-tools{flex:none}.planview-body{flex:1;min-height:0;display:flex}.planview-main{flex-direction:column;flex:1;min-width:0;display:flex}.count{font-weight:400}.count-over{color:var(--danger);font-weight:var(--fw-strong)}.schedule{height:100%;display:flex}.schedule-main{flex-direction:column;flex:1;min-width:0;display:flex}.toolbar .search{flex:140px;width:auto;min-width:120px;max-width:240px}.toolbar-schedule select{max-width:130px}.toolbar-schedule .btn{font-size:var(--fs-md);padding:4px 10px}.stable{min-height:0;font-size:var(--fs-md);flex:1;position:relative;overflow:auto}.shead{z-index:3;background:var(--panel-2);border-bottom:1px solid var(--line);display:grid;position:sticky;top:0}.sheader{border:0;border-right:1px solid var(--line);color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-strong);text-align:left;white-space:nowrap;text-overflow:ellipsis;background:0 0;padding:6px 8px;overflow:hidden}.sheader:hover{color:var(--txt)}.sbody{position:relative}.sheader-sticky,.scell-sticky{z-index:1;background:inherit;box-shadow:1px 0 0 var(--line);position:sticky;left:0}.srow{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;display:grid;position:absolute;left:0}.srow-selected{background:color-mix(in srgb, var(--signal) 22%, var(--panel))}.scell{min-width:0;padding:0 2px}.scell input,.scell select{background:0 0;border-color:#0000;padding:4px 6px}.scell input:focus,.scell select:focus{border-color:var(--signal);background:var(--panel-2)}.scell-ro{text-overflow:ellipsis;white-space:nowrap;color:var(--muted);padding:0 8px;overflow:hidden}.scell-code{color:var(--txt);font-weight:var(--fw-strong);padding:0 8px}.inline-check{font-size:var(--fs-md);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.inspector{width:var(--inspector-width,460px);border-left:1px solid var(--line);background:var(--panel);flex:none;padding:12px;overflow:auto}.column-resizer{z-index:2;cursor:col-resize;touch-action:none;background:0 0;flex:none;width:6px;margin-left:-3px}.column-resizer:hover,.column-resizer:focus-visible,.column-resizer:active{background:var(--signal);opacity:.6}.inspector .field{margin-bottom:10px}.inspector-head{z-index:3;background:var(--panel);justify-content:space-between;align-items:flex-start;gap:6px;margin:-12px -12px 6px;padding:12px 12px 6px;display:flex;position:sticky;top:-12px}.inspector-head h2{overflow-wrap:anywhere;flex:1;min-width:0;margin:0}.inspector-head .btn{flex:none}.inspector-plan{color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-medium);margin-top:2px;line-height:1.3;display:block}.choices{gap:6px;margin-bottom:10px;display:grid}.choice-row{align-items:center;gap:4px;display:flex}.choice-legend{width:72px;color:var(--muted);font-size:var(--fs-sm);font-weight:var(--fw-strong);flex:none}.choice{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:inherit;font-size:var(--fs-sm);background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;padding:4px 9px;overflow:hidden}.choice[aria-pressed=true]{color:var(--on-signal);font-weight:var(--fw-strong);background:var(--signal);border-color:var(--signal)}.inspector-actions{z-index:3;background:var(--panel);border-top:1px solid var(--line);gap:8px;margin:12px -12px -12px;padding:8px 12px;display:flex;position:sticky;bottom:-12px}.inspector .face-wrap{width:min(100%, calc(min(var(--max-h,380px), 34vh) * var(--ratio,.5)))}.face-editor{padding:8px}.tabs{gap:4px;margin-bottom:10px;display:flex}.tab{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);min-width:34px;font-weight:var(--fw-strong);padding:5px 10px}.tab[aria-selected=true]{border-color:var(--signal);background:var(--signal);color:var(--on-signal)}.face-rows{gap:4px;display:grid}.face-row{align-items:center;gap:4px;display:flex}.face-row-num{width:14px;color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-strong);text-align:right;flex:none}.face-cell{flex:none;min-width:0}.face-cell-text{flex:1 1 0}.face-cell-text input{width:100%}.face-cell-symbols{gap:3px;display:flex}.face-cell-symbol .picker-name,.face-cell-symbols .picker-name,.face-cell-symbol .picker-trigger>span[aria-hidden],.face-cell-symbols .picker-trigger>span[aria-hidden]{display:none}.face-cell-symbol .picker-trigger,.face-cell-symbols .picker-trigger{padding:3px}.mini-field{gap:2px;min-width:0;display:grid}.mini-field>span{color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-strong)}.face-rows input,.face-rows select{min-height:28px;font-size:var(--fs-md);padding:3px 8px}.align-cycle{flex:none}.align-default{opacity:.45}.light-input{font-weight:300}.field-pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.rows-stepper{color:var(--muted);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:6px;margin-top:6px;display:flex}.rows-stepper .btn{min-width:28px;font-size:var(--fs-lg);justify-content:center;padding:2px 8px;line-height:1.2}.settings-form{flex-direction:column;gap:12px;display:flex}.dialog-body:has(.settings-form){width:min(600px,92vw)}.settings-fields{grid-template-columns:2fr 1fr 1fr;align-items:start;gap:12px;display:grid}.settings-upgrade{justify-items:start;gap:6px;display:grid}.face-wrap{width:min(100%, calc(var(--max-h,380px) * var(--ratio,.5)));aspect-ratio:var(--ratio,.5);border:1px solid var(--line);border-radius:4px;margin:8px auto;position:relative;overflow:hidden}.face-svg{width:100%;height:100%;display:block}.face-hit{cursor:text}.face-hit:hover{fill-opacity:.8}.face-edit{z-index:2;width:55%;min-width:120px;box-shadow:var(--shadow);position:absolute}.face-caption{text-align:center;font-size:var(--fs-sm);margin:0}.face-warning{color:var(--danger,#f87171);font-size:var(--fs-sm);margin:4px 0 0}.template-editor{flex-direction:column;gap:8px;min-width:0;display:flex}.template-body{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:start;gap:16px;display:grid}.template-controls{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px 12px;min-width:0;display:grid}.check{align-items:center;gap:6px;display:flex}.photo-list{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin:0 0 8px;padding:0;list-style:none;display:grid}.photo{flex-direction:column;gap:4px;min-width:0;display:flex}.photo img{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--line);border-radius:4px;width:100%;display:block}.photo-missing,.photo-date{font-size:var(--fs-sm)}.picker{position:relative}.picker-trigger{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);width:100%;color:inherit;cursor:pointer;text-align:left;align-items:center;gap:8px;padding:3px 8px 3px 3px;display:flex}.picker-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.picker-pop{z-index:50;border:1px solid var(--line);background:var(--panel);max-height:340px;box-shadow:var(--shadow);border-radius:8px;flex-direction:column;gap:8px;padding:8px;display:flex;position:fixed}.picker-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:6px;display:grid;overflow-y:auto}.picker-option{color:inherit;font-size:var(--fs-xs);text-align:center;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;line-height:1.2;display:flex}.picker-option:hover,.picker-option[aria-selected=true]{border-color:var(--signal);background:var(--panel-2)}.symbol-bg{fill:#0b2a55}.picker-empty{margin:0}.face-frame{position:relative}.face-enlarge{z-index:3;border:1px solid var(--line);background:var(--panel);width:28px;height:28px;color:inherit;cursor:pointer;border-radius:6px;position:absolute;top:12px;right:6px}.dialog-body:has(.face-large){width:min(1000px,94vw)}.face-large{justify-content:center;display:flex}.align-buttons{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);gap:2px;padding:2px;display:inline-flex}.align-button{width:32px;height:28px;color:var(--txt);cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;display:grid}.align-button:hover:not(:disabled){background:var(--panel)}.align-button[aria-pressed=true]{background:var(--signal);color:#12161c}.align-button:disabled{opacity:.4;cursor:default}.scale-button{width:auto;font-size:var(--fs-sm);padding:0 8px}.find-list{max-height:46vh;margin:8px 0 0;padding:0;list-style:none;overflow:auto}.find-item{border-radius:var(--radius);cursor:pointer;grid-template-columns:auto minmax(0,1fr);align-items:baseline;column-gap:10px;padding:5px 10px;line-height:1.3;display:grid}.find-active{background:var(--panel-2);box-shadow:inset 3px 0 0 var(--signal)}.find-code{font-weight:var(--fw-strong)}.find-summary{grid-column:1/-1}.find-meta,.find-summary{color:var(--muted);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dialog-body:has(.find-list){width:min(560px,92vw)}.identity-grid{flex-wrap:wrap;display:flex}.identity-grid>:first-child{flex:0 140px;min-width:110px}.identity-grid>:nth-child(2){flex:200px;min-width:0}.identity-grid>:nth-child(3){flex:0 200px;min-width:150px}.field-row{flex-wrap:wrap;align-items:center;gap:6px;width:100%;display:flex}.field-row>input:first-child{flex:150px;min-width:0}.field-row>.field-max{flex:0 0 110px;min-width:0}.field-row>.btn{flex:none}.field-row>.field-options{flex:1 0 100%}.grid .col-name{min-width:200px}.graphic-field{grid-template-columns:1fr;gap:4px;margin-top:10px;display:grid}.graphic-label{color:var(--muted);font-size:var(--fs-sm);font-weight:var(--fw-strong)}.graphic-thumb{border:1px solid var(--line);border-radius:var(--radius);background:repeating-conic-gradient(var(--panel-2) 0% 25%, var(--panel) 0% 50%) 0 0 / 14px 14px;place-items:center;min-height:44px;padding:4px;display:grid;overflow:hidden}.graphic-thumb img{max-width:100%;max-height:90px;display:block}.graphic-actions{gap:6px;display:flex}.production-fields{gap:10px;display:grid}.production-fields[aria-disabled=true]{opacity:.55}.production-numbers{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.production-fields textarea{resize:vertical}.production-short{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.rotate-arm{z-index:3;pointer-events:none;width:0;height:0;position:absolute;top:50%;left:50%}.rotate-handle{border:2px solid var(--signal);cursor:grab;pointer-events:auto;touch-action:none;background:#fff;border-radius:50%;width:14px;height:14px;position:absolute;left:-7px;box-shadow:0 1px 3px #00000059}.rotate-handle:before{content:"";position:absolute;inset:-8px}.rotate-handle:after{background:var(--signal);content:"";width:2px;height:8px;margin-left:-1px;position:absolute;top:100%;left:50%}.rotate-handle:active{cursor:grabbing}.rotate-readout{color:#fff;font-size:var(--fs-xs);font-weight:var(--fw-strong);font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;background:#111a33eb;border-radius:4px;padding:1px 6px;position:absolute;bottom:22px;left:50%}.rotation-row{align-items:center;gap:4px;margin-bottom:10px;display:flex}.rotation-input{width:64px;font-size:var(--fs-sm);text-align:right;font-variant-numeric:tabular-nums;padding:3px 6px}.rotation-unit{color:var(--muted);font-size:var(--fs-sm);margin-right:4px}:root{--st-a_programmer:#8a91a8;--st-valide:#2b6cb0;--st-en_fabrication:#c2650a;--st-pose:#2f855a}:root[data-theme=dark]{--st-a_programmer:#94a0ae;--st-valide:#63a4ff;--st-en_fabrication:#fb923c;--st-pose:#4ade80}select[data-status]{border-left:4px solid var(--st,var(--line));padding-left:6px}select[data-status=a_programmer]{--st:var(--st-a_programmer)}select[data-status=valide]{--st:var(--st-valide)}select[data-status=en_fabrication]{--st:var(--st-en_fabrication)}select[data-status=pose]{--st:var(--st-pose)}.ratecard{text-align:left;flex-direction:column;height:100%;padding:16px 20px 0;display:flex}.rc-head{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:12px;display:flex}.rc-head h1{margin:0 0 2px}.rc-head p{max-width:62ch;font-size:var(--fs-sm);margin:0}.rc-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:6px;display:flex}.rc-actions .btn{font-size:var(--fs-md);padding:5px 10px}.rc-scroll{border-top:1px solid var(--line);flex:1;min-height:0;margin:0 -20px;overflow:auto}.rc-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:var(--fs-md);font-variant-numeric:tabular-nums}.rc-table th{z-index:2;color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-strong);text-align:left;white-space:nowrap;background:var(--panel-2);border-bottom:1px solid var(--line);padding:6px 8px;position:sticky;top:0}.rc-table td{border-bottom:1px solid var(--line);background:var(--panel);height:30px;padding:0 2px}.rc-table input{min-width:0;font-size:inherit;background:0 0;border-color:#0000;border-radius:4px;padding:3px 6px}.rc-table input:hover{border-color:var(--line)}.rc-table input:focus{border-color:var(--signal);background:var(--panel-2)}.rc-table td:first-child input{width:9em;font-weight:var(--fw-strong)}.rc-table td:nth-child(2) input{width:16em}.rc-table td:nth-child(7) input{width:17em}.rc-table td:nth-child(8) input{width:11em}.rc-table td:nth-child(9) input{width:7em}.rc-table th.rc-hn,.rc-table th.rc-calc{text-align:right}.rc-table th.rc-hn{padding-right:9px}.rc-n input{text-align:right;width:5.5em}.rc-part td{background:color-mix(in srgb, var(--panel-2) 55%, var(--panel))}.rc-part td:first-child input{font-weight:var(--fw-medium);padding-left:18px}.rc-sticky{z-index:1;box-shadow:1px 0 0 var(--line);position:sticky;left:0}.rc-table th.rc-sticky{z-index:3}.rc-calc{color:var(--muted);text-align:right;white-space:nowrap;padding:0 10px!important}.rc-total{color:var(--txt);font-weight:var(--fw-strong)}.rc-remove{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:4px;padding:4px;display:flex}.rc-remove:hover{color:var(--danger)}.rc-materials{font-size:var(--fs-md);margin-bottom:12px}.rc-materials summary{width:max-content;color:var(--txt);font-weight:var(--fw-strong);cursor:pointer}.rc-materials p{max-width:78ch;font-size:var(--fs-sm);margin:4px 0 8px}.rc-material-list{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.rc-material{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:1fr 84px;grid-template-areas:"name price""lines price";align-items:center;column-gap:8px;padding:6px 8px;display:grid}.rc-material-name{font-weight:var(--fw-medium);overflow-wrap:anywhere;grid-area:name;line-height:1.3;overflow:hidden}.rc-material-lines{font-size:var(--fs-xs);grid-area:lines}.rc-material-price{text-align:right;font-variant-numeric:tabular-nums;grid-area:price;width:100%}
