.engine-section{font-family:var(--font-sans,sans-serif);color:#222;min-width:0;background:#fff}
.engine-section,.engine-image,.engine-text.has-surface{isolation:isolate}
.engine-surface-media{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.engine-surface-media-transform,.engine-surface-media-image,.engine-surface-cover{position:absolute;inset:0;pointer-events:none}
.engine-surface-media-image{background-repeat:no-repeat}
.engine-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}
.engine-text-content{display:block;min-width:0;white-space:inherit}
.engine-card-align.engine-text-styles{position:relative;grid-template-columns:repeat(4,var(--control-dense-height));justify-content:start;gap:4px;margin:0 0 8px}
.engine-text-styles .engine-preset.engine-text-style{align-items:center;justify-content:center;width:var(--control-dense-height);height:var(--control-dense-height);min-height:var(--control-dense-height);padding:0;gap:0;font-size:var(--type-editor-value);font-weight:600;line-height:1}
.engine-text-style[data-style="italic"]{font-style:italic}
.engine-text-style[data-style="underline"]{text-decoration:underline}
.engine-text-style[data-style="strike"]{text-decoration:line-through}
.engine-text-styles .engine-text-style[aria-pressed="true"]{background:var(--control-surface);border-color:var(--control-focus);color:var(--control-text)}
.engine-text-styles .engine-text-style[aria-pressed="true"]:hover:not(:disabled){border-color:var(--control-text)}
.engine-image{margin:0;position:relative;min-width:0;width:100%;overflow:hidden;background:#f3f3f3}
.engine-image.has-media{background:transparent}
.engine-image-content{position:absolute;overflow:hidden}
.engine-image-content img,.engine-image-mask{position:absolute;inset:0;width:100%;height:100%;display:block}
.engine-image>span{position:absolute;inset:0;display:grid;place-content:center;font-size:16px;color:#888}
.engine-node-actions{background:none;border:0;padding:4px 0 12px}
.engine-inspector .field{min-width:0}
.engine-inspector summary{position:relative;padding-right:28px}
.engine-inspector .unit-region{margin-block:12px}
.engine-inspector select,.quick-inspector select{width:100%;max-width:100%;min-width:0}
.engine-layout-buttons{display:grid!important;grid-template-columns:repeat(var(--engine-options),minmax(0,1fr));gap:4px;width:100%;min-width:0}
.engine-layout-buttons button{min-width:0!important;width:100%;padding:6px 0!important}
.engine-layout-buttons button[aria-pressed="true"]{border-color:var(--line);background:var(--app-surface-subtle)}
.inspector-tree.engine-inspector [data-panel-node]>summary{display:flex;align-items:center;gap:var(--space-1);padding-right:var(--space-1)}
.engine-tree-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.engine-drag-handle{display:inline-grid;place-items:center;flex:none;width:18px;height:24px;color:var(--app-muted);font-size:12px;letter-spacing:-3px;cursor:grab;user-select:none}
.engine-drag-handle:hover{color:var(--control-text)}
.engine-drag-handle:active{cursor:grabbing}
.engine-header-actions{display:flex;flex:none;gap:2px}
.engine-state-button{display:grid;place-items:center;width:24px;height:24px;padding:3px;border:0;border-radius:var(--radius-single);background:transparent;color:var(--app-muted);cursor:pointer}
.engine-state-button svg{width:var(--icon-standard);height:var(--icon-standard);fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.engine-state-button[aria-pressed="true"]{background:var(--control-selected);color:var(--app-ink)}
.engine-state-button:disabled{opacity:.4;cursor:default}
.engine-state-button:hover:not(:disabled){background:var(--control-hover)}
.engine-state-button:focus-visible{outline:2px solid var(--control-focus)}
.engine-empty{color:#777;padding:24px}
.engine-video{width:100%;aspect-ratio:16/9;background:#f3f3f3;display:grid;place-items:center;min-width:0}
.engine-video iframe,.engine-video video{width:100%;height:100%;border:0}
.engine-text[data-node]{min-height:1em}
/* comparison/grid-3: clip the canonical Item Surfaces to the List radius. */
.engine-empty-region{position:absolute;inset:0;overflow:hidden;color:#999;font-size:12px;line-height:1;pointer-events:none}

/* Compact, shared property groups. These travel with controls into either panel. */
.engine-property-card{--engine-property-heading-height:var(--property-heading-height);--engine-property-inset:var(--space-2);--engine-property-group-gap:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-control);padding:0;margin:0 0 var(--engine-property-group-gap);background:var(--app-surface-subtle);min-width:0;max-width:100%}
.engine-property-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:22px;margin-bottom:var(--space-2)}
.engine-property-heading:last-child{margin-bottom:0}
.engine-property-heading h4{margin:0;font-size:var(--type-editor-value);font-weight:var(--weight-section);line-height:var(--leading-control)}
.engine-property-card>summary.engine-property-heading{list-style:none;cursor:pointer;min-height:var(--engine-property-heading-height);margin:0;padding:var(--space-2) var(--engine-property-inset);gap:7px;border-radius:var(--radius-inset);background:var(--control-hover)}
.engine-property-card>summary h4{flex:1;min-width:0;overflow-wrap:anywhere}
.engine-property-card>summary:hover{background:var(--control-selected)}
.engine-property-card[aria-disabled="true"]>summary,.engine-property-card[aria-disabled="true"]>summary:hover{background:var(--control-hover);color:var(--control-muted);cursor:default}
.engine-property-card[aria-disabled="true"] .inspector-disclosure-toggle{opacity:.6}
.engine-property-body{padding:0 var(--engine-property-inset) var(--engine-property-inset);min-width:0}
.engine-property-body:empty{padding:0}
.engine-property-subgroup{min-width:0;padding:var(--engine-property-group-gap) 0 0;margin:0}
.engine-property-subgroup+.engine-property-subgroup{margin-top:var(--engine-property-group-gap);border-top:1px solid var(--line)}
.engine-property-subgroup>.engine-property-heading h4{font-size:var(--type-editor-control);font-weight:var(--weight-semibold)}
.engine-property-subgroup .engine-property-subgroup>.engine-property-heading h4{font-weight:var(--weight-medium)}
.engine-subgroup-body{min-width:0}
.engine-inspector-actions{border-top:1px solid var(--line);margin:var(--space-3) 0 0;padding:var(--space-3) 0 0;display:grid;gap:var(--space-2)}
.quick-property-block[data-quick-property^="engine-"]{padding-bottom:0;margin-bottom:0;border-bottom:0}
.engine-inspector-action{display:flex;align-items:center;gap:6px;min-width:0}
.engine-inspector-action .btn{width:100%;min-width:0;padding:4px 6px;text-align:left;justify-content:flex-start;white-space:nowrap;font-size:var(--type-editor-control);background:transparent;border-color:transparent;color:var(--control-text)}
.engine-inspector-action .btn:hover:not(:disabled){background:var(--control-hover);border-color:var(--control-border)}
.engine-inspector-action .btn:disabled{opacity:1;color:var(--control-muted);background:transparent;border-color:transparent;cursor:default}
.engine-property-card:not([open])>.engine-property-body{display:none}
.engine-effect{padding:var(--space-2) 0;border-top:1px solid var(--line);min-width:0}
.engine-effect:last-child{padding-bottom:0}
.engine-effect .engine-property-heading h5{flex:1;margin:0;font-size:var(--type-editor-control);font-weight:var(--weight-medium);line-height:var(--leading-control)}
.engine-property-card .field{min-width:0}
.engine-property-card .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.engine-property-card .field>span{font-size:var(--type-editor-field-label);white-space:nowrap;min-width:0}
.engine-property-card input:not([type="checkbox"]),.engine-property-card select{width:100%;min-width:0;box-sizing:border-box;padding:var(--space-1) 6px;background:var(--control-surface)}
.engine-property-card .engine-color-control{position:relative;display:block;width:100%;height:var(--color-control-height);border:1px solid var(--control-border);border-radius:var(--radius-single);background:var(--control-surface)}
.engine-property-card .engine-color-control input[type="color"]{position:absolute;inset:0;z-index:1;width:100%;height:100%;margin:0;padding:0;border:0;opacity:0;cursor:pointer}
.engine-color-control .engine-color-visual{position:absolute;inset:3px;border-radius:2px;pointer-events:none}
.engine-color-control[data-color-state="single"] .engine-color-visual{background:var(--engine-color-value)}
.engine-color-control[data-color-state="none"] .engine-color-visual,.engine-color-indicator[data-color-state="none"]{background-color:var(--app-surface-subtle);background-image:conic-gradient(var(--control-border) 25%,var(--app-surface-subtle) 0 50%,var(--control-border) 0 75%,var(--app-surface-subtle) 0);background-size:12px 12px}
.engine-color-control[data-color-state="mixed"] .engine-color-visual,.engine-color-indicator[data-color-state="mixed"]{background:linear-gradient(135deg,var(--control-hover) 0 33%,var(--app-muted) 33% 66%,var(--control-hover) 66%)}
.engine-property-card .engine-color-control:has(input:disabled){opacity:.45;background:var(--app-surface-subtle);cursor:default}
.engine-color-indicator{display:inline-block;flex:none;width:18px;height:18px;border:1px solid var(--line);border-radius:3px}
.quick-inspector .engine-typography-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.quick-inspector .engine-typography-grid > .field { min-width:0; }
.quick-inspector .engine-typography-grid > .field:has(select) { grid-column:auto; }
.quick-inspector [data-engine-property-subgroup="text-stroke"] .form-grid>.field:has(select){grid-column:auto}
.quick-inspector [data-engine-property-subgroup="text-stroke"] .engine-outline-style-placeholder select{padding-left:4px;padding-right:1px;font-size:var(--type-editor-value)}
.engine-shadow-details{min-width:0;margin-top:2px;border-top:1px solid var(--line)}
.engine-shadow-details>.form-grid{padding-top:2px}
.engine-gradient-stop-control{min-width:0;margin:2px 0 9px}
.engine-gradient-stop-heading{display:block;margin-bottom:5px;color:var(--app-ink);font-size:var(--type-editor-field-label);font-weight:600}
.engine-gradient-stop-track{position:relative;height:var(--color-control-height);border:1px solid var(--line);border-radius:5px;background-size:100% 100%;min-width:0}
.engine-property-card input.engine-gradient-stop-range[type="range"]{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:0;background:transparent;appearance:none;-webkit-appearance:none;pointer-events:auto}
.engine-gradient-stop-range[data-engine-stop="1"]{clip-path:inset(0 calc(100% - var(--gradient-stop-split)) 0 0)}
.engine-gradient-stop-range[data-engine-stop="2"]{clip-path:inset(0 0 0 var(--gradient-stop-split))}
.engine-gradient-stop-range::-webkit-slider-runnable-track{height:2px;background:transparent;border:0}
.engine-gradient-stop-range[data-engine-stop="2"]{--gradient-thumb-ink:var(--app-muted)}
/* Keep the native 17px drag box; only the centered 9px circle is painted. */
.engine-gradient-stop-range::-webkit-slider-thumb{width:17px;height:17px;margin-top:-8px;border:2px solid transparent;border-radius:50%;background:radial-gradient(circle,var(--gradient-thumb-ink,var(--control-text)) 0 3.5px,var(--control-border) 3.5px 4.5px,transparent 4.5px);box-shadow:none;appearance:none;-webkit-appearance:none;pointer-events:auto;cursor:ew-resize}
.engine-gradient-stop-range::-moz-range-track{height:2px;background:transparent;border:0}
.engine-gradient-stop-range::-moz-range-thumb{width:17px;height:17px;border:2px solid transparent;border-radius:50%;background:radial-gradient(circle,var(--gradient-thumb-ink,var(--control-text)) 0 3.5px,var(--control-border) 3.5px 4.5px,transparent 4.5px);box-shadow:none;pointer-events:auto;cursor:ew-resize}
.engine-gradient-stop-range:focus-visible{outline:2px solid var(--control-focus);outline-offset:2px}
.engine-gradient-stop-values{display:flex;justify-content:space-between;gap:8px;margin-top:4px;color:var(--control-muted);font-size:var(--type-editor-meta)}
.engine-property-divider{border-top:1px solid var(--line);margin:8px 0}
.engine-muted{margin:var(--space-1) 0 var(--space-2);font-size:var(--type-editor-helper);color:var(--control-muted);line-height:1.5}
.engine-margin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.engine-margin-grid>.field:first-child,.engine-margin-grid>.field:last-child{grid-column:1/-1;width:calc(50% - 3px);justify-self:center}
.engine-margin-grid.is-compact>.field{grid-column:auto;width:100%;justify-self:stretch}
.engine-reset .btn{color:var(--control-muted)}
.engine-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:30px;height:28px;margin:0!important;cursor:pointer}
.engine-toggle input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}
.engine-toggle>span{display:block;width:26px;height:14px;border:1px solid var(--control-border);border-radius:10px;background:var(--control-hover);box-sizing:border-box}
.engine-toggle>span::after{content:'';display:block;width:10px;height:10px;margin:1px;border-radius:50%;background:var(--app-surface);box-shadow:0 1px 2px #0002}
.engine-toggle input:checked+span{background:var(--control-text);border-color:var(--control-text)}
.engine-toggle input:checked+span::after{transform:translateX(12px)}
.engine-toggle input:focus-visible+span{outline:2px solid var(--control-focus);outline-offset:2px}
.engine-toggle input:disabled+span{opacity:1;background:var(--control-hover);border-color:var(--control-border)}
.engine-toggle input:disabled{cursor:default}
.engine-preset-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:10px}
.engine-column-presets{grid-template-columns:repeat(3,minmax(0,1fr))}
.engine-rotation-step{display:flex;align-items:center;justify-content:center;width:var(--control-compact-height);height:var(--control-compact-height);padding:0!important}
.engine-transform-control{display:grid;gap:var(--control-field-gap);min-width:0;margin-bottom:var(--control-field-gap)}
.engine-transform-control>.field{margin-bottom:0!important}
.engine-transform-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-1);min-width:0}
html body .engine-transform-actions>.btn{width:100%;min-width:0;padding-inline:0}
.engine-transform-actions svg{display:block;flex:none}
.engine-preset{display:flex;flex-direction:column;align-items:stretch;gap:5px;min-width:0;border:1px solid var(--control-border);border-radius:var(--radius-single);background:var(--control-surface);padding:6px;cursor:pointer;color:var(--control-text);font:inherit;font-size:var(--type-editor-control);text-align:center}
.engine-preset[aria-pressed="true"]{border-color:var(--control-focus);background:var(--control-selected);color:var(--control-text)}
.engine-preset:hover:not(:disabled){border-color:var(--control-muted)}
.engine-preset:focus-visible{outline:2px solid var(--control-focus);outline-offset:2px}
.engine-preset:disabled{opacity:1;background:var(--control-hover);border-color:var(--control-border);color:var(--control-muted);cursor:not-allowed}
.engine-card-align{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.engine-alignment-row{margin-top:8px}
.engine-alignment-row>span{display:block;font-size:var(--type-editor-field-label);margin-bottom:4px}
.engine-card-align .engine-preset{padding:5px 3px}
.engine-pair-ratio{margin-top:10px}
.engine-pair-ratio>strong{display:block;margin-bottom:6px;font-size:var(--type-editor-field-label);font-weight:600;color:var(--control-muted)}
.engine-align-preview{display:flex;justify-content:center;gap:3px;height:24px;padding:2px;box-sizing:border-box}
.engine-align-preview[data-align="start"]{align-items:flex-start;border-top:1px solid var(--control-text)}
.engine-align-preview[data-align="center"]{align-items:center;background:linear-gradient(transparent calc(50% - .5px),var(--control-text) calc(50% - .5px),var(--control-text) calc(50% + .5px),transparent calc(50% + .5px))}
.engine-align-preview[data-align="end"]{align-items:flex-end;border-bottom:1px solid var(--control-text)}
.engine-align-preview i{display:block;width:7px;background:var(--app-muted);border:1px solid var(--control-surface);border-radius:1px;box-sizing:border-box}
.engine-align-preview i:nth-child(1){height:18px}
.engine-align-preview i:nth-child(2){height:11px}
.engine-align-preview i:nth-child(3){height:15px}
.engine-align-preview[data-axis="x"]{flex-direction:column;justify-content:center;gap:2px;border:0;background:none}
.engine-align-preview[data-axis="x"][data-align="start"]{align-items:flex-start;border-left:1px solid var(--control-text)}
.engine-align-preview[data-axis="x"][data-align="center"]{align-items:center;background:linear-gradient(to right,transparent calc(50% - .5px),var(--control-text) calc(50% - .5px),var(--control-text) calc(50% + .5px),transparent calc(50% + .5px))}
.engine-align-preview[data-axis="x"][data-align="end"]{align-items:flex-end;border-right:1px solid var(--control-text)}
.engine-align-preview[data-axis="x"] i{height:5px;width:20px;flex-shrink:0}
.engine-align-preview[data-axis="x"] i:nth-child(2){width:12px}
.engine-align-preview[data-axis="x"] i:nth-child(3){width:16px}
.engine-preset-preview{height:35px;display:grid;gap:3px;padding:3px;background:var(--app-surface-subtle);border-radius:2px;box-sizing:border-box}
.engine-preset-preview i{display:block;background:var(--app-muted);border-radius:1px;min-width:0}
.engine-preset-preview .preview-text{background:repeating-linear-gradient(to bottom,var(--control-text) 0,var(--control-text) 2px,transparent 2px,transparent 5px)}
.engine-preset-preview[data-layout="top"],.engine-preset-preview[data-layout="bottom"]{grid-template-rows:1fr 1.7fr}
.engine-preset-preview[data-layout="bottom"]{grid-template-rows:1.7fr 1fr}
.engine-preset-preview[data-layout="bottom"]>.preview-content{grid-row:1}
.engine-preset-preview[data-layout="left"],.engine-preset-preview[data-layout="right"]{grid-template-columns:1fr 1.5fr}
.engine-preset-preview[data-layout="right"]{grid-template-columns:1.5fr 1fr}
.engine-preset-preview[data-layout="right"]>.preview-content{grid-column:1;grid-row:1}
.engine-preset-preview[data-layout="right"]>.preview-text{grid-column:2;grid-row:1}
.engine-preset-preview[data-layout="column"]{grid-template-columns:1fr;grid-template-rows:repeat(4,1fr)}
.engine-preset-preview[data-layout="two"]{grid-template-columns:repeat(2,1fr)}
.engine-preset-preview[data-layout="three"]{grid-template-columns:repeat(3,1fr)}
.engine-preset-preview[data-layout="three"]>i:last-child{display:none}
.engine-preset-preview[data-layout="four"]{grid-template-columns:repeat(4,1fr)}
.engine-structure-row{display:flex;align-items:center;gap:8px;padding:8px 7px;margin:4px 0 7px;background:var(--app-surface-subtle);border:1px solid var(--control-border);border-radius:5px}
.engine-structure-label{display:flex;align-items:center;gap:8px;flex:1;min-width:0;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.engine-background-swatch{width:13px;height:13px;border:1px solid var(--control-border);border-radius:2px}
.engine-background-swatch.is-off{background:repeating-conic-gradient(var(--control-hover) 0% 25%,var(--control-surface) 0% 50%) 50%/8px 8px}
.inspector .engine-inspector .engine-section-header{align-items:flex-end;padding:0;margin-bottom:16px;border:0;background:transparent;box-shadow:none;cursor:pointer}
.inspector .engine-inspector .engine-section-header h3{margin:4px 0 0;line-height:1.4}
.engine-inspector .engine-section-header .engine-header-actions{align-self:flex-end}
#inspector .engine-inspector .engine-section-header .engine-section-title{display:block;max-width:100%;padding:0;border:0;background:transparent;box-shadow:none;color:var(--app-muted);font:inherit;text-align:left;overflow-wrap:anywhere;cursor:pointer}
#inspector .engine-inspector .engine-section-title:hover,#inspector .engine-inspector .engine-section-owner.is-active .engine-section-title{color:var(--app-ink)}
#inspector .engine-inspector .engine-section-title:focus-visible{outline:2px solid var(--control-focus);outline-offset:2px;border-radius:2px}
.engine-current-image{display:grid;gap:6px;min-width:0;margin:0 0 10px}
.engine-current-image>strong{font-size:var(--type-editor-control);color:var(--app-ink)}
.engine-current-image-preview{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-width:0;padding:8px;border:1px solid var(--line);border-radius:6px;background:var(--app-surface-subtle);color:var(--app-muted);font-size:var(--type-editor-helper)}
.engine-current-image[data-image-use="아이콘"] .engine-current-image-preview:has(img),.engine-current-image[data-image-use="그래픽"] .engine-current-image-preview:has(img){background:#fff}
.engine-current-image-preview img{display:block;max-width:100%;max-height:240px;width:auto;height:auto;object-fit:contain}
.engine-current-image-open{cursor:pointer}
.engine-current-image-open:hover{border-color:var(--control-muted);background:var(--control-hover)}
.engine-current-image>small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--app-muted)}
.engine-image-source-actions{display:grid;gap:6px;margin:0 0 12px}
.engine-image-source-actions .btn{width:100%;min-width:0}
.engine-inspector .engine-add-element{margin:10px var(--control-panel-inset,8px) 8px;padding-top:9px;border-top:1px solid var(--line)}
.engine-inspector .engine-add-element .field{margin:0}
.engine-inspector .engine-tree-region{margin:7px var(--control-panel-inset,8px)!important}
.engine-inspector .engine-tree-region>summary{background:var(--app-surface-subtle)!important}

/* Editing feedback must be immediate, including styles inherited from other sheets. */
#inspector,#quick-inspector,#inspector *,#quick-inspector *,
#inspector *::before,#inspector *::after,#quick-inspector *::before,#quick-inspector *::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}
.engine-inspector .engine-node-actions{display:grid;grid-template-columns:28px 28px repeat(2,minmax(0,1fr));gap:4px;padding:2px 0 8px;margin:0 var(--control-panel-inset,8px)}
.engine-inspector .engine-node-actions .btn{width:100%;min-width:0;padding:4px;font-size:var(--type-editor-control)}

/* Common Core frame contract, independent of registered unit type. */
[data-engine-frame]{min-width:0;flex-shrink:0;--engine-self-x:start;--engine-self-y:start}
[data-engine-frame][data-align-x="center"]{--engine-self-x:center}
[data-engine-frame][data-align-x="end"]{--engine-self-x:end}
[data-engine-frame][data-align-y="center"]{--engine-self-y:center}
[data-engine-frame][data-align-y="end"]{--engine-self-y:end}
.engine-frame-stack{display:flex;flex-direction:column}
.engine-frame-grid{display:grid}
.engine-frame-stack>[data-engine-frame]{margin:0;align-self:var(--engine-self-x)}
.engine-frame-stack>[data-engine-frame][data-mode="flow"][data-align-y="center"]{margin-top:auto;margin-bottom:auto}
.engine-frame-stack>[data-engine-frame][data-mode="flow"][data-align-y="end"]{margin-top:auto}
.engine-frame-grid>[data-engine-frame]{margin:0;justify-self:var(--engine-self-x);align-self:var(--engine-self-y)}

.engine-section[data-engine-frame][data-align-x="start"]{margin-left:0;margin-right:auto}
.engine-section[data-engine-frame][data-align-x="center"]{margin-left:auto;margin-right:auto}
.engine-section[data-engine-frame][data-align-x="end"]{margin-left:auto;margin-right:0}
.engine-number-input{position:relative;min-width:0}
.engine-number-input.has-unit input{padding-right:27px!important;appearance:textfield;-moz-appearance:textfield}
.engine-number-input input::-webkit-inner-spin-button,.engine-number-input input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.engine-number-unit{position:absolute;right:7px;top:50%;transform:translateY(-50%);font-size:var(--type-editor-meta)!important;color:var(--app-muted);pointer-events:none}
.engine-property-card input:disabled,.engine-property-card select:disabled{opacity:.45;background:var(--app-surface-subtle);cursor:default}
.engine-property-card .field:has(input:disabled)>[data-scrub]{cursor:default;opacity:.5}
.engine-size-limits{margin:4px 0 8px}
.engine-size-limits-label{display:block;margin-bottom:var(--space-2);font-size:var(--type-field-label);color:var(--muted)}
.engine-frame-warning{font-size:var(--type-editor-helper);line-height:1.5;color:var(--app-warning);margin:6px 0 0}
.engine-frame-warning[hidden]{display:none}
.canvas-scroll .engine-text-content{cursor:default;user-select:none;-webkit-user-select:none}
.engine-toggle input[data-mixed="true"]+span{background:repeating-linear-gradient(135deg,var(--app-muted) 0 3px,var(--control-hover) 3px 6px)}
.canvas-scroll .engine-text-content[data-core-inline]{outline:none;cursor:text;user-select:text;-webkit-user-select:text;white-space:pre-wrap}
.engine-text-range-note{font-size:var(--type-editor-helper);line-height:1.5;color:var(--control-text);background:var(--app-surface-subtle);border:1px solid var(--line);border-radius:6px;padding:7px 8px;margin:0 0 10px;overflow-wrap:anywhere}
.engine-text-mixed{display:block;font-size:var(--type-editor-helper);color:var(--app-muted);margin-top:3px}
.engine-text-style[data-mixed]{background:repeating-linear-gradient(135deg,var(--app-surface),var(--app-surface) 4px,var(--app-surface-subtle) 4px,var(--app-surface-subtle) 8px)}
::highlight(dps-text-range){background-color:#d4d4d4;color:inherit}

/* Canvas drop feedback shares the Tree selection token. */
.section-drop-line.is-container-drop{background:transparent;border:1px solid var(--app-accent-selection);border-radius:var(--radius-control)}

.engine-tree-frame{isolation:isolate;min-width:0}

.engine-tree-structure-note{margin-block:var(--space-2);font-size:var(--type-editor-helper)}

/* V2 panel roles: actual structure on the left, selected live controls on the right. */
/* Control stacking stays above the existing panel scrollbar (41), including dragging rows. */
.left-content{--engine-tree-control-width:18px;--engine-tree-control-height:24px;--engine-tree-control-layer:42}
/* Match the shared rail hit area; the list's legacy negative margin must not enter it. */
html.has-panel-scrollbars .editor-left>.left-content:has([data-tree-v2]){--engine-tree-scrollbar-gutter:var(--page-scroll-hit);padding-inline-end:var(--engine-tree-scrollbar-gutter)}
html.has-panel-scrollbars .editor-left>.left-content:has([data-tree-v2])>.compact-layer-list{margin-inline-end:0}
@media(min-width:1001px){.global-workspace .editor-workspace.is-tree-v2-editor{grid-template-columns:var(--editor-left-width) 1px minmax(220px,1fr) 1px var(--editor-right-width)}}
.editor-workspace.is-tree-v2-editor>.editor-quick,.editor-workspace.is-tree-v2-editor>[data-editor-resize="quick"]{display:none}
.left-content .layer-group{--dps-left-row-height:clamp(28px,calc(32px * var(--app-ui-scale)),39px);--engine-tree-section-tint:var(--app-accent-soft);--engine-tree-selected-tint:color-mix(in srgb,var(--app-accent-selection) 8%,var(--app-accent-soft));--engine-tree-hover-tint:color-mix(in srgb,var(--engine-tree-selected-tint) 50%,var(--engine-tree-section-tint));--engine-tree-drop-tint:color-mix(in srgb,var(--app-accent-selection) 12%,var(--app-accent-soft));--engine-tree-sibling-guide:color-mix(in srgb,var(--line) 75%,var(--app-muted));--engine-tree-row-fill:var(--app-surface);background:transparent;border-radius:0}
.left-content .layer-group.active{background:var(--engine-tree-section-tint);--engine-tree-row-fill:var(--engine-tree-section-tint)}
.left-content .layer-group>.layer-row{font-size:var(--type-editor-layer);line-height:1.6}
.left-content .layer-toggle.inspector-disclosure-toggle{position:relative;inset:auto;width:var(--inspector-disclosure-width);height:var(--dps-left-row-height);padding:0;background:transparent}
.left-content .layer-toggle.inspector-disclosure-toggle:hover{background:var(--control-hover)}
.left-content .layer-group>.layer-row>.layer-toggle:hover{background:transparent}
.left-content .layer-group>.layer-row:not(.is-section-selected):hover{--engine-tree-row-fill:var(--engine-tree-hover-tint);background:var(--engine-tree-hover-tint)}
.left-content .layer-group>.layer-row{background:transparent}
.left-content .layer-children:has([data-tree-v2]){padding:0;min-width:0}
.left-content [data-tree-v2]{margin:0;border:0;border-radius:0;min-width:0}
.left-content .layer-children:has([data-tree-v2]){--engine-tree-guide-width:1px;--engine-tree-indent:calc((var(--inspector-disclosure-width) - var(--engine-tree-guide-width))/2)}
.left-content :is([data-tree-v2]>[data-tree-v2],.layer-children>[data-tree-v2]){margin-left:var(--engine-tree-indent);border-left:var(--engine-tree-guide-width) solid var(--line);border-radius:0}
.left-content :is(.layer-children,[data-tree-v2]):has(>[data-tree-v2].is-active)>[data-tree-v2]{border-left-color:var(--engine-tree-sibling-guide);border-left-style:dashed}
.left-content [data-tree-v2]>summary{border-radius:0;display:flex;flex-wrap:nowrap;align-items:center;gap:3px;height:var(--dps-left-row-height);min-height:var(--dps-left-row-height);position:relative;margin:0;border:0;padding:var(--space-1) var(--space-1) var(--space-1) var(--inspector-disclosure-width);background:transparent;box-shadow:none;color:var(--control-text);font-size:var(--type-editor-layer);line-height:var(--leading-body);font-weight:var(--weight-regular);list-style:none}
.left-content [data-tree-v2]>summary>.inspector-disclosure-toggle{height:var(--dps-left-row-height);padding:0}
.left-content [data-tree-v2][open]>summary{margin:0;border:0}
.left-content [data-tree-v2]>summary>.engine-tree-title{display:flex;align-items:center;min-width:0;flex:1;white-space:nowrap;gap:0;position:relative}
.left-content .engine-tree-title.is-renaming>.engine-tree-name,.left-content .engine-tree-title.is-renaming>.engine-tree-reference{visibility:hidden}
.left-content :is(.engine-tree-title,.layer-section strong)>.engine-tree-rename{position:absolute;inset:50% 0 auto;transform:translateY(-50%);box-sizing:border-box;width:100%;height:calc(24px * var(--app-ui-scale));min-width:0;min-height:0!important;margin:0;padding:calc(2px * var(--app-ui-scale)) calc(6px * var(--app-ui-scale));border:1px solid var(--control-focus);border-radius:var(--radius-single);background:var(--app-surface);color:var(--control-text);font:inherit;line-height:normal;outline:none;resize:none;overflow:hidden;white-space:pre}
.left-content .engine-tree-name{min-width:0;overflow:hidden;text-overflow:ellipsis}
.left-content [data-tree-kind="text"]>summary .engine-tree-name{flex:1}
.left-content .engine-tree-reference{flex:none;max-width:100%;overflow:hidden;text-overflow:ellipsis;color:var(--app-muted);font-size:var(--type-editor-helper)}
.left-content .engine-tree-kind{display:inline-grid;place-items:center;flex:none;width:12px;color:var(--app-muted);font-size:var(--type-editor-helper)}
/* Reserve the same action slot in layout; never paint over the title.
 * Its flex spacer can shrink on narrow rows while the label ellipsizes to zero. */
.left-content :is(.layer-row,[data-tree-v2]>summary){position:relative;--engine-tree-control-space:0px;--engine-tree-control-opacity:0;--engine-tree-control-pointer:none}
.left-content :is(.layer-row,[data-tree-v2]>summary)::after{content:'';flex:0 0 var(--engine-tree-control-space);min-width:0;pointer-events:none}
/* Preserve disclosure/type and action hit areas at deep/narrow rows. The existing
 * list scrollbar handles a row that cannot fit; Eye must never cover selection. */
.left-content [data-tree-v2]>summary{min-width:calc(var(--inspector-disclosure-width) + 12px + 9px + 3 * var(--engine-tree-control-width) + 2 * var(--space-1))}
.left-content :is(.layer-row,[data-tree-v2]>summary):is(:hover,:focus-visible,:has(:focus-visible)),.left-content [data-tree-v2].is-tree-dragging>summary{--engine-tree-control-space:calc(3 * var(--engine-tree-control-width));--engine-tree-control-opacity:1;--engine-tree-control-pointer:auto}
.left-content :is(.layer-row,[data-tree-v2]>summary):has(>.engine-tree-controls>.engine-state-button[aria-pressed="true"]){--engine-tree-control-space:calc(3 * var(--engine-tree-control-width))}
.left-content .engine-tree-controls{display:flex;align-items:center;gap:0;position:absolute;right:var(--space-1);top:50%;transform:translateY(-50%);width:calc(3 * var(--engine-tree-control-width));height:var(--engine-tree-control-height);z-index:var(--engine-tree-control-layer);pointer-events:none}
.left-content .engine-tree-controls>*{opacity:var(--engine-tree-control-opacity,0);pointer-events:var(--engine-tree-control-pointer,none)}
.left-content .engine-tree-controls>.engine-state-button{display:grid;place-items:center;flex:none;width:var(--engine-tree-control-width);height:var(--engine-tree-control-height);min-height:var(--engine-tree-control-height);padding:2px;gap:0}
.left-content .engine-tree-controls svg{display:block;width:var(--icon-dense);height:var(--icon-dense)}
.left-content .engine-tree-controls>.engine-state-button[aria-pressed="true"]{opacity:1;pointer-events:auto;background:var(--control-selected)}
.left-content .engine-tree-controls>:is(.engine-drag-handle,.layer-drag-handle){display:grid;place-items:center;flex:none;width:var(--engine-tree-control-width);min-width:var(--engine-tree-control-width);height:var(--engine-tree-control-height);padding:2px;letter-spacing:0;border-radius:var(--radius-single)}
.left-content .engine-tree-controls>.engine-drag-handle svg{fill:currentColor}
/* The inline editor owns the full title area until blur/Enter/Escape. */
.left-content [data-tree-v2]>summary:has(>.engine-tree-title.is-renaming){--engine-tree-control-space:0px}
.left-content [data-tree-v2]>summary:has(>.engine-tree-title.is-renaming)>.engine-tree-controls{opacity:0;pointer-events:none}
/* Keep :has() invalidation bounded to the actual action classes. A terminal
 * universal selector expands the shared pseudo invalidation to entire subtrees. */
.left-content [data-tree-v2]>summary:has(>.engine-tree-title.is-renaming)>.engine-tree-controls>:where(.engine-state-button,.engine-drag-handle){pointer-events:none}
.left-content [data-tree-v2]:not(.is-active)>summary:hover{--engine-tree-row-fill:var(--engine-tree-hover-tint);background:var(--engine-tree-hover-tint)}
.left-content [data-tree-v2].is-active>summary{--engine-tree-row-fill:var(--engine-tree-selected-tint);background:var(--engine-tree-selected-tint);box-shadow:none}
.left-content [data-tree-v2][data-drop-invalid="true"]>summary,.left-content .layer-row[data-drop-invalid="true"]{--engine-tree-row-fill:var(--app-surface-subtle);background:var(--app-surface-subtle);color:var(--app-muted);box-shadow:none;outline:1px dashed var(--line);cursor:not-allowed}
.left-content [data-tree-v2][data-drop-position="inside"]>summary{--engine-tree-row-fill:var(--engine-tree-drop-tint);background:var(--engine-tree-drop-tint);box-shadow:none}
.left-content [data-tree-v2].is-tree-dragging>summary{opacity:.5;z-index:var(--engine-tree-control-layer)}
.left-content .engine-tree-leaf>summary>[data-inspector-disclosure-toggle]{visibility:hidden}
/* Legacy owner projections share a single label line even with long filenames. */
.left-content .layer-children button[data-action="select-node"]{min-width:0}
.left-content .layer-children button[data-action="select-node"]>.layer-kind{flex:none}
.left-content .layer-children button[data-action="select-node"]>span:last-child:not(.layer-kind){min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.engine-selected-editor .engine-selected-identity{margin:0;color:var(--app-muted);overflow-wrap:anywhere}
.engine-selected-editor .engine-selected-actions{display:flex;gap:var(--space-2);margin-block:var(--space-3) 0}
.engine-selected-editor .engine-selected-actions>.btn{padding:var(--space-1) 10px;font-size:var(--type-editor-control)}
.engine-selected-editor .engine-image-actions{flex-wrap:nowrap;gap:var(--space-1)}
.engine-selected-editor .engine-image-actions>.btn{flex:none;white-space:nowrap;padding-inline:var(--space-1)}
.engine-selected-editor .engine-image-actions>[data-engine-op="image-reset"]{flex:1;min-width:0}
.engine-selected-editor .engine-implicit-label{display:none}
.engine-selected-editor .engine-section-header small{display:none}
/* Property navigation selects existing live groups; the shared switch owns its artwork. */
.engine-property-navigation.panel-tabs{container-type:inline-size;gap:var(--space-1);padding-inline:var(--space-2);border-bottom-color:var(--line)}
.engine-property-tabs{display:flex;flex:1;min-width:0;align-self:stretch}
.engine-property-tabs>.engine-property-tab{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.engine-property-navigation .engine-property-tab.active{font-weight:var(--weight-medium);border-bottom-color:var(--control-text)}
.engine-property-navigation>.control-switch,.inspector-full-view-fallback{align-self:center;border:0;background:transparent;box-shadow:none;padding:var(--space-1);color:var(--control-text);font:inherit;cursor:pointer}
[data-property-view] [data-property-tab][hidden]{display:none}
[data-property-view] [data-property-tab]>summary{cursor:default}
@container(max-width:350px){.engine-property-navigation .inspector-full-view-label{display:none}}

.engine-image-mask{mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-mode:alpha;pointer-events:none}

/* Section context stays quiet; direct selection uses the same row tint as V2 nodes. */
.left-content .layer-group>.layer-row.is-section-selected{--engine-tree-row-fill:var(--engine-tree-selected-tint);background:var(--engine-tree-selected-tint)}
.left-content .layer-group>.layer-row .layer-section strong{font-weight:var(--weight-regular)}
.left-content .layer-group>.layer-row{gap:3px}
.left-content .layer-group>.layer-row .layer-section{gap:3px;padding-inline:0 var(--space-1)}
.left-content .layer-group>.layer-row,.left-content [data-tree-v2]>summary{border-radius:0}
.engine-column-ratios > [hidden], [data-column-ratio-controls][hidden]{display:none}

/* Column boundaries share the gradient's native 17px handle and focus paint only. */
.engine-column-track{background:linear-gradient(var(--control-border),var(--control-border)) center/100% 2px no-repeat;background-color:var(--control-bg)}
.engine-property-card input.engine-column-boundary[type="range"]{pointer-events:none;touch-action:none}
.engine-column-boundary:focus-visible{z-index:1}
.engine-column-boundary[hidden]{display:none}
.engine-column-values{margin-top:4px;color:var(--control-muted);font-size:var(--type-editor-meta);line-height:1.5;overflow-wrap:anywhere}

/* Shared Frame alignment layout; limited to the existing arrangement tiles. */
.engine-property-subgroup[data-frame-alignment-group]>.engine-property-heading{margin-bottom:var(--space-3)}
[data-frame-alignment-group] .engine-alignment-row{margin-top:0}
[data-frame-alignment-group] .engine-alignment-row+.engine-alignment-row{margin-top:var(--space-4)}
[data-frame-alignment-group] .engine-alignment-row>span{margin-bottom:calc(var(--space-1) * 1.5)}
[data-frame-alignment-group] .engine-card-align{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-1)}
.engine-property-subgroup[data-frame-alignment-group]+[data-frame-alignment-group]{margin-top:var(--space-5);padding-top:0;border-top:0}
.engine-frame-stack[data-flow-group="true"]>[data-engine-frame][data-mode="flow"]{margin-top:0;margin-bottom:0}

/* Section title uses the same in-place editor as Frame and Leaf titles. */
.left-content .layer-section strong{position:relative;min-width:0}

/* Resize the outer video frame without stretching the decoded video content. */
.engine-video video{object-fit:contain}

/* Image effects and whole-figure opacity share the Inspector control tokens. */
.engine-image-fx-defs{position:absolute;pointer-events:none}
.engine-slider-number{display:grid;grid-template-columns:minmax(0,1fr) 72px;align-items:center;gap:var(--space-2);min-width:0}
.engine-slider-number>.field{margin:0;min-width:0}
.engine-slider-number>.field>span{display:none}
.engine-image-effect-row{margin-top:var(--space-4);min-width:0}
[data-image-effects]{container-type:inline-size}
.engine-image-effects-grid{margin-top:var(--space-4)}
.engine-image-effects-grid .field{margin-bottom:0}
.engine-image-highlights-status:not([hidden]){display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:var(--space-4)}
.engine-image-levels-values [data-scrub]{gap:2px;align-items:flex-start}
.engine-image-levels-values [data-scrub] small{flex:none}
@container (max-width:190px){.engine-property-card .engine-image-effects-grid{grid-template-columns:minmax(0,1fr)}}
@container (max-width:190px){.engine-image-levels-values [data-scrub]{min-height:2lh}}
.engine-image-effects-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}
.engine-image-effects-actions>span{margin-right:auto}
.engine-image-levels-track{position:relative;height:var(--control-compact-height);min-width:0}
.engine-image-levels-track:before{content:"";position:absolute;inset:calc(50% - 2px) 8px;height:4px;background:var(--control-border);border-radius:2px}
.engine-image-levels-track>input.engine-control-range{position:absolute;inset:0;pointer-events:none}
.engine-image-levels-track>input:focus-visible{z-index:1}
.engine-image-levels-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2);min-width:0}
.engine-image-levels-values .field{margin-bottom:0}
html body input.engine-control-range[type=range]{appearance:none;-webkit-appearance:none;width:100%;height:var(--control-compact-height);min-width:0;margin:0;padding:0 8px;background:transparent;border:0;touch-action:none}
.engine-control-range::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--control-border)}
.engine-control-range::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:16px;height:16px;margin-top:-6px;border-radius:50%;border:1px solid var(--control-muted);background:#fff;pointer-events:auto;cursor:ew-resize}
.engine-control-range::-moz-range-track{height:4px;border-radius:2px;background:var(--control-border)}
.engine-control-range::-moz-range-thumb{width:14px;height:14px;border-radius:50%;border:1px solid var(--control-muted);background:#fff;pointer-events:auto;cursor:ew-resize}
.engine-image-levels-track .engine-control-range::-webkit-slider-runnable-track{background:transparent}
.engine-image-levels-track .engine-control-range::-moz-range-track{background:transparent}
.engine-control-range:disabled{opacity:.4}
.engine-control-range:disabled::-webkit-slider-thumb{cursor:not-allowed;pointer-events:none}
.engine-control-range:disabled::-moz-range-thumb{cursor:not-allowed;pointer-events:none}
.engine-control-range:focus-visible{outline:2px solid var(--control-focus);outline-offset:1px}

.resource-lucide-selected{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);border:1px solid var(--control-border);border-radius:var(--radius-single)}
.resource-lucide-selected img{flex:none}.resource-lucide-selected strong,.resource-lucide-selected small{display:block}
[data-page-width-select]{width:auto}
.canvas-width-control{display:inline-flex;align-items:center;gap:var(--space-2);white-space:nowrap}
.editor-center>.canvas-toolbar{height:auto;min-height:48px;flex-wrap:wrap}

/* Keep the native picker and its label; the adjacent action is not nested in it. */
.engine-color-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1);min-width:0}
.engine-color-actions>.engine-color-hex{width:8ch;min-width:8ch;flex:1 1 8ch;height:var(--color-control-height);font-size:var(--type-helper);padding-inline:var(--space-1)}
.engine-color-actions:has(>.engine-color-hex)>.engine-color-label{flex:0 0 28px}
.engine-color-hex[aria-invalid=true]{border-color:var(--control-text);outline:1px dashed var(--control-text)}
.engine-color-label{display:block;flex:1;min-width:0}
html body .engine-color-actions>.engine-color-none{flex:none;min-width:max(36px,calc(36px * var(--app-ui-scale,1)));white-space:nowrap!important;padding:0 6px;min-height:var(--color-control-height);font-size:var(--type-helper);font-weight:500;background:var(--app-surface);color:var(--app-muted)}
