/* ====================================================================
   Terra Vita Hub — Institutional Design System v348
   Drop-in stylesheet. Pairs with /assets/tvh-app-v348.js
   ==================================================================== */

@import url("https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300;9..144,400;9..144,500;9..144,600&family=DM+Sans:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap");

:root {
  --ink: #0a2a43;
  --ink-deep: #051a2c;
  --ink-700: #0f3a5e;
  --ink-soft: rgba(10, 42, 67, 0.6);
  --ink-faint: rgba(10, 42, 67, 0.15);
  --paper: #f9f5e9;
  --paper-pure: #fefcf3;
  --paper-warm: #f1ead7;
  --cream: #fffdf6;
  --accent: #2d4a3e;
  --rule: #0a2a43;
  --rule-soft: rgba(10, 42, 67, 0.15);
  --track: 0.18em;
  --container: 1280px;
  --ease: cubic-bezier(0.2, 0.7, 0.2, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "DM Sans", ui-sans-serif, system-ui, sans-serif;
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.039 0 0 0 0 0.165 0 0 0 0 0.263 0 0 0 0.04 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-attachment: fixed;
}
::selection { background: var(--ink); color: var(--cream); }
img, svg { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font-family: inherit; font-size: inherit; }
button { cursor: pointer; }
ul, ol { margin: 0; padding: 0; list-style: none; }
p { margin: 0; }

h1, h2, h3, h4 {
  margin: 0;
  font-family: "Fraunces", ui-serif, Georgia, serif;
  font-weight: 500;
  font-optical-sizing: auto;
  font-variation-settings: "opsz" 96, "SOFT" 30;
  letter-spacing: -0.015em;
  line-height: 1.04;
  color: var(--ink);
}

/* Skip link */
.tvh-skip { position: absolute; left: -9999px; top: 0; }
.tvh-skip:focus {
  left: 8px; top: 8px; z-index: 100;
  background: var(--ink); color: var(--cream);
  padding: 10px 14px;
  font: 500 11px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
}

/* Layout primitives */
.tvh-container { max-width: var(--container); margin: 0 auto; padding: 0 24px; }
@media (min-width: 1024px) { .tvh-container { padding: 0 40px; } }

.tvh-eyebrow {
  font: 500 11px/1 "JetBrains Mono", monospace;
  text-transform: uppercase;
  letter-spacing: var(--track);
  color: var(--ink-soft);
}
.tvh-ord {
  font: 500 12px/1 "JetBrains Mono", monospace;
  letter-spacing: var(--track);
  color: var(--accent);
}
.tvh-num {
  font: 500 10px/1 "JetBrains Mono", monospace;
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: rgba(10, 42, 67, 0.5);
}

/* CTAs */
.tvh-cta {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 11px 18px;
  border: 1px solid var(--ink);
  background: var(--paper-pure);
  color: var(--ink);
  font: 500 12px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  transition: background 220ms var(--ease), color 220ms var(--ease), border-color 220ms var(--ease);
}
.tvh-cta:hover { background: var(--ink); color: var(--cream); }
.tvh-cta-ghost {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 11px 18px;
  border: 1px solid var(--ink-faint);
  background: transparent;
  color: var(--ink);
  font: 500 12px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  transition: all 220ms var(--ease);
}
.tvh-cta-ghost:hover { border-color: var(--ink); background: var(--ink); color: var(--cream); }
.tvh-cta-primary {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 13px 22px;
  background: var(--ink); color: var(--cream);
  font: 500 12px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  border: 1px solid var(--ink);
  box-shadow: 0 14px 30px -18px rgba(10, 42, 67, 0.45);
  transition: transform 220ms var(--ease), box-shadow 220ms var(--ease), background 220ms var(--ease);
}
.tvh-cta-primary:hover {
  background: var(--ink-deep);
  transform: translateY(-1px);
  box-shadow: 0 18px 36px -16px rgba(10, 42, 67, 0.55);
}

/* Animated underline link */
.tvh-link {
  position: relative; display: inline-block;
  color: var(--ink); font-weight: 500;
  transition: color 200ms var(--ease);
}
.tvh-link::after {
  content: ""; position: absolute; left: 0; bottom: -2px;
  width: 100%; height: 1px; background: currentColor;
  transform-origin: right; transform: scaleX(0);
  transition: transform 360ms var(--ease);
}
.tvh-link:hover::after, .tvh-link:focus-visible::after { transform-origin: left; transform: scaleX(1); }
.tvh-link:hover { color: var(--accent); }

/* =========================================================
   HEADER
   ========================================================= */
.tvh-header {
  position: sticky; top: 0; z-index: 40;
  background: rgba(249, 245, 233, 0.6);
  backdrop-filter: saturate(150%) blur(10px);
  -webkit-backdrop-filter: saturate(150%) blur(10px);
  border-bottom: 1px solid transparent;
  transition: background 240ms var(--ease), border-color 240ms var(--ease), box-shadow 240ms var(--ease);
}
.tvh-header.is-scrolled {
  background: rgba(249, 245, 233, 0.92);
  border-bottom-color: var(--ink);
  box-shadow: 0 8px 24px -12px rgba(10, 42, 67, 0.18);
}
.tvh-header-inner {
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  height: 80px;
  transition: height 240ms var(--ease);
}
.tvh-header.is-scrolled .tvh-header-inner { height: 56px; }

.tvh-logo {
  display: inline-flex; align-items: center; gap: 12px;
  flex-shrink: 0;
}
.tvh-logo-mark {
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--ink);
  transition: transform 220ms var(--ease);
}
.tvh-logo:hover .tvh-logo-mark { transform: rotate(-4deg); }
.tvh-logo-mark svg { width: 18px; height: 18px; }
.tvh-logo-name {
  font-family: "Fraunces", serif;
  font-weight: 500; font-size: 19px;
  letter-spacing: -0.015em;
  color: var(--ink);
}
.tvh-logo-tag {
  display: none;
  padding-left: 12px;
  margin-left: 4px;
  border-left: 1px solid rgba(10, 42, 67, 0.2);
  font: 500 11px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  color: var(--ink-soft);
}
@media (min-width: 1280px) { .tvh-logo-tag { display: inline-block; } }

.tvh-nav-primary { display: none; align-items: center; gap: 28px; margin-left: auto; }
@media (min-width: 1024px) { .tvh-nav-primary { display: flex; } }
.tvh-nav-primary a {
  position: relative;
  font-size: 13px; color: var(--ink);
  white-space: nowrap;
  transition: color 200ms var(--ease);
}
.tvh-nav-primary a:hover, .tvh-nav-primary a.is-active { color: var(--accent); }
.tvh-nav-primary a.is-active::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -4px;
  height: 1px; background: var(--accent);
}

.tvh-nav-actions {
  display: none; align-items: center; gap: 14px; flex-shrink: 0;
  padding-left: 24px;
  border-left: 1px solid rgba(10, 42, 67, 0.15);
}
@media (min-width: 1024px) { .tvh-nav-actions { display: flex; } }
.tvh-nav-actions .tvh-link-text {
  font-size: 13px; color: var(--ink); white-space: nowrap;
  transition: color 200ms var(--ease);
}
.tvh-nav-actions .tvh-link-text:hover { color: var(--accent); }

.tvh-burger {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px;
  border: 1px solid rgba(10, 42, 67, 0.4);
  background: transparent; padding: 0;
}
@media (min-width: 1024px) { .tvh-burger { display: none; } }

.tvh-mobile-nav {
  display: none;
  border-top: 1px solid var(--ink);
  background: var(--paper-pure);
  max-height: calc(100vh - 80px);
  overflow-y: auto;
}
.tvh-mobile-nav.is-open { display: block; }
.tvh-mobile-nav-section { padding: 16px 24px; }
.tvh-mobile-nav-section + .tvh-mobile-nav-section { border-top: 1px solid var(--rule-soft); }
.tvh-mobile-nav-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 12px; }
.tvh-mobile-nav-section ul li a {
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 0;
  font-size: 14px; color: var(--ink);
  border-bottom: 1px solid var(--rule-soft);
}
.tvh-mobile-nav-section ul li:last-child a { border-bottom: 0; }
.tvh-mobile-nav-section ul li a span:last-child { font: 500 10px/1 "JetBrains Mono", monospace; color: rgba(10,42,67,0.4); }

/* =========================================================
   HERO / Authority Block
   ========================================================= */
.tvh-hero {
  position: relative; overflow: hidden;
  padding: 64px 0 96px;
}
@media (min-width: 1024px) { .tvh-hero { padding: 112px 0 128px; } }
.tvh-hero-grid {
  position: absolute; inset: 0; pointer-events: none; opacity: 0.07;
  background-image: linear-gradient(to right, var(--ink) 1px, transparent 1px), linear-gradient(to bottom, var(--ink) 1px, transparent 1px);
  background-size: 120px 120px;
}
.tvh-hero-glow {
  position: absolute; top: -120px; right: -160px; width: 600px; height: 600px;
  background: radial-gradient(circle, rgba(10,42,67,0.2) 0%, transparent 60%);
  pointer-events: none;
}
.tvh-hero-inner { position: relative; }
.tvh-hero-meta {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 28px;
}
.tvh-hero-meta-line { display: inline-block; height: 1px; width: 48px; background: rgba(10,42,67,0.3); }
.tvh-hero h1 {
  font-size: clamp(44px, 7vw, 112px);
  line-height: 0.92;
  font-weight: 500;
  letter-spacing: -0.02em;
  text-wrap: balance;
  max-width: 1100px;
}
.tvh-hero h1 .accent {
  color: var(--accent);
  font-weight: 300;
  font-style: italic;
}
.tvh-hero-lead {
  display: grid; gap: 32px;
  margin-top: 40px;
}
@media (min-width: 1024px) {
  .tvh-hero-lead { grid-template-columns: 7fr 5fr; gap: 40px; }
}
.tvh-hero-lead p {
  font-size: 18px; line-height: 1.5;
  color: rgba(10, 42, 67, 0.85);
  text-wrap: pretty;
}
.tvh-hero-aside {
  padding-left: 28px;
  border-left: 1px solid rgba(10, 42, 67, 0.2);
}
.tvh-hero-aside p {
  font-size: 14px; line-height: 1.6;
  color: rgba(10, 42, 67, 0.7);
}
.tvh-hero-aside p + p {
  margin-top: 14px; padding-top: 14px;
  border-top: 1px solid var(--rule-soft);
  font-size: 13px;
  color: rgba(10, 42, 67, 0.55);
}
.tvh-hero-actions {
  display: flex; flex-wrap: wrap; align-items: center; gap: 14px;
  margin-top: 56px;
}
.tvh-hero-posture {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  margin-top: 80px;
  background: var(--ink);
  border: 1px solid var(--ink);
  box-shadow: 0 2px 0 0 var(--ink), 0 14px 30px -18px rgba(10, 42, 67, 0.28);
}
@media (min-width: 768px) { .tvh-hero-posture { grid-template-columns: repeat(4, 1fr); } }
.tvh-hero-posture > div { background: var(--paper-pure); padding: 22px 24px; }
.tvh-hero-posture dt { margin-bottom: 8px; font: 500 11px/1 "JetBrains Mono", monospace; text-transform: uppercase; letter-spacing: var(--track); color: var(--ink-soft); }
.tvh-hero-posture dd { margin: 0; font-family: "Fraunces", serif; font-size: 22px; font-weight: 500; color: var(--ink); }

/* =========================================================
   Section primitives
   ========================================================= */
.tvh-section {
  position: relative;
  border-top: 1px solid var(--ink);
  padding: 72px 0 88px;
}
@media (min-width: 1024px) { .tvh-section { padding: 96px 0 112px; } }
.tvh-section-meta {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 28px;
}
.tvh-section h2 {
  font-size: clamp(28px, 3.6vw, 44px);
  max-width: 760px;
  margin-bottom: 20px;
}
.tvh-section-lead {
  max-width: 680px;
  font-size: 16px; line-height: 1.6;
  color: rgba(10, 42, 67, 0.78);
  text-wrap: pretty;
}

/* =========================================================
   Access Gateway
   ========================================================= */
.tvh-access-grid {
  display: grid; grid-template-columns: 1fr;
  gap: 1px;
  margin-top: 48px;
  background: var(--ink);
  border: 1px solid var(--ink);
  box-shadow: 0 14px 30px -18px rgba(10, 42, 67, 0.28);
}
@media (min-width: 1024px) { .tvh-access-grid { grid-template-columns: 1fr 1fr; } }
.tvh-access-card {
  padding: 36px 32px;
  display: flex; flex-direction: column;
}
.tvh-access-card.a { background: var(--paper-pure); }
.tvh-access-card.b { background: var(--paper-warm); }
.tvh-access-card-meta {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 20px;
}
.tvh-access-card h3 {
  font-size: 28px; line-height: 1.1;
  margin-bottom: 16px;
}
.tvh-access-card p {
  font-size: 15px; line-height: 1.6;
  color: rgba(10, 42, 67, 0.78);
  text-wrap: pretty;
}
.tvh-access-card ul { margin: 22px 0 32px; display: grid; gap: 10px; }
.tvh-access-card li {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: 13px;
  color: rgba(10, 42, 67, 0.72);
}
.tvh-access-card li::before {
  content: ""; flex-shrink: 0; width: 4px; height: 4px; background: var(--accent); margin-top: 7px;
}
.tvh-access-card-cta { margin-top: auto; }

/* =========================================================
   Canonical Route — Navy band
   ========================================================= */
.tvh-band-navy {
  position: relative; overflow: hidden;
  background: var(--ink);
  color: var(--cream);
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  padding: 80px 0 96px;
}
@media (min-width: 1024px) { .tvh-band-navy { padding: 112px 0 128px; } }
.tvh-band-navy::before {
  content: ""; position: absolute; inset: 0;
  background-image: linear-gradient(to right, rgba(255,253,246,0.05) 1px, transparent 1px);
  background-size: 120px 100%;
  opacity: 0.6;
  pointer-events: none;
}
.tvh-band-navy::after {
  content: ""; position: absolute; bottom: -160px; right: -120px;
  width: 500px; height: 500px;
  background: radial-gradient(circle, rgba(45, 74, 62, 0.4) 0%, transparent 60%);
  pointer-events: none;
}
.tvh-band-navy h2 { color: var(--cream); }
.tvh-band-navy h2 .accent { color: rgba(255, 253, 246, 0.55); font-weight: 300; font-style: italic; }
.tvh-band-navy .tvh-section-lead { color: rgba(255, 253, 246, 0.75); max-width: 640px; }
.tvh-band-navy .tvh-eyebrow { color: rgba(255, 253, 246, 0.55); }
.tvh-band-navy .tvh-ord { color: rgba(255, 253, 246, 0.5); }
.tvh-band-navy .tvh-hero-meta-line { background: rgba(255, 253, 246, 0.3); }

.tvh-route-grid {
  display: grid; grid-template-columns: 1fr; gap: 16px;
  margin-top: 56px;
  position: relative;
}
@media (min-width: 768px) { .tvh-route-grid { grid-template-columns: 1fr 1fr; gap: 18px; } }
@media (min-width: 1024px) { .tvh-route-grid { grid-template-columns: repeat(4, 1fr); gap: 20px; } }

.tvh-route-card {
  display: block;
  padding: 28px 24px;
  background: rgba(5, 26, 44, 0.4);
  border: 1px solid rgba(255, 253, 246, 0.18);
  color: var(--cream);
  transition: background 240ms var(--ease), border-color 240ms var(--ease), transform 240ms var(--ease);
}
.tvh-route-card:hover {
  background: rgba(5, 26, 44, 0.7);
  border-color: rgba(255, 253, 246, 0.5);
  transform: translateY(-2px);
}
.tvh-route-top {
  display: flex; align-items: baseline; justify-content: space-between;
  margin-bottom: 28px;
}
.tvh-route-top .num {
  font: 500 12px/1 "JetBrains Mono", monospace;
  letter-spacing: var(--track);
  color: rgba(255, 253, 246, 0.5);
  transition: color 240ms var(--ease);
}
.tvh-route-card:hover .tvh-route-top .num { color: var(--cream); }
.tvh-route-top .arrow {
  font: 500 11px/1 "JetBrains Mono", monospace;
  color: rgba(255, 253, 246, 0.3);
  transition: transform 240ms var(--ease), color 240ms var(--ease);
}
.tvh-route-card:hover .tvh-route-top .arrow {
  color: var(--cream);
  transform: translateX(4px);
}
.tvh-route-card h3 {
  font-size: 24px; line-height: 1.1;
  color: var(--cream);
  margin-bottom: 12px;
}
.tvh-route-card p {
  font-size: 13px; line-height: 1.55;
  color: rgba(255, 253, 246, 0.65);
}

.tvh-band-bottom {
  margin-top: 64px; padding-top: 24px;
  border-top: 1px solid rgba(255, 253, 246, 0.15);
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 16px;
  font: 500 10px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  color: rgba(255, 253, 246, 0.5);
}
.tvh-band-bottom .arrow-line { display: none; opacity: 0.5; }
@media (min-width: 768px) { .tvh-band-bottom .arrow-line { display: inline; } }

/* =========================================================
   Trust Signals — three pillars
   ========================================================= */
.tvh-trust-grid {
  display: grid; grid-template-columns: 1fr; gap: 1px;
  margin-top: 48px;
  background: var(--ink);
  border: 1px solid var(--ink);
}
@media (min-width: 768px) { .tvh-trust-grid { grid-template-columns: repeat(3, 1fr); } }
.tvh-trust-card {
  padding: 36px 32px;
  background: var(--paper-pure);
}
.tvh-trust-card h3 {
  font-size: 22px; line-height: 1.15;
  margin: 20px 0 16px;
}
.tvh-trust-card p {
  font-size: 14px; line-height: 1.6;
  color: rgba(10, 42, 67, 0.75);
}

/* =========================================================
   Spine — seven layers
   ========================================================= */
.tvh-spine-card {
  margin-top: 48px;
  background: var(--paper-pure);
  border: 1px solid var(--ink);
}
.tvh-spine-grid {
  display: grid; grid-template-columns: 1fr; gap: 1px;
  background: var(--ink);
}
@media (min-width: 768px) { .tvh-spine-grid { grid-template-columns: repeat(7, 1fr); } }
.tvh-spine-layer {
  position: relative;
  padding: 22px 18px;
  background: var(--paper-pure);
}
.tvh-spine-layer .ord {
  font: 500 12px/1 "JetBrains Mono", monospace;
  letter-spacing: var(--track);
  color: var(--accent);
}
.tvh-spine-layer h3 {
  margin-top: 14px;
  font-size: 18px; line-height: 1.15;
}
.tvh-spine-layer p {
  margin-top: 8px;
  font-size: 12px; line-height: 1.55;
  color: rgba(10, 42, 67, 0.7);
}
.tvh-spine-base {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 24px;
  background: var(--paper-warm);
  border-top: 1px solid var(--ink);
  font: 500 11px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  color: var(--ink-soft);
  flex-wrap: wrap; gap: 12px;
}

/* =========================================================
   Deployments
   ========================================================= */
.tvh-deploy-table {
  margin-top: 48px;
  background: var(--paper-pure);
  border: 1px solid var(--ink);
}
.tvh-deploy-head {
  display: none;
  grid-template-columns: 1fr 5fr 3fr 2fr 1fr;
  gap: 16px;
  padding: 14px 24px;
  border-bottom: 1px solid var(--ink);
  background: var(--paper-warm);
}
@media (min-width: 768px) { .tvh-deploy-head { display: grid; } }
.tvh-deploy-head > * {
  font: 500 11px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  color: var(--ink-soft);
}
.tvh-deploy-head > :last-child { text-align: right; }
.tvh-deploy-row {
  display: grid; grid-template-columns: 1fr; gap: 4px;
  padding: 22px 24px;
  border-bottom: 1px solid var(--rule-soft);
  transition: background 200ms var(--ease);
}
.tvh-deploy-row:last-child { border-bottom: 0; }
.tvh-deploy-row:hover { background: var(--paper-warm); }
@media (min-width: 768px) {
  .tvh-deploy-row { grid-template-columns: 1fr 5fr 3fr 2fr 1fr; align-items: center; gap: 16px; padding: 22px 24px; }
}
.tvh-deploy-ref { font: 500 12px/1 "JetBrains Mono", monospace; letter-spacing: var(--track); color: var(--accent); }
.tvh-deploy-type { font-family: "Fraunces", serif; font-weight: 500; font-size: 19px; line-height: 1.2; color: var(--ink); }
.tvh-deploy-region, .tvh-deploy-sector { font-size: 13px; color: rgba(10, 42, 67, 0.7); }
.tvh-deploy-region { font: 500 11px/1 "JetBrains Mono", monospace; text-transform: uppercase; letter-spacing: var(--track); color: rgba(10,42,67,0.65); }
.tvh-deploy-status { font: 500 10px/1 "JetBrains Mono", monospace; text-transform: uppercase; letter-spacing: var(--track); color: var(--accent); }
@media (min-width: 768px) { .tvh-deploy-status { text-align: right; } }

/* =========================================================
   Institutional Fit
   ========================================================= */
.tvh-fit-grid {
  display: grid; grid-template-columns: 1fr; gap: 1px;
  margin-top: 48px;
  background: var(--ink);
  border: 1px solid var(--ink);
}
@media (min-width: 768px) { .tvh-fit-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .tvh-fit-grid { grid-template-columns: repeat(3, 1fr); } }
.tvh-fit-card {
  padding: 28px 28px 32px;
  background: var(--paper-pure);
  transition: background 200ms var(--ease);
}
.tvh-fit-card:hover { background: var(--paper-warm); }
.tvh-fit-card-meta {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 18px;
}
.tvh-fit-card h3 {
  font-size: 22px; line-height: 1.15;
  margin-bottom: 12px;
}
.tvh-fit-card p {
  font-size: 14px; line-height: 1.6;
  color: rgba(10, 42, 67, 0.75);
}

/* =========================================================
   Footer
   ========================================================= */
.tvh-footer {
  margin-top: 96px;
  padding: 64px 0 56px;
  background: var(--paper-pure);
  border-top: 1px solid var(--ink);
}
.tvh-footer-grid {
  display: grid; grid-template-columns: 1fr; gap: 40px;
}
@media (min-width: 1024px) {
  .tvh-footer-grid { grid-template-columns: 5fr 3fr 2fr 2fr; gap: 48px; }
}
.tvh-footer h2 {
  font-size: 26px; line-height: 1.1;
  max-width: 380px;
  margin-bottom: 16px;
}
.tvh-footer-lede { font-size: 14px; line-height: 1.6; color: rgba(10, 42, 67, 0.7); max-width: 480px; }
.tvh-footer-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 24px; }
.tvh-footer h3 {
  font-family: "JetBrains Mono", monospace;
  font-weight: 500; font-size: 11px;
  text-transform: uppercase; letter-spacing: var(--track);
  color: var(--ink-soft);
  margin-bottom: 16px;
  letter-spacing: var(--track);
}
.tvh-footer ul { display: grid; gap: 10px; }
.tvh-footer ul a { font-size: 13px; color: var(--ink); }
.tvh-footer-issue {
  display: flex; flex-wrap: wrap; align-items: center; gap: 28px;
  margin-top: 56px; padding-top: 24px;
  border-top: 1px solid var(--rule-soft);
  font: 500 10px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  color: rgba(10, 42, 67, 0.55);
}
.tvh-footer-issue dt { color: rgba(10, 42, 67, 0.4); margin-right: 8px; display: inline; }
.tvh-footer-issue dd { display: inline; margin: 0; color: var(--ink); }
.tvh-footer-issue > div { display: flex; gap: 6px; }
.tvh-footer-bottom {
  margin-top: 18px;
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px; align-items: center;
}
.tvh-footer-legal {
  display: flex; flex-wrap: wrap; gap: 24px;
  font: 500 11px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  color: var(--ink-soft);
}
.tvh-footer-copy {
  font: 500 11px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  color: var(--ink-soft);
}

/* =========================================================
   Reveal animation (vanilla JS-driven)
   ========================================================= */
.tvh-reveal { opacity: 0; transform: translateY(14px); transition: opacity 700ms var(--ease), transform 700ms var(--ease); }
.tvh-reveal.is-visible { opacity: 1; transform: translateY(0); }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .tvh-reveal { opacity: 1; transform: none; }
}

/* =========================================================
   Forms (sign-in, request-access)
   ========================================================= */
.tvh-form-frame {
  background: var(--paper-pure);
  border: 1px solid var(--ink);
}
.tvh-form-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 28px;
  border-bottom: 1px solid var(--ink);
}
.tvh-form { padding: 28px; display: grid; gap: 22px; }
.tvh-form-row { display: grid; gap: 20px; }
@media (min-width: 768px) { .tvh-form-row { grid-template-columns: 1fr 1fr; } }
.tvh-field label {
  display: block;
  margin-bottom: 8px;
  font: 500 11px/1 "JetBrains Mono", monospace;
  text-transform: uppercase; letter-spacing: var(--track);
  color: var(--ink-soft);
}
.tvh-field input, .tvh-field select, .tvh-field textarea {
  display: block; width: 100%;
  padding: 13px 14px;
  background: var(--paper-pure);
  border: 1px solid rgba(10, 42, 67, 0.4);
  color: var(--ink);
  font-family: "DM Sans", sans-serif; font-size: 15px;
  outline: none;
  transition: border-color 200ms var(--ease), box-shadow 200ms var(--ease);
}
.tvh-field input:focus, .tvh-field select:focus, .tvh-field textarea:focus {
  border-color: var(--ink);
  box-shadow: 0 0 0 1px var(--ink);
}
.tvh-field textarea { resize: vertical; min-height: 110px; }
.tvh-form-error {
  padding: 10px 14px;
  background: var(--paper-warm);
  border: 1px solid var(--ink);
  font-size: 13px;
}
.tvh-form-success {
  padding: 18px;
  background: var(--paper-warm);
  border: 1px solid var(--accent);
  font-size: 14px;
}

/* Print */
@media print {
  body { background: #fff !important; background-image: none !important; color: #000 !important; }
  .tvh-header, .tvh-footer, .tvh-no-print { display: none !important; }
}

/* =========================================================
   SEARCH — header trigger + full-screen overlay
   ========================================================= */
.tvh-search-trigger {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 12px;
  background: transparent;
  border: 1px solid rgba(10, 42, 67, 0.3);
  color: var(--ink);
  transition: all 200ms var(--ease);
}
.tvh-search-trigger:hover {
  border-color: var(--ink);
  background: var(--paper-pure);
}
.tvh-search-trigger svg { width: 14px; height: 14px; }
.tvh-search-trigger .label {
  display: none;
  font-size: 12px;
  color: var(--ink-soft);
}
@media (min-width: 1024px) {
  .tvh-search-trigger .label { display: inline; }
}
.tvh-search-shortcut {
  display: none;
  padding: 2px 6px;
  border: 1px solid rgba(10, 42, 67, 0.2);
  font: 500 10px/1 "JetBrains Mono", monospace;
  color: var(--ink-soft);
  letter-spacing: 0;
  text-transform: none;
}
@media (min-width: 1024px) {
  .tvh-search-shortcut { display: inline-block; }
}

/* Overlay backdrop */
.tvh-search-overlay {
  position: fixed; inset: 0; z-index: 60;
  background: rgba(5, 26, 44, 0.65);
  backdrop-filter: saturate(140%) blur(8px);
  -webkit-backdrop-filter: saturate(140%) blur(8px);
  display: none;
  align-items: flex-start;
  justify-content: center;
  padding: 80px 24px 24px;
  opacity: 0;
  transition: opacity 200ms var(--ease);
}
.tvh-search-overlay.is-open {
  display: flex;
  opacity: 1;
}

/* Search card */
.tvh-search-card {
  width: 100%; max-width: 720px;
  background: var(--paper-pure);
  border: 1px solid var(--ink);
  box-shadow: 0 30px 80px -20px rgba(5, 26, 44, 0.6);
  display: flex; flex-direction: column;
  max-height: calc(100vh - 120px);
  transform: translateY(-12px);
  opacity: 0;
  transition: transform 260ms var(--ease), opacity 260ms var(--ease);
}
.tvh-search-overlay.is-open .tvh-search-card {
  transform: translateY(0);
  opacity: 1;
}

/* Input row */
.tvh-search-input-row {
  position: relative;
  display: flex; align-items: center;
  border-bottom: 1px solid var(--ink);
}
.tvh-search-input-row svg.search-icon {
  position: absolute;
  left: 22px;
  width: 18px; height: 18px;
  color: var(--ink-soft);
  pointer-events: none;
}
.tvh-search-input-row input {
  flex: 1;
  border: 0;
  outline: 0;
  background: transparent;
  padding: 22px 22px 22px 56px;
  font-family: "Fraunces", serif;
  font-weight: 400;
  font-size: 22px;
  color: var(--ink);
  letter-spacing: -0.005em;
}
.tvh-search-input-row input::placeholder {
  color: rgba(10, 42, 67, 0.35);
}
.tvh-search-close {
  margin-right: 14px;
  padding: 4px 10px;
  background: transparent;
  border: 1px solid rgba(10, 42, 67, 0.25);
  color: var(--ink-soft);
  font: 500 10px/1.4 "JetBrains Mono", monospace;
  text-transform: uppercase;
  letter-spacing: var(--track);
  transition: all 200ms var(--ease);
}
.tvh-search-close:hover {
  border-color: var(--ink);
  color: var(--ink);
}

/* Results list */
.tvh-search-results {
  overflow-y: auto;
  flex: 1;
  padding: 4px 0;
}
.tvh-search-section-label {
  padding: 16px 22px 6px;
  font: 500 10px/1 "JetBrains Mono", monospace;
  text-transform: uppercase;
  letter-spacing: var(--track);
  color: rgba(10, 42, 67, 0.45);
  background: var(--paper-warm);
  border-top: 1px solid var(--rule-soft);
  border-bottom: 1px solid var(--rule-soft);
}
.tvh-search-section-label:first-child { border-top: 0; }

.tvh-search-result {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px;
  padding: 14px 22px;
  cursor: pointer;
  border-left: 2px solid transparent;
  text-decoration: none; color: inherit;
  transition: background 160ms var(--ease), border-color 160ms var(--ease);
}
.tvh-search-result:hover,
.tvh-search-result.is-selected {
  background: var(--paper-warm);
  border-left-color: var(--accent);
}
.tvh-search-result-main { flex: 1; min-width: 0; }
.tvh-search-result-title {
  font-family: "Fraunces", serif;
  font-weight: 500;
  font-size: 16px;
  line-height: 1.25;
  color: var(--ink);
  margin-bottom: 4px;
}
.tvh-search-result-title mark {
  background: rgba(45, 74, 62, 0.18);
  color: var(--ink);
  padding: 0 2px;
}
.tvh-search-result-meta {
  font-size: 12px;
  color: rgba(10, 42, 67, 0.6);
  line-height: 1.4;
}
.tvh-search-result-meta mark {
  background: rgba(45, 74, 62, 0.15);
  color: var(--ink);
  padding: 0 2px;
}
.tvh-search-result-section {
  font: 500 10px/1 "JetBrains Mono", monospace;
  text-transform: uppercase;
  letter-spacing: var(--track);
  color: var(--accent);
  white-space: nowrap;
  flex-shrink: 0;
  padding-top: 4px;
}
.tvh-search-result-arrow {
  font: 500 11px/1 "JetBrains Mono", monospace;
  color: rgba(10, 42, 67, 0.3);
  flex-shrink: 0;
  padding-top: 4px;
  transition: color 160ms var(--ease), transform 160ms var(--ease);
}
.tvh-search-result:hover .tvh-search-result-arrow,
.tvh-search-result.is-selected .tvh-search-result-arrow {
  color: var(--accent);
  transform: translateX(3px);
}

/* Empty / no results state */
.tvh-search-empty {
  padding: 40px 22px;
  text-align: center;
}
.tvh-search-empty .label {
  font-family: "Fraunces", serif;
  font-size: 18px;
  color: var(--ink);
  margin-bottom: 8px;
}
.tvh-search-empty .hint {
  font-size: 13px;
  color: rgba(10, 42, 67, 0.6);
}

/* Footer hints */
.tvh-search-footer {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 12px;
  padding: 12px 22px;
  border-top: 1px solid var(--rule-soft);
  background: var(--paper-warm);
  font: 500 10px/1.4 "JetBrains Mono", monospace;
  text-transform: uppercase;
  letter-spacing: var(--track);
  color: rgba(10, 42, 67, 0.55);
}
.tvh-search-footer kbd {
  display: inline-block;
  padding: 2px 6px;
  background: var(--paper-pure);
  border: 1px solid rgba(10, 42, 67, 0.2);
  font-family: "JetBrains Mono", monospace;
  font-size: 10px;
  color: var(--ink);
  margin: 0 2px;
}
.tvh-search-footer-keys { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; }


/* =========================================================
   v348 Document, diagram and artefact library additions
   ========================================================= */
.tvh-doc-hero {
  padding: 96px 0 48px;
  border-bottom: 1px solid var(--ink);
  background: linear-gradient(135deg, rgba(10,42,67,.08), rgba(30,127,79,.08));
}
.tvh-doc-hero h1 { max-width: 980px; font-size: clamp(44px, 8vw, 92px); }
.tvh-doc-hero p { max-width: 820px; margin-top: 20px; color: rgba(10,42,67,.78); font-size: 18px; line-height: 1.55; }
.tvh-doc-controls { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.tvh-pill {
  display: inline-flex; align-items: center; gap: 8px;
  border: 1px solid rgba(10,42,67,.25); background: var(--paper-pure);
  padding: 8px 12px; font: 500 10px/1 "JetBrains Mono", monospace;
  letter-spacing: var(--track); text-transform: uppercase; color: var(--ink);
}
.tvh-doc-section { padding: 64px 0; border-bottom: 1px solid var(--rule-soft); }
.tvh-doc-grid { display: grid; gap: 16px; margin-top: 24px; }
@media (min-width: 760px) { .tvh-doc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1120px) { .tvh-doc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.tvh-doc-card {
  display: flex; flex-direction: column; min-height: 245px;
  border: 1px solid var(--ink); background: var(--paper-pure); padding: 20px;
  transition: transform 220ms var(--ease), box-shadow 220ms var(--ease), background 220ms var(--ease);
}
.tvh-doc-card:hover { transform: translateY(-2px); box-shadow: 0 20px 40px -28px rgba(10,42,67,.55); background: var(--cream); }
.tvh-doc-card-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; margin-bottom: 18px; }
.tvh-doc-type { font: 500 10px/1 "JetBrains Mono", monospace; text-transform: uppercase; letter-spacing: var(--track); color: var(--accent); }
.tvh-doc-format { border: 1px solid rgba(10,42,67,.22); padding: 5px 7px; font: 500 10px/1 "JetBrains Mono", monospace; color: var(--ink); }
.tvh-doc-card h3 { font-size: 24px; line-height: 1.08; }
.tvh-doc-card p { margin-top: 12px; color: rgba(10,42,67,.76); font-size: 13.5px; line-height: 1.55; }
.tvh-doc-card-meta { margin-top: auto; padding-top: 18px; display: flex; justify-content: space-between; gap: 12px; align-items: center; border-top: 1px solid var(--rule-soft); }
.tvh-doc-card-meta span { font: 500 10px/1 "JetBrains Mono", monospace; color: rgba(10,42,67,.55); text-transform: uppercase; letter-spacing: .12em; }
.tvh-doc-feature {
  display: grid; gap: 24px; align-items: stretch; margin-top: 30px;
}
@media (min-width: 900px) { .tvh-doc-feature { grid-template-columns: 1.2fr .8fr; } }
.tvh-doc-feature-main { background: var(--ink); color: var(--cream); padding: 30px; }
.tvh-doc-feature-main h3 { color: var(--cream); font-size: clamp(32px, 5vw, 54px); }
.tvh-doc-feature-main p { margin-top: 18px; color: rgba(255,253,246,.82); max-width: 760px; }
.tvh-doc-feature-main .tvh-cta-ghost { color: var(--cream); border-color: rgba(255,253,246,.35); }
.tvh-doc-feature-main .tvh-cta-ghost:hover { background: var(--cream); color: var(--ink); }
.tvh-doc-feature-side { border: 1px solid var(--ink); padding: 24px; background: var(--paper-pure); }
.tvh-doc-feature-side ul { display: grid; gap: 10px; margin-top: 14px; list-style: none; }
.tvh-doc-feature-side li { display: flex; gap: 10px; font-size: 13px; color: rgba(10,42,67,.78); }
.tvh-doc-feature-side li::before { content: "•"; color: var(--accent); font-weight: 700; }
.tvh-search-result-filemeta { margin-top: 5px; font: 500 10px/1.2 "JetBrains Mono", monospace; color: rgba(10,42,67,.5); text-transform: uppercase; letter-spacing: .08em; }
.tvh-diagram-preview { margin-top: 24px; border: 1px solid var(--ink); background: var(--paper-pure); padding: 14px; }
.tvh-diagram-preview img { width: 100%; height: auto; }


/* v348 committee review order and category search prompts */
.tvh-search-categories {
  display: flex; flex-wrap: wrap; gap: 8px;
  padding: 12px 22px;
  border-bottom: 1px solid var(--rule-soft);
  background: var(--paper-warm);
}
.tvh-search-categories button {
  border: 1px solid rgba(10,42,67,.24);
  background: var(--paper-pure);
  color: var(--ink);
  padding: 7px 10px;
  font: 500 10px/1 "JetBrains Mono", monospace;
  letter-spacing: var(--track);
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color 160ms var(--ease), background 160ms var(--ease);
}
.tvh-search-categories button:hover { border-color: var(--ink); background: var(--cream); }
.tvh-category-grid { display: grid; gap: 14px; margin-top: 24px; }
@media (min-width: 760px) { .tvh-category-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.tvh-category-card {
  border: 1px solid var(--rule-soft);
  background: var(--paper-pure);
  padding: 18px;
  min-height: 150px;
  text-decoration: none;
  color: inherit;
}
.tvh-category-card:hover { border-color: var(--ink); background: var(--cream); }
.tvh-category-card h3 { font-size: 20px; line-height: 1.1; }
.tvh-category-card p { margin-top: 10px; font-size: 12.5px; line-height: 1.45; color: rgba(10,42,67,.72); }
.tvh-review-order { counter-reset: review-step; display: grid; gap: 12px; margin-top: 24px; }
@media (min-width: 900px) { .tvh-review-order { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.tvh-review-step {
  counter-increment: review-step;
  border: 1px solid var(--ink);
  background: var(--paper-pure);
  padding: 18px;
  min-height: 185px;
  position: relative;
}
.tvh-review-step::before {
  content: counter(review-step, decimal-leading-zero);
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px;
  background: var(--ink); color: var(--cream);
  font: 500 11px/1 "JetBrains Mono", monospace;
  margin-bottom: 14px;
}
.tvh-review-step h3 { font-size: 21px; line-height: 1.12; }
.tvh-review-step p { margin-top: 10px; font-size: 12.5px; line-height: 1.5; color: rgba(10,42,67,.74); }
.tvh-release-note {
  margin-top: 22px;
  border: 1px solid var(--accent);
  background: rgba(30,127,79,.08);
  padding: 16px 18px;
  font-size: 13px;
  color: rgba(10,42,67,.78);
}


/* =========================================================
   v348 Public Search Results & Document Detail Layer
   Institutional-grade public artefact search; no protected data.
   ========================================================= */
.tvh-search-page-hero {
  padding: 88px 0 42px;
  border-bottom: 1px solid var(--ink);
  background: linear-gradient(135deg, rgba(10,42,67,.09), rgba(30,127,79,.08));
}
.tvh-search-page-hero h1 { max-width: 1080px; font-size: clamp(42px, 7vw, 84px); }
.tvh-search-page-hero p { max-width: 880px; margin-top: 18px; color: rgba(10,42,67,.78); font-size: 18px; line-height: 1.55; }
.tvh-search-page-shell { padding: 42px 0 72px; }
.tvh-search-command {
  display: grid; gap: 16px; align-items: stretch;
  border: 1px solid var(--ink); background: var(--paper-pure); padding: 18px;
  box-shadow: 0 24px 48px -42px rgba(10,42,67,.55);
}
@media (min-width: 940px) { .tvh-search-command { grid-template-columns: 1.2fr .8fr; } }
.tvh-search-query-box { display: grid; gap: 10px; }
.tvh-search-query-box label,
.tvh-search-filter-label { font: 500 10px/1 "JetBrains Mono", monospace; letter-spacing: var(--track); text-transform: uppercase; color: var(--accent); }
.tvh-search-query-input {
  width: 100%; border: 1px solid rgba(10,42,67,.28); background: var(--cream);
  padding: 16px 16px; font: 500 18px/1.2 "Inter", sans-serif; color: var(--ink);
  outline: none;
}
.tvh-search-query-input:focus { border-color: var(--ink); box-shadow: 0 0 0 3px rgba(10,42,67,.08); }
.tvh-filter-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
@media (min-width: 680px) { .tvh-filter-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.tvh-filter-select {
  border: 1px solid rgba(10,42,67,.24); background: var(--cream); color: var(--ink);
  padding: 11px 10px; font: 500 11px/1.2 "JetBrains Mono", monospace; letter-spacing: .08em; text-transform: uppercase;
}
.tvh-search-prompt-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.tvh-search-prompt-row button,
.tvh-search-reset {
  border: 1px solid rgba(10,42,67,.24); background: var(--paper-pure); color: var(--ink);
  padding: 8px 10px; font: 500 10px/1 "JetBrains Mono", monospace; letter-spacing: var(--track); text-transform: uppercase; cursor: pointer;
}
.tvh-search-prompt-row button:hover,
.tvh-search-reset:hover { border-color: var(--ink); background: var(--cream); }
.tvh-search-assurance-box {
  border: 1px solid rgba(10,42,67,.28); background: var(--paper-warm); padding: 18px;
}
.tvh-search-assurance-box ul { margin-top: 10px; display: grid; gap: 8px; list-style: none; }
.tvh-search-assurance-box li { font-size: 13px; color: rgba(10,42,67,.76); line-height: 1.5; display: flex; gap: 8px; }
.tvh-search-assurance-box li::before { content: "•"; color: var(--accent); font-weight: 700; }
.tvh-search-status-row {
  display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  margin-top: 24px; padding: 14px 0; border-bottom: 1px solid var(--rule-soft);
}
.tvh-search-status-row p { font: 500 11px/1.4 "JetBrains Mono", monospace; letter-spacing: .08em; text-transform: uppercase; color: rgba(10,42,67,.62); }
.tvh-result-grid { display: grid; gap: 16px; margin-top: 24px; }
@media (min-width: 900px) { .tvh-result-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.tvh-detail-card {
  display: grid; gap: 16px; border: 1px solid var(--ink); background: var(--paper-pure); padding: 20px; min-height: 260px;
  text-decoration: none; color: inherit; transition: transform 180ms var(--ease), box-shadow 180ms var(--ease), background 180ms var(--ease);
}
.tvh-detail-card:hover { transform: translateY(-2px); background: var(--cream); box-shadow: 0 22px 46px -34px rgba(10,42,67,.6); }
.tvh-detail-top { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
.tvh-detail-badges { display: flex; gap: 7px; flex-wrap: wrap; }
.tvh-detail-badge {
  border: 1px solid rgba(10,42,67,.2); padding: 5px 7px; background: var(--paper-warm);
  font: 500 10px/1 "JetBrains Mono", monospace; text-transform: uppercase; letter-spacing: .1em; color: var(--ink);
}
.tvh-detail-card h3 { font-size: clamp(24px, 3vw, 34px); line-height: 1.05; }
.tvh-detail-card p { color: rgba(10,42,67,.76); line-height: 1.55; font-size: 13.5px; }
.tvh-detail-meta { display: grid; gap: 8px; margin-top: auto; padding-top: 12px; border-top: 1px solid var(--rule-soft); }
.tvh-detail-row { display: grid; grid-template-columns: 120px 1fr; gap: 10px; align-items: baseline; }
.tvh-detail-key { font: 500 10px/1 "JetBrains Mono", monospace; text-transform: uppercase; letter-spacing: .1em; color: rgba(10,42,67,.52); }
.tvh-detail-value { font-size: 12px; color: rgba(10,42,67,.76); overflow-wrap: anywhere; }
.tvh-hash { font-family: "JetBrains Mono", monospace; font-size: 10.5px; background: rgba(10,42,67,.04); padding: 6px 7px; border: 1px solid rgba(10,42,67,.12); display: inline-block; }
.tvh-empty-results {
  margin-top: 24px; border: 1px solid var(--accent); background: rgba(30,127,79,.08); padding: 22px;
}
.tvh-empty-results h3 { font-size: 26px; }
.tvh-empty-results p { margin-top: 8px; color: rgba(10,42,67,.74); }
.tvh-review-rail { margin-top: 32px; border-top: 1px solid var(--ink); padding-top: 26px; }
.tvh-review-rail .tvh-review-order { margin-top: 18px; }
@media print {
  .tvh-search-command, .tvh-search-prompt-row, .tvh-search-trigger { display: none !important; }
  .tvh-result-grid { grid-template-columns: 1fr; }
  .tvh-detail-card { break-inside: avoid; box-shadow: none; }
}


/* =========================================================
   v348 Public Search Results & Document Detail Layer
   Institutional-grade public artefact search; no protected data.
   ========================================================= */
.tvh-search-page-hero {
  padding: 88px 0 42px;
  border-bottom: 1px solid var(--ink);
  background: linear-gradient(135deg, rgba(10,42,67,.09), rgba(30,127,79,.08));
}
.tvh-search-page-hero h1 { max-width: 1080px; font-size: clamp(42px, 7vw, 84px); }
.tvh-search-page-hero p { max-width: 880px; margin-top: 18px; color: rgba(10,42,67,.78); font-size: 18px; line-height: 1.55; }
.tvh-search-page-shell { padding: 42px 0 72px; }
.tvh-search-command {
  display: grid; gap: 16px; align-items: stretch;
  border: 1px solid var(--ink); background: var(--paper-pure); padding: 18px;
  box-shadow: 0 24px 48px -42px rgba(10,42,67,.55);
}
@media (min-width: 940px) { .tvh-search-command { grid-template-columns: 1.2fr .8fr; } }
.tvh-search-query-box { display: grid; gap: 10px; }
.tvh-search-query-box label,
.tvh-search-filter-label { font: 500 10px/1 "JetBrains Mono", monospace; letter-spacing: var(--track); text-transform: uppercase; color: var(--accent); }
.tvh-search-query-input {
  width: 100%; border: 1px solid rgba(10,42,67,.28); background: var(--cream);
  padding: 16px 16px; font: 500 18px/1.2 "Inter", sans-serif; color: var(--ink);
  outline: none;
}
.tvh-search-query-input:focus { border-color: var(--ink); box-shadow: 0 0 0 3px rgba(10,42,67,.08); }
.tvh-filter-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
@media (min-width: 680px) { .tvh-filter-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.tvh-filter-select {
  border: 1px solid rgba(10,42,67,.24); background: var(--cream); color: var(--ink);
  padding: 11px 10px; font: 500 11px/1.2 "JetBrains Mono", monospace; letter-spacing: .08em; text-transform: uppercase;
}
.tvh-search-prompt-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.tvh-search-prompt-row button,
.tvh-search-reset {
  border: 1px solid rgba(10,42,67,.24); background: var(--paper-pure); color: var(--ink);
  padding: 8px 10px; font: 500 10px/1 "JetBrains Mono", monospace; letter-spacing: var(--track); text-transform: uppercase; cursor: pointer;
}
.tvh-search-prompt-row button:hover,
.tvh-search-reset:hover { border-color: var(--ink); background: var(--cream); }
.tvh-search-assurance-box {
  border: 1px solid rgba(10,42,67,.28); background: var(--paper-warm); padding: 18px;
}
.tvh-search-assurance-box ul { margin-top: 10px; display: grid; gap: 8px; list-style: none; }
.tvh-search-assurance-box li { font-size: 13px; color: rgba(10,42,67,.76); line-height: 1.5; display: flex; gap: 8px; }
.tvh-search-assurance-box li::before { content: "•"; color: var(--accent); font-weight: 700; }
.tvh-search-status-row {
  display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  margin-top: 24px; padding: 14px 0; border-bottom: 1px solid var(--rule-soft);
}
.tvh-search-status-row p { font: 500 11px/1.4 "JetBrains Mono", monospace; letter-spacing: .08em; text-transform: uppercase; color: rgba(10,42,67,.62); }
.tvh-result-grid { display: grid; gap: 16px; margin-top: 24px; }
@media (min-width: 900px) { .tvh-result-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.tvh-detail-card {
  display: grid; gap: 16px; border: 1px solid var(--ink); background: var(--paper-pure); padding: 20px; min-height: 260px;
  text-decoration: none; color: inherit; transition: transform 180ms var(--ease), box-shadow 180ms var(--ease), background 180ms var(--ease);
}
.tvh-detail-card:hover { transform: translateY(-2px); background: var(--cream); box-shadow: 0 22px 46px -34px rgba(10,42,67,.6); }
.tvh-detail-top { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
.tvh-detail-badges { display: flex; gap: 7px; flex-wrap: wrap; }
.tvh-detail-badge {
  border: 1px solid rgba(10,42,67,.2); padding: 5px 7px; background: var(--paper-warm);
  font: 500 10px/1 "JetBrains Mono", monospace; text-transform: uppercase; letter-spacing: .1em; color: var(--ink);
}
.tvh-detail-card h3 { font-size: clamp(24px, 3vw, 34px); line-height: 1.05; }
.tvh-detail-card p { color: rgba(10,42,67,.76); line-height: 1.55; font-size: 13.5px; }
.tvh-detail-meta { display: grid; gap: 8px; margin-top: auto; padding-top: 12px; border-top: 1px solid var(--rule-soft); }
.tvh-detail-row { display: grid; grid-template-columns: 120px 1fr; gap: 10px; align-items: baseline; }
.tvh-detail-key { font: 500 10px/1 "JetBrains Mono", monospace; text-transform: uppercase; letter-spacing: .1em; color: rgba(10,42,67,.52); }
.tvh-detail-value { font-size: 12px; color: rgba(10,42,67,.76); overflow-wrap: anywhere; }
.tvh-hash { font-family: "JetBrains Mono", monospace; font-size: 10.5px; background: rgba(10,42,67,.04); padding: 6px 7px; border: 1px solid rgba(10,42,67,.12); display: inline-block; }
.tvh-empty-results {
  margin-top: 24px; border: 1px solid var(--accent); background: rgba(30,127,79,.08); padding: 22px;
}
.tvh-empty-results h3 { font-size: 26px; }
.tvh-empty-results p { margin-top: 8px; color: rgba(10,42,67,.74); }
.tvh-review-rail { margin-top: 32px; border-top: 1px solid var(--ink); padding-top: 26px; }
.tvh-review-rail .tvh-review-order { margin-top: 18px; }
@media print {
  .tvh-search-command, .tvh-search-prompt-row, .tvh-search-trigger { display: none !important; }
  .tvh-result-grid { grid-template-columns: 1fr; }
  .tvh-detail-card { break-inside: avoid; box-shadow: none; }
}


/* =========================================================
   v348 Document Detail & Review Routing Layer
   Public-only artefact pages; protected records remain excluded.
   ========================================================= */
.tvh-detail-hero { padding: 78px 0 34px; border-bottom: 1px solid var(--ink); background: linear-gradient(135deg, rgba(10,42,67,.08), rgba(30,127,79,.07)); }
.tvh-detail-hero h1 { max-width: 1080px; font-size: clamp(38px, 6.5vw, 78px); line-height: .94; }
.tvh-detail-hero p { max-width: 900px; margin-top: 18px; color: rgba(10,42,67,.78); font-size: 17px; line-height: 1.55; }
.tvh-detail-layout { padding: 38px 0 72px; display: grid; gap: 22px; }
@media (min-width: 980px) { .tvh-detail-layout { grid-template-columns: minmax(0, 1fr) 360px; align-items: start; } }
.tvh-detail-panel, .tvh-route-panel { border: 1px solid var(--ink); background: var(--paper-pure); padding: 22px; }
.tvh-detail-panel h2, .tvh-route-panel h2 { font-size: clamp(28px, 3vw, 42px); line-height: 1.05; }
.tvh-detail-panel p, .tvh-route-panel p { color: rgba(10,42,67,.76); line-height: 1.58; }
.tvh-detail-table { display: grid; gap: 0; margin-top: 18px; border: 1px solid rgba(10,42,67,.18); }
.tvh-detail-table-row { display: grid; grid-template-columns: 145px 1fr; gap: 10px; border-bottom: 1px solid rgba(10,42,67,.12); padding: 10px 12px; align-items: baseline; }
.tvh-detail-table-row:last-child { border-bottom: 0; }
.tvh-detail-label { font: 500 10px/1.1 "JetBrains Mono", monospace; letter-spacing: .1em; text-transform: uppercase; color: rgba(10,42,67,.55); }
.tvh-detail-data { font-size: 13px; color: rgba(10,42,67,.82); overflow-wrap: anywhere; }
.tvh-detail-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 20px; }
.tvh-boundary-note { margin-top: 18px; border-left: 4px solid var(--accent); background: rgba(30,127,79,.08); padding: 14px 16px; }
.tvh-preview-frame { width: 100%; height: 720px; border: 1px solid rgba(10,42,67,.25); background: white; margin-top: 18px; }
.tvh-svg-preview { display: grid; place-items: center; min-height: 420px; border: 1px solid rgba(10,42,67,.2); background: var(--paper-warm); margin-top: 18px; padding: 18px; }
.tvh-svg-preview img { max-width: 100%; height: auto; }
.tvh-route-list { display: grid; gap: 12px; margin-top: 16px; }
.tvh-route-step { border: 1px solid rgba(10,42,67,.18); background: var(--cream); padding: 14px; }
.tvh-route-step h3 { font-size: 19px; margin-bottom: 6px; }
.tvh-route-step p { font-size: 13px; }
.tvh-detail-index { display: grid; gap: 16px; margin-top: 20px; }
@media (min-width: 860px) { .tvh-detail-index { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.tvh-detail-index-card { border: 1px solid var(--ink); background: var(--paper-pure); padding: 18px; color: inherit; text-decoration: none; display: grid; gap: 10px; }
.tvh-detail-index-card:hover { background: var(--cream); }
.tvh-detail-index-card h3 { font-size: 24px; line-height: 1.1; }
.tvh-detail-index-card p { color: rgba(10,42,67,.74); font-size: 13px; line-height: 1.5; }
.tvh-route-matrix { display: grid; gap: 14px; margin-top: 22px; }
@media (min-width: 860px) { .tvh-route-matrix { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.tvh-route-matrix article { border: 1px solid rgba(10,42,67,.18); background: var(--paper-pure); padding: 18px; }
.tvh-route-matrix h3 { font-size: 22px; }
.tvh-route-matrix ul { list-style: none; display: grid; gap: 7px; margin-top: 10px; color: rgba(10,42,67,.76); font-size: 13px; }
.tvh-route-matrix li::before { content: "- "; color: var(--accent); font-weight: 700; }


/* =========================================================
   v348 Public Visual QA Sweep
   Layout hardening for diagrams, detail pages and search surfaces.
   ========================================================= */
html, body { max-width: 100%; overflow-x: hidden; }
.tvh-container { width: 100%; }
.tvh-hero-actions, .tvh-footer-actions, .tvh-detail-actions { row-gap: 10px; }
.tvh-hero-actions .tvh-cta-primary, .tvh-hero-actions .tvh-cta-ghost,
.tvh-detail-actions .tvh-cta-primary, .tvh-detail-actions .tvh-cta-ghost { min-height: 42px; }
.tvh-doc-feature-main .tvh-hero-actions { display: flex; flex-wrap: wrap; align-items: center; }
.tvh-doc-card, .tvh-detail-card, .tvh-detail-index-card, .tvh-category-card, .tvh-route-matrix article { overflow: hidden; }
.tvh-doc-card h3, .tvh-detail-card h3, .tvh-detail-index-card h3, .tvh-category-card h3 { text-wrap: balance; overflow-wrap: anywhere; }
.tvh-doc-card p, .tvh-detail-card p, .tvh-detail-index-card p, .tvh-category-card p, .tvh-section-lead { text-wrap: pretty; }
.tvh-doc-card-meta { align-items: flex-start; flex-wrap: wrap; }
.tvh-doc-card-meta span:last-child { overflow-wrap: anywhere; max-width: 100%; }
.tvh-detail-table { overflow: hidden; }
.tvh-detail-table-row { min-width: 0; }
.tvh-detail-data, .tvh-detail-value, .tvh-hash { word-break: break-word; overflow-wrap: anywhere; max-width: 100%; }
.tvh-hash { white-space: normal; line-height: 1.45; }
.tvh-svg-preview { min-height: 0; padding: clamp(12px, 2vw, 24px); background: #fffdf6; }
.tvh-svg-preview img { width: 100%; max-height: 78vh; object-fit: contain; }
.tvh-diagram-preview { overflow: hidden; }
.tvh-diagram-preview img { width: 100%; max-height: 680px; object-fit: contain; }
.tvh-preview-frame { height: clamp(460px, 72vh, 760px); }
.tvh-filter-grid > div { min-width: 0; }
.tvh-filter-select { width: 100%; max-width: 100%; }
.tvh-search-query-input { font-family: "DM Sans", ui-sans-serif, system-ui, sans-serif; }
.tvh-result-grid { align-items: stretch; }
.tvh-search-status-row { align-items: baseline; }
.tvh-review-order { grid-template-columns: 1fr; }
@media (min-width: 760px) { .tvh-review-order { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1180px) { .tvh-review-order { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 760px) {
  .tvh-doc-hero, .tvh-search-page-hero, .tvh-detail-hero { padding: 54px 0 30px; }
  .tvh-doc-hero h1, .tvh-search-page-hero h1, .tvh-detail-hero h1 { font-size: clamp(34px, 12vw, 52px); line-height: .98; }
  .tvh-doc-hero p, .tvh-search-page-hero p, .tvh-detail-hero p { font-size: 15.5px; }
  .tvh-doc-section { padding: 46px 0; }
  .tvh-detail-layout { padding: 28px 0 52px; }
  .tvh-detail-panel, .tvh-route-panel { padding: 17px; }
  .tvh-detail-table-row { grid-template-columns: 1fr; gap: 5px; }
  .tvh-preview-frame { height: 430px; }
  .tvh-cta-primary, .tvh-cta-ghost, .tvh-cta { width: 100%; justify-content: center; }
  .tvh-doc-card { min-height: auto; }
  .tvh-category-grid { grid-template-columns: 1fr; }
}


/* v348 document-card polish hotfix */
.tvh-doc-card-meta-labelled { align-items: flex-start; }
.tvh-doc-fingerprint { display: grid; gap: 5px; min-width: 0; text-align: right; }
.tvh-doc-fingerprint em { font-style: normal; color: rgba(10,42,67,.52); }
.tvh-doc-fingerprint code { font-family: "JetBrains Mono", monospace; font-size: 10.5px; color: var(--ink); background: rgba(10,42,67,.045); border: 1px solid rgba(10,42,67,.12); padding: 5px 7px; overflow-wrap: anywhere; }
.tvh-doc-card-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--rule-soft); }
.tvh-card-action-primary,
.tvh-card-action-secondary,
.tvh-copy-reference { min-height: 36px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 9px 11px; font: 600 10px/1 "JetBrains Mono", monospace; letter-spacing: .08em; text-transform: uppercase; text-decoration: none; cursor: pointer; }
.tvh-card-action-primary { background: var(--ink); color: var(--cream); border: 1px solid var(--ink); }
.tvh-card-action-secondary,
.tvh-copy-reference { background: transparent; color: var(--ink); border: 1px solid rgba(10,42,67,.25); }
.tvh-card-action-primary:hover,
.tvh-card-action-secondary:hover,
.tvh-copy-reference:hover { transform: translateY(-1px); }
.tvh-copy-reference.is-copied { border-color: rgba(30,127,79,.65); color: var(--success); background: rgba(30,127,79,.08); }
.tvh-diagram-card-note { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--rule-soft); font: 500 10px/1.4 "JetBrains Mono", monospace; letter-spacing: .08em; text-transform: uppercase; color: rgba(10,42,67,.58); }
.tvh-detail-badge:empty { display: none; }
@media (max-width: 620px) {
  .tvh-doc-card-actions { display: grid; grid-template-columns: 1fr; }
  .tvh-card-action-primary, .tvh-card-action-secondary, .tvh-copy-reference { width: 100%; }
  .tvh-doc-fingerprint { text-align: left; }
}


/* v349 card layout compression hotfix */
.tvh-doc-card-compact { display: flex; flex-direction: column; min-height: 100%; }
.tvh-doc-card-top-compact { margin-bottom: 14px; }
.tvh-doc-kicker { display: inline-flex; align-items: center; width: fit-content; max-width: 100%; padding: 7px 9px; border: 1px solid rgba(10,42,67,.14); background: rgba(10,42,67,.035); color: rgba(10,42,67,.72); font: 700 10px/1 "JetBrains Mono", monospace; letter-spacing: .08em; text-transform: uppercase; overflow-wrap: anywhere; }
.tvh-doc-card-compact h3 { margin-top: 0; }
.tvh-doc-card-compact > p { flex: 1; }
.tvh-doc-card-footer { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--rule-soft); display: grid; gap: 14px; }
.tvh-fingerprint-row,
.tvh-diagram-meta-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-width: 0; color: rgba(10,42,67,.62); font: 700 10px/1.35 "JetBrains Mono", monospace; letter-spacing: .08em; text-transform: uppercase; }
.tvh-fingerprint-row code,
.tvh-diagram-meta-row code { max-width: 100%; overflow-wrap: anywhere; font: 700 11px/1.2 "JetBrains Mono", monospace; letter-spacing: .04em; color: var(--ink); background: rgba(10,42,67,.05); border: 1px solid rgba(10,42,67,.12); padding: 6px 8px; }
.tvh-card-actions-compact { display: flex; flex-wrap: wrap; gap: 8px; }
.tvh-card-button { min-height: 36px; display: inline-flex; align-items: center; justify-content: center; padding: 9px 11px; border: 1px solid rgba(10,42,67,.25); font: 700 10px/1 "JetBrains Mono", monospace; letter-spacing: .08em; text-transform: uppercase; text-decoration: none; cursor: pointer; transition: transform .16s ease, background .16s ease, border-color .16s ease; }
.tvh-card-button-primary { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.tvh-card-button-secondary { background: rgba(255,255,255,.48); color: var(--ink); }
.tvh-card-button:hover { transform: translateY(-1px); }
.tvh-card-button.is-copied { border-color: rgba(30,127,79,.65); color: var(--success); background: rgba(30,127,79,.08); }
.tvh-diagram-card-compact { display: flex; flex-direction: column; gap: 12px; }
.tvh-diagram-card-compact .tvh-diagram-preview { margin: 2px 0 0; }
.tvh-diagram-card-compact .tvh-card-actions-compact { margin-top: auto; padding-top: 6px; }
/* Retain older v348 button compatibility where cached markup appears. */
.tvh-doc-card-actions .tvh-card-action-primary,
.tvh-doc-card-actions .tvh-card-action-secondary { border-radius: 0; }
@media (max-width: 720px) {
  .tvh-fingerprint-row,
  .tvh-diagram-meta-row { display: grid; gap: 8px; align-items: start; justify-content: stretch; }
  .tvh-card-actions-compact { display: grid; grid-template-columns: 1fr; }
  .tvh-card-button { width: 100%; }
}


/* v350 diagram card final polish hotfix */
.tvh-diagram-card-final { gap: 11px; }
.tvh-diagram-kicker { display: inline-flex; align-items: center; width: fit-content; max-width: 100%; padding: 7px 9px; border: 1px solid rgba(10,42,67,.14); background: rgba(10,42,67,.035); color: rgba(10,42,67,.72); font: 700 10px/1 "JetBrains Mono", monospace; letter-spacing: .08em; text-transform: uppercase; overflow-wrap: anywhere; }
.tvh-diagram-card-final h3 { margin: 0; }
.tvh-diagram-card-final > p { margin-bottom: 2px; }
.tvh-diagram-preview-final { min-height: 180px; display: grid; place-items: center; background: rgba(10,42,67,.025); border: 1px solid rgba(10,42,67,.10); overflow: hidden; }
.tvh-diagram-preview-final img { display: block; width: 100%; max-height: 260px; object-fit: contain; }
.tvh-diagram-card-footer { margin-top: auto; padding-top: 12px; border-top: 1px solid var(--rule-soft); display: grid; gap: 12px; }
.tvh-diagram-card-final .tvh-card-button-secondary { min-width: 96px; }
@media (max-width: 720px) {
  .tvh-diagram-preview-final { min-height: 150px; }
  .tvh-diagram-preview-final img { max-height: 220px; }
}


/* v352 final microspacing and library lock */
.tvh-doc-card-compact,
.tvh-diagram-card-locked { gap: 10px; }
.tvh-doc-card-compact > p,
.tvh-diagram-card-locked > p { margin-bottom: 0; }
.tvh-doc-card-footer,
.tvh-diagram-card-footer-locked { margin-top: 10px; padding-top: 10px; gap: 10px; }
.tvh-diagram-card-locked .tvh-diagram-preview,
.tvh-diagram-card-locked .tvh-diagram-preview-final { display: none !important; }
.tvh-diagram-card-locked { min-height: 0; }
.tvh-diagram-card-locked h3 { margin: 0; }
.tvh-diagram-card-locked .tvh-diagram-kicker { margin-bottom: 0; }
.tvh-fingerprint-row,
.tvh-diagram-meta-row-locked { padding-top: 0; }
.tvh-card-actions-compact,
.tvh-card-actions-locked { gap: 7px; }
.tvh-card-button { min-height: 34px; padding: 8px 11px; border-radius: 0; white-space: nowrap; }
.tvh-detail-index .tvh-diagram-card-locked { align-content: start; }
.tvh-detail-index .tvh-diagram-card-locked p { color: rgba(10,42,67,.72); }
@media (max-width: 720px) {
  .tvh-doc-card-footer,
  .tvh-diagram-card-footer-locked { gap: 9px; }
  .tvh-card-button { width: 100%; }
}


/* v360 responsive QA and footer spacing sweep */
:root{
  --tvh-blue:#0A2A43;--tvh-blue-2:#0F3B5C;--tvh-ink:#15202B;--tvh-muted:#5F6F7A;
  --tvh-line:#D9E2E7;--tvh-bg-soft:#F6F9FA;--tvh-panel:#FFFFFF;--tvh-green:#1E7F4F;
  --tvh-red:#B3261E;--tvh-radius:22px;--tvh-shadow:0 20px 50px rgba(10,42,67,.10)
}
html{scroll-behavior:smooth;background:#fff}
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--tvh-ink);background:linear-gradient(180deg,#fff 0%,#f7fafb 100%)}
.tvh-header{border-bottom:1px solid rgba(10,42,67,.10);backdrop-filter:saturate(1.2) blur(14px)}
.tvh-logo-tag{color:rgba(10,42,67,.66)!important}.tvh-cta-primary,.btn.primary,.tvh-ui-btn-primary,.v223-cta{background:var(--tvh-blue)!important;border-color:var(--tvh-blue)!important;color:#fff!important;border-radius:999px!important;box-shadow:0 10px 28px rgba(10,42,67,.14)}
.tvh-cta-ghost,.btn,.tvh-ui-btn,.btn-portal{border-color:rgba(10,42,67,.18)!important;color:var(--tvh-blue)!important;border-radius:999px!important;background:#fff!important}
.card,.mini-card,.v223-route-card,.tvh-card,.tvh-form-frame,.tvh-library-card,.tvh-result-card{border:1px solid rgba(10,42,67,.12)!important;border-radius:22px!important;box-shadow:0 18px 42px rgba(10,42,67,.08)!important;background:#fff!important}
.topbar,.tvh-ui-governance-shell{border:1px solid rgba(10,42,67,.10)!important;background:rgba(255,255,255,.94)!important;box-shadow:0 12px 30px rgba(10,42,67,.08)!important;border-radius:18px!important;margin:12px auto!important;max-width:1180px!important;color:var(--tvh-blue)!important}
.tvh-ui-brand strong,.brand,.tvh-logo-name{color:var(--tvh-blue)!important}.tvh-ui-brand span,.pill,.status-inline,.eyebrow,.tvh-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--tvh-green)!important;font-weight:800!important}
.wrap{max-width:1180px!important;margin-inline:auto!important;padding-inline:20px!important}.hero h1,.section-title,h1,h2{letter-spacing:-.035em}.sub,.subtitle,p{line-height:1.58}
.tvh-unified-entry .tvh-entry-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);gap:24px;align-items:stretch}.tvh-unified-entry .tvh-entry-panel{border:1px solid rgba(10,42,67,.12);border-radius:28px;background:#fff;box-shadow:var(--tvh-shadow);padding:30px}.tvh-unified-entry .tvh-entry-card{border:1px solid rgba(10,42,67,.12);border-radius:22px;background:#f9fbfc;padding:20px}.tvh-unified-entry .tvh-route-list{display:grid;gap:12px;margin-top:16px}.tvh-unified-entry .tvh-route-list a{display:flex;justify-content:space-between;gap:12px;align-items:center;text-decoration:none;color:var(--tvh-blue);border:1px solid rgba(10,42,67,.12);border-radius:18px;padding:15px 16px;background:#fff;font-weight:800}.tvh-unified-entry .tvh-route-list small{display:block;color:var(--tvh-muted);font-weight:600;margin-top:4px}.tvh-unified-entry .tvh-entry-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.tvh-unified-entry .tvh-boundary{border-left:4px solid var(--tvh-green);background:rgba(30,127,79,.07);padding:16px 18px;border-radius:16px;color:#284337;margin-top:20px}.tvh-unified-badge{display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(30,127,79,.22);background:rgba(30,127,79,.08);border-radius:999px;padding:8px 12px;color:var(--tvh-green);font-weight:800;letter-spacing:.06em;text-transform:uppercase;font-size:12px}.tvh-entry-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:22px}.tvh-entry-kpis div{border:1px solid rgba(10,42,67,.12);border-radius:18px;padding:14px;background:#fff}.tvh-entry-kpis strong{display:block;font-size:24px;color:var(--tvh-blue)}.tvh-entry-kpis span{font-size:12px;color:var(--tvh-muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em}
@media(max-width:860px){.tvh-unified-entry .tvh-entry-grid{grid-template-columns:1fr}.tvh-entry-kpis{grid-template-columns:1fr}.topbar,.tvh-ui-governance-shell{border-radius:0!important;margin:0!important}.wrap{padding-inline:14px!important}.tvh-unified-entry .tvh-entry-panel{padding:22px}.tvh-unified-entry .tvh-entry-actions a,.tvh-unified-entry .tvh-entry-actions button{width:100%;justify-content:center}}


/* ====================================================================
   Terra Vita Hub — v360 Full-Site Responsive QA & Footer Spacing Sweep
   Public/document/entry surfaces only. No protected routing logic changed.
   ==================================================================== */
:root{
  --tvh-footer-gap: clamp(20px, 3vw, 42px);
  --tvh-tap-min: 42px;
}
.tvh-header-inner{gap:14px;min-width:0}.tvh-nav-primary{min-width:0}.tvh-nav-actions{gap:12px;min-width:0}.tvh-search-trigger{white-space:nowrap}
.tvh-footer{overflow:hidden}.tvh-footer .tvh-container{min-width:0}.tvh-footer-cta{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;align-items:end;margin-bottom:38px}.tvh-footer-cta h2{margin-bottom:10px}.tvh-footer-cta p + p{margin-top:8px}.tvh-footer-cta-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.tvh-footer-grid{display:grid!important;grid-template-columns:1fr!important;gap:var(--tvh-footer-gap)!important;align-items:start}.tvh-footer-grid>div{display:grid!important;align-content:start;gap:10px;min-width:0}.tvh-footer-grid h3{margin:0 0 4px!important}.tvh-footer-grid p{margin:0;color:rgba(10,42,67,.74);line-height:1.55}.tvh-footer-grid address{margin:0}.tvh-footer-grid a{display:inline-flex!important;width:max-content;max-width:100%;align-items:center;min-height:28px;line-height:1.35;overflow-wrap:anywhere;word-break:normal;text-decoration:none}.tvh-footer-grid ul{display:grid!important;gap:9px!important;margin:0!important;padding:0!important;list-style:none!important}.tvh-footer-grid li{margin:0!important;padding:0!important;min-width:0}.tvh-footer-legal{display:flex!important;flex-wrap:wrap!important;gap:10px 22px!important;align-items:center;margin:0!important;padding:0!important;list-style:none!important}.tvh-footer-legal li{display:inline-flex!important;margin:0!important;padding:0!important}.tvh-footer-legal a{display:inline-flex;min-height:28px;align-items:center}.tvh-footer-bottom{border-top:1px solid rgba(10,42,67,.12);padding-top:18px;align-items:flex-start}.tvh-footer-copy{margin:0;line-height:1.45;max-width:100%;overflow-wrap:anywhere}.tvh-cta-primary,.tvh-cta-ghost,.tvh-cta,.tvh-card-button,.tvh-ui-btn,.btn{min-height:var(--tvh-tap-min)}.tvh-card-actions-compact,.tvh-footer-actions,.tvh-footer-cta-actions,.tvh-hero-actions{gap:10px 12px!important}.tvh-doc-controls{gap:8px!important}.tvh-pill{line-height:1.25}.tvh-unified-entry .tvh-route-list a{min-height:64px}.tvh-unified-entry .tvh-entry-panel{min-width:0}.tvh-unified-entry .tvh-entry-actions .tvh-cta-primary,.tvh-unified-entry .tvh-entry-actions .tvh-cta-ghost{min-width:0}.tvh-field input,.tvh-field select,.tvh-field textarea{min-height:44px}.tvh-preview-frame{max-width:100%}
@media(min-width:760px){.tvh-footer-grid{grid-template-columns:minmax(260px,1.4fr) repeat(3,minmax(150px,.7fr))!important}.tvh-footer-cta{grid-template-columns:minmax(0,1fr) auto}.tvh-footer-cta-actions{justify-content:flex-end}.tvh-footer-bottom{justify-content:space-between}}
@media(max-width:980px){.tvh-nav-primary{display:none}.tvh-header-inner{padding-block:12px}.tvh-nav-actions{margin-left:auto}.tvh-search-trigger .label{display:none}.tvh-hero-actions .tvh-cta-primary,.tvh-hero-actions .tvh-cta-ghost{flex:1 1 220px;justify-content:center}.tvh-doc-feature{gap:16px}.tvh-entry-kpis{grid-template-columns:1fr!important}}
@media(max-width:720px){.tvh-container{padding-left:18px!important;padding-right:18px!important}.tvh-footer{margin-top:56px;padding:42px 0 34px}.tvh-footer-cta{margin-bottom:30px}.tvh-footer-grid{gap:26px!important}.tvh-footer-grid>div{border-top:1px solid rgba(10,42,67,.10);padding-top:18px}.tvh-footer-grid>div:first-child{border-top:0;padding-top:0}.tvh-footer-grid a{min-height:34px}.tvh-footer-bottom{display:grid!important;gap:14px!important}.tvh-footer-legal{gap:8px 18px!important}.tvh-hero{padding-top:56px!important}.tvh-doc-hero{padding-top:58px!important}.tvh-doc-card-footer,.tvh-diagram-card-footer-locked{gap:8px!important}.tvh-fingerprint-row,.tvh-diagram-meta-row-locked{display:grid!important;gap:6px!important}.tvh-card-actions-compact{display:grid!important;grid-template-columns:1fr!important}.tvh-card-button{width:100%!important}.tvh-unified-entry .tvh-route-list a{align-items:flex-start}.tvh-unified-entry .tvh-entry-actions{display:grid}.tvh-unified-entry .tvh-entry-actions a{width:100%;justify-content:center}.tvh-form-head{display:grid;gap:8px}.tvh-form{padding:22px}.tvh-form-row{grid-template-columns:1fr!important}}
@media(max-width:520px){.tvh-logo-tag{display:none}.tvh-search-shortcut{display:none}.tvh-nav-actions .tvh-link-text{display:none}.tvh-nav-actions .tvh-cta-primary{padding-left:14px!important;padding-right:14px!important}.tvh-footer-legal{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px!important}.tvh-footer-legal a{width:100%}.tvh-footer-copy{font-size:10px!important}.tvh-doc-controls{display:grid!important;grid-template-columns:1fr}.tvh-pill{width:100%;justify-content:center}.tvh-entry-kpis strong{font-size:20px}}


/* ====================================================================
   Terra Vita Hub — v360 Function Bundler-Safe Transport Lock & Console Stability Lock
   Removes public placeholder auth copy; preserves protected route logic.
   ==================================================================== */
.tvh-auth-status{border:1px solid rgba(10,42,67,.14);background:#fffdf6;border-radius:14px;padding:12px 14px;font-size:13px;line-height:1.45;color:rgba(10,42,67,.78)}
.tvh-auth-status[hidden]{display:none!important}.tvh-auth-status.is-error{border-color:rgba(179,38,30,.32);background:rgba(179,38,30,.055);color:#7d1b16}.tvh-auth-status.is-ok{border-color:rgba(30,127,79,.28);background:rgba(30,127,79,.07);color:#124b31}.tvh-auth-note{border-left:3px solid #0A2A43;padding:14px 16px;background:rgba(10,42,67,.045);border-radius:12px;font-size:13px;line-height:1.55;color:rgba(10,42,67,.78)}
.tvh-signin-grid{display:grid;grid-template-columns:minmax(0,760px) minmax(280px,1fr);gap:28px;align-items:start}.tvh-auth-boundary-list{display:grid;gap:12px;margin:18px 0 0;padding:0;list-style:none}.tvh-auth-boundary-list li{display:flex;gap:12px;align-items:flex-start;color:rgba(10,42,67,.78);font-size:13px;line-height:1.55}.tvh-auth-boundary-list .tvh-num{flex:0 0 auto;padding-top:1px}.tvh-auth-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding-top:8px}.tvh-auth-actions .tvh-cta-primary{min-width:160px;justify-content:center}.tvh-form-frame .tvh-auth-status{margin-top:2px}.tvh-page-alias{min-height:70vh;display:grid;place-items:center;padding:72px 18px;background:linear-gradient(135deg,#fffdf6 0%,#f7f9fa 100%)}.tvh-page-alias-card{max-width:680px;background:#fff;border:1px solid rgba(10,42,67,.12);border-radius:28px;padding:34px;box-shadow:0 24px 70px rgba(10,42,67,.08)}
@media(max-width:900px){.tvh-signin-grid{grid-template-columns:1fr}.tvh-auth-actions{display:grid}.tvh-auth-actions .tvh-cta-primary,.tvh-auth-actions .tvh-link{width:100%;justify-content:center;text-align:center}}
