
:root{
  --bg:#090d12;--surface:#101720;--surface2:#141d27;--surface3:#182432;
  --line:#253445;--text:#e7edf4;--muted:#8da0b4;--cyan:#22d3ee;
  --blue:#60a5fa;--green:#34d399;--amber:#fbbf24;--red:#fb7185;
  --violet:#a78bfa;--shadow:0 12px 32px rgba(0,0,0,.28)
}
*{box-sizing:border-box}
html,body,#react-entry-point,.shell{min-height:100%;margin:0}
html,body{max-width:100%;overflow-x:hidden}
body{background:radial-gradient(circle at 10% 0,#152536 0,#090d12 34%);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
.shell{padding:0 16px 18px}
.app-header{position:sticky;top:0;z-index:20;margin:0 -16px 5px;padding:9px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px;background:rgba(9,13,18,.94);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:11px;min-width:0}.brand-copy{min-width:0}
.brand-logo{width:158px;max-width:34vw;max-height:44px;object-fit:contain;background:#fff;border-radius:5px;padding:4px}
.app-title{font-size:19px;font-weight:760;letter-spacing:-.025em;white-space:nowrap}
.app-subtitle,.status-note,.job-meta,.dashboard-description{color:var(--muted);font-size:12px}
.header-tools{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end;min-width:0}
.project-selector-shell{display:flex;align-items:center;gap:6px;min-width:0}.selector{width:270px;max-width:42vw}.project-refresh-button{width:36px;height:36px;flex:0 0 36px;border:1px solid #34475a;border-radius:7px;background:#0c131b;color:#e7edf4;font-size:19px;font-weight:800;line-height:1;cursor:pointer}.project-refresh-button:hover{border-color:var(--cyan);color:var(--cyan);box-shadow:0 0 0 2px rgba(34,211,238,.12)}.user-box{display:flex;align-items:center;gap:9px;padding:5px 7px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.user-name{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ghost-button,.secondary-button,.primary-button,.fullscreen-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #32465a;border-radius:7px;padding:7px 11px;color:var(--text);background:#182432;text-decoration:none;font-weight:700;cursor:pointer}
.primary-button{background:#0b6778;border-color:#18a8bf}.ghost-button:hover,.secondary-button:hover,.primary-button:hover,.fullscreen-button:hover{border-color:var(--cyan);box-shadow:0 0 0 2px rgba(34,211,238,.12)}
.pipeline-progress-slot:empty{display:none}.pipeline-progress-slot{margin:0;padding:0}
.progress-shell,.pipeline-progress{margin:4px 0 5px;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 11px}
.dash-tabs{border-bottom:1px solid var(--line)!important;margin:0 0 5px!important;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:thin;scrollbar-color:#34495d transparent}
.dash-tabs .tab{display:inline-flex!important;align-items:center;justify-content:center;min-width:max-content;background:transparent!important;color:#91a3b5!important;border:0!important;border-bottom:2px solid transparent!important;padding:10px 14px!important}
.dash-tabs .tab--selected{color:var(--cyan)!important;border-bottom-color:var(--cyan)!important;background:linear-gradient(180deg,transparent,rgba(34,211,238,.08))!important}
.tab-content{min-height:0;padding-top:0;margin-top:0}
.panel{min-width:0;background:linear-gradient(145deg,var(--surface),#0e151d);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:11px;margin:0 0 10px;overflow:hidden}.panel h3{margin:1px 0 9px;font-size:15px}
.two-col,.four-col,.dashboard-four-grid{display:grid;gap:10px;min-width:0}.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}.four-col{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-four-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(360px,1fr))}
.dashboard-wall{background:var(--bg);padding:0;width:min(100%,1920px);margin:0 auto;min-height:calc(100dvh - 155px);display:flex;flex-direction:column}.dashboard-wall .dashboard-four-grid{flex:1;align-content:stretch}.dashboard-wall:fullscreen{width:100vw;height:100vh;max-width:none;padding:16px;overflow:auto;background:var(--bg)}.dashboard-wall:fullscreen .dashboard-four-grid{min-height:calc(100vh - 92px)}.dashboard-science-panel .dash-graph,.dashboard-science-panel .js-plotly-plot{height:100%!important;min-height:360px}.dashboard-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 2px 6px}.dashboard-project{font-size:21px;font-weight:760;letter-spacing:-.03em}.dashboard-science-panel{min-height:360px;padding:4px}.dashboard-image-panel{display:grid;place-items:center}.dashboard-latest-image,.inversion-latest-image{display:block;width:100%;height:auto;max-height:580px;object-fit:contain}.inversion-latest-panel{text-align:center}
.controls-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:10px}.controls-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.controls-grid label{display:block;color:#a9b9c9;font-size:12px;font-weight:700;margin-bottom:5px}.controls-grid input,.controls-grid select,input,select,textarea{width:100%;background:#0c131b;color:#edf4fb;border:1px solid #34475a;border-radius:7px;padding:9px;outline:none}.controls-grid input:focus,.controls-grid select:focus,input:focus,select:focus,textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 2px rgba(34,211,238,.13)}
/* Dash dropdowns: use exactly the same dark control style as Project settings. */
.Select,
.Select-control,
.Select-control > span,
.Select-multi-value-wrapper,
.Select.is-disabled,
.Select.is-disabled > .Select-control,
.Select.is-disabled .Select-multi-value-wrapper,
div[class*="-container"],
div[class*="-control"]{
  opacity:1!important;
  filter:none!important;
  mix-blend-mode:normal!important;
}
.Select-control,
.is-open>.Select-control,
.Select.is-disabled>.Select-control,
div[class*="-control"]{
  width:100%!important;
  min-height:38px!important;
  background:#0c131b!important;
  background-color:#0c131b!important;
  background-image:none!important;
  color:#edf4fb!important;
  border:1px solid #34475a!important;
  border-radius:7px!important;
  box-shadow:none!important;
  opacity:1!important;
}
.Select-control:hover,
div[class*="-control"]:hover{
  background:#0c131b!important;
  border-color:#4d667e!important;
}
.is-focused:not(.is-open)>.Select-control,
.is-open>.Select-control,
div[class*="-control"]:focus-within{
  background:#0c131b!important;
  border-color:var(--cyan)!important;
  box-shadow:0 0 0 2px rgba(34,211,238,.13)!important;
}
.Select--single>.Select-control .Select-value,
.Select.has-value.Select--single>.Select-control .Select-value,
.Select-value,
.Select-value:hover,
.Select.is-disabled .Select-value,
div[class*="-singleValue"]{
  background:transparent!important;
  background-color:transparent!important;
  border:0!important;
  color:#edf4fb!important;
  -webkit-text-fill-color:#edf4fb!important;
  opacity:1!important;
  visibility:visible!important;
  font-weight:700!important;
  text-shadow:none!important;
  filter:none!important;
}
.Select--single>.Select-control .Select-value-label,
.Select.has-value.Select--single>.Select-control .Select-value .Select-value-label,
.Select-value-label,
.Select-value-label:hover,
.Select.is-disabled>.Select-control .Select-value-label,
div[class*="-singleValue"] *{
  background:transparent!important;
  color:#edf4fb!important;
  -webkit-text-fill-color:#edf4fb!important;
  opacity:1!important;
  visibility:visible!important;
  font-weight:700!important;
  text-shadow:none!important;
}
.Select-placeholder,
div[class*="-placeholder"]{
  background:transparent!important;
  color:#a9b9c9!important;
  -webkit-text-fill-color:#a9b9c9!important;
  opacity:1!important;
  font-weight:600!important;
}
.Select-input,
.Select-input>input,
.Select-control input,
input[id*="react-select"],
input[aria-autocomplete="list"]{
  background:transparent!important;
  color:#edf4fb!important;
  -webkit-text-fill-color:#edf4fb!important;
  caret-color:var(--cyan)!important;
  opacity:1!important;
}
.Select-input>input::placeholder,
input[id*="react-select"]::placeholder,
input[aria-autocomplete="list"]::placeholder{
  color:#a9b9c9!important;
  -webkit-text-fill-color:#a9b9c9!important;
  opacity:1!important;
}
.Select-arrow{border-top-color:#d8e3ed!important}
.is-open .Select-arrow{border-bottom-color:#d8e3ed!important}
.Select-clear-zone,
div[class*="-indicatorContainer"],
div[class*="-indicatorContainer"] svg{
  color:#d8e3ed!important;
  fill:#d8e3ed!important;
  opacity:1!important;
}
.Select-menu-outer,
.Select-menu,
div[class*="-menu"],
div[class*="-menuList"]{
  background:#0c131b!important;
  background-color:#0c131b!important;
  border-color:#34475a!important;
  color:#edf4fb!important;
  box-shadow:0 12px 30px rgba(0,0,0,.42)!important;
  z-index:9999!important;
}
.Select-option,
.VirtualizedSelectOption,
div[class*="-option"]{
  background:#0c131b!important;
  color:#edf4fb!important;
  -webkit-text-fill-color:#edf4fb!important;
  opacity:1!important;
  font-weight:600!important;
}
.Select-option.is-focused,
.VirtualizedSelectFocusedOption,
div[class*="-option"]:hover{
  background:#182432!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
.Select-option.is-selected,
.VirtualizedSelectSelectedOption,
div[class*="-option"][aria-selected="true"]{
  background:#0b6778!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  font-weight:800!important;
}
.Select-noresults,
div[class*="-noOptionsMessage"],
div[class*="-loadingMessage"]{
  background:#0c131b!important;
  color:#a9b9c9!important;
  -webkit-text-fill-color:#a9b9c9!important;
  opacity:1!important;
}
/* Ensure obsolete overlay nodes from an already-open page never appear. */
.ert-selected-value-overlay{display:none!important}

.action-row,.job-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:10px}.download-list a{display:block;color:#67e8f9;padding:7px 0}.empty-state{padding:34px;text-align:center;background:var(--surface);border:1px dashed #33475a;border-radius:10px;color:var(--muted)}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.metric-card{background:var(--surface2);border:1px solid var(--line);border-radius:9px;padding:11px}.metric-value{font-size:21px;font-weight:780}
.progress-track,.job-track{height:7px;background:#26313d;border-radius:999px;overflow:hidden}.progress-fill,.job-fill{height:100%;background:linear-gradient(90deg,#0891b2,#22d3ee);border-radius:999px}.job-list{display:grid;gap:9px}.job-card{background:var(--surface2);border:1px solid var(--line);border-radius:9px;padding:11px}.job-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:9px}.job-title{font-weight:730}.badge{padding:3px 8px;border-radius:999px;background:#243140;font-size:11px}.badge.success{color:var(--green)}.badge.failed{color:var(--red)}.badge.running{color:var(--cyan)}
.admin-frame{display:block;width:100%;height:calc(100dvh - 132px);min-height:650px;border:0;border-radius:9px;background:var(--surface)}
.footer{display:flex;justify-content:center;color:#71859a;font-size:11px;padding:13px 4px 5px;text-align:center}.js-plotly-plot,.plot-container,.svg-container{max-width:100%!important}.js-plotly-plot .plotly .modebar{background:transparent!important}.js-plotly-plot .plotly .modebar-btn path{fill:#91a3b5!important}
@media(max-width:1100px){.two-col,.dashboard-four-grid{grid-template-columns:1fr}.dashboard-four-grid{grid-template-rows:auto}.controls-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-science-panel{min-height:340px}}
@media(max-width:820px){.shell{padding:0 10px 14px}.app-header{position:static;margin:0 -10px 4px;padding:9px 10px;align-items:stretch;flex-direction:column}.header-tools{width:100%;justify-content:stretch}.selector{width:100%;max-width:none;flex:1 1 100%}.user-box{width:100%;justify-content:space-between}.brand-logo{width:145px;max-width:45vw}.app-subtitle{white-space:normal}.dash-tabs .tab{padding:9px 12px!important}.dashboard-head{align-items:flex-start}.dashboard-project{font-size:19px}.four-col{grid-template-columns:1fr}.admin-frame{height:calc(100dvh - 170px);min-height:600px}}
@media(max-width:560px){.shell{padding:0 7px 10px}.app-header{margin:0 -7px;padding:8px 7px}.brand{align-items:flex-start}.brand-logo{width:116px;max-width:38vw}.app-title{font-size:17px;white-space:normal}.app-subtitle{font-size:11px}.ghost-button{padding:6px 9px}.controls-grid,.controls-grid.three,.metric-grid{grid-template-columns:1fr}.panel{padding:8px;border-radius:8px}.dashboard-four-grid{gap:8px}.dashboard-science-panel{min-height:320px}.dashboard-head{flex-direction:column}.fullscreen-button{width:100%}.action-row,.job-actions{align-items:stretch;flex-direction:column}.action-row>* ,.job-actions>*{width:100%}.footer{font-size:10px;padding-inline:12px}.empty-state{padding:24px 12px}.admin-frame{height:calc(100dvh - 150px);min-height:560px}}

.pipeline-progress.starting,.pipeline-progress.stopping{border-color:#256d7a}.pipeline-progress.failed{border-color:#7f3342}.pipeline-progress.cancelled{border-color:#805f1e}
@media(max-width:760px){.project-selector-shell{width:100%}.selector{width:100%;max-width:none}.project-refresh-button{height:38px}.header-tools{width:100%;justify-content:stretch}}
.aoi-result-list{display:grid;gap:8px}.aoi-result-list h3{margin-bottom:2px}.aoi-result-item{background:#0c141d;border:1px solid var(--line);border-radius:8px;overflow:hidden}.aoi-result-item>summary{cursor:pointer;list-style:none;padding:12px 14px;font-weight:760;color:#dce8f3;background:#111c27}.aoi-result-item>summary::-webkit-details-marker{display:none}.aoi-result-item>summary:before{content:'▸';display:inline-block;width:18px;color:var(--cyan);transition:transform .15s ease}.aoi-result-item[open]>summary:before{transform:rotate(90deg)}.aoi-result-graph{padding:4px 6px 0}

/* AOI selector layout (3.13.3) */
.aoi-results-layout{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:14px;align-items:start}
.aoi-selector-panel{position:sticky;top:12px}
.aoi-selector-list{display:grid;gap:8px;margin-top:10px}
.aoi-selector-option{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:#0c141d;cursor:pointer;font-weight:700;color:#dce8f3;transition:border-color .15s ease,background .15s ease}
.aoi-selector-option:hover{border-color:#22d3ee;background:#101b26}
.aoi-selector-input{accent-color:#22d3ee}
.aoi-series-panel{min-width:0}
@media (max-width:900px){.aoi-results-layout{grid-template-columns:1fr}.aoi-selector-panel{position:static}}
.pipeline-progress.partial{border-color:#b7791f}

/* v3.14 scientific workflow diagnostics */
.quality-card-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:4px 0 14px}
.quality-card{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border-radius:8px;border:1px solid #2b3b49;background:#101923}
.quality-card strong{font-size:1.55rem;line-height:1}.quality-card span{font-size:.83rem;color:#9fb0c1}
.quality-card.green{border-color:rgba(34,197,94,.5)}.quality-card.amber{border-color:rgba(245,158,11,.55)}.quality-card.red{border-color:rgba(239,68,68,.55)}
.quality-table-wrap{overflow:auto;max-height:360px}.quality-table{width:100%;border-collapse:collapse;font-size:.82rem}
.quality-table th,.quality-table td{padding:8px 9px;border-bottom:1px solid #263747;text-align:left;vertical-align:top}.quality-table th{position:sticky;top:0;background:#111a23;color:#cbd7e3;z-index:1}
.quality-label{font-weight:700}.quality-label.green{color:#4ade80}.quality-label.amber{color:#fbbf24}.quality-label.red{color:#fb7185}
.field.span-two{grid-column:span 2}.field textarea{width:100%;resize:vertical;background:#0b141d;color:#dbe7f3;border:1px solid #304355;border-radius:6px;padding:8px}
@media(max-width:900px){.quality-card-row{grid-template-columns:1fr}.field.span-two{grid-column:span 1}}
.quality-actions{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 12px}

/* v3.15 result-family management and external inversion workspace */
.nested-tabs{margin-bottom:12px}.nested-tabs .tab{background:#0d1721!important;border-color:#2b3d4e!important;color:#b8c8d7!important}.nested-tabs .tab--selected{background:#132333!important;color:#fff!important;border-top:2px solid var(--cyan)!important}
.upload-box{display:flex;align-items:center;justify-content:center;min-height:58px;padding:10px;border:1px dashed #4a6074;border-radius:8px;background:#0b141d;color:#b8c8d7;cursor:pointer}.upload-box a{color:var(--cyan);font-weight:700}
.inline-checks{display:flex;flex-wrap:wrap;gap:12px;margin:10px 0}.inline-checks label{display:flex;align-items:center;gap:5px;color:#c7d5e2}
.panel details{margin-top:12px;border:1px solid #2c3e50;border-radius:8px;background:#0d1721}.panel details>summary{cursor:pointer;padding:11px 13px;font-weight:750;color:#dbe8f4}.panel details>.controls-grid,.panel details>.inline-checks{padding:0 12px 12px}
.inversion-latest-image{width:100%;height:auto;max-height:620px;object-fit:contain;background:#fff;border-radius:7px}
@media(max-width:820px){.nested-tabs .tab{padding:8px 9px!important}.inline-checks{display:grid;grid-template-columns:1fr 1fr}}

/* v3.16: force readable selected dropdown values on every Dash/react-select version */
.Select-control,
.Select.is-open > .Select-control,
div[class*="-control"],
div[class*="-Control"]{
  background:#000!important;
  color:#fff!important;
  border-color:#34495d!important;
}
.Select.has-value.Select--single > .Select-control .Select-value,
.Select.has-value.Select--single > .Select-control .Select-value .Select-value-label,
.Select-value-label,
.Select-value-label span,
div[class*="-singleValue"],
div[class*="-singleValue"] span,
div[class*="-SingleValue"],
div[class*="-placeholder"]{
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  opacity:1!important;
  text-shadow:none!important;
}
.Select-input > input,
div[class*="-Input"] input{color:#fff!important;-webkit-text-fill-color:#fff!important}
.Select-arrow,.Select-clear,div[class*="-indicatorContainer"]{color:#fff!important;opacity:1!important}
.inversion-latest-image{background:transparent!important}
.latest-render-controls{margin-bottom:10px}
.latest-side-by-side{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.latest-side-by-side .panel{min-width:0}
.constraint-guard-note{border-left:3px solid var(--amber);padding-left:10px}
@media(max-width:900px){.latest-side-by-side{grid-template-columns:1fr}}

/* v3.16.1: closed Dash dropdowns must always show the selected value as
   white text on a black control.  Target the explicit component class rather
   than relying on React-Select's version-specific generated class names. */
.ert-dark-dropdown,
.ert-dark-dropdown > div,
.ert-dark-dropdown .Select,
.ert-dark-dropdown .Select-control,
.ert-dark-dropdown [class*="-control"]{
  background:#000!important;
  background-color:#000!important;
  background-image:none!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  opacity:1!important;
  filter:none!important;
  border-color:#34475a!important;
  color-scheme:dark!important;
}
.ert-dark-dropdown .Select-value,
.ert-dark-dropdown .Select-value-label,
.ert-dark-dropdown [class*="-singleValue"],
.ert-dark-dropdown [class*="-singleValue"] *,
.ert-dark-dropdown input,
.ert-dark-dropdown input[type="text"]{
  background:transparent!important;
  background-color:transparent!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  opacity:1!important;
  filter:none!important;
  text-shadow:none!important;
  font-weight:700!important;
}
.ert-dark-dropdown .Select-placeholder,
.ert-dark-dropdown [class*="-placeholder"]{
  background:transparent!important;
  color:#b8c6d4!important;
  -webkit-text-fill-color:#b8c6d4!important;
  opacity:1!important;
}
.ert-dark-dropdown .Select-arrow,
.ert-dark-dropdown svg,
.ert-dark-dropdown path{
  color:#fff!important;
  fill:#fff!important;
  stroke:#fff!important;
  opacity:1!important;
}
.ert-dark-dropdown.is-disabled,
.ert-dark-dropdown [aria-disabled="true"],
.ert-dark-dropdown .is-disabled{
  opacity:1!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
select,select:disabled,select[disabled]{
  background:#000!important;
  background-color:#000!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  opacity:1!important;
  color-scheme:dark!important;
}

/* v3.16.1 public read-only portal */
.public-shell{min-height:100vh}
.public-header{position:sticky}
.public-readonly-badge{border:1px solid #31526a;background:#0b1d29;color:#67e8f9;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800}
.public-family-heading{font-size:17px;font-weight:800;color:#dbeafe;margin:12px 2px 8px;padding-bottom:7px;border-bottom:1px solid #253445}
.public-site-selector{min-width:240px}
.public-dashboard-wall{min-height:calc(100dvh - 145px)}

/* v3.16.5 complete quality audit */
.quality-card.conditional{border-color:rgba(168,85,247,.60)}
.quality-card.incomplete{border-color:rgba(148,163,184,.55)}
.quality-table-all{max-height:680px;border:1px solid #263747;border-radius:8px}
.quality-table-all .quality-table{min-width:1550px}
.quality-badge{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:3px 8px;border-radius:999px;font-size:.72rem;font-weight:800;letter-spacing:.025em;border:1px solid transparent}
.quality-badge.green{color:#bbf7d0;background:rgba(22,101,52,.36);border-color:rgba(74,222,128,.55)}
.quality-badge.amber{color:#fde68a;background:rgba(146,64,14,.34);border-color:rgba(251,191,36,.58)}
.quality-badge.conditional{color:#e9d5ff;background:rgba(107,33,168,.34);border-color:rgba(192,132,252,.58)}
.quality-badge.red{color:#fecdd3;background:rgba(153,27,27,.36);border-color:rgba(251,113,133,.60)}
.quality-badge.incomplete{color:#e2e8f0;background:rgba(71,85,105,.40);border-color:rgba(148,163,184,.58)}
.quality-badge.neutral{color:#cbd5e1;background:rgba(51,65,85,.35);border-color:rgba(100,116,139,.50)}
.quality-row.green td:first-child{box-shadow:inset 4px 0 0 #22c55e}
.quality-row.amber td:first-child{box-shadow:inset 4px 0 0 #f59e0b}
.quality-row.conditional td:first-child{box-shadow:inset 4px 0 0 #a855f7}
.quality-row.red td:first-child{box-shadow:inset 4px 0 0 #ef4444}
.quality-row.incomplete td:first-child{box-shadow:inset 4px 0 0 #94a3b8}
.quality-row.green:hover{background:rgba(34,197,94,.055)}
.quality-row.amber:hover{background:rgba(245,158,11,.055)}
.quality-row.conditional:hover{background:rgba(168,85,247,.055)}
.quality-row.red:hover{background:rgba(239,68,68,.055)}
.quality-file-cell{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:nowrap;color:#dbeafe}
.quality-reason-cell{min-width:420px;max-width:620px;line-height:1.35}

/* v3.16.7 historical inversion browser and project-specific public presentation */
.inversion-browser-panel{overflow:visible}
.inversion-browser-navigation{display:grid;grid-template-columns:auto minmax(260px,1fr) auto;gap:14px;align-items:center;margin-top:8px}
.inversion-browser-slider-wrap{min-width:0;padding:0 8px 4px}
.inversion-browser-metrics{margin:7px 0 4px;color:#dbeafe;font-size:.91rem;font-weight:650;line-height:1.45;min-height:1.45em}
.inversion-browser-panel .rc-slider-mark-text{white-space:nowrap}
.public-header{display:flex;justify-content:space-between;align-items:center;gap:18px}
.public-logo-strip{display:flex;align-items:center;gap:14px;min-width:0;flex-wrap:wrap}
.public-project-logo{display:block;max-height:52px;max-width:150px;width:auto;height:auto;object-fit:contain;background:transparent}
.public-header-copy{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;text-align:right;min-width:180px}
.public-header-copy .app-subtitle{margin-top:2px;color:#cbd5e1;font-weight:650}
.public-about{display:grid;gap:14px}
.public-about-copy{font-size:1rem;line-height:1.65}
.public-about-copy p:first-child{margin-top:0}.public-about-copy p:last-child{margin-bottom:0}
.public-about-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.public-about-photo-cell,.public-about-placeholder{min-height:260px;border:1px solid #2c3e50;border-radius:10px;background:#0b141d;overflow:hidden}
.public-about-photo{display:block;width:100%;height:100%;min-height:260px;max-height:430px;object-fit:cover}
.public-about-placeholder{display:flex;align-items:center;justify-content:center;color:#71859a;font-weight:700;background:linear-gradient(145deg,#0b141d,#111d28)}
.public-about-map{overflow:hidden}
.public-project-card{text-decoration:none;color:inherit;display:block}
@media(max-width:900px){
  .inversion-browser-navigation{grid-template-columns:1fr 1fr}.inversion-browser-slider-wrap{grid-column:1/-1;grid-row:1}.inversion-browser-navigation .secondary-button{width:100%}
  .public-header{align-items:flex-start}.public-logo-strip{gap:8px}.public-project-logo{max-height:40px;max-width:100px}.public-header-copy{min-width:130px}
  .public-about-photos{grid-template-columns:1fr}.public-about-photo-cell,.public-about-placeholder,.public-about-photo{min-height:220px}
}

/* v3.16.8 inversion-browser first-paint stability and public About-page layout */
.inversion-browser-graph-wrap{position:relative;display:block;width:100%;height:610px;min-height:610px;overflow:hidden;clear:both}
.inversion-browser-graph-wrap .dash-graph,
.inversion-browser-graph-wrap .js-plotly-plot,
.inversion-browser-graph-wrap .plot-container{width:100%!important;height:610px!important;min-height:610px!important}
.inversion-browser-metrics{clear:both;position:relative;z-index:1}
.inversion-browser-navigation{clear:both;position:relative;z-index:1;padding-top:4px;padding-bottom:8px}
.inversion-browser-panel{padding-bottom:14px}
/* The slider itself plus Previous/Next are sufficient; suppress transient numeric tooltip UI. */
.inversion-browser-panel .rc-slider-tooltip{display:none!important}

/* Public projects behave like ordinary vertically scrolling web pages. */
.public-shell{display:block;min-height:100vh;height:auto!important;overflow:visible!important;padding-bottom:30px}
.public-shell .tab-content{display:block;min-height:0;height:auto!important;overflow:visible!important}
.public-header{position:relative!important;top:auto!important;z-index:2}
.public-about{width:min(100%,1500px);margin:0 auto 26px;overflow:visible}
/* Put transparent/dark logos on a neutral light plate so black artwork remains visible. */
.public-project-logo{background:#f3f4f6!important;border:1px solid #cbd5e1;border-radius:8px;padding:6px;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.public-about-map{display:block;min-height:520px!important;overflow:visible!important}
.public-about-map-graph,
.public-about-map-graph .dash-graph,
.public-about-map-graph .js-plotly-plot,
.public-about-map-graph .plot-container{display:block;width:100%!important;height:460px!important;min-height:460px!important}
@media(max-width:900px){
  .inversion-browser-graph-wrap,
  .inversion-browser-graph-wrap .dash-graph,
  .inversion-browser-graph-wrap .js-plotly-plot,
  .inversion-browser-graph-wrap .plot-container{height:540px!important;min-height:540px!important}
  .public-about-map{min-height:440px!important}
  .public-about-map-graph,
  .public-about-map-graph .dash-graph,
  .public-about-map-graph .js-plotly-plot,
  .public-about-map-graph .plot-container{height:390px!important;min-height:390px!important}
}


/* v3.16.9 public-page and inversion-browser micro-polish */
.public-about-copy{background:transparent!important;border:0!important;box-shadow:none!important;padding:4px 2px 8px;width:100%;max-width:none}
.public-about-copy .markdown,.public-about-copy p,.public-about-copy li{line-height:1.72}
/* Dash/rc-slider versions can expose a tooltip or numeric helper beside the slider. */
/* rc-slider may portal its helper outside the slider container, so hide that helper globally. */
.rc-slider-tooltip,.rc-input-number{display:none!important}
.inversion-browser-slider-wrap [class*="tooltip"],
.inversion-browser-slider-wrap input[type="number"]{display:none!important}


/* v3.16.10 About-width and navigation naming polish; v3.16.11 retains it. */
.public-about-copy{justify-self:stretch;align-self:stretch}

/* v3.16.12 topographic inversion display and explicit project launcher */
.inversion-browser-graph-wrap{
  height:var(--inversion-browser-height,610px)!important;
  min-height:540px!important;
  transition:height .18s ease;
}
.inversion-browser-graph-wrap .dash-graph,
.inversion-browser-graph-wrap .js-plotly-plot,
.inversion-browser-graph-wrap .plot-container{
  height:var(--inversion-browser-height,610px)!important;
  min-height:540px!important;
}
.topography-display-check{margin-top:7px;color:#e5edf5;font-weight:700}
.topography-display-check label{display:flex;gap:7px;align-items:center;cursor:pointer}
.topography-display-check input{width:17px;height:17px;accent-color:#22d3ee}
.topography-display-check label:has(input:disabled){opacity:.5;cursor:not-allowed}

.project-launcher{
  width:min(1180px,calc(100% - 28px));
  margin:54px auto 72px;
  padding:30px;
  border:1px solid #263747;
  border-radius:14px;
  background:linear-gradient(145deg,#0b121a,#0e1822);
  box-shadow:0 18px 48px rgba(0,0,0,.28);
}
.project-launcher-title{font-size:1.55rem;font-weight:850;color:#f8fafc;margin-bottom:7px}
.project-launcher-help{color:#9fb0c1;line-height:1.55;margin-bottom:22px}
.project-launcher-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.project-launcher-card{
  display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:7px;
  min-height:112px;padding:18px 20px;border-radius:11px;border:1px solid #2c4256;
  background:#101b25;color:#f8fafc;cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease;
}
.project-launcher-card strong{font-size:1.08rem;color:#eaf7ff}
.project-launcher-card span{font-size:.9rem;color:#9fb0c1;line-height:1.4}
.project-launcher-card:hover{transform:translateY(-2px);border-color:#22d3ee;background:#122431}
.project-list-button{white-space:nowrap}

@media(max-width:900px){
  .inversion-browser-graph-wrap,
  .inversion-browser-graph-wrap .dash-graph,
  .inversion-browser-graph-wrap .js-plotly-plot,
  .inversion-browser-graph-wrap .plot-container{
    height:var(--inversion-browser-height,560px)!important;
    min-height:520px!important;
  }
  .project-launcher{width:calc(100% - 18px);margin:26px auto 44px;padding:20px}
  .project-launcher-grid{grid-template-columns:1fr}
}
.project-launcher-admin-dropdown{width:min(620px,100%);margin-top:4px}
.project-launcher-admin-dropdown{max-width:none}

/* v3.16.15 cumulative quality summary + latest inversion overlay */
.quality-latest-run{margin:4px 0 14px;padding:12px 14px;border:1px solid rgba(34,211,238,.42);border-radius:9px;background:linear-gradient(180deg,rgba(8,145,178,.10),rgba(16,25,35,.75))}
.quality-latest-heading{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:10px}.quality-latest-heading strong{color:#dff8ff;font-size:.98rem}.quality-latest-heading span{color:#94a9bb;font-size:.80rem}
.quality-latest-card-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:10px}
.quality-mini-card{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:7px;border:1px solid #2b3b49;background:#0e1822}.quality-mini-card strong{font-size:1.15rem}.quality-mini-card span{font-size:.72rem;color:#9fb0c1}.quality-mini-card.latest{border-color:rgba(34,211,238,.55)}.quality-mini-card.green{border-color:rgba(34,197,94,.45)}.quality-mini-card.amber{border-color:rgba(245,158,11,.45)}.quality-mini-card.conditional{border-color:rgba(249,115,22,.45)}.quality-mini-card.red{border-color:rgba(239,68,68,.45)}
.latest-epoch-list{display:flex;gap:7px;flex-wrap:wrap}.latest-epoch-badge{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;border:1px solid rgba(34,211,238,.45);background:rgba(8,145,178,.12);font-size:.75rem;color:#c9eaf1}.latest-epoch-badge b{font-size:.68rem;color:#67e8f9}
@media(max-width:1100px){.quality-latest-card-row{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:700px){.quality-latest-card-row{grid-template-columns:repeat(2,minmax(0,1fr))}}
