/* Base native controls and shared button presentation. Component files own geometry exceptions. */
button,input,select,textarea{font:inherit;color:inherit}
select,input[type=number],input[type=text],textarea{border:1px solid var(--control-border);border-radius:var(--radius-single);padding:9px 10px;background:var(--app-surface);min-width:0}
input[type=search]{border-radius:var(--radius-single)}
select{padding-right:26px}
textarea{resize:vertical;line-height:1.7;max-width:100%}
.canvas-scroll td[data-canvas-table-cell]{position:relative}
.canvas-scroll td[data-canvas-table-cell]:focus-visible{outline:1px solid var(--app-ink);outline-offset:-2px}
.btn{border:1px solid var(--control-border);padding:9px 14px;border-radius:var(--radius-single);background:var(--app-surface);font-size:var(--type-button);font-weight:var(--weight-semibold);white-space:nowrap;line-height:var(--leading-control)}
/* Shared control focus: no oversized pointer ring; compact keyboard cue. */
/* Neutral controls; accent is scoped to start, planning and editor-entry actions. */
/* Chrome and Canvas interaction surfaces are not document text editors.
 * Explicit editing/copy roles override Chromium's inherited user-select behavior. */
:is(.service-topbar,.service-global-nav,.workspace-header,.editor-app,.workspace-drag-ghost,.workspace-drop-preview,.canvas-context-menu){user-select:none;-webkit-user-select:none}
:is(input,textarea,[contenteditable]:not([contenteditable=false]),[data-ui-copyable],.rt-return pre,.font-license,#dialog,.dialog-body){user-select:text;-webkit-user-select:text}
html body .btn{min-height:var(--workspace-control-height);border-radius:var(--workspace-control-radius);border-color:var(--control-border);background:var(--control-surface);color:var(--control-text)}
html body .btn.primary{background:var(--control-text);border-color:var(--control-text);color:var(--control-surface)}
html body .btn:is(:hover,[data-demo-state="hover"]):not(:disabled){background:var(--control-hover);border-color:var(--control-muted);color:var(--control-text)}
html body .btn.primary:is(:hover,[data-demo-state="hover"]):not(:disabled){background:var(--app-primary-hover);border-color:var(--app-primary-hover);color:var(--control-surface)}
html body .btn:is(.active,.selected,[aria-pressed="true"]){background:var(--control-selected);border-color:var(--control-muted);color:var(--control-text)}
html body .btn:is(:active,[data-demo-state="pressed"]):not(:disabled){background:var(--app-control-pressed)}
html body .btn.primary:is(:active,[data-demo-state="pressed"]):not(:disabled){background:var(--app-primary-hover)}
html body .btn:is([data-nav="editor"],[data-action="open-project"],[data-action="project-open"],[data-action="new-project"],[data-quick-create]):not(:disabled),
html body .btn:is([data-nav="quick"],[data-nav="new"]):not(.project-start-action):not(:disabled),
html body .quick-primary-row .btn.primary:not(:disabled){background:var(--control-edit);border-color:var(--control-edit);color:var(--control-surface)}
html body .btn:is([data-nav="editor"],[data-action="open-project"],[data-action="project-open"],[data-action="new-project"],[data-quick-create]):is(:hover,:active,[data-demo-state="hover"],[data-demo-state="pressed"]):not(:disabled),
html body .btn:is([data-nav="quick"],[data-nav="new"]):not(.project-start-action):is(:hover,:active,[data-demo-state="hover"],[data-demo-state="pressed"]):not(:disabled),
html body .quick-primary-row .btn.primary:is(:hover,:active,[data-demo-state="hover"],[data-demo-state="pressed"]):not(:disabled){background:var(--control-edit-hover);border-color:var(--control-edit-hover);color:var(--control-surface)}
html body .btn:disabled,html body .quick-primary-row .btn.primary:disabled{opacity:1;background:var(--control-hover);border-color:var(--control-border);color:var(--control-muted);cursor:not-allowed}
html body .btn.small{min-height:var(--control-small-height)}
html body .btn.tiny{min-height:var(--control-dense-height)}
.btn.danger{background:var(--app-surface-subtle)}
html body .btn.danger{color:var(--app-danger)}
html body input:is([type=checkbox],[type=radio],[type=range]){accent-color:var(--control-text)}
html body :is(.field,.workspace-header-context,.canvas-toolbar) :is(input[type=text],input[type=search],input[type=number],select,textarea){border-color:var(--control-border);border-radius:var(--workspace-control-radius);background:var(--control-surface);color:var(--control-text)}
html body .field :is(input[type=text],input[type=number],select){min-height:var(--workspace-control-height)}
html body .search-control{border-color:var(--control-border);background:var(--control-surface)}
html body .search-control:focus-within{border-color:var(--control-focus);box-shadow:0 0 0 1px var(--control-focus)}
html body :is(button,a,input,select,textarea,summary,[tabindex],[contenteditable]):focus{outline:none}
html body :is(button,a,input,select,textarea,summary,[tabindex],[contenteditable]):focus-visible{outline:1px solid var(--control-focus);outline-offset:-1px}
html body .left-content [data-tree-v2]>summary:focus-visible{outline:1px solid var(--control-focus);outline-offset:-1px}
/* Tree pointer selection is not keyboard navigation, even when Chrome keeps :focus-visible. */
html body .left-content :is(.layer-section,[data-tree-v2]>summary)[data-tree-pointer-focus]:focus{outline:none}
html body .engine-color-control:has(input:focus-visible){outline:1px solid var(--control-focus);outline-offset:-1px}
html body .engine-color-control input:focus-visible{outline:none}
.canvas-toolbar :is(.btn.small,select){height:var(--control-small-height);font-size:var(--type-editor-control);line-height:1.5}

.control-switch{display:inline-flex;align-items:center;gap:var(--space-2);flex-shrink:0}
.switch-track{display:block;width:26px;height:16px;border:1px solid var(--muted);border-radius:var(--radius-panel);background:var(--line);position:relative}
.switch-track::after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:var(--muted)}
.control-switch[aria-checked="true"] .switch-track{background:var(--control-text);border-color:var(--control-text)}
.control-switch[aria-checked="true"] .switch-track::after{left:12px;background:var(--control-selected)}
.canvas-toolbar [data-zoom]{width:110px}
/* Binary choices share the Canvas connected/boards button surface. */
.segmented{display:flex;align-items:stretch;min-width:0;gap:var(--space-1);padding:2px;border:1px solid var(--control-border);border-radius:var(--radius-control);background:var(--app-surface-subtle)}
html body .segmented[role=group]>.btn{flex:1;min-width:0;min-height:calc(var(--control-compact-height) - 6px);height:calc(var(--control-compact-height) - 6px);padding:0 var(--space-2);border:1px solid transparent;border-radius:var(--radius-compact);background:transparent;box-shadow:none;color:var(--control-muted);font-size:var(--type-editor-control);text-align:center;justify-content:center;white-space:normal}
html body .segmented[role=group]>.btn:is(.active,[aria-pressed="true"]){background:var(--app-surface);border-color:var(--control-border);color:var(--control-text);box-shadow:0 1px 4px #00000011}
html body .segmented[role=group]>.btn:is(:hover,[data-demo-state="hover"]):not(:disabled){background:var(--control-hover);border-color:var(--control-muted);color:var(--control-text)}
html body .segmented[role=group]>.btn:is(:active,[data-demo-state="pressed"]):not(:disabled){background:var(--app-control-pressed)}
html body .segmented[role=group]>.btn:disabled{background:transparent;border-color:transparent;color:var(--control-muted);cursor:not-allowed}
.canvas-context-menu{position:fixed;z-index:1000;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-control);padding:5px;min-width:190px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);overflow:auto;box-shadow:0 8px 24px #0002}
.canvas-context-menu button{display:block;width:100%;border:0;border-radius:var(--radius-single);background:transparent;padding:7px 10px;text-align:left;font-size:var(--type-editor-value)}
.canvas-context-menu button:hover:not(:disabled),.canvas-context-menu button:focus-visible{background:var(--control-hover)}
.canvas-context-menu .danger{color:var(--app-danger)}
.canvas-under-options{position:fixed;z-index:1001;min-width:190px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);overflow:auto;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-control);padding:5px;box-shadow:0 8px 24px #0002}
.canvas-menu-primary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:1px solid var(--line);padding-bottom:4px;margin-bottom:4px}
.canvas-context-menu [aria-checked=true]{background:var(--control-hover);font-weight:600}
.canvas-context-menu button:disabled{color:var(--control-muted);cursor:not-allowed}
.canvas-under-options[hidden]{display:none}
.inspector [data-table-whole][hidden],.inspector [data-table-cell-style-controls] [hidden]{display:none!important}
.canvas-context-menu .canvas-under-item{display:flex;align-items:center;gap:var(--space-2,8px)}
.canvas-under-name{flex:1;min-width:0;max-width:22ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.canvas-under-kind{font-size:var(--type-editor-meta);color:var(--control-muted);white-space:nowrap}
.canvas-context-menu [data-select-under]::after{content:'›';float:right}
.canvas-under-item>span:last-child{width:1em;flex:none}
.canvas-context-menu .canvas-under-item[aria-checked=true]{background:var(--app-accent-soft);color:var(--control-text)}
@media(forced-colors:active){html body :is(button,a,input,select,textarea,summary,[tabindex],[contenteditable]):focus-visible{outline:1px solid Highlight}}

/* Shared density contract: containers choose a size; controls inherit it. */
html body .node-tabs>button{font-size:var(--control-tab-font-size);font-weight:var(--control-tab-font-weight)}
.background-color-set{margin-top:var(--control-group-gap)}
.inspector .background-color-tabs{display:flex;margin:0 0 var(--control-group-gap)}
.background-color-tabs button{flex:1;min-width:0}
.background-color-panel{padding-inline:var(--control-panel-inset)}
.inspector .fill-color-row{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:end}
.inspector .selection-head{flex-wrap:wrap;align-items:flex-start;margin-bottom:var(--control-field-gap)}
.inspector .selection-head>div{flex:1;min-width:0}
.inspector .selection-head h3{margin-top:var(--control-heading-gap)}
.inspector-view-controls{display:flex;align-items:center;justify-content:space-between;gap:var(--control-gap);margin-bottom:var(--control-gap);color:var(--control-text);font-size:var(--type-editor-value)}
[data-inspector-pane][hidden]{display:none!important}
.controls-regular{--control-height:var(--control-regular-height)}
.controls-compact,.inspector,.canvas-toolbar{--control-height:var(--control-compact-height)}
.controls-dense{--control-height:var(--control-dense-height)}
/* Shared property-panel rhythm; control hit areas and artwork spacing are unchanged. */
.inspector{--control-gap:var(--control-panel-gap);--control-group-gap:var(--control-panel-group-gap);--inspector-scroll-block-inset:21px;--inspector-scroll-inline-inset:16px}
@media(min-width:1650px){.inspector{--inspector-scroll-block-inset:24px;--inspector-scroll-inline-inset:20px}}
html body :is(.field,.workspace-header-context,.canvas-toolbar) :is(input[type=text],input[type=search],input[type=number],select),
html body .inspector .field input[type=url],
html body :is(.controls-regular,.controls-compact,.controls-dense,.inspector,.canvas-toolbar) .btn{
 height:var(--control-height);min-height:var(--control-height);padding-block:0;line-height:1.4;box-sizing:border-box;font-size:var(--type-input);
}
html body :is(.controls-regular,.controls-compact,.controls-dense,.inspector,.canvas-toolbar) .btn{display:inline-flex;align-items:center;justify-content:center}
html body .inspector .form-grid{gap:var(--control-field-gap);margin-bottom:var(--control-field-gap)}
html body .inspector .form-grid .field{margin-bottom:0}
html body .inspector .field{gap:var(--control-label-gap);margin-bottom:var(--control-field-gap)}
html body .inspector .check{margin-block:var(--control-field-gap)}
html body .inspector .property-divider{margin-block:var(--control-group-gap)}
/* All property tabs share heading-to-control spacing, including property captions. */
html body .inspector :is(.property-caption,.inspector-section-title){margin-block:var(--control-group-gap) var(--control-heading-gap)}
html body .inspector :is(.property-caption,.inspector-section-title)+:is(.field,.form-grid,.check,.actions){margin-top:0}
html body .inspector .section-heading{margin-block:var(--control-field-gap) var(--control-heading-gap)}
html body .inspector .section-heading :is(h3,h4,.property-caption){margin-block:0}
html body .inspector .help{margin-block:var(--control-support-gap) var(--control-field-gap)}
html body .inspector .field>small{margin-block:0}
html body .inspector :is(.layout-choices,.selected-photo,.thumb-grid){margin-block:var(--control-support-gap) var(--control-field-gap)}
html body .inspector details:not(.inspector-group)[open]>summary{margin-bottom:var(--control-field-gap)}
html body .inspector .inspector-group[open]>summary+:is(.property-caption,.inspector-section-title,.section-heading){margin-top:0}
html body .inspector [data-inspector-pane]>:is(.property-caption,.inspector-section-title):first-child{margin-top:0}
html body .inspector [data-inspector-kind="background"]>.property-divider:first-child{display:none}
html body .inspector .field>span{font-weight:500;color:var(--control-text)}
html body .inspector textarea{min-height:72px;padding:8px 10px;resize:vertical}
html body .inspector :is(input,select,textarea):disabled{background:var(--control-hover);color:var(--control-muted);cursor:not-allowed}
html body .canvas-toolbar :is(.segmented,.control-switch){height:var(--control-height);min-height:var(--control-height)}
html body :is(.node-tabs,.text-alignment){box-sizing:border-box;background:var(--control-hover);border:1px solid var(--control-border);border-radius:var(--radius-control);padding:2px;gap:2px}
/* Editable segments share Compact height; only their artwork differs from fields. */
html body :is(.node-tabs button,.text-alignment button):is(.active,[aria-pressed=true]){background:var(--control-surface);color:var(--control-text);box-shadow:none}
html body .inspector :is(.node-tabs,.text-alignment){height:var(--control-compact-height)}
html body .inspector :is(.node-tabs,.text-alignment) button{height:100%;min-height:0;padding-block:0;color:var(--control-text)}
html body .control-switch[aria-checked=true] .switch-track{background:var(--control-text);border-color:var(--control-text)}
.inspector-group{border:1px solid var(--control-border);border-radius:var(--radius-control);margin-bottom:var(--control-gap);overflow:hidden}
.inspector-group>summary{min-height:var(--control-compact-height);padding:6px 10px;cursor:pointer;font-size:var(--type-editor-value);color:var(--control-text);background:var(--control-hover);overflow-wrap:anywhere}
.inspector-group:not(.inspector-image)>summary{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.inspector-group[open]>summary{border-bottom:1px solid var(--control-border);margin-bottom:var(--control-field-gap)}
.inspector-group> :not(summary){margin-inline:var(--control-panel-inset)}
.inspector-group>.field:last-child{margin-bottom:var(--control-field-gap)}
.inspector-section-title{font-size:var(--type-editor-value);font-weight:600;margin:var(--control-group-gap) 0 var(--control-gap);color:var(--control-text)}
.inspector-group.is-active>summary{background:var(--control-selected);box-shadow:inset 3px 0 var(--control-focus)}
.inspector-core-section{margin:0 0 var(--control-group-gap)}
.inspector-core-section+.inspector-core-section{border-top:1px solid var(--control-border);padding-top:var(--control-group-gap)}
.inspector-core-section-heading{display:flex;align-items:center;gap:7px;min-height:28px;margin:0 0 var(--control-gap);padding:4px 7px;border:1px solid var(--control-border);border-radius:var(--radius-control);background:var(--control-hover);color:var(--control-text)}
.inspector-core-section-heading strong{min-width:0;font-size:var(--type-editor-value);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inspector-core-section-number{flex:none;padding:2px 6px;border-radius:999px;background:var(--control-surface);color:var(--control-muted);font-size:var(--type-editor-meta);font-weight:700;letter-spacing:.02em}
.inspector-core-section[data-core-section="common"] .inspector-core-section-number{border-radius:3px;background:transparent;padding-inline:0}
.inspector-core-section>.inspector-group:last-child{margin-bottom:0}
.module-management{margin-top:var(--control-group-gap);border-top:1px solid var(--control-border);padding-top:var(--control-group-gap)}
.section-drop-line{position:fixed;height:1px;background:var(--control-text);pointer-events:none;z-index:1000}
.inspector-image>summary{display:flex;align-items:center;gap:var(--space-2);list-style:none}
.inspector-image>summary::after{content:'⌄';margin-left:auto}
.inspector-image>summary img,.inspector-image .slot-empty{width:48px;height:48px;object-fit:contain;flex-shrink:0;background:var(--control-surface);border-radius:var(--radius-control)}
.inspector-image>summary small{display:block;color:var(--control-muted);font-size:var(--type-editor-helper);margin-top:4px}
.slot-empty{display:grid;place-items:center;font-size:var(--type-editor-helper)}
.contextual-ai .rt-tabs,.contextual-ai .actions{flex-wrap:wrap}
.contextual-ai{margin-top:var(--control-group-gap)}
/* Embedded request/results use panel width, never the full-page two-column grid. */
.rt-detail-compact{min-width:0;overflow-wrap:anywhere}
.rt-detail-compact :is(.rt-request-grid,.rt-request-grid aside,.rt-image-compare,.rt-copy-compare){display:grid;grid-template-columns:minmax(0,1fr);gap:var(--control-group-gap)}
.rt-detail-compact :is(.rt-request-grid>*,.rt-copy-compare>*,.section-heading>*,.rt-brief dd){min-width:0}
.rt-detail-compact .section-heading{flex-wrap:wrap;align-items:flex-start;gap:var(--control-gap)}
.rt-detail-compact .section-heading h3{font-size:var(--type-editor-title);line-height:1.5}
.rt-detail-compact .rt-tabs{gap:var(--control-gap);margin-block:var(--control-group-gap);padding-bottom:var(--control-gap)}
.rt-detail-compact :is(.rt-brief,.rt-return,.rt-result,.rt-copy-compare>div){padding:var(--control-gap)}
.rt-detail-compact .rt-brief dl{grid-template-columns:minmax(0,1fr);gap:var(--control-gap)}
.rt-detail-compact .rt-brief dd{margin-bottom:var(--control-gap)}
.rt-detail-compact :is(textarea,pre,img){box-sizing:border-box;max-width:100%}
.rt-detail-compact .rt-empty{padding:var(--control-group-gap) var(--control-gap)}
.contextual-ai :is(pre,code){white-space:pre-wrap;overflow-wrap:anywhere}
.contextual-ai .btn{max-width:100%;white-space:normal;height:auto!important;min-height:var(--control-compact-height);padding-block:5px!important}
/* View controls remain usable after deselection; their own styling still applies. */
.inspector[aria-disabled=true] :is(input,select,textarea,button:not([data-inspector-tab],[data-inspector-view],[data-inspector-disclosure-toggle])){color:var(--control-muted);background:var(--control-hover)}
/* Screen-space selection thickness; no exported artwork or geometry changes. */
.canvas-scroll .detail-section.section-selected::after{border-width:var(--selection-stroke,1px)}
.canvas-scroll .node-selected:not(.detail-section){outline-width:var(--selection-stroke,1px)!important;outline-offset:var(--selection-offset,2px)}
/* Figma-like preview: show the hovered section boundary and its deepest editable child. */
.canvas-scroll .editor-hover:not(.detail-section){outline:var(--hover-stroke,1px) dashed var(--app-canvas-highlight)!important;outline-offset:var(--hover-offset,2px)}
.canvas-scroll .detail-section.editor-hover:not(.section-selected)::after{content:'';position:absolute;inset:0;z-index:9;border:var(--hover-stroke,1px) dashed var(--app-canvas-highlight);border-radius:inherit;pointer-events:none}
.canvas-scroll .node-selected:not(.detail-section){outline-color:color-mix(in srgb,var(--app-canvas-highlight) 50%,transparent)!important;outline-style:dashed!important}
.canvas-scroll .node-selected[data-mode=free]:not(.detail-section){outline-color:color-mix(in srgb,var(--app-accent-selection) 50%,transparent)!important}
.canvas-scroll .detail-section.section-selected::after{border-style:dashed;border-color:color-mix(in srgb,var(--app-canvas-highlight) 50%,transparent)}
.canvas-scroll .detail-section.section-selected:has(.node-selected)::after{border-color:transparent!important}
#inspector [data-panel-node].is-active{outline:none;border-color:var(--canvas-highlight);box-shadow:none}
#inspector .editor-hover:not(.is-active){outline:none;border-color:var(--control-text);box-shadow:none}
#inspector .editor-hover>summary{background:var(--app-surface-subtle)}
.inspector-module-actions{display:flex;flex-wrap:wrap;gap:var(--control-gap);margin-bottom:var(--control-group-gap)}
html body .inspector-module-actions .btn{height:auto;min-height:var(--control-compact-height);white-space:normal;padding:5px 10px;text-align:center}
.section-action-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--control-gap)}
.section-action-row .btn{min-width:0;padding-inline:2px}
.inspector .section-action-row{grid-template-columns:minmax(0,1.35fr) repeat(2,minmax(0,1fr)) minmax(0,.75fr)}
.inspector .layout-choices button:disabled{opacity:1;color:var(--control-muted);background:var(--control-hover);cursor:not-allowed}
.inspector .layout-choices button:disabled .layout-wire{filter:grayscale(1)}
.inspector,.left-content{overflow-anchor:none}
/* Pixel-snapped overlay owns canvas outlines; suppress the old scaled copies. */
html.screen-space-selection #app .canvas-scroll :is(.node-selected,.editor-hover,.core-card,.core-contract-unit){outline:none!important}
html.screen-space-selection #app .canvas-scroll :is(.node-selected,.editor-hover,.core-card,.core-contract-unit):not([data-engine-frame]){box-shadow:none!important}
html.screen-space-selection .canvas-scroll .detail-section::after{border-color:transparent!important}
.canvas-table-pixel-lines{position:fixed;inset:0;width:100vw;height:100vh;overflow:hidden;pointer-events:none;z-index:79}
.canvas-table-pixel-lines[hidden]{display:none}
.canvas-selection-overlay{position:fixed;z-index:80;overflow:clip;pointer-events:none;contain:strict}
.canvas-mode-spotlight{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;fill:rgb(0 0 0 / 35%)}
.canvas-mode-spotlight[hidden]{display:none}
.canvas-mode-spotlight:not([hidden])[data-motion=on]{animation:canvas-mode-spotlight var(--spotlight-duration,5s) linear both}
@keyframes canvas-mode-spotlight{0%,92%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.canvas-mode-spotlight:not([hidden])[data-motion=on]{animation:none}}
.canvas-selection-box{position:absolute;box-sizing:border-box;border-style:none;border-radius:3px;pointer-events:none;outline:1px dashed var(--app-canvas-highlight);outline-offset:1px;opacity:1;box-shadow:none;filter:drop-shadow(0 0 1px #fff)}
.canvas-selection-box[data-state=selected][data-placement=free],.canvas-selection-box[data-state=preview][data-placement=free]{outline-color:var(--app-accent-selection)}
.canvas-selection-box[data-state=selected]{opacity:.5}
.canvas-selection-box[data-state=preview]{background:color-mix(in srgb,var(--app-canvas-highlight) 8%,transparent)}
.canvas-marquee{position:absolute;box-sizing:border-box;border:1px solid var(--app-canvas-highlight);background:color-mix(in srgb,var(--app-canvas-highlight) 12%,transparent);pointer-events:none}
.canvas-marquee[hidden]{display:none}
.canvas-snap-guides{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.canvas-snap-guides line{stroke:var(--app-canvas-highlight);stroke-width:1;vector-effect:non-scaling-stroke}
.canvas-scroll td[data-canvas-table-cell]{box-shadow:var(--table-pixel-shadow,var(--table-cell-shadow,none))!important;background-image:var(--table-grid-images,none);background-size:var(--table-grid-sizes,auto);background-position:var(--table-grid-positions,0 0);background-repeat:no-repeat;background-origin:border-box;background-clip:border-box}
.canvas-selection-box[data-table-editing=true]{opacity:.15}
.canvas-gesture-handle{position:absolute;width:24px;height:24px;min-width:0;padding:0;border:0;background:transparent;pointer-events:auto;transform:translate(-50%,-50%);touch-action:none;cursor:crosshair}
.canvas-gesture-handle::after{content:"";position:absolute;inset:8px;border:1px solid var(--app-canvas-highlight);background:var(--app-surface);border-radius:1px;box-shadow:0 0 0 1px #fff,0 0 0 2px #0006}
.canvas-selection-overlay[data-selection-mode=free] .canvas-gesture-handle:not([data-canvas-gesture=radius]):not([data-canvas-gesture=columns])::after{border-color:var(--app-accent-selection)}
.canvas-gesture-handle[data-axis=rotate]::after{border-radius:50%}
.canvas-gesture-handle[data-canvas-gesture=radius]{clip-path:circle(50%)}
.canvas-gesture-handle[data-canvas-gesture=radius]::after{inset:7px;border-radius:50%;border-color:var(--control-muted);background:var(--control-surface)}
.canvas-selection-overlay:not(:has(.is-radius-active)) .canvas-gesture-handle[data-canvas-gesture=radius]:hover::after{background:var(--control-hover);border-color:var(--control-text)}
.canvas-gesture-handle[data-canvas-gesture=radius].is-radius-active::after{background:var(--control-muted);border-color:var(--control-text)}
.canvas-radius-value{position:absolute;padding:3px 6px;border:1px solid var(--control-border);border-radius:var(--radius-compact);background:var(--control-surface);color:var(--control-text);font-size:var(--type-meta);line-height:18px;white-space:nowrap;pointer-events:none}
.canvas-radius-value[hidden]{display:none}
.canvas-move-handle::after{inset:2px;border-radius:var(--radius-compact)}
.canvas-move-handle svg{position:absolute;inset:5px;width:14px;height:14px;z-index:1;fill:none;stroke:var(--app-accent-selection);stroke-width:1;pointer-events:none}
body:has(.canvas-scroll:is(.is-pan-ready,.is-panning)) .canvas-move-handle{pointer-events:none}
.canvas-gesture-handle[hidden]{display:none}
.canvas-scroll[data-resize-mode=unsupported]{cursor:not-allowed}
body:has(.canvas-scroll[data-resize-mode=unsupported]) .canvas-gesture-handle{cursor:not-allowed!important}
.canvas-scroll.is-canvas-gesturing{user-select:none;cursor:grabbing}
.canvas-scroll .is-canvas-flow-dragging{opacity:.45!important}
.canvas-scroll[data-draw-tool]:not(.is-pan-ready):not(.is-panning){cursor:crosshair}
html body .canvas-toolbar [data-action=canvas-draw-tool][aria-pressed=true]{background:var(--app-control-selected);color:var(--app-canvas-highlight)}
.canvas-toolbar .actions{flex-wrap:wrap}
html body .canvas-toolbar .canvas-draw-tools{display:flex}
.canvas-drop-feedback{position:absolute;box-sizing:border-box;pointer-events:none;border:1px solid var(--app-canvas-highlight);background:color-mix(in srgb,var(--app-canvas-highlight) 8%,transparent)}
.canvas-drop-feedback[data-state=insert]{border:0;border-top:2px solid var(--control-text);background:none;opacity:.85}
.canvas-drop-feedback[data-state=insert]::after{content:"";position:absolute;left:50%;top:-1px;width:6px;height:6px;border-radius:50%;background:var(--control-text);transform:translate(-50%,-50%)}
.canvas-drop-feedback[data-state=invalid]{border-color:var(--control-text-muted,#888);background:color-mix(in srgb,var(--control-text-muted,#888) 5%,transparent)}
.canvas-drop-feedback[hidden]{display:none}
.canvas-selection-overlay[hidden],.canvas-selection-box[hidden]{display:none}
@media print{.canvas-selection-overlay,.canvas-table-pixel-lines{display:none!important}}
.inspector textarea.inspector-autogrow{min-height:0!important;max-height:none!important;overflow-y:hidden;resize:none;line-height:1.45}
/* Keep the design-property panel; consolidate only the right-hand content tabs. */
.editor-right>.inspector{--inspector-scroll-block-inset:14px;--inspector-scroll-inline-inset:10px;padding:var(--inspector-scroll-block-inset) var(--inspector-scroll-inline-inset)}
.editor-quick>.quick-inspector{padding-inline:12px}
/* Native content tree: one inset per depth, shared by fields, rows and actions. */
.inspector-tree.engine-inspector{--control-panel-inset:8px}
.engine-inspector .field :is(input:not([type=checkbox]),select,textarea){width:100%;min-width:0;max-width:100%;box-sizing:border-box}
.engine-inspector :is([data-engine-op=addText],[data-engine-op=addItem]){width:calc(100% - 2 * var(--control-panel-inset,8px));min-width:0;white-space:normal}
.inspector-tree{--tree-unit-line:var(--line);--tree-unit-head:var(--control-hover);--tree-card-line:var(--line);--tree-card-head:var(--app-surface-subtle);--tree-element-line:var(--line);--tree-element-head:var(--app-surface-subtle)}
.inspector-tree .tree-unit,.inspector-tree .tree-common{border:1px solid var(--tree-unit-line);border-radius:var(--radius-inset);margin:0 0 10px;padding:0 8px 8px;background:var(--control-surface)}
.inspector-tree .tree-unit>summary,.inspector-tree .tree-common>summary{padding:10px 8px;margin:0 -8px 8px;background:var(--tree-unit-head);border-bottom:1px solid var(--tree-unit-line);font-weight:600}
.inspector-tree .tree-contents{border:0;padding:0;margin:0}
.inspector-tree .tree-card{border:1px solid var(--tree-card-line);border-radius:var(--radius-inset);padding:0;margin:0;background:var(--control-surface);overflow:hidden}
.inspector-tree .tree-card>summary{cursor:pointer;padding:9px 8px;display:flex;align-items:center;gap:7px;list-style:none;margin:0;background:var(--tree-card-head)}
.tree-card>summary .core-entry-heading{display:flex;min-width:0;flex:1;width:auto}
.inspector-tree .tree-card>.core-entry-actions{margin:0;padding:var(--space-2);background:transparent;border:0}
.inspector-tree .tree-card>.tree-contents{padding:9px 8px 10px;border:0}
.inspector-tree .inspector-group.is-active>summary{box-shadow:none;background:var(--app-surface-subtle)}
.inspector-tree .tree-unit.is-active>summary{background:var(--control-selected)}
.inspector-tree .tree-unit .inspector-group,.inspector-tree .tree-common .inspector-group{border-color:var(--tree-element-line)}
.inspector-tree .tree-unit .inspector-group>summary,.inspector-tree .tree-common .inspector-group>summary{background:var(--tree-element-head);border-bottom-color:var(--tree-element-line);font-weight:400}
.inspector-tree .tree-unit .inspector-group.is-active>summary,.inspector-tree .tree-common .inspector-group.is-active>summary{background:var(--app-surface-subtle)}
.inspector-tree .tree-card .inspector-group>summary{font-size:var(--type-editor-control);padding:7px 8px}
.inspector-tree .tree-card .inspector-image>summary img{width:36px;height:36px}
/* A repeat entry already previews its image; keep the child heading text-only. */
.inspector-tree .tree-card:has(>summary .core-entry-thumb img) .inspector-image>summary>img{display:none}
.inspector-tree .tree-design{margin-top:10px;padding-top:8px;border-top:1px solid var(--control-border)}
.tree-design>summary{color:var(--control-muted);font-size:var(--type-editor-control);cursor:pointer;margin-bottom:8px}
.tree-design:not(:has([data-quick-property])){display:none}
.inspector-tree .core-unit-advanced{display:none}
.inspector-tree,.inspector-tree :is(details,section,article,.tree-contents,.core-entry-list,.form-grid,.field){min-width:0;max-width:100%;box-sizing:border-box}
.inspector-tree :is(input,select,textarea){min-width:0;max-width:100%;box-sizing:border-box}
.inspector-tree input[type=file]{width:100%;font-size:var(--type-editor-value)}
.inspector-tree .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.inspector-tree summary{min-width:0;overflow:hidden;overflow-wrap:anywhere}
.inspector-tree .core-entry-actions{grid-template-columns:28px 28px minmax(0,1fr) minmax(0,1fr);width:100%}
.inspector-tree .core-entry-actions .btn{width:auto;max-width:100%;min-width:0}
.inspector-tree .source-photo-field{min-width:0;width:100%;max-width:100%}
.inspector-tree .tree-contents>.inspector-group{margin-inline:0;width:100%}
.inspector-tree .tree-selected{border-color:var(--line)}
.inspector-tree details:not([open]){padding-bottom:0}
.inspector-tree .inspector-group[open]{padding-bottom:12px}
/* Shared column geometry also positions Tree descendant guides. */
:root{--inspector-disclosure-width:25px;--inspector-disclosure-hit-height:24px}
.inspector-disclosure>summary{position:relative;list-style:none;user-select:none;transition:none}
.inspector .inspector-disclosure>summary,.left-content .inspector-disclosure>summary{padding-left:var(--inspector-disclosure-width)}
.inspector-disclosure>summary::-webkit-details-marker{display:none}
.inspector-disclosure>summary::marker{content:''}
.inspector-disclosure-toggle{position:absolute;left:0;top:0;bottom:0;width:var(--inspector-disclosure-width);min-height:var(--inspector-disclosure-hit-height);padding:0;border:0;background:transparent;cursor:pointer}
.inspector-disclosure-toggle:disabled{opacity:1;cursor:default}
.inspector-disclosure-toggle::before,.canvas-toolbar-toggle::before{content:'';position:absolute;left:50%;top:50%;width:3px;height:3px;border:solid var(--control-muted);border-width:0 1px 1px 0;transform:translate(-50%,-50%) rotate(-45deg)}
.inspector-disclosure-toggle:is(:hover,:focus-visible):not(:disabled)::before,.canvas-toolbar-toggle:is(:hover,:focus-visible)::before{border-color:var(--control-text)}
.canvas-toolbar-toggle[aria-expanded="true"]::before{transform:translate(-50%,-30%) rotate(225deg)}
.canvas-toolbar-toggle[aria-expanded="false"]::before{transform:translate(-50%,-70%) rotate(45deg)}
.inspector-disclosure[open]>summary>.inspector-disclosure-toggle::before,.layer-toggle.inspector-disclosure-toggle[aria-expanded="true"]::before{transform:translate(-50%,-70%) rotate(45deg)}
.inspector-disclosure-toggle:focus-visible,.inspector-disclosure>summary:focus-visible{outline:2px solid var(--control-focus);outline-offset:-2px;border-radius:var(--radius-compact)}
.inspector-tree .inspector-image>summary::after{display:none}
.inspector-tree [data-panel-node]>summary{padding-right:34px}
.tree-jump{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:24px;height:24px;padding:0;border:0;border-radius:var(--radius-single);background:transparent;color:var(--app-muted);cursor:pointer}
.tree-jump::before{content:'↗';font-size:16px}
.tree-jump:hover,.tree-jump:focus-visible{background:var(--control-hover);color:var(--app-ink)}
.core-layout-field{grid-column:1 / -1}
.core-layout-buttons{display:flex;gap:var(--space-1);flex-wrap:wrap}
.core-layout-buttons .core-layout-option{display:grid;place-items:center;flex:1;min-width:30px;min-height:36px;padding:4px!important;background:var(--app-surface);color:var(--app-muted);transition:none}
.core-layout-buttons .core-layout-option[aria-pressed="true"]{background:var(--control-selected);border-color:var(--line);color:var(--control-text)}
.core-layout-buttons .core-layout-option:focus-visible{outline:2px solid var(--control-focus);outline-offset:2px}
.inspector-tree details:not([open])>summary{margin-bottom:0!important;border-bottom:0}
.inspector-tree details>summary:hover{background:var(--control-hover)}
.inspector-tree>.tree-unit>summary:hover,.inspector-tree>.tree-common>summary:hover{background:var(--control-hover)}
.inspector-tree details>summary:focus-visible{outline:2px solid var(--control-focus);outline-offset:-2px}
@media(prefers-reduced-motion:reduce){.inspector-tree details>summary,.inspector-tree details>summary::before{transition:none}}
.canvas-scroll :is(.core-card,.core-contract-unit):has(.node-selected){outline:var(--hover-stroke,1px) dashed var(--control-border);outline-offset:var(--hover-offset,2px)}
.editor-app .canvas-scroll :is(.core-card,.core-contract-unit):has(.node-selected){outline:none}
.canvas-scroll .core-contract-unit:has(.node-selected)>.core-specimen-label{color:var(--control-text);border-bottom-color:var(--control-border)}
.inspector-core-section:has(>.core-unit-editor)>.inspector-core-section-heading{display:none}
.core-count-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin:12px 0 4px}
.core-count-bar strong{font-size:var(--type-body)}.core-count-bar b{font-size:var(--type-workspace-title);margin-left:4px}
.core-count-help{margin:0 0 14px!important}
.core-arrangement{padding-bottom:12px;border-bottom:1px solid var(--control-border)}
.core-entry-list{display:grid;gap:var(--space-2);margin:12px 0}
.core-entry-row{border:1px solid var(--control-border);border-radius:var(--radius-inset);padding:9px;background:var(--control-surface)}
.core-entry-heading{display:flex;align-items:center;gap:var(--space-2);min-width:0}
.core-entry-heading>div{min-width:0;flex:1}.core-entry-heading small{display:block;color:var(--control-muted);font-size:var(--type-editor-helper);margin-bottom:3px}
.core-entry-heading strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--type-editor-value)}
.core-entry-thumb{width:36px;height:36px;flex:none;display:grid;place-items:center;overflow:hidden;background:var(--control-hover);border-radius:var(--radius-compact);color:var(--control-muted);font-size:var(--type-editor-value)}
.core-entry-thumb img{width:100%;height:100%;object-fit:cover}
.core-entry-actions{display:grid;grid-template-columns:30px 30px 1fr 1fr;gap:5px;margin-top:8px}
.core-entry-actions .btn{padding-inline:3px!important;min-width:0}
.core-unit-advanced{border-top:1px solid var(--control-border);padding-top:10px;margin-top:14px}
.core-unit-advanced>summary{font-size:var(--type-editor-control);color:var(--control-muted);cursor:pointer;padding:4px 0 8px}
.editor-right>.panel-tabs{gap:var(--space-4)}
.panel-tabs>.inspector-full-view-fallback{margin-left:auto;align-self:center}
.inspector-utility{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-top:var(--space-3)}
.inspector-utility>.help{margin:0;min-width:0}

@media(prefers-reduced-motion:reduce){
 html body .btn,.global-nav .service-nav-row,.compact-layer-list .layer-row,
 .compact-layer-list .layer-children button,.editor-panel-resizer::before,#toast{transition:none}
}

/* Shared field presentation; V3 keeps row/control geometry and read-only exceptions. */
html body .inspector-workspace input:not([type=checkbox],[type=radio],[type=range],[type=color]),html body .inspector-workspace select,html body .inspector-workspace textarea{font-size:var(--type-editor-value);border:1px solid var(--control-border);border-radius:var(--radius-single);background:var(--app-surface);color:var(--control-text)}
html body .inspector-workspace :is(input:not([type=checkbox],[type=radio],[type=range],[type=color]),select,textarea):hover:not(:disabled){border-color:var(--control-muted)}
.workspace-form-card .field input,
.workspace-form-card .field select{border:1px solid var(--control-border);border-radius:var(--workspace-control-radius);background:var(--workspace-surface)}

/* Unified explicit search: Regular controls, neutral presentation, flexible input. */
.dps-search-form{display:flex;align-items:center;gap:var(--space-2);width:100%;min-width:0}
html body .dps-search-form>input[type=search],html body .dps-search-form>.btn{height:var(--control-regular-height);min-height:var(--control-regular-height);box-sizing:border-box;border:1px solid var(--control-border);border-radius:var(--radius-single);background:var(--control-surface);color:var(--control-text);font-size:var(--type-input);line-height:var(--leading-control);padding-block:0}
html body .dps-search-form>input[type=search]{flex:1 1 0;width:0;min-width:0;padding-inline:var(--space-3)}
html body .dps-search-form>.btn{flex:0 0 auto;padding-inline:var(--space-4);font-weight:var(--weight-semibold)}
html body .dps-search-form>input[type=search]:hover:not(:disabled){border-color:var(--control-muted)}
html body .dps-search-form>input[type=search]:focus-visible{outline:1px solid var(--control-focus);outline-offset:1px}
html body .dps-search-form>.btn:hover:not(:disabled){background:var(--control-hover)}

/* Parent Grid boundaries share the selection overlay and its 24px hit targets. */
.canvas-column-handle::after{inset:3px 10px;border-radius:2px;background:var(--app-canvas-highlight);border:0}
.canvas-column-handle:hover::after{outline:2px solid var(--app-surface)}

/* Border face choices share the Inspector's quiet field outline, including selection. */
html body .inspector [data-border-directions] .btn{border-color:var(--control-border);background:var(--control-surface);color:var(--control-text);font-weight:500;box-shadow:none}
html body .inspector [data-border-directions] .btn[aria-pressed="true"]{background:var(--control-selected);border-color:var(--control-border)}
html body .inspector [data-border-directions] .btn:hover:not(:disabled){background:var(--control-hover);border-color:var(--control-border)}
