/* ASPICE page — process / traceability assessment aesthetic (not cvUc clone)
   NOTE: never zero `.cvAsp > section` padding — that beats single-class section
   rules and collapses all spacing (same class of bug as content-v2). */
.cvAsp{
  --asp-rail:#C9D3DF;
  --asp-rail-on:var(--cvl-blue);
  --asp-node:#fff;
  --asp-find:#A83F00;
  --asp-ok:#1B7A4B;
  --asp-panel:#0E1520;
  font-family:var(--cvl-font-sans);
}
.cvAsp *,.cvAsp *::before,.cvAsp *::after{box-sizing:border-box}

/* ---- Hero: chain as the visual idea ---- */
.content-page .cvAsp-hero{
  position:relative;
  padding:clamp(88px,13vh,140px) 0 clamp(80px,12vh,128px);
  background:
    linear-gradient(180deg, #EEF2F7 0%, var(--cvl-white) 72%);
  border-bottom:1px solid var(--cvl-border);
  overflow:visible;
}
.cvAsp-hero::before{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.4;
  background-image:
    linear-gradient(rgba(20,57,110,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(20,57,110,.05) 1px, transparent 1px);
  background-size:48px 48px;
  mask-image:linear-gradient(180deg,#000 30%,transparent 92%);
}
.cvAsp-hero > .wrap{position:relative;z-index:1}
.cvAsp-hero .crumb{
  margin:0 0 36px;font-family:var(--cvl-font-mono);font-size:11px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--cvl-muted);
}
.cvAsp-hero .crumb a{color:var(--cvl-slate);text-decoration:none}
.cvAsp-hero .crumb a:hover{color:var(--cvl-ink)}
.cvAsp-hero .crumb .sep{margin:0 8px;opacity:.4}
.cvAsp-hero .crumb-current{color:var(--cvl-ink)}

.cvAsp-hero-grid{
  display:grid;grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr);
  gap:clamp(48px,7vw,88px);align-items:center;
}
.cvAsp-kicker{
  margin:0 0 18px;font-family:var(--cvl-font-mono);font-size:var(--cvl-fs-label);
  letter-spacing:.14em;text-transform:uppercase;color:var(--cvl-muted);
}
.cvAsp-hero h1{
  margin:0;font-family:var(--cvl-font-display);
  font-size:clamp(40px,5.8vw,64px);line-height:1.08;letter-spacing:-.03em;
  font-weight:600;color:var(--cvl-ink);max-width:14ch;
}
.cvAsp-hero .lede{
  margin:24px 0 0;max-width:46ch;
  font-size:clamp(17px,1.8vw,20px);line-height:1.65;color:var(--cvl-slate);
}
.cvAsp-hero-actions{
  display:flex;flex-wrap:wrap;gap:14px;margin-top:36px;
}
.cvAsp-hero-actions .btn{min-height:48px;padding:0 22px;font-size:15px}

/* Traceability chain visual */
.cvAsp-chain{
  border:1px solid var(--cvl-border-strong);
  background:rgba(255,255,255,.92);
  padding:36px 28px 32px;
  box-shadow:var(--cvl-shadow-card);
}
.cvAsp-chain-label{
  margin:0 0 28px;font-family:var(--cvl-font-mono);font-size:10px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--cvl-muted);
}
.cvAsp-chain-track{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;position:relative;list-style:none;margin:0;padding:0 0 4px;
}
.cvAsp-chain-track::before{
  content:"";position:absolute;left:12%;right:12%;top:20px;height:2px;
  background:linear-gradient(90deg,var(--asp-rail),var(--cvl-blue),var(--asp-rail));
}
.cvAsp-chain-node{
  position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;
  gap:12px;padding:0 6px;
  opacity:0;transform:translateY(12px);
  animation:aspNodeIn .7s var(--cvl-ease-out) forwards;
}
.cvAsp-chain-node:nth-child(1){animation-delay:.12s}
.cvAsp-chain-node:nth-child(2){animation-delay:.24s}
.cvAsp-chain-node:nth-child(3){animation-delay:.36s}
.cvAsp-chain-node:nth-child(4){animation-delay:.48s}
.cvAsp-chain-dot{
  width:42px;height:42px;border-radius:50%;
  border:2px solid var(--cvl-blue);background:var(--asp-node);
  display:grid;place-items:center;
  font-family:var(--cvl-font-mono);font-size:11px;letter-spacing:.04em;color:var(--cvl-blue);
  box-shadow:0 0 0 6px rgba(20,57,110,.06);
}
.cvAsp-chain-node[data-tone="gap"] .cvAsp-chain-dot{
  border-color:var(--cvl-gap);color:var(--cvl-gap-text);
  box-shadow:0 0 0 6px rgba(255,117,20,.1);
}
.cvAsp-chain-t{
  font-family:var(--cvl-font-mono);font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--cvl-ink);font-weight:500;
}
.cvAsp-chain-d{font-size:13px;line-height:1.45;color:var(--cvl-muted);max-width:14ch}
.cvAsp-chain-note{
  margin:28px 0 0;padding-top:20px;border-top:1px dashed var(--cvl-border);
  font-family:var(--cvl-font-mono);font-size:12px;letter-spacing:.05em;
  color:var(--cvl-slate);line-height:1.55;
}
.cvAsp-chain-note em{font-style:normal;color:var(--cvl-gap-text)}
@keyframes aspNodeIn{to{opacity:1;transform:none}}

/* ---- Process lanes ---- */
.content-page .cvAsp-lanes{
  padding:var(--cvl-sec-pad) 0;
  background:var(--cvl-white);
  border-bottom:1px solid var(--cvl-border);
}
.cvAsp-lanes-head{max-width:28ch;margin-bottom:clamp(44px,6vw,72px)}
.cvAsp-lanes-label{
  margin:0 0 14px;font-family:var(--cvl-font-mono);font-size:var(--cvl-fs-label);
  letter-spacing:.14em;text-transform:uppercase;color:var(--cvl-muted);
}
.cvAsp-lanes-title{
  margin:0;font-family:var(--cvl-font-display);font-size:clamp(32px,4.2vw,48px);
  font-weight:600;letter-spacing:-.025em;line-height:1.12;color:var(--cvl-ink);
}
.cvAsp-lane-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border-top:1px solid var(--cvl-ink)}
.cvAsp-lane{
  padding:36px 24px 28px 0;border-bottom:1px solid var(--cvl-border);
  transition:opacity var(--cvl-dur-reveal) var(--cvl-ease-out),transform var(--cvl-dur-reveal) var(--cvl-ease-out);
}
html.js .cvAsp-lane{opacity:0;transform:translateY(16px)}
html.js .cvAsp-lanes[data-in="1"] .cvAsp-lane{opacity:1;transform:none}
.cvAsp-lanes[data-in="1"] .cvAsp-lane:nth-child(1){transition-delay:.05s}
.cvAsp-lanes[data-in="1"] .cvAsp-lane:nth-child(2){transition-delay:.12s}
.cvAsp-lanes[data-in="1"] .cvAsp-lane:nth-child(3){transition-delay:.19s}
.cvAsp-lanes[data-in="1"] .cvAsp-lane:nth-child(4){transition-delay:.26s}
.cvAsp-lane + .cvAsp-lane{padding-left:28px;border-left:1px solid var(--cvl-border)}
.cvAsp-lane-id{
  display:inline-block;margin-bottom:16px;font-family:var(--cvl-font-mono);
  font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--cvl-gap-text);
}
.cvAsp-lane-t{
  margin:0 0 12px;font-family:var(--cvl-font-display);font-size:clamp(22px,2.4vw,26px);
  font-weight:600;letter-spacing:-.02em;color:var(--cvl-ink);line-height:1.18;
}
.cvAsp-lane-d{margin:0;font-size:16px;line-height:1.6;color:var(--cvl-slate);max-width:30ch}

/* ---- Findings board ---- */
.content-page .cvAsp-findings{
  padding:var(--cvl-sec-pad) 0;
  background:var(--asp-panel);color:#fff;
}
.cvAsp-findings-shell{
  display:grid;grid-template-columns:minmax(240px,.75fr) minmax(0,1.25fr);
  gap:clamp(48px,7vw,88px);align-items:start;
}
.cvAsp-findings-label{
  margin:0 0 16px;font-family:var(--cvl-font-mono);font-size:var(--cvl-fs-label);
  letter-spacing:.14em;text-transform:uppercase;color:#7A8798;
}
.cvAsp-findings-title{
  margin:0 0 20px;font-family:var(--cvl-font-display);font-size:clamp(32px,4.2vw,48px);
  font-weight:600;letter-spacing:-.025em;line-height:1.12;max-width:16ch;
}
.cvAsp-findings-lead{
  margin:0;font-size:clamp(17px,1.7vw,19px);line-height:1.6;color:#A8B4C4;max-width:36ch;
}
.cvAsp-finding-list{list-style:none;margin:0;padding:0;border-top:1px solid rgba(255,255,255,.22)}
.cvAsp-finding{
  display:grid;grid-template-columns:80px minmax(0,1fr);gap:20px;
  padding:28px 0;border-bottom:1px solid var(--cvl-dark-line);
  transition:opacity var(--cvl-dur-reveal) var(--cvl-ease-out),transform var(--cvl-dur-reveal) var(--cvl-ease-out);
}
html.js .cvAsp-finding{opacity:0;transform:translateX(-10px)}
html.js .cvAsp-findings[data-in="1"] .cvAsp-finding{opacity:1;transform:none}
.cvAsp-findings[data-in="1"] .cvAsp-finding:nth-child(1){transition-delay:.06s}
.cvAsp-findings[data-in="1"] .cvAsp-finding:nth-child(2){transition-delay:.12s}
.cvAsp-findings[data-in="1"] .cvAsp-finding:nth-child(3){transition-delay:.18s}
.cvAsp-findings[data-in="1"] .cvAsp-finding:nth-child(4){transition-delay:.24s}
.cvAsp-findings[data-in="1"] .cvAsp-finding:nth-child(5){transition-delay:.3s}
.cvAsp-finding-id{
  font-family:var(--cvl-font-mono);font-size:13px;letter-spacing:.08em;
  color:var(--cvl-gap);padding-top:4px;
}
.cvAsp-finding-t{display:block;font-size:18px;font-weight:500;color:#fff;margin-bottom:8px;letter-spacing:-.01em}
.cvAsp-finding-d{display:block;font-size:15px;line-height:1.6;color:#A8B4C4;max-width:52ch}

/* ---- Trace matrix ---- */
.content-page .cvAsp-matrix{
  padding:var(--cvl-sec-pad) 0;
  background:var(--cvl-surface);
}
.cvAsp-matrix-head{max-width:28ch;margin-bottom:clamp(40px,5vw,64px)}
.cvAsp-matrix-label{
  margin:0 0 14px;font-family:var(--cvl-font-mono);font-size:var(--cvl-fs-label);
  letter-spacing:.14em;text-transform:uppercase;color:var(--cvl-muted);
}
.cvAsp-matrix-title{
  margin:0;font-family:var(--cvl-font-display);font-size:clamp(32px,4vw,46px);
  font-weight:600;letter-spacing:-.025em;line-height:1.12;color:var(--cvl-ink);
}
.cvAsp-matrix-table{width:100%;border-collapse:collapse;border-top:1px solid var(--cvl-ink)}
.cvAsp-matrix-table th{
  font-family:var(--cvl-font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--cvl-muted);font-weight:500;text-align:left;
  padding:16px 20px 16px 0;border-bottom:1px solid var(--cvl-border);
}
.cvAsp-matrix-table td{
  padding:24px 20px 24px 0;border-bottom:1px solid var(--cvl-border);
  vertical-align:top;font-size:16px;line-height:1.55;color:var(--cvl-slate);
}
.cvAsp-matrix-table td:first-child{
  color:var(--cvl-ink);font-weight:500;font-family:var(--cvl-font-mono);
  font-size:14px;letter-spacing:.02em;width:28%;
}
.cvAsp-matrix-table td:last-child{color:var(--asp-find);width:26%}
.cvAsp-matrix-table tbody tr{transition:background .2s ease}
.cvAsp-matrix-table tbody tr:hover{background:rgba(20,57,110,.03)}

/* ---- Need strip ---- */
.content-page .cvAsp-need{
  padding:var(--cvl-sec-pad) 0;
  background:var(--cvl-white);
  border-bottom:1px solid var(--cvl-border);
}
.cvAsp-need-shell{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);
  gap:clamp(40px,6vw,80px);align-items:end;
}
.cvAsp-need-label{
  margin:0 0 16px;font-family:var(--cvl-font-mono);font-size:var(--cvl-fs-label);
  letter-spacing:.14em;text-transform:uppercase;color:var(--cvl-muted);
}
.cvAsp-need-title{
  margin:0;font-family:var(--cvl-font-display);font-size:clamp(30px,3.8vw,44px);
  font-weight:600;letter-spacing:-.025em;line-height:1.12;color:var(--cvl-ink);max-width:18ch;
}
.cvAsp-need-list{list-style:none;margin:0;padding:0}
.cvAsp-need-list li{
  display:grid;grid-template-columns:36px minmax(0,1fr);gap:14px;
  padding:18px 0;border-bottom:1px solid var(--cvl-border);
  font-size:17px;line-height:1.55;color:var(--cvl-slate);
}
.cvAsp-need-list li:first-child{border-top:1px solid var(--cvl-ink)}
.cvAsp-need-n{
  font-family:var(--cvl-font-mono);font-size:13px;color:var(--cvl-blue);padding-top:4px;
}

/* ---- Close ---- */
.content-page .cvAsp-close{
  padding:var(--cvl-sec-pad) 0;
  background:
    radial-gradient(ellipse 50% 70% at 100% 0%, rgba(20,57,110,.08), transparent 55%),
    var(--cvl-white);
}
.cvAsp-close-shell{max-width:760px}
.cvAsp-close-label{
  margin:0 0 16px;font-family:var(--cvl-font-mono);font-size:var(--cvl-fs-label);
  letter-spacing:.14em;text-transform:uppercase;color:var(--cvl-muted);
}
.cvAsp-close-title{
  margin:0 0 20px;font-family:var(--cvl-font-display);font-size:clamp(34px,4.4vw,54px);
  font-weight:600;letter-spacing:-.028em;line-height:1.1;color:var(--cvl-ink);max-width:20ch;
}
.cvAsp-close-lead{
  margin:0 0 36px;font-size:clamp(17px,1.8vw,20px);line-height:1.65;color:var(--cvl-slate);max-width:50ch;
}
.cvAsp-close-actions{display:flex;flex-wrap:wrap;gap:14px}
.cvAsp-close-actions .btn{min-height:48px;padding:0 22px;font-size:15px}

.cvAsp-related{
  margin-top:56px;padding-top:32px;border-top:1px solid var(--cvl-border);
  display:flex;flex-wrap:wrap;gap:12px 24px;
}
.cvAsp-related a{
  font-size:15px;font-weight:500;color:var(--cvl-blue);
  border-bottom:1px solid transparent;
}
.cvAsp-related a:hover{color:var(--cvl-ink);border-bottom-color:var(--cvl-ink)}

@media (max-width:960px){
  .cvAsp-hero-grid,.cvAsp-findings-shell,.cvAsp-need-shell{grid-template-columns:1fr;gap:40px}
  .cvAsp-lane-grid{grid-template-columns:1fr 1fr}
  .cvAsp-lane + .cvAsp-lane{padding-left:22px;border-left:1px solid var(--cvl-border)}
  .cvAsp-lane:nth-child(2n+1){padding-left:0;border-left:0}
  .cvAsp-chain-track{grid-template-columns:1fr 1fr;gap:28px 12px}
  .cvAsp-chain-track::before{display:none}
  .cvAsp-lanes-title,.cvAsp-findings-title,.cvAsp-need-title,.cvAsp-close-title{max-width:none}
  .cvAsp-matrix-table thead{display:none}
  .cvAsp-matrix-table tr{display:block;padding:20px 0;border-bottom:1px solid var(--cvl-border)}
  .cvAsp-matrix-table td{display:block;width:100%!important;padding:6px 0;border:0}
  .cvAsp-matrix-table td::before{
    content:attr(data-label);display:block;font-family:var(--cvl-font-mono);
    font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--cvl-muted);margin-bottom:4px;
  }
}
@media (max-width:720px){
  .content-page .cvAsp-hero{padding:64px 0 72px}
  .cvAsp-hero h1{font-size:clamp(32px,8vw,40px)}
  .cvAsp-chain{padding:28px 22px}
  .cvAsp-lane-grid{grid-template-columns:1fr}
  .cvAsp-lane{padding:28px 0}
  .cvAsp-lane + .cvAsp-lane,
  .cvAsp-lane:nth-child(2n+1){padding-left:0;border-left:0}
  .cvAsp-finding{grid-template-columns:64px minmax(0,1fr);gap:14px;padding:22px 0}
  .cvAsp-hero-actions .btn,.cvAsp-close-actions .btn{min-height:48px}
  .cvAsp-related a{display:inline-flex;align-items:center;min-height:44px;padding:10px 0}
  .site-header .nav-links a.nav-text{display:none}
}
@media (max-width:480px){
  .cvAsp-hero-actions,.cvAsp-close-actions{flex-direction:column;align-items:stretch}
  .cvAsp-hero-actions .btn,.cvAsp-close-actions .btn{width:100%}
}
@media (prefers-reduced-motion:reduce){
  .cvAsp-chain-node,.cvAsp-lane,.cvAsp-finding{
    opacity:1!important;transform:none!important;animation:none!important;transition:none!important;
  }
}
