:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#eef0f4;--panel:#f5f6f8;--panel-2:#ebedf1;--surface:#fff;--surface-hover:#f1f3f7;--canvas-bg:#fff;--panel-border:#dcdfe6;--border-strong:#c3c8d2;--divider:#e6e8ee;--ink:#171b23;--ink-2:#3c4453;--ink-muted:#626a79;--ink-faint:#767e8c;--brand:#0f6735;--brand-soft:#0f67351a;--accent:#11733c;--accent-hover:#0f6735;--accent-soft:#11733c1a;--accent-ring:#11733c47;--accent-ink:#fff;--danger:#e5484d;--danger-soft:#e5484d1a;--warn:#f5a524;--ok:#22a06b;--grid-minor:#edf0f4;--grid-major:#dde1e8;--handle:#11733c;--shadow-sm:0 1px 2px #1018280f, 0 1px 1px #1018280a;--shadow-md:0 4px 10px -2px #1018281a, 0 2px 4px -2px #1018280f;--shadow-lg:0 14px 32px -8px #1018282e, 0 4px 10px -4px #1018281a;--inset-hair:inset 0 -1px 0 #1018280a;--r-sm:5px;--r-md:7px;--r-lg:10px;--r-pill:999px;--font-ui:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;--topbar-h:62px;--status-h:31px;--props-w:288px}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0c0e12;--panel:#14171d;--panel-2:#1a1e26;--surface:#1b1f27;--surface-hover:#232833;--canvas-bg:#0d0f14;--panel-border:#333a47;--border-strong:#454e5e;--divider:#242a34;--ink:#e7eaf0;--ink-2:#c4cbd7;--ink-muted:#98a0af;--ink-faint:#848c9b;--brand:#3fa870;--brand-soft:#3fa87024;--accent:#3dc27b;--accent-hover:#4dc786;--accent-soft:#3dc27b24;--accent-ring:#3dc27b57;--accent-ink:#08101f;--danger:#ff6369;--danger-soft:#ff636924;--warn:#ffb224;--ok:#3dd68c;--grid-minor:#171c23;--grid-major:#222832;--handle:#3dc27b;--shadow-sm:0 1px 2px #00000080;--shadow-md:0 4px 12px -2px #0000008c, 0 2px 4px -2px #0006;--shadow-lg:0 16px 36px -10px #000000b3, 0 4px 12px -4px #00000080;--inset-hair:inset 0 -1px 0 #ffffff08}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);width:100%;height:100%;color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:13px;line-height:1.45;overflow:hidden}#app{grid-template-areas:"toolbar toolbar""canvas props""status props";grid-template-columns:minmax(0, 1fr) var(--props-w);grid-template-rows:var(--topbar-h) 1fr var(--status-h);background:var(--bg);width:100vw;height:100vh;display:grid;overflow:hidden}#toolbar{background:var(--panel);border-bottom:1px solid var(--panel-border);box-shadow:var(--shadow-sm);z-index:30;scrollbar-width:none;-ms-overflow-style:none;flex-direction:row;grid-area:toolbar;align-items:center;gap:4px;padding:0 14px;display:flex;overflow:auto hidden}#toolbar::-webkit-scrollbar{height:0;display:none}#canvas-container{background:var(--canvas-bg);border-right:1px solid var(--panel-border);grid-area:canvas;position:relative;overflow:hidden}#stage{touch-action:none;cursor:crosshair;width:100%;height:100%;display:block}#overlay{pointer-events:none;position:absolute;inset:0}#properties-panel{background:var(--panel);border-left:1px solid var(--panel-border);scrollbar-width:thin;flex-direction:column;grid-area:props;gap:4px;padding:14px 14px 24px;display:flex;overflow:hidden auto}#properties-panel::-webkit-scrollbar{width:8px}#properties-panel::-webkit-scrollbar-track{background:0 0}#properties-panel::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-pill);border:2px solid var(--panel)}#status-bar{background:var(--panel);border-top:1px solid var(--panel-border);color:var(--ink-muted);font-size:13.2px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em;-webkit-user-select:none;user-select:none;grid-area:status;align-items:center;gap:14.4px;padding:0 14.4px;display:flex}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}::selection{background:var(--accent-soft);color:var(--ink)}.tb-brand{border-right:1px solid var(--divider);-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:10px;height:36px;margin-right:4px;padding-right:14px;display:flex}.tb-brand-logo{flex-shrink:0;width:auto;height:22px;display:block}[data-theme=dark] .tb-brand-logo{filter:brightness(1.45)saturate(1.15)}.tb-brand-div{background:var(--divider);flex-shrink:0;width:1px;height:19px}.tb-brand-mark{font-family:var(--font-ui);letter-spacing:-.02em;color:var(--ink);font-size:17.4px;font-weight:700;line-height:1}.tb-brand-mark span{color:var(--brand)}.tool-group{flex-shrink:0;align-items:center;gap:2px;display:flex}.tool-separator{background:var(--divider);flex-shrink:0;width:1px;height:26px;margin:0 8px}.tool-spacer{flex:auto;min-width:8px}.theme-switch{cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:54px;height:30px;margin-left:2px;padding:0;display:flex}.theme-switch-track{background:var(--surface);border:1px solid var(--panel-border);border-radius:999px;width:54px;height:30px;transition:background .16s,border-color .16s;display:block;position:relative;box-shadow:inset 0 1px 2px #0000001a}.theme-switch:hover .theme-switch-track{border-color:var(--accent)}.theme-switch:focus-visible{outline:none}.theme-switch:focus-visible .theme-switch-track{box-shadow:0 0 0 3px var(--accent-ring), inset 0 1px 2px #0000001a}.theme-switch-thumb{background:var(--accent);width:22px;height:22px;box-shadow:var(--shadow-sm);will-change:transform;border-radius:50%;transition:transform .18s cubic-bezier(.34,1.24,.64,1);position:absolute;top:3px;left:3px}.theme-switch.on .theme-switch-thumb{transform:translate(24px)}.theme-switch-ico{width:15px;height:15px;color:var(--ink-muted);pointer-events:none;margin-top:-7.5px;transition:color .16s,opacity .16s;position:absolute;top:50%}.theme-switch-ico svg{width:15px;height:15px;display:block}.theme-switch-sun{left:6.5px}.theme-switch-moon{right:6.5px}.theme-switch .theme-switch-sun{color:var(--accent-ink);opacity:.95}.theme-switch .theme-switch-moon,.theme-switch.on .theme-switch-sun{color:var(--ink-faint);opacity:.75}.theme-switch.on .theme-switch-moon{color:var(--accent-ink);opacity:.95}.tool-btn{border-radius:var(--r-md);cursor:pointer;width:41px;height:41px;color:var(--ink-2);-webkit-tap-highlight-color:transparent;background:0 0;border:1px solid #0000;outline:none;flex-shrink:0;justify-content:center;align-items:center;transition:background .13s,color .13s,border-color .13s,box-shadow .13s;display:flex;position:relative}.tool-btn:hover{background:var(--surface);border-color:var(--panel-border);color:var(--ink);box-shadow:var(--shadow-sm)}.tool-btn:active{transform:translateY(.5px)}.tool-btn.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 0 0 3px var(--accent-ring), var(--shadow-sm)}.tool-btn.active:hover{background:var(--accent-hover);color:var(--accent-ink)}.tool-btn svg{pointer-events:none;width:22px;height:22px;display:block}.tool-btn:disabled{opacity:.35;cursor:default;box-shadow:none;background:0 0;border-color:#0000}.ud-tip{z-index:9999;background:var(--ink);color:var(--bg);font-family:var(--font-ui);letter-spacing:.01em;border-radius:var(--r-sm);white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-lg);opacity:0;align-items:center;gap:7px;padding:6px 9px;font-size:11.5px;font-weight:500;line-height:1;transition:opacity .12s,transform .12s;display:flex;position:fixed;top:0;left:0;transform:translateY(-3px)}.ud-tip.visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.ud-tip{transition:none}}.ud-tip.measuring{opacity:0!important;transition:none!important}.ud-tip[data-flipped="1"]{transform-origin:bottom}.ud-tip-label{color:inherit}.ud-tip-key{font-family:var(--font-mono);color:inherit;background:#ffffff29;border:1px solid #ffffff21;border-radius:3px;padding:3px 5px;font-size:10px;font-weight:600;line-height:1}[data-theme=dark] .ud-tip-key{background:#00000038;border-color:#00000047}.props-section{margin-bottom:4px}.props-section h3,.panel-heading{color:var(--ink-2);text-transform:uppercase;letter-spacing:.08em;-webkit-user-select:none;user-select:none;margin-bottom:9px;font-size:10.5px;font-weight:700}.props-card{background:var(--surface);border:1px solid var(--panel-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);margin-bottom:12px;padding:12px}.props-row{align-items:center;gap:10px;margin-bottom:8px;display:flex}.props-row:last-child{margin-bottom:0}.props-row label{color:var(--ink-2);flex-shrink:0;width:76px;font-size:11.5px;font-weight:500}.props-row>input,.props-row>.select-wrapper{flex:1;min-width:0}.props-row>input[type=checkbox],.prop-field>input[type=checkbox]{flex:none;width:16px;margin-right:auto}.props-row.disabled-row{opacity:.42;pointer-events:none}.props-mini-btn{color:var(--ink-2);background:var(--panel-2);border:1px solid var(--border-strong);border-radius:var(--r-sm,4px);cursor:pointer;flex:none;padding:3px 9px;font-family:inherit;font-size:10.5px;font-weight:600;transition:background .12s,color .12s,border-color .12s}.props-mini-btn:hover:not(:disabled){color:var(--accent-ink,#fff);background:var(--accent);border-color:var(--accent)}.props-mini-btn:disabled{opacity:.38;cursor:default}.props-note{color:var(--ink-faint);margin:8px 0 0;font-size:10.5px;line-height:1.4}.props-note.warn{color:var(--warn);font-weight:600}.props-placeholder{color:var(--ink-muted);text-align:center;border:1px dashed var(--border-strong);border-radius:var(--r-lg);background:0 0;padding:16px 14px;font-size:12px;line-height:1.5}.props-placeholder strong{color:var(--ink-2);margin-bottom:3px;font-size:12.5px;font-weight:600;display:block}.props-placeholder .ph-hint{color:var(--ink-faint);font-size:11px}.props-placeholder svg{opacity:.4;width:22px;height:22px;color:var(--ink-faint);margin:0 auto 7px;display:block}.props-divider{background:var(--divider);border:none;height:1px;margin:14px 0}input[type=text],input[type=number],input[type=date],textarea,.select-wrapper select{border:1px solid var(--panel-border);background:var(--surface);width:100%;color:var(--ink);border-radius:var(--r-sm);font-size:12px;font-family:var(--font-ui);box-shadow:var(--inset-hair);outline:none;padding:6px 9px;transition:border-color .14s,box-shadow .14s,background .14s}input[type=number]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}input[type=text]:hover,input[type=number]:hover,input[type=date]:hover,textarea:hover,.select-wrapper select:hover{border-color:var(--border-strong)}input[type=text]:focus,input[type=number]:focus,input[type=date]:focus,textarea:focus,.select-wrapper select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);outline:none}input::placeholder,textarea::placeholder{color:var(--ink-faint)}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}input[type=date]::-webkit-calendar-picker-indicator{opacity:.5;cursor:pointer;transition:opacity .14s}input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:.95}[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator{opacity:.75}textarea{resize:vertical;min-height:58px;line-height:1.5}.select-wrapper{width:100%;position:relative}.select-wrapper select{appearance:none;cursor:pointer;padding-right:26px}.select-wrapper:after{content:"";border-right:1.6px solid var(--ink-muted);border-bottom:1.6px solid var(--ink-muted);pointer-events:none;width:7px;height:7px;transition:border-color .14s;position:absolute;top:50%;right:9px;transform:translateY(-65%)rotate(45deg)}.select-wrapper:hover:after{border-color:var(--ink)}input[type=checkbox]{appearance:none;border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;width:16px;height:16px;box-shadow:var(--inset-hair);border-radius:4px;flex-shrink:0;transition:background .14s,border-color .14s,box-shadow .14s;position:relative}input[type=checkbox]:hover{border-color:var(--accent)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:"";border:solid var(--accent-ink);border-width:0 2px 2px 0;width:4px;height:8px;position:absolute;top:1.6px;left:4.7px;transform:rotate(43deg)}input[type=checkbox]:focus-visible{box-shadow:0 0 0 3px var(--accent-ring);outline:none}#active-tool{font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;color:var(--accent);border-right:1px solid var(--divider);flex-shrink:0;min-width:74px;padding-right:12px;font-size:10.5px;font-weight:700}#active-layer{border-left:1px solid var(--divider);color:var(--ink-muted);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;max-width:160px;padding-left:12px;overflow:hidden}#active-layer:empty{display:none}#prompt{white-space:nowrap;text-overflow:ellipsis;color:var(--ink-2);flex:1;overflow:hidden}#solve-status{border-left:1px solid var(--divider);font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;cursor:help;flex-shrink:0;padding-left:12px;font-size:10.5px}#solve-status:empty{display:none}#solve-status[data-state=solved]{color:var(--accent)}#solve-status[data-state=under]{color:var(--ink-muted)}#solve-status[data-state=over]{color:#b45309;font-weight:650}#coords,#zoom-label{border-left:1px solid var(--divider);color:var(--ink-muted);flex-shrink:0;padding-left:12px}#coords{text-align:right;min-width:148px}#zoom-label{text-align:right;min-width:82px}#title-block{flex-direction:column;font-size:11px;display:flex}.tb-header{border-bottom:1px solid var(--divider);flex-shrink:0;align-items:center;gap:10px;margin-bottom:12px;padding:0 0 10px;display:flex}.tb-logo{border-right:1px solid var(--divider);flex-shrink:0;align-items:center;padding-right:14px;display:flex}.tb-logo-img{filter:none;width:auto;height:17px;display:block}[data-theme=dark] .tb-logo-img{filter:brightness(1.45)saturate(1.15)}.tb-headline{color:var(--ink-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:11.5px;font-weight:500;overflow:hidden}.tb-headline b{color:var(--ink-2);font-weight:600}.tb-grid{grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:11px 12px;display:grid}.tb-cell{flex-direction:column;gap:5px;min-width:0;display:flex}.tb-cell label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;font-size:9.5px;font-weight:700}.tb-cell input,.tb-cell .select-wrapper select{width:100%;padding:5px 8px;font-size:11.5px}.tb-cell input[type=date]{padding-right:5px}.tb-section{border-bottom:1px solid var(--divider);justify-content:space-between;align-items:baseline;gap:8px;margin:16px 0 9px;padding-bottom:5px;display:flex}.tb-section:first-of-type{margin-top:2px}.tb-section span{color:var(--ink-2);text-transform:uppercase;letter-spacing:.07em;font-size:10.5px;font-weight:700}.tb-section em{color:var(--ink-faint);white-space:nowrap;font-size:9.5px;font-style:normal}.tb-hint{color:var(--ink-faint);margin:1px 0 0;font-size:10px;line-height:1.35}.tb-meta{flex-direction:column;gap:5px;display:flex}.tb-meta label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;font-size:9.5px;font-weight:700}.tb-meta textarea{font-family:var(--font-ui);resize:vertical;border-radius:var(--r-sm);border:1px solid var(--panel-border);background:var(--surface);width:100%;min-height:44px;color:var(--ink);padding:6px 8px;font-size:11.5px}.tb-meta textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);outline:none}.tb-note{color:var(--ink-faint);margin:0;font-size:10px;line-height:1.4}#drawing-title{z-index:12;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:var(--r-md);background:var(--panel);background:color-mix(in srgb, var(--panel) 82%, transparent);border:1px solid var(--panel-border);max-width:min(60%,520px);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);white-space:nowrap;align-items:baseline;gap:8px;padding:5px 11px;display:flex;position:absolute;top:12px;left:14px;overflow:hidden}#drawing-title b{color:var(--ink);text-overflow:ellipsis;font-size:13px;font-weight:650;overflow:hidden}#drawing-title span{color:var(--ink-muted);text-overflow:ellipsis;font-size:11px;overflow:hidden}#drawing-title em{letter-spacing:.05em;color:var(--accent);flex-shrink:0;font-size:9.5px;font-style:normal;font-weight:700}#scale-indicator{z-index:12;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:var(--r-md);background:var(--panel);background:color-mix(in srgb, var(--panel) 82%, transparent);border:1px solid var(--panel-border);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);flex-direction:column;align-items:center;gap:3px;padding:6px 12px 7px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.si-bar{border:1px solid var(--ink-2);border-top:none;min-width:20px;height:7px}.si-text{font-family:var(--font-mono);color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:10.5px;font-weight:600;line-height:1}.prop-entity-header{color:var(--ink);text-transform:capitalize;align-items:center;gap:7px;margin-bottom:10px;font-size:12.5px;font-weight:650;display:flex}.prop-entity-header:before{content:"";background:var(--accent);border-radius:50%;flex-shrink:0;width:6px;height:6px}.prop-field{align-items:center;gap:8px;margin-bottom:7px;display:flex}.prop-field:last-child{margin-bottom:0}.prop-field label{color:var(--ink-muted);white-space:nowrap;flex-shrink:0;width:58px;font-size:10.5px;font-weight:500;overflow:visible}.prop-readonly-row label{width:auto;max-width:84px}.prop-field input,.prop-field .select-wrapper{flex:1;min-width:0}.prop-pair{flex:1;gap:7px;min-width:0;display:flex}.prop-pair input{flex:1;min-width:0}.prop-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.prop-field input:disabled{opacity:.55;cursor:not-allowed;background:var(--panel)}.prop-invalid,input.prop-invalid:focus{border-color:var(--danger)!important;box-shadow:0 0 0 3px var(--danger-soft)!important}.prop-readonly{min-width:0;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-muted);text-align:right;flex:1;padding:6px 2px;font-size:11.5px}.prop-badge{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);border:1px solid var(--panel-border);border-radius:999px;padding:1px 6px;font-size:9.5px;font-weight:700}.prop-hint{color:var(--ink-faint);margin-top:8px;font-size:10.5px;line-height:1.45}.prop-section-label{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin:2px 0 7px;font-size:9.5px;font-weight:700}.fill-swatch-grid{grid-template-columns:repeat(3,1fr);gap:7px;display:grid}.fill-swatch{background:var(--panel);border:1px solid var(--panel-border);cursor:pointer;color:var(--ink-muted);border-radius:5px;flex-direction:column;align-items:center;gap:4px;padding:6px 3px 5px;transition:border-color 90ms,color 90ms,background 90ms;display:flex}.fill-swatch:hover{border-color:var(--accent);color:var(--ink)}.fill-swatch.is-active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft,#3182ce1a)}.fill-swatch-preview{background:var(--canvas-bg);border-radius:3px;width:34px;height:34px;display:block;overflow:hidden}.fill-swatch-preview svg{width:100%;height:100%;display:block}.fill-swatch-label{text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:9px;line-height:1.2;overflow:hidden}.prop-corner{align-items:center;gap:6px;margin-bottom:5px;display:flex}.prop-corner:last-child{margin-bottom:0}.prop-corner-label{color:var(--ink-muted);width:58px;font-size:10.5px;font-weight:500;font-family:var(--font-mono);flex-shrink:0}.prop-corner input{min-width:0;font-family:var(--font-mono);font-variant-numeric:tabular-nums;flex:1}.prop-corner-flag{text-transform:uppercase;letter-spacing:.05em;color:#b45309;cursor:help;background:#f59e0b24;border:1px solid #f59e0b80;border-radius:999px;flex-shrink:0;padding:1px 6px;font-size:9.5px;font-weight:700}.prop-corner-remove{border:1px solid var(--panel-border);background:var(--panel);width:22px;height:22px;color:var(--ink-muted);cursor:pointer;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:13px;line-height:1;display:inline-flex}.prop-corner-remove:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}.prop-corner-picked{background:var(--accent-soft,#2f6ef01a);border-left:2px solid var(--accent);border-radius:4px;margin-left:-6px;padding-left:6px}.prop-corner-picked .prop-corner-label{color:var(--accent);font-weight:700}#file-menu-btn{flex-shrink:0;gap:7px;width:auto;padding:0 13px}.file-btn-label{font-size:14.4px;font-family:var(--font-ui);letter-spacing:.01em;font-weight:600}#file-menu-btn svg{width:18px;height:18px}#file-menu{z-index:120;background:var(--surface);border:1px solid var(--panel-border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);min-width:194px;padding:5px;animation:.13s ease-out menu-in;position:fixed;top:0;left:0}@keyframes menu-in{0%{opacity:0;transform:translateY(-5px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.file-menu-item{text-align:left;width:100%;color:var(--ink);font-size:12.5px;font-family:var(--font-ui);border-radius:var(--r-sm);cursor:pointer;background:0 0;border:none;align-items:center;gap:9px;padding:8px 10px;transition:background .1s;display:flex}.file-menu-item:hover{background:var(--accent);color:var(--accent-ink)}.file-menu-item svg{opacity:.7;flex-shrink:0;width:14px;height:14px}.file-menu-item:hover svg{opacity:1}.file-menu-item .fm-key{font-family:var(--font-mono);opacity:.5;margin-left:auto;font-size:10px}.file-menu-sep{background:var(--divider);height:1px;margin:5px 8px}#context-menu{z-index:100;background:var(--surface);border:1px solid var(--panel-border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);min-width:168px;padding:5px;animation:.12s ease-out menu-in;position:fixed}.ctx-item{text-align:left;width:100%;color:var(--ink);font-size:12.5px;font-family:var(--font-ui);border-radius:var(--r-sm);cursor:pointer;background:0 0;border:none;align-items:center;gap:9px;padding:8px 10px;transition:background .1s;display:flex}.ctx-item:hover{background:var(--accent);color:var(--accent-ink)}.ctx-item.ctx-danger{color:var(--danger)}.ctx-item.ctx-danger:hover{background:var(--danger);color:#fff}.ctx-sep{background:var(--divider);height:1px;margin:5px 8px}.ud-banner{z-index:60;background:var(--surface);border:1px solid var(--panel-border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);pointer-events:auto;align-items:center;gap:12px;padding:10px 12px;font-size:12.5px;animation:.18s ease-out menu-in;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.ud-banner button{font-family:var(--font-ui);border-radius:var(--r-sm);cursor:pointer;border:1px solid var(--panel-border);background:var(--surface);color:var(--ink);padding:5px 11px;font-size:11.5px;font-weight:600;transition:background .12s,border-color .12s}.ud-banner button:hover{background:var(--surface-hover);border-color:var(--border-strong)}.ud-banner button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.ud-banner button.primary:hover{background:var(--accent-hover)}#properties-panel.panel-shell{gap:0;padding:0;position:relative;overflow:hidden}.panel-splitter{cursor:ew-resize;z-index:20;touch-action:none;background:0 0;width:5px;margin-left:-2px;transition:background .12s;position:absolute;top:0;bottom:0;left:0}.panel-splitter:hover,.panel-splitter.dragging{background:var(--accent-ring)}.panel-splitter:focus-visible{background:var(--accent);outline:none}body.resizing-panel{-webkit-user-select:none;user-select:none;cursor:ew-resize!important}body.resizing-panel *{cursor:ew-resize!important}.panel-tabs{background:var(--panel);border-bottom:1px solid var(--panel-border);flex-shrink:0;gap:2px;padding:8px 8px 0;display:flex}.panel-tab{min-width:0;color:var(--ink-muted);font-family:var(--font-ui);letter-spacing:.01em;cursor:pointer;border-radius:var(--r-sm) var(--r-sm) 0 0;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;margin-bottom:-1px;padding:7px 6px 8px;font-size:11px;font-weight:600;transition:color .13s,background .13s,border-color .13s;overflow:hidden}.panel-tab:hover{color:var(--ink-2);background:var(--surface-hover)}.panel-tab.active{color:var(--accent);border-bottom-color:var(--accent);background:0 0}.panel-tab:focus-visible{outline:2px solid var(--accent-ring);outline-offset:-2px}.panel-body{scrollbar-width:thin;flex:1;min-height:0;overflow:hidden auto}.panel-body::-webkit-scrollbar{width:8px}.panel-body::-webkit-scrollbar-track{background:0 0}.panel-body::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-pill);border:2px solid var(--panel)}.panel-pane{flex-direction:column;gap:4px;padding:14px 14px 24px;display:none}.panel-pane.active{display:flex}.layer-list{flex-direction:column;gap:2px;margin-bottom:12px;display:flex}.layer-row{border-radius:var(--r-sm);cursor:pointer;border:1px solid #0000;align-items:center;gap:2px;padding:5px 4px 5px 6px;transition:background .12s,border-color .12s;display:flex}.layer-row:hover{background:var(--surface-hover)}.layer-row.active{background:var(--accent-soft);border-color:var(--accent-ring)}.layer-icon-btn{border-radius:var(--r-sm);width:24px;height:24px;color:var(--ink-muted);cursor:pointer;background:0 0;border:none;flex:none;place-items:center;padding:0;transition:color .12s,background .12s;display:grid}.layer-icon-btn svg{width:18px;height:18px}.layer-icon-btn:hover{background:var(--surface);color:var(--ink)}.layer-icon-btn.off{color:var(--ink-faint);opacity:.65}.layer-icon-btn.on{color:var(--accent)}.layer-del:hover{color:var(--danger);background:var(--danger-soft)}.layer-color{border:1px solid var(--panel-border);cursor:pointer;background:0 0;border-radius:4px;flex:none;width:18px;height:18px;padding:0}.layer-color::-webkit-color-swatch-wrapper{padding:1px}.layer-color::-webkit-color-swatch{border:none;border-radius:3px}[data-theme=dark] .layer-color{border-color:var(--border-strong);box-shadow:0 0 0 1px #ffffff3d}.layer-name{min-width:0;color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none;flex:1;font-size:11.5px;overflow:hidden}.layer-row.active .layer-name{color:var(--ink);font-weight:600}.layer-rename{flex:1;min-width:0;padding:2px 5px;font-size:11.5px}.layer-count{font-family:var(--font-mono);color:var(--ink-faint);font-variant-numeric:tabular-nums;text-align:center;background:var(--surface);border-radius:var(--r-pill);flex:none;min-width:22px;padding:1px 6px;font-size:10px}.layer-row.active .layer-count{color:var(--ink-2)}.layer-actions{flex-direction:column;gap:6px;display:flex}.layer-btn{background:var(--surface);border:1px solid var(--panel-border);width:100%;color:var(--ink-2);border-radius:var(--r-sm);font-family:var(--font-ui);cursor:pointer;padding:7px 10px;font-size:11.5px;font-weight:600;transition:background .12s,border-color .12s,color .12s}.layer-btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong);color:var(--ink)}.layer-btn:disabled{opacity:.45;cursor:not-allowed}.layer-color-wrap{flex:none;width:18px;height:18px;line-height:0;position:relative}.layer-color-wrap .layer-color{width:100%;height:100%}.layer-color.is-auto{opacity:.55}.layer-color-wrap:has(.is-auto):after{content:"";pointer-events:none;background:linear-gradient(to top right, transparent 44%, var(--accent) 44%, var(--accent) 56%, transparent 56%);border-radius:4px;position:absolute;inset:0}#help-btn{flex-shrink:0}#help-overlay{z-index:200;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1018286b;display:none;position:fixed;inset:0}#help-overlay.open{justify-content:center;align-items:flex-start;display:flex}#help-sheet{background:var(--surface);border:1px solid var(--panel-border);border-radius:var(--r-lg);width:min(760px,94vw);max-height:88vh;box-shadow:var(--shadow-lg);flex-direction:column;margin:4vh 0;animation:.16s ease-out menu-in;display:flex;overflow:hidden}#help-head{border-bottom:1px solid var(--divider);background:var(--panel);flex-shrink:0;align-items:center;gap:10px;padding:14px 16px;display:flex}.help-title{font-family:var(--font-ui);color:var(--ink);flex:1;align-items:baseline;gap:9px;font-size:14px;font-weight:700;display:flex}.help-sub{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);font-size:10.5px;font-weight:500}.help-close{border:1px solid var(--panel-border);border-radius:var(--r-sm);background:var(--surface);width:26px;height:26px;color:var(--ink-muted);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;font-size:17px;line-height:1;display:inline-flex}.help-close:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}#help-body{padding:4px 16px 16px;overflow-y:auto}.help-section{margin-top:18px}.help-section:first-child{margin-top:12px}.help-section h3{font-family:var(--font-ui);letter-spacing:.07em;text-transform:uppercase;color:var(--accent);margin:0 0 7px;font-size:11px;font-weight:700}.help-blurb{color:var(--ink-2);margin:0 0 9px;font-size:12px;line-height:1.55}.help-steps{color:var(--ink-2);margin:0 0 4px;padding-left:20px;font-size:12px;line-height:1.6}.help-steps li{margin-bottom:3px}.help-rows{flex-direction:column;gap:3px;display:flex}.help-row{grid-template-columns:176px 1fr;align-items:baseline;gap:12px;padding:3px 0;display:grid}.help-keys{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:3px;display:flex}.help-what{color:var(--ink-2);font-size:12px;line-height:1.5}#help-body kbd{font-family:var(--font-mono);color:var(--ink);background:var(--panel);border:1px solid var(--panel-border);white-space:nowrap;border-bottom-width:2px;border-radius:4px;padding:1px 6px;font-size:10.5px;line-height:1.5;display:inline-block}.help-plus,.help-or{color:var(--ink-faint);padding:0 1px;font-size:9.5px}.help-guide{border:1px solid var(--panel-border);border-radius:var(--r-sm);margin-bottom:5px}.help-guide summary{cursor:pointer;color:var(--ink);align-items:center;gap:9px;padding:7px 10px;font-size:12.5px;list-style:none;display:flex}.help-guide summary::-webkit-details-marker{display:none}.help-guide summary:before{content:"";border-left:5px solid var(--ink-faint);border-top:4px solid #0000;border-bottom:4px solid #0000;flex-shrink:0;width:0;height:0;transition:transform .12s}.help-guide[open] summary:before{transform:rotate(90deg)}.help-guide summary:hover{background:var(--panel)}.help-guide-name{flex:1;font-weight:600}.help-guide ul{color:var(--ink-2);margin:0;padding:2px 12px 10px 30px;font-size:12px;line-height:1.6}.help-guide li{margin-bottom:3px}.help-foot{border-top:1px solid var(--divider);color:var(--ink-faint);margin:20px 0 0;padding-top:12px;font-size:10.5px;line-height:1.5}.dim-edit{z-index:60;font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:center;color:var(--ink);background:var(--surface);border:1.5px solid var(--accent);box-shadow:0 0 0 3px var(--accent-ring), var(--shadow-sm);border-radius:4px;outline:none;padding:1px 3px;font-size:12px;position:absolute}.dim-edit-invalid{border-color:var(--danger)!important;box-shadow:0 0 0 3px var(--danger-soft)!important}.ud-colorpop{z-index:9998;background:var(--panel);border:1px solid var(--border-strong);width:268px;box-shadow:var(--shadow-md,0 8px 24px #10182829);font-family:var(--font-ui);-webkit-user-select:none;user-select:none;border-radius:9px;padding:9px;position:fixed;top:0;left:0}.cp-tabs{background:var(--panel-2);border-radius:6px;gap:3px;margin-bottom:9px;padding:2px;display:flex}.cp-tab{color:var(--ink-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:1;padding:5px 8px;font-family:inherit;font-size:11px;font-weight:500}.cp-tab:hover{color:var(--ink)}.cp-tab.active{color:var(--ink);background:var(--surface);box-shadow:var(--shadow-sm,0 1px 2px #1018280f)}.cp-pane{display:none}.cp-pane.active{display:block}.cp-auto{width:100%;color:var(--ink);background:var(--surface);border:1px solid var(--panel-border);cursor:pointer;text-align:left;border-radius:6px;align-items:center;gap:7px;margin-bottom:8px;padding:6px 8px;font-family:inherit;font-size:11.5px;display:flex}.cp-auto:hover{background:var(--surface-hover);border-color:var(--border-strong)}.cp-auto.is-current{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring)}.cp-auto-dot{border:1px solid var(--border-strong);background:linear-gradient(135deg, var(--ink) 0 50%, var(--surface) 50% 100%);border-radius:3px;flex-shrink:0;width:13px;height:13px}.cp-grid{gap:3px;display:grid}.cp-swatch{aspect-ratio:1;cursor:pointer;border:1px solid #00000024;border-radius:3px;min-width:0;padding:0;transition:transform 90ms,box-shadow 90ms;position:relative}.cp-swatch:hover{z-index:1;transform:scale(1.18);box-shadow:0 2px 6px #10182847}.cp-swatch:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.cp-swatch.is-current:after{content:"";border-style:solid;border-width:0 2px 2px 0;width:4px;height:8px;position:absolute;top:46%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.cp-swatch.tick-light:after{border-color:#fff}.cp-swatch.tick-dark:after{border-color:#101010}.cp-section{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);margin:10px 0 5px;font-size:10px;font-weight:600}.cp-hexrow{border-top:1px solid var(--divider);align-items:center;gap:7px;margin-top:10px;padding-top:9px;display:flex}.cp-hexrow span{color:var(--ink-muted);font-size:10.5px;font-weight:500}.cp-hex{min-width:0;font-family:var(--font-mono);color:var(--ink);background:var(--surface);border:1px solid var(--panel-border);border-radius:5px;flex:1;padding:4px 7px;font-size:11.5px}.cp-hex:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);outline:none}.cp-invalid{border-color:var(--danger)!important;box-shadow:0 0 0 3px var(--danger-soft)!important}.cp-native{flex-direction:column;gap:8px;display:flex}.cp-native-input{border:1px solid var(--panel-border);cursor:pointer;background:0 0;border-radius:6px;width:100%;height:92px;padding:0}.cp-native-input::-webkit-color-swatch-wrapper{padding:3px}.cp-native-input::-webkit-color-swatch{border:none;border-radius:4px}.cp-hint{color:var(--ink-faint);margin:0;font-size:10.5px;line-height:1.45}.cp-trigger{min-width:0;color:var(--ink);background:var(--surface);border:1px solid var(--panel-border);cursor:pointer;text-align:left;border-radius:5px;flex:1;align-items:center;gap:7px;padding:3px 7px 3px 4px;font-family:inherit;font-size:11px;display:flex}.cp-trigger:hover{background:var(--surface-hover);border-color:var(--border-strong)}.cp-trigger-chip{border:1px solid var(--border-strong);border-radius:3px;flex-shrink:0;width:16px;height:16px}.cp-trigger-chip.is-auto{background:linear-gradient(135deg, var(--ink) 0 50%, var(--surface) 50% 100%)}.cp-trigger-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (prefers-reduced-motion:reduce){.cp-swatch{transition:none}.cp-swatch:hover{transform:none}}.ud-textedit{z-index:50;min-width:90px;max-width:420px;min-height:24px;font-family:var(--font-ui);color:var(--ink);background:var(--surface);border:1px solid var(--accent);box-shadow:0 0 0 3px var(--accent-ring);pointer-events:auto;resize:none;border-radius:4px;padding:3px 5px;line-height:1.15;position:absolute;overflow:hidden}.ud-textedit::placeholder{color:var(--ink-faint)}.ud-textedit:focus{outline:none}.prop-field-stack{margin-bottom:7px;display:block}.prop-field-stack label{width:auto;margin-bottom:4px;display:block}.prop-textarea{box-sizing:border-box;width:100%;font-family:var(--font-ui);color:var(--ink);background:var(--surface);border:1px solid var(--panel-border);resize:vertical;border-radius:5px;padding:5px 7px;font-size:11.5px;line-height:1.35}.prop-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);outline:none}.prop-btn{min-width:0;font-family:var(--font-ui);color:var(--ink);background:var(--surface);border:1px solid var(--panel-border);cursor:pointer;border-radius:5px;flex:1;padding:5px 9px;font-size:11px}.prop-btn:hover{background:var(--surface-hover);border-color:var(--border-strong)}.prop-btn:active{background:var(--panel-2)}.prop-btn-danger{color:var(--danger);border-color:var(--danger)}.prop-btn-danger:hover{background:var(--danger);border-color:var(--danger);color:#fff}.prop-btn-row{flex:1;gap:4px;min-width:0;display:flex}.prop-btn-row .prop-btn{flex:1}.prop-btn-active,.prop-btn-active:hover{background:var(--accent);border-color:var(--accent);color:#fff}.prop-underlay-list{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.prop-underlay-row{background:var(--panel);border:1px solid var(--panel-border);color:var(--ink-muted);cursor:pointer;border-radius:5px;padding:6px 8px;font-size:11.5px;transition:border-color 90ms,color 90ms,background 90ms}.prop-underlay-row:hover{border-color:var(--accent);color:var(--ink)}.prop-underlay-row.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft,#3182ce1a)}.prop-field input[type=range]{min-width:0;accent-color:var(--accent);flex:1}.tool-flyout{z-index:9998;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--r-md);box-shadow:var(--shadow-md,0 6px 18px #00000038);opacity:0;visibility:hidden;pointer-events:none;flex-direction:column;gap:2px;padding:4px;transition:opacity .12s,visibility .12s;display:flex;position:fixed;top:0;left:0;transform:translate(-50%)}.tool-flyout.open{opacity:1;visibility:visible;pointer-events:auto}.tool-btn.has-flyout:after{content:"";opacity:.42;pointer-events:none;border-bottom:4px solid;border-left:4px solid #0000;width:0;height:0;position:absolute;bottom:3px;right:3px}.tool-btn.has-flyout:hover:after{opacity:.75}.tool-flyout:before{content:"";height:8px;position:absolute;top:-8px;left:-6px;right:-6px}.ud-textedit-rich{max-width:none;padding:3px 5px}.ud-textedit-inner{white-space:pre-wrap;outline:none;min-width:60px;min-height:1em}.ud-richbar{background:var(--surface);border:1px solid var(--accent);box-shadow:0 0 0 3px var(--accent-ring);white-space:nowrap;border-radius:4px;align-items:center;gap:2px;margin-bottom:4px;padding:3px;display:flex;position:absolute;bottom:100%;left:-1px}.ud-richbar-chars{border:none;border-left:1px solid var(--ink-faint);box-shadow:none;border-radius:0;margin:0 0 0 4px;padding:0 0 0 4px;position:static}.ud-richbar-btn{min-width:22px;height:22px;font-size:12px;font-family:var(--font-ui);color:var(--ink);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;padding:0 4px}.ud-richbar-btn:hover{border-color:var(--accent)}.layer-move{font-size:14px}.layer-icon-btn:disabled{opacity:.25;cursor:default}
