/* =============================================================================
   styles.css — the demonstration hub's chrome.

   THE HARD LAYOUT RULE: the page never scrolls horizontally. Layout viewport is
   not visual viewport on phones, and overflow can shift tap coordinates even
   when an initial screenshot appears correct. Wide things scroll inside their
   own container, never the page.

   Colour tokens are declared once, here, and mirror the DDL list in global.R.
   Every status treatment carries a shape and a word as well as a hue.
   ========================================================================== */

:root {
  --ddl-ink: #2b2334;
  --ddl-ink-2: #514659;
  --ddl-muted: #756a7b;
  --ddl-line: rgba(43, 35, 52, 0.16);
  --ddl-paper: #fffdf8;
  --ddl-bg: #eee5d6;
  --ddl-sand: #e3d5c1;
  --ddl-agave: #526c58;
  --ddl-agave-2: #668670;
  --ddl-clay: #b25e43;
  --ddl-sky: #4f7692;
  --ddl-bronze: #9b6b2f;
  --ddl-mauve: #7a526f;
  --ddl-gold: #c79b45;
  --ddl-night: #211725;
  --ddl-coral: #bd5b45;
  --ddl-monsoon: #3b7a78;
  --ddl-accent: var(--ddl-agave);
  --ddl-shadow: 0 1px 2px rgba(31, 37, 41, 0.06), 0 8px 24px rgba(31, 37, 41, 0.06);
  --ddl-radius: 12px;
  --ddl-gap: 1.15rem;
}

[data-bs-theme="dark"] {
  --ddl-ink: #f4ecdf;
  --ddl-ink-2: #d6c9d7;
  --ddl-muted: #ad9eae;
  --ddl-line: rgba(244, 236, 223, 0.17);
  --ddl-paper: #211a25;
  --ddl-bg: #140f18;
  --ddl-sand: #2c222e;
  --ddl-agave: #81a889;
  --ddl-agave-2: #94bb9c;
  --ddl-clay: #df8a66;
  --ddl-sky: #83a9c2;
  --ddl-bronze: #d0a05c;
  --ddl-mauve: #bd8fb2;
  --ddl-gold: #e1bc67;
  --ddl-shadow: 0 1px 2px rgba(0, 0, 0, 0.4), 0 10px 28px rgba(0, 0, 0, 0.35);
}

*, *::before, *::after { box-sizing: border-box; }
html { overflow-x: clip; scroll-behavior: smooth; }
body {
  background:
    radial-gradient(circle at 12% 2%, color-mix(in srgb, var(--ddl-monsoon) 9%, transparent), transparent 28rem),
    radial-gradient(circle at 92% 22%, color-mix(in srgb, var(--ddl-gold) 8%, transparent), transparent 24rem),
    linear-gradient(color-mix(in srgb, var(--ddl-muted) 3%, transparent) 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--ddl-muted) 3%, transparent) 1px, transparent 1px),
    var(--ddl-bg);
  background-size: auto, auto, 64px 64px, 64px 64px, auto;
  color: var(--ddl-ink);
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
  min-width: 0;
}
.container-fluid { max-width: 1180px; padding-inline: clamp(0.9rem, 3vw, 2rem); }
img, svg, table { max-width: 100%; }
a, button, summary, input, select { touch-action: manipulation; }
.ggiraph-toolbar-icon {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 44px !important;
  height: 44px !important;
  min-width: 44px;
  min-height: 44px;
}
:focus-visible {
  /* Solid, not a white-lightened mix: the indicator must hold 3:1 against the
     light paper grounds it usually sits on (WCAG 1.4.11). */
  outline: 3px solid var(--ddl-sky);
  outline-offset: 3px;
}

.ddl-skip {
  position: absolute; left: -9999px; top: 0; z-index: 100;
  background: var(--ddl-paper); color: var(--ddl-ink);
  padding: 0.6rem 1rem; min-height: 46px;
  border-radius: 0 0 var(--ddl-radius) 0;
}
.ddl-skip:focus { left: 0; }

/* ---- the sample-data mark ------------------------------------------------
   Persistent, non-dismissible, in flow, above the fold. The full and compact
   forms are BOTH in the DOM and swapped by CSS at the breakpoint, so a narrow
   viewport narrows the sentence rather than losing the mark.               */
.demo-mark-strip {
  display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.55rem;
  margin: 0 0 var(--ddl-gap);
  padding: 0.6rem 0.85rem;
  border: 1px solid color-mix(in srgb, var(--ddl-gold) 34%, transparent);
  border-left: 4px solid var(--ddl-gold);
  border-radius: var(--ddl-radius);
  background: var(--ddl-night);
  box-shadow: 0 12px 32px rgba(11, 38, 33, 0.1);
  font-size: 0.84rem; color: #e7f1ee;
}
.demo-mark-tag {
  flex: 0 0 auto; font-weight: 650; letter-spacing: 0.02em;
  text-transform: uppercase; font-size: 0.72rem;
  color: #102b25; background: #e8c76d;
  padding: 0.1rem 0.45rem; border-radius: 999px;
}
.demo-mark-compact { display: none; }
.demo-mark-strip-cover {
  width: max-content; max-width: 100%; margin: 0 0 0.45rem; padding: 0;
  border: 0; border-radius: 0; background: transparent; box-shadow: none;
}
.demo-mark-strip-cover .demo-mark-tag {
  color: var(--ddl-muted); background: transparent;
  border: 1px solid var(--ddl-line); border-radius: 2px;
  padding: 0.18rem 0.42rem; font-size: 0.61rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-weight: 600; letter-spacing: 0.12em;
}
@media (max-width: 767px) {
  .demo-mark-full { display: none; }
  .demo-mark-compact { display: inline; }
}

.demo-chip {
  display: inline-block; font-size: 0.68rem; font-weight: 650;
  text-transform: uppercase; letter-spacing: 0.03em;
  color: var(--ddl-ink); background: color-mix(in srgb, var(--ddl-gold) 32%, transparent);
  border-radius: 999px; padding: 0.08rem 0.45rem; white-space: nowrap;
}
.demo-figure-footer {
  margin: 0.65rem 0 0; font-size: 0.76rem; color: var(--ddl-muted);
}

/* ---- the demonstration frame --------------------------------------------
   The demo frame speaks about the software. The app inside it never does. The
   boundary is legible without reading: dashed edge, different surface, a small
   persistent label.                                                        */
.demo-frame {
  position: relative;
  border: 1px solid var(--ddl-line);
  background:
    radial-gradient(circle, color-mix(in srgb, var(--ddl-muted) 11%, transparent) 0 0.7px, transparent 0.9px),
    color-mix(in srgb, var(--ddl-bg) 46%, var(--ddl-paper));
  background-size: 11px 11px, auto;
  border-radius: var(--ddl-radius);
}
.demo-frame-label {
  display: inline-block; font-size: 0.64rem; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--ddl-muted); margin-bottom: 0.3rem;
}

/* ---- header --------------------------------------------------------------*/
.ddl-header {
  display: flex; flex-wrap: wrap; gap: 0.8rem;
  align-items: center; justify-content: space-between;
  padding-bottom: 0.8rem; border-bottom: 1px solid var(--ddl-line);
}
.ddl-brand {
  display: flex; align-items: center; gap: 0.5rem; min-height: 44px;
  text-decoration: none; color: inherit;
}
.ddl-brand-mark {
  width: 32px; height: 32px; display: block; flex: 0 0 auto;
  overflow: visible; fill: none;
}
.ddl-brand-frame {
  stroke: currentColor; stroke-width: 1.15; opacity: 0.76;
  vector-effect: non-scaling-stroke;
}
.ddl-brand-contour {
  stroke: var(--ddl-mauve); stroke-width: 1.05;
  vector-effect: non-scaling-stroke;
}
.ddl-brand-trail {
  stroke: var(--ddl-gold); stroke-width: 1.4; stroke-linecap: round;
  vector-effect: non-scaling-stroke;
}
.ddl-brand-nodes circle {
  fill: var(--ddl-gold); stroke: var(--ddl-paper); stroke-width: 0.35;
  transform-box: fill-box; transform-origin: center;
}
.ddl-brand:focus-visible .ddl-brand-trail { stroke: var(--ddl-bronze); }
.ddl-brand:focus-visible .ddl-brand-nodes circle:last-child { transform: scale(1.22); }
.ddl-brand-text { display: flex; flex-direction: column; line-height: 1.15; }
.ddl-brand-name {
  font-family: Iowan Old Style, Palatino Linotype, Book Antiqua, Palatino, Georgia, serif;
  font-weight: 620; font-size: 0.98rem; letter-spacing: -0.012em;
}
.ddl-brand-org {
  color: var(--ddl-muted); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.55rem; font-weight: 650; letter-spacing: 0.12em; text-transform: uppercase;
}
.ddl-header-right { display: flex; align-items: center; gap: 0.8rem; flex-wrap: wrap; }
.ddl-region-label { font-size: 0.8rem; color: var(--ddl-muted); }
.ddl-theme-toggle {
  display: inline-flex; align-items: center; gap: 0.35rem;
  background: transparent; border: 1px solid var(--ddl-line);
  border-radius: 999px; padding: 0.3rem 0.7rem; min-width: 44px; min-height: 44px;
  color: var(--ddl-ink-2); font-size: 0.8rem; cursor: pointer;
}
.ddl-theme-toggle:is(:hover, :focus-visible) { border-color: var(--ddl-accent); }
.ddl-header-cover { padding-bottom: 0.55rem; }
.ddl-cover-signin {
  display: flex; align-items: center; justify-content: flex-end;
  gap: 0.65rem; min-width: 0;
}
.ddl-cover-signin-button {
  min-height: 44px; padding: 0.45rem 0.95rem;
  border: 1px solid var(--ddl-line); border-radius: 2px;
  color: var(--ddl-ink); background: color-mix(in srgb, var(--ddl-paper) 88%, transparent);
  font-size: 0.78rem; font-weight: 680; letter-spacing: 0.08em;
  text-transform: uppercase; opacity: 1;
}
.ddl-cover-signin-button:disabled { opacity: 1; cursor: default; }
.ddl-cover-signin-note {
  max-width: 19ch; color: var(--ddl-muted); font-size: 0.72rem;
  line-height: 1.25; text-align: right;
}

/* ---- nav -----------------------------------------------------------------
   A horizontally scrollable chip row below the breakpoint and NEVER a
   hamburger: a hamburger hides the exact thing this demonstration needs
   visible, which is that four programmes carry the same six sections.      */
.ddl-switcher {
  display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap;
  padding: 0.7rem 0 0.35rem;
}
.ddl-switcher-lab {
  font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--ddl-muted); margin-right: 0.2rem;
}
.ddl-switch-chip {
  text-decoration: none; font-size: 0.82rem; color: var(--ddl-ink-2);
  border: 1px solid var(--ddl-line); border-radius: 999px;
  padding: 0.28rem 0.7rem; min-height: 44px; display: inline-flex; align-items: center;
}
.ddl-switch-chip.is-on {
  border-color: var(--ddl-accent); color: var(--ddl-paper);
  background: var(--ddl-accent); font-weight: 620;
}
.ddl-routebar { border-bottom: 1px solid var(--ddl-line); margin-bottom: var(--ddl-gap); }
.ddl-routebar-scroll {
  display: flex; gap: 0.15rem; overflow-x: auto; scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
}
.ddl-route-chip {
  flex: 0 0 auto; text-decoration: none; color: var(--ddl-ink-2);
  padding: 0.55rem 0.85rem; min-height: 44px; display: inline-flex; align-items: center;
  border-bottom: 3px solid transparent; white-space: nowrap; font-size: 0.9rem;
}
.ddl-route-chip:is(:hover, :focus-visible) { color: var(--ddl-ink); }
.ddl-route-chip.is-on {
  color: var(--ddl-ink); font-weight: 650; border-bottom-color: var(--ddl-accent);
}
.ddl-route-chip.is-pressed, .ddl-btn.is-pressed, .ddl-switch-chip.is-pressed,
.ddl-task-card.is-pressed, .ddl-workspace-route.is-pressed,
.ddl-workspace-home.is-pressed { opacity: 0.62; transform: translateY(1px); }

/* =========================================================================
   PROSPECT FIELD WORKSPACE
   -------------------------------------------------------------------------
   One compact control block, one editorial masthead, one computed metric
   strip, and one dominant scientific sheet. The project theme changes tokens;
   the geometry stays shared for the next two workspaces.
   ========================================================================= */
body:has(.ddl-theme-tortoise) {
  --ddl-project-night: #140f18;
  --ddl-project-paper: #f1e7d3;
  --ddl-project-paper-2: #e8dac1;
  --ddl-project-ink: #2b2334;
  --ddl-project-accent: #c79b45;
  --ddl-project-accent-2: #829a77;
  --ddl-project-line: rgba(241, 231, 211, 0.2);
  --ddl-accent: var(--ddl-project-accent);
}
body:has(.ddl-main-workspace) {
  background:
    linear-gradient(color-mix(in srgb, var(--ddl-project-paper) 2.5%, transparent) 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--ddl-project-paper) 2.5%, transparent) 1px, transparent 1px),
    radial-gradient(circle at 82% 7%, color-mix(in srgb, var(--ddl-project-accent) 9%, transparent), transparent 28rem),
    var(--ddl-project-night);
  background-size: 48px 48px, 48px 48px, auto, auto;
}
body:has(.ddl-main-workspace) > .container-fluid { max-width: 1320px; }

.demo-mark-strip-workspace {
  min-height: 28px; margin: 0; padding: 0.24rem 0;
  gap: 0.38rem; border: 0; border-bottom: 1px solid color-mix(in srgb, var(--ddl-project-paper) 14%, transparent);
  border-radius: 0; background: transparent; box-shadow: none;
  color: color-mix(in srgb, var(--ddl-project-paper) 70%, transparent); font-size: 0.66rem;
}
.demo-mark-workspace-text {
  color: var(--ddl-project-paper); font-size: 0.62rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: 0.08em;
}

.ddl-header-workspace {
  min-height: 62px; padding: 0.45rem 0 0.55rem;
  border-bottom-color: color-mix(in srgb, var(--ddl-project-paper) 16%, transparent);
  color: var(--ddl-project-paper);
}
.ddl-header-workspace .ddl-brand-org,
.ddl-header-workspace .ddl-cover-signin-note { color: color-mix(in srgb, var(--ddl-project-paper) 60%, transparent); }
.ddl-header-workspace .ddl-brand-contour { stroke: var(--ddl-project-accent-2); }
.ddl-header-workspace .ddl-brand-nodes circle { stroke: var(--ddl-project-night); }
.ddl-header-workspace .ddl-cover-signin-button,
.ddl-header-workspace .ddl-theme-toggle {
  color: var(--ddl-project-paper);
  border-color: color-mix(in srgb, var(--ddl-project-paper) 24%, transparent);
  background: transparent;
}
.ddl-header-workspace .ddl-theme-toggle:is(:hover, :focus-visible),
.ddl-header-workspace .ddl-cover-signin-button:focus-visible {
  border-color: var(--ddl-project-accent);
}

.ddl-workspace-nav {
  display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: stretch;
  gap: clamp(1rem, 3vw, 2rem); min-height: 64px;
  border-bottom: 1px solid var(--ddl-project-line); color: var(--ddl-project-paper);
}
.ddl-workspace-nav-identity {
  display: flex; align-items: center; gap: 0.75rem; min-width: 0;
  font-size: 0.73rem; text-transform: uppercase; letter-spacing: 0.08em;
}
.ddl-workspace-home {
  display: inline-flex; align-items: center; gap: 0.35rem; min-height: 44px;
  color: color-mix(in srgb, var(--ddl-project-paper) 72%, transparent); text-decoration: none;
}
.ddl-workspace-home:is(:hover, :focus-visible) { color: var(--ddl-project-paper); }
.ddl-workspace-nav-rule { width: 1px; height: 20px; background: var(--ddl-project-line); }
.ddl-workspace-project-name { color: var(--ddl-project-paper); font-weight: 700; }
.ddl-workspace-route-scroll {
  display: flex; justify-content: flex-end; min-width: 0; overflow-x: auto;
  /* thin, not hidden: routes 4-6 off-screen with no cue are undiscoverable */
  scrollbar-width: thin; -webkit-overflow-scrolling: touch;
}
.ddl-workspace-route-scroll::-webkit-scrollbar { height: 4px; }
.ddl-workspace-route-scroll::-webkit-scrollbar-thumb {
  border-radius: 2px; background: rgba(244, 236, 223, 0.35);
}
.ddl-workspace-route {
  position: relative; flex: 0 0 auto; min-width: 132px; min-height: 63px;
  display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 0.55rem;
  padding: 0.55rem 0.8rem; border-inline-start: 1px solid var(--ddl-project-line);
  color: color-mix(in srgb, var(--ddl-project-paper) 68%, transparent); text-decoration: none;
}
.ddl-workspace-route::after {
  content: ""; position: absolute; inset: auto 0 0; height: 3px;
  background: transparent;
}
.ddl-workspace-route:is(:hover, :focus-visible) {
  color: var(--ddl-project-paper);
  background: color-mix(in srgb, var(--ddl-project-paper) 4%, transparent);
}
.ddl-workspace-route.is-on {
  color: var(--ddl-project-night); background: var(--ddl-project-accent);
}
.ddl-workspace-route.is-on::after { background: var(--ddl-project-paper); }
.ddl-workspace-route-index {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.58rem; letter-spacing: 0.08em; opacity: 0.78;
}
.ddl-workspace-route-label { font-size: 0.76rem; font-weight: 720; line-height: 1.15; }

.ddl-main-workspace { color: var(--ddl-project-paper); padding-bottom: 0.4rem; }
.ddl-workspace-masthead {
  position: relative; min-height: 214px; overflow: hidden;
  display: grid; grid-template-columns: minmax(0, 1fr) 174px; align-items: center;
  gap: clamp(1.5rem, 4vw, 4rem); padding: clamp(1.7rem, 4vw, 3.2rem) 0;
}
.ddl-workspace-masthead::before {
  content: ""; position: absolute; width: min(54vw, 690px); aspect-ratio: 1;
  right: 4%; top: -90%; border: 1px solid rgba(130,154,119,0.22);
  border-radius: 48% 52% 43% 57%; transform: rotate(-12deg); pointer-events: none;
}
.ddl-workspace-masthead::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(90deg, transparent 0 68%, rgba(199,155,69,0.08) 68% 68.15%, transparent 68.15%);
}
.ddl-workspace-masthead-copy, .ddl-workspace-specimen { position: relative; z-index: 1; }
.ddl-workspace-kicker {
  margin: 0 0 0.45rem; color: var(--ddl-project-accent);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.65rem; font-weight: 700; letter-spacing: 0.14em;
}
.ddl-workspace-title {
  margin: 0; max-width: 18ch; color: var(--ddl-project-paper);
  font-family: Iowan Old Style, Palatino Linotype, Book Antiqua, Palatino, Georgia, serif;
  font-size: clamp(2.65rem, 6vw, 5rem); font-weight: 520; line-height: 0.96;
  letter-spacing: -0.045em;
}
.ddl-workspace-question {
  margin: 0.8rem 0 0; max-width: 66ch; color: rgba(241,231,211,0.76);
  font-size: clamp(0.88rem, 1.4vw, 1.02rem); line-height: 1.45;
}
.ddl-workspace-asof {
  margin: 0.75rem 0 0; color: rgba(241,231,211,0.5);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.61rem; letter-spacing: 0.08em; text-transform: uppercase;
}
.ddl-workspace-specimen {
  width: 174px; aspect-ratio: 1; justify-self: end; overflow: hidden;
  border: 1px solid rgba(199,155,69,0.72); background: #281d27;
  box-shadow: 12px 12px 0 rgba(199,155,69,0.08);
}
.ddl-workspace-specimen::after {
  content: ""; position: absolute; inset: 8px;
  border: 1px solid rgba(241,231,211,0.32); pointer-events: none;
}
.ddl-workspace-specimen img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  filter: saturate(0.78) contrast(1.06) sepia(0.08);
}
.ddl-workspace-specimen-code {
  position: absolute; right: 8px; bottom: 8px; z-index: 1;
  padding: 0.18rem 0.34rem; color: #f1e7d3; background: rgba(20,15,24,0.82);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.54rem; letter-spacing: 0.11em;
}

.ddl-workspace-metrics {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 0 0 1.2rem; border: 1px solid rgba(241,231,211,0.18);
  background: rgba(241,231,211,0.035);
}
.ddl-workspace-metric {
  min-width: 0; display: grid; grid-template-columns: auto auto 1fr; align-items: baseline;
  gap: 0.55rem; padding: 0.75rem 0.9rem; border-inline-end: 1px solid rgba(241,231,211,0.16);
}
.ddl-workspace-metric:last-child { border-inline-end: 0; }
.ddl-workspace-metric-index {
  color: var(--ddl-project-accent); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.55rem; letter-spacing: 0.08em;
}
.ddl-workspace-metric-value {
  color: var(--ddl-project-paper); font-family: Iowan Old Style, Palatino Linotype, Georgia, serif;
  font-size: clamp(1.55rem, 3vw, 2.25rem); font-weight: 560; line-height: 1;
  font-variant-numeric: tabular-nums;
}
.ddl-workspace-metric-label {
  color: rgba(241,231,211,0.65); font-size: 0.68rem; line-height: 1.25;
}

.ddl-workspace-surface { margin: 0 0 1.15rem; }
.ddl-fig-block-workspace { margin: 0; }
.ddl-fig-block-workspace > .ddl-fig-workspace { margin: 0; }
.ddl-region.ddl-fig-workspace {
  display: grid;
  grid-template-columns: minmax(0, 2.25fr) minmax(286px, 0.75fr);
  grid-template-areas: "media lead" "media detail";
  grid-template-rows: auto minmax(0, 1fr);
  align-items: start; padding: 0; overflow: hidden;
  border: 1px solid rgba(241,231,211,0.34); border-radius: 2px;
  color: var(--ddl-project-ink); background: var(--ddl-project-paper);
  box-shadow: 0 24px 70px rgba(5,3,8,0.34);
}
.ddl-fig-workspace::before {
  content: ""; position: absolute; z-index: 2; left: 10px; top: 10px;
  width: 20px; height: 20px; pointer-events: none;
  border-left: 1px solid rgba(43,35,52,0.32); border-top: 1px solid rgba(43,35,52,0.32);
}
.ddl-workspace-figure-lead {
  grid-area: lead; min-width: 0; padding: 1.3rem 1.15rem 0.8rem;
  background: linear-gradient(180deg, rgba(199,155,69,0.08), transparent 72%);
}
.ddl-workspace-figure-media {
  grid-area: media; min-width: 0; align-self: stretch; padding: 1.05rem;
  border-inline-end: 1px solid rgba(43,35,52,0.18);
}
.ddl-workspace-figure-detail {
  grid-area: detail; min-width: 0; align-self: stretch; padding: 0.15rem 1.15rem 1.15rem;
}
.ddl-fig-workspace .ddl-region-head { align-items: flex-start; margin-bottom: 0.7rem; }
.ddl-fig-workspace .ddl-region-title {
  flex: 1 1 12rem; color: var(--ddl-project-ink);
  font-family: Iowan Old Style, Palatino Linotype, Book Antiqua, Palatino, Georgia, serif;
  font-size: clamp(1.35rem, 2.2vw, 1.85rem); font-weight: 600; line-height: 1.08;
  letter-spacing: -0.025em;
}
.ddl-fig-workspace .ddl-fig-head-right { margin-left: 0; }
.ddl-fig-workspace .demo-chip {
  color: var(--ddl-project-ink); background: rgba(199,155,69,0.28); border-radius: 2px;
  font-size: 0.58rem; letter-spacing: 0.08em;
}
.ddl-fig-workspace .info-dot { color: rgba(43,35,52,0.58); }
.ddl-fig-workspace .ddl-fig-caption {
  margin-bottom: 0.75rem; color: rgba(43,35,52,0.78); font-size: 0.81rem; line-height: 1.5;
}
.ddl-fig-workspace .ddl-fig-warn {
  margin: 0; padding: 0.58rem 0.65rem; border-left-color: var(--ddl-project-accent);
  border-radius: 0; background: rgba(199,155,69,0.11);
  color: rgba(43,35,52,0.78); font-size: 0.75rem; line-height: 1.42;
}
.ddl-fig-workspace .ddl-fig-plot {
  border-color: rgba(43,35,52,0.18); border-radius: 0; padding: 0.32rem;
  box-shadow: none; background: var(--ddl-project-paper-2);
  scrollbar-color: var(--ddl-project-accent) var(--ddl-project-paper-2);
  scrollbar-width: thin;
}
.ddl-fig-workspace .ddl-fig-plot::-webkit-scrollbar { height: 7px; }
.ddl-fig-workspace .ddl-fig-plot::-webkit-scrollbar-track { background: var(--ddl-project-paper-2); }
.ddl-fig-workspace .ddl-fig-plot::-webkit-scrollbar-thumb {
  background: var(--ddl-project-accent); border-radius: 999px;
}
.ddl-workspace-denominators,
.ddl-fig-workspace .ddl-fig-refusals,
.ddl-fig-workspace .ddl-fig-counting {
  margin: 0; padding: 0.65rem 0; border-top: 1px solid rgba(43,35,52,0.16);
  color: rgba(43,35,52,0.66); font-size: 0.73rem; line-height: 1.45;
}
.ddl-workspace-denominators > summary,
.ddl-fig-workspace .ddl-fig-refusals > summary,
.ddl-fig-workspace .ddl-fig-counting > summary {
  min-height: 44px; padding: 0.35rem 0; cursor: pointer;
  color: var(--ddl-project-ink); font-size: 0.72rem; font-weight: 680;
}
.ddl-workspace-denominators .ddl-fig-n { margin: 0.4rem 0 0; color: rgba(43,35,52,0.66); }
.ddl-fig-workspace .ddl-fig-refusals ul { margin: 0.4rem 0 0; padding-left: 1rem; }
.ddl-fig-workspace .ddl-fig-counting p { font-size: 0.73rem; }
.ddl-fig-workspace .demo-figure-footer {
  margin: 0.65rem 0 0; padding-top: 0.55rem; border-top: 1px solid rgba(43,35,52,0.16);
  color: rgba(43,35,52,0.56); font-size: 0.66rem; line-height: 1.35;
}
.ddl-fig-block-workspace > .ddl-entity-notes {
  margin: 0.65rem 0 0; border: 1px solid rgba(241,231,211,0.18);
  border-left: 3px solid var(--ddl-project-accent-2); border-radius: 0;
  background: rgba(241,231,211,0.045); color: var(--ddl-project-paper);
}
.ddl-fig-block-workspace > .ddl-entity-notes .ddl-entity-head,
.ddl-fig-block-workspace > .ddl-entity-notes .ddl-entity-source { color: rgba(241,231,211,0.52); }
.ddl-fig-block-workspace > .ddl-entity-notes .ddl-entity-note { color: rgba(241,231,211,0.74); }

body:has(.ddl-main-workspace) .ddl-hubviews {
  margin-top: 0.5rem; border-top-color: rgba(241,231,211,0.14);
}
body:has(.ddl-main-workspace) .ddl-hubview-link { color: rgba(241,231,211,0.6); font-size: 0.72rem; }
body:has(.ddl-main-workspace) .ddl-hubview-link:is(:hover, :focus-visible) { color: #f1e7d3; }
.ddl-footer-workspace { color: rgba(241,231,211,0.52); }
.ddl-footer-workspace-row {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem;
  padding: 0.45rem 0 1.2rem; border-top: 1px solid rgba(241,231,211,0.12);
}
.ddl-footer-workspace .ddl-footer-org { margin: 0; color: inherit; }
.ddl-footer-build { max-width: min(68ch, 100%); text-align: right; }
.ddl-footer-build > summary { cursor: pointer; color: rgba(241,231,211,0.66); }
.ddl-footer-build p { margin: 0.4rem 0 0; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.64rem; }

/* ---- hero ----------------------------------------------------------------*/
.ddl-hero { padding: 1.4rem 0 1rem; }
.ddl-eyebrow {
  margin: 0 0 0.35rem; font-size: 0.76rem; letter-spacing: 0.05em;
  text-transform: uppercase; color: var(--ddl-muted);
}
.ddl-hero-title {
  margin: 0 0 0.4rem; font-size: clamp(1.5rem, 4vw, 2.2rem);
  line-height: 1.15; font-weight: 700; letter-spacing: -0.015em;
}
.ddl-hero-sub { margin: 0; max-width: 62ch; color: var(--ddl-ink-2); }

/* ---- prospect cover ----------------------------------------------------- */
.ddl-public-hero {
  min-height: 620px;
  display: grid; grid-template-columns: minmax(340px, 0.92fr) minmax(400px, 1.08fr);
  gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center;
  margin: 1rem 0 1.4rem; padding: clamp(1.4rem, 3.5vw, 3rem);
  border-radius: 22px; overflow: hidden; position: relative;
  color: #f8fbfa;
  background:
    linear-gradient(rgba(243,237,223,0.028) 1px, transparent 1px),
    linear-gradient(90deg, rgba(243,237,223,0.028) 1px, transparent 1px),
    linear-gradient(rgba(243,237,223,0.052) 1px, transparent 1px),
    linear-gradient(90deg, rgba(243,237,223,0.052) 1px, transparent 1px),
    radial-gradient(circle at 10% 100%, rgba(44,126,139,0.22), transparent 38%),
    radial-gradient(circle at 80% 0%, rgba(201,154,46,0.15), transparent 28%),
    linear-gradient(135deg, #061a16 0%, #0b2b24 62%, #103a30 100%);
  background-size: 26px 26px, 26px 26px, 130px 130px, 130px 130px, auto, auto, auto;
  background-position: center;
  box-shadow: 0 26px 70px rgba(6, 26, 22, 0.32);
}
.ddl-public-hero::before {
  content: ""; position: absolute; inset: clamp(0.75rem, 2vw, 1.25rem); z-index: 0;
  pointer-events: none; opacity: 0.62;
  background:
    linear-gradient(rgba(232,209,150,0.72), rgba(232,209,150,0.72)) left top / 34px 1px no-repeat,
    linear-gradient(rgba(232,209,150,0.72), rgba(232,209,150,0.72)) left top / 1px 34px no-repeat,
    linear-gradient(rgba(232,209,150,0.72), rgba(232,209,150,0.72)) right top / 34px 1px no-repeat,
    linear-gradient(rgba(232,209,150,0.72), rgba(232,209,150,0.72)) right top / 1px 34px no-repeat,
    linear-gradient(rgba(232,209,150,0.72), rgba(232,209,150,0.72)) left bottom / 34px 1px no-repeat,
    linear-gradient(rgba(232,209,150,0.72), rgba(232,209,150,0.72)) left bottom / 1px 34px no-repeat,
    linear-gradient(rgba(232,209,150,0.72), rgba(232,209,150,0.72)) right bottom / 34px 1px no-repeat,
    linear-gradient(rgba(232,209,150,0.72), rgba(232,209,150,0.72)) right bottom / 1px 34px no-repeat;
}
.ddl-public-hero::after {
  content: ""; position: absolute; width: 240px; height: 240px; right: -115px; bottom: -145px;
  border: 1px solid rgba(255,255,255,0.13); border-radius: 50%;
  box-shadow: 0 0 0 38px rgba(255,255,255,0.035), 0 0 0 78px rgba(255,255,255,0.025);
  background:
    linear-gradient(rgba(232,209,150,0.18), rgba(232,209,150,0.18)) center / 1px 100% no-repeat,
    linear-gradient(90deg, rgba(232,209,150,0.18), rgba(232,209,150,0.18)) center / 100% 1px no-repeat;
  pointer-events: none;
}
.ddl-public-hero-copy { position: relative; z-index: 1; min-width: 0; }
.ddl-public-hero .ddl-eyebrow { color: #bad6ce; }
.ddl-public-hero h1 {
  max-width: 9ch; margin: 0 0 0.75rem; font-size: clamp(2.35rem, 7vw, 4.8rem);
  font-family: Iowan Old Style, Palatino Linotype, Book Antiqua, Palatino, Georgia, serif;
  line-height: 0.92; letter-spacing: -0.055em; font-weight: 560;
}
.ddl-public-tagline {
  max-width: 50ch; margin: 0 0 0.8rem; font-size: clamp(1.02rem, 2vw, 1.3rem);
  line-height: 1.45; color: #eef7f4;
}
.ddl-public-promise { max-width: 58ch; color: #bad6ce; margin: 0 0 1.2rem; }
.ddl-public-actions { display: flex; flex-wrap: wrap; gap: 0.65rem; }
.ddl-public-hero .ddl-btn-open { background: #f6f2e9; color: #173f35; border-color: #f6f2e9; }
.ddl-public-hero .ddl-btn-open:is(:hover, :focus-visible) { color: #173f35; }
.ddl-public-hero .ddl-btn-quiet { color: #fff; border-color: rgba(255,255,255,0.34); }
.ddl-public-hero .ddl-btn-quiet:is(:hover, :focus-visible) { color: #fff; border-color: #fff; }
.ddl-public-atlas {
  min-width: 0;
  position: relative;
  z-index: 1;
  display: grid;
  gap: 0.75rem;
  align-content: start;
  padding: 0.75rem;
  border: 1px solid rgba(232,209,150,0.28);
  border-radius: 5px 5px 34px 5px;
  background:
    linear-gradient(rgba(243,237,223,0.032) 1px, transparent 1px),
    linear-gradient(90deg, rgba(243,237,223,0.032) 1px, transparent 1px),
    #081f1a;
  background-size: 24px 24px, 24px 24px, auto;
  box-shadow: 0 28px 65px rgba(0,0,0,0.36);
}
.ddl-public-atlas-programmes {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.4rem;
}
.ddl-public-atlas-programmes span {
  min-width: 0; min-height: 34px;
  display: flex; align-items: center;
  padding: 0.4rem 0.58rem;
  border: 1px solid rgba(23,61,53,0.42); border-left: 4px solid #8a6a2f; border-radius: 2px;
  color: #173d35; background: #f3eddf;
  box-shadow: 0 5px 14px rgba(0,0,0,0.18), inset 0 1px rgba(255,255,255,0.72);
  font-size: 0.61rem; font-weight: 760; letter-spacing: 0.075em; line-height: 1.2;
  text-transform: uppercase;
}
.ddl-public-atlas-programmes span:first-child { border-left-color: #c95738; }
.ddl-public-atlas-programmes span:last-child { border-left-color: #2c7e8b; }
.ddl-public-plate {
  width: 100%;
  aspect-ratio: 1672 / 941;
  position: relative;
  margin: 0;
  overflow: hidden;
  border: 1px solid rgba(218,199,158,0.82);
  border-radius: 2px;
  background: #f3eddf;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.62), 0 16px 34px rgba(0,0,0,0.24);
}
.ddl-public-plate > img {
  width: 100%; height: 100%; display: block;
  object-fit: contain; object-position: center;
}
.ddl-public-plate::after {
  content: ""; position: absolute; inset: 7px; z-index: 1;
  pointer-events: none; opacity: 0.5;
  background:
    linear-gradient(#173d35, #173d35) left top / 17px 1px no-repeat,
    linear-gradient(#173d35, #173d35) left top / 1px 17px no-repeat,
    linear-gradient(#173d35, #173d35) right top / 17px 1px no-repeat,
    linear-gradient(#173d35, #173d35) right top / 1px 17px no-repeat,
    linear-gradient(#173d35, #173d35) left bottom / 17px 1px no-repeat,
    linear-gradient(#173d35, #173d35) left bottom / 1px 17px no-repeat,
    linear-gradient(#173d35, #173d35) right bottom / 17px 1px no-repeat,
    linear-gradient(#173d35, #173d35) right bottom / 1px 17px no-repeat;
}
.ddl-public-boundary {
  min-width: 0;
  padding: 0.85rem;
  border: 1px solid rgba(255,255,255,0.2); border-left: 3px solid rgba(235,199,104,0.78);
  border-radius: 3px 3px 18px 3px;
  background:
    linear-gradient(rgba(243,237,223,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(243,237,223,0.025) 1px, transparent 1px),
    #071b17;
  background-size: 22px 22px, 22px 22px, auto;
}
.ddl-public-boundary-icon {
  display: grid; place-items: center; width: 34px; height: 34px; margin-bottom: 0.6rem;
  border: 1px solid rgba(235,199,104,0.32); border-radius: 2px;
  background: rgba(255,255,255,0.08); color: #ebc768;
}
.ddl-public-boundary-label {
  margin: 0 0 0.35rem; text-transform: uppercase; letter-spacing: 0.08em;
  font-size: 0.7rem; font-weight: 700; color: #ebc768;
}
.ddl-public-boundary > p:not(.ddl-public-boundary-label) { margin: 0; color: #e7f1ee; font-size: 0.78rem; line-height: 1.45; }
.ddl-public-security {
  margin-top: 0.8rem !important; padding-top: 0.8rem;
  border-top: 1px solid rgba(255,255,255,0.15); font-size: 0.82rem;
}
.ddl-public-boundary > p.ddl-public-atlas-caption {
  margin-top: 0.55rem; color: #b9cbc6;
  font-size: 0.7rem; line-height: 1.35;
}
.ddl-public-proof-grid {
  display: grid; grid-template-columns: 1.16fr 0.92fr 0.92fr; gap: 0.85rem;
  margin-bottom: clamp(2rem, 5vw, 4rem);
}
.ddl-public-proof {
  min-width: 0; padding: 1.15rem; background: color-mix(in srgb, var(--ddl-paper) 94%, var(--ddl-bg));
  border: 1px solid var(--ddl-line); border-radius: 16px; box-shadow: var(--ddl-shadow);
  transition: transform 180ms cubic-bezier(.2,.8,.2,1), box-shadow 180ms ease, border-color 180ms ease;
}
.ddl-public-proof:hover, .ddl-public-proof:focus-within {
  transform: translateY(-4px); border-color: color-mix(in srgb, var(--ddl-accent) 38%, var(--ddl-line));
  box-shadow: 0 18px 45px rgba(31,37,41,0.12);
}
.ddl-public-proof:first-child {
  color: #f8fbfa;
  border-color: rgba(255,255,255,0.12);
  background: radial-gradient(circle at 100% 0, rgba(201,154,46,0.18), transparent 42%), var(--ddl-night);
}
.ddl-public-proof:first-child p { color: #c9dcd6; }
.ddl-public-proof:first-child .ddl-public-proof-number { color: #e8c76d; }
.ddl-public-proof:first-child .ddl-public-proof-icon { color: #d8eee7; background: rgba(255,255,255,0.1); }
.ddl-public-proof:first-child .ddl-text-link { color: #e8c76d; }
.ddl-public-proof-top { display: flex; justify-content: space-between; align-items: center; }
.ddl-public-proof-number {
  font-size: 0.72rem; letter-spacing: 0.08em; color: var(--ddl-muted); font-weight: 700;
}
.ddl-public-proof-icon {
  display: grid; place-items: center; width: 38px; height: 38px;
  border-radius: 10px; color: var(--ddl-agave);
  background: color-mix(in srgb, var(--ddl-agave) 11%, transparent);
}
.ddl-public-proof h2 { margin: 0.7rem 0 0.35rem; font-size: 1.08rem; }
.ddl-public-proof p { margin: 0 0 0.8rem; color: var(--ddl-ink-2); font-size: 0.9rem; }
.ddl-text-link {
  display: inline-flex; align-items: center; gap: 0.35rem; min-height: 44px;
  color: var(--ddl-accent); font-size: 0.86rem; font-weight: 650; text-decoration: none;
}
.ddl-public-section { margin: 0 0 clamp(2rem, 5vw, 4rem); scroll-margin-top: 1rem; }
.ddl-public-section-head { margin-bottom: 1rem; max-width: 66ch; }
.ddl-public-section-head h2 { margin: 0 0 0.35rem; font-size: clamp(1.55rem, 4vw, 2.35rem); }
.ddl-public-section-head > p:last-child { color: var(--ddl-ink-2); }
.ddl-public-programmes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ddl-gap); }
.ddl-public-programme {
  --ddl-accent: var(--ddl-agave);
  min-width: 0; position: relative; overflow: hidden;
  padding: clamp(1rem, 2.5vw, 1.45rem);
  background:
    radial-gradient(circle at 100% 0, color-mix(in srgb, var(--ddl-accent) 11%, transparent), transparent 15rem),
    var(--ddl-paper);
  border: 1px solid var(--ddl-line); border-top: 4px solid var(--ddl-accent);
  border-radius: 17px; box-shadow: var(--ddl-shadow);
  transition: transform 180ms cubic-bezier(.2,.8,.2,1), box-shadow 180ms ease;
}
.ddl-public-programme:hover, .ddl-public-programme:focus-within {
  transform: translateY(-4px); box-shadow: 0 20px 48px rgba(31,37,41,0.12);
}
.ddl-public-programme-head { display: flex; gap: 0.7rem; align-items: center; }
.ddl-public-programme-head .ddl-eyebrow { margin: 0; }
.ddl-public-programme h2 { margin: 0.8rem 0 0.35rem; font-size: 1.25rem; }
.ddl-public-programme > p { color: var(--ddl-ink-2); }
.ddl-public-route-list { list-style: none; padding: 0; margin: 1rem 0; border-top: 1px solid var(--ddl-line); }
.ddl-public-route-list li { border-bottom: 1px solid var(--ddl-line); }
.ddl-public-route-list a {
  display: grid; grid-template-columns: 2rem 1fr auto; gap: 0.5rem; align-items: center;
  min-height: 48px; color: var(--ddl-ink); text-decoration: none; font-weight: 600;
}
.ddl-public-route-list a:is(:hover, :focus-visible) { color: var(--ddl-accent); }
.ddl-public-route-step { font-size: 0.68rem; color: var(--ddl-muted); letter-spacing: 0.08em; }
.ddl-public-cta {
  display: grid; grid-template-columns: minmax(0, 1.35fr) auto; gap: 1rem 2rem;
  align-items: center; padding: clamp(1.1rem, 3vw, 1.7rem); margin-bottom: 1.2rem;
}
.ddl-public-cta h2 { margin: 0 0 0.35rem; font-size: clamp(1.25rem, 3vw, 1.8rem); }
.ddl-public-cta p { margin: 0; max-width: 70ch; color: var(--ddl-ink-2); }
.ddl-public-cta-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 0.65rem; }
.ddl-project-boundary {
  display: inline-flex; margin: 0.7rem 0 0; max-width: 72ch; padding: 0.38rem 0.62rem;
  border-left: 3px solid var(--ddl-gold); color: var(--ddl-muted); font-size: 0.8rem;
  background: color-mix(in srgb, var(--ddl-gold) 8%, transparent);
}

/* ---- minimal public cover ------------------------------------------------
   One directory rail and one pinned public-context field map. The cover loads
   no records and carries no analytical output; each paper door is one link. */
.ddl-main-cover { margin-top: 0.75rem; }
.ddl-minimal-cover {
  height: clamp(560px, calc(100svh - 120px), 760px);
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(310px, 0.82fr) minmax(480px, 1.38fr);
  position: relative; isolation: isolate; overflow: hidden;
  color: #f4ecdf; border: 1px solid rgba(244, 236, 223, 0.19);
  border-radius: 3px; background: #211725;
  box-shadow: 0 26px 70px rgba(27, 17, 31, 0.28);
}
.ddl-minimal-cover::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background:
    linear-gradient(rgba(244,236,223,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(244,236,223,0.025) 1px, transparent 1px),
    radial-gradient(circle at 92% 12%, rgba(79,118,146,0.16), transparent 28rem),
    radial-gradient(circle at 4% 96%, rgba(178,94,67,0.13), transparent 24rem);
  background-size: 32px 32px, 32px 32px, auto, auto;
}
.ddl-minimal-cover-rail {
  min-width: 0; min-height: 0; display: flex; flex-direction: column;
  padding: clamp(1.15rem, 2.2vw, 2rem);
  border-right: 1px solid rgba(244,236,223,0.16);
  background: linear-gradient(155deg, rgba(255,255,255,0.025), rgba(255,255,255,0));
}
.ddl-minimal-cover-eyebrow,
.ddl-minimal-cover-index,
.ddl-minimal-cover-door-index,
.ddl-field-map-head,
.ddl-field-map-titleblock {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  text-transform: uppercase; letter-spacing: 0.14em;
}
.ddl-minimal-cover-eyebrow {
  margin: 0 0 0.65rem; color: #a99aab; font-size: 0.68rem;
}
.ddl-minimal-cover-title {
  max-width: 8ch; margin: 0; color: #f4ecdf;
  font-family: Iowan Old Style, Palatino Linotype, Book Antiqua, Palatino, Georgia, serif;
  font-size: clamp(2.75rem, 5.2vw, 4rem); font-weight: 560;
  line-height: 0.92; letter-spacing: -0.055em;
}
.ddl-minimal-cover-index {
  margin: clamp(1.1rem, 3vh, 1.5rem) 0 0.65rem;
  color: #c9b6c9; font-size: 0.64rem;
}
.ddl-minimal-cover-doors { display: grid; gap: 0.7rem; }
.ddl-minimal-cover-door {
  --ddl-accent: #c79b45;
  min-width: 0; min-height: 100px;
  display: grid; grid-template-columns: 118px minmax(0, 1fr);
  grid-template-rows: auto 1fr; column-gap: 0.9rem;
  position: relative; overflow: hidden;
  color: #2b2334; text-decoration: none;
  border: 1px solid rgba(43,35,52,0.26); border-left: 4px solid var(--ddl-accent);
  border-radius: 2px; background: #efe4cc;
  box-shadow: 0 10px 28px rgba(11,7,14,0.2), inset 0 1px rgba(255,255,255,0.58);
}
.ddl-minimal-cover-door::after {
  content: ""; position: absolute; inset: 6px; pointer-events: none;
  border: 1px solid rgba(43,35,52,0.12);
  background:
    linear-gradient(#2b2334, #2b2334) left top / 13px 1px no-repeat,
    linear-gradient(#2b2334, #2b2334) left top / 1px 13px no-repeat,
    linear-gradient(#2b2334, #2b2334) right bottom / 13px 1px no-repeat,
    linear-gradient(#2b2334, #2b2334) right bottom / 1px 13px no-repeat;
  opacity: 0.42;
}
.ddl-minimal-cover-door:focus-visible {
  color: #2b2334; border-color: var(--ddl-accent);
  box-shadow: 0 16px 36px rgba(11,7,14,0.3), inset 0 1px rgba(255,255,255,0.62);
}
.ddl-minimal-cover-door.is-pressed { opacity: 0.7; transform: translateY(1px); }
.ddl-minimal-cover-plate {
  grid-row: 1 / 3; grid-column: 1; width: 118px; height: 100%; margin: 0;
  overflow: hidden; border-right: 1px solid rgba(43,35,52,0.2); background: #efe4cc;
}
.ddl-minimal-cover-plate img {
  width: 100%; height: 100%; display: block;
  object-fit: cover; object-position: center;
  filter: saturate(0.84) contrast(1.03);
}
.ddl-minimal-cover-door-index {
  grid-column: 2; align-self: end; padding: 0.9rem 1rem 0 0;
  color: #685a6b; font-size: 0.58rem; font-weight: 650;
}
.ddl-minimal-cover-door-foot {
  grid-column: 2; min-width: 0; display: flex; align-items: center;
  justify-content: space-between; gap: 0.7rem; padding: 0.15rem 1rem 0.9rem 0;
}
.ddl-minimal-cover-door-name {
  margin: 0; color: #2b2334; font-size: clamp(1rem, 1.7vw, 1.25rem);
  line-height: 1.15; font-weight: 720; letter-spacing: -0.012em;
}
.ddl-minimal-cover-door-arrow {
  flex: 0 0 auto; width: 34px; height: 34px; display: grid; place-items: center;
  border: 1px solid rgba(43,35,52,0.24); border-radius: 50%; color: var(--ddl-accent);
}
.ddl-field-map {
  min-width: 0; min-height: 0; margin: 0; padding: clamp(1.1rem, 2.4vw, 2rem);
  display: grid; place-items: stretch;
}
.ddl-field-map-sheet {
  min-width: 0; min-height: 0; height: 100%; display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto; position: relative;
  overflow: hidden;
  border: 1px solid rgba(225,188,103,0.38); background: rgba(20,12,23,0.56);
  box-shadow: inset 0 0 0 8px rgba(244,236,223,0.018), 0 24px 55px rgba(8,4,10,0.3);
}
.ddl-field-map-sheet::before,
.ddl-field-map-sheet::after {
  content: ""; position: absolute; width: 30px; height: 30px; pointer-events: none;
}
.ddl-field-map-sheet::before {
  left: 10px; top: 10px; border-left: 1px solid #c79b45; border-top: 1px solid #c79b45;
}
.ddl-field-map-sheet::after {
  right: 10px; bottom: 10px; border-right: 1px solid #c79b45; border-bottom: 1px solid #c79b45;
}
.ddl-field-map-head,
.ddl-field-map-titleblock {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; color: #b9a9bb; font-size: 0.58rem;
}
.ddl-field-map-head { padding: 0.9rem 1rem 0; }
.ddl-field-map-titleblock {
  margin: 0 1rem 0.9rem; padding-top: 0.7rem;
  border-top: 1px solid rgba(244,236,223,0.14);
}
.ddl-field-map-titleblock span:first-child { color: #ead5b0; }
.ddl-field-map-source { display: inline-flex; align-items: center; justify-content: flex-end; gap: 0.42em; }
.ddl-field-map-source a {
  color: #b9a9bb; text-decoration-color: rgba(225,188,103,0.48);
  text-underline-offset: 0.22em;
}
.ddl-field-map-source a:focus-visible { color: #f4ecdf; }
.ddl-field-map-svg { width: 100%; height: 100%; min-height: 0; display: block; }
.ddl-field-grid path { stroke: #867689; stroke-width: 0.7; opacity: 0.14; }
.ddl-field-region-fill {
  fill: rgba(122, 82, 111, 0.2); stroke: rgba(244, 236, 223, 0.06);
  stroke-width: 9; vector-effect: non-scaling-stroke;
}
.ddl-field-boundary {
  stroke: #e1bc67; stroke-width: 2.15; stroke-linecap: round; stroke-linejoin: round;
  vector-effect: non-scaling-stroke; filter: drop-shadow(0 0 5px rgba(225,188,103,0.2));
}
.ddl-field-trail {
  stroke: #b9d6d4; stroke-width: 1.35; stroke-linecap: round; stroke-linejoin: round;
  opacity: 0.78; vector-effect: non-scaling-stroke;
}
.ddl-field-trail-label {
  fill: #f0e3d2; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 9px; font-weight: 650; letter-spacing: 0.04em;
  paint-order: stroke; stroke: #211725; stroke-width: 3px; stroke-linejoin: round;
}
.ddl-field-north text,
.ddl-field-scale text {
  fill: #d9cad9; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 10px; font-weight: 700; letter-spacing: 0.12em;
  text-anchor: middle;
}
.ddl-field-north path,
.ddl-field-scale path {
  stroke: #e1bc67; stroke-width: 1.35; stroke-linecap: square;
  vector-effect: non-scaling-stroke;
}
.ddl-field-register path { stroke: #e1bc67; stroke-width: 1; opacity: 0.72; }

/* ---- the doors -----------------------------------------------------------
   ONE card builder, called once per programme. Identical geometry, identical
   slot order; only text nodes and one accent token differ. That is what makes
   "same software" visible in the first three seconds.                      */
.ddl-doors {
  display: grid; gap: var(--ddl-gap); margin-bottom: var(--ddl-gap);
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
.ddl-door {
  display: flex; flex-direction: column; gap: 0.55rem;
  background: var(--ddl-paper); border: 1px solid var(--ddl-line);
  border-top: 3px solid var(--ddl-accent);
  border-radius: var(--ddl-radius); padding: 1.05rem; box-shadow: var(--ddl-shadow);
}
.ddl-accent-agave { --ddl-accent: var(--ddl-agave); }
.ddl-accent-sky { --ddl-accent: var(--ddl-sky); }
.ddl-accent-bronze { --ddl-accent: var(--ddl-bronze); }
.ddl-accent-mauve { --ddl-accent: var(--ddl-mauve); }
.ddl-door-ico {
  width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center;
  color: var(--ddl-accent);
  background: color-mix(in srgb, var(--ddl-accent) 12%, transparent);
  font-size: 1.05rem;
}
.ddl-door-name { margin: 0; font-size: 1.08rem; font-weight: 670; }
.ddl-door-summary { margin: 0; font-size: 0.9rem; color: var(--ddl-ink-2); }
.ddl-door-features { margin: 0; padding-left: 1.05rem; font-size: 0.84rem; color: var(--ddl-ink-2); }
.ddl-door-features li { margin-bottom: 0.3rem; }
.ddl-door-posture {
  list-style: none; margin-left: -1.05rem; padding-top: 0.45rem;
  border-top: 1px dotted var(--ddl-line); display: flex; gap: 0.4rem;
  color: var(--ddl-muted);
}
.ddl-door-posture-ico { flex: 0 0 auto; margin-top: 0.15rem; }
.ddl-door-foot { margin-top: auto; padding-top: 0.7rem; }
.ddl-door-place {
  display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap;
  font-size: 0.78rem; margin-bottom: 0.6rem;
}
.ddl-door-agency { color: var(--ddl-muted); }
.ddl-door-agency::before { content: "· "; }

.ddl-btn {
  display: inline-flex; align-items: center; gap: 0.4rem;
  min-height: 44px; padding: 0.5rem 0.95rem; border-radius: 999px;
  text-decoration: none; font-size: 0.88rem; font-weight: 600; cursor: pointer;
  border: 1px solid var(--ddl-accent); background: var(--ddl-accent); color: #fff;
}
.ddl-btn:is(:hover, :focus-visible) { filter: brightness(1.06); color: #fff; }
.ddl-btn-quiet { background: transparent; color: var(--ddl-ink); border-color: var(--ddl-line); }
.ddl-btn-quiet:is(:hover, :focus-visible) { color: var(--ddl-ink); border-color: var(--ddl-accent); }

.ddl-wide-door {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--ddl-gap); flex-wrap: wrap;
  background: var(--ddl-sand); border: 1px solid var(--ddl-line);
  border-radius: var(--ddl-radius); padding: 1.1rem; margin-bottom: var(--ddl-gap);
}
.ddl-wide-door-body { display: flex; gap: 0.8rem; align-items: flex-start; max-width: 70ch; }

.ddl-ghost { padding: 1.05rem; margin-bottom: var(--ddl-gap); }
.ddl-ghost-title { margin: 0 0 0.4rem; font-size: 1.02rem; font-weight: 660; }
.ddl-ghost p { font-size: 0.87rem; color: var(--ddl-ink-2); max-width: 78ch; }
.ddl-ghost-boundary { color: var(--ddl-muted); }

/* ---- tasks ---------------------------------------------------------------*/
.ddl-tasks {
  display: grid; gap: 0.7rem; margin-bottom: var(--ddl-gap);
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
.ddl-task-card {
  display: grid; gap: 0.25rem; text-decoration: none; color: inherit;
  background: var(--ddl-paper); border: 1px solid var(--ddl-line);
  border-radius: var(--ddl-radius); padding: 0.85rem; min-height: 44px;
}
.ddl-task-card:is(:hover, :focus-visible) { border-color: var(--ddl-accent); }
.ddl-task-label { font-weight: 650; font-size: 0.94rem; }
.ddl-task-question { font-size: 0.82rem; color: var(--ddl-ink-2); }
.ddl-task-go { color: var(--ddl-muted); }

/* ---- content regions and their states -----------------------------------*/
.ddl-region {
  background: var(--ddl-paper); border: 1px solid var(--ddl-line);
  border-radius: 16px; padding: clamp(0.9rem, 2.2vw, 1.25rem); margin-bottom: var(--ddl-gap);
  box-shadow: 0 1px 2px rgba(31,37,41,0.035), 0 14px 38px rgba(31,37,41,0.045);
}
.ddl-region-head {
  display: flex; align-items: center; gap: 0.55rem; flex-wrap: wrap;
  margin-bottom: 0.55rem;
}
.ddl-region-title { margin: 0; font-size: 1rem; font-weight: 660; }
.ddl-region-pending { background: transparent; }
.ddl-region-error {
  border-left: 4px solid var(--ddl-clay);
  background: color-mix(in srgb, var(--ddl-clay) 7%, var(--ddl-paper));
}
.ddl-region-suppressed, .ddl-suppressed-panel {
  border-left: 4px solid var(--ddl-muted);
  background: color-mix(in srgb, var(--ddl-muted) 7%, var(--ddl-paper));
  border-radius: var(--ddl-radius); padding: 0.9rem;
}
.ddl-note { font-size: 0.82rem; color: var(--ddl-muted); margin: 0.5rem 0 0; max-width: 78ch; }
.ddl-methods-para { max-width: 78ch; }
.ddl-feature-list { margin: 0; padding-left: 1.1rem; font-size: 0.88rem; color: var(--ddl-ink-2); }
.ddl-loadbar { padding: 0.6rem 0.85rem; margin-bottom: var(--ddl-gap); }
.ddl-load-line { margin: 0; font-size: 0.85rem; color: var(--ddl-ink-2); }
.ddl-down { max-width: 70ch; }
.ddl-down-next { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.82rem; }
.ddl-down-home { margin-bottom: 0; }
.ddl-refusal { max-width: 70ch; }

/* ---- status badges: colour PLUS icon PLUS word --------------------------*/
.ddl-status-badge {
  display: inline-flex; align-items: center; gap: 0.32rem;
  font-size: 0.76rem; font-weight: 620; border-radius: 999px;
  padding: 0.15rem 0.55rem; border: 1px solid currentColor;
}
.ddl-status-ok { color: var(--ddl-agave); }
.ddl-status-watch { color: var(--ddl-gold); }
.ddl-status-trigger { color: var(--ddl-clay); }
.ddl-status-supp, .ddl-status-na, .ddl-status-pending { color: var(--ddl-muted); }
.ddl-status-review { color: var(--ddl-sky); }
.ddl-n-badge { font-size: 0.76rem; color: var(--ddl-muted); }
.ddl-n-low { color: var(--ddl-clay); }

/* ---- tables scroll inside THEIR OWN container, never the page -----------*/
.ddl-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.ddl-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.ddl-table th, .ddl-table td {
  text-align: left; padding: 0.4rem 0.6rem; border-bottom: 1px solid var(--ddl-line);
  vertical-align: top;
}
.ddl-table th { font-weight: 650; color: var(--ddl-muted); font-size: 0.78rem; }
.ddl-table td.num, .ddl-table th.num {
  text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap;
}
.ddl-table tfoot td { font-weight: 650; border-top: 2px solid var(--ddl-line); border-bottom: 0; }

/* ---- verified receipt and advisory checks ------------------------------ */
.ddl-lede { max-width: 74ch; color: var(--ddl-ink-2); font-size: 0.96rem; }
.ddl-muted { color: var(--ddl-muted); }
.ddl-stat-grid {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.7rem;
  margin: 1rem 0;
}
.ddl-stat {
  min-width: 0; display: flex; flex-direction: column; justify-content: space-between;
  gap: 0.5rem; min-height: 92px; padding: 0.85rem;
  border: 1px solid var(--ddl-line); border-radius: 11px;
  background: color-mix(in srgb, var(--ddl-bg) 52%, var(--ddl-paper));
}
.ddl-stat-value { font-size: clamp(1.35rem, 3vw, 2rem); line-height: 1; font-weight: 720; }
.ddl-stat-label { color: var(--ddl-muted); font-size: 0.76rem; text-transform: uppercase; letter-spacing: 0.04em; }
.ddl-reconcile, .ddl-callout {
  display: flex; align-items: center; flex-wrap: wrap; gap: 0.55rem;
  margin: 0.9rem 0; padding: 0.75rem 0.85rem; border-radius: 10px;
  background: color-mix(in srgb, var(--ddl-agave) 8%, var(--ddl-paper));
  border: 1px solid color-mix(in srgb, var(--ddl-agave) 22%, var(--ddl-line));
  color: var(--ddl-ink-2); font-size: 0.86rem;
}
.ddl-callout { border-color: var(--ddl-line); background: var(--ddl-sand); }
.ddl-receipt-stages { list-style: none; padding: 0; margin: 0 0 1rem; }
.ddl-receipt-stage {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 0.7rem;
  align-items: center; min-height: 52px; padding: 0.55rem 0;
  border-bottom: 1px solid var(--ddl-line);
}
.ddl-receipt-stage .ddl-muted { font-size: 0.78rem; text-align: right; }
.ddl-receipt-table { font-size: 0.84rem; }
.ddl-receipt-table th, .ddl-receipt-table td { vertical-align: middle; }
.ddl-qc-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem;
  margin-bottom: 1.2rem;
}
.ddl-qc-card {
  min-width: 0; padding: 0.9rem; border: 1px solid var(--ddl-line);
  border-left: 4px solid var(--ddl-sky); border-radius: 11px; background: var(--ddl-paper);
}
.ddl-qc-clean { border-left-color: var(--ddl-agave); }
.ddl-qc-card-head { display: flex; flex-direction: column; align-items: flex-start; gap: 0.55rem; }
.ddl-qc-card h3 { margin: 0; font-size: 1rem; line-height: 1.35; }
.ddl-qc-card > p { color: var(--ddl-ink-2); font-size: 0.86rem; }
.ddl-qc-context { margin: 0.65rem 0 0; padding-left: 1.05rem; color: var(--ddl-muted); font-size: 0.8rem; }
.ddl-qc-context li { margin-bottom: 0.3rem; }

/* =========================================================================
   THE FIGURE FRAME
   -------------------------------------------------------------------------
   The standard frame reads title -> caption -> figure -> details. The public
   field-workspace keeps its short interpretation guardrail above the figure
   and places the longer, still-visible caption immediately after it on a
   narrow screen so the scientific mark enters the first viewport.
   The house split: important science goes in the always-visible caption;
   method depth and how-to-read goes in the (i). A warning that would stop a
   wrong reading of a number on screen stays OUTSIDE the fold.
   ========================================================================= */
.ddl-fig-block { margin-bottom: var(--ddl-gap); }
.ddl-fig-block > .ddl-region { margin-bottom: 0; }
.ddl-fig {
  position: relative;
  background:
    linear-gradient(90deg, var(--ddl-accent), color-mix(in srgb, var(--ddl-accent) 38%, transparent)) top / 100% 3px no-repeat,
    var(--ddl-paper);
}
.ddl-fig-head-right { margin-left: auto; display: inline-flex; align-items: center; gap: 0.3rem; }

/* The caption is the one line a reader who reads nothing else must not
   misread. It is sized and coloured to be read, not skimmed past. */
.ddl-fig-caption {
  margin: 0 0 0.8rem; max-width: 74ch;
  font-size: 0.88rem; line-height: 1.55; color: var(--ddl-ink-2);
}

/* Outside the fold on purpose. Tinted and ruled so it cannot be mistaken for
   the caption above it or for a note below it. */
.ddl-fig-warn {
  margin: 0 0 0.7rem; max-width: 78ch;
  padding: 0.5rem 0.7rem; border-left: 3px solid var(--ddl-bronze);
  border-radius: 0 6px 6px 0;
  background: color-mix(in srgb, var(--ddl-bronze) 9%, var(--ddl-paper));
  font-size: 0.83rem; line-height: 1.45; color: var(--ddl-ink-2);
}

.ddl-fig-refusals {
  margin: 0 0 0.7rem; padding-left: 1.05rem; max-width: 78ch;
  font-size: 0.82rem; line-height: 1.5; color: var(--ddl-muted);
}
.ddl-fig-refusals strong { color: var(--ddl-ink-2); font-weight: 620; }

/* ---- the plot surface ----------------------------------------------------
   THE FIGURES ARE RENDERED LIGHT, IN BOTH APPEARANCES, AND THEREFORE SIT ON A
   PAPER GROUND IN BOTH. This is a decision, not an oversight, and the
   alternative was measured before it was rejected: with the surface left
   transparent, the dark appearance put the light-rendered axis text (#5F6A72)
   on a #171C20 card at roughly 2:1 contrast, which is unreadable and well
   under the 4.5:1 floor.
   The honest fix is a server-side dark render, and the builders are already
   two thirds of the way there -- ddl_ggtheme(dark) exists and the tortoise and
   small-mammal builders take a `dark` argument. The invasive builders do not,
   so wiring it today would darken two programmes and leave the third light,
   which is worse than a consistent choice. Figures sit on paper until all four
   programmes can switch together. Recorded in docs/preview.md as not built.
   ------------------------------------------------------------------------- */
.ddl-fig-plot {
  background: #ffffff;
  border: 1px solid var(--ddl-line);
  border-radius: 12px;
  padding: 0.42rem;
  overflow-x: auto;            /* the figure scrolls inside its own box, never the page */
  -webkit-overflow-scrolling: touch;
  box-shadow: inset 0 0 0 1px rgba(31,37,41,0.018), 0 10px 26px rgba(31,37,41,0.035);
}
.ddl-fig-plot:focus-visible {
  outline: 3px solid var(--ddl-accent);
  outline-offset: 3px;
}
.ddl-fig-plot svg { max-width: 100%; height: auto; display: block; }
.ddl-fig-plot .girafe_container_std { margin: 0 auto; }
.ddl-fig-scroll-hint { display: none; }

/* The canvas box. Its ratio is written inline by ddl_figure_frame(), read from
   the figure's OWN canvas, so the container and the drawing cannot disagree.

   THE DEFECT THIS REPLACED. ggiraph fits the drawing inside its box with
   preserveAspectRatio and centres what is left over, so a box of the wrong shape
   silently shrinks the whole picture rather than failing. Every figure on this
   hub was drawing at 54-80% of its column with the rest blank, and nothing in
   the DOM said so: the <svg> ELEMENT filled its box exactly while the PICTURE
   inside it sat pillarboxed. Measured, not eyeballed -- scripts/audit_fig_aspect.R
   is the arithmetic, and it is what caught it.

   The dimensions are !important because htmlwidgets writes its own inline height
   onto the widget div, and an inline style beats a class. */
.ddl-fig-canvas { width: 100%; }
.ddl-fig-canvas > .html-widget,
.ddl-fig-canvas > .girafe { width: 100% !important; height: 100% !important; }
.ddl-fig-canvas .girafe_container_std { width: 100%; height: 100%; }

.ddl-fig-n {
  margin: 0.6rem 0 0; font-size: 0.76rem; color: var(--ddl-muted);
  font-variant-numeric: tabular-nums;
}
.ddl-fig-counting { margin: 0.5rem 0 0; font-size: 0.8rem; color: var(--ddl-muted); }
.ddl-fig-counting > summary {
  cursor: pointer; color: var(--ddl-ink-2); font-size: 0.8rem;
  padding: 0.2rem 0; min-height: 32px; display: list-item;
}
.ddl-fig-counting > summary:is(:hover, :focus-visible) { color: var(--ddl-accent); }
.ddl-fig-counting p { margin: 0.45rem 0 0; max-width: 78ch; line-height: 1.5; }

/* ---- the entity notes ----------------------------------------------------
   A real scientific name beside a generated count is a quotable claim the
   moment it is screenshotted, and no banner elsewhere on the page travels with
   the crop. So the note is ADJACENT -- same visual block as the figure that
   names the entity -- rather than a footnote at the bottom of the page.     */
.ddl-entity-notes {
  margin: 0.55rem 0 0; padding: 0.6rem 0.75rem;
  border: 1px solid var(--ddl-line); border-left: 3px solid var(--ddl-agave);
  border-radius: 0 8px 8px 0;
  background: color-mix(in srgb, var(--ddl-agave) 6%, var(--ddl-paper));
}
.ddl-entity-head {
  margin: 0 0 0.3rem; font-size: 0.7rem; font-weight: 660;
  letter-spacing: 0.05em; text-transform: uppercase; color: var(--ddl-muted);
}
.ddl-entity-note {
  margin: 0.25rem 0 0; font-size: 0.8rem; line-height: 1.45;
  color: var(--ddl-ink-2); max-width: 78ch;
}
.ddl-entity-note-group + .ddl-entity-note-group { margin-top: 0.55rem; }
.ddl-entity-source {
  margin: 0.18rem 0 0; font-size: 0.74rem; line-height: 1.4;
  color: var(--ddl-muted); max-width: 78ch;
}

/* ---- the one reader-driven control -------------------------------------- */
.ddl-pick .form-group, .ddl-pick .shiny-input-container { margin-bottom: 0; width: 100%; }
.ddl-pick label { font-size: 0.78rem; color: var(--ddl-muted); font-weight: 600; }
.ddl-region-body { min-width: 0; }
.ddl-region-live { border-left: 3px solid var(--ddl-agave-2); }

/* ---- the (i) convention: works on tap, never hover-only ----------------- */
.info-dot {
  background: transparent; border: 0; padding: 0.15rem; line-height: 1;
  color: var(--ddl-muted); cursor: pointer; min-height: 44px; min-width: 44px;
}
.info-dot:is(:hover, :focus-visible) { color: var(--ddl-accent); }
.ddl-info-pop-body { font-size: 0.85rem; max-width: 42ch; }

/* ---- hub views and footer ----------------------------------------------- */
.ddl-hubviews {
  display: flex; gap: 0.9rem; flex-wrap: wrap;
  padding: 0.9rem 0 0.4rem; border-top: 1px solid var(--ddl-line);
}
.ddl-hubviews-primary {
  padding: 0.45rem 0; border-top: 0; border-bottom: 1px solid var(--ddl-line);
}
.ddl-hubview-link {
  display: inline-flex; align-items: center; min-height: 44px;
  font-size: 0.84rem; color: var(--ddl-ink-2); text-decoration: none;
}
.ddl-hubview-link:is(:hover, :focus-visible), .ddl-hubview-link.is-on { color: var(--ddl-accent); }
.ddl-footer { padding: 0.6rem 0 1.6rem; font-size: 0.76rem; color: var(--ddl-muted); }
.ddl-footer-row {
  display: flex; gap: 0.9rem; flex-wrap: wrap; justify-content: space-between;
  padding: 0.55rem 0.7rem; margin-bottom: 0.5rem;
}
.ddl-seam { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.72rem; }
.ddl-footer-org { margin-left: auto; }

@media (max-width: 960px) {
  .ddl-region.ddl-fig-workspace {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "lead" "media" "detail";
    grid-template-rows: auto auto auto;
  }
  .ddl-workspace-figure-media {
    border-inline-end: 0; border-top: 1px solid rgba(43,35,52,0.16);
    border-bottom: 1px solid rgba(43,35,52,0.16);
  }
}

@media (max-width: 900px) {
  .ddl-public-hero { min-height: 0; grid-template-columns: 1fr; }
  .ddl-minimal-cover {
    height: auto; min-height: 0; grid-template-columns: 1fr;
  }
  .ddl-minimal-cover-rail { border-right: 0; border-bottom: 1px solid rgba(244,236,223,0.16); }
  .ddl-minimal-cover-title { max-width: none; }
  .ddl-minimal-cover-doors { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ddl-minimal-cover-door {
    min-height: 0; grid-template-columns: 1fr; grid-template-rows: auto auto auto;
  }
  .ddl-minimal-cover-plate {
    grid-row: 1; grid-column: 1; width: 100%; height: auto; aspect-ratio: 4 / 3;
    border-right: 0; border-bottom: 1px solid rgba(43,35,52,0.2);
  }
  .ddl-minimal-cover-door-index { grid-column: 1; padding: 0.75rem 0.75rem 0; }
  .ddl-minimal-cover-door-foot { grid-column: 1; padding: 0.2rem 0.75rem 0.75rem; }
  .ddl-field-map-svg { min-height: 390px; }
}

@media (max-width: 767px) {
  .container-fluid { padding-inline: 0.8rem; }
  .ddl-header { align-items: flex-start; }
  .ddl-header-right { width: 100%; justify-content: space-between; }
  .ddl-header-cover { align-items: center; }
  .ddl-header-cover .ddl-header-right { width: auto; margin-left: auto; }
  .ddl-cover-signin { gap: 0.45rem; }
  .ddl-switcher { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: thin; }
  .ddl-switcher-lab { flex: 0 0 auto; }
  .ddl-switch-chip { flex: 0 0 auto; }
  .ddl-public-hero { padding: 1.25rem; border-radius: 15px; }
  .ddl-public-hero h1 { font-size: clamp(2.25rem, 14vw, 3.35rem); }
  .ddl-public-boundary { padding: 0.9rem; }
  .ddl-public-proof-grid, .ddl-public-programmes, .ddl-qc-grid { grid-template-columns: 1fr; }
  .ddl-public-cta { grid-template-columns: 1fr; }
  .ddl-minimal-cover-rail { padding: 1.2rem; }
  .ddl-minimal-cover-title { font-size: clamp(2.65rem, 13vw, 4rem); }
  .ddl-minimal-cover-doors { grid-template-columns: 1fr; }
  .ddl-minimal-cover-door {
    min-height: 118px; grid-template-columns: 112px minmax(0, 1fr);
    grid-template-rows: auto 1fr;
  }
  .ddl-minimal-cover-plate {
    grid-row: 1 / 3; grid-column: 1; width: 112px; height: 100%; aspect-ratio: auto;
    border-right: 1px solid rgba(43,35,52,0.2); border-bottom: 0;
  }
  .ddl-minimal-cover-door-index { grid-column: 2; padding: 0.8rem 0.8rem 0; }
  .ddl-minimal-cover-door-foot { grid-column: 2; padding: 0.15rem 0.8rem 0.8rem 0; }
  .ddl-field-map { padding: 0.8rem; }
  .ddl-field-map-svg { min-height: 340px; }
  .ddl-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ddl-receipt-stage { grid-template-columns: 1fr; gap: 0.25rem; padding: 0.7rem 0; }
  .ddl-receipt-stage .ddl-muted { text-align: left; }
  .ddl-fig-scroll-hint {
    display: flex; align-items: center; gap: 0.42rem;
    margin: 0 0 0.45rem; color: var(--ddl-muted);
    font-size: 0.76rem; line-height: 1.35;
  }
  .ddl-fig-scroll-hint::before {
    content: "\2194"; flex: 0 0 auto;
    color: var(--ddl-accent); font-size: 1rem; line-height: 1;
  }
  .ddl-fig-canvas { min-width: 700px; }
  .ddl-footer-org { margin-left: 0; }
}

@media (max-width: 390px) {
  .ddl-header-cover { flex-wrap: nowrap; gap: 0.4rem; }
  .ddl-brand { gap: 0.4rem; }
  .ddl-brand-mark { width: 30px; height: 30px; }
  .ddl-brand-name { font-size: 0.91rem; }
  .ddl-brand-org, .ddl-theme-toggle-text { display: none; }
  .ddl-header-cover .ddl-brand-org { display: none; }
  .ddl-cover-signin { gap: 0.3rem; }
  .ddl-cover-signin-note { max-width: 12ch; font-size: 0.62rem; line-height: 1.15; }
  .ddl-cover-signin-button { padding-inline: 0.55rem; font-size: 0.7rem; }
  .ddl-minimal-cover-door-foot { gap: 0.45rem; padding-right: 0.65rem; }
  .ddl-minimal-cover-door-arrow { width: 30px; height: 30px; }
  .ddl-public-actions .ddl-btn, .ddl-public-cta-actions .ddl-btn { width: 100%; justify-content: center; }
  .ddl-public-atlas-programmes { grid-template-columns: 1fr; }
  .ddl-public-atlas-programmes span { font-size: 0.58rem; }
}

@media (max-width: 767px) {
  body:has(.ddl-main-workspace) > .container-fluid { padding-inline: 0.72rem; }
  .demo-mark-strip-workspace { min-height: 25px; font-size: 0.61rem; }
  .ddl-header-workspace {
    min-height: 56px; flex-wrap: nowrap; align-items: center; gap: 0.45rem;
    padding: 0.32rem 0 0.4rem;
  }
  .ddl-header-workspace .ddl-header-right {
    width: auto; margin-left: auto; flex-wrap: nowrap; gap: 0.38rem;
  }
  .ddl-header-workspace .ddl-brand { min-width: 0; }
  .ddl-header-workspace .ddl-brand-name { font-size: 0.88rem; }
  .ddl-header-workspace .ddl-brand-org,
  .ddl-header-workspace .ddl-theme-toggle-text { display: none; }
  .ddl-header-workspace .ddl-cover-signin { gap: 0.3rem; }
  .ddl-header-workspace .ddl-cover-signin-button {
    min-height: 44px; padding: 0.35rem 0.55rem; font-size: 0.64rem;
  }
  .ddl-header-workspace .ddl-cover-signin-note {
    display: block; max-width: 12ch; font-size: 0.57rem; line-height: 1.12;
  }
  .ddl-header-workspace .ddl-theme-toggle { min-height: 44px; min-width: 44px; padding: 0.25rem; }
  .ddl-header-workspace .ddl-theme-toggle { display: none; }

  .ddl-workspace-nav {
    grid-template-columns: 36px minmax(0, 1fr); gap: 0.35rem; min-height: 66px;
  }
  .ddl-workspace-nav-identity { gap: 0; }
  .ddl-workspace-nav-rule, .ddl-workspace-project-name { display: none; }
  .ddl-workspace-home {
    width: 36px; justify-content: center; padding: 0; font-size: 1rem;
  }
  .ddl-workspace-home span:last-child { display: none; }
  .ddl-workspace-route-scroll {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
    justify-content: stretch; overflow: visible;
  }
  .ddl-workspace-route {
    min-width: 0; min-height: 66px; grid-template-columns: 1fr;
    grid-template-rows: auto auto; align-content: center; justify-items: center;
    gap: 0.12rem; padding: 0.35rem 0.28rem; text-align: center;
  }
  .ddl-workspace-route-index { font-size: 0.58rem; }
  .ddl-workspace-route-label { font-size: 0.72rem; line-height: 1.08; }

  .ddl-workspace-masthead {
    min-height: 148px; grid-template-columns: minmax(0, 1fr) 88px;
    gap: 0.85rem; padding: 1rem 0;
  }
  .ddl-workspace-masthead::before { width: 330px; right: -25%; top: -88%; }
  .ddl-workspace-masthead::after { display: none; }
  .ddl-workspace-kicker { margin-bottom: 0.3rem; font-size: 0.55rem; }
  .ddl-workspace-title { font-size: clamp(2.15rem, 11vw, 2.8rem); }
  .ddl-workspace-question {
    margin-top: 0.48rem; max-width: 48ch; font-size: 0.75rem; line-height: 1.32;
  }
  .ddl-workspace-asof { margin-top: 0.45rem; font-size: 0.52rem; }
  .ddl-workspace-specimen { width: 88px; box-shadow: 6px 6px 0 rgba(199,155,69,0.08); }
  .ddl-workspace-specimen::after { inset: 5px; }
  .ddl-workspace-specimen-code { right: 5px; bottom: 5px; font-size: 0.42rem; }

  .ddl-workspace-metrics { margin-bottom: 0.72rem; }
  .ddl-workspace-metric {
    display: block; min-height: 86px; padding: 0.5rem 0.45rem;
  }
  .ddl-workspace-metric-index { display: block; margin-bottom: 0.12rem; }
  .ddl-workspace-metric-value { display: block; font-size: 1.55rem; }
  .ddl-workspace-metric-label { display: block; margin-top: 0.18rem; font-size: 0.75rem; line-height: 1.15; }

  .ddl-workspace-figure-lead { padding: 0.95rem 0.82rem 0.7rem; }
  .ddl-workspace-figure-media { padding: 0.62rem; }
  .ddl-workspace-figure-detail { padding: 0.85rem 0.82rem; }
  .ddl-fig-workspace .ddl-region-title { font-size: 1.3rem; }
  .ddl-fig-workspace .ddl-fig-caption { font-size: 0.81rem; line-height: 1.42; }
  .ddl-fig-workspace .ddl-fig-warn { font-size: 0.79rem; line-height: 1.38; }
  .ddl-fig-workspace .ddl-fig-scroll-hint { color: rgba(43,35,52,0.62); }
  .ddl-fig-block-workspace > .ddl-entity-notes { padding: 0.65rem; }
  .ddl-footer-workspace-row { flex-direction: column; }
  .ddl-footer-build { text-align: left; }
}

@media (prefers-reduced-motion: no-preference) {
  html.ddl-motion-ok .ddl-route-chip,
  html.ddl-motion-ok .ddl-btn,
  html.ddl-motion-ok .ddl-switch-chip,
  html.ddl-motion-ok .ddl-task-card,
  html.ddl-motion-ok .ddl-minimal-cover-door,
  html.ddl-motion-ok .ddl-workspace-route,
  html.ddl-motion-ok .ddl-workspace-home {
    transition: opacity 150ms ease, transform 180ms cubic-bezier(.2,.8,.2,1),
      border-color 180ms ease, box-shadow 180ms ease;
  }

  html.ddl-motion-ok .ddl-brand-trail,
  html.ddl-motion-ok .ddl-brand-nodes circle,
  html.ddl-motion-ok .ddl-minimal-cover-door-arrow,
  html.ddl-motion-ok .ddl-minimal-cover-plate img {
    transition: stroke 180ms ease, transform 180ms cubic-bezier(.2,.8,.2,1);
  }
  html.ddl-motion-ok .ddl-header-cover .ddl-brand-contour,
  html.ddl-motion-ok .ddl-header-cover .ddl-brand-trail {
    stroke-dasharray: 1; stroke-dashoffset: 1;
    animation: ddl-brand-draw 520ms cubic-bezier(.2,.8,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-header-cover .ddl-brand-contour { animation-delay: 35ms; }
  html.ddl-motion-ok .ddl-header-cover .ddl-brand-trail { animation-delay: 110ms; }
  html.ddl-motion-ok .ddl-header-cover .ddl-brand-nodes circle {
    opacity: 0; transform: scale(0.35);
    animation: ddl-brand-node 260ms cubic-bezier(.2,.8,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-header-cover .ddl-brand-nodes circle:nth-child(1) { animation-delay: 300ms; }
  html.ddl-motion-ok .ddl-header-cover .ddl-brand-nodes circle:nth-child(2) { animation-delay: 355ms; }
  html.ddl-motion-ok .ddl-header-cover .ddl-brand-nodes circle:nth-child(3) { animation-delay: 410ms; }

  html.ddl-motion-ok .ddl-minimal-cover-eyebrow,
  html.ddl-motion-ok .ddl-minimal-cover-title,
  html.ddl-motion-ok .ddl-minimal-cover-index {
    opacity: 0; animation: ddl-cover-copy-arrive 440ms cubic-bezier(.2,.8,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-minimal-cover-eyebrow { animation-delay: 70ms; }
  html.ddl-motion-ok .ddl-minimal-cover-title { animation-delay: 125ms; }
  html.ddl-motion-ok .ddl-minimal-cover-index { animation-delay: 190ms; }

  html.ddl-motion-ok .ddl-minimal-cover-door {
    opacity: 0; animation: ddl-door-arrive 440ms cubic-bezier(.2,.8,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-minimal-cover-door:nth-child(1) { animation-delay: 220ms; }
  html.ddl-motion-ok .ddl-minimal-cover-door:nth-child(2) { animation-delay: 280ms; }
  html.ddl-motion-ok .ddl-minimal-cover-door:nth-child(3) { animation-delay: 340ms; }
  html.ddl-motion-ok .ddl-minimal-cover-door:focus-visible { transform: translateY(-2px); }
  html.ddl-motion-ok .ddl-minimal-cover-door:is(:hover, :focus-visible) .ddl-minimal-cover-door-arrow {
    transform: translate(1px, -1px);
  }
  html.ddl-motion-ok .ddl-field-map-sheet {
    opacity: 0; animation: ddl-map-arrive 520ms 420ms cubic-bezier(.2,.8,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-field-region-fill {
    opacity: 0; animation: ddl-region-fill-arrive 360ms 500ms ease-out forwards;
  }
  html.ddl-motion-ok .ddl-field-boundary {
    stroke-dasharray: 2600; stroke-dashoffset: 2600;
    animation: ddl-map-draw 620ms 560ms cubic-bezier(.3,.7,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-field-trail {
    stroke-dasharray: 1800; stroke-dashoffset: 1800;
    animation: ddl-map-draw 440ms var(--ddl-trail-delay, 620ms) cubic-bezier(.3,.7,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-field-trail-label {
    opacity: 0; animation: ddl-trail-label-arrive 320ms 940ms ease-out forwards;
  }

  html.ddl-motion-ok .ddl-workspace-masthead-copy > * {
    opacity: 0; animation: ddl-workspace-arrive 430ms cubic-bezier(.2,.8,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-workspace-masthead-copy > *:nth-child(1) { animation-delay: 55ms; }
  html.ddl-motion-ok .ddl-workspace-masthead-copy > *:nth-child(2) { animation-delay: 105ms; }
  html.ddl-motion-ok .ddl-workspace-masthead-copy > *:nth-child(3) { animation-delay: 155ms; }
  html.ddl-motion-ok .ddl-workspace-masthead-copy > *:nth-child(4) { animation-delay: 205ms; }
  html.ddl-motion-ok .ddl-workspace-specimen {
    opacity: 0; animation: ddl-specimen-arrive 520ms 130ms cubic-bezier(.2,.8,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-workspace-metrics {
    opacity: 0; animation: ddl-workspace-arrive 430ms 245ms cubic-bezier(.2,.8,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-fig-block-workspace {
    opacity: 0; animation: ddl-field-sheet-arrive 560ms 320ms cubic-bezier(.2,.8,.2,1) forwards;
  }

  html.ddl-motion-ok .ddl-public-hero-copy > * {
    opacity: 0;
    animation: ddl-field-arrive 520ms cubic-bezier(.2,.8,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-public-hero-copy > *:nth-child(1) { animation-delay: 60ms; }
  html.ddl-motion-ok .ddl-public-hero-copy > *:nth-child(2) { animation-delay: 115ms; }
  html.ddl-motion-ok .ddl-public-hero-copy > *:nth-child(3) { animation-delay: 170ms; }
  html.ddl-motion-ok .ddl-public-hero-copy > *:nth-child(4) { animation-delay: 225ms; }
  html.ddl-motion-ok .ddl-public-hero-copy > *:nth-child(5) { animation-delay: 280ms; }

  html.ddl-motion-ok .ddl-public-atlas {
    opacity: 0;
    animation: ddl-atlas-arrive 680ms 140ms cubic-bezier(.2,.8,.2,1) forwards;
  }
  html.ddl-motion-ok .ddl-public-boundary { animation: ddl-boundary-arrive 520ms 420ms cubic-bezier(.2,.8,.2,1) both; }

  html.ddl-motion-ok .ddl-motion-reveal {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 480ms cubic-bezier(.2,.8,.2,1), transform 480ms cubic-bezier(.2,.8,.2,1);
    transition-delay: calc(var(--ddl-reveal-order, 0) * 55ms);
  }
  html.ddl-motion-ok .ddl-motion-reveal.is-visible { opacity: 1; transform: translateY(0); }

  html.ddl-motion-ok .ddl-fig::after {
    content: ""; height: 3px; position: absolute; left: 0; top: 0;
    background: var(--ddl-accent); border-radius: 16px 16px 0 0;
    animation: ddl-line-draw 820ms 120ms cubic-bezier(.2,.8,.2,1) both;
  }
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  html.ddl-motion-ok .ddl-brand:hover .ddl-brand-trail { stroke: var(--ddl-bronze); }
  html.ddl-motion-ok .ddl-brand:hover .ddl-brand-nodes circle:last-child { transform: scale(1.22); }
  html.ddl-motion-ok .ddl-minimal-cover-door:hover {
    color: #2b2334; border-color: var(--ddl-accent); transform: translateY(-2px);
    box-shadow: 0 16px 36px rgba(11,7,14,0.3), inset 0 1px rgba(255,255,255,0.62);
  }
  html.ddl-motion-ok .ddl-minimal-cover-door:hover .ddl-minimal-cover-plate img {
    transform: scale(1.012);
  }
}

html.ddl-motion-paused .ddl-header-cover .ddl-brand *,
html.ddl-motion-paused .ddl-public-hero *,
html.ddl-motion-paused .ddl-minimal-cover *,
html.ddl-motion-paused .ddl-workspace-masthead-copy > *,
html.ddl-motion-paused .ddl-workspace-specimen,
html.ddl-motion-paused .ddl-workspace-metrics,
html.ddl-motion-paused .ddl-fig-block-workspace,
html.ddl-motion-paused .ddl-fig::after {
  animation-play-state: paused !important;
}

@keyframes ddl-field-arrive {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes ddl-atlas-arrive {
  from { opacity: 0; transform: translateY(20px) scale(0.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes ddl-boundary-arrive {
  from { opacity: 0; transform: translateY(18px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes ddl-line-draw {
  from { width: 0; opacity: 0.4; }
  to { width: 100%; opacity: 1; }
}
@keyframes ddl-door-arrive {
  from { opacity: 0; transform: translateY(9px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes ddl-map-arrive {
  from { opacity: 0; transform: translateY(6px) scale(0.992); }
  to { opacity: 1; transform: scale(1); }
}
@keyframes ddl-map-draw {
  to { stroke-dashoffset: 0; }
}
@keyframes ddl-brand-draw {
  to { stroke-dashoffset: 0; }
}
@keyframes ddl-brand-node {
  to { opacity: 1; transform: scale(1); }
}
@keyframes ddl-cover-copy-arrive {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes ddl-region-fill-arrive {
  to { opacity: 1; }
}
@keyframes ddl-trail-label-arrive {
  to { opacity: 1; }
}
@keyframes ddl-workspace-arrive {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes ddl-specimen-arrive {
  from { opacity: 0; transform: translate(8px, 8px); }
  to { opacity: 1; transform: translate(0, 0); }
}
@keyframes ddl-field-sheet-arrive {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation: none !important;
    transition-duration: 0.01ms !important;
    transition-delay: 0ms !important;
  }
}

/* ==========================================================================
   TORTOISE PRODUCT WORKSPACE
   Six-route task client adapted to the approved cover palette. The older
   editorial field-sheet selectors remain available to the internal profile;
   this block owns only the public .ddl-tor-page surface.
   ========================================================================== */
body:has(.ddl-tor-page) {
  --ddl-tor-night: #211725;
  --ddl-tor-night-2: #35263a;
  --ddl-tor-ink: #2b2334;
  --ddl-tor-muted: #6f6574;
  --ddl-tor-ground: #f1eee8;
  --ddl-tor-card: #fffdfa;
  --ddl-tor-line: rgba(54, 42, 60, 0.14);
  --ddl-tor-gold: #c79b45;
  --ddl-tor-sage: #72856b;
  --ddl-tor-sky: #6d8fa6;
  --ddl-tor-alert: #b65e47;
  --ddl-project-night: var(--ddl-tor-night);
  --ddl-project-paper: #f7efe1;
  --ddl-project-accent: var(--ddl-tor-gold);
  --ddl-project-accent-2: var(--ddl-tor-sage);
  --ddl-project-line: rgba(50, 38, 55, 0.13);
  color: var(--ddl-tor-ink);
  background:
    radial-gradient(circle at 4% 0%, rgba(109, 143, 166, 0.12), transparent 29rem),
    radial-gradient(circle at 96% 8%, rgba(199, 155, 69, 0.09), transparent 26rem),
    linear-gradient(rgba(43, 35, 52, 0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(43, 35, 52, 0.025) 1px, transparent 1px),
    var(--ddl-tor-ground);
  background-size: auto, auto, 52px 52px, 52px 52px, auto;
}
body:has(.ddl-tor-page) > .container-fluid { max-width: 1480px; padding-inline: clamp(0.75rem, 1.3vw, 1.1rem); }
body:has(.ddl-tor-page) .demo-mark-strip-workspace {
  min-height: 24px; width: max-content; margin: 0 0 0.35rem; padding: 0.18rem 0.48rem;
  border: 1px solid rgba(43,35,52,0.16); border-radius: 3px;
  background: rgba(255,253,250,0.74); color: var(--ddl-tor-muted);
}
body:has(.ddl-tor-page) .demo-mark-workspace-text { color: inherit; font-size: 0.59rem; }
body:has(.ddl-tor-page) .ddl-header-workspace {
  min-height: 62px; margin: 0; padding: 0.52rem 0.82rem;
  color: #fbf5e9; border: 1px solid rgba(255,255,255,0.08); border-radius: 10px 10px 0 0;
  background:
    radial-gradient(circle at 6% 20%, rgba(199,155,69,0.14), transparent 12rem),
    linear-gradient(105deg, #211725, #302137 70%, #211725);
  box-shadow: 0 8px 24px rgba(35,23,40,0.18);
}
body:has(.ddl-tor-page) .ddl-header-workspace .ddl-brand-name { color: #fffaf0; font-size: 0.98rem; }
body:has(.ddl-tor-page) .ddl-header-workspace .ddl-brand-org { color: rgba(255,250,240,0.68); }
body:has(.ddl-tor-page) .ddl-header-workspace .ddl-brand-frame { stroke: rgba(255,250,240,0.72); }
body:has(.ddl-tor-page) .ddl-header-workspace .ddl-brand-contour,
body:has(.ddl-tor-page) .ddl-header-workspace .ddl-brand-trail { stroke: var(--ddl-tor-gold); }
body:has(.ddl-tor-page) .ddl-header-workspace .ddl-brand-nodes circle { fill: var(--ddl-tor-gold); stroke: #211725; }
body:has(.ddl-tor-page) .ddl-header-workspace .ddl-cover-signin-button,
body:has(.ddl-tor-page) .ddl-header-workspace .ddl-theme-toggle {
  color: #fffaf0; border-color: rgba(255,250,240,0.32); background: rgba(255,255,255,0.03);
}
body:has(.ddl-tor-page) #ddl-theme-toggle { display: none; }
body:has(.ddl-tor-page) .ddl-header-workspace .ddl-cover-signin-note { color: rgba(255,250,240,0.62); }

body:has(.ddl-tor-page) .ddl-workspace-nav {
  /* Identity stays VISIBLE: the labelled "All projects" return is the only
     explicit way back to the cover, and hiding it left the workspace with an
     unlabelled brand link as the sole exit. Restoration never hid it. */
  display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center;
  gap: 0.6rem; min-height: 64px; padding: 8px 8px 8px 14px;
  border: 1px solid var(--ddl-tor-line);
  border-top: 0; background: rgba(255,253,250,0.94); color: var(--ddl-tor-ink);
  box-shadow: 0 8px 22px rgba(43,35,52,0.08);
}
body:has(.ddl-tor-page) .ddl-workspace-nav-identity { display: flex; }
body:has(.ddl-tor-page) .ddl-workspace-home { color: var(--ddl-tor-ink); }
body:has(.ddl-tor-page) .ddl-workspace-home:is(:hover, :focus-visible) {
  color: var(--ddl-tor-gold); background: rgba(199,155,69,0.08);
}
body:has(.ddl-tor-page) .ddl-workspace-project-name { color: var(--ddl-tor-ink); }
body:has(.ddl-tor-page) .ddl-workspace-nav-rule { background: var(--ddl-tor-line); }
body:has(.ddl-tor-page) .ddl-workspace-route-scroll {
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 5px;
  padding: 0; overflow: visible;
}
body:has(.ddl-tor-page) .ddl-workspace-route {
  min-width: 0; min-height: 47px; display: flex; align-items: center; justify-content: center;
  gap: 0.46rem; padding: 0.52rem 0.58rem; border: 1px solid rgba(43,35,52,0.11);
  border-radius: 9px; color: var(--ddl-tor-ink); background: rgba(255,255,255,0.74);
  box-shadow: 0 1px 4px rgba(43,35,52,0.05); text-align: center;
}
body:has(.ddl-tor-page) .ddl-workspace-route::after { display: none; }
body:has(.ddl-tor-page) .ddl-workspace-route-icon { display: inline-flex; color: #6f5576; font-size: 1rem; }
body:has(.ddl-tor-page) .ddl-workspace-route-label { font-size: 0.78rem; font-weight: 760; }
body:has(.ddl-tor-page) .ddl-workspace-route:is(:hover, :focus-visible) {
  color: var(--ddl-tor-ink); border-color: rgba(122,82,111,0.34); background: #fff;
  transform: translateY(-1px); box-shadow: 0 5px 14px rgba(43,35,52,0.09);
}
body:has(.ddl-tor-page) .ddl-workspace-route.is-on {
  color: #fffaf0; border-color: var(--ddl-tor-night-2);
  background: linear-gradient(135deg, var(--ddl-tor-night-2), #4a324e);
  box-shadow: 0 7px 18px rgba(43,35,52,0.17);
}
body:has(.ddl-tor-page) .ddl-workspace-route.is-on .ddl-workspace-route-icon { color: var(--ddl-tor-gold); }
body:has(.ddl-tor-page) .ddl-main-workspace { color: var(--ddl-tor-ink); padding: 1.45rem 0 0.75rem; }
body:has(.ddl-tor-page) .ddl-hubviews { display: none; }
body:has(.ddl-tor-page) .ddl-footer-workspace { color: var(--ddl-tor-muted); }
body:has(.ddl-tor-page) .ddl-footer-workspace-row { border-top-color: var(--ddl-tor-line); }
body:has(.ddl-tor-page) .ddl-footer-build > summary { color: var(--ddl-tor-muted); }

.ddl-tor-page {
  width: 100%; max-width: 1240px; margin-inline: auto;
  font-size: 0.91rem; line-height: 1.45;
}
.ddl-tor-page h1, .ddl-tor-page h2, .ddl-tor-page h3, .ddl-tor-page h4 { color: var(--ddl-tor-ink); }
.ddl-tor-page p { color: var(--ddl-tor-muted); }
.ddl-tor-route-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem;
  margin: 0 0 0.9rem; padding-inline: 0.08rem;
}
.ddl-tor-route-copy :is(h1, h2) {
  margin: 0; font-size: clamp(1.85rem, 3.8vw, 3.05rem); font-weight: 640;
  line-height: 1.04; letter-spacing: -0.045em;
}
.ddl-tor-route-copy > p { margin: 0.28rem 0 0; max-width: 70ch; font-size: 0.92rem; }
.ddl-tor-eyebrow {
  margin: 0 0 0.2rem !important; color: #79577d !important;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.62rem; font-weight: 760; letter-spacing: 0.11em; text-transform: uppercase;
}

.ddl-tor-card {
  min-width: 0; margin: 0 0 1rem; padding: 1rem;
  border: 1px solid var(--ddl-tor-line); border-radius: 14px;
  background: color-mix(in srgb, var(--ddl-tor-card) 96%, transparent);
  box-shadow: 0 1px 2px rgba(43,35,52,0.05), 0 10px 30px rgba(43,35,52,0.055);
}
.ddl-tor-card-head {
  display: flex; align-items: center; justify-content: space-between; gap: 0.8rem;
  min-height: 36px; margin: -0.1rem 0 0.75rem; padding-bottom: 0.62rem;
  border-bottom: 1px solid var(--ddl-tor-line);
}
.ddl-tor-card-title { display: flex; align-items: center; gap: 0.48rem; min-width: 0; }
.ddl-tor-card-title > svg { color: #79577d; font-size: 1rem; flex: 0 0 auto; }
.ddl-tor-card-title h2 { margin: 0; font-size: 0.96rem; font-weight: 800; }
.ddl-tor-asof {
  color: var(--ddl-tor-muted); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.62rem; letter-spacing: 0.04em;
}
.ddl-tor-actions { display: flex; flex-wrap: wrap; gap: 0.55rem; }
.ddl-tor-btn {
  min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem;
  padding: 0.5rem 0.78rem; border: 1px solid rgba(43,35,52,0.2); border-radius: 8px;
  color: var(--ddl-tor-ink); background: rgba(255,255,255,0.66); text-decoration: none;
  font-size: 0.78rem; font-weight: 740;
}
.ddl-tor-btn:is(:hover, :focus-visible) { color: var(--ddl-tor-ink); border-color: #79577d; background: #fff; }
.ddl-tor-btn-primary { color: #fffaf0; border-color: var(--ddl-tor-night-2); background: var(--ddl-tor-night-2); }
.ddl-tor-btn-primary:is(:hover, :focus-visible) { color: #fff; background: #4a324e; }
.ddl-tor-btn.is-disabled { opacity: 0.38; pointer-events: none; }
.ddl-tor-text-link, .ddl-tor-review-link {
  display: inline-flex; align-items: center; gap: 0.3rem; color: #654969;
  font-weight: 760; text-decoration: underline; text-underline-offset: 3px;
}
.ddl-tor-review-link { min-height: 40px; white-space: nowrap; text-decoration: none; }
.ddl-tor-roster-only { color: var(--ddl-tor-muted); font-size: 0.76rem; white-space: nowrap; }

.ddl-tor-pill {
  min-height: 28px; display: inline-flex; align-items: center; width: max-content;
  padding: 0.24rem 0.55rem; border: 1px solid var(--ddl-tor-line); border-radius: 999px;
  color: var(--ddl-tor-muted); background: rgba(255,255,255,0.65);
  font-size: 0.68rem; font-weight: 780; white-space: nowrap;
}
.ddl-tor-pill.is-alert { color: #823b2d; border-color: rgba(182,94,71,0.34); background: rgba(182,94,71,0.1); }
.ddl-tor-pill.is-gold { color: #73531c; border-color: rgba(199,155,69,0.4); background: rgba(199,155,69,0.14); }
.ddl-tor-pill.is-ok { color: #405d43; border-color: rgba(114,133,107,0.4); background: rgba(114,133,107,0.12); }
.ddl-tor-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.55rem; }
.ddl-tor-stat {
  min-width: 0; padding: 0.68rem 0.75rem; border-left: 3px solid rgba(43,35,52,0.22);
  border-radius: 7px; background: rgba(43,35,52,0.035);
}
.ddl-tor-stat.is-alert { border-left-color: var(--ddl-tor-alert); }
.ddl-tor-stat.is-gold { border-left-color: var(--ddl-tor-gold); }
.ddl-tor-stat strong { display: block; color: var(--ddl-tor-ink); font-size: 1.2rem; line-height: 1.05; font-variant-numeric: tabular-nums; }
.ddl-tor-stat span { display: block; margin-top: 0.2rem; color: var(--ddl-tor-muted); font-size: 0.67rem; line-height: 1.25; }

.ddl-tor-trustline, .ddl-tor-note {
  display: flex; align-items: flex-start; gap: 0.52rem; margin: 0 0 0.95rem;
  padding: 0.6rem 0.72rem; border: 1px solid rgba(114,133,107,0.22); border-radius: 9px;
  color: var(--ddl-tor-ink); background: rgba(114,133,107,0.08); font-size: 0.76rem;
}
.ddl-tor-trustline > svg, .ddl-tor-note > svg { margin-top: 0.1rem; color: var(--ddl-tor-sage); flex: 0 0 auto; }
.ddl-tor-trustline span { color: var(--ddl-tor-muted); }
.ddl-tor-note p { margin: 0; color: var(--ddl-tor-muted); }
.ddl-tor-note strong { display: block; margin-bottom: 0.06rem; font-size: 0.75rem; }

/* Start */
.ddl-tor-start-page {
  padding: clamp(1rem, 2.3vw, 1.5rem); border: 1px solid var(--ddl-tor-line);
  border-radius: 19px; background: rgba(255,253,250,0.87);
  box-shadow: 0 16px 42px rgba(43,35,52,0.08);
}
.ddl-tor-start-page .ddl-tor-route-copy :is(h1, h2) { font-size: clamp(2.35rem, 4.5vw, 3.75rem); }
.ddl-tor-start-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.7rem; }
.ddl-tor-start-task {
  position: relative; min-height: 128px; display: grid;
  grid-template-columns: 4px 54px minmax(0,1fr) auto; align-items: center; gap: 0.85rem;
  overflow: hidden; padding: 1rem 1rem 1rem 0; border: 1px solid var(--ddl-tor-line);
  border-radius: 19px; color: var(--ddl-tor-ink); background: rgba(250,249,247,0.96);
  box-shadow: 0 6px 18px rgba(43,35,52,0.05); text-decoration: none;
}
.ddl-tor-start-rail { align-self: stretch; width: 4px; border-radius: 0 4px 4px 0; background: #78547b; }
.ddl-tor-start-icon {
  width: 50px; height: 50px; display: inline-flex; align-items: center; justify-content: center;
  border-radius: 11px; color: #fff8e9; background: linear-gradient(145deg, #5b3d60, #2d2231);
  box-shadow: 0 8px 18px rgba(43,35,52,0.17); font-size: 1.18rem;
}
.ddl-tor-start-copy { min-width: 0; display: flex; flex-direction: column; }
.ddl-tor-start-eyebrow {
  color: #735276; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.61rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
}
.ddl-tor-start-copy strong { margin-top: 0.1rem; font-size: 1.08rem; line-height: 1.16; }
.ddl-tor-start-copy > span:last-child { margin-top: 0.25rem; color: var(--ddl-tor-muted); font-size: 0.78rem; }
.ddl-tor-start-arrow { color: #79577d; font-size: 1.1rem; }
.ddl-tor-start-task:is(:hover, :focus-visible) {
  color: var(--ddl-tor-ink); border-color: rgba(122,82,111,0.38); transform: translateY(-3px);
  box-shadow: 0 14px 30px rgba(43,35,52,0.11);
}
.ddl-tor-start-links { display: flex; flex-wrap: wrap; gap: 0.52rem; margin-top: 1rem; font-size: 0.73rem; }
.ddl-tor-start-links span:first-child { color: var(--ddl-tor-muted); font-weight: 720; }
.ddl-tor-start-links a { color: #654969; text-underline-offset: 3px; }

/* Shared context */
.ddl-tor-context {
  position: sticky; z-index: 20; top: 0; display: flex; align-items: flex-end;
  justify-content: space-between; gap: 1rem; margin: -1.45rem 0 1rem;
  padding: 0.55rem 0.72rem; border: 1px solid var(--ddl-tor-line); border-top: 0;
  border-radius: 0 0 10px 10px; background: rgba(255,253,250,0.96);
  box-shadow: 0 7px 20px rgba(43,35,52,0.08); backdrop-filter: blur(10px);
}
.ddl-tor-context-summary { margin: 0 0 0.18rem !important; font-size: 0.7rem; font-style: italic; white-space: nowrap; }
.ddl-tor-context-summary > svg { margin-right: 0.25rem; color: #79577d; }
.ddl-tor-context-controls { min-width: min(390px, 100%); display: flex; align-items: flex-end; gap: 0.55rem; }
.ddl-tor-context-controls .form-group, .ddl-tor-context-controls .shiny-input-container { flex: 1 1 250px; margin: 0; }
.ddl-tor-context-controls label { margin-bottom: 0.12rem; color: var(--ddl-tor-ink); font-size: 0.67rem; font-weight: 760; }
.ddl-tor-context-controls .selectize-control { margin-bottom: 0; }
.ddl-tor-context-controls .selectize-input { min-height: 40px; border-color: var(--ddl-tor-line); border-radius: 8px; box-shadow: none; }
.ddl-tor-page .form-check-input:checked {
  border-color: #654969 !important; background-color: #654969 !important;
}

/* Action */
.ddl-tor-answer-row { display: grid; grid-template-columns: minmax(220px,.8fr) minmax(0,1.2fr); gap: 0.9rem; align-items: center; }
.ddl-tor-answer strong { color: var(--ddl-tor-ink); font-size: clamp(1.25rem, 2.5vw, 1.75rem); }
.ddl-tor-answer p { margin: 0.22rem 0 0; }
.ddl-tor-field-note { margin: 0.8rem 0; border: 1px solid var(--ddl-tor-line); border-radius: 8px; background: rgba(199,155,69,0.055); }
.ddl-tor-field-note > summary, .ddl-tor-ledger-fold > summary, .ddl-tor-rulebook > summary,
.ddl-tor-roster > summary, .ddl-tor-chart-twin > summary, .ddl-tor-map-window > summary {
  min-height: 44px; display: flex; align-items: center; gap: 0.4rem; padding: 0.56rem 0.7rem;
  cursor: pointer; color: var(--ddl-tor-ink); font-size: 0.74rem; font-weight: 780;
}
.ddl-tor-field-note ul { margin: 0; padding: 0.2rem 1.2rem 0.7rem 2rem; color: var(--ddl-tor-muted); font-size: 0.76rem; }
.ddl-tor-filter-row {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: 0.65rem;
  padding: 0.35rem 0 0.1rem; border-top: 1px solid var(--ddl-tor-line);
}
.ddl-tor-filter-row .form-group { margin-bottom: 0.55rem; }
.ddl-tor-filter-row .form-group:last-child { margin-left: auto; min-width: 220px; }
.ddl-tor-queue-actions {
  min-height: 50px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-bottom: 0.65rem;
}
.ddl-tor-queue-actions > :first-child { margin-right: auto; }
.ddl-tor-queue-status { margin: 0; color: var(--ddl-tor-muted); font-size: 0.72rem; }
.ddl-tor-selected:focus { outline: 3px solid var(--ddl-sky); outline-offset: 3px; }
.ddl-tor-card-caption { margin: 0.65rem 0 0; font-size: 0.68rem; }
.ddl-tor-support-card { max-width: 720px; }

/* Tables and Shiny radio groups */
.ddl-tor-page .radio-inline, .ddl-tor-page .form-check-inline {
  min-height: 38px; display: inline-flex; align-items: center; margin: 0.15rem 0.25rem 0.15rem 0;
  padding: 0.38rem 0.62rem; border: 1px solid var(--ddl-tor-line); border-radius: 8px;
  background: rgba(255,255,255,0.62); font-size: 0.73rem; cursor: pointer;
}
.ddl-tor-page .radio-inline:has(input:checked), .ddl-tor-page .form-check-inline:has(input:checked) {
  color: #fffaf0; border-color: var(--ddl-tor-night-2); background: var(--ddl-tor-night-2);
}
.ddl-tor-page .radio-inline input, .ddl-tor-page .form-check-inline input {
  position: absolute; width: 1px; height: 1px; margin: -1px; opacity: 0; pointer-events: none;
}
.ddl-tor-page .radio-inline:has(input:focus-visible),
.ddl-tor-page .form-check-inline:has(input:focus-visible) {
  outline: 3px solid var(--ddl-sky); outline-offset: 2px;
}
.ddl-tor-page .form-control,
.ddl-tor-page .selectize-input,
.ddl-tor-page .selectize-dropdown,
.ddl-tor-page .dataTables_wrapper input,
.ddl-tor-page .dataTables_wrapper select {
  color: var(--ddl-tor-ink) !important; border-color: var(--ddl-tor-line) !important;
  background: #fffdfa !important; color-scheme: light;
}
.ddl-tor-table-scroll { width: 100%; overflow-x: auto; border: 1px solid var(--ddl-tor-line); border-radius: 9px; }
.ddl-tor-table { width: 100%; min-width: 620px; border-collapse: collapse; font-size: 0.73rem; }
.ddl-tor-table th, .ddl-tor-table td { padding: 0.58rem 0.66rem; border-bottom: 1px solid var(--ddl-tor-line); text-align: left; }
.ddl-tor-table th { color: #5e4763; background: rgba(43,35,52,0.04); font-size: 0.63rem; letter-spacing: 0.04em; text-transform: uppercase; }
.ddl-tor-table tr:last-child td { border-bottom: 0; }
.ddl-tor-table .is-num { text-align: right; font-variant-numeric: tabular-nums; }
.ddl-tor-dt-top { display: flex; justify-content: flex-end; margin-bottom: 0.48rem; }
.ddl-tor-dt-top label { color: var(--ddl-tor-muted); font-size: 0.7rem; }
.ddl-tor-dt-top input { min-height: 38px; margin-left: 0.4rem; border: 1px solid var(--ddl-tor-line); border-radius: 7px; }
.ddl-tor-dt-bottom { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; margin-top: 0.45rem; color: var(--ddl-tor-muted); font-size: 0.68rem; }
.ddl-tor-page table.dataTable { border: 1px solid var(--ddl-tor-line) !important; border-radius: 8px; overflow: hidden; }
.ddl-tor-page table.dataTable thead th { color: #5e4763; background: rgba(43,35,52,0.045); font-size: 0.64rem; text-transform: uppercase; letter-spacing: 0.035em; }
.ddl-tor-page table.dataTable tbody tr,
.ddl-tor-page table.dataTable tbody td {
  color: var(--ddl-tor-ink) !important; background: var(--ddl-tor-card) !important;
}
.ddl-tor-page table.dataTable.stripe tbody tr.odd,
.ddl-tor-page table.dataTable.display tbody tr.odd,
.ddl-tor-page table.dataTable tbody tr:nth-child(odd) td { background: #faf7f2 !important; }
.ddl-tor-page table.dataTable tbody tr:hover td { background: #f2ece4 !important; }
.ddl-tor-page table.dataTable tbody td { padding-block: 0.5rem; vertical-align: middle; font-size: 0.73rem; }
.ddl-tor-page .ddl-tor-review-link { color: #6d3f72; font-weight: 780; }
.ddl-tor-page .dataTables_wrapper .dataTables_paginate .paginate_button.current {
  color: #fff !important; border-color: var(--ddl-tor-night-2) !important; background: var(--ddl-tor-night-2) !important;
}

/* Animals */
.ddl-tor-roster-controls { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; }
.ddl-tor-roster-controls .form-group { margin-bottom: 0.55rem; }
.ddl-tor-roster-note { margin: 0 0 0.7rem !important; font-size: 0.7rem; }
.ddl-tor-roster { padding: 0; overflow: hidden; }
.ddl-tor-roster > summary { padding-inline: 1rem; background: rgba(43,35,52,0.025); }
.ddl-tor-roster[open] > summary { border-bottom: 1px solid var(--ddl-tor-line); }
.ddl-tor-roster > div { padding: 0.85rem 1rem 1rem; }
.ddl-tor-empty {
  min-height: 130px; display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 0.35rem; padding: 1rem; border: 1px dashed rgba(43,35,52,0.22); border-radius: 10px;
  color: var(--ddl-tor-muted); text-align: center; background: rgba(255,255,255,0.42);
}
.ddl-tor-empty > svg { font-size: 1.45rem; color: #8a6f8e; }
.ddl-tor-empty h3, .ddl-tor-empty p { margin: 0; }
.ddl-tor-empty h3 { font-size: 1rem; }
.ddl-tor-empty p { font-size: 0.76rem; }
.ddl-tor-dossier { margin-top: 1.15rem; padding-top: 1rem; border-top: 1px solid var(--ddl-tor-line); }
.ddl-tor-dossier-title { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.ddl-tor-dossier-title h2 { display: flex; align-items: center; gap: 0.45rem; margin: 0; font-size: 1.45rem; }
.ddl-tor-dossier-nav { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 0.7rem; margin: 0.7rem 0; }
.ddl-tor-dossier-nav > strong { text-align: center; }
.ddl-tor-dossier-tabs { margin-bottom: 0.75rem; }
.ddl-tor-dossier-identity { display: grid; grid-template-columns: 150px 1fr; align-items: center; gap: 1rem; margin-bottom: 0.75rem; }
.ddl-tor-dossier-identity h3 { margin: 0; font-size: 1.65rem; }
.ddl-tor-dossier-identity p:not(.ddl-tor-eyebrow) { margin: 0.18rem 0 0.45rem; }
.ddl-tor-scute-diagram { width: 146px; margin: 0; padding: 0.35rem; border: 1px solid var(--ddl-tor-line); border-radius: 12px; background: #efe4d0; }
.ddl-tor-scute-diagram svg { width: 100%; display: block; }
.ddl-tor-scute-limbs { fill: #b59a72; stroke: #6e5940; stroke-width: 1.3; }
.ddl-tor-scute-shell { fill: #ccb285; stroke: #614d38; stroke-width: 2; }
.ddl-tor-scute-lines { fill: none; stroke: rgba(73,55,40,0.66); stroke-width: 1.25; }
.ddl-tor-scute-code { fill: #34273a; font: 800 12px ui-monospace, SFMono-Regular, Menlo, monospace; paint-order: stroke; stroke: rgba(239,228,208,.9); stroke-width: 4px; }
.ddl-tor-scute-diagram figcaption { display: flex; align-items: baseline; justify-content: space-between; gap: .3rem; padding: .15rem .28rem .1rem; }
.ddl-tor-scute-diagram figcaption strong { color: var(--ddl-tor-ink); font-size: .7rem; }
.ddl-tor-scute-diagram figcaption span { color: #6f5d46; font-size: .58rem; }
.ddl-tor-dossier-facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 0.55rem; margin-bottom: 0.75rem; }
.ddl-tor-dossier-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 0.7rem; }
.ddl-tor-mini-card { padding: 0.8rem; border: 1px solid var(--ddl-tor-line); border-radius: 10px; background: rgba(255,255,255,0.6); }
.ddl-tor-mini-card h4 { margin: 0 0 0.55rem; font-size: 0.82rem; }
.ddl-tor-mini-card dl { display: grid; grid-template-columns: auto 1fr; gap: 0.34rem 0.65rem; margin: 0; font-size: 0.72rem; }
.ddl-tor-mini-card dt { color: var(--ddl-tor-muted); } .ddl-tor-mini-card dd { margin: 0; color: var(--ddl-tor-ink); font-weight: 680; }
.ddl-tor-reference-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 0.7rem; }
.ddl-tor-reference-image { margin: 0; overflow: hidden; border: 1px solid var(--ddl-tor-line); border-radius: 10px; background: #e8ddc9; }
.ddl-tor-reference-image img { width: 100%; height: 210px; display: block; object-fit: cover; filter: sepia(.22) saturate(.72) contrast(1.03); }
.ddl-tor-reference-image:nth-child(2) img { object-position: 35% center; transform: scale(1.08); }
.ddl-tor-reference-image:nth-child(3) img { object-position: 68% center; transform: scale(1.13); }
.ddl-tor-reference-image figcaption { display: flex; flex-direction: column; padding: 0.55rem 0.65rem; }
.ddl-tor-reference-image figcaption strong { font-size: 0.75rem; }
.ddl-tor-reference-image figcaption span { color: var(--ddl-tor-muted); font-size: 0.65rem; }
.ddl-tor-reference-note { grid-column: 1/-1; margin: 0; font-size: 0.68rem; }
.ddl-tor-photo-empty { min-height: 300px; }

/* Movement map */
.ddl-tor-map-layout { display: grid; grid-template-columns: minmax(0, 3fr) minmax(240px, .82fr); gap: 0.8rem; align-items: start; }
.ddl-tor-map-card { padding: 0.85rem; }
.ddl-tor-map-window { margin: -0.2rem 0 0.6rem; border: 1px solid var(--ddl-tor-line); border-radius: 8px; background: rgba(255,255,255,0.5); }
.ddl-tor-map-window .form-group { padding: 0 0.8rem 0.55rem; margin: 0; }
.ddl-tor-map-controls { display: grid; gap: 0.7rem; }
.ddl-tor-map-controls .ddl-tor-card { margin: 0; }
.ddl-tor-map-controls .form-group { margin-bottom: 0.3rem; }
.ddl-tor-map-stage { position: relative; overflow: hidden; border: 1px solid rgba(43,35,52,0.2); border-radius: 10px; background: #211725; }
.ddl-tor-map-toolbar {
  min-height: 46px; display: flex; align-items: center; gap: 0.45rem; padding: 0.4rem 0.55rem;
  color: #f6ead6; border-bottom: 1px solid rgba(246,234,214,0.15); background: #2b1e30;
  font-size: 0.69rem;
}
.ddl-tor-map-toolbar > span { margin-right: auto; display: inline-flex; align-items: center; gap: 0.35rem; }
.ddl-tor-map-tool {
  min-height: 44px; display: inline-flex; align-items: center; gap: 0.32rem; padding: 0.3rem 0.52rem;
  border: 1px solid rgba(246,234,214,0.28); border-radius: 6px; color: #f6ead6;
  background: rgba(255,255,255,0.04); font-size: 0.66rem;
}
.ddl-tor-map-tool:is(:hover,:focus-visible) { border-color: var(--ddl-tor-gold); background: rgba(199,155,69,0.12); }
.ddl-tor-map-tool-icon { width: 44px; justify-content: center; padding-inline: 0; }
/* Page scroll survives an unzoomed map; a zoomed map owns the touch gesture. */
.ddl-tor-map-svg { width: 100%; height: clamp(460px, 62vh, 690px); display: block; touch-action: pan-y; user-select: none; }
.ddl-tor-map-stage.is-zoomed .ddl-tor-map-svg { touch-action: none; }
.ddl-tor-map-focus-hint {
  position: absolute;
  right: 0.55rem;
  bottom: 0.55rem;
  max-width: 205px;
  padding: 0.36rem 0.48rem;
  border: 1px solid rgba(246, 234, 214, 0.2);
  border-radius: 6px;
  color: rgba(246, 234, 214, 0.84);
  background: rgba(27, 20, 32, 0.87);
  font-size: 0.72rem;
  pointer-events: none;
}
.ddl-tor-map-svg [data-tor-map-viewport] { transform-origin: center; cursor: grab; }
.ddl-tor-map-svg.is-dragging [data-tor-map-viewport] { cursor: grabbing; }
.ddl-tor-map-ground { fill: #1b1420; }
.ddl-tor-map-grid-line { fill: none; stroke: rgba(245,236,219,0.055); stroke-width: 1; }
.ddl-tor-map-unit { fill: rgba(114,133,107,0.10); stroke: rgba(209,173,97,.8); stroke-width: 1.5; stroke-dasharray: 6 4; vector-effect: non-scaling-stroke; }
.ddl-tor-map-unit-label { fill: rgba(241,231,211,.84); font: 700 8px ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .04em; paint-order: stroke; stroke: #1b1420; stroke-width: 3px; }
.ddl-tor-map-trail { fill: none; stroke: rgba(188,202,205,0.66); stroke-width: 1.05; vector-effect: non-scaling-stroke; }
.ddl-tor-map-trail-label { fill: rgba(241,231,211,0.7); font: 7px ui-monospace, SFMono-Regular, Menlo, monospace; paint-order: stroke; stroke: #1b1420; stroke-width: 2px; }
.ddl-tor-map-range { fill: rgba(199,155,69,0.08); stroke: rgba(199,155,69,0.72); stroke-width: 1.1; vector-effect: non-scaling-stroke; }
.ddl-tor-map-range.is-selected { fill: rgba(199,155,69,.14); stroke-width: 1.8; stroke-dasharray: 6 4; }
.ddl-tor-map-fix { fill: #f3df9a; stroke: #2b1e30; stroke-width: 1; vector-effect: non-scaling-stroke; }
.ddl-tor-map-fix.is-cohort { opacity: 0.38; }.ddl-tor-map-fix.is-latest { fill: #d96f50; stroke: #fff5df; stroke-width: 1.8; }
.ddl-tor-map-north path, .ddl-tor-map-scale path { fill: none; stroke: #d9ba72; stroke-width: 1.2; vector-effect: non-scaling-stroke; }
.ddl-tor-map-north text, .ddl-tor-map-scale text { fill: #d9ba72; font: 8px ui-monospace, SFMono-Regular, Menlo, monospace; text-anchor: middle; }
.ddl-tor-map-legend { display: flex; flex-wrap: wrap; gap: 0.8rem; padding: 0.5rem 0.62rem; color: rgba(246,234,214,0.72); border-top: 1px solid rgba(246,234,214,0.14); font-size: 0.62rem; }
.ddl-tor-map-legend span::before { content: ""; display: inline-block; width: 16px; margin-right: 0.35rem; vertical-align: middle; border-top: 2px solid; }
.ddl-tor-map-legend .legend-demo::before { border-color: #efc76d; }.ddl-tor-map-legend .legend-range::before { border-color: #c79b45; border-top-style: dashed; }.ddl-tor-map-legend .legend-trail::before { border-color: #bfcbd0; }.ddl-tor-map-legend .legend-boundary::before { border-color: #d1ad61; border-top-style: dashed; }
.ddl-tor-map-card:fullscreen { width: 100vw; height: 100vh; padding: 0.7rem; border-radius: 0; background: var(--ddl-tor-ground); overflow: auto; }
.ddl-tor-map-card:fullscreen .ddl-tor-map-svg { height: calc(100vh - 145px); }
.ddl-tor-map-stage.is-playing .ddl-tor-map-fix.is-sequence {
  animation: ddl-tor-position-play 680ms cubic-bezier(.2,.8,.2,1) both;
  animation-delay: calc((var(--tor-sequence) - 1) * 4.6s / var(--tor-sequence-total));
}
.ddl-tor-locator-card { padding: .75rem; }
.ddl-tor-locator-svg { width: 100%; max-height: 190px; display: block; border-radius: 8px; background: #24192a; }
.ddl-tor-locator-ground { fill: #24192a; }
.ddl-tor-locator-boundary { fill: rgba(114,133,107,.14); stroke: #d1ad61; stroke-width: 3; }
.ddl-tor-locator-trail { fill: none; stroke: rgba(225,231,231,.66); stroke-width: 1.6; }
.ddl-tor-locator-card > p { margin: .45rem 0 0; font-size: .63rem; }
.ddl-tor-ledger-fold { margin-top: 0.85rem; padding: 0; }
.ddl-tor-ledger-fold > div { padding: 0.8rem; }

/* Health and charts */
.ddl-tor-health-headline { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.55rem; margin-bottom: 0.8rem; padding: 0.8rem 0.9rem; border-left: 4px solid var(--ddl-tor-sage); background: rgba(114,133,107,0.07); }
.ddl-tor-health-headline strong { color: var(--ddl-tor-ink); font-size: 1.1rem; }.ddl-tor-health-headline span { color: var(--ddl-tor-muted); }
.ddl-tor-health-grid { display: grid; grid-template-columns: minmax(220px,.62fr) minmax(0,1.38fr); gap: 0.8rem; }
.ddl-tor-health-coverage { display: grid; align-content: start; gap: 0.5rem; }
.ddl-tor-health-coverage .ddl-tor-card-head { margin-bottom: 0.2rem; }
.ddl-tor-health-chart-card .form-group { max-width: 320px; margin-bottom: 0.25rem; }
.ddl-tor-chart { width: 100%; margin: 0; }.ddl-tor-chart svg { width: 100%; min-height: 280px; display: block; }
.ddl-tor-chart-title { fill: var(--ddl-tor-ink); font: 700 15px system-ui, sans-serif; }
.ddl-tor-chart-sub { fill: var(--ddl-tor-muted); font: 11px system-ui, sans-serif; }
.ddl-tor-chart-grid { stroke: rgba(43,35,52,0.11); stroke-width: 1; }.ddl-tor-chart-axis-line { stroke: rgba(43,35,52,0.3); stroke-width: 1; }
.ddl-tor-chart-axis { fill: var(--ddl-tor-muted); font: 10px ui-monospace, SFMono-Regular, Menlo, monospace; }
.ddl-tor-chart-line { fill: none; stroke: #75527a; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.ddl-tor-chart-point { fill: #fffdfa; stroke: #75527a; stroke-width: 3; }
.ddl-tor-chart-bar { fill: #75527a; opacity: .86; }
.ddl-tor-chart-bar.is-incomplete {
  fill: #bca477; stroke: #75527a; stroke-width: 1.5; stroke-dasharray: 4 3; opacity: .72;
}
.ddl-tor-chart-incomplete {
  fill: #fff7df; stroke: #9a652e; stroke-width: 2.5; vector-effect: non-scaling-stroke;
}
.ddl-tor-chart figcaption { margin: -0.2rem 0 0; color: var(--ddl-tor-muted); font-size: 0.67rem; }
.ddl-tor-chart-twin { margin-top: 0.45rem; border-top: 1px solid var(--ddl-tor-line); }
.ddl-tor-health-selected { margin-top: 0.1rem; }.ddl-tor-selected-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.ddl-tor-selected-head h3 { margin: 0; font-size: 1.35rem; }.ddl-tor-health-selected .ddl-tor-stats { margin: 0.65rem 0; }

/* Data & methods */
.ddl-tor-breadcrumb { min-height: 28px; display: flex; align-items: center; margin: -0.8rem 0 0.7rem; color: var(--ddl-tor-muted); font-size: 0.67rem; }
.ddl-tor-breadcrumb > div, .ddl-tor-breadcrumb .shiny-html-output { display: flex; align-items: center; gap: 0.34rem; }
.ddl-tor-data-tabs { overflow-x: auto; margin-bottom: 0.8rem; scrollbar-width: thin; }
.ddl-tor-data-tabs .form-group { min-width: max-content; margin: 0; }
.ddl-tor-data-tabs .shiny-options-group { display: flex; flex-wrap: nowrap; gap: 0.15rem; }
.ddl-tor-data-tabs .radio-inline, .ddl-tor-data-tabs .form-check-inline { min-height: 44px; white-space: nowrap; }
.ddl-tor-data-panel > .ddl-tor-route-head { margin-top: 0.35rem; }
.ddl-tor-check-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 0.65rem; margin-bottom: 0.8rem; }
.ddl-tor-check-card { min-height: 150px; padding: 0.8rem; border: 1px solid var(--ddl-tor-line); border-radius: 10px; background: rgba(255,253,250,0.9); }
.ddl-tor-check-card-top { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.ddl-tor-check-card h3 { margin: 0.55rem 0 0.32rem; font-size: 0.84rem; line-height: 1.24; }.ddl-tor-check-card p { margin: 0; font-size: 0.7rem; }
.ddl-tor-rulebook { padding: 0; }.ddl-tor-rulebook > div { padding: 0.8rem; }
.ddl-tor-method-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0.7rem; }
.ddl-tor-method-grid .ddl-tor-card { margin: 0; }.ddl-tor-method-grid p { margin: 0.4rem 0 0; font-size: 0.75rem; }
.ddl-tor-report-answer { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.55rem; margin-bottom: 0.8rem; }
.ddl-tor-report-answer strong { font-size: 1.25rem; }.ddl-tor-report-answer span { color: var(--ddl-tor-muted); }
.ddl-tor-analysis-empty { min-height: 310px; }

@media (max-width: 980px) {
  body:has(.ddl-tor-page) .ddl-workspace-route-scroll { grid-template-columns: repeat(3,minmax(0,1fr)); }
  body:has(.ddl-tor-page) .ddl-workspace-route { min-height: 48px; }
  .ddl-tor-map-layout { grid-template-columns: 1fr; grid-template-areas: "controls" "map"; }
  .ddl-tor-map-card { grid-area: map; }.ddl-tor-map-controls { grid-area: controls; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ddl-tor-check-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

@media (max-width: 720px) {
  body:has(.ddl-tor-page) > .container-fluid { padding-inline: 0.6rem; }
  body:has(.ddl-tor-page) .ddl-header-workspace { min-height: 58px; padding: 0.42rem 0.55rem; }
  body:has(.ddl-tor-page) .ddl-header-workspace .ddl-brand-name { font-size: 0.82rem; }
  body:has(.ddl-tor-page) .ddl-header-workspace .ddl-cover-signin-note { display: block; }
  body:has(.ddl-tor-page) .ddl-header-workspace .ddl-cover-signin-button { min-height: 40px; }
  body:has(.ddl-tor-page) .ddl-workspace-nav { min-height: 60px; }
  body:has(.ddl-tor-page) .ddl-workspace-route-scroll {
    display: flex; overflow-x: auto; padding-bottom: 2px; scroll-snap-type: x proximity;
  }
  body:has(.ddl-tor-page) .ddl-workspace-route {
    flex: 0 0 auto; min-width: 132px; min-height: 48px; scroll-snap-align: start;
  }
  body:has(.ddl-tor-page) .ddl-main-workspace { padding-top: 1rem; }
  .ddl-tor-page { font-size: 0.9rem; }.ddl-tor-route-head { align-items: flex-start; }
  .ddl-tor-route-copy :is(h1, h2) { font-size: 2rem; }.ddl-tor-route-copy > p { font-size: 0.84rem; }
  .ddl-tor-start-page { padding: 0.85rem; }.ddl-tor-start-grid { grid-template-columns: 1fr; }
  .ddl-tor-start-task { min-height: 112px; grid-template-columns: 4px 48px minmax(0,1fr) auto; gap: 0.68rem; padding-right: 0.75rem; }
  .ddl-tor-start-icon { width: 44px; height: 44px; }.ddl-tor-start-copy strong { font-size: 1rem; }
  .ddl-tor-context { position: static; flex-direction: column; align-items: stretch; margin: -1rem 0 0.8rem; }
  .ddl-tor-context-summary { white-space: normal; }.ddl-tor-context-controls { min-width: 0; width: 100%; }
  .ddl-tor-answer-row, .ddl-tor-health-grid { grid-template-columns: 1fr; }
  .ddl-tor-stats { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .ddl-tor-stat { padding: 0.55rem; }.ddl-tor-stat strong { font-size: 1rem; }.ddl-tor-stat span { font-size: 0.7rem; }
  .ddl-tor-dt-bottom { flex-direction: column; align-items: flex-start; }
  .ddl-tor-roster-controls { align-items: flex-start; flex-direction: column; gap: 0; }
  .ddl-tor-dossier-identity { grid-template-columns: 92px 1fr; }.ddl-tor-scute-diagram { width: 88px; }
  .ddl-tor-dossier-facts { grid-template-columns: repeat(2,minmax(0,1fr)); }.ddl-tor-dossier-grid { grid-template-columns: 1fr; }
  .ddl-tor-dossier-tabs .shiny-options-group { display: grid; grid-template-columns: 1fr; }
  .ddl-tor-dossier-tabs .radio-inline, .ddl-tor-dossier-tabs .form-check-inline { width: 100%; min-height: 44px; }
  .ddl-tor-reference-grid { grid-template-columns: 1fr; }.ddl-tor-reference-image img { height: 230px; }
  .ddl-tor-map-controls { grid-template-columns: 1fr; }.ddl-tor-map-svg { height: min(72vh, 560px); }
  .ddl-tor-map-toolbar { flex-wrap: wrap; }.ddl-tor-map-toolbar > span { flex: 1 0 100%; }
  .ddl-tor-chart svg { min-height: 240px; }.ddl-tor-check-grid, .ddl-tor-method-grid { grid-template-columns: 1fr; }
  .ddl-tor-check-card { min-height: 0; }.ddl-tor-data-tabs { margin-inline: -0.15rem; }
}

@media (max-width: 430px) {
  .ddl-tor-stats { grid-template-columns: 1fr; }.ddl-tor-dossier-facts { grid-template-columns: 1fr 1fr; }
  .ddl-tor-context-controls { flex-direction: column; align-items: stretch; }.ddl-tor-context-dossier { width: 100%; }
  .ddl-tor-dossier-nav { grid-template-columns: 1fr 1fr; }.ddl-tor-dossier-nav > strong { grid-column: 1/-1; grid-row: 1; }
  .ddl-tor-route-head > .ddl-tor-pill { margin-top: 0.1rem; }
}

@media (prefers-reduced-motion: no-preference) {
  html.ddl-motion-ok .ddl-tor-page { animation: ddl-tor-page-in 260ms cubic-bezier(.2,.8,.2,1) both; }
  html.ddl-motion-ok .ddl-tor-start-task, html.ddl-motion-ok .ddl-tor-card,
  html.ddl-motion-ok .ddl-tor-btn, html.ddl-motion-ok .ddl-tor-map-tool {
    transition: transform 170ms cubic-bezier(.2,.8,.2,1), box-shadow 170ms ease,
      border-color 170ms ease, background-color 170ms ease;
  }
}

@keyframes ddl-tor-page-in { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: none; } }
@keyframes ddl-tor-track-play { from { stroke-dashoffset: 0; } to { stroke-dashoffset: -9000; } }
@keyframes ddl-tor-position-play {
  from { opacity: 0; transform: scale(.35); transform-origin: center; }
  65% { opacity: 1; transform: scale(1.8); }
  to { opacity: 1; transform: scale(1); }
}

/* ==========================================================================
   INVASIVE PLANTS PRODUCT WORKSPACE
   Fresh, demo-owned field-atlas treatment. Every rule is rooted in the
   product marker so this six-route workspace cannot restyle Tortoise or the
   still-independent Restoration surface.
   ========================================================================== */
body:has(.ddl-inv-product) {
  --ddl-inv-product-night: #102c34;
  --ddl-inv-product-night-2: #173d42;
  --ddl-inv-product-ink: #18343a;
  --ddl-inv-product-muted: #617175;
  --ddl-inv-product-bone: #f1eddf;
  --ddl-inv-product-paper: #fffdf4;
  --ddl-inv-product-line: rgba(24, 52, 58, 0.15);
  --ddl-inv-product-agave: #3d786c;
  --ddl-inv-product-sage: #7d9d6c;
  --ddl-inv-product-gold: #d0a557;
  --ddl-inv-product-rust: #ad5943;
  --ddl-inv-product-sky: #6e9aa2;
  --ddl-project-night: var(--ddl-inv-product-night);
  --ddl-project-paper: #f7f0df;
  --ddl-project-accent: var(--ddl-inv-product-gold);
  --ddl-project-accent-2: var(--ddl-inv-product-sage);
  --ddl-project-line: rgba(242, 236, 218, 0.16);
  color: var(--ddl-inv-product-ink);
  background:
    radial-gradient(circle at 6% 0%, rgba(62, 122, 108, 0.13), transparent 29rem),
    radial-gradient(circle at 96% 8%, rgba(208, 165, 87, 0.1), transparent 26rem),
    linear-gradient(rgba(24, 52, 58, 0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(24, 52, 58, 0.025) 1px, transparent 1px),
    var(--ddl-inv-product-bone);
  background-size: auto, auto, 48px 48px, 48px 48px, auto;
}
body:has(.ddl-inv-product) > .container-fluid {
  max-width: 1480px;
  padding-inline: clamp(0.75rem, 1.3vw, 1.1rem);
}
body:has(.ddl-inv-product) .demo-mark-strip-workspace {
  min-height: 24px;
  width: max-content;
  margin: 0 0 0.35rem;
  padding: 0.18rem 0.48rem;
  border: 1px solid rgba(24, 52, 58, 0.16);
  border-radius: 3px;
  color: var(--ddl-inv-product-muted);
  background: rgba(255, 253, 244, 0.76);
}
body:has(.ddl-inv-product) .demo-mark-workspace-text { color: inherit; font-size: 0.59rem; }
body:has(.ddl-inv-product) .ddl-header-workspace {
  min-height: 62px;
  margin: 0;
  padding: 0.52rem 0.82rem;
  color: #fbf6e8;
  border: 1px solid rgba(255, 255, 255, 0.09);
  border-radius: 10px 10px 0 0;
  background:
    radial-gradient(circle at 8% 0%, rgba(125, 157, 108, 0.22), transparent 15rem),
    linear-gradient(108deg, var(--ddl-inv-product-night), #174047 68%, #102c34);
  box-shadow: 0 8px 24px rgba(10, 35, 40, 0.2);
}
body:has(.ddl-inv-product) .ddl-header-workspace .ddl-brand-name { color: #fffaf0; font-size: 0.98rem; }
body:has(.ddl-inv-product) .ddl-header-workspace .ddl-brand-org,
body:has(.ddl-inv-product) .ddl-header-workspace .ddl-cover-signin-note { color: rgba(255, 250, 240, 0.66); }
body:has(.ddl-inv-product) .ddl-header-workspace .ddl-brand-frame { stroke: rgba(255, 250, 240, 0.7); }
body:has(.ddl-inv-product) .ddl-header-workspace .ddl-brand-contour { stroke: var(--ddl-inv-product-sage); }
body:has(.ddl-inv-product) .ddl-header-workspace .ddl-brand-trail { stroke: var(--ddl-inv-product-gold); }
body:has(.ddl-inv-product) .ddl-header-workspace .ddl-brand-nodes circle {
  fill: var(--ddl-inv-product-gold);
  stroke: var(--ddl-inv-product-night);
}
body:has(.ddl-inv-product) .ddl-header-workspace .ddl-cover-signin-button,
body:has(.ddl-inv-product) .ddl-header-workspace .ddl-theme-toggle {
  color: #fffaf0;
  border-color: rgba(255, 250, 240, 0.32);
  background: rgba(255, 255, 255, 0.035);
}
body:has(.ddl-inv-product) #ddl-theme-toggle { display: none; }

body:has(.ddl-inv-product) .ddl-workspace-nav {
  /* Identity stays VISIBLE — see the Tortoise nav note: the labelled
     "All projects" return is the explicit way back to the cover. */
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 0.6rem;
  min-height: 64px;
  padding: 8px 8px 8px 14px;
  border: 1px solid var(--ddl-inv-product-line);
  border-top: 0;
  color: var(--ddl-inv-product-ink);
  background: rgba(255, 253, 244, 0.95);
  box-shadow: 0 8px 22px rgba(24, 52, 58, 0.08);
}
body:has(.ddl-inv-product) .ddl-workspace-nav-identity { display: flex; }
body:has(.ddl-inv-product) .ddl-workspace-home { color: var(--ddl-inv-product-ink); }
body:has(.ddl-inv-product) .ddl-workspace-home:is(:hover, :focus-visible) {
  color: var(--ddl-inv-product-agave); background: rgba(63, 106, 113, 0.08);
}
body:has(.ddl-inv-product) .ddl-workspace-project-name { color: var(--ddl-inv-product-ink); }
body:has(.ddl-inv-product) .ddl-workspace-nav-rule { background: var(--ddl-inv-product-line); }
body:has(.ddl-inv-product) .ddl-workspace-route-scroll {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 5px;
  padding: 0;
  overflow: visible;
}
body:has(.ddl-inv-product) .ddl-workspace-route {
  min-width: 0;
  min-height: 47px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.46rem;
  padding: 0.52rem 0.58rem;
  border: 1px solid rgba(24, 52, 58, 0.12);
  border-radius: 9px;
  color: var(--ddl-inv-product-ink);
  background: rgba(255, 255, 255, 0.72);
  box-shadow: 0 1px 4px rgba(24, 52, 58, 0.05);
  text-align: center;
}
body:has(.ddl-inv-product) .ddl-workspace-route::after { display: none; }
body:has(.ddl-inv-product) .ddl-workspace-route-icon { display: inline-flex; color: var(--ddl-inv-product-agave); font-size: 1rem; }
body:has(.ddl-inv-product) .ddl-workspace-route-label { font-size: 0.78rem; font-weight: 760; }
body:has(.ddl-inv-product) .ddl-workspace-route:is(:hover, :focus-visible) {
  color: var(--ddl-inv-product-ink);
  border-color: rgba(61, 120, 108, 0.42);
  background: #fffef9;
  transform: translateY(-1px);
  box-shadow: 0 5px 14px rgba(24, 52, 58, 0.1);
}
body:has(.ddl-inv-product) .ddl-workspace-route.is-on {
  color: #fffaf0;
  border-color: var(--ddl-inv-product-night-2);
  background: linear-gradient(135deg, var(--ddl-inv-product-night-2), #27584f);
  box-shadow: 0 7px 18px rgba(16, 44, 52, 0.19);
}
body:has(.ddl-inv-product) .ddl-workspace-route.is-on .ddl-workspace-route-icon { color: #e0bd74; }
body:has(.ddl-inv-product) .ddl-main-workspace { color: var(--ddl-inv-product-ink); padding: 1.45rem 0 0.75rem; }
body:has(.ddl-inv-product) .ddl-hubviews { display: none; }
body:has(.ddl-inv-product) .ddl-footer-workspace { color: var(--ddl-inv-product-muted); }
body:has(.ddl-inv-product) .ddl-footer-workspace-row { border-top-color: var(--ddl-inv-product-line); }
body:has(.ddl-inv-product) .ddl-footer-build > summary { color: var(--ddl-inv-product-muted); }

.ddl-inv-product {
  width: 100%;
  max-width: 1260px;
  margin-inline: auto;
  color: var(--ddl-inv-product-ink);
  font-size: 0.91rem;
  line-height: 1.46;
}
.ddl-inv-product *, .ddl-inv-product *::before, .ddl-inv-product *::after { box-sizing: border-box; }
.ddl-inv-product :is(h1, h2, h3, h4) { color: var(--ddl-inv-product-ink); }
.ddl-inv-product p { color: var(--ddl-inv-product-muted); }
.ddl-inv-product a { text-underline-offset: 3px; }
.ddl-inv-product-route-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin: 0 0 0.9rem;
  padding-inline: 0.08rem;
}
.ddl-inv-product-route-copy { min-width: 0; }
.ddl-inv-product-route-copy :is(h1, h2) {
  margin: 0;
  font-size: clamp(1.9rem, 3.8vw, 3.1rem);
  font-weight: 650;
  line-height: 1.03;
  letter-spacing: -0.045em;
}
.ddl-inv-product-route-copy > p { max-width: 68ch; margin: 0.28rem 0 0; font-size: 0.9rem; }
.ddl-inv-product-eyebrow {
  margin: 0 0 0.2rem !important;
  color: var(--ddl-inv-product-agave) !important;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.62rem;
  font-weight: 800;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}
.ddl-inv-product-card {
  min-width: 0;
  margin: 0 0 1rem;
  padding: 1rem;
  border: 1px solid var(--ddl-inv-product-line);
  border-radius: 14px;
  background: color-mix(in srgb, var(--ddl-inv-product-paper) 96%, transparent);
  box-shadow: 0 1px 2px rgba(24, 52, 58, 0.05), 0 10px 30px rgba(24, 52, 58, 0.055);
}
.ddl-inv-product-card-head {
  min-height: 36px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.8rem;
  margin: -0.1rem 0 0.75rem;
  padding-bottom: 0.62rem;
  border-bottom: 1px solid var(--ddl-inv-product-line);
}
.ddl-inv-product-card-head > :first-child,
.ddl-inv-product-card-title { min-width: 0; display: flex; align-items: center; gap: 0.48rem; }
.ddl-inv-product-card-title > svg { color: var(--ddl-inv-product-agave); font-size: 1rem; flex: 0 0 auto; }
.ddl-inv-product-card-head :is(h2, h3), .ddl-inv-product-card-title :is(h2, h3) {
  margin: 0;
  font-size: 0.96rem;
  font-weight: 800;
}
.ddl-inv-product-asof {
  color: var(--ddl-inv-product-muted);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.62rem;
  letter-spacing: 0.04em;
}
.ddl-inv-product-actions { display: flex; flex-wrap: wrap; gap: 0.55rem; }
.ddl-inv-product-btn,
.ddl-inv-product-map-tool {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  padding: 0.5rem 0.78rem;
  border: 1px solid rgba(24, 52, 58, 0.21);
  border-radius: 8px;
  color: var(--ddl-inv-product-ink);
  background: rgba(255, 255, 255, 0.68);
  text-decoration: none;
  font-size: 0.78rem;
  font-weight: 750;
  cursor: pointer;
}
.ddl-inv-product-btn:is(:hover, :focus-visible),
.ddl-inv-product-map-tool:is(:hover, :focus-visible) {
  color: var(--ddl-inv-product-ink);
  border-color: var(--ddl-inv-product-agave);
  background: #fffef9;
}
.ddl-inv-product-btn-primary {
  color: #fffaf0;
  border-color: var(--ddl-inv-product-night-2);
  background: var(--ddl-inv-product-night-2);
}
.ddl-inv-product-btn-primary:is(:hover, :focus-visible) { color: #fff; background: #27584f; }
.ddl-inv-product-btn.is-primary {
  color: #fffaf0;
  border-color: var(--ddl-inv-product-night-2);
  background: var(--ddl-inv-product-night-2);
}
.ddl-inv-product-btn.is-primary:is(:hover, :focus-visible) { color: #fff; background: #27584f; }
.ddl-inv-product-btn.is-disabled { opacity: 0.38; pointer-events: none; }
.ddl-inv-product-link,
.ddl-inv-product-review-link {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  color: #2f6d62;
  font-weight: 770;
}
.ddl-inv-product-review-link { white-space: nowrap; text-decoration: none; }
.ddl-inv-product-pill {
  min-height: 28px;
  width: max-content;
  display: inline-flex;
  align-items: center;
  padding: 0.24rem 0.56rem;
  border: 1px solid var(--ddl-inv-product-line);
  border-radius: 999px;
  color: var(--ddl-inv-product-muted);
  background: rgba(255, 255, 255, 0.68);
  font-size: 0.68rem;
  font-weight: 790;
  white-space: nowrap;
}
.ddl-inv-product-pill.is-alert,
.ddl-inv-product-pill.is-due,
.ddl-inv-product-pill.is-attention { color: #833d2d; border-color: rgba(173, 89, 67, 0.36); background: rgba(173, 89, 67, 0.1); }
.ddl-inv-product-pill.is-watch { color: #77551c; border-color: rgba(208, 165, 87, 0.42); background: rgba(208, 165, 87, 0.14); }
.ddl-inv-product-pill.is-ok,
.ddl-inv-product-pill.is-complete { color: #315b4e; border-color: rgba(61, 120, 108, 0.4); background: rgba(61, 120, 108, 0.11); }
.ddl-inv-product-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.58rem; }
.ddl-inv-product-stat {
  min-width: 0;
  padding: 0.7rem 0.76rem;
  border-left: 3px solid rgba(24, 52, 58, 0.24);
  border-radius: 7px;
  background: rgba(24, 52, 58, 0.035);
}
.ddl-inv-product-stat.is-alert,
.ddl-inv-product-stat.is-attention { border-left-color: var(--ddl-inv-product-rust); }
.ddl-inv-product-stat.is-gold { border-left-color: var(--ddl-inv-product-gold); }
.ddl-inv-product-stat.is-agave { border-left-color: var(--ddl-inv-product-agave); }
.ddl-inv-product-stat strong {
  display: block;
  color: var(--ddl-inv-product-ink);
  font-size: 1.2rem;
  line-height: 1.05;
  font-variant-numeric: tabular-nums;
}
.ddl-inv-product-stat span { display: block; margin-top: 0.2rem; color: var(--ddl-inv-product-muted); font-size: 0.67rem; line-height: 1.25; }
.ddl-inv-product-note {
  display: flex;
  align-items: flex-start;
  gap: 0.52rem;
  margin: 0 0 0.95rem;
  padding: 0.62rem 0.74rem;
  border: 1px solid rgba(61, 120, 108, 0.23);
  border-radius: 9px;
  color: var(--ddl-inv-product-ink);
  background: rgba(61, 120, 108, 0.075);
  font-size: 0.76rem;
}
.ddl-inv-product-note > svg { margin-top: 0.1rem; color: var(--ddl-inv-product-agave); flex: 0 0 auto; }
.ddl-inv-product-note p { margin: 0; }
.ddl-inv-product-trustline {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.34rem;
  margin: 0 0 0.85rem;
  padding: 0.62rem 0.74rem;
  border: 1px solid rgba(61, 120, 108, 0.2);
  border-radius: 9px;
  color: var(--ddl-inv-product-ink);
  background: rgba(61, 120, 108, 0.07);
  font-size: 0.74rem;
}
.ddl-inv-product-trustline > svg { color: var(--ddl-inv-product-agave); }
.ddl-inv-product-trustline > span { color: var(--ddl-inv-product-muted); }

/* Zero-read start surface */
.ddl-inv-product-start {
  position: relative;
  overflow: hidden;
  padding: clamp(1rem, 2.4vw, 1.55rem);
  border: 1px solid var(--ddl-inv-product-line);
  border-radius: 20px;
  background:
    linear-gradient(116deg, rgba(255, 253, 244, 0.98), rgba(248, 246, 235, 0.92)),
    repeating-linear-gradient(0deg, transparent 0 33px, rgba(24, 52, 58, 0.025) 33px 34px);
  box-shadow: 0 16px 42px rgba(24, 52, 58, 0.09);
}
.ddl-inv-product-start::after {
  content: "";
  position: absolute;
  z-index: 0;
  inset: -18% -8% auto auto;
  width: 260px;
  aspect-ratio: 1;
  border: 1px solid rgba(61, 120, 108, 0.12);
  border-radius: 45% 55% 64% 36% / 46% 38% 62% 54%;
  box-shadow: inset 0 0 0 24px rgba(61, 120, 108, 0.025), inset 0 0 0 58px rgba(208, 165, 87, 0.025);
  transform: rotate(-18deg);
  pointer-events: none;
}
.ddl-inv-product-start > * { position: relative; z-index: 1; }
.ddl-inv-product-start .ddl-inv-product-route-copy :is(h1, h2) { font-size: clamp(2.35rem, 4.6vw, 3.85rem); }
.ddl-inv-product-start-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.72rem; }
.ddl-inv-product-start-task {
  position: relative;
  min-height: 126px;
  display: grid;
  grid-template-columns: 4px 54px minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.85rem;
  overflow: hidden;
  padding: 1rem 1rem 1rem 0;
  border: 1px solid var(--ddl-inv-product-line);
  border-radius: 18px;
  color: var(--ddl-inv-product-ink);
  background: rgba(255, 254, 249, 0.94);
  box-shadow: 0 6px 18px rgba(24, 52, 58, 0.055);
  text-decoration: none;
}
.ddl-inv-product-start-rail { align-self: stretch; width: 4px; border-radius: 0 4px 4px 0; background: var(--ddl-inv-product-agave); }
.ddl-inv-product-start-icon {
  width: 50px;
  height: 50px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  color: #fff9eb;
  background: linear-gradient(145deg, #397267, var(--ddl-inv-product-night));
  box-shadow: 0 8px 18px rgba(16, 44, 52, 0.18);
  font-size: 1.18rem;
}
.ddl-inv-product-start-copy { min-width: 0; display: flex; flex-direction: column; }
.ddl-inv-product-start-copy > span:first-child {
  color: var(--ddl-inv-product-agave);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.61rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.ddl-inv-product-start-copy strong { margin-top: 0.1rem; font-size: 1.08rem; line-height: 1.16; }
.ddl-inv-product-start-copy > span:last-child { margin-top: 0.25rem; color: var(--ddl-inv-product-muted); font-size: 0.78rem; }
.ddl-inv-product-start-arrow { color: var(--ddl-inv-product-agave); font-size: 1.1rem; }
.ddl-inv-product-start-task:is(:hover, :focus-visible) {
  color: var(--ddl-inv-product-ink);
  border-color: rgba(61, 120, 108, 0.46);
  transform: translateY(-3px);
  box-shadow: 0 14px 30px rgba(24, 52, 58, 0.12);
}
.ddl-inv-product-start-links { display: flex; flex-wrap: wrap; gap: 0.52rem; margin-top: 1rem; font-size: 0.73rem; }
.ddl-inv-product-start-links span:first-child { color: var(--ddl-inv-product-muted); font-weight: 730; }
.ddl-inv-product-start-links a { color: #2f6d62; }

/* Shared patch context */
.ddl-inv-product-context {
  position: sticky;
  z-index: 20;
  top: 0;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  margin: -1.45rem 0 1rem;
  padding: 0.55rem 0.72rem;
  border: 1px solid var(--ddl-inv-product-line);
  border-top: 0;
  border-radius: 0 0 10px 10px;
  background: rgba(255, 253, 244, 0.96);
  box-shadow: 0 7px 20px rgba(24, 52, 58, 0.085);
  backdrop-filter: blur(10px);
}
.ddl-inv-product-context-summary { margin: 0 0 0.18rem !important; color: var(--ddl-inv-product-muted); font-size: 0.7rem; font-style: italic; white-space: nowrap; }
.ddl-inv-product-context-summary > svg { margin-right: 0.25rem; color: var(--ddl-inv-product-agave); }
.ddl-inv-product-context-controls { min-width: min(410px, 100%); display: flex; align-items: flex-end; gap: 0.55rem; }
.ddl-inv-product-context-controls :is(.form-group, .shiny-input-container) { flex: 1 1 260px; margin: 0; }
.ddl-inv-product-context-controls label { margin-bottom: 0.12rem; color: var(--ddl-inv-product-ink); font-size: 0.67rem; font-weight: 770; }
.ddl-inv-product-context-controls .selectize-control { margin-bottom: 0; }
.ddl-inv-product-context-controls .selectize-input { min-height: 40px; border-color: var(--ddl-inv-product-line); border-radius: 8px; box-shadow: none; }
.ddl-inv-product-context > p {
  margin: 0 0 0.18rem;
  color: var(--ddl-inv-product-muted);
  font-size: 0.7rem;
  font-style: italic;
}
.ddl-inv-product-context > p > svg { margin-right: 0.25rem; color: var(--ddl-inv-product-agave); }
.ddl-inv-product-context > div {
  min-width: min(410px, 100%);
  display: flex;
  align-items: flex-end;
  gap: 0.55rem;
}
.ddl-inv-product-context > div :is(.form-group, .shiny-input-container) { flex: 1 1 260px; margin: 0; }
.ddl-inv-product-context > div label { margin-bottom: 0.12rem; color: var(--ddl-inv-product-ink); font-size: 0.67rem; font-weight: 770; }
.ddl-inv-product-context > div .selectize-control { margin-bottom: 0; }
.ddl-inv-product-context > div .selectize-input { min-height: 40px; border-color: var(--ddl-inv-product-line); border-radius: 8px; box-shadow: none; }

/* Inputs, filters and table twins */
.ddl-inv-product .radio-inline,
.ddl-inv-product .form-check-inline {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  margin: 0.15rem 0.25rem 0.15rem 0;
  padding: 0.4rem 0.64rem;
  border: 1px solid var(--ddl-inv-product-line);
  border-radius: 8px;
  color: var(--ddl-inv-product-ink);
  background: rgba(255, 255, 255, 0.66);
  font-size: 0.73rem;
  cursor: pointer;
}
.ddl-inv-product .radio-inline:has(input:checked),
.ddl-inv-product .form-check-inline:has(input:checked) {
  color: #fffaf0;
  border-color: var(--ddl-inv-product-night-2);
  background: var(--ddl-inv-product-night-2);
}
.ddl-inv-product .radio-inline input,
.ddl-inv-product .form-check-inline input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  opacity: 0;
  pointer-events: none;
}
.ddl-inv-product .radio-inline:has(input:focus-visible),
.ddl-inv-product .form-check-inline:has(input:focus-visible) { outline: 3px solid rgb(63, 106, 113); outline-offset: 2px; }
.ddl-inv-product :is(.form-control, .selectize-input, .selectize-dropdown, .dataTables_wrapper input, .dataTables_wrapper select) {
  color: var(--ddl-inv-product-ink) !important;
  border-color: var(--ddl-inv-product-line) !important;
  background: #fffdf4 !important;
  color-scheme: light;
}
.ddl-inv-product-table-scroll { width: 100%; overflow-x: auto; border: 1px solid var(--ddl-inv-product-line); border-radius: 10px; }
.ddl-inv-product-table { width: 100%; min-width: 660px; border-collapse: collapse; font-size: 0.73rem; }
.ddl-inv-product-table :is(th, td) { padding: 0.6rem 0.68rem; border-bottom: 1px solid var(--ddl-inv-product-line); text-align: left; vertical-align: middle; }
.ddl-inv-product-table th {
  color: #315e58;
  background: rgba(24, 52, 58, 0.045);
  font-size: 0.63rem;
  letter-spacing: 0.045em;
  text-transform: uppercase;
}
.ddl-inv-product-table tbody tr:last-child td { border-bottom: 0; }
.ddl-inv-product-table tbody tr:nth-child(even) td { background: rgba(61, 120, 108, 0.028); }
.ddl-inv-product-table tbody tr:is(:hover, :focus-within) td { background: rgba(61, 120, 108, 0.075); }
.ddl-inv-product-table .is-num { text-align: right; font-variant-numeric: tabular-nums; }
.ddl-inv-product table.dataTable { border: 1px solid var(--ddl-inv-product-line) !important; border-radius: 9px; overflow: hidden; }
.ddl-inv-product table.dataTable thead th { color: #315e58; background: rgba(24, 52, 58, 0.045); font-size: 0.64rem; letter-spacing: 0.035em; text-transform: uppercase; }
.ddl-inv-product table.dataTable tbody :is(tr, td) { color: var(--ddl-inv-product-ink) !important; background: var(--ddl-inv-product-paper) !important; }
.ddl-inv-product table.dataTable tbody tr:nth-child(odd) td { background: #faf8ed !important; }
.ddl-inv-product table.dataTable tbody tr:hover td { background: #eff3e9 !important; }
.ddl-inv-product table.dataTable tbody td { padding-block: 0.5rem; vertical-align: middle; font-size: 0.73rem; }
.ddl-inv-product .dataTables_wrapper {
  min-width: 0;
  max-width: 100%;
  overflow-x: hidden;
}
.ddl-inv-product .dataTables_scroll { max-width: 100%; }
.ddl-inv-product .dataTables_scrollBody { overflow-x: auto !important; }
.ddl-inv-product .dataTables_wrapper .dataTables_paginate .paginate_button.current {
  color: #fff !important;
  border-color: var(--ddl-inv-product-night-2) !important;
  background: var(--ddl-inv-product-night-2) !important;
}
.ddl-inv-product-dt-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  margin-top: 0.5rem;
  color: var(--ddl-inv-product-muted);
  font-size: 0.68rem;
}
.ddl-inv-product-dt { width: 100% !important; }
.ddl-inv-product-filter-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 0.65rem; margin: 0 0 0.7rem; }
.ddl-inv-product-filter-row .form-group { min-width: 185px; margin: 0; }

/* Action queue and patch record */
.ddl-inv-product-action-layout { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(280px, 0.75fr); gap: 0.85rem; align-items: start; }
.ddl-inv-product-hero {
  display: grid;
  grid-template-columns: minmax(220px, 0.72fr) minmax(0, 1.28fr);
  align-items: center;
  gap: 1rem;
  border-left: 4px solid var(--ddl-inv-product-agave);
}
.ddl-inv-product-hero h2 { margin: 0; font-size: clamp(1.28rem, 2.4vw, 1.72rem); }
.ddl-inv-product-hero p:not(.ddl-inv-product-eyebrow) { margin: 0.2rem 0 0; }
.ddl-inv-product-filters {
  display: grid;
  grid-template-columns: minmax(180px, 1.2fr) repeat(3, minmax(150px, 0.8fr));
  gap: 0.58rem;
  margin: 0 0 0.7rem;
  padding: 0.65rem;
  border: 1px solid var(--ddl-inv-product-line);
  border-radius: 9px;
  background: rgba(24, 52, 58, 0.025);
}
.ddl-inv-product-filters .form-group { min-width: 0; margin: 0; }
.ddl-inv-product-filters label { color: var(--ddl-inv-product-ink); font-size: 0.66rem; font-weight: 760; }
.ddl-inv-product-queue-actions {
  min-height: 50px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-bottom: 0.65rem;
}
.ddl-inv-product-queue-actions > :first-child { margin-right: auto; color: var(--ddl-inv-product-muted); font-size: 0.7rem; }
.ddl-inv-product-queue-status { margin: 0; color: var(--ddl-inv-product-muted); font-size: 0.7rem; }
.ddl-inv-product-orientation { padding: 0; overflow: hidden; }
.ddl-inv-product-orientation > summary,
.ddl-inv-product-roster > summary,
.ddl-inv-product-map-ledger > summary {
  min-height: 44px;
  display: flex;
  align-items: center;
  gap: 0.42rem;
  padding: 0.68rem 0.85rem;
  color: var(--ddl-inv-product-ink);
  cursor: pointer;
  font-size: 0.76rem;
  font-weight: 790;
}
.ddl-inv-product-orientation > :not(summary) { margin-inline: 0.85rem; }
.ddl-inv-product-orientation > :last-child { margin-bottom: 0.85rem; }
.ddl-inv-product-queue-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.65rem; margin-bottom: 0.8rem; }
.ddl-inv-product-queue-card {
  min-width: 0;
  padding: 0.82rem;
  border: 1px solid var(--ddl-inv-product-line);
  border-top: 4px solid var(--ddl-inv-product-agave);
  border-radius: 11px;
  background: rgba(255, 254, 248, 0.92);
  box-shadow: 0 6px 18px rgba(24, 52, 58, 0.055);
}
.ddl-inv-product-queue-card.is-alert { border-top-color: var(--ddl-inv-product-rust); }
.ddl-inv-product-queue-card.is-watch { border-top-color: var(--ddl-inv-product-gold); }
.ddl-inv-product-queue-card h3 { margin: 0.5rem 0 0.3rem; font-size: 0.9rem; }
.ddl-inv-product-queue-card p { margin: 0; font-size: 0.72rem; }
.ddl-inv-product-queue-card strong { font-variant-numeric: tabular-nums; }
.ddl-inv-product-selected {
  scroll-margin-top: 90px;
  border-color: rgba(61, 120, 108, 0.34);
  box-shadow: 0 1px 2px rgba(24, 52, 58, 0.05), 0 12px 34px rgba(61, 120, 108, 0.1);
}
.ddl-inv-product-selected:focus { outline: 3px solid rgb(63, 106, 113); outline-offset: 3px; }
.ddl-inv-product-selected-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.ddl-inv-product-selected-head h2 { margin: 0; font-size: 1.4rem; }
.ddl-inv-product-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.62rem; }
.ddl-inv-product-detail {
  min-width: 0;
  padding: 0.68rem;
  border-radius: 8px;
  background: rgba(24, 52, 58, 0.035);
}
.ddl-inv-product-detail span { display: block; color: var(--ddl-inv-product-muted); font-size: 0.63rem; }
.ddl-inv-product-detail strong { display: block; margin-top: 0.14rem; color: var(--ddl-inv-product-ink); font-size: 0.78rem; }
.ddl-inv-product-dossier {
  scroll-margin-top: 88px;
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--ddl-inv-product-line);
}
.ddl-inv-product-dossier:focus { outline: 3px solid rgb(63, 106, 113); outline-offset: 3px; }
.ddl-inv-product-dossier-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.8rem;
}
.ddl-inv-product-dossier-title h2 { display: flex; align-items: center; gap: 0.45rem; margin: 0; font-size: 1.42rem; }
.ddl-inv-product-dossier-title h2 > svg { color: var(--ddl-inv-product-agave); }
.ddl-inv-product-dossier-nav {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 0.7rem;
  margin: 0.72rem 0;
}
.ddl-inv-product-dossier-nav > strong { color: var(--ddl-inv-product-ink); text-align: center; }
.ddl-inv-product-dossier-tabs { margin-bottom: 0.75rem; }
.ddl-inv-product-dossier-tabs .shiny-options-group { display: flex; flex-wrap: wrap; gap: 0.16rem; }
.ddl-inv-product-dossier-tabs :is(.radio-inline, .form-check-inline) { min-height: 44px; }

/* Local operational map */
.ddl-inv-product-map-layout { display: grid; grid-template-columns: minmax(0, 3fr) minmax(250px, 0.86fr); gap: 0.82rem; align-items: start; }
.ddl-inv-product-map-card { padding: 0.85rem; }
.ddl-inv-product-map-sidebar { display: grid; gap: 0.7rem; }
.ddl-inv-product-map-sidebar .ddl-inv-product-card { margin: 0; }
.ddl-inv-product-map-controls { display: grid; align-content: start; gap: 0.7rem; }
.ddl-inv-product-map-controls .ddl-inv-product-card { margin: 0; }
.ddl-inv-product-map-controls .form-group { margin-bottom: 0.55rem; }
.ddl-inv-product-map-stage {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(238, 239, 218, 0.15);
  border-radius: 11px;
  color: #f5efd9;
  background: var(--ddl-inv-product-night);
}
.ddl-inv-product-map-popup {
  position: absolute;
  z-index: 3;
  top: 58px;
  right: 10px;
  width: min(220px, calc(100% - 20px));
  display: grid;
  gap: 0.12rem;
  padding: 0.68rem 0.74rem;
  border: 1px solid rgba(255, 241, 189, 0.65);
  border-radius: 9px;
  color: #fff8df;
  background: rgba(7, 28, 34, 0.92);
  box-shadow: 0 10px 28px rgba(2, 18, 23, 0.28);
  pointer-events: none;
}
.ddl-inv-product-map-popup :is(p, strong, span) { margin: 0; }
.ddl-inv-product-map-popup strong { color: #fff1bd; font-size: 1rem; }
.ddl-inv-product-map-popup span { color: rgba(245, 239, 217, 0.78); font-size: 0.68rem; }
.ddl-inv-product-map-toolbar {
  min-height: 48px;
  display: flex;
  align-items: center;
  gap: 0.42rem;
  padding: 0.38rem 0.46rem;
  border-bottom: 1px solid rgba(245, 239, 217, 0.13);
  background: rgba(7, 28, 34, 0.97);
}
.ddl-inv-product-map-toolbar > span {
  min-width: 0;
  margin-right: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  color: rgba(245, 239, 217, 0.76);
  font-size: 0.67rem;
}
.ddl-inv-product-map-tool {
  min-width: 44px;
  padding-inline: 0.65rem;
  color: #f7f0df;
  border-color: rgba(247, 240, 223, 0.24);
  background: rgba(255, 255, 255, 0.025);
}
.ddl-inv-product-map-tool:is(:hover, :focus-visible) { color: #fffaf0; border-color: var(--ddl-inv-product-gold); background: rgba(208, 165, 87, 0.12); }
/* The page keeps scrolling over an unzoomed map (pan-y); only a zoomed map owns
   the touch gesture. Blocking touch on the whole stage trapped phone readers. */
.ddl-inv-product-map-svg { width: 100%; height: clamp(470px, 63vh, 700px); display: block; background: #102c34; touch-action: pan-y; user-select: none; }
.ddl-inv-product-map-stage.is-zoomed .ddl-inv-product-map-svg { touch-action: none; }
.ddl-inv-product-map-svg [data-inv-product-map-viewport] { transform-origin: center; cursor: grab; }
.ddl-inv-product-map-svg.is-dragging [data-inv-product-map-viewport] { cursor: grabbing; }
.ddl-inv-product-map-ground { fill: #102c34; }
.ddl-inv-product-map-grid-line,
.ddl-inv-product-map-grid { fill: none; stroke: rgba(247, 240, 223, 0.065); stroke-width: 1; vector-effect: non-scaling-stroke; }
.ddl-inv-product-map-panel {
  fill: rgba(125, 157, 108, 0.07);
  stroke: rgba(219, 187, 117, 0.72);
  stroke-width: 1.4;
  stroke-dasharray: 6 4;
  vector-effect: non-scaling-stroke;
}
.ddl-inv-product-map-panel-grid { fill-opacity: 0.95; stroke: none; }
.ddl-inv-product-map-unit {
  fill: rgba(125, 157, 108, 0.075);
  stroke: rgba(219, 187, 117, 0.74);
  stroke-width: 1.3;
  stroke-dasharray: 6 4;
  vector-effect: non-scaling-stroke;
}
.ddl-inv-product-map-route { fill: none; stroke: rgba(211, 224, 214, 0.54); stroke-width: 1.25; vector-effect: non-scaling-stroke; }
.ddl-inv-product-map-patch {
  fill: rgba(101, 157, 118, 0.35);
  stroke: #9dc78e;
  stroke-width: 1.2;
  vector-effect: non-scaling-stroke;
}
.ddl-inv-product-map-patch.is-point { fill: #e4bc6d; stroke: #fff4d7; }
.ddl-inv-product-map-patch.is-due { fill: rgba(190, 93, 65, 0.48); stroke: #ec9679; }
.ddl-inv-product-map-patch.is-selected {
  fill: rgba(226, 190, 111, 0.5);
  stroke: #fff1bd;
  stroke-width: 2.4;
  filter: drop-shadow(0 0 5px rgba(255, 241, 189, 0.62));
}
.ddl-inv-product-map-polygon {
  fill: rgba(101, 157, 118, 0.36);
  stroke: #9dc78e;
  stroke-width: 1.25;
  vector-effect: non-scaling-stroke;
}
.ddl-inv-product-map-point {
  fill: #d8b267;
  stroke: #fff1cb;
  stroke-width: 1.1;
  vector-effect: non-scaling-stroke;
}
.ddl-inv-product-map-polygon.is-candidate,
.ddl-inv-product-map-point.is-candidate { fill: rgba(190, 93, 65, 0.65); stroke: #f0a083; }
.ddl-inv-product-map-polygon.is-other,
.ddl-inv-product-map-point.is-other { opacity: 0.68; }
.ddl-inv-product-map-polygon.is-selected,
.ddl-inv-product-map-point.is-selected {
  fill: rgba(226, 190, 111, 0.78);
  stroke: #fff1bd;
  stroke-width: 2.5;
  opacity: 1;
  filter: drop-shadow(0 0 5px rgba(255, 241, 189, 0.72));
}
.ddl-inv-product-map-label {
  fill: rgba(247, 240, 223, 0.83);
  font: 700 8px ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: 0.03em;
  paint-order: stroke;
  stroke: #102c34;
  stroke-width: 3px;
}
.ddl-inv-product-map-north :is(path, line),
.ddl-inv-product-map-scale :is(path, line) { fill: none; stroke: #dfbd73; stroke-width: 1.3; vector-effect: non-scaling-stroke; }
.ddl-inv-product-map-north text,
.ddl-inv-product-map-scale text { fill: #dfbd73; font: 8px ui-monospace, SFMono-Regular, Menlo, monospace; text-anchor: middle; }
.ddl-inv-product-map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.82rem;
  padding: 0.5rem 0.62rem;
  border-top: 1px solid rgba(245, 239, 217, 0.13);
  color: rgba(245, 239, 217, 0.72);
  font-size: 0.62rem;
}
.ddl-inv-product-map-legend span::before {
  content: "";
  width: 16px;
  display: inline-block;
  margin-right: 0.35rem;
  vertical-align: middle;
  border-top: 2px solid #9dc78e;
}
.ddl-inv-product-map-legend .is-due::before { border-color: #ec9679; }
.ddl-inv-product-map-legend .is-selected::before { border-color: #fff1bd; border-top-width: 3px; }
.ddl-inv-product-map-legend .is-boundary::before { border-color: #dbbb75; border-top-style: dashed; }
.ddl-inv-product-map-legend .is-candidate::before { border-color: #f0a083; }
.ddl-inv-product-map-legend .is-other::before { border-color: #9dc78e; opacity: 0.68; }
.ddl-inv-product-map-legend .is-polygon::before { border-color: #9dc78e; border-top-width: 5px; }
.ddl-inv-product-map-legend .is-point::before { width: 8px; height: 8px; border: 0; border-radius: 50%; background: #d8b267; }
.ddl-inv-product-map-focus-hint {
  position: absolute;
  right: 0.55rem;
  bottom: 0.55rem;
  max-width: 205px;
  padding: 0.35rem 0.48rem;
  border: 1px solid rgba(245, 239, 217, 0.2);
  border-radius: 6px;
  color: rgba(245, 239, 217, 0.82);
  background: rgba(7, 28, 34, 0.86);
  font-size: 0.72rem;
  pointer-events: none;
}
.ddl-inv-product-map-card:fullscreen { width: 100vw; height: 100vh; padding: 0.7rem; border-radius: 0; background: var(--ddl-inv-product-bone); overflow: auto; }
.ddl-inv-product-map-card:fullscreen .ddl-inv-product-map-svg { height: calc(100vh - 145px); }
.ddl-inv-product-map-ledger { padding: 0; overflow: hidden; }
.ddl-inv-product-map-ledger > .shiny-html-output,
.ddl-inv-product-map-ledger > div { padding: 0 0.85rem 0.85rem; }
.ddl-inv-product-locator { padding: 0.72rem; }
.ddl-inv-product-locator-svg { width: 100%; max-height: 195px; display: block; border-radius: 8px; background: #123039; }
.ddl-inv-product-locator-ground { fill: #123039; }
.ddl-inv-product-locator-boundary { fill: rgba(125, 157, 108, 0.13); stroke: #d9b56d; stroke-width: 3; }
.ddl-inv-product-locator-trail { fill: none; stroke: rgba(226, 233, 220, 0.66); stroke-width: 1.6; }
.ddl-inv-product-locator > p { margin: 0.45rem 0 0; font-size: 0.63rem; }

/* Outcomes and scientific table twins */
.ddl-inv-product-outcome-grid { display: grid; grid-template-columns: minmax(225px, 0.42fr) minmax(0, 1.58fr); gap: 0.7rem; margin-bottom: 0.9rem; align-items: start; }
.ddl-inv-product-outcome-menu { position: sticky; top: 84px; }
.ddl-inv-product-outcome-menu .shiny-options-group { display: grid; gap: 0.24rem; }
.ddl-inv-product-outcome-menu :is(.radio-inline, .form-check-inline) { width: 100%; margin: 0; }
.ddl-inv-product-outcome-view { min-width: 0; }
.ddl-inv-product-outcome-card {
  min-width: 0;
  padding: 0.86rem;
  border: 1px solid var(--ddl-inv-product-line);
  border-radius: 11px;
  background: rgba(255, 254, 248, 0.92);
}
.ddl-inv-product-outcome-card > span { color: var(--ddl-inv-product-muted); font-size: 0.65rem; }
.ddl-inv-product-outcome-card > strong { display: block; margin-top: 0.14rem; color: var(--ddl-inv-product-ink); font-size: 1.28rem; font-variant-numeric: tabular-nums; }
.ddl-inv-product-outcome-card > p { margin: 0.28rem 0 0; font-size: 0.7rem; }
.ddl-inv-product-chart-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.78rem; }
.ddl-inv-product-chart { width: 100%; margin: 0; }
.ddl-inv-product-chart svg { width: 100%; min-height: 285px; display: block; }
.ddl-inv-product-chart-title { fill: var(--ddl-inv-product-ink); font: 700 15px system-ui, sans-serif; }
.ddl-inv-product-chart-sub { fill: var(--ddl-inv-product-muted); font: 11px system-ui, sans-serif; }
.ddl-inv-product-chart-gridline { stroke: rgba(24, 52, 58, 0.12); stroke-width: 1; }
.ddl-inv-product-chart-axis-line { stroke: rgba(24, 52, 58, 0.32); stroke-width: 1; }
.ddl-inv-product-chart-axis { fill: var(--ddl-inv-product-muted); font: 10px ui-monospace, SFMono-Regular, Menlo, monospace; }
.ddl-inv-product-chart-bar { fill: var(--ddl-inv-product-agave); }
.ddl-inv-product-chart-bar.is-later { fill: var(--ddl-inv-product-sage); }
.ddl-inv-product-chart-bar.is-unknown { fill: rgba(97, 113, 117, 0.44); stroke: rgba(24, 52, 58, 0.4); stroke-dasharray: 4 3; }
.ddl-inv-product-chart-line { fill: none; stroke: var(--ddl-inv-product-agave); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.ddl-inv-product-chart-point { fill: #fffdf4; stroke: var(--ddl-inv-product-agave); stroke-width: 3; }
.ddl-inv-product-chart-track { fill: rgba(24, 52, 58, 0.07); }
.ddl-inv-product-chart-label { fill: var(--ddl-inv-product-muted); font: 10px system-ui, sans-serif; }
.ddl-inv-product-chart-value { fill: var(--ddl-inv-product-ink); font: 700 10px ui-monospace, SFMono-Regular, Menlo, monospace; }
.ddl-inv-product-chart figcaption { margin: 0.2rem 0 0; color: var(--ddl-inv-product-muted); font-size: 0.67rem; }
.ddl-inv-product-chart-twin { margin-top: 0.5rem; border-top: 1px solid var(--ddl-inv-product-line); }
.ddl-inv-product-chart-twin > summary,
.ddl-inv-product-fold > summary {
  min-height: 44px;
  display: flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.56rem 0.2rem;
  color: var(--ddl-inv-product-ink);
  cursor: pointer;
  font-size: 0.74rem;
  font-weight: 780;
}

/* Data & methods room */
.ddl-inv-product-breadcrumb {
  min-height: 28px;
  display: flex;
  align-items: center;
  margin: -0.8rem 0 0.7rem;
  color: var(--ddl-inv-product-muted);
  font-size: 0.67rem;
}
.ddl-inv-product-breadcrumb > div,
.ddl-inv-product-breadcrumb .shiny-html-output { display: flex; align-items: center; gap: 0.34rem; }
.ddl-inv-product-data-tabs { overflow-x: auto; margin-bottom: 0.8rem; scrollbar-width: thin; }
.ddl-inv-product-data-tabs .form-group { min-width: max-content; margin: 0; }
.ddl-inv-product-data-tabs .shiny-options-group { display: flex; flex-wrap: nowrap; gap: 0.15rem; }
.ddl-inv-product-data-tabs :is(.radio-inline, .form-check-inline) { min-height: 44px; white-space: nowrap; }
.ddl-inv-product-data-panel > .ddl-inv-product-route-head { margin-top: 0.35rem; }
.ddl-inv-product-check-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.65rem; margin-bottom: 0.8rem; }
.ddl-inv-product-check-card {
  min-height: 145px;
  padding: 0.82rem;
  border: 1px solid var(--ddl-inv-product-line);
  border-radius: 10px;
  background: rgba(255, 253, 244, 0.92);
}
.ddl-inv-product-check-card-top { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.ddl-inv-product-check-severity {
  color: var(--ddl-inv-product-muted);
  font-size: 0.64rem;
  font-weight: 780;
  letter-spacing: 0.045em;
  text-transform: uppercase;
}
.ddl-inv-product-check-card h3 { margin: 0.55rem 0 0.32rem; font-size: 0.84rem; line-height: 1.24; }
.ddl-inv-product-check-card p { margin: 0; font-size: 0.7rem; }
.ddl-inv-product-check-counts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.42rem;
  margin: 0 0 0.48rem;
}
.ddl-inv-product-check-counts span {
  display: grid;
  padding: 0.42rem 0.48rem;
  border: 1px solid var(--ddl-inv-product-line);
  border-radius: 8px;
  color: var(--ddl-inv-product-muted);
  background: rgba(24, 52, 58, 0.025);
  font-size: 0.64rem;
}
.ddl-inv-product-check-counts strong { color: var(--ddl-inv-product-ink); font-size: 0.88rem; }
.ddl-inv-product-rulebook { padding: 0; overflow: hidden; }
.ddl-inv-product-rulebook > summary {
  min-height: 44px;
  display: flex;
  align-items: center;
  padding: 0.62rem 0.82rem;
  color: var(--ddl-inv-product-ink);
  cursor: pointer;
  font-size: 0.75rem;
  font-weight: 790;
}
.ddl-inv-product-rulebook > :not(summary) { margin-inline: 0.82rem; }
.ddl-inv-product-rulebook > :last-child { margin-bottom: 0.82rem; }
.ddl-inv-product-method-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.7rem; }
.ddl-inv-product-method-grid .ddl-inv-product-card { margin: 0; }
.ddl-inv-product-method-grid p { margin: 0.4rem 0 0; font-size: 0.75rem; }
.ddl-inv-product-report-answer {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-bottom: 0.8rem;
}
.ddl-inv-product-report-answer strong { color: var(--ddl-inv-product-ink); font-size: 1.2rem; }
.ddl-inv-product-report-answer span { color: var(--ddl-inv-product-muted); }
.ddl-inv-product-empty {
  min-height: 150px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: 1rem;
  border: 1px dashed rgba(24, 52, 58, 0.24);
  border-radius: 10px;
  color: var(--ddl-inv-product-muted);
  text-align: center;
  background: rgba(255, 255, 255, 0.42);
}
.ddl-inv-product-empty > svg { color: var(--ddl-inv-product-agave); font-size: 1.45rem; }
.ddl-inv-product-empty :is(h2, h3, p) { margin: 0; }
.ddl-inv-product-empty :is(h2, h3) { font-size: 1rem; }
.ddl-inv-product-empty p { font-size: 0.76rem; }

@media (max-width: 1040px) {
  body:has(.ddl-inv-product) .ddl-workspace-route-scroll { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body:has(.ddl-inv-product) .ddl-workspace-route { min-height: 48px; }
  .ddl-inv-product-action-layout { grid-template-columns: 1fr; }
  .ddl-inv-product-map-layout { grid-template-columns: 1fr; grid-template-areas: "sidebar" "map"; }
  .ddl-inv-product-map-card { grid-area: map; }
  .ddl-inv-product-map-sidebar { grid-area: sidebar; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ddl-inv-product-map-controls { grid-area: sidebar; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
  body:has(.ddl-inv-product) > .container-fluid { padding-inline: 0.6rem; }
  body:has(.ddl-inv-product) .ddl-header-workspace { min-height: 58px; padding: 0.42rem 0.55rem; }
  body:has(.ddl-inv-product) .ddl-header-workspace .ddl-brand-name { font-size: 0.82rem; }
  body:has(.ddl-inv-product) .ddl-header-workspace .ddl-cover-signin-note { display: block; }
  body:has(.ddl-inv-product) .ddl-header-workspace .ddl-cover-signin-button { min-height: 40px; }
  body:has(.ddl-inv-product) .ddl-workspace-nav { min-height: 60px; }
  body:has(.ddl-inv-product) .ddl-workspace-route-scroll {
    display: flex;
    overflow-x: auto;
    padding-bottom: 2px;
    scroll-snap-type: x proximity;
    scrollbar-width: thin;
  }
  body:has(.ddl-inv-product) .ddl-workspace-route {
    flex: 0 0 auto;
    min-width: 132px;
    min-height: 48px;
    scroll-snap-align: start;
  }
  body:has(.ddl-inv-product) .ddl-main-workspace { padding-top: 1rem; }
  .ddl-inv-product { min-width: 0; font-size: 0.9rem; }
  .ddl-inv-product-route-head { align-items: flex-start; }
  .ddl-inv-product-route-copy :is(h1, h2) { font-size: 2rem; }
  .ddl-inv-product-route-copy > p { font-size: 0.84rem; }
  .ddl-inv-product-start { padding: 0.85rem; }
  .ddl-inv-product-start-grid { grid-template-columns: 1fr; }
  .ddl-inv-product-start-task { min-height: 110px; grid-template-columns: 4px 48px minmax(0, 1fr) auto; gap: 0.68rem; padding-right: 0.75rem; }
  .ddl-inv-product-start-icon { width: 44px; height: 44px; }
  .ddl-inv-product-start-copy strong { font-size: 1rem; }
  .ddl-inv-product-context { position: static; flex-direction: column; align-items: stretch; margin: -1rem 0 0.8rem; }
  .ddl-inv-product-context-summary { white-space: normal; }
  .ddl-inv-product-context-controls { min-width: 0; width: 100%; }
  .ddl-inv-product-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ddl-inv-product-stat { padding: 0.56rem; }
  .ddl-inv-product-stat strong { font-size: 1rem; }
  .ddl-inv-product-stat span { font-size: 0.7rem; }
  .ddl-inv-product-queue-grid,
  .ddl-inv-product-outcome-grid { grid-template-columns: 1fr; }
  .ddl-inv-product-hero { grid-template-columns: 1fr; }
  .ddl-inv-product-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ddl-inv-product-map-sidebar,
  .ddl-inv-product-map-controls,
  .ddl-inv-product-chart-grid,
  .ddl-inv-product-method-grid,
  .ddl-inv-product-check-grid { grid-template-columns: 1fr; }
  .ddl-inv-product-map-svg { height: min(72vh, 570px); }
  .ddl-inv-product-map-toolbar { flex-wrap: wrap; }
  .ddl-inv-product-map-toolbar > span { flex: 1 0 100%; }
  .ddl-inv-product-chart svg { min-height: 240px; }
  .ddl-inv-product-check-card { min-height: 0; }
  .ddl-inv-product-data-tabs { margin-inline: -0.15rem; }
  .ddl-inv-product-table-scroll { overscroll-behavior-inline: contain; }
  .ddl-inv-product-dossier-title { align-items: flex-start; }
  .ddl-inv-product-dt-bottom { flex-wrap: wrap; }
  .ddl-inv-product .dataTables_paginate { max-width: 100%; overflow-x: auto; }
}

@media (max-width: 430px) {
  .ddl-inv-product-stats { grid-template-columns: 1fr; }
  .ddl-inv-product-context-controls { flex-direction: column; align-items: stretch; }
  .ddl-inv-product-context-controls .ddl-inv-product-btn { width: 100%; }
  .ddl-inv-product-detail-grid { grid-template-columns: 1fr; }
  .ddl-inv-product-dossier-nav { grid-template-columns: 1fr 1fr; }
  .ddl-inv-product-dossier-nav > strong { grid-column: 1 / -1; grid-row: 1; }
  .ddl-inv-product-dossier-title { flex-direction: column; }
  .ddl-inv-product-dossier-tabs .shiny-options-group { display: grid; grid-template-columns: 1fr; }
  .ddl-inv-product-dossier-tabs :is(.radio-inline, .form-check-inline) { width: 100%; margin: 0; }
  .ddl-inv-product-route-head > .ddl-inv-product-pill { margin-top: 0.1rem; }
  .ddl-inv-product-filter-row { display: grid; grid-template-columns: 1fr; }
  .ddl-inv-product-filter-row .form-group { min-width: 0; width: 100%; }
  .ddl-inv-product-filters { grid-template-columns: 1fr; }
  .ddl-inv-product-queue-actions { align-items: stretch; }
  .ddl-inv-product-queue-actions > :first-child { width: 100%; margin-right: 0; }
  .ddl-inv-product .radio-inline,
  .ddl-inv-product .form-check-inline,
  .ddl-inv-product button,
  .ddl-inv-product select,
  .ddl-inv-product input:not([type="hidden"]) { min-height: 44px; }
}

@media (prefers-reduced-motion: no-preference) {
  html.ddl-motion-ok .ddl-inv-product { animation: ddl-inv-product-page-in 270ms cubic-bezier(.2, .8, .2, 1) both; }
  html.ddl-motion-ok .ddl-inv-product-start-task,
  html.ddl-motion-ok .ddl-inv-product-card,
  html.ddl-motion-ok .ddl-inv-product-queue-card,
  html.ddl-motion-ok .ddl-inv-product-btn,
  html.ddl-motion-ok .ddl-inv-product-map-tool {
    transition: transform 175ms cubic-bezier(.2, .8, .2, 1), box-shadow 175ms ease,
      border-color 175ms ease, background-color 175ms ease;
  }
  html.ddl-motion-ok .ddl-inv-product-selected.is-revealed {
    animation: ddl-inv-product-selected-in 420ms cubic-bezier(.16, .82, .2, 1) both;
  }
}
@media (prefers-reduced-motion: reduce) {
  .ddl-inv-product *, .ddl-inv-product *::before, .ddl-inv-product *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

@media print {
  body:has(.ddl-inv-product) { background: #fff; }
  body:has(.ddl-inv-product) .ddl-workspace-nav,
  body:has(.ddl-inv-product) .ddl-cover-signin,
  body:has(.ddl-inv-product) .ddl-footer-workspace,
  .ddl-inv-product-context,
  .ddl-inv-product-filters,
  .ddl-inv-product-queue-actions,
  .ddl-inv-product-actions,
  .ddl-inv-product-map-controls { display: none !important; }
  .ddl-inv-product,
  .ddl-inv-product-card,
  .ddl-inv-product-start { max-width: none; border-color: #c8d0ca; box-shadow: none; background: #fff; }
  .ddl-inv-product-table-scroll { overflow: visible; }
  .ddl-inv-product-table { min-width: 0; font-size: 8pt; }
  .ddl-inv-product table.dataTable { width: 100% !important; }
}

@keyframes ddl-inv-product-page-in {
  from { opacity: 0; transform: translateY(7px); }
  to { opacity: 1; transform: none; }
}
@keyframes ddl-inv-product-selected-in {
  from { opacity: 0.2; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}

/* =============================================================================
   Restoration product — sky field atlas / copper fieldwork register

   The generated Restoration workspace is intentionally styled as a working
   scientific field atlas: quiet paper, measured linework, one cool structural
   family, and copper reserved for attention or selection. Every selector is
   gated by `.ddl-rst-product` (or a body containing it), so retained figures
   and the other project products do not inherit this register.
   ========================================================================== */

body:has(.ddl-rst-product) {
  --ddl-rst-night: #102b3b;
  --ddl-rst-night-2: #173d52;
  --ddl-rst-ink: #173447;
  --ddl-rst-muted: #61727c;
  --ddl-rst-bone: #f3f0e8;
  --ddl-rst-paper: #fffdf8;
  --ddl-rst-line: rgba(23, 52, 71, 0.15);
  --ddl-rst-line-strong: rgba(23, 52, 71, 0.27);
  --ddl-rst-sky: #5a91a8;
  --ddl-rst-sky-deep: #326c86;
  --ddl-rst-sky-pale: #dcebf0;
  --ddl-rst-copper: #b7643f;
  --ddl-rst-copper-deep: #8f482e;
  --ddl-rst-copper-pale: #f2dfd2;
  --ddl-rst-sage: #748c7a;
  --ddl-rst-sand: #d2b47d;
  --ddl-project-night: var(--ddl-rst-night);
  --ddl-project-accent: var(--ddl-rst-copper);
  --ddl-project-accent-2: var(--ddl-rst-sky);
  color: var(--ddl-rst-ink);
  background:
    radial-gradient(circle at 8% 7%, rgba(90, 145, 168, 0.1), transparent 28rem),
    linear-gradient(180deg, #f7f4ed, var(--ddl-rst-bone));
}

body:has(.ddl-rst-product) > .container-fluid {
  max-width: 1240px;
  padding-inline: clamp(0.7rem, 2.2vw, 1.45rem);
}

body:has(.ddl-rst-product) .demo-mark-strip-workspace {
  border-color: rgba(23, 52, 71, 0.12);
  color: var(--ddl-rst-muted);
  background: rgba(255, 253, 248, 0.82);
}
body:has(.ddl-rst-product) .demo-mark-workspace-text {
  color: inherit;
  font-size: 0.59rem;
}

body:has(.ddl-rst-product) .ddl-header-workspace {
  min-height: 64px;
  border-bottom: 1px solid rgba(228, 239, 243, 0.14);
  color: #f7f4ec;
  background:
    linear-gradient(90deg, rgba(210, 180, 125, 0.08) 1px, transparent 1px) 0 0 / 44px 100%,
    linear-gradient(108deg, var(--ddl-rst-night), #17465d 67%, #123246);
  box-shadow: 0 8px 26px rgba(16, 43, 59, 0.12);
}
body:has(.ddl-rst-product) .ddl-header-workspace .ddl-brand-name {
  color: #fffaf1;
  font-size: 0.98rem;
}
body:has(.ddl-rst-product) .ddl-header-workspace .ddl-brand-org,
body:has(.ddl-rst-product) .ddl-header-workspace .ddl-cover-signin-note {
  color: rgba(247, 244, 236, 0.68);
}
body:has(.ddl-rst-product) .ddl-header-workspace .ddl-brand-frame {
  stroke: rgba(247, 244, 236, 0.72);
}
body:has(.ddl-rst-product) .ddl-header-workspace .ddl-brand-contour {
  stroke: #80b3c6;
}
body:has(.ddl-rst-product) .ddl-header-workspace .ddl-brand-trail {
  stroke: #d8a077;
}
body:has(.ddl-rst-product) .ddl-header-workspace .ddl-brand-nodes circle {
  fill: #d8a077;
  stroke: var(--ddl-rst-night);
}
body:has(.ddl-rst-product) .ddl-header-workspace .ddl-cover-signin-button,
body:has(.ddl-rst-product) .ddl-header-workspace .ddl-theme-toggle {
  color: #fffaf1;
  border-color: rgba(255, 250, 241, 0.25);
  background: rgba(255, 255, 255, 0.035);
}
body:has(.ddl-rst-product) #ddl-theme-toggle { display: none; }

body:has(.ddl-rst-product) .ddl-workspace-nav {
  min-height: 58px;
  border: 1px solid var(--ddl-rst-line);
  border-top: 0;
  border-radius: 0 0 10px 10px;
  color: var(--ddl-rst-ink);
  background: rgba(255, 253, 248, 0.93);
  box-shadow: 0 6px 20px rgba(23, 52, 71, 0.055);
}
body:has(.ddl-rst-product) .ddl-workspace-nav-identity { display: flex; }
body:has(.ddl-rst-product) .ddl-workspace-home {
  color: var(--ddl-rst-ink);
  border-color: transparent;
}
body:has(.ddl-rst-product) .ddl-workspace-home:is(:hover, :focus-visible) {
  color: var(--ddl-rst-sky-deep);
  background: rgba(90, 145, 168, 0.08);
}
body:has(.ddl-rst-product) .ddl-workspace-project-name { color: var(--ddl-rst-ink); }
body:has(.ddl-rst-product) .ddl-workspace-nav-rule { background: var(--ddl-rst-line-strong); }
body:has(.ddl-rst-product) .ddl-workspace-route-scroll {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0.24rem;
  min-width: 0;
  scroll-padding-inline: 0.35rem;
}
body:has(.ddl-rst-product) .ddl-workspace-route {
  min-width: 0;
  min-height: 46px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.38rem;
  padding: 0.38rem 0.46rem;
  border: 1px solid transparent;
  border-radius: 7px;
  color: var(--ddl-rst-ink);
  background: transparent;
}
body:has(.ddl-rst-product) .ddl-workspace-route::after { display: none; }
body:has(.ddl-rst-product) .ddl-workspace-route-icon {
  display: inline-flex;
  color: var(--ddl-rst-sky-deep);
  font-size: 1rem;
}
body:has(.ddl-rst-product) .ddl-workspace-route-label {
  font-size: 0.77rem;
  font-weight: 760;
}
body:has(.ddl-rst-product) .ddl-workspace-route:is(:hover, :focus-visible) {
  color: var(--ddl-rst-ink);
  border-color: rgba(90, 145, 168, 0.23);
  background: rgba(90, 145, 168, 0.07);
}
body:has(.ddl-rst-product) .ddl-workspace-route.is-on {
  color: #fff;
  border-color: var(--ddl-rst-night-2);
  background: linear-gradient(135deg, var(--ddl-rst-night-2), #2c6b82);
  box-shadow: 0 5px 13px rgba(16, 43, 59, 0.15);
}
body:has(.ddl-rst-product) .ddl-workspace-route.is-on .ddl-workspace-route-icon {
  color: #efb991;
}
body:has(.ddl-rst-product) .ddl-main-workspace {
  padding: 1.45rem 0 0.75rem;
  color: var(--ddl-rst-ink);
}
body:has(.ddl-rst-product) .ddl-hubviews { display: none; }
body:has(.ddl-rst-product) .ddl-footer-workspace { color: var(--ddl-rst-muted); }
body:has(.ddl-rst-product) .ddl-footer-workspace-row { border-top-color: var(--ddl-rst-line); }
body:has(.ddl-rst-product) .ddl-footer-build > summary { color: var(--ddl-rst-muted); }

.ddl-rst-product {
  width: min(100%, 1180px);
  min-width: 0;
  margin: 0 auto;
  color: var(--ddl-rst-ink);
  font-size: 0.94rem;
}
.ddl-rst-product,
.ddl-rst-product *,
.ddl-rst-product *::before,
.ddl-rst-product *::after { box-sizing: border-box; }
.ddl-rst-product [hidden] { display: none !important; }
.ddl-rst-product :is(h1, h2, h3, h4) { color: var(--ddl-rst-ink); }
.ddl-rst-product p { color: var(--ddl-rst-muted); }
.ddl-rst-product a { text-underline-offset: 3px; }
.ddl-rst-product :is(a, button, input, select, summary, [tabindex]):focus-visible {
  outline: 3px solid rgb(183, 100, 63);
  outline-offset: 2px;
}

.ddl-rst-product-route-head {
  min-width: 0;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  margin: 0 0 0.9rem;
}
.ddl-rst-product-route-copy { min-width: 0; }
.ddl-rst-product-route-copy :is(h1, h2) {
  margin: 0;
  font-size: clamp(2rem, 4vw, 3.15rem);
  font-weight: 660;
  letter-spacing: -0.045em;
  line-height: 0.98;
}
.ddl-rst-product-route-copy > p {
  max-width: 67ch;
  margin: 0.3rem 0 0;
  font-size: 0.88rem;
}
.ddl-rst-product-eyebrow {
  margin: 0 0 0.28rem !important;
  color: var(--ddl-rst-sky-deep) !important;
  font-size: 0.61rem !important;
  font-weight: 820;
  letter-spacing: 0.105em;
  text-transform: uppercase;
}

.ddl-rst-product-card,
.ddl-rst-product-queue-card,
.ddl-rst-product-dossier {
  min-width: 0;
  margin-bottom: 0.82rem;
  padding: 0.86rem;
  border: 1px solid var(--ddl-rst-line);
  border-radius: 11px;
  background: color-mix(in srgb, var(--ddl-rst-paper) 96%, transparent);
  box-shadow: 0 8px 24px rgba(23, 52, 71, 0.045);
}
.ddl-rst-product-card-head,
.ddl-rst-product-card-title {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.65rem;
}
.ddl-rst-product-card-head {
  margin: -0.86rem -0.86rem 0.78rem;
  padding: 0.66rem 0.82rem;
  border-bottom: 1px solid var(--ddl-rst-line);
  background: rgba(90, 145, 168, 0.035);
}
.ddl-rst-product-card-head > :first-child,
.ddl-rst-product-card-title {
  display: flex;
  align-items: center;
  gap: 0.48rem;
}
.ddl-rst-product-card-title > svg,
.ddl-rst-product-card-head > :first-child > svg {
  flex: 0 0 auto;
  color: var(--ddl-rst-sky-deep);
  font-size: 1rem;
}
.ddl-rst-product-card-head :is(h2, h3),
.ddl-rst-product-card-title :is(h2, h3) {
  margin: 0;
  font-size: 0.9rem;
  font-weight: 790;
}
.ddl-rst-product-asof {
  color: var(--ddl-rst-muted);
  font-size: 0.64rem;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ddl-rst-product-actions,
.ddl-rst-product-queue-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.52rem;
}
.ddl-rst-product-btn,
.ddl-rst-product-map-tool,
.ddl-rst-product-review-link {
  min-height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.36rem;
  padding: 0.48rem 0.68rem;
  border: 1px solid var(--ddl-rst-line-strong);
  border-radius: 7px;
  color: var(--ddl-rst-ink);
  background: rgba(255, 253, 248, 0.78);
  font-size: 0.72rem;
  font-weight: 780;
  line-height: 1.1;
  text-decoration: none;
  cursor: pointer;
}
.ddl-rst-product-btn:is(:hover, :focus-visible),
.ddl-rst-product-map-tool:is(:hover, :focus-visible),
.ddl-rst-product-review-link:is(:hover, :focus-visible) {
  color: var(--ddl-rst-ink);
  border-color: var(--ddl-rst-sky-deep);
  background: rgba(90, 145, 168, 0.08);
}
.ddl-rst-product-btn.is-primary,
.ddl-rst-product-btn-primary {
  color: #fff;
  border-color: var(--ddl-rst-night-2);
  background: var(--ddl-rst-night-2);
}
.ddl-rst-product-btn.is-primary:is(:hover, :focus-visible),
.ddl-rst-product-btn-primary:is(:hover, :focus-visible) {
  color: #fff;
  border-color: #27647c;
  background: #27647c;
}
.ddl-rst-product-btn.is-disabled {
  opacity: 0.4;
  pointer-events: none;
}
.ddl-rst-product-review-link {
  min-height: 40px;
  padding-inline: 0.58rem;
  color: var(--ddl-rst-sky-deep);
  white-space: nowrap;
}
.ddl-rst-product-review-link.is-selected,
[data-rst-product-select-planting].is-selected,
[data-rst-select-planting].is-selected {
  color: #fff;
  border-color: var(--ddl-rst-copper-deep);
  background: var(--ddl-rst-copper-deep);
}

.ddl-rst-product-pill {
  min-height: 26px;
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.27rem 0.48rem;
  border: 1px solid var(--ddl-rst-line);
  border-radius: 999px;
  color: var(--ddl-rst-muted);
  background: rgba(255, 253, 248, 0.72);
  font-size: 0.61rem;
  font-weight: 790;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.ddl-rst-product-pill:is(.is-alert, .is-due, .is-attention, .is-review) {
  color: #7f3c27;
  border-color: rgba(183, 100, 63, 0.38);
  background: rgba(183, 100, 63, 0.11);
}
.ddl-rst-product-pill:is(.is-watch, .is-upcoming, .is-gold) {
  color: #755927;
  border-color: rgba(210, 180, 125, 0.48);
  background: rgba(210, 180, 125, 0.16);
}
.ddl-rst-product-pill:is(.is-ok, .is-complete, .is-current) {
  color: #3e6552;
  border-color: rgba(116, 140, 122, 0.42);
  background: rgba(116, 140, 122, 0.12);
}
.ddl-rst-product-pill:is(.is-unknown, .is-missing) {
  border-style: dashed;
  color: #5c6870;
  background: rgba(97, 114, 124, 0.07);
}

.ddl-rst-product-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.58rem;
}
.ddl-rst-product-stat {
  min-width: 0;
  padding: 0.66rem 0.72rem;
  border: 1px solid var(--ddl-rst-line);
  border-left: 3px solid var(--ddl-rst-sky);
  border-radius: 8px;
  background: rgba(255, 253, 248, 0.7);
}
.ddl-rst-product-stat:is(.is-alert, .is-attention, .is-copper) {
  border-left-color: var(--ddl-rst-copper);
}
.ddl-rst-product-stat:is(.is-sage, .is-complete) { border-left-color: var(--ddl-rst-sage); }
.ddl-rst-product-stat.is-sand { border-left-color: var(--ddl-rst-sand); }
.ddl-rst-product-stat strong {
  display: block;
  overflow-wrap: anywhere;
  color: var(--ddl-rst-ink);
  font-size: 1.16rem;
  font-variant-numeric: tabular-nums;
  line-height: 1.08;
}
.ddl-rst-product-stat span {
  display: block;
  margin-top: 0.2rem;
  color: var(--ddl-rst-muted);
  font-size: 0.67rem;
  line-height: 1.25;
}
.ddl-rst-product-note,
.ddl-rst-product-trustline {
  min-width: 0;
  display: flex;
  align-items: flex-start;
  gap: 0.48rem;
  padding: 0.62rem 0.7rem;
  border: 1px solid rgba(90, 145, 168, 0.22);
  border-left: 3px solid var(--ddl-rst-sky);
  border-radius: 8px;
  color: var(--ddl-rst-ink);
  background: rgba(220, 235, 240, 0.34);
  font-size: 0.7rem;
}
.ddl-rst-product-note > svg,
.ddl-rst-product-trustline > svg {
  flex: 0 0 auto;
  margin-top: 0.08rem;
  color: var(--ddl-rst-sky-deep);
}
.ddl-rst-product-note p,
.ddl-rst-product-trustline p { margin: 0; }

/* Start route and scientific plate */
.ddl-rst-product-start {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 540px;
  padding: clamp(1rem, 2.4vw, 1.75rem);
  border: 1px solid var(--ddl-rst-line);
  border-radius: 14px;
  background:
    linear-gradient(rgba(90, 145, 168, 0.07) 1px, transparent 1px) 0 0 / 100% 26px,
    radial-gradient(circle at 88% 14%, rgba(90, 145, 168, 0.18), transparent 31%),
    linear-gradient(145deg, rgba(255, 253, 248, 0.98), rgba(236, 242, 240, 0.93));
  box-shadow: 0 18px 46px rgba(23, 52, 71, 0.08);
}
.ddl-rst-product-start::before {
  content: "";
  position: absolute;
  z-index: -1;
  width: 460px;
  height: 460px;
  right: -150px;
  bottom: -230px;
  border: 1px solid rgba(183, 100, 63, 0.15);
  border-radius: 46% 54% 61% 39%;
  box-shadow:
    0 0 0 28px rgba(183, 100, 63, 0.035),
    0 0 0 64px rgba(90, 145, 168, 0.03);
  transform: rotate(-12deg);
}
.ddl-rst-product-start > * { position: relative; z-index: 1; }
.ddl-rst-product-start .ddl-rst-product-route-copy :is(h1, h2) {
  max-width: 12ch;
  font-size: clamp(2.45rem, 5vw, 4.1rem);
}
.ddl-rst-product-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(260px, 0.88fr);
  gap: clamp(1rem, 3vw, 2.2rem);
  align-items: center;
  margin-bottom: 1rem;
}
.ddl-rst-product-hero-copy { min-width: 0; }
.ddl-rst-product-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.52rem;
  margin-top: 0.9rem;
}
.ddl-rst-product-hero-plate {
  position: relative;
  min-height: 240px;
  display: grid;
  place-items: center;
  padding: 0.7rem;
  border: 1px solid rgba(90, 145, 168, 0.22);
  border-radius: 48% 52% 46% 54% / 53% 43% 57% 47%;
  background: rgba(255, 253, 248, 0.55);
}
.ddl-rst-product-hero-plate::before,
.ddl-rst-product-hero-plate::after {
  content: "";
  position: absolute;
  inset: 8%;
  border: 1px solid rgba(183, 100, 63, 0.16);
  border-radius: 52% 48% 57% 43%;
  transform: rotate(5deg);
  pointer-events: none;
}
.ddl-rst-product-hero-plate::after {
  inset: 17%;
  border-color: rgba(90, 145, 168, 0.2);
  transform: rotate(-7deg);
}
.ddl-rst-product-hero-plate img,
.ddl-rst-product-hero-plate svg {
  position: relative;
  z-index: 1;
  width: min(100%, 330px);
  max-height: 300px;
  display: block;
  object-fit: contain;
  filter: saturate(0.78) contrast(1.04);
}
.ddl-rst-product-start-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.72rem;
  margin-top: 0.95rem;
}
.ddl-rst-product-start-task {
  min-width: 0;
  min-height: 118px;
  display: grid;
  grid-template-columns: 4px 52px minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.78rem;
  overflow: hidden;
  padding: 0.68rem 0.82rem 0.68rem 0;
  border: 1px solid var(--ddl-rst-line);
  border-radius: 10px;
  color: var(--ddl-rst-ink);
  background: rgba(255, 253, 248, 0.84);
  text-decoration: none;
}
.ddl-rst-product-start-rail {
  align-self: stretch;
  width: 4px;
  border-radius: 0 4px 4px 0;
  background: var(--ddl-rst-sky);
}
.ddl-rst-product-start-task:nth-child(2n) .ddl-rst-product-start-rail {
  background: var(--ddl-rst-copper);
}
.ddl-rst-product-start-icon {
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #eff8fa;
  background: linear-gradient(145deg, #4d8ba4, var(--ddl-rst-night));
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.13);
}
.ddl-rst-product-start-copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.ddl-rst-product-start-copy > span:first-child {
  color: var(--ddl-rst-sky-deep);
  font-size: 0.59rem;
  font-weight: 820;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.ddl-rst-product-start-copy strong {
  margin-top: 0.1rem;
  font-size: 1.08rem;
  line-height: 1.16;
}
.ddl-rst-product-start-copy > span:last-child {
  margin-top: 0.24rem;
  color: var(--ddl-rst-muted);
  font-size: 0.76rem;
}
.ddl-rst-product-start-arrow {
  color: var(--ddl-rst-copper);
  font-size: 1.1rem;
}
.ddl-rst-product-start-task:is(:hover, :focus-visible) {
  color: var(--ddl-rst-ink);
  border-color: rgba(90, 145, 168, 0.48);
  box-shadow: 0 12px 24px rgba(23, 52, 71, 0.08);
  transform: translateY(-2px);
}
.ddl-rst-product-start-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.95rem;
  color: var(--ddl-rst-muted);
  font-size: 0.7rem;
}
.ddl-rst-product-start-links a { color: var(--ddl-rst-sky-deep); }

/* Current planting and action queue */
.ddl-rst-product-context {
  position: sticky;
  z-index: 8;
  top: 8px;
  min-width: 0;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0.8rem;
  margin: -0.55rem 0 1rem;
  padding: 0.58rem 0.68rem;
  border: 1px solid var(--ddl-rst-line);
  border-radius: 9px;
  background: rgba(255, 253, 248, 0.94);
  box-shadow: 0 8px 22px rgba(23, 52, 71, 0.07);
  backdrop-filter: blur(9px);
}
.ddl-rst-product-context-summary {
  min-width: 0;
  margin: 0 0 0.16rem !important;
  color: var(--ddl-rst-muted);
  font-size: 0.68rem;
  font-style: italic;
}
.ddl-rst-product-context-summary > svg {
  margin-right: 0.25rem;
  color: var(--ddl-rst-sky-deep);
}
.ddl-rst-product-context-controls {
  min-width: min(420px, 100%);
  display: flex;
  align-items: flex-end;
  gap: 0.52rem;
}
.ddl-rst-product-context-controls :is(.form-group, .shiny-input-container) {
  flex: 1 1 270px;
  min-width: 0;
  margin: 0;
}
.ddl-rst-product :is(.form-group, .shiny-input-container) > label,
.ddl-rst-product .control-label {
  margin-bottom: 0.25rem;
  color: var(--ddl-rst-muted);
  font-size: 0.65rem;
  font-weight: 780;
}
.ddl-rst-product :is(input.form-control, select.form-control, .selectize-input) {
  border-color: var(--ddl-rst-line-strong);
  border-radius: 7px;
  color: var(--ddl-rst-ink);
  background: var(--ddl-rst-paper);
  box-shadow: none;
}
.ddl-rst-product :is(input.form-control, select.form-control, .selectize-input).focus,
.ddl-rst-product :is(input.form-control, select.form-control):focus {
  border-color: var(--ddl-rst-sky-deep);
  box-shadow: 0 0 0 3px rgba(90, 145, 168, 0.16);
}
.ddl-rst-product .radio-inline,
.ddl-rst-product .form-check-inline {
  position: relative;
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  margin: 0.15rem 0.25rem 0.15rem 0;
  padding: 0.4rem 0.64rem;
  border: 1px solid var(--ddl-rst-line);
  border-radius: 8px;
  color: var(--ddl-rst-ink);
  background: rgba(255, 253, 248, 0.72);
  font-size: 0.73rem;
  cursor: pointer;
}
.ddl-rst-product .radio-inline:has(input:checked),
.ddl-rst-product .form-check-inline:has(input:checked) {
  color: #fffdf8;
  border-color: var(--ddl-rst-night-2);
  background: var(--ddl-rst-night-2);
}
.ddl-rst-product .radio-inline input,
.ddl-rst-product .form-check-inline input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  opacity: 0;
  pointer-events: none;
}
.ddl-rst-product .radio-inline:has(input:focus-visible),
.ddl-rst-product .form-check-inline:has(input:focus-visible) {
  outline: 3px solid rgb(63, 106, 113);
  outline-offset: 2px;
}
.ddl-rst-product-action-layout {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(235px, 0.38fr) minmax(0, 1.62fr);
  gap: 0.82rem;
  align-items: start;
}
.ddl-rst-product-action-aside {
  position: sticky;
  top: 88px;
  min-width: 0;
}
.ddl-rst-product-orientation { padding: 0; overflow: hidden; }
.ddl-rst-product-orientation > summary,
.ddl-rst-product-fold > summary,
.ddl-rst-product-chart-twin > summary,
.ddl-rst-product-rulebook > summary,
details.ddl-rst-product-card > summary {
  min-height: 48px;
  display: flex;
  align-items: center;
  gap: 0.42rem;
  padding: 0.65rem 0.82rem;
  color: var(--ddl-rst-ink);
  cursor: pointer;
  font-size: 0.74rem;
  font-weight: 790;
}
.ddl-rst-product-orientation > summary > svg,
.ddl-rst-product-fold > summary > svg,
details.ddl-rst-product-card > summary > svg { color: var(--ddl-rst-sky-deep); }
.ddl-rst-product-orientation > :not(summary),
.ddl-rst-product-fold > :not(summary),
.ddl-rst-product-rulebook > :not(summary) { margin-inline: 0.82rem; }
.ddl-rst-product-orientation > :last-child,
.ddl-rst-product-fold > :last-child,
.ddl-rst-product-rulebook > :last-child { margin-bottom: 0.82rem; }
.ddl-rst-product-filter-row,
.ddl-rst-product-filters {
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.58rem;
  margin-bottom: 0.7rem;
}
.ddl-rst-product-filter-row :is(.form-group, .shiny-input-container),
.ddl-rst-product-filters :is(.form-group, .shiny-input-container) { min-width: 0; margin: 0; }
.ddl-rst-product-queue-status,
.ddl-rst-product-map-status {
  margin: 0.4rem 0;
  color: var(--ddl-rst-muted);
  font-size: 0.66rem;
  font-variant-numeric: tabular-nums;
}
.ddl-rst-product-queue-actions { margin-top: 0.68rem; }
.ddl-rst-product-queue-actions > :first-child { margin-right: auto; }
.ddl-rst-product tr.is-selected > :is(th, td) {
  background: rgba(183, 100, 63, 0.085) !important;
  box-shadow: inset 0 1px rgba(183, 100, 63, 0.14),
    inset 0 -1px rgba(183, 100, 63, 0.14);
}
.ddl-rst-product tr.is-selected > :first-child {
  box-shadow: inset 3px 0 var(--ddl-rst-copper),
    inset 0 1px rgba(183, 100, 63, 0.14), inset 0 -1px rgba(183, 100, 63, 0.14);
}
.ddl-rst-product-selected {
  position: relative;
  overflow: hidden;
  margin-top: 0.82rem;
  border-color: rgba(183, 100, 63, 0.33);
  background:
    linear-gradient(90deg, rgba(183, 100, 63, 0.07), transparent 42%),
    var(--ddl-rst-paper);
}
.ddl-rst-product-selected::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: var(--ddl-rst-copper);
}
.ddl-rst-product-selected-head,
.ddl-rst-product-dossier-title {
  min-width: 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.8rem;
  margin-bottom: 0.72rem;
}
.ddl-rst-product-selected-head :is(h2, h3),
.ddl-rst-product-dossier-title :is(h2, h3) { margin: 0; font-size: 1.06rem; }
.ddl-rst-product-selected-head p { margin: 0.2rem 0 0; font-size: 0.72rem; }
.ddl-rst-product-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0 0 0.75rem;
  border-top: 1px solid var(--ddl-rst-line);
  border-left: 1px solid var(--ddl-rst-line);
}
.ddl-rst-product-detail,
.ddl-rst-product-detail-grid > div {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(110px, 0.7fr) minmax(0, 1.3fr);
  border-right: 1px solid var(--ddl-rst-line);
  border-bottom: 1px solid var(--ddl-rst-line);
}
.ddl-rst-product-detail :is(dt, span:first-child),
.ddl-rst-product-detail-grid > div > :first-child {
  margin: 0;
  padding: 0.48rem 0.54rem;
  color: var(--ddl-rst-muted);
  background: rgba(90, 145, 168, 0.045);
  font-size: 0.64rem;
  font-weight: 720;
}
.ddl-rst-product-detail :is(dd, span:last-child),
.ddl-rst-product-detail-grid > div > :last-child {
  min-width: 0;
  margin: 0;
  padding: 0.48rem 0.54rem;
  overflow-wrap: anywhere;
  color: var(--ddl-rst-ink);
  font-size: 0.7rem;
  font-variant-numeric: tabular-nums;
}

/* Registers, dossiers, and horizontally safe data surfaces */
.ddl-rst-product-table-scroll,
.ddl-rst-product .dataTables_scrollBody,
.ddl-rst-product .dataTables_wrapper {
  min-width: 0;
  max-width: 100%;
}
.ddl-rst-product-table-scroll {
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(50, 108, 134, 0.42) transparent;
}
.ddl-rst-product-table {
  width: 100%;
  min-width: 670px;
  border-collapse: collapse;
  color: var(--ddl-rst-ink);
  font-size: 0.69rem;
}
.ddl-rst-product-table :is(th, td) {
  padding: 0.52rem 0.58rem;
  border-bottom: 1px solid var(--ddl-rst-line);
  text-align: left;
  vertical-align: middle;
}
.ddl-rst-product-table th {
  color: #49616e;
  background: rgba(90, 145, 168, 0.07);
  font-size: 0.6rem;
  font-weight: 820;
  letter-spacing: 0.035em;
  text-transform: uppercase;
  white-space: nowrap;
}
.ddl-rst-product-table tbody tr:nth-child(even) { background: rgba(90, 145, 168, 0.025); }
.ddl-rst-product-table tbody tr:hover { background: rgba(90, 145, 168, 0.07); }
.ddl-rst-product-table .is-num { text-align: right; font-variant-numeric: tabular-nums; }
.ddl-rst-product .dataTables_wrapper { color: var(--ddl-rst-ink); font-size: 0.7rem; }
.ddl-rst-product table.dataTable {
  --bs-table-bg: transparent;
  --bs-table-color: var(--ddl-rst-ink);
  --bs-table-striped-bg: rgba(90, 145, 168, 0.025);
  --bs-table-hover-bg: rgba(90, 145, 168, 0.07);
  width: 100% !important;
  margin: 0 !important;
  color: var(--ddl-rst-ink) !important;
  background: var(--ddl-rst-paper) !important;
}
.ddl-rst-product table.dataTable thead th {
  border-bottom-color: var(--ddl-rst-line-strong) !important;
  color: #49616e;
  background: rgba(90, 145, 168, 0.07);
  font-size: 0.61rem;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}
.ddl-rst-product table.dataTable tbody tr {
  color: var(--ddl-rst-ink) !important;
  background: var(--ddl-rst-paper) !important;
}
.ddl-rst-product table.dataTable tbody td {
  color: var(--ddl-rst-ink) !important;
  border-top-color: var(--ddl-rst-line) !important;
  background-color: transparent !important;
}
.ddl-rst-product table.dataTable.stripe tbody tr.odd,
.ddl-rst-product table.dataTable.display tbody tr.odd {
  background: color-mix(in srgb, var(--ddl-rst-paper) 96%, var(--ddl-rst-sky)) !important;
}
.ddl-rst-product table.dataTable.hover tbody tr:hover,
.ddl-rst-product table.dataTable.display tbody tr:hover {
  background: color-mix(in srgb, var(--ddl-rst-paper) 91%, var(--ddl-rst-sky)) !important;
}
.ddl-rst-product-dt-bottom {
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.7rem;
  padding-top: 0.55rem;
}
.ddl-rst-product .dataTables_info { color: var(--ddl-rst-muted) !important; font-size: 0.66rem; }
.ddl-rst-product .dataTables_paginate .paginate_button {
  min-width: 38px;
  min-height: 38px;
  display: inline-grid;
  place-items: center;
  margin: 0 1px;
  padding: 0.35rem 0.5rem !important;
  border: 1px solid transparent !important;
  border-radius: 6px !important;
}
.ddl-rst-product .dataTables_paginate .paginate_button.current {
  color: #fff !important;
  border-color: var(--ddl-rst-night-2) !important;
  background: var(--ddl-rst-night-2) !important;
}
.ddl-rst-product-dossier-nav {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.55rem;
  margin-bottom: 0.7rem;
}
.ddl-rst-product-dossier-nav > strong { text-align: center; font-variant-numeric: tabular-nums; }
.ddl-rst-product-dossier-tabs,
.ddl-rst-product-data-tabs {
  min-width: 0;
  overflow-x: auto;
  margin-bottom: 0.78rem;
  scrollbar-width: thin;
}
.ddl-rst-product-dossier-tabs .form-group,
.ddl-rst-product-data-tabs .form-group { min-width: max-content; margin: 0; }
.ddl-rst-product-dossier-tabs .shiny-options-group,
.ddl-rst-product-data-tabs .shiny-options-group {
  display: flex;
  flex-wrap: nowrap;
  gap: 0.16rem;
}
.ddl-rst-product-dossier-tabs :is(.radio-inline, .form-check-inline),
.ddl-rst-product-data-tabs :is(.radio-inline, .form-check-inline) {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  margin: 0;
  white-space: nowrap;
}
.ddl-rst-product-species-grid,
.ddl-rst-product-plant-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.62rem;
}
.ddl-rst-product-species-card,
.ddl-rst-product-plant-card {
  min-width: 0;
  padding: 0.7rem;
  border: 1px solid var(--ddl-rst-line);
  border-top: 3px solid var(--ddl-rst-sky);
  border-radius: 9px;
  background: rgba(255, 253, 248, 0.75);
}
.ddl-rst-product-species-card h3,
.ddl-rst-product-plant-card h3 { margin: 0; font-size: 0.82rem; }
.ddl-rst-product-species-card p,
.ddl-rst-product-plant-card p { margin: 0.28rem 0 0; font-size: 0.68rem; }

/* Planting map: generated operational coordinates, no runtime basemap */
.ddl-rst-product-map-layout {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.62fr) minmax(265px, 0.52fr);
  grid-template-areas: "map sidebar";
  gap: 0.78rem;
  align-items: start;
}
.ddl-rst-product-map-card {
  grid-area: map;
  min-width: 0;
  overflow: hidden;
  padding: 0;
  border: 1px solid rgba(16, 43, 59, 0.34);
  border-radius: 11px;
  background: var(--ddl-rst-night);
  box-shadow: 0 15px 34px rgba(16, 43, 59, 0.13);
}
.ddl-rst-product-map-card > .ddl-rst-product-card-head {
  min-height: 48px;
  margin: 0;
  color: #f7f4ec;
  border-bottom-color: rgba(243, 246, 246, 0.13);
  background: #0c2636;
}
.ddl-rst-product-map-card > .ddl-rst-product-card-head :is(h2, h3) { color: #f7f4ec; }
.ddl-rst-product-map-card > .ddl-rst-product-card-head > :first-child > svg { color: #e0a87f; }
.ddl-rst-product-map-sidebar {
  grid-area: sidebar;
  min-width: 0;
  display: grid;
  gap: 0.68rem;
}
.ddl-rst-product-map-controls {
  min-width: 0;
  display: grid;
  gap: 0.5rem;
}
.ddl-rst-product-map-toolbar {
  min-height: 50px;
  display: flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.4rem 0.48rem;
  border-bottom: 1px solid rgba(243, 246, 246, 0.13);
  background: rgba(8, 31, 44, 0.97);
}
.ddl-rst-product-map-toolbar > span {
  min-width: 0;
  margin-right: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.34rem;
  color: rgba(243, 246, 246, 0.76);
  font-size: 0.66rem;
}
.ddl-rst-product-map-tool {
  min-width: 44px;
  min-height: 42px;
  padding-inline: 0.62rem;
  color: #f7f4ec;
  border-color: rgba(247, 244, 236, 0.24);
  background: rgba(255, 255, 255, 0.025);
}
.ddl-rst-product-map-tool:is(:hover, :focus-visible) {
  color: #fff;
  border-color: #e0a87f;
  background: rgba(183, 100, 63, 0.16);
}
.ddl-rst-product-map-stage {
  position: relative;
  min-width: 0;
  overflow: hidden;
  background: var(--ddl-rst-night);
}
.ddl-rst-product-map-stage:focus-visible {
  outline-color: rgba(224, 168, 127, 0.82);
  outline-offset: -4px;
}
.ddl-rst-product-map-svg {
  width: 100%;
  height: clamp(470px, 64vh, 700px);
  display: block;
  background: var(--ddl-rst-night);
  touch-action: pan-y;
  user-select: none;
}
.ddl-rst-product-map-stage.is-zoomed .ddl-rst-product-map-svg { touch-action: none; }
.ddl-rst-product-map-svg [data-rst-product-map-viewport],
.ddl-rst-product-map-svg [data-rst-map-viewport] {
  transform-origin: center;
  cursor: grab;
}
.ddl-rst-product-map-svg.is-dragging [data-rst-product-map-viewport],
.ddl-rst-product-map-svg.is-dragging [data-rst-map-viewport] { cursor: grabbing; }
.ddl-rst-product-map-ground { fill: var(--ddl-rst-night); }
.ddl-rst-product-map-grid-line,
.ddl-rst-product-map-grid {
  fill: none;
  stroke: rgba(234, 242, 244, 0.07);
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-map-contour {
  fill: none;
  stroke: rgba(130, 180, 197, 0.18);
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-map-boundary,
.ddl-rst-product-map-plot,
.ddl-rst-product-map-panel {
  fill: rgba(90, 145, 168, 0.07);
  stroke: rgba(210, 180, 125, 0.82);
  stroke-width: 1.45;
  stroke-dasharray: 7 4;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-map-frame {
  fill: rgba(90, 145, 168, 0.025);
  stroke: rgba(218, 231, 234, 0.12);
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-map-area-label,
.ddl-rst-product-map-area-count {
  fill: rgba(240, 246, 247, 0.82);
  font: 700 10px ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: 0.025em;
}
.ddl-rst-product-map-area-count {
  fill: rgba(240, 246, 247, 0.58);
  font-size: 8px;
  font-weight: 600;
}
.ddl-rst-product-map-trail,
.ddl-rst-product-map-route {
  fill: none;
  stroke: rgba(224, 232, 230, 0.54);
  stroke-width: 1.25;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-map-wash {
  fill: none;
  stroke: rgba(111, 165, 186, 0.45);
  stroke-width: 1;
  stroke-dasharray: 2 3;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-map-planting,
.ddl-rst-product-map-point,
.ddl-rst-product-map-mark {
  fill: #79a9ba;
  stroke: #d8edf3;
  stroke-width: 1.25;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-map-planting:is(.is-due, .is-candidate),
.ddl-rst-product-map-point:is(.is-due, .is-candidate),
.ddl-rst-product-map-mark:is(.is-due, .is-never) {
  fill: #bd6d47;
  stroke: #f2b68f;
}
.ddl-rst-product-map-planting:is(.is-unknown, .is-missing),
.ddl-rst-product-map-point:is(.is-unknown, .is-missing) {
  fill: rgba(225, 234, 235, 0.2);
  stroke: rgba(225, 234, 235, 0.72);
  stroke-dasharray: 3 2;
}
.ddl-rst-product-map-planting:is(.is-selected, .is-js-focused),
.ddl-rst-product-map-point:is(.is-selected, .is-js-focused),
.ddl-rst-product-map-mark:is(.is-selected, .is-js-focused) {
  fill: #df986a;
  stroke: #fff0d8;
  stroke-width: 2.6;
  filter: drop-shadow(0 0 6px rgba(255, 224, 192, 0.68));
}
.ddl-rst-product-map-mark.is-upcoming { fill: #d0b477; stroke: #f1d7a5; }
.ddl-rst-product-map-mark.is-current { opacity: 0.72; }
.ddl-rst-product-map-mark.is-off-list {
  fill: rgba(210, 222, 224, 0.2);
  stroke: rgba(210, 222, 224, 0.72);
  stroke-dasharray: 3 2;
  opacity: 0.76;
}
.ddl-rst-product-map-label {
  fill: rgba(240, 246, 247, 0.84);
  font: 700 8px ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: 0.03em;
  paint-order: stroke;
  stroke: var(--ddl-rst-night);
  stroke-width: 3px;
}
.ddl-rst-product-map-north :is(path, line),
.ddl-rst-product-map-scale :is(path, line) {
  fill: none;
  stroke: #e0ae87;
  stroke-width: 1.3;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-map-north text,
.ddl-rst-product-map-scale text {
  fill: #e0ae87;
  font: 8px ui-monospace, SFMono-Regular, Menlo, monospace;
  text-anchor: middle;
}
.ddl-rst-product-map-popup {
  opacity: 0;
  pointer-events: none;
}
.ddl-rst-product-map-popup.is-open,
.ddl-rst-product-map-popup.is-selected { opacity: 1; }
.ddl-rst-product-map-popup rect {
  fill: rgba(7, 28, 40, 0.95);
  stroke: rgba(224, 168, 127, 0.7);
  stroke-width: 1;
}
.ddl-rst-product-map-popup text {
  fill: #f7f4ec;
  font: 9px ui-monospace, SFMono-Regular, Menlo, monospace;
}
.ddl-rst-product-map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.76rem;
  padding: 0.52rem 0.62rem;
  border-top: 1px solid rgba(243, 246, 246, 0.13);
  color: rgba(243, 246, 246, 0.74);
  font-size: 0.62rem;
}
.ddl-rst-product-map-legend span {
  display: inline-flex;
  align-items: center;
  color: rgba(243, 246, 246, 0.82);
  white-space: nowrap;
}
.ddl-rst-product-map-legend span::before {
  content: "";
  width: 15px;
  display: inline-block;
  margin-right: 0.34rem;
  vertical-align: middle;
  border-top: 2px solid #79a9ba;
}
.ddl-rst-product-map-legend .is-due::before { border-color: #e19167; }
.ddl-rst-product-map-legend .is-upcoming::before {
  border-color: #d0b477;
  border-top-style: dashed;
}
.ddl-rst-product-map-legend .is-later::before {
  border-color: #79a9ba;
  opacity: 0.78;
}
.ddl-rst-product-map-legend .is-off-list::before {
  border-color: rgba(210, 222, 224, 0.72);
  border-top-style: dotted;
}
.ddl-rst-product-map-legend .is-selected::before { border-color: #fff0d8; border-top-width: 3px; }
.ddl-rst-product-map-legend .is-boundary::before {
  border-color: var(--ddl-rst-sand);
  border-top-style: dashed;
}
.ddl-rst-product-map-focus-hint {
  position: absolute;
  right: 0.55rem;
  bottom: 0.55rem;
  max-width: 205px;
  padding: 0.36rem 0.48rem;
  border: 1px solid rgba(243, 246, 246, 0.2);
  border-radius: 6px;
  color: rgba(243, 246, 246, 0.84);
  background: rgba(7, 28, 40, 0.87);
  font-size: 0.72rem;
  pointer-events: none;
}
.ddl-rst-product-map-truth {
  margin: 0 !important;
  padding: 0.5rem 0.62rem;
  border-top: 1px solid rgba(243, 246, 246, 0.13);
  color: rgba(243, 246, 246, 0.68) !important;
  background: rgba(8, 31, 44, 0.98);
  font-size: 0.62rem;
}
.ddl-rst-product [data-rst-product-map-status] {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  margin: -1px !important;
  padding: 0 !important;
  border: 0 !important;
  white-space: nowrap !important;
}
.ddl-rst-product-map-card:fullscreen {
  width: 100vw;
  height: 100vh;
  padding: 0.7rem;
  border-radius: 0;
  background: var(--ddl-rst-bone);
  overflow: auto;
}
.ddl-rst-product-map-card:fullscreen .ddl-rst-product-map-svg {
  height: calc(100vh - 150px);
}
.ddl-rst-product-map-ledger,
.ddl-rst-product-survival-table { padding: 0; overflow: hidden; }
.ddl-rst-product-map-ledger > summary,
.ddl-rst-product-survival-table > summary {
  border-bottom: 1px solid transparent;
}
.ddl-rst-product-map-ledger[open] > summary,
.ddl-rst-product-survival-table[open] > summary {
  border-bottom-color: var(--ddl-rst-line);
  background: rgba(90, 145, 168, 0.035);
}
.ddl-rst-product-map-ledger > :not(summary),
.ddl-rst-product-survival-table > :not(summary) {
  margin-inline: 0.82rem;
}
.ddl-rst-product-map-ledger > :last-child,
.ddl-rst-product-survival-table > :last-child { margin-bottom: 0.82rem; }
.ddl-rst-product-locator { padding: 0.72rem; }
.ddl-rst-product-locator-svg {
  width: 100%;
  max-height: 200px;
  display: block;
  border-radius: 8px;
  background: #143344;
}
.ddl-rst-product-locator-ground { fill: #143344; }
.ddl-rst-product-locator-boundary {
  fill: rgba(90, 145, 168, 0.13);
  stroke: #d6aa81;
  stroke-width: 3;
}
.ddl-rst-product-locator-trail {
  fill: none;
  stroke: rgba(229, 237, 237, 0.66);
  stroke-width: 1.6;
}
.ddl-rst-product-locator > p { margin: 0.45rem 0 0; font-size: 0.63rem; }

/* Survival and other evidence */
.ddl-rst-product-outcome-grid {
  display: grid;
  grid-template-columns: minmax(225px, 0.42fr) minmax(0, 1.58fr);
  gap: 0.72rem;
  align-items: start;
  margin-bottom: 0.9rem;
}
.ddl-rst-product-outcome-menu { position: sticky; top: 84px; }
.ddl-rst-product-outcome-menu .shiny-options-group { display: grid; gap: 0.24rem; }
.ddl-rst-product-outcome-menu :is(.radio-inline, .form-check-inline) {
  width: 100%;
  min-height: 44px;
  margin: 0;
}
.ddl-rst-product-outcome-view { min-width: 0; }
.ddl-rst-product-outcome-card {
  min-width: 0;
  padding: 0.86rem;
  border: 1px solid var(--ddl-rst-line);
  border-radius: 10px;
  background: rgba(255, 253, 248, 0.9);
}
.ddl-rst-product-outcome-card > span { color: var(--ddl-rst-muted); font-size: 0.65rem; }
.ddl-rst-product-outcome-card > strong {
  display: block;
  margin-top: 0.14rem;
  color: var(--ddl-rst-ink);
  font-size: 1.28rem;
  font-variant-numeric: tabular-nums;
}
.ddl-rst-product-outcome-card > p { margin: 0.28rem 0 0; font-size: 0.7rem; }
.ddl-rst-product-survival-summary .ddl-rst-product-stats {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.ddl-rst-product-chart-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.78rem;
}
.ddl-rst-product-chart { width: 100%; min-width: 0; margin: 0; }
.ddl-rst-product-chart svg { width: 100%; min-height: 285px; display: block; }
.ddl-rst-product-chart-title { fill: var(--ddl-rst-ink); font: 700 15px system-ui, sans-serif; }
.ddl-rst-product-chart-sub { fill: var(--ddl-rst-muted); font: 11px system-ui, sans-serif; }
.ddl-rst-product-chart-gridline { stroke: rgba(23, 52, 71, 0.12); stroke-width: 1; }
.ddl-rst-product-chart-axis-line { stroke: rgba(23, 52, 71, 0.34); stroke-width: 1; }
.ddl-rst-product-chart-axis {
  fill: var(--ddl-rst-muted);
  font: 10px ui-monospace, SFMono-Regular, Menlo, monospace;
}
.ddl-rst-product-chart-bar { fill: var(--ddl-rst-sky); }
.ddl-rst-product-chart-bar.is-later { fill: var(--ddl-rst-sage); }
.ddl-rst-product-chart-bar.is-attention { fill: var(--ddl-rst-copper); }
.ddl-rst-product-chart-bar.is-unknown {
  fill: rgba(97, 114, 124, 0.36);
  stroke: rgba(23, 52, 71, 0.42);
  stroke-dasharray: 4 3;
}
.ddl-rst-product-chart-line {
  fill: none;
  stroke: var(--ddl-rst-sky-deep);
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.ddl-rst-product-chart-line.is-lower { stroke: var(--ddl-rst-copper); }
.ddl-rst-product-chart-line.is-upper { stroke: var(--ddl-rst-sky-deep); }
.ddl-rst-product-chart-band {
  fill: rgba(90, 145, 168, 0.16);
  stroke: none;
}
.ddl-rst-product-chart-point {
  fill: var(--ddl-rst-paper);
  stroke: var(--ddl-rst-sky-deep);
  stroke-width: 3;
}
.ddl-rst-product-chart-track { fill: rgba(23, 52, 71, 0.07); }
.ddl-rst-product-chart-label { fill: var(--ddl-rst-muted); font: 10px system-ui, sans-serif; }
.ddl-rst-product-chart-value {
  fill: var(--ddl-rst-ink);
  font: 700 10px ui-monospace, SFMono-Regular, Menlo, monospace;
}
.ddl-rst-product-chart figcaption {
  margin: 0.25rem 0 0;
  color: var(--ddl-rst-muted);
  font-size: 0.67rem;
}
.ddl-rst-product-survival-band:not(path) {
  position: relative;
  min-height: 18px;
  overflow: hidden;
  border: 1px solid var(--ddl-rst-line);
  border-radius: 999px;
  background: repeating-linear-gradient(
    135deg,
    rgba(97, 114, 124, 0.08),
    rgba(97, 114, 124, 0.08) 5px,
    rgba(255, 253, 248, 0.5) 5px,
    rgba(255, 253, 248, 0.5) 10px
  );
}
.ddl-rst-product-survival-band:not(path) > span {
  position: absolute;
  inset-block: 0;
  background: linear-gradient(90deg, var(--ddl-rst-copper), var(--ddl-rst-sky));
}
.ddl-rst-product-survival-panel {
  fill: rgba(255, 253, 248, 0.72);
  stroke: var(--ddl-rst-line);
  stroke-width: 1;
}
.ddl-rst-product-survival-title {
  fill: var(--ddl-rst-ink);
  font: 700 12px system-ui, sans-serif;
}
.ddl-rst-product-survival-n {
  fill: var(--ddl-rst-muted);
  font: 9px ui-monospace, SFMono-Regular, Menlo, monospace;
}
.ddl-rst-product-survival-grid {
  stroke: rgba(23, 52, 71, 0.11);
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-survival-axis {
  fill: var(--ddl-rst-muted);
  font: 9px ui-monospace, SFMono-Regular, Menlo, monospace;
}
path.ddl-rst-product-survival-band {
  fill: rgba(90, 145, 168, 0.18);
  stroke: none;
}
.ddl-rst-product-survival-line {
  fill: none;
  stroke: var(--ddl-rst-sky-deep);
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-survival-horizon {
  stroke: var(--ddl-rst-copper);
  stroke-width: 1.4;
  stroke-dasharray: 4 3;
  vector-effect: non-scaling-stroke;
}
.ddl-rst-product-matrix {
  width: 100%;
  border-spacing: 4px;
  border-collapse: separate;
  font-size: 0.68rem;
}
.ddl-rst-product-matrix :is(th, td) { padding: 0.48rem; text-align: center; }
.ddl-rst-product-matrix th { color: var(--ddl-rst-muted); font-size: 0.61rem; }
.ddl-rst-product-matrix td {
  border: 1px solid var(--ddl-rst-line);
  border-radius: 6px;
  color: var(--ddl-rst-ink);
  background: rgba(90, 145, 168, var(--rstp-cell-alpha, 0.08));
  font-variant-numeric: tabular-nums;
}

/* Data room */
.ddl-rst-product-breadcrumb {
  min-height: 28px;
  display: flex;
  align-items: center;
  margin: -0.8rem 0 0.7rem;
  color: var(--ddl-rst-muted);
  font-size: 0.67rem;
}
.ddl-rst-product-breadcrumb > div,
.ddl-rst-product-breadcrumb .shiny-html-output {
  display: flex;
  align-items: center;
  gap: 0.34rem;
}
.ddl-rst-product-data-panel > .ddl-rst-product-route-head { margin-top: 0.35rem; }
.ddl-rst-product-check-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.65rem;
  margin-bottom: 0.8rem;
}
.ddl-rst-product-check-card {
  min-width: 0;
  min-height: 145px;
  padding: 0.82rem;
  border: 1px solid var(--ddl-rst-line);
  border-radius: 10px;
  background: rgba(255, 253, 248, 0.9);
}
.ddl-rst-product-check-card-top,
.ddl-rst-product-check-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.ddl-rst-product-check-severity {
  color: var(--ddl-rst-muted);
  font-size: 0.63rem;
  font-weight: 790;
  letter-spacing: 0.045em;
  text-transform: uppercase;
}
.ddl-rst-product-check-card h3 { margin: 0.54rem 0 0.3rem; font-size: 0.84rem; }
.ddl-rst-product-check-card p { margin: 0; font-size: 0.7rem; }
.ddl-rst-product-check-asof {
  margin-top: 0.5rem !important;
  color: var(--ddl-rst-muted);
  font-size: 0.61rem !important;
  font-variant-numeric: tabular-nums;
}
.ddl-rst-product-check-counts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.42rem;
  margin: 0 0 0.48rem;
}
.ddl-rst-product-check-counts span {
  display: grid;
  padding: 0.42rem 0.48rem;
  border: 1px solid var(--ddl-rst-line);
  border-radius: 8px;
  color: var(--ddl-rst-muted);
  background: rgba(90, 145, 168, 0.035);
  font-size: 0.64rem;
}
.ddl-rst-product-check-counts strong { color: var(--ddl-rst-ink); font-size: 0.88rem; }
.ddl-rst-product-method-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.7rem;
}
.ddl-rst-product-method-grid .ddl-rst-product-card { margin: 0; }
.ddl-rst-product-method-grid p { margin: 0.4rem 0 0; font-size: 0.74rem; }
.ddl-rst-product-report-answer {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-bottom: 0.8rem;
}
.ddl-rst-product-report-answer strong { color: var(--ddl-rst-ink); font-size: 1.2rem; }
.ddl-rst-product-report-answer span { color: var(--ddl-rst-muted); }
.ddl-rst-product-empty {
  min-height: 150px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: 1rem;
  border: 1px dashed rgba(23, 52, 71, 0.25);
  border-radius: 10px;
  color: var(--ddl-rst-muted);
  text-align: center;
  background: rgba(255, 255, 255, 0.42);
}
.ddl-rst-product-empty > svg { color: var(--ddl-rst-sky-deep); font-size: 1.45rem; }
.ddl-rst-product-empty :is(h2, h3, p) { margin: 0; }
.ddl-rst-product-empty :is(h2, h3) { font-size: 1rem; }
.ddl-rst-product-empty p { font-size: 0.76rem; }

@media (max-width: 1040px) {
  body:has(.ddl-rst-product) .ddl-workspace-route-scroll {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  body:has(.ddl-rst-product) .ddl-workspace-route { min-height: 48px; }
  .ddl-rst-product-action-layout { grid-template-columns: 1fr; }
  .ddl-rst-product-action-aside { position: static; }
  .ddl-rst-product-map-layout {
    grid-template-columns: 1fr;
    grid-template-areas: "sidebar" "map";
  }
  .ddl-rst-product-map-sidebar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ddl-rst-product-outcome-grid { grid-template-columns: 1fr; }
  .ddl-rst-product-outcome-menu { position: static; }
}

@media (max-width: 768px) {
  body:has(.ddl-rst-product) > .container-fluid { padding-inline: 0.6rem; }
  body:has(.ddl-rst-product) .ddl-header-workspace {
    min-height: 58px;
    padding: 0.42rem 0.55rem;
  }
  body:has(.ddl-rst-product) .ddl-header-workspace .ddl-brand-name { font-size: 0.82rem; }
  body:has(.ddl-rst-product) .ddl-header-workspace .ddl-cover-signin-note { display: block; }
  body:has(.ddl-rst-product) .ddl-header-workspace .ddl-cover-signin-button { min-height: 40px; }
  body:has(.ddl-rst-product) .ddl-workspace-nav { min-height: 60px; }
  body:has(.ddl-rst-product) .ddl-workspace-route-scroll {
    display: flex;
    overflow-x: auto;
    padding-bottom: 2px;
    scroll-snap-type: x proximity;
    scrollbar-width: thin;
  }
  body:has(.ddl-rst-product) .ddl-workspace-route {
    flex: 0 0 auto;
    min-width: 132px;
    min-height: 48px;
    scroll-snap-align: center;
  }
  body:has(.ddl-rst-product) .ddl-main-workspace { padding-top: 1rem; }
  .ddl-rst-product { min-width: 0; font-size: 0.9rem; }
  .ddl-rst-product-route-head { align-items: flex-start; }
  .ddl-rst-product-route-copy :is(h1, h2) { font-size: 2rem; }
  .ddl-rst-product-route-copy > p { font-size: 0.83rem; }
  .ddl-rst-product-start { min-height: 0; padding: 0.88rem; }
  .ddl-rst-product-hero { grid-template-columns: 1fr; }
  .ddl-rst-product-hero-plate { min-height: 190px; }
  .ddl-rst-product-start-grid { grid-template-columns: 1fr; }
  .ddl-rst-product-start-task {
    min-height: 108px;
    grid-template-columns: 4px 48px minmax(0, 1fr) auto;
    gap: 0.68rem;
    padding-right: 0.75rem;
  }
  .ddl-rst-product-start-icon { width: 44px; height: 44px; }
  .ddl-rst-product-context {
    position: static;
    flex-direction: column;
    align-items: stretch;
    margin: -0.35rem 0 0.82rem;
    backdrop-filter: none;
  }
  .ddl-rst-product-context-summary { white-space: normal; }
  .ddl-rst-product-context-controls { min-width: 0; width: 100%; }
  .ddl-rst-product-context-controls :is(.form-group, .shiny-input-container) {
    flex: 0 0 auto;
  }
  .ddl-rst-product-filter-row,
  .ddl-rst-product-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ddl-rst-product-map-sidebar,
  .ddl-rst-product-chart-grid,
  .ddl-rst-product-method-grid,
  .ddl-rst-product-check-grid,
  .ddl-rst-product-species-grid,
  .ddl-rst-product-plant-grid { grid-template-columns: 1fr; }
  .ddl-rst-product-map-svg { height: min(72vh, 570px); }
  .ddl-rst-product-map-toolbar { flex-wrap: wrap; }
  .ddl-rst-product-map-toolbar > span { flex: 1 0 100%; }
  .ddl-rst-product-chart svg { min-height: 240px; }
  .ddl-rst-product-survival-summary .ddl-rst-product-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ddl-rst-product-check-card { min-height: 0; }
  .ddl-rst-product-table-scroll { overscroll-behavior-inline: contain; }
  .ddl-rst-product-dt-bottom { flex-wrap: wrap; }
  .ddl-rst-product .dataTables_paginate { max-width: 100%; overflow-x: auto; }
}

@media (max-width: 480px) {
  .ddl-rst-product-route-head { flex-direction: column; gap: 0.52rem; }
  .ddl-rst-product-route-head > .ddl-rst-product-pill { margin-top: 0.1rem; }
  .ddl-rst-product-hero-plate { display: none; }
  .ddl-rst-product-start .ddl-rst-product-route-copy :is(h1, h2) { font-size: 2.35rem; }
  .ddl-rst-product-stats { grid-template-columns: 1fr; }
  .ddl-rst-product-survival-summary .ddl-rst-product-stats { grid-template-columns: 1fr; }
  .ddl-rst-product-stat { padding: 0.58rem; }
  .ddl-rst-product-stat strong { font-size: 1.03rem; }
  .ddl-rst-product-context-controls {
    flex-direction: column;
    align-items: stretch;
  }
  .ddl-rst-product-context-controls .ddl-rst-product-btn { width: 100%; }
  .ddl-rst-product-filter-row,
  .ddl-rst-product-filters { grid-template-columns: 1fr; }
  .ddl-rst-product-queue-actions { align-items: stretch; }
  .ddl-rst-product-queue-actions > :first-child { width: 100%; margin-right: 0; }
  .ddl-rst-product-detail-grid { grid-template-columns: 1fr; }
  .ddl-rst-product-detail,
  .ddl-rst-product-detail-grid > div { grid-template-columns: minmax(105px, 0.78fr) minmax(0, 1.22fr); }
  .ddl-rst-product-selected-head,
  .ddl-rst-product-dossier-title { flex-direction: column; }
  .ddl-rst-product-dossier-nav { grid-template-columns: 1fr 1fr; }
  .ddl-rst-product-dossier-nav > strong { grid-column: 1 / -1; grid-row: 1; }
  .ddl-rst-product-dossier-tabs .shiny-options-group { display: grid; grid-template-columns: 1fr; }
  .ddl-rst-product-dossier-tabs :is(.radio-inline, .form-check-inline) {
    width: 100%;
    margin: 0;
  }
  .ddl-rst-product-place .ddl-rst-product-map-card {
    margin-inline: -0.6rem;
    border-inline: 0;
    border-radius: 0;
  }
  .ddl-rst-product-map-focus-hint { max-width: 170px; }
  .ddl-rst-product .radio-inline,
  .ddl-rst-product .form-check-inline,
  .ddl-rst-product button,
  .ddl-rst-product select,
  .ddl-rst-product input:not([type="hidden"]):not([type="radio"]):not([type="checkbox"]),
  .ddl-rst-product .ddl-rst-product-btn,
  .ddl-rst-product .ddl-rst-product-review-link,
  .ddl-rst-product .ddl-rst-product-map-tool { min-height: 44px; }
}

@media (prefers-reduced-motion: no-preference) {
  html.ddl-motion-ok:not(.ddl-motion-paused) .ddl-rst-product {
    animation: ddl-rst-product-page-in 280ms cubic-bezier(.2, .8, .2, 1) both;
  }
  html.ddl-motion-ok .ddl-rst-product-start-task,
  html.ddl-motion-ok .ddl-rst-product-card,
  html.ddl-motion-ok .ddl-rst-product-queue-card,
  html.ddl-motion-ok .ddl-rst-product-btn,
  html.ddl-motion-ok .ddl-rst-product-review-link,
  html.ddl-motion-ok .ddl-rst-product-map-tool {
    transition: transform 175ms cubic-bezier(.2, .8, .2, 1),
      box-shadow 175ms ease, border-color 175ms ease, background-color 175ms ease;
  }
  html.ddl-motion-ok:not(.ddl-motion-paused) .ddl-rst-product-selected.is-revealed,
  html.ddl-motion-ok:not(.ddl-motion-paused) [data-rst-product-selected-plant].is-revealed {
    animation: ddl-rst-product-selected-in 420ms cubic-bezier(.16, .82, .2, 1) both;
  }
  html.ddl-motion-ok:not(.ddl-motion-paused) .ddl-rst-product-map-planting.is-js-focused,
  html.ddl-motion-ok:not(.ddl-motion-paused) .ddl-rst-product-map-point.is-js-focused,
  html.ddl-motion-ok:not(.ddl-motion-paused) .ddl-rst-product-map-mark.is-js-focused {
    animation: ddl-rst-map-focus 620ms ease-out 1;
  }
}
html.ddl-motion-paused .ddl-rst-product *,
html.ddl-motion-paused .ddl-rst-product *::before,
html.ddl-motion-paused .ddl-rst-product *::after { animation-play-state: paused !important; }

@media (prefers-reduced-motion: reduce) {
  .ddl-rst-product *,
  .ddl-rst-product *::before,
  .ddl-rst-product *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

@media print {
  body:has(.ddl-rst-product) { background: #fff; }
  body:has(.ddl-rst-product) .ddl-workspace-nav,
  body:has(.ddl-rst-product) .ddl-cover-signin,
  body:has(.ddl-rst-product) .ddl-footer-workspace,
  .ddl-rst-product-context,
  .ddl-rst-product-filters,
  .ddl-rst-product-filter-row,
  .ddl-rst-product-queue-actions,
  .ddl-rst-product-actions,
  .ddl-rst-product-map-controls,
  .ddl-rst-product-map-toolbar { display: none !important; }
  .ddl-rst-product,
  .ddl-rst-product-card,
  .ddl-rst-product-queue-card,
  .ddl-rst-product-dossier,
  .ddl-rst-product-start {
    width: 100%;
    max-width: none;
    border-color: #c9d0d3;
    box-shadow: none;
    background: #fff;
  }
  .ddl-rst-product-table-scroll { overflow: visible; }
  .ddl-rst-product-table { min-width: 0; font-size: 8pt; }
  .ddl-rst-product table.dataTable { width: 100% !important; }
  .ddl-rst-product-map-svg { height: 6.5in; }
  .ddl-rst-product-map-card,
  .ddl-rst-product-chart,
  .ddl-rst-product-selected { break-inside: avoid; }
  .ddl-rst-product-map-card,
  .ddl-rst-product-chart svg { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
}

@keyframes ddl-rst-product-page-in {
  from { opacity: 0; transform: translateY(7px); }
  to { opacity: 1; transform: none; }
}
@keyframes ddl-rst-product-selected-in {
  from { opacity: 0.2; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}
@keyframes ddl-rst-map-focus {
  0% { filter: drop-shadow(0 0 0 rgba(255, 224, 192, 0)); }
  42% { filter: drop-shadow(0 0 10px rgba(255, 224, 192, 0.95)); }
  100% { filter: drop-shadow(0 0 6px rgba(255, 224, 192, 0.68)); }
}

/* Shared phone return path. Keep the existing home link visible as a labelled
   44px+ target while each product's six-route rail remains independently
   scrollable in the second grid column. */
@media (max-width: 767px) {
  body:has(.ddl-main-workspace) .ddl-workspace-nav {
    display: grid;
    grid-template-columns: 74px minmax(0, 1fr);
    gap: 0.35rem;
  }
  body:has(.ddl-main-workspace) .ddl-workspace-nav-identity {
    grid-column: 1;
    display: flex;
    min-width: 0;
    gap: 0;
  }
  body:has(.ddl-main-workspace) .ddl-workspace-route-scroll {
    grid-column: 2;
    min-width: 0;
  }
  body:has(.ddl-main-workspace) .ddl-workspace-nav-rule,
  body:has(.ddl-main-workspace) .ddl-workspace-project-name { display: none; }
  body:has(.ddl-main-workspace) .ddl-workspace-home {
    width: 74px;
    min-height: 60px;
    flex-direction: column;
    justify-content: center;
    gap: 0.08rem;
    padding: 0.28rem 0.15rem;
    text-align: center;
    font-size: 0.92rem;
    line-height: 1;
  }
  body:has(.ddl-main-workspace) .ddl-workspace-home span:last-child {
    display: block;
    font-size: 0.5rem;
    font-weight: 790;
    letter-spacing: 0.045em;
    line-height: 1.05;
    white-space: nowrap;
  }
}

/* =============================================================================
   Workspace parity + mobile legibility additions.
   -----------------------------------------------------------------------------
   These rules close the audited gaps between the three public workspaces: the
   fullscreen capability gate, selectable map marks that read as selectable,
   the per-card sample-data chip rows, records-pane search strips, busy-state
   coaching, the watch-badge contrast floor, and the phone chart-scroll law the
   internal figures already follow (text renders at authored size and the
   figure scrolls in its own box, never shrinks below legibility).
   ========================================================================== */

/* Where Element.requestFullscreen does not exist (iPhone Safari), the Expand
   control is a dead button; it hides rather than lying. */
html.ddl-no-fullscreen [data-tor-expand-map],
html.ddl-no-fullscreen [data-inv-product-expand-map],
html.ddl-no-fullscreen [data-rst-product-expand-map],
html.ddl-no-fullscreen [data-rst-expand-map] { display: none; }

/* Clickable map marks read as clickable. */
.ddl-inv-product-map-svg [data-inv-product-patch],
.ddl-rst-product-map-svg [data-rst-product-map-planting],
.ddl-tor-map-svg [data-tor-map-animal] { cursor: pointer; }

/* Sample-data chip rows on the record tables. */
.ddl-tor-card-chiprow,
.ddl-inv-product-chiprow,
.ddl-rst-product-chiprow { margin-bottom: 0.55rem; }

/* The priority key: each queue bucket says what it means and how it is
   computed, so the vocabulary explains itself instead of reading as jargon. */
.ddl-tor-priority-key,
.ddl-inv-product-priority-key {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  gap: 0.28rem 0.75rem;
  margin: 0.55rem 0 0.2rem;
}
.ddl-tor-priority-key dt,
.ddl-inv-product-priority-key dt { font-size: 0.74rem; font-weight: 700; }
.ddl-tor-priority-key dd,
.ddl-inv-product-priority-key dd { margin: 0; font-size: 0.74rem; opacity: 0.85; }
.ddl-inv-product-priority-note > summary {
  min-height: 44px;
  display: flex;
  align-items: center;
  gap: 0.42rem;
  cursor: pointer;
  font-size: 0.78rem;
}

/* Records-pane DT search strips (the queue cards keep their own search). */
.ddl-inv-product-dt-top,
.ddl-rst-product-dt-top { display: flex; justify-content: flex-end; margin-bottom: 0.48rem; }
.ddl-inv-product-dt-top label,
.ddl-rst-product-dt-top label { font-size: 0.7rem; }
.ddl-inv-product-dt-top input,
.ddl-rst-product-dt-top input { min-height: 38px; margin-left: 0.4rem; border-radius: 7px; }

/* While the server computes, an empty output region says so instead of
   painting silent blank space. Scoped to html.shiny-busy so a deliberately
   empty (NULL) output never carries a permanent "preparing" claim. */
html.shiny-busy :is(.ddl-tor-page, .ddl-inv-product, .ddl-rst-product) .shiny-html-output:empty {
  min-height: 90px;
  display: grid;
  place-items: center;
}
html.shiny-busy :is(.ddl-tor-page, .ddl-inv-product, .ddl-rst-product) .shiny-html-output:empty::after {
  content: "Preparing this view…";
  opacity: 0.72;
  font-size: 0.78rem;
}

/* The watch badge holds the 3:1 text floor on paper; dark mode keeps its
   existing gold token. */
.ddl-status-watch { color: #8a6a1e; }
[data-bs-theme="dark"] .ddl-status-watch { color: var(--ddl-gold); }

/* The phone chart-scroll law: below 720px a hand-built SVG keeps its authored
   text size and scrolls inside its own figure instead of shrinking to ~4px
   glyphs. The coaching line above it is the same swipe cue the internal
   figures use. */
@media (max-width: 720px) {
  figure.ddl-tor-chart,
  figure.ddl-inv-product-chart,
  figure.ddl-rst-product-chart {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  figure.ddl-tor-chart > svg,
  figure.ddl-inv-product-chart > svg { min-width: 700px; }
  figure.ddl-rst-product-chart > svg { min-width: 880px; }
  figure.ddl-tor-chart::before,
  figure.ddl-inv-product-chart::before,
  figure.ddl-rst-product-chart::before {
    content: "\2194  Swipe for the full chart";
    display: block;
    margin-bottom: 0.4rem;
    opacity: 0.75;
    font-size: 0.76rem;
  }
}
