/* DA.4 — static light from upper left. Paint only; no media or layout rules. */
@media screen {
:root {
  --light-neutral:rgb(217 225 235);
  --light-edge-rest:.42;
  --light-edge-active:.95;
  --light-edge-focus:.95;
  --light-row-impact:1;
  --light-row-reflection:.24;
  --light-row-internal:.58;
  --light-coverage-reflection:.48;
  --light-contact-1:3px 5px 8px rgb(0 0 0 / .72);
  --light-ambient-1:12px 18px 42px -6px rgb(0 0 0 / .38);
  --light-contact-2:5px 8px 14px rgb(0 0 0 / .76);
  --light-ambient-2:20px 30px 72px -10px rgb(0 0 0 / .40);
  --light-contact-3:8px 12px 20px rgb(0 0 0 / .80);
  --light-ambient-3:28px 42px 110px -14px rgb(0 0 0 / .42);
  --light-hairline:linear-gradient(90deg,rgb(from var(--light-neutral) r g b / .38),rgb(from var(--light-neutral) r g b / .10) 45%,transparent);
  --light-hairline-vertical:linear-gradient(180deg,rgb(from var(--light-neutral) r g b / .38),rgb(from var(--light-neutral) r g b / .08) 45%,transparent);
  --light-hairline-long:linear-gradient(90deg,rgb(from var(--light-neutral) r g b / .42),rgb(from var(--light-neutral) r g b / .20) 35%,rgb(from var(--light-neutral) r g b / .08) 70%,rgb(from var(--light-neutral) r g b / .035));
  --light-hairline-long-vertical:linear-gradient(180deg,rgb(from var(--light-neutral) r g b / .42),rgb(from var(--light-neutral) r g b / .20) 35%,rgb(from var(--light-neutral) r g b / .08) 70%,rgb(from var(--light-neutral) r g b / .035));
  --light-shell-paint:radial-gradient(ellipse at 0 0,rgb(from var(--light-neutral) r g b / var(--light-edge-rest)) 0%,rgb(from var(--light-neutral) r g b / .12) 32%,rgb(from var(--light-neutral) r g b / .018) 72%,transparent 100%);
  --light-backdrop:rgb(0 0 0 / .54);
}
/* One masked ring follows the existing radius, without intersecting edge strips.
   Only known shells with a free ::after are enrolled; images are never enrolled. */
:is(.nav-item,.element-grid-card,.look-book-card,.character-card,.project-media-option,.sequence-character-option,.visual-look-option,.sequence-media-section,.element-inspector) {
  position:relative;--light-source:var(--light-neutral);--light-strength:var(--light-edge-rest);
}
:is(.nav-item,.element-grid-card,.project-media-option,.sequence-character-option,.visual-look-option):is(.active,.selected,.inspected) {
  --light-source:var(--accent);--light-strength:var(--light-edge-active);
  box-shadow:none!important;border-color:transparent!important;
}
:is(.nav-item,.element-grid-card,.look-book-card,.character-card,.project-media-option,.sequence-character-option,.visual-look-option,.sequence-media-section,.element-inspector)::after,
body.editing .workspace-shell::after {
  --light-edge-paint:radial-gradient(ellipse at 0 0,rgb(from var(--light-source) r g b / var(--light-strength)) 0%,rgb(from var(--light-source) r g b / .12) 32%,rgb(from var(--light-source) r g b / .018) 72%,transparent 100%);
  content:'';position:absolute;inset:0;border:0!important;padding:1px;box-sizing:border-box;
  border-radius:inherit;background:var(--light-edge-paint);pointer-events:none;
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;
}
body.editing .workspace-shell::after {--light-source:var(--accent);--light-strength:1}
/* Keep the precise DA.3 underline. Concentration is painted just inside it. */
:is(.workspace-tab,.pane-tab,.book-btn,.subtab:not(.add),.character-tab,.location-variant-tab,.comment-tab).active {
  background-image:radial-gradient(ellipse at 12% 100%,rgb(from var(--accent) r g b / .58),transparent 82%)!important;
  background-size:70% 3px!important;background-repeat:no-repeat!important;background-position:left bottom!important;
}
/* Native controls cannot safely host pseudo-elements. Use a local surface wash
   and a short inset contact edge, retaining focus borders and native hit areas. */
:is(#app,.element-modal,.project-media-picker,.confirm-dialog,.export-dialog) :is(input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),textarea,select),
body.editing :is(.shot-editable,.author-value,.shot-id-editable)[contenteditable=true] {
  --light-source:var(--light-neutral);--light-strength:.065;
  background-image:radial-gradient(ellipse at left top,rgb(from var(--light-source) r g b / var(--light-strength)),transparent 65%)!important;
  box-shadow:inset 1px 1px 0 rgb(from var(--light-source) r g b / .14)!important;
}
:is(#app,.element-modal,.project-media-picker,.confirm-dialog,.export-dialog) :is(input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),textarea,select):focus,
body.editing :is(.shot-editable,.author-value,.shot-id-editable)[contenteditable=true]:focus {
  --light-source:var(--accent);--light-strength:.09;
  box-shadow:inset 1px 1px 0 rgb(from var(--accent) r g b / var(--light-edge-focus))!important;
}
:is(.icon-btn,.small-action,.collab-btn,.seq-preview-action,.export-secondary,.add-media-card):not(:disabled):hover {
  background-image:radial-gradient(ellipse at left top,rgb(from var(--accent) r g b / .08),transparent 65%)!important;
}
/* Both dense listings keep their existing ::after shell, cells and dimensions. */
/* Header uses the same continuous radius-aware neutral rim as Cards. */
.shotlist.view-list>.shot-list-table-head::before {
  content:'';position:absolute;inset:0;box-sizing:border-box;padding:1px;border-radius:inherit;pointer-events:none;
  background:radial-gradient(ellipse at left top,rgb(from var(--light-neutral) r g b / var(--light-edge-rest)),transparent 78%);
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;
  /* Bottom boundary belongs to ::after / first selected row, not this rim. */
  padding-bottom:0;
}
/* A shared boundary is painted once by the preceding row, unless selected
   next: that row owns its Gold top edge instead. Cell duplicates are removed. */
.shotlist.view-list>.shot-list-row>div:not(.table-frame-cell) {background-image:none}
.shotlist.view-list>:is(.shot-list-table-head,.shot-list-row)::after {
  border-color:transparent;
  background-image:var(--light-hairline);
  background-size:100% 1px;background-position:left bottom;background-repeat:no-repeat;
}
.shotlist.view-list>:is(.shot-list-table-head,.shot-list-row:not(.selected)):has(+.shot-list-row.selected)::after {background-image:none}
.shotlist.view-list>.shot-list-row.selected {--light-selected-top:var(--light-row-impact);--light-selected-wash:.48}
.shotlist.view-list>.shot-list-row.selected+.shot-list-row.selected {--light-selected-top:var(--light-row-internal);--light-selected-wash:.20}
.shotlist.view-list>.shot-list-row.selected::after {
  background-image:linear-gradient(95deg,rgb(from var(--accent-hover) r g b / var(--light-selected-top)),rgb(from var(--accent) r g b / .55) 40%,rgb(from var(--accent) r g b / .06)),linear-gradient(95deg,rgb(from var(--accent) r g b / var(--light-row-reflection)),rgb(from var(--accent) r g b / .035));
  background-size:100% 1px,100% 1px;background-position:left top,left bottom;background-repeat:no-repeat;
}
/* Cells previously repeated equal top/bottom Gold lines. Remove that duplicate
   paint on selected rows only; the common shell owns the asymmetric light. */
.shotlist.view-list>.shot-list-row.selected>div:not(.table-frame-cell) {background-image:none}
/* Existing marker stays 2px. Reflection is inside its first cell, never over media. */
.shotlist.view-list>.shot-list-row.has-coverage>div:first-child {
  background-image:linear-gradient(90deg,rgb(from var(--coverage-color) r g b / var(--light-coverage-reflection)),rgb(from var(--coverage-color) r g b / .22) 28%,rgb(from var(--coverage-color) r g b / .06) 65%,transparent);
  background-size:24px 100%;background-position:left top;background-repeat:no-repeat;
}
.shotlist.view-list>.shot-list-row.selected>div:first-child {
  background-image:radial-gradient(ellipse at 15% top,rgb(from var(--accent) r g b / var(--light-selected-wash)),transparent 80%);
  background-size:100% 12px;background-position:left top;background-repeat:no-repeat;
}
.shotlist.view-list>.shot-list-row.selected.has-coverage>div:first-child {
  background-image:linear-gradient(90deg,rgb(from var(--coverage-color) r g b / var(--light-coverage-reflection)),rgb(from var(--coverage-color) r g b / .22) 28%,rgb(from var(--coverage-color) r g b / .06) 65%,transparent),radial-gradient(ellipse at 15% top,rgb(from var(--accent) r g b / var(--light-selected-wash)),transparent 80%);
  background-size:24px 100%,100% 12px;background-position:left top,left top;background-repeat:no-repeat;
}
.shotlist.view-list>.shot-list-row.selected:has(+.shot-list-row.selected)::after {
  background-size:100% 1px,0 0;
}
/* Open Section: reuse the existing masked rim, but retain only its rounded
   upper-left turn and top hairline. No right/bottom edge, surface or layout. */
.sequence-media-section::after {
  bottom:auto;height:calc(2 * var(--radius-card));
  border-radius:var(--radius-card) 0 0 0;padding:1px 0 0 1px;
  background:var(--light-hairline);
}
/* Keep the existing heading clearance and suppress duplicate top paint. */
.sequence-media-section>.gallery-head {border-top-color:transparent!important;background-image:none;padding-top:18px}
/* Directional hairline replaces border paint, retaining occupied border width.
   Only independent horizontal separators are enrolled, never media edges. */
:is(.pane-tabs,.pane-context,.workspace-tabs,.book-topbar,.book-info-row,.character-head,.look-book-head,.document-viewer-head,.drawer-head) {
  border-bottom-color:transparent!important;
  background-image:var(--light-hairline);background-size:100% 1px;background-position:left bottom;background-repeat:no-repeat;
}
/* Long structural roles replace higher-specificity legacy border/background
   paint. No overlay, wrapper or hit area is added. Border dimensions stay put. */
.viewer-pane>:is(.pane-tabs,.pane-context),
.script-pane>:is(.pane-tabs,.script-context),
.content-scroll-pane>:is(.pane-tabs,.pane-context) {
  border-bottom-color:transparent!important;
  background-image:var(--light-hairline-long)!important;
  background-size:100% 1px!important;background-position:left bottom!important;background-repeat:no-repeat!important;
}
.left-rail {
  border-image-source:var(--light-hairline-long-vertical);border-image-slice:1;
}
.pane-splitter::before {background:var(--light-hairline-vertical)}
/* DA.3's 12px invisible grip overlapped the native Script scrollbar.
   Keep the existing 7px track and resize handler; no hit surface outside it. */
.pane-splitter::after {left:0;width:100%;transform:none;pointer-events:none}
.coverage-rail {box-shadow:none}
.coverage-rail.coverage-armed,.coverage-rail:focus-visible {box-shadow:1px 1px 3px rgb(from var(--coverage-color) r g b / .24)}
/* Gallery/header shells catch light outside image viewports. */
:is(.gallery-head,.inspector-heading) {
  background-image:var(--light-hairline);
  background-size:100% 1px;background-position:left top;background-repeat:no-repeat;
}
/* Floating levels: no protocol, portal, z-index or overflow changes. */
:is(.tool-menu,.location-picker-menu,.look-picker-menu,.shot-autocomplete,.real-location-suggestions,.media-card-menu>div,.coverage-clear-confirm,.ratio-actions),#previsionTooltip {
  background-image:radial-gradient(ellipse at left top,rgb(from var(--light-neutral) r g b / .025),transparent 68%);
  box-shadow:inset 1px 1px 0 rgb(from var(--light-neutral) r g b / .12),var(--light-contact-1),var(--light-ambient-1)!important;
}
:is(.visual-look-picker,.sequence-character-picker,.tag-picker>div,.special-filter>div,.special-filter details>div,.coverage-hover,.project-media-picker>section) {
  background-image:radial-gradient(ellipse at left top,rgb(from var(--light-neutral) r g b / .025),transparent 68%);
  box-shadow:inset 1px 1px 0 rgb(from var(--light-neutral) r g b / .14),var(--light-contact-2),var(--light-ambient-2)!important;
}
:is(.confirm-dialog,.export-dialog,.document-viewer-dialog,.element-modal>section) {
  background-image:radial-gradient(ellipse at left top,rgb(from var(--light-neutral) r g b / .025),transparent 68%);
  box-shadow:inset 1px 1px 0 rgb(from var(--light-neutral) r g b / .16),var(--light-contact-3),var(--light-ambient-3)!important;
}
:is(.confirm-modal,.export-modal,.project-media-picker)::backdrop {background:var(--light-backdrop)!important;backdrop-filter:none!important}
:is(.element-modal,.sequence-character-picker-backdrop,.document-viewer) {background:var(--light-backdrop)!important;backdrop-filter:none!important}
dialog.confirm-modal,dialog.export-modal,dialog.project-media-picker {background:transparent!important;backdrop-filter:none!important}
/* Remove historical decorative cyan shadows from UI affordances only. */
.media-insert-before::before,.media-insert-after::after {box-shadow:none;background:var(--accent)}
.shot-card.drop-before {box-shadow:inset 0 3px var(--accent)}
.shot-card.drop-after {box-shadow:inset 0 -3px var(--accent)}
/* Glyphs stay crisp; cursor stroke is a functional contrast aid, not a glow. */
:is(.nav-title,.shot-id-editable,.special-shot strong,.workspace-tab,.pane-tab,.book-btn,.subtab,.character-tab,.location-variant-tab,.comment-tab,button,label) {text-shadow:none!important}
}
