/* ============================================================================
   Orvyn360 suite shell — styles.css (v3, 2026-08-29)
   Consumes the canonical kit (shared/orvyn-ui.css) for every token. The
   legacy shell variable names are bridged below so retained components keep
   working; all mode/palette/nav switching now happens in the kit via the
   data-orvyn-* attributes set by shared/orvyn-theme.js.
   Jitter rules honoured throughout: reserved sizes for async content,
   enumerated transition properties (never `all`), blur only on overlays,
   content-visibility on below-fold sections.
   ============================================================================ */

/* Orvyn360 platform typeface — Plus Jakarta Sans, self-hosted, no CDN. */
@font-face { font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("assets/fonts/plus-jakarta-sans-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url("assets/fonts/plus-jakarta-sans-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("assets/fonts/plus-jakarta-sans-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 700; font-display: swap; src: url("assets/fonts/plus-jakarta-sans-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 800; font-display: swap; src: url("assets/fonts/plus-jakarta-sans-latin-800-normal.woff2") format("woff2"); }

:root {
  --font-sans: var(--orvyn-font);
  --text-caption: 11px;
  --text-xs: 12px;
  --text-sm: 13px;
  --text-base: 14px;
  --text-md: 16px;
  --text-lg: 18px;
  --text-xl: 22px;
  --text-2xl: 28px;
  --text-3xl: 36px;

  /* ——— Legacy shell vocabulary → canonical kit bridge ——— */
  --primary: var(--orvyn-accent);
  --primary-2: var(--orvyn-accent-2);
  --secondary: var(--orvyn-info);
  --accent: #b8792b; /* DPP product colour — a product constant, not a theme token */
  --canvas: var(--orvyn-canvas);
  --surface: var(--orvyn-surface);
  --surface-2: var(--orvyn-raised);
  --surface-3: var(--orvyn-overlay);
  --text: var(--orvyn-text);
  --muted: var(--orvyn-text-2);
  --subtle: var(--orvyn-text-3);
  --border: var(--orvyn-border);
  --nav: #0D1115;
  --nav-2: #0A0D10;
  --nav-text: #E9EEF3;
  --nav-muted: #AAB4BF;
  --sidebar-bg: var(--orvyn-nav-bg);
  --sidebar-bg-2: var(--orvyn-nav-bg-2);
  --sidebar-text: var(--orvyn-nav-text);
  --sidebar-muted: var(--orvyn-nav-text-2);
  --sidebar-border: var(--orvyn-nav-border);
  --sidebar-soft: var(--orvyn-accent-soft);
  --sidebar-accent: var(--orvyn-nav-accent);
  --positive: var(--orvyn-positive);
  --warning: var(--orvyn-warning);
  --danger: var(--orvyn-danger);
  --shadow: var(--orvyn-shadow-3);
  --radius: var(--orvyn-radius-lg);
  --glass-border: var(--orvyn-border);
  font-family: var(--font-sans);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { background: var(--canvas); }
body { margin:0; overflow-x:clip; color:var(--text); background:var(--canvas); font-family:var(--font-sans); font-size:var(--text-base); line-height:1.5; text-rendering:optimizeLegibility; -webkit-font-smoothing:antialiased; }
button, input, select { font:inherit; font-family:var(--font-sans); }
button, a { -webkit-tap-highlight-color: transparent; }
button { color: inherit; }
a { color: inherit; text-decoration: none; }

/* ————— Shell frame ————— */
.suite-shell { min-height: 100vh; }
.suite-nav { position:fixed; inset:0 auto 0 0; z-index:20; display:flex; flex-direction:column; width:250px; padding:22px 15px 16px; color:var(--sidebar-text); background:linear-gradient(160deg,var(--sidebar-bg),var(--sidebar-bg-2)); border-right:1px solid var(--sidebar-border); overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:var(--sidebar-border) transparent; }
.suite-nav > * { flex:none; }
.suite-nav .nav-spacer { flex:1 1 12px; min-height:12px; }
.brand { display:flex; align-items:center; gap:11px; padding:0 8px 20px; }
.brand img { width:37px; height:37px; }
.brand__name { display:grid; justify-items:end; line-height:1; white-space:nowrap; }
.brand__word { display:block; font-size:20px; font-weight:800; letter-spacing:-.02em; line-height:1; color:var(--sidebar-text); }
.brand__suffix { display:block; margin-top:3px; margin-right:-.16em; color:var(--brand-suffix,#0A4069); font-size:11px; font-weight:800; letter-spacing:.16em; line-height:1; text-transform:uppercase; white-space:nowrap; }
html[data-orvyn-mode="dark"] .brand__suffix,html[data-orvyn-nav="dark"] .brand__suffix { --brand-suffix:#7FB3E0; }
.tenant-chip { display:flex; align-items:center; gap:10px; margin:0 4px 22px; padding:11px; border:1px solid var(--sidebar-border); border-radius:13px; background:var(--orvyn-accent-soft); }
.tenant-chip__mark { display:grid; place-items:center; width:31px; height:31px; border-radius:9px; color:var(--orvyn-on-accent); background:linear-gradient(135deg,var(--primary-2),var(--primary)); font-size:var(--text-xs); font-weight:800; }
.tenant-chip span:last-child { display:flex; flex-direction:column; min-width:0; }
.tenant-chip small,.suite-security small { color:var(--sidebar-muted); font-size:var(--text-caption); text-transform:uppercase; letter-spacing:.1em; }
.tenant-chip strong { margin-top:2px; font-size:var(--text-sm); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.suite-nav nav { display:flex; flex-direction:column; gap:3px; }
.nav-link { display:flex; align-items:center; width:100%; gap:11px; padding:10px 11px; color:var(--sidebar-muted); border:0; border-radius:10px; background:transparent; font-size:var(--text-sm); font-weight:600; line-height:1.4; text-align:left; cursor:pointer; transition:color .16s ease,background-color .16s ease; }
.nav-link > span:first-child { display:grid; place-items:center; width:19px; font-size:17px; }
.nav-link > .nav-icon { --nav-icon-colour:var(--nav-icon-light,var(--sidebar-text)); width:26px; height:26px; flex:none; border-radius:8px; color:var(--nav-icon-colour); background:color-mix(in srgb,var(--nav-icon-colour) 13%,transparent); font-size:15px; transition:background-color .16s ease,color .16s ease,transform .16s ease; }
html[data-orvyn-nav="dark"] .nav-link > .nav-icon,html[data-orvyn-mode="dark"] .nav-link > .nav-icon { --nav-icon-colour:var(--nav-icon-dark,var(--sidebar-text)); }
.nav-link > .nav-icon svg { display:block; }
.nav-link:hover > .nav-icon,.nav-link.is-active > .nav-icon { background:color-mix(in srgb,var(--nav-icon-colour) 24%,transparent); transform:translateY(-.5px); }
.nav-link.is-active { color:var(--sidebar-text); }
.nav-link:hover,.nav-link.is-active { color:var(--sidebar-text); background:var(--orvyn-accent-soft); }
.nav-link.is-active { box-shadow:inset 3px 0 var(--sidebar-accent); }
.nav-section-label { padding:24px 11px 6px; color:var(--sidebar-muted); font-size:var(--text-caption); font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
.nav-spacer { flex:1; }
.suite-security { display:flex; align-items:center; gap:9px; margin:10px 5px; padding:11px 8px; border-top:1px solid var(--sidebar-border); }
.suite-security__dot { width:7px; height:7px; flex:none; border-radius:50%; background:var(--warning); box-shadow:0 0 0 4px rgba(176,124,24,.14); }
.suite-security.is-connected .suite-security__dot { background:var(--positive); box-shadow:0 0 0 4px rgba(30,142,90,.14); }
.suite-security span:last-child { display:flex; flex-direction:column; gap:2px; }
.suite-security strong { font-size:var(--text-xs); }
.sign-out { margin:0 5px; padding:9px; color:var(--sidebar-muted); border:1px solid var(--sidebar-border); border-radius:9px; background:transparent; font-size:var(--text-sm); font-weight:600; cursor:pointer; }

.suite-workspace { min-height:100vh; margin-left:250px; background:var(--canvas); }

/* ————— Header — slim, SOLID surface at 92% + 1px border (no scroll blur) ————— */
/* v4.2 J9: the left column mirrors the width of the action cluster (--header-side is measured by
   app.js) so the search sits on the header's true centre line and shrinks before it drifts. */
.suite-header { position:sticky; top:0; z-index:40; display:grid; grid-template-columns:minmax(var(--header-side,0px),1fr) minmax(0,560px) minmax(max-content,1fr); align-items:center; column-gap:14px; height:64px; padding:0 clamp(22px,3vw,42px); background:rgba(255,255,255,.92); border-bottom:1px solid var(--border); }
html[data-orvyn-mode="dark"] .suite-header { background:rgba(18,22,27,.92); }
.global-search { grid-column:2; justify-self:center; display:flex; align-items:center; width:100%; min-height:39px; gap:9px; padding:0 12px; color:var(--subtle); border:1px solid var(--border); border-radius:11px; background:var(--surface-2); cursor:pointer; text-align:left; transition:border-color .16s ease,color .16s ease; }
.global-search:hover { border-color:var(--orvyn-border-strong); color:var(--muted); }
.global-search > span:first-child { font-size:18px; }
.global-search__hint { flex:1; overflow:hidden; font-size:var(--text-base); text-overflow:ellipsis; white-space:nowrap; }
kbd { padding:3px 6px; color:var(--subtle); border:1px solid var(--border); border-radius:5px; background:var(--surface); font-family:var(--font-sans); font-size:var(--text-caption); }
.header-actions { grid-column:3; justify-self:end; display:flex; align-items:center; gap:10px; }
.global-search__icon { flex:none; width:17px; height:17px; color:var(--muted); }
.connection-state { display:flex; align-items:center; gap:7px; min-width:172px; justify-content:flex-end; color:var(--muted); font-size:var(--text-xs); font-weight:700; }
.connection-state i { width:6px; height:6px; flex:none; border-radius:50%; background:var(--warning); }
.connection-state.is-connected i { background:var(--positive); box-shadow:0 0 0 4px rgba(30,142,90,.12); }
.icon-button { display:grid; place-items:center; width:37px; height:37px; padding:0; border:1px solid var(--border); border-radius:10px; background:var(--surface); cursor:pointer; transition:color .16s ease,border-color .16s ease,background-color .16s ease; }
.icon-button:hover { color:var(--primary); border-color:var(--orvyn-border-strong); background:var(--surface-2); }
.fullscreen-button svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.profile-control { position:relative; display:flex; align-items:center; }
.profile-button { display:grid; place-items:center; width:38px; height:38px; min-width:38px; padding:0; color:var(--orvyn-on-accent); border:2px solid var(--surface); border-radius:50%; background:linear-gradient(135deg,var(--primary-2),var(--primary)); box-shadow:0 0 0 1px var(--border); cursor:pointer; transition:box-shadow .15s ease,transform .06s ease; }
.profile-button > span { display:grid; place-items:center; width:100%; height:100%; font-size:var(--text-xs); font-weight:800; letter-spacing:.02em; }
.profile-button:hover,.profile-button[aria-expanded="true"] { box-shadow:0 0 0 3px var(--orvyn-accent-chip); }
.profile-button:active { transform:translateY(1px); }

/* ————— Main flow ————— */
main { display:flex; flex-direction:column; gap:38px; padding:26px clamp(22px,3vw,42px) 80px; }
.section-block { scroll-margin-top:84px; }
.below-fold { content-visibility:auto; contain-intrinsic-size: auto 640px; }

/* ————— Hero + quiet aurora backdrop ————— */
.hero { position:relative; display:grid; grid-template-columns:minmax(0,.95fr) minmax(400px,1.05fr); min-height:430px; overflow:hidden; gap:clamp(28px,4vw,56px); padding:clamp(30px,4vw,48px); color:var(--text); border:1px solid var(--border); border-radius:25px; background:var(--surface); box-shadow:var(--orvyn-shadow-1); }
.hero__aurora { position:absolute; inset:0; overflow:hidden; pointer-events:none; }
.hero__aurora i { position:absolute; width:520px; height:520px; border-radius:50%; }
.hero__aurora-a { left:-160px; top:-220px; background:radial-gradient(circle, var(--orvyn-accent-soft), transparent 62%); }
.hero__aurora-b { right:-200px; bottom:-260px; background:radial-gradient(circle, var(--orvyn-accent-soft), transparent 58%); opacity:.8; }
@media (prefers-reduced-motion: no-preference) {
  html:not([data-orvyn-motion="reduced"]) .hero__aurora-a { animation:hero-drift-a 40s ease-in-out infinite alternate; }
  html:not([data-orvyn-motion="reduced"]) .hero__aurora-b { animation:hero-drift-b 40s ease-in-out infinite alternate; }
  @keyframes hero-drift-a { from { transform:translate3d(0,0,0); } to { transform:translate3d(70px,40px,0); } }
  @keyframes hero-drift-b { from { transform:translate3d(0,0,0); } to { transform:translate3d(-60px,-50px,0); } }
}
.hero__content { position:relative; z-index:2; align-self:center; max-width:590px; }
.eyebrow { display:inline-flex; align-items:center; gap:7px; color:var(--primary); font-size:var(--text-caption); font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
.eyebrow::before { content:""; width:16px; height:2px; border-radius:2px; background:currentColor; }
.hero h1 { margin:17px 0; font-size:clamp(var(--text-3xl),4.2vw,52px); line-height:1.02; letter-spacing:-.055em; }
.hero h1 em { color:var(--primary); font-style:normal; }
.hero__greeting { display:flex; flex-wrap:wrap; gap:0 14px; }
.hero__greeting-name { color:var(--primary); }
.hero__org-chip { display:inline-flex; align-items:center; margin:0 0 12px; padding:5px 11px; color:var(--primary); border:1px solid var(--orvyn-border-strong); border-radius:999px; background:var(--orvyn-accent-soft); font-size:var(--text-xs); font-weight:800; }
.hero p { max-width:520px; margin:0; color:var(--muted); font-size:var(--text-md); line-height:1.65; }
.hero__actions { display:flex; gap:10px; margin-top:26px; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:12px; min-height:42px; padding:0 16px; border-radius:11px; font-size:var(--text-sm); font-weight:800; cursor:pointer; transition:transform .16s ease,box-shadow .18s ease,border-color .16s ease,background-color .16s ease; }
.button:hover { transform:translateY(-1px); }
.button--primary { color:var(--orvyn-on-accent); border:1px solid var(--orvyn-accent-strong); background:linear-gradient(135deg,var(--primary-2),var(--primary)); box-shadow:var(--orvyn-shadow-1); }
.button--ghost { color:var(--text); border:1px solid var(--border); background:var(--surface-2); }

/* ————— Living suite map: core + 6 product nodes + arcs ————— */
.hero__visual { position:relative; z-index:2; align-self:stretch; min-height:360px; border:1px solid var(--border); border-radius:21px; background:var(--surface-2); }
.suite-map__arcs { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.suite-map__arc { stroke:var(--orvyn-border-strong); stroke-width:1.1; stroke-dasharray:4 5; fill:none; opacity:.8; }
.suite-map__arcs.is-active .suite-map__arc { stroke:var(--orvyn-accent); opacity:.38; }
.suite-map__pulse { fill:var(--orvyn-accent); opacity:0; }
@media (prefers-reduced-motion: no-preference) {
  html:not([data-orvyn-motion="reduced"]) .suite-map__pulse.is-travelling { opacity:1; animation:map-travel 1.5s ease-in-out forwards; }
  @keyframes map-travel {
    0% { transform:translate(0,0); opacity:0; }
    12% { opacity:1; }
    88% { opacity:1; }
    100% { transform:translate(var(--map-dx,0),var(--map-dy,0)); opacity:0; }
  }
}
.suite-map__core { position:absolute; left:50%; top:50%; z-index:2; display:flex; flex-direction:column; align-items:center; gap:5px; width:118px; height:118px; margin:-59px 0 0 -59px; justify-content:center; color:var(--text); border:1px solid var(--orvyn-border-strong); border-radius:50%; background:var(--surface); box-shadow:var(--orvyn-shadow-2); cursor:pointer; transition:transform .18s ease,box-shadow .2s ease,border-color .18s ease; }
.suite-map__core:hover { transform:scale(1.04); border-color:var(--orvyn-accent); box-shadow:var(--orvyn-shadow-3); }
.suite-map__core img { width:44px; height:44px; }
.suite-map__core span { display:flex; flex-direction:column; align-items:center; line-height:1; }
.suite-map__core small { color:var(--muted); font-size:var(--text-caption); font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.suite-map__core strong { color:var(--primary); font-size:var(--text-md); letter-spacing:-.02em; }
.map-node { position:absolute; z-index:2; display:flex; align-items:center; gap:8px; min-width:118px; max-width:168px; padding:9px 10px; color:var(--text); text-align:left; border:1px solid var(--border); border-radius:13px; background:var(--surface); box-shadow:var(--orvyn-shadow-1); cursor:pointer; transition:transform .16s ease,border-color .16s ease,box-shadow .18s ease; }
.map-node:hover { transform:translateY(-2px); border-color:var(--node-color); box-shadow:var(--orvyn-shadow-2); }
.map-node__monogram { display:grid; place-items:center; width:28px; height:28px; flex:none; color:#fff; border-radius:9px; background:linear-gradient(145deg,var(--node-color),var(--node-color)); font-size:var(--text-xs); font-weight:900; }
.map-node__copy { display:flex; flex-direction:column; min-width:0; }
.map-node__copy strong { font-size:var(--text-xs); letter-spacing:-.01em; white-space:nowrap; }
.map-node__copy strong span { color:var(--node-text,var(--node-color)); font-size:var(--text-caption); letter-spacing:.04em; margin-left:2px; }
.map-node__copy em { color:var(--subtle); font-size:var(--text-caption); font-style:normal; line-height:1.25; }
.map-node--esg { left:4%; top:6%; --node-color:#0F5C4E; }
.map-node--cdp { right:4%; top:6%; --node-color:#4d6fd0; }
.map-node--ceq { left:2%; top:44%; --node-color:#285ea8; }
.map-node--dpp { right:2%; top:44%; --node-color:#b8792b; }
.map-node--lca { left:12%; bottom:5%; --node-color:#7c5cd6; }
.map-node--passport { right:12%; bottom:5%; --node-color:#0F5C4E; }
.map-node--ppwr { left:50%; top:3%; min-width:124px; transform:translateX(-50%); --node-color:#176b73; }
.map-node--ppwr:hover { transform:translate(-50%,-2px); }
.map-node.is-locked { border-style:dashed; opacity:.72; }
html[data-orvyn-mode="dark"] .map-node { --node-text:color-mix(in srgb,var(--node-color) 45%,#FFFFFF); }
.map-node.is-live .map-node__monogram { box-shadow:0 0 0 3px var(--orvyn-accent-soft); }
.map-tooltip { position:absolute; z-index:5; max-width:260px; padding:7px 10px; color:var(--orvyn-on-accent); border-radius:9px; background:var(--orvyn-accent-strong); font-size:var(--text-caption); font-weight:700; transform:translate(-50%,-100%); pointer-events:none; box-shadow:var(--orvyn-shadow-2); }
html[data-orvyn-mode="dark"] .map-tooltip { color:#0B0E11; background:var(--orvyn-accent); }

/* ————— Journey ribbon ————— */
.journey-ribbon { display:flex; align-items:center; gap:14px; margin-top:-16px; padding:14px 18px; color:var(--text); text-align:left; border:1px solid var(--orvyn-border-strong); border-radius:15px; background:linear-gradient(120deg,var(--orvyn-accent-soft),var(--surface)); cursor:pointer; transition:transform .16s ease,border-color .16s ease,box-shadow .18s ease; }
.journey-ribbon:hover { transform:translateY(-1px); border-color:var(--orvyn-accent); box-shadow:var(--orvyn-shadow-1); }
.journey-ribbon__badge { flex:none; padding:5px 9px; color:var(--orvyn-on-accent); border-radius:999px; background:linear-gradient(135deg,var(--primary-2),var(--primary)); font-size:var(--text-caption); font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.journey-ribbon strong { font-size:var(--text-sm); }
.journey-ribbon small { overflow:hidden; color:var(--muted); font-size:var(--text-xs); text-overflow:ellipsis; white-space:nowrap; }

/* ————— Context strip (reserved widths — no reflow on hydrate) ————— */
.context-strip { position:relative; z-index:3; display:flex; align-items:flex-end; gap:16px; padding:16px 18px; border:1px solid var(--border); border-radius:15px; background:var(--surface); box-shadow:var(--orvyn-shadow-1); }
.context-strip__intro { display:flex; align-items:center; gap:9px; min-width:185px; margin-right:auto; }
.context-strip__intro > span { display:grid; place-items:center; width:32px; height:32px; color:var(--orvyn-on-accent); border-radius:9px; background:linear-gradient(135deg,var(--primary-2),var(--primary)); }
.context-strip__intro div { display:flex; flex-direction:column; gap:2px; }
.context-strip__intro strong { font-size:var(--text-sm); }
.context-strip__intro small { color:var(--subtle); font-size:var(--text-caption); }
.context-strip label,.login-fields label { display:flex; flex-direction:column; gap:6px; }
.context-strip label > span,.login-fields label > span,.field-label { color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
select,input { color:var(--text); border:1px solid var(--border); outline-color:var(--orvyn-focus); background:var(--surface); }
.context-strip select { min-width:230px; height:39px; padding:0 10px; border-radius:9px; background:var(--surface-2); font-size:var(--text-sm); }
.context-strip label:nth-of-type(2) select { min-width:130px; }
.context-strip__sync { align-self:center; min-width:190px; color:var(--positive); font-size:var(--text-xs); font-weight:700; text-align:right; }

/* ————— Section headings ————— */
.section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:22px; margin-bottom:20px; }
.section-heading h2 { margin:7px 0 4px; font-size:clamp(var(--text-xl),2.6vw,var(--text-2xl)); letter-spacing:-.045em; }
.section-heading p { max-width:650px; margin:0; color:var(--muted); font-size:var(--text-base); line-height:1.6; }
.section-count { min-width:220px; color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.08em; text-transform:uppercase; text-align:right; }
.portfolio-refresh { display:flex; align-items:center; justify-content:flex-end; gap:10px; flex-wrap:wrap; }
.metric-refresh-button { min-height:34px; padding:0 11px; color:var(--text); border:1px solid var(--border); border-radius:9px; background:var(--surface); font:inherit; font-size:var(--text-xs); font-weight:800; cursor:pointer; transition:color .16s ease,border-color .16s ease; }
.metric-refresh-button:hover:not(:disabled) { color:var(--primary); border-color:var(--orvyn-border-strong); }
.metric-refresh-button:disabled { cursor:not-allowed; opacity:.55; }

/* ————— Pulse strip: reserved chip widths, tabular numerals ————— */
.pulse-strip { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.pulse-chip[data-pulse="fabric"] { grid-column:span 2; }
.pulse-chip { display:flex; flex-direction:column; gap:3px; min-width:0; min-height:78px; padding:12px 14px; border:1px solid var(--border); border-radius:13px; background:var(--surface); box-shadow:var(--orvyn-shadow-1); }
.pulse-chip small { color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.07em; text-transform:uppercase; overflow-wrap:break-word; }
.pulse-chip strong { overflow:hidden; min-height:24px; font-size:var(--text-lg); letter-spacing:-.03em; text-overflow:ellipsis; white-space:nowrap; }
.pulse-chip em { color:var(--muted); font-size:var(--text-caption); font-style:normal; line-height:1.35; overflow-wrap:break-word; }
.pulse-chip[data-tone="locked"] { opacity:.62; }
.pulse-chip[data-tone="fabric"] { border-color:var(--orvyn-border-strong); background:linear-gradient(135deg,var(--orvyn-accent-soft),var(--surface)); }

/* ————— Product grid: fixed geometry, always-reserved metric area ————— */
.product-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.product-card { position:relative; display:flex; flex-direction:column; min-height:392px; overflow:hidden; padding:22px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); box-shadow:var(--orvyn-shadow-1); transition:border-color .18s ease; }
.product-card::before { content:""; position:absolute; inset:0 0 auto; height:3px; background:var(--card-color); }
.product-card:hover { border-color:var(--orvyn-border-strong); }
.product-card--esg { --card-color:#0F5C4E; }
.product-card--cdp { --card-color:#4d6fd0; }
.product-card--ceq { --card-color:#285ea8; }
.product-card--dpp { --card-color:#b8792b; }
.product-card--lca { --card-color:#7c5cd6; }
.product-card--ppwr { --card-color:#176b73; }
.product-card--passport { --card-color:#0F5C4E; }
html[data-orvyn-mode="dark"] .product-card { --card-text:color-mix(in srgb,var(--card-color) 45%,#FFFFFF); }
.product-card__top { position:relative; z-index:2; display:flex; align-items:center; justify-content:space-between; margin-bottom:28px; }
.product-icon { display:grid; place-items:center; width:42px; height:42px; color:#fff; border-radius:12px; background:linear-gradient(135deg,var(--card-color),var(--card-color)); font-size:var(--text-base); font-weight:900; box-shadow:var(--orvyn-shadow-1); }
.product-status { min-width:104px; padding:5px 7px; color:var(--subtle); border:1px solid var(--border); border-radius:999px; background:var(--surface-2); font-size:var(--text-caption); font-weight:800; text-transform:uppercase; letter-spacing:.07em; text-align:center; }
.product-status.is-ready { color:var(--positive); border-color:var(--orvyn-border-strong); background:var(--surface-2); }
.product-status.is-error { color:var(--warning); }
.product-kicker { color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.product-card h3 { margin:7px 0 12px; font-size:var(--text-2xl); letter-spacing:-.055em; }
.product-card h3 span { display:inline-block; margin-left:3px; color:var(--card-text,var(--card-color)); font-size:var(--text-xs); letter-spacing:.06em; transform:translateY(7px); }
.product-card p { margin:0; color:var(--muted); font-size:var(--text-base); line-height:1.65; }
.feature-list { display:flex; flex-wrap:wrap; gap:6px; margin:16px 0; }
.feature-list span { padding:5px 7px; color:var(--muted); border:1px solid var(--border); border-radius:7px; background:var(--surface-2); font-size:var(--text-xs); font-weight:700; }

/* Metric strip: ALWAYS rendered with reserved height (idle/loading/ready/unavailable). */
.product-live { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; min-height:64px; margin:0 0 16px; padding:10px; border:1px solid var(--border); border-radius:10px; background:var(--surface-2); }
.product-live span { min-width:0; padding:1px 6px; border-right:1px solid var(--border); }
.product-live span:last-of-type { border-right:0; }
.product-live strong,.product-live small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.product-live strong { min-height:20px; color:var(--text); font-size:var(--text-md); letter-spacing:-.03em; }
.product-live small { margin-top:2px; color:var(--subtle); font-size:var(--text-caption); font-weight:700; text-transform:uppercase; letter-spacing:.02em; }
.product-live span > small { white-space:normal; text-overflow:clip; line-height:1.25; }
/* v7 (25 Sep 2026): a footprint stated per more than one item (the ABG epoxy resin, per 1,000 kg) keeps its whole unit on two lines. */
.product-live small.product-live__unit { white-space:normal; text-overflow:clip; line-height:1.25; }
.product-live__message { display:none; grid-column:1/-1; min-height:42px; align-items:center; justify-content:center; color:var(--muted); font-size:var(--text-xs); font-weight:700; text-align:center; }
.product-live[data-state="unavailable"] > span { display:none; }
.product-live[data-state="unavailable"] .product-live__message { display:flex; }
.product-live[data-state="idle"] strong { color:var(--subtle); }
.product-live--static { display:flex; align-items:center; justify-content:center; }
.product-live__static-note { color:var(--muted); font-size:var(--text-xs); font-weight:700; text-align:center; }
.card-action { position:relative; z-index:3; display:flex; align-items:center; justify-content:space-between; width:100%; margin-top:auto; padding:12px 0 0; color:var(--text); border:0; border-top:1px solid var(--border); background:transparent; font-size:var(--text-sm); font-weight:800; cursor:pointer; }
.card-action span:last-child { color:var(--card-text,var(--card-color)); font-size:var(--text-md); }

/* Peek drawer — 2-line stat strip that slides up inside the card (transform-only). */
.product-peek { position:absolute; inset:auto 0 0 0; z-index:2; padding:10px 22px 14px; color:var(--muted); border-top:1px solid var(--border); background:var(--surface-2); font-size:var(--text-xs); font-weight:600; line-height:1.5; transform:translateY(105%); pointer-events:none; }
@media (prefers-reduced-motion: no-preference) {
  html:not([data-orvyn-motion="reduced"]) .product-peek { transition:transform .26s cubic-bezier(.2,.8,.3,1); }
  html:not([data-orvyn-motion="reduced"]) .product-card:hover .product-peek,
  html:not([data-orvyn-motion="reduced"]) .product-card:focus-within .product-peek { transform:translateY(0); }
}
/* Launch morph — brief scale + progress shimmer while the window opens. */
@media (prefers-reduced-motion: no-preference) {
  html:not([data-orvyn-motion="reduced"]) .product-card.is-launching { animation:card-launch .9s ease; }
  html:not([data-orvyn-motion="reduced"]) .product-card.is-launching::before { animation:card-progress .9s linear; }
  @keyframes card-launch { 0% { transform:scale(1); } 22% { transform:scale(.986); } 100% { transform:scale(1); } }
  @keyframes card-progress { from { transform:translateX(-100%); } to { transform:translateX(0); } }
}

/* Locked / catalogue tiles */
.product-card.is-locked { border-style:dashed; background:var(--surface-2); }
.product-card.is-locked::before { opacity:.35; }
.product-card.is-locked .product-icon { background:linear-gradient(135deg,var(--subtle),var(--subtle)); box-shadow:none; }
.product-card.is-locked h3,.product-card.is-locked p { color:var(--muted); }
.product-card.is-locked .feature-list span { opacity:.75; }
.product-status.is-locked { color:var(--secondary); border-color:var(--orvyn-border-strong); background:var(--surface-2); }
.product-teaser-note { display:flex; align-items:center; gap:7px; margin:0 0 14px; padding:9px 11px; color:var(--muted); border:1px dashed var(--orvyn-border-strong); border-radius:10px; background:var(--surface-2); font-size:var(--text-xs); font-weight:600; }
.product-teaser-note strong { color:var(--secondary); }
.nav-lock { margin-left:auto; color:var(--sidebar-muted); font-size:var(--text-caption); }

/* ————— Insight grid + fabric panel ————— */
.suite-insight-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; scroll-margin-top:84px; }
.insight-card { padding:23px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); box-shadow:var(--orvyn-shadow-1); }
.insight-card--wide { grid-column:1/-1; }
.section-heading--compact { align-items:center; margin-bottom:26px; }
.section-heading--compact h2 { font-size:var(--text-xl); }
.health-chip { min-width:130px; padding:6px 9px; color:var(--positive); border:1px solid var(--orvyn-border-strong); border-radius:999px; background:var(--surface-2); font-size:var(--text-caption); font-weight:800; text-align:center; }
.flow-row { display:grid; grid-template-columns:repeat(6,minmax(0,1fr) auto) minmax(0,1fr); align-items:center; gap:8px; }
.flow-row > div { display:flex; flex-direction:column; min-height:95px; padding:13px; border:1px solid var(--border); border-radius:12px; background:var(--surface-2); }
.flow-row > div > span { color:var(--primary); font-size:var(--text-caption); font-weight:900; }
.flow-row > div.flow-row__step--link { cursor:pointer; transition:border-color .16s ease,transform .16s ease,box-shadow .16s ease; }
.flow-row > div.flow-row__step--link:hover,.flow-row > div.flow-row__step--link:focus-visible { border-color:var(--primary); transform:translateY(-1px); box-shadow:var(--orvyn-shadow-1); outline:none; }
.flow-row strong { margin-top:12px; font-size:var(--text-sm); }
.flow-row small { margin-top:3px; color:var(--subtle); font-size:var(--text-xs); }
.flow-row > i { color:var(--subtle); font-style:normal; }
.insight-card h3 { margin:9px 0 6px; font-size:var(--text-lg); letter-spacing:-.03em; }
.insight-card > p { min-height:44px; margin:0; color:var(--muted); font-size:var(--text-base); line-height:1.6; }
.mini-metric { display:flex; justify-content:space-between; gap:12px; margin-top:14px; padding-top:12px; border-top:1px solid var(--border); }
.mini-metric span { color:var(--subtle); font-size:var(--text-xs); }
.mini-metric strong { font-size:var(--text-sm); text-align:right; }
.approvals-matrix { display:flex; flex-direction:column; gap:9px; margin-top:16px; }
.approvals-matrix__row { display:flex; flex-direction:column; gap:2px; padding:10px 12px; border:1px solid var(--border); border-radius:10px; background:var(--surface-2); }
.approvals-matrix__row span { color:var(--primary); font-size:var(--text-caption); font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.approvals-matrix__row em { color:var(--muted); font-size:var(--text-xs); font-style:normal; line-height:1.5; }
.security-posture { display:flex; flex-direction:column; }

.fabric-head-note { color:var(--muted); font-size:var(--text-xs); }
#platform-data { scroll-margin-top:82px; }
.fabric-summary { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px; margin-top:14px; }
.fabric-summary > div { display:flex; min-width:0; flex-direction:column; gap:3px; padding:10px 11px; border:1px solid var(--border); border-radius:11px; background:var(--surface-2); }
.fabric-summary small { color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.04em; line-height:1.3; text-transform:uppercase; }
.fabric-summary strong { color:var(--primary); font-size:var(--text-lg); letter-spacing:-.03em; }
.fabric-situations { display:flex; flex-direction:column; gap:2px; margin-bottom:14px; }
.fabric-situations > strong { font-size:var(--text-sm); }
.fabric-situations > small { color:var(--subtle); font-size:var(--text-xs); }
.fabric-scenarios { display:grid; grid-template-columns:repeat(4,minmax(150px,1fr)); gap:8px; margin-top:10px; }
@media (max-width:1100px) { .fabric-scenarios { grid-template-columns:repeat(2,minmax(150px,1fr)); } }
.fabric-scenario { display:flex; min-width:0; min-height:78px; flex-direction:column; gap:4px; padding:10px 11px; color:var(--primary); border:1px solid var(--border); border-radius:11px; background:linear-gradient(145deg,var(--surface-2),var(--surface)); text-align:left; cursor:pointer; }
.fabric-scenario strong { font-size:var(--text-xs); }
.fabric-scenario small { color:var(--subtle); font-size:var(--text-caption); line-height:1.4; }
.fabric-controls { display:grid; grid-template-columns:minmax(210px,1.35fr) repeat(4,minmax(125px,.72fr)); gap:8px; margin-top:12px; }
.fabric-controls label,.fabric-bulk label { display:flex; min-width:0; flex-direction:column; gap:4px; color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.fabric-controls input,.fabric-controls select,.fabric-bulk input,.fabric-bulk select { width:100%; height:35px; min-width:0; padding:0 9px; border:1px solid var(--border); border-radius:8px; background:var(--surface); font-size:var(--text-xs); }
.fabric-table-head { display:grid; grid-template-columns:28px minmax(200px,1.35fr) minmax(170px,.95fr) 118px minmax(190px,1fr) 170px 18px; gap:10px; margin-top:12px; padding:0 12px; color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.fabric-rows { display:flex; flex-direction:column; gap:8px; max-height:760px; min-height:320px; margin-top:7px; overflow:auto; padding-right:3px; }
.fabric-row { display:grid; grid-template-columns:28px minmax(200px,1.35fr) minmax(170px,.95fr) 118px minmax(190px,1fr) 170px 18px; align-items:center; gap:10px; min-height:66px; padding:10px 12px; border:1px solid var(--border); border-radius:11px; background:var(--surface-2); cursor:pointer; transition:border-color .14s ease,box-shadow .14s ease; }
.fabric-row:hover,.fabric-row:focus-visible { border-color:var(--orvyn-border-strong); box-shadow:var(--orvyn-shadow-1); outline:none; }
.fabric-row.is-focused { border-color:var(--primary); box-shadow:0 0 0 3px var(--orvyn-accent-soft); }
.fabric-row__open { color:var(--subtle); font-size:18px; text-align:center; }
.fabric-row[data-status="PENDING_CLEARANCE"] { border-left:3px solid var(--warning); }
.fabric-row[data-status="REJECTED"] { border-left:3px solid var(--danger); }
.fabric-row[data-status="SUPERSEDED"],.fabric-row[data-status="RETIRED"] { opacity:.72; }
.fabric-row__select { display:flex; align-items:center; justify-content:center; }
.fabric-row__select input { width:16px; height:16px; accent-color:var(--primary); }
.fabric-row__name { min-width:0; display:flex; flex-direction:column; gap:2px; }
.fabric-row__name strong { display:-webkit-box; overflow:hidden; font-size:var(--text-sm); line-height:1.3; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.fabric-row__name small { display:-webkit-box; overflow:hidden; color:var(--muted); font-size:var(--text-caption); line-height:1.35; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.fabric-row__value { min-width:0; display:flex; flex-direction:column; gap:2px; }
.fabric-row__value strong { display:-webkit-box; overflow:hidden; font-size:var(--text-md); letter-spacing:-.02em; line-height:1.2; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.fabric-row__value small { overflow:hidden; color:var(--subtle); font-size:var(--text-caption); text-overflow:ellipsis; white-space:nowrap; }
.fabric-row__destinations { display:flex; min-width:0; flex-wrap:wrap; gap:4px; }
.fabric-row__destinations small,.fabric-row__destinations button { padding:3px 6px; color:var(--subtle); border:1px solid var(--border); border-radius:999px; background:var(--surface); font-size:var(--text-caption); font-weight:800; white-space:nowrap; font-family:inherit; cursor:pointer; }
.fabric-row__destinations button:hover { color:var(--primary); border-color:var(--orvyn-border-strong); }
.fabric-row__destinations button[data-state="DECIDED"] { color:var(--positive); border-color:color-mix(in srgb,var(--positive) 36%,var(--border)); }
.fabric-row__destinations button[data-state="BLOCKED"] { opacity:.6; }
.fabric-row .fabric-row__state { justify-self:start; max-width:170px; line-height:1.25; text-align:left; white-space:normal; text-transform:none; letter-spacing:0; font-size:var(--text-caption); }
.fabric-row__dot { display:inline-block; width:6px; height:6px; margin-left:4px; border-radius:50%; background:currentColor; vertical-align:middle; }
@media (prefers-reduced-motion: no-preference) {
  html:not([data-orvyn-motion="reduced"]) .fabric-row.is-updated { animation:fabric-row-flash 1.2s ease; }
  @keyframes fabric-row-flash { 0% { border-color:var(--orvyn-accent); } 100% { border-color:var(--border); } }
}
.fabric-chip { padding:4px 8px; border-radius:999px; font-size:var(--text-caption); font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.fabric-chip--source { color:var(--primary); border:1px solid var(--orvyn-border-strong); background:var(--orvyn-accent-soft); }
.fabric-row__source { font-family:inherit; cursor:pointer; text-transform:none; letter-spacing:0; font-size:var(--text-caption); text-align:center; line-height:1.2; padding:5px 8px; }
.fabric-row__source:hover { background:var(--surface); box-shadow:0 0 0 2px var(--orvyn-accent-soft); }
.fabric-legend { display:flex; flex-wrap:wrap; gap:6px 18px; margin-top:12px; padding:10px 12px; color:var(--muted); border:1px dashed var(--border); border-radius:11px; font-size:var(--text-caption); line-height:1.5; }
.fabric-legend b { color:var(--text); }
.fabric-advanced { margin-top:14px; border:1px solid var(--border); border-radius:12px; background:var(--surface); }
.fabric-advanced > summary { padding:11px 14px; color:var(--muted); cursor:pointer; font-size:var(--text-xs); font-weight:800; list-style:none; }
.fabric-advanced > summary::-webkit-details-marker { display:none; }
.fabric-advanced > summary::after { content:'▾'; float:right; color:var(--subtle); }
.fabric-advanced[open] > summary::after { content:'▴'; }
.fabric-advanced .fabric-bulk { margin:0 12px 12px; }
.text-link { padding:0; color:var(--primary); border:0; background:transparent; font:inherit; font-size:var(--text-xs); font-weight:800; cursor:pointer; }
.text-link:hover { text-decoration:underline; }
.fabric-chip--cleared { color:var(--positive); border:1px solid var(--orvyn-border-strong); background:var(--surface-2); }
.fabric-chip--pending { color:var(--warning); border:1px solid var(--orvyn-border-strong); background:var(--surface-2); }
.fabric-empty { margin-top:14px; padding:18px; color:var(--muted); border:1px dashed var(--border); border-radius:11px; font-size:var(--text-xs); text-align:center; }
.fabric-actions { display:flex; align-items:center; gap:10px; margin-top:14px; }
.fabric-actions .metric-refresh-button strong { color:var(--warning); }
.fabric-bulk { display:grid; grid-template-columns:minmax(200px,1fr) 150px minmax(230px,1fr) auto auto; align-items:end; gap:8px; margin-top:12px; padding:12px; border:1px solid var(--border); border-radius:12px; background:var(--surface-2); }
.fabric-bulk > div { display:flex; flex-direction:column; gap:3px; }
.fabric-bulk > div strong { font-size:var(--text-xs); }
.fabric-bulk > div small,.fabric-bulk p { color:var(--subtle); font-size:var(--text-caption); line-height:1.45; }
.fabric-bulk p { grid-column:1/-1; min-height:16px; margin:0; }
.fabric-bulk .metric-refresh-button { min-height:35px; }
.clearance-blocker { color:var(--danger); font-weight:800; }
.clearance-approve:disabled { opacity:.5; cursor:not-allowed; }

/* ————— Governance group: evidence intake, claims register, obligations ————— */
.governance-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr); gap:14px; margin-top:14px; align-items:stretch; }
.governance-card { display:flex; min-width:0; max-height:760px; flex-direction:column; gap:8px; padding:16px; border:1px solid var(--border); border-radius:14px; background:var(--surface-2); }
.governance-card h3 { margin:2px 0 0; font-size:var(--text-md); letter-spacing:-.02em; }
.governance-card > p { margin:0 0 4px; color:var(--muted); font-size:var(--text-xs); line-height:1.6; }
.governance-card .evidence-workbench { display:flex; flex:1 1 auto; min-height:0; flex-direction:column; }
.governance-card .evidence-list,.governance-card .claim-list,.governance-card .obligation-list { flex:1 1 auto; min-height:120px; max-height:none; overflow:auto; }
.evidence-item__head > strong,.claim-item__head > strong,.obligation-item__head > strong { min-width:0; flex:1 1 auto; overflow-wrap:anywhere; }
.evidence-item__head,.claim-item__head,.obligation-item__head { align-items:flex-start; }
.governance-card .claim-list,.governance-card .obligation-list { margin-top:4px; }
.governance-foot { display:flex; justify-content:flex-end; margin-top:12px; }
.evidence-item.is-focused,.claim-item.is-focused { border-color:var(--primary); box-shadow:0 0 0 3px var(--orvyn-accent-soft); }
.about-dialog { width:min(720px,calc(100vw - 30px)); border-radius:22px; }
.about-dialog form { position:relative; display:flex; flex-direction:column; gap:12px; padding:28px; border:1px solid var(--border); border-radius:22px; background:var(--surface); }
.about-dialog h2 { margin:6px 0 0; font-size:var(--text-xl); letter-spacing:-.03em; }
.about-dialog p,.about-dialog__note { margin:0; color:var(--muted); font-size:var(--text-sm); line-height:1.6; }

/* ————— Fact drawer ————— */
.fact-drawer-wrap { position:fixed; inset:0; z-index:105; }
.fact-drawer-scrim { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:rgba(10,14,17,.32); cursor:default; backdrop-filter:blur(2px); }
.fact-drawer { position:absolute; inset:0 0 0 auto; display:flex; flex-direction:column; width:min(560px,96vw); height:100%; overflow:hidden; border-left:1px solid var(--border); background:var(--surface); box-shadow:var(--orvyn-shadow-3); }
@media (prefers-reduced-motion: no-preference) {
  html:not([data-orvyn-motion="reduced"]) .fact-drawer { animation:orb-enter .22s ease-out; }
}
.fact-drawer__head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:20px 22px 14px; border-bottom:1px solid var(--border); background:linear-gradient(135deg,var(--orvyn-accent-soft),var(--surface)); }
.fact-drawer__head h2 { margin:4px 0 0; font-size:var(--text-lg); letter-spacing:-.03em; line-height:1.25; }
.fact-drawer__head .dialog-close { position:static; flex:none; }
.fact-drawer__body { flex:1; overflow:auto; padding:18px 22px 30px; }
.fact-drawer__loading { color:var(--muted); font-size:var(--text-sm); }
.fact-drawer__hero { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; }
.fact-drawer__value { font-size:clamp(26px,3vw,34px); letter-spacing:-.04em; line-height:1.1; }
.fact-drawer__about { margin:6px 0 16px; color:var(--muted); font-size:var(--text-sm); font-weight:700; }
.fact-drawer__section { padding:14px 0; border-top:1px solid var(--border); }
.fact-drawer__section h3 { margin:0 0 8px; color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.fact-drawer__section h3 + h3,.fact-drawer__from + h3 { margin-top:14px; }
.fact-drawer__section p { margin:0 0 8px; color:var(--text); font-size:var(--text-sm); line-height:1.65; }
.fact-drawer__next { padding:10px 12px; border:1px solid var(--orvyn-border-strong); border-radius:10px; background:var(--orvyn-accent-soft); }
.fact-drawer__muted { color:var(--muted) !important; font-size:var(--text-xs) !important; }
.fact-drawer__from { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; border:1px solid var(--border); border-radius:11px; background:var(--surface-2); }
.fact-drawer__from span,.fact-drawer__consumers li span,.fact-drawer__list li span { display:flex; min-width:0; flex-direction:column; gap:2px; }
.fact-drawer__from b,.fact-drawer__consumers b,.fact-drawer__list b { font-size:var(--text-sm); }
.fact-drawer__from small,.fact-drawer__consumers small,.fact-drawer__list small,.fact-drawer__gates small,.fact-drawer__timeline small { color:var(--subtle); font-size:var(--text-caption); line-height:1.45; }
.fact-drawer__spot { color:var(--muted); font-style:italic; }
.fact-drawer__consumers,.fact-drawer__list,.fact-drawer__gates { display:flex; flex-direction:column; gap:6px; margin:0; padding:0; list-style:none; }
.fact-drawer__consumers li,.fact-drawer__list li,.fact-drawer__gates li { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 11px; border:1px solid var(--border); border-radius:10px; background:var(--surface-2); }
.fact-drawer__consumers li[data-state="DECIDED"] { border-left:3px solid var(--positive); }
.fact-drawer__consumers li[data-state="AVAILABLE"] { border-left:3px solid var(--warning); }
.fact-drawer__gates li { flex-direction:column; align-items:flex-start; gap:2px; }
.fact-drawer__gates li span { font-size:var(--text-xs); font-weight:800; }
.fact-drawer__gates li[data-state="PASS"] { border-left:3px solid var(--positive); }
.fact-drawer__gates li[data-state="OPEN"] { border-left:3px solid var(--warning); }
.fact-drawer__gates li[data-state="REJECTED"] { border-left:3px solid var(--danger); }
.fact-drawer__facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:0; }
.fact-drawer__facts div { display:flex; flex-direction:column; gap:2px; padding:8px 10px; border:1px solid var(--border); border-radius:9px; background:var(--surface-2); }
.fact-drawer__facts dt { color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.fact-drawer__facts dd { margin:0; font-size:var(--text-xs); font-weight:700; line-height:1.4; overflow-wrap:anywhere; }
.fact-drawer__timeline { display:flex; flex-direction:column; gap:8px; margin:0; padding:0 0 0 14px; border-left:2px solid var(--border); list-style:none; }
.fact-drawer__timeline li { position:relative; display:flex; flex-direction:column; gap:1px; }
.fact-drawer__timeline li::before { content:''; position:absolute; left:-19px; top:6px; width:8px; height:8px; border-radius:50%; background:var(--primary); }
.fact-drawer__timeline b { font-size:var(--text-xs); }
.fact-drawer__timeline p { margin:2px 0 0; color:var(--muted); font-size:var(--text-caption); }
.fact-drawer__actions .clearance-note-input { width:100%; margin-bottom:8px; }
.fact-drawer__buttons { display:flex; flex-wrap:wrap; gap:8px; }
.fact-drawer__foot { display:flex; align-items:center; justify-content:space-between; gap:10px; padding-top:14px; border-top:1px solid var(--border); color:var(--subtle); font-size:var(--text-caption); }
body.fact-drawer-open { overflow:hidden; }
.clearance-item__story { margin:0; color:var(--muted); font-size:var(--text-xs); line-height:1.55; }
.clearance-item__next { margin:0; padding:8px 10px; color:var(--text); border:1px solid var(--orvyn-border-strong); border-radius:9px; background:var(--orvyn-accent-soft); font-size:var(--text-caption); line-height:1.5; }
.clearance-item[data-blocked="1"] { border-left:3px solid var(--danger); }

/* ————— Evidence intelligence, controlled claims and obligations ————— */
.evidence-workbench { display:grid; grid-template-columns:minmax(250px,.72fr) minmax(0,1.28fr); gap:14px; }
.evidence-upload { display:flex; flex-direction:column; gap:10px; padding:15px; border:1px dashed var(--orvyn-border-strong); border-radius:13px; background:var(--surface-2); }
.evidence-drop { display:flex; flex-direction:column; gap:4px; padding:16px; border:1px solid var(--border); border-radius:10px; background:var(--surface); cursor:pointer; }
.evidence-drop strong { font-size:var(--text-sm); }
.evidence-drop small,.evidence-message,.compliance-note { color:var(--subtle); font-size:var(--text-caption); line-height:1.55; }
.evidence-upload input[type="file"] { width:100%; padding:8px; border-radius:9px; font-size:var(--text-xs); }
.evidence-upload .button { align-self:flex-start; }
.evidence-message { min-height:34px; margin:0; }
.evidence-list,.claim-list,.obligation-list { display:flex; flex-direction:column; gap:8px; }
.evidence-list { max-height:340px; overflow:auto; }
.evidence-item,.claim-item,.obligation-item { display:flex; flex-direction:column; gap:5px; padding:11px 12px; border:1px solid var(--border); border-radius:11px; background:var(--surface-2); }
.evidence-item__head,.claim-item__head,.obligation-item__head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.evidence-item strong,.claim-item strong,.obligation-item strong { font-size:var(--text-sm); }
.evidence-item small,.claim-item small,.obligation-item small { color:var(--subtle); font-size:var(--text-caption); line-height:1.5; }
.evidence-item p,.claim-item p,.obligation-item p { margin:0; color:var(--muted); font-size:var(--text-xs); line-height:1.55; }
.claim-item__actions { display:flex; flex-wrap:wrap; gap:6px 16px; margin-top:2px; }
.claim-item__actions .text-link { font-size:var(--text-caption); }
.governance-chip { flex:none; padding:3px 7px; color:var(--muted); border:1px solid var(--border); border-radius:999px; background:var(--surface); font-size:var(--text-caption); font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.governance-chip[data-status="APPROVED"],.governance-chip[data-status="SOURCE_APPROVED"],.governance-chip[data-status="APPLICABLE"],.governance-chip[data-status="CLEARED"] { color:var(--positive); }
.governance-chip[data-status="REJECTED"],.governance-chip[data-status="BLOCK"],.governance-chip[data-status="UNIT_MISMATCH"],.governance-chip[data-status="BOUNDARY_MISMATCH"] { color:var(--danger); }
.governance-chip[data-status="WARNING"],.governance-chip[data-status="NEEDS_REVIEW"],.governance-chip[data-status="STALE"],.governance-chip[data-status="SOURCE_REVIEW_REQUIRED"],.governance-chip[data-status="DATA_QUALITY_WARNING"],.governance-chip[data-status="PENDING_CLEARANCE"],.governance-chip[data-status="CONSUMER_DECISION_REQUIRED"] { color:var(--warning); }
.governance-chip[data-status="SUPERSEDED"],.governance-chip[data-status="RETIRED"],.governance-chip[data-status="STALE_OR_SUPERSEDED"],.governance-chip[data-status="NOT_APPLICABLE"] { color:var(--subtle); }
.evidence-review { display:flex; gap:6px; margin-top:3px; }
.evidence-review button { min-height:29px; padding:0 9px; color:var(--primary); border:1px solid var(--orvyn-border-strong); border-radius:8px; background:var(--surface); font-size:var(--text-caption); font-weight:800; cursor:pointer; }
.claim-list,.obligation-list { max-height:360px; margin-top:14px; overflow:auto; }
.claim-item[data-status="REJECTED"] { border-left:3px solid var(--danger); }
.claim-item[data-status="APPROVED"] { border-left:3px solid var(--positive); }
.obligation-item[data-severity="WARNING"] { border-left:3px solid var(--warning); }
.obligation-item[data-severity="NA"] { opacity:.72; }
.obligation-item a { color:var(--primary); font-size:var(--text-caption); font-weight:800; }
.compliance-note { display:block; margin-top:12px; }

/* ————— Dialogs (overlays MAY blur — scrolling content never does) ————— */
dialog { color:var(--text); border:0; padding:0; background:transparent; }
dialog::backdrop { background:rgba(5,10,12,.6); backdrop-filter:blur(6px); }
.login-dialog { width:min(900px,calc(100vw - 30px)); border-radius:28px; box-shadow:var(--orvyn-shadow-3); }
.login-dialog form { position:relative; display:grid; grid-template-columns:.9fr 1.1fr; min-height:510px; overflow:hidden; border:1px solid var(--border); border-radius:28px; background:rgba(255,255,255,.86); backdrop-filter:blur(18px) saturate(130%); }
html[data-orvyn-mode="dark"] .login-dialog form { background:rgba(23,28,34,.9); }
.login-visual { position:relative; display:flex; flex-direction:column; justify-content:flex-end; overflow:hidden; padding:42px; color:var(--text); border-right:1px solid var(--border); background:linear-gradient(150deg,var(--orvyn-accent-soft),transparent 70%); }
.login-visual::after { content:""; position:absolute; width:330px; height:330px; right:-150px; top:-140px; border:1px dashed var(--orvyn-border-strong); border-radius:50%; }
.login-visual img { position:absolute; left:39px; top:36px; width:54px; height:54px; }
.login-visual .eyebrow { color:var(--primary); }
.login-visual h2 { margin:13px 0 10px; font-size:clamp(var(--text-2xl),3vw,var(--text-3xl)); line-height:1.03; letter-spacing:-.05em; }
.login-visual p { color:var(--muted); font-size:var(--text-base); line-height:1.65; }
.trust-list { display:flex; flex-direction:column; gap:8px; margin-top:18px; color:var(--muted); font-size:var(--text-xs); }
.login-fields { position:relative; display:flex; flex-direction:column; justify-content:center; padding:clamp(35px,6vw,72px); }
.login-fields h2 { margin:9px 0 5px; font-size:var(--text-2xl); letter-spacing:-.045em; }
.login-fields > p { margin:0 0 28px; color:var(--muted); font-size:var(--text-base); }
.login-fields label { margin-bottom:13px; }
.login-fields input { height:43px; padding:0 12px; border-radius:10px; font-size:var(--text-base); background:var(--surface); }
.login-fields input:focus { border-color:var(--primary); box-shadow:0 0 0 3px var(--orvyn-accent-soft); }
.dialog-close { position:absolute; right:19px; top:17px; display:grid; place-items:center; width:31px; height:31px; color:var(--muted); border:1px solid var(--border); border-radius:9px; background:var(--surface); font-size:17px; cursor:pointer; }
.login-submit { width:100%; margin-top:7px; }
.login-note { margin-top:15px; color:var(--subtle); font-size:var(--text-caption); line-height:1.5; text-align:center; }
.login-error { margin:0 0 10px; padding:9px 11px; color:var(--danger); border:1px solid var(--orvyn-border-strong); border-radius:9px; background:var(--surface-2); font-size:var(--text-xs); }

/* ————— Teaser + clearance dialogs ————— */
.teaser-dialog { width:min(680px,calc(100vw - 30px)); border-radius:22px; }
.teaser-dialog form { position:relative; padding:30px; border:1px solid var(--border); border-radius:22px; background:var(--surface); box-shadow:var(--orvyn-shadow-3); }
.teaser-head { display:flex; align-items:center; gap:13px; padding-right:40px; }
.teaser-head .product-icon { width:46px; height:46px; }
.teaser-head-copy { display:flex; flex-direction:column; gap:2px; }
.teaser-head-copy .eyebrow { color:var(--secondary); }
.teaser-head-copy h2 { margin:0; font-size:var(--text-xl); letter-spacing:-.04em; }
.teaser-blurb { margin:14px 0 0; color:var(--muted); font-size:var(--text-base); line-height:1.65; }
.teaser-section-label { display:block; margin:18px 0 8px; color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.09em; text-transform:uppercase; }
.teaser-capabilities { display:flex; flex-wrap:wrap; gap:6px; }
.teaser-capabilities span { padding:6px 9px; color:var(--muted); border:1px solid var(--border); border-radius:8px; background:var(--surface-2); font-size:var(--text-xs); font-weight:700; }
.teaser-signals { display:flex; flex-direction:column; gap:6px; padding:0; margin:0; }
.teaser-signals li { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 11px; border:1px solid var(--orvyn-border-strong); border-radius:10px; background:var(--orvyn-accent-soft); font-size:var(--text-xs); list-style:none; }
.teaser-signals strong { font-size:var(--text-xs); }
.teaser-signals small { color:var(--subtle); }
.teaser-signals .fabric-chip { flex:none; }
.teaser-empty-signals { padding:12px; color:var(--muted); border:1px dashed var(--border); border-radius:10px; font-size:var(--text-xs); text-align:center; }
.teaser-cta { display:flex; align-items:center; gap:10px; margin-top:22px; }
.teaser-note { margin-top:12px; color:var(--subtle); font-size:var(--text-caption); line-height:1.55; }

.launch-dialog { width:min(570px,calc(100vw - 30px)); border-radius:22px; }
.launch-dialog form { position:relative; padding:32px; border:1px solid var(--border); border-radius:22px; background:var(--surface); box-shadow:var(--orvyn-shadow-3); }
.launch-dialog h2 { margin:12px 42px 8px 0; font-size:var(--text-xl); letter-spacing:-.04em; }
.launch-dialog p { margin:0; color:var(--muted); font-size:var(--text-base); line-height:1.65; }
.launch-dialog__actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.launch-dialog small { display:block; margin-top:14px; color:var(--subtle); font-size:var(--text-caption); line-height:1.55; }

.clearance-dialog { width:min(760px,calc(100vw - 30px)); border-radius:22px; }
.clearance-dialog form { position:relative; display:flex; flex-direction:column; max-height:min(640px,calc(100vh - 60px)); padding:28px; border:1px solid var(--border); border-radius:22px; background:var(--surface); }
.clearance-list { display:flex; flex-direction:column; gap:10px; margin-top:16px; overflow:auto; }
.clearance-item { display:flex; flex-direction:column; gap:9px; padding:13px 14px; border:1px solid var(--border); border-radius:13px; background:var(--surface-2); }
.clearance-item__head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.clearance-item__head strong { font-size:var(--text-sm); }
.clearance-item__meta { display:flex; flex-wrap:wrap; gap:6px 14px; color:var(--muted); font-size:var(--text-caption); }
.clearance-item__value { font-size:var(--text-md); font-weight:800; letter-spacing:-.02em; }
.clearance-item__actions { display:flex; align-items:center; gap:8px; }
.clearance-approve { min-height:32px; padding:0 12px; color:var(--orvyn-on-accent); border:0; border-radius:8px; background:linear-gradient(135deg,var(--primary-2),var(--primary)); font-size:var(--text-xs); font-weight:800; cursor:pointer; }
.clearance-source-approve { min-height:32px; padding:0 12px; color:var(--primary); border:1px solid var(--orvyn-border-strong); border-radius:8px; background:var(--orvyn-accent-soft); font-size:var(--text-xs); font-weight:800; cursor:pointer; }
.clearance-reject { min-height:32px; padding:0 12px; color:var(--danger); border:1px solid var(--orvyn-border-strong); border-radius:8px; background:transparent; font-size:var(--text-xs); font-weight:800; cursor:pointer; }
.clearance-note-input { flex:1; min-width:0; height:32px; padding:0 9px; border-radius:8px; font-size:var(--text-xs); }
.clearance-empty { padding:22px; color:var(--muted); border:1px dashed var(--border); border-radius:12px; font-size:var(--text-xs); text-align:center; }
.clearance-hint { margin-top:12px; color:var(--subtle); font-size:var(--text-caption); }

/* ————— Orb (unchanged behaviour) ————— */
.orb-button { position:relative; display:inline-grid; place-items:center; width:38px; height:38px; min-width:38px; padding:0; overflow:hidden; border:1px solid var(--border); border-radius:50%; background:var(--surface); box-shadow:var(--orvyn-shadow-1); cursor:pointer; transition:transform .14s ease,box-shadow .16s ease; }
.orb-button img { display:block; width:34px; height:34px; padding:2px; border-radius:50%; background:rgba(255,255,255,.86); }
.orb-button:hover,.orb-button[aria-expanded="true"] { transform:translateY(-1px); box-shadow:0 0 0 3px var(--orvyn-accent-soft); }
@media (prefers-reduced-motion: no-preference) {
  html:not([data-orvyn-motion="reduced"]) .orb-button img,
  html:not([data-orvyn-motion="reduced"]) .orb-panel__head img,
  html:not([data-orvyn-motion="reduced"]) .orb-welcome img { animation:orvyn-spin 24s linear infinite; }
  @keyframes orvyn-spin { to { transform:rotate(360deg); } }
}
.orb-wrap { position:fixed; inset:0; z-index:100; overflow:hidden; contain:strict; }
.orb-scrim { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:rgba(10,14,17,.32); cursor:default; backdrop-filter:blur(2px); }
.orb-panel { position:absolute; inset:0 0 0 auto; display:flex; flex-direction:column; width:min(460px,94vw); height:100%; overflow:hidden; border:0; border-left:1px solid var(--border); border-radius:0; background:var(--surface); box-shadow:var(--orvyn-shadow-3); }
@media (prefers-reduced-motion: no-preference) {
  html:not([data-orvyn-motion="reduced"]) .orb-panel { animation:orb-enter .24s ease-out; }
  @keyframes orb-enter { from { transform:translateX(36px); opacity:.6; } }
}
.orb-panel__head { display:flex; align-items:center; justify-content:space-between; min-height:66px; padding:13px 15px; color:var(--text); border-bottom:1px solid var(--border); background:linear-gradient(135deg,var(--orvyn-accent-soft),var(--surface)); }
.orb-panel__head > div:first-child { display:flex; align-items:center; gap:10px; }
.orb-panel__head img { width:35px; height:35px; padding:2px; border-radius:50%; background:rgba(255,255,255,.9); box-shadow:0 0 0 1px var(--border); }
.orb-panel__head span { display:flex; flex-direction:column; }
.orb-panel__head strong { font-size:var(--text-md); }
.orb-panel__head small { margin-top:2px; color:var(--muted); font-size:var(--text-caption); }
.orb-panel__actions { display:flex; align-items:center; gap:6px; }
.orb-panel__actions button { min-width:34px; min-height:32px; padding:0 9px; color:var(--muted); border:1px solid var(--border); border-radius:8px; background:var(--surface); font-size:var(--text-xs); font-weight:700; cursor:pointer; }
.orb-panel__actions button:last-child { font-size:18px; }
.orb-panel__actions button:hover { color:var(--primary); background:var(--surface-2); }
.orb-messages { flex:1; overflow:auto; padding:16px; }
.orb-welcome { display:flex; align-items:flex-start; gap:10px; margin-bottom:14px; padding:13px; border:1px solid var(--orvyn-border-strong); border-radius:13px; background:var(--orvyn-accent-soft); }
.orb-welcome img { width:30px; height:30px; border-radius:50%; }
.orb-welcome span { display:flex; flex-direction:column; gap:3px; }
.orb-welcome strong { font-size:var(--text-sm); }
.orb-welcome small { color:var(--muted); font-size:var(--text-xs); line-height:1.45; }
.orb-answer,.orb-question { max-width:89%; margin-bottom:10px; padding:10px 12px; border-radius:12px; font-size:var(--text-sm); line-height:1.55; }
.orb-answer { color:var(--text); border-bottom-left-radius:4px; background:var(--surface-2); }
.orb-question { margin-left:auto; color:var(--orvyn-on-accent); border-bottom-right-radius:4px; background:var(--primary); }
.orb-inline-action { display:block; margin-top:9px; padding:0; color:var(--primary); border:0; background:transparent; font-size:var(--text-xs); font-weight:800; cursor:pointer; }
.orb-inline-action:hover { text-decoration:underline; }
.orb-prompts { display:flex; gap:6px; overflow:auto; padding:0 12px 10px; scrollbar-width:thin; }
.orb-prompts button { flex:none; padding:7px 9px; color:var(--primary); border:1px solid var(--orvyn-border-strong); border-radius:999px; background:var(--surface); font-size:var(--text-xs); cursor:pointer; }
.orb-prompts button:hover { background:var(--orvyn-accent-soft); }
.orb-panel form { display:flex; gap:7px; padding:11px 12px 8px; border-top:1px solid var(--border); }
.orb-panel form input { flex:1; height:41px; min-width:0; padding:0 11px; border-radius:9px; font-size:var(--text-sm); }
.orb-panel form input:focus { border-color:var(--primary); box-shadow:0 0 0 3px var(--orvyn-accent-soft); }
.orb-panel form button { width:41px; color:var(--orvyn-on-accent); border:0; border-radius:9px; background:var(--primary); font-size:var(--text-md); cursor:pointer; }
.orb-hint { padding:0 12px 10px; color:var(--subtle); font-size:var(--text-caption); text-align:center; }
.sr-only { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }

/* ————— Command palette ————— */
.palette { position:fixed; inset:0; z-index:120; }
.palette__scrim { position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:rgba(10,14,17,.4); backdrop-filter:blur(4px); cursor:default; }
.palette__panel { position:absolute; left:50%; top:14vh; width:min(640px,calc(100vw - 28px)); transform:translateX(-50%); border:1px solid var(--border); border-radius:16px; background:var(--orvyn-overlay); box-shadow:var(--orvyn-shadow-3); overflow:hidden; }
.palette__input-row { display:flex; align-items:center; gap:10px; padding:12px 16px; border-bottom:1px solid var(--border); color:var(--subtle); font-size:18px; }
.palette__input-row input { flex:1; height:36px; border:0; outline:0; background:transparent; color:var(--text); font-size:var(--text-md); }
.palette__results { max-height:min(420px,52vh); margin:0; padding:8px; overflow:auto; list-style:none; }
.palette__result { display:flex; align-items:baseline; justify-content:space-between; gap:12px; padding:10px 12px; border-radius:10px; cursor:pointer; }
.palette__result strong { font-size:var(--text-sm); }
.palette__result small { overflow:hidden; color:var(--subtle); font-size:var(--text-xs); text-overflow:ellipsis; white-space:nowrap; }
.palette__result.is-active { background:var(--orvyn-accent-soft); }
.palette__result--empty { justify-content:center; color:var(--muted); cursor:default; font-size:var(--text-xs); }
.palette__footer { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 14px; border-top:1px solid var(--border); color:var(--subtle); font-size:var(--text-caption); }

/* ————— Quick actions menu ————— */
.quick-actions { position:fixed; z-index:130; min-width:220px; padding:6px; border:1px solid var(--border); border-radius:12px; background:var(--orvyn-overlay); box-shadow:var(--orvyn-shadow-3); }
.quick-actions__heading { padding:7px 10px 5px; color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.quick-actions__item { display:block; width:100%; padding:9px 10px; color:var(--text); border:0; border-radius:8px; background:transparent; font-size:var(--text-sm); font-weight:600; text-align:left; cursor:pointer; }
.quick-actions__item:hover { background:var(--orvyn-accent-soft); }

/* ————— First-run welcome ————— */
.welcome { position:fixed; inset:0; z-index:140; display:grid; place-items:center; background:rgba(10,14,17,.5); backdrop-filter:blur(6px); }
.welcome__panel { position:relative; width:min(560px,calc(100vw - 28px)); padding:34px 34px 26px; border:1px solid var(--border); border-radius:22px; background:var(--orvyn-overlay); box-shadow:var(--orvyn-shadow-3); }
.welcome__mark { width:46px; height:46px; margin-bottom:14px; }
.welcome__slide h2 { margin:12px 0 10px; font-size:var(--text-2xl); letter-spacing:-.045em; }
.welcome__slide p { min-height:66px; margin:0; color:var(--muted); font-size:var(--text-base); line-height:1.65; }
.welcome__controls { display:flex; align-items:center; justify-content:space-between; margin-top:24px; }
.welcome__dots { display:flex; gap:6px; }
.welcome__dots i { width:8px; height:8px; border-radius:50%; background:var(--border); }
.welcome__dots i.is-active { background:var(--primary); }
.welcome__buttons { display:flex; gap:8px; }

/* ————— LoopWeave 26 evidence chain ————— */
.journey { position:fixed; inset:0; z-index:110; overflow-y:auto; background:var(--canvas); }
body.journey-open { overflow:hidden; }
.journey__chrome { display:flex; flex-direction:column; gap:16px; padding:26px clamp(22px,4vw,54px) 8px; }
.journey__back { align-self:flex-start; min-height:36px; padding:0 13px; color:var(--muted); border:1px solid var(--border); border-radius:10px; background:var(--surface); font-size:var(--text-xs); font-weight:800; cursor:pointer; }
.journey__back:hover { color:var(--primary); }
.journey__title h2 { margin:8px 0 8px; font-size:clamp(var(--text-2xl),3vw,var(--text-3xl)); letter-spacing:-.05em; }
.journey__title p { max-width:760px; margin:0; color:var(--muted); font-size:var(--text-base); line-height:1.65; }
.journey__body { display:grid; grid-template-columns:minmax(300px,380px) minmax(0,1fr); gap:clamp(18px,3vw,34px); padding:22px clamp(22px,4vw,54px) 60px; }
.journey__rail { position:relative; padding-left:18px; }
.journey__flowline { position:absolute; left:4px; top:26px; bottom:26px; width:2px; border-radius:2px; background:var(--border); }
.journey__flowline-fill { position:absolute; left:0; top:0; width:100%; height:100%; border-radius:2px; background:var(--primary); transform:scaleY(calc(var(--journey-progress,0))); transform-origin:top; }
.journey__flowline-dot { position:absolute; left:50%; top:0; width:10px; height:10px; margin-left:-5px; border-radius:50%; background:var(--primary); box-shadow:0 0 0 4px var(--orvyn-accent-soft); transform:translateY(var(--journey-y,0px)); }
@media (prefers-reduced-motion: no-preference) {
  html:not([data-orvyn-motion="reduced"]) .journey__flowline-fill { transition:transform .5s cubic-bezier(.2,.8,.3,1); }
  html:not([data-orvyn-motion="reduced"]) .journey__flowline-dot { transition:transform .5s cubic-bezier(.2,.8,.3,1); }
}
html[data-orvyn-motion="reduced"] .journey__flowline-dot { display:none; }
.journey__steps { display:flex; flex-direction:column; gap:8px; margin:0; padding:0; list-style:none; }
.journey-step { display:flex; align-items:center; gap:11px; width:100%; padding:11px 12px; color:var(--text); border:1px solid var(--border); border-radius:13px; background:var(--surface); text-align:left; cursor:pointer; transition:border-color .16s ease,background-color .16s ease; }
.journey-step:hover { border-color:var(--orvyn-border-strong); }
.journey-step.is-active { border-color:var(--primary); background:var(--orvyn-accent-soft); }
.journey-step.is-done .journey-step__index { color:var(--orvyn-on-accent); background:var(--primary); border-color:var(--primary); }
.journey-step__index { display:grid; place-items:center; width:26px; height:26px; flex:none; color:var(--muted); border:1px solid var(--border); border-radius:50%; background:var(--surface-2); font-size:var(--text-xs); font-weight:800; }
.journey-step__copy { display:flex; flex-direction:column; min-width:0; gap:1px; }
.journey-step__copy strong { font-size:var(--text-sm); }
.journey-step__copy small { color:var(--subtle); font-size:var(--text-caption); line-height:1.35; }
.journey-step__chip { flex:none; margin-left:auto; padding:3px 8px; color:var(--muted); border:1px solid var(--border); border-radius:999px; background:var(--surface-2); font-size:var(--text-caption); font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.journey__detail { min-height:520px; }
.journey-card { padding:clamp(20px,3vw,30px); border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); box-shadow:var(--orvyn-shadow-1); }
.journey-card__head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.journey-card__step { color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.journey-card__product { padding:4px 10px; color:var(--primary); border:1px solid var(--orvyn-border-strong); border-radius:999px; background:var(--orvyn-accent-soft); font-size:var(--text-caption); font-weight:800; }
.journey-card__value { margin:0 0 2px; font-size:clamp(30px,4vw,44px); letter-spacing:-.045em; line-height:1.05; }
.journey-card__unit { margin:0 0 14px; color:var(--muted); font-size:var(--text-sm); font-weight:700; }
.journey-card__summary { margin:0 0 14px; color:var(--muted); font-size:var(--text-base); line-height:1.7; }
.journey-card__meta { display:flex; flex-wrap:wrap; gap:6px 18px; margin-bottom:18px; color:var(--subtle); font-size:var(--text-xs); font-weight:700; }
.journey-card__actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; margin-bottom:16px; }
.journey-card__launches { display:flex; flex-wrap:wrap; gap:8px; }
.journey-card__pointout { margin:0 0 16px; padding:12px 14px; border:1px solid var(--border); border-radius:12px; background:var(--surface-2); }
.journey-card__pointout ul { margin:6px 0 0; padding-left:18px; color:var(--text); font-size:var(--text-sm); line-height:1.6; }
.journey-card__pointout li + li { margin-top:4px; }
.journey-card__meta b { color:var(--subtle); font-weight:800; letter-spacing:.06em; text-transform:uppercase; font-size:var(--text-caption); margin-right:4px; }
.journey-step__chip[data-journey-product="suite"],.journey-card__product[data-journey-product="suite"] { color:var(--primary); border-color:var(--orvyn-border-strong); }
.journey-card__nav { display:flex; gap:8px; }
.journey-hood { border:1px solid var(--border); border-radius:13px; background:var(--surface-2); }
.journey-hood > summary { padding:12px 14px; color:var(--primary); cursor:pointer; font-size:var(--text-sm); font-weight:800; list-style:none; }
.journey-hood > summary::-webkit-details-marker { display:none; }
.journey-hood > summary::after { content:'▾'; float:right; color:var(--subtle); }
.journey-hood[open] > summary::after { content:'▴'; }
.journey-hood__body { padding:2px 14px 16px; }
.journey-hood__payload { max-height:280px; margin:0; padding:12px; overflow:auto; color:var(--text); border:1px solid var(--border); border-radius:10px; background:var(--surface); font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:var(--text-xs); line-height:1.6; white-space:pre; }
.journey-hood__db,.journey-hood__audit { margin:0; color:var(--muted); font-size:var(--text-xs); line-height:1.6; }
.journey-layers { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.journey-layers i { color:var(--subtle); font-style:normal; }
.journey-layer { padding:6px 10px; color:var(--subtle); border:1px dashed var(--border); border-radius:9px; background:var(--surface); font-size:var(--text-caption); font-weight:800; }
.journey-layer.is-lit { color:var(--primary); border-style:solid; border-color:var(--orvyn-border-strong); background:var(--orvyn-accent-soft); }
.journey-audit-live { margin-top:12px; padding:12px; color:var(--muted); border:1px solid var(--border); border-radius:10px; background:var(--surface); font-size:var(--text-xs); }
.journey-audit-list { display:flex; flex-direction:column; gap:6px; margin:0 0 8px; padding:0; list-style:none; }
.journey-audit-list li { display:flex; flex-wrap:wrap; gap:6px; align-items:baseline; }
.journey-audit-list strong { color:var(--primary); }
.journey-audit-list small { color:var(--subtle); }
.journey-audit-link { color:var(--primary); font-weight:800; }

/* ————— Responsive ————— */
@media (max-width:1100px) { .suite-nav { width:210px; }.suite-workspace { margin-left:210px; }.hero { grid-template-columns:1fr; }.hero__visual { min-height:400px; }.product-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.product-card { min-height:340px; }.context-strip { flex-wrap:wrap; }.context-strip__intro { width:100%; }.suite-insight-grid { grid-template-columns:1fr; }.flow-row { grid-template-columns:1fr; }.flow-row > i { display:none; }.journey__body { grid-template-columns:1fr; }.evidence-workbench { grid-template-columns:1fr; } }
@media (max-width:760px) { .suite-nav { position:static; width:100%; height:auto; flex-direction:row; align-items:center; overflow:auto; padding:10px; }.suite-nav .brand { padding:0; }.brand__name,.tenant-chip,.nav-section-label,.nav-spacer,.suite-security,.sign-out { display:none; }.suite-nav nav { flex-direction:row; }.nav-link { width:auto; white-space:nowrap; }.suite-nav .nav-suite { display:none; }.suite-workspace { margin-left:0; }.suite-header { height:auto; min-height:60px; gap:8px; padding:10px 15px; }.global-search { width:100%; }.connection-state { display:none; } main { padding:18px 14px 70px; gap:32px; }.hero { min-height:0; padding:29px 22px; }.hero h1 { font-size:clamp(34px,11vw,44px); }.hero__actions { align-items:stretch; flex-direction:column; }.hero__visual { min-height:360px; }.map-node { min-width:104px; max-width:126px; }.product-grid { grid-template-columns:1fr; }.context-strip { align-items:stretch; }.context-strip label,.context-strip select { width:100%; }.context-strip__sync { text-align:left; }.section-heading { align-items:flex-start; flex-direction:column; }.section-count { display:none; }.suite-insight-grid { grid-template-columns:1fr; }.login-dialog form { grid-template-columns:1fr; }.login-visual { display:none; }.pulse-strip { grid-template-columns:repeat(2,minmax(0,1fr)); }.fabric-row { grid-template-columns:minmax(0,1fr) auto; }.fabric-row .fabric-chip--source { display:none; }.teaser-cta { flex-direction:column; align-items:stretch; }.clearance-item__actions { flex-wrap:wrap; }.journey__body { padding:16px 14px 50px; } }

@media (max-width:1320px) {
  .fabric-summary { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .fabric-controls { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .fabric-table-head,.fabric-row { grid-template-columns:28px minmax(180px,1.2fr) minmax(170px,1fr) minmax(170px,.9fr) 150px 18px; }
  .fabric-table-head > span:nth-child(4),.fabric-row > .fabric-chip--source { display:none; }
  .governance-grid { grid-template-columns:1fr; }
  .fabric-bulk { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .fabric-bulk > div,.fabric-bulk p { grid-column:1/-1; }
}
@media (max-width:760px) {
  .fabric-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .fabric-controls { grid-template-columns:1fr; }
  .fabric-table-head { display:none; }
  .fabric-row { grid-template-columns:28px minmax(0,1fr) auto; align-items:start; }
  .fabric-row__name { grid-column:2; }
  .fabric-row__value,.fabric-row__destinations { grid-column:2/4; }
  .fabric-row__state { grid-column:3; grid-row:1; }
  .fabric-row__open { display:none; }
  .fact-drawer__facts { grid-template-columns:1fr; }
  .fabric-bulk { grid-template-columns:1fr; }
  .fabric-bulk > div,.fabric-bulk p { grid-column:1; }
}

/* Reduced-motion hard stop: any remaining animation/transition is disabled. */
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; } }
html[data-orvyn-motion="reduced"] *,html[data-orvyn-motion="reduced"] *::before,html[data-orvyn-motion="reduced"] *::after { transition:none!important; animation:none!important; }

/* Sign-in: demonstration-profile dropdown (SLT 8/9) */
.login-fields select { width:100%; height:43px; padding:0 12px; border:1px solid var(--border); border-radius:10px; background:var(--surface); color:var(--text); font:inherit; font-size:var(--text-base); }
.login-fields select:focus { border-color:var(--primary); box-shadow:0 0 0 3px var(--orvyn-accent-soft); outline:none; }
.login-profile-hint { color:var(--subtle); font-size:var(--text-caption); font-weight:500; text-transform:none; letter-spacing:0; }

/* v7: which products did not connect at sign-in, and why (dismissable, bottom-right) */
.signin-gap { position:fixed; right:18px; bottom:18px; z-index:60; width:min(420px,calc(100vw - 36px)); padding:14px 40px 14px 16px; border:1px solid var(--border); border-left:4px solid var(--orvyn-warning, #C77700); border-radius:14px; background:var(--surface); color:var(--text); box-shadow:var(--orvyn-shadow-2); font-size:var(--text-base); }
.signin-gap strong { display:block; margin-bottom:6px; }
.signin-gap ul { margin:0 0 8px; padding-left:18px; }
.signin-gap li { margin:2px 0; }
.signin-gap small { color:var(--subtle); display:block; line-height:1.4; }
.signin-gap-close { position:absolute; top:8px; right:10px; border:0; background:transparent; color:var(--subtle); font-size:20px; line-height:1; cursor:pointer; }
.signin-gap-close:hover { color:var(--text); }

/* v7 (SLT 12): Orvyn Fabric as a company dashboard */
.fabric-dash-head { display:flex; justify-content:space-between; align-items:flex-end; gap:12px; flex-wrap:wrap; margin-top:16px; }
.fabric-dash-head h3 { margin:2px 0 0; font-size:var(--text-md, 15px); letter-spacing:-.01em; }
.fabric-stages { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:11px; font-weight:700; }
.fabric-stages .st { padding:3px 9px; border-radius:999px; border:1px solid var(--border); background:var(--surface-2); color:var(--subtle); }
.fabric-stages .st-1 { border-color:rgba(184,121,43,.35); color:#8a5a12; } .fabric-stages .st-2 { border-color:rgba(77,111,208,.35); color:#3452a8; } .fabric-stages .st-3 { border-color:rgba(15,107,92,.4); color:#0f6b5c; } .fabric-stages .st-4 { border-color:rgba(15,107,92,.6); color:#0b4d43; background:rgba(15,107,92,.08); }
.fabric-stages .arrow { color:var(--subtle); }
/* The stage chips on the charcoal dark ramp: the light-mode inks (#3452a8, #0b4d43 …) fell to about 2.5:1 there. */
html[data-orvyn-mode="dark"] .fabric-stages .st-1 { color:#E3AD62; } html[data-orvyn-mode="dark"] .fabric-stages .st-2 { color:#9DB3F2; } html[data-orvyn-mode="dark"] .fabric-stages .st-3 { color:#6FD0B6; } html[data-orvyn-mode="dark"] .fabric-stages .st-4 { color:#8FE0CA; background:rgba(47,158,131,.14); }
.fabric-dash { display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:10px; margin-top:12px; }
.fabric-tile { display:flex; flex-direction:column; gap:6px; min-width:0; padding:12px 13px; border:1px solid var(--border); border-radius:12px; background:var(--surface); text-align:left; font:inherit; color:inherit; cursor:pointer; transition:border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
.fabric-tile:hover { border-color:var(--primary); box-shadow:0 6px 18px rgba(17,24,39,.08); transform:translateY(-1px); }
.fabric-tile.is-on { border-color:var(--primary); box-shadow:inset 0 0 0 1px var(--primary); }
.fabric-tile__head { display:flex; justify-content:space-between; align-items:baseline; gap:8px; } .fabric-tile__head b { font-size:13px; } .fabric-tile__head small { color:var(--subtle); font-size:11px; font-weight:700; white-space:nowrap; }
.fabric-tile__lead { display:grid; gap:6px; } .fabric-tile__lead > div { display:flex; flex-direction:column; gap:1px; font-size:12px; min-width:0; }
.fabric-tile__lead .lbl { color:var(--subtle); min-width:0; line-height:1.35; overflow-wrap:break-word; } .fabric-tile__lead .val { font-weight:800; color:var(--primary); font-variant-numeric:tabular-nums; min-width:0; line-height:1.35; overflow-wrap:break-word; }
.fabric-tile__lead .val small { font-weight:600; color:var(--subtle); margin-left:3px; }
.fabric-tile__bar { display:flex; height:6px; border-radius:3px; overflow:hidden; background:var(--surface-2); } .fabric-tile__bar i { display:block; height:100%; }
.fabric-tile__bar .s1 { background:#c98a2b; } .fabric-tile__bar .s2 { background:#4d6fd0; } .fabric-tile__bar .s3 { background:#2f9e83; } .fabric-tile__bar .s4 { background:#0f6b5c; } .fabric-tile__bar .sx { background:#c2473d; }
.fabric-tile__foot { display:flex; justify-content:space-between; gap:6px; font-size:var(--text-caption); color:var(--subtle); flex-wrap:wrap; }
.fabric-tile__foot span { white-space:nowrap; }
.fabric-tile.is-empty { opacity:.6; }
.fabric-tile.is-empty:hover { transform:none; box-shadow:none; }
html[data-orvyn-mode="dark"] .fabric-tile:hover { box-shadow:0 6px 18px rgba(0,0,0,.35); }

/* v7 (SLT 12): a calmer home — the product suite as a three-up grid of compact cards, a slimmer shared-context strip,
   lighter pulse chips and a one-line journey ribbon. Nothing is removed; everything takes less room. */
@media (min-width: 1180px) {
  .product-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
  .product-card { min-height: 0; padding: 16px 16px 14px; }
  .product-card__top { margin-bottom: 12px; }
  .product-card h3 { margin: 4px 0 6px; font-size: var(--text-xl, 20px); }
  .product-card p { font-size: var(--text-sm, 13px); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .product-card .feature-list { margin-top: 8px; display: flex; flex-wrap: nowrap; overflow: hidden; gap: 6px; }
  .product-card .feature-list span { white-space: nowrap; flex: none; }
  .product-card .feature-list span:nth-child(n+4) { display: none; }
  .product-live { margin-top: 10px; }
  .hero { min-height: 340px; padding: clamp(24px, 3vw, 36px); }
  .journey-ribbon { margin-top: -10px; padding: 10px 16px; }
  .journey-ribbon small { display: none; }
  .context-strip { padding: 10px 14px; align-items: center; }
  .context-strip__intro { gap: 8px; }
  .context-strip__intro small { display: none; }
  .pulse-chip { min-height: 0; padding: 9px 12px; gap: 2px; }
  .pulse-chip strong { font-size: var(--text-md, 16px); min-height: 0; }
}

/* v7 (24 Sep 2026) — the ABG demonstration: a steward-queue fact opened from the thread is highlighted, a refused
   decision is explained beside the fact, and the thread card says what is in Orvyn Fabric now. */
.clearance-item.is-focused { border-color:var(--primary); box-shadow:0 0 0 3px var(--orvyn-accent-soft); }
.clearance-item__message { margin:0; padding:8px 10px; color:var(--danger); border:1px solid color-mix(in srgb,var(--danger) 40%,transparent); border-radius:9px; background:color-mix(in srgb,var(--danger) 8%,transparent); font-size:var(--text-caption); font-weight:700; line-height:1.5; }
.journey-card__live { margin:0 0 14px; padding:9px 12px; color:var(--text); border:1px solid var(--border); border-radius:10px; background:var(--surface-2); font-size:var(--text-sm); line-height:1.55; }
.journey-card__live b { margin-right:6px; color:var(--subtle); font-size:var(--text-caption); font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.journey-card__note { margin:0 0 14px; padding:9px 12px; color:var(--text); border:1px solid var(--orvyn-border-strong); border-left:3px solid var(--primary); border-radius:10px; background:var(--orvyn-accent-soft); font-size:var(--text-sm); line-height:1.55; }
.suite-notice p { margin:0; line-height:1.5; }

/* v7 (25 Sep 2026, ABG rehearsal): record codes stay on one line (a lot number broken at its hyphen reads as two codes),
   the steward is told plainly when they are accepting a fact they shared, and the pulse strip keeps two even rows. */
.code-nowrap { white-space:nowrap; }
.clearance-item__self,.fact-drawer__self { margin:0; padding:8px 10px; color:var(--text); border:1px solid color-mix(in srgb,var(--warning) 45%,var(--border)); border-left:3px solid var(--warning); border-radius:9px; background:color-mix(in srgb,var(--warning) 8%,transparent); font-size:var(--text-xs); line-height:1.5; }
.fact-drawer__self { margin:0 0 10px; }
@media (max-width:760px) { .pulse-strip { grid-template-columns:repeat(2,minmax(0,1fr)); } }
