/* Noevero Ltd - compiled from the Claude Design source.
   Generated by build/compile.py - edit the source, not this file. */

/* ================= sheet 0 ================= */
.sc-placeholder { background: color-mix(in srgb, currentcolor 8%, transparent); border: 1px solid color-mix(in srgb, currentcolor, transparent); border-radius: 2px; box-sizing: border-box; overflow: hidden; }
@keyframes sc-shine { 
  0% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
html.sc-dc-streaming .sc-placeholder, html.sc-dc-streaming .sc-interp.sc-missing { position: relative; background: color-mix(in srgb, currentcolor 5%, transparent); border-color: transparent; }
html.sc-dc-streaming .sc-placeholder::before, html.sc-dc-streaming .sc-interp.sc-missing::before { content: ""; position: absolute; inset: 0px; pointer-events: none; background: linear-gradient(90deg, rgba(217, 119, 87, 0) 25%, rgba(247, 225, 211, 0.95) 37%, rgba(217, 119, 87, 0) 63%) 0% 0% / 400% 100%; animation: 1.4s ease 0s infinite normal none running sc-shine; }
html.sc-dc-streaming .sc-placeholder:nth-child(n+9 of .sc-placeholder)::before, html.sc-dc-streaming .sc-interp.sc-missing:nth-child(n+9 of .sc-interp.sc-missing)::before { animation: auto ease 0s 1 normal none running none; background: color-mix(in srgb, currentcolor 8%, transparent); }
.sc-placeholder-error { padding: 4px 8px; font: 11px / 1.4 ui-monospace, monospace; color: color-mix(in srgb, currentcolor 70%, transparent); word-break: break-word; }
.sc-interp.sc-missing { display: inline-block; width: 2em; height: 1em; overflow: hidden; vertical-align: text-bottom; background: rgba(255, 255, 255, 0.3); border: 1px solid rgba(0, 0, 0, 0.5); border-radius: 2px; box-sizing: border-box; color: transparent; user-select: none; }
.sc-interp.sc-unresolved { font-family: ui-monospace, monospace; font-size: 0.85em; color: color-mix(in srgb, currentcolor, transparent); background: color-mix(in srgb, currentcolor 10%, transparent); border-radius: 3px; padding: 0px 3px; }
.sc-host.sc-has-error { position: relative; }
.sc-logic-error { position: absolute; top: 8px; left: 8px; z-index: 2147483647; max-width: 60ch; padding: 6px 10px; background: rgb(176, 0, 32); color: rgb(255, 255, 255); font: 12px / 1.4 ui-monospace, monospace; border-radius: 4px; white-space: pre-wrap; pointer-events: none; }
@media print {
  @page { margin: 0.5cm; }
  figure, table { break-inside: avoid; }
  #dc-root, #dc-root > .sc-host { height: auto; }
  *, ::before, ::after { print-color-adjust: exact; backdrop-filter: none !important; animation-delay: -99s !important; animation-duration: 0.001s !important; animation-iteration-count: 1 !important; animation-fill-mode: both !important; animation-play-state: running !important; transition-duration: 0s !important; }
}

/* ================= sheet 1 ================= */
x-dc { display: none !important; }

/* ================= sheet 2 ================= */
.scp0:focus { left: 16px !important; }
.scp1:hover { background: rgb(47, 208, 190) !important; color: rgb(7, 20, 38) !important; }
.scp2:hover { color: rgb(7, 20, 38) !important; background: rgb(47, 208, 190) !important; }
.scp3:hover { color: rgb(19, 184, 166) !important; border-color: rgba(19, 184, 166, 0.6) !important; }
.scp4:hover { color: rgb(19, 184, 166) !important; border-color: rgb(19, 184, 166) !important; gap: 14px !important; }
.scp5:hover { color: rgb(245, 247, 250) !important; border-color: rgb(19, 184, 166) !important; }
.scp6:hover { color: rgb(19, 184, 166) !important; border-color: rgb(19, 184, 166) !important; }
.scp7:hover { animation-play-state: paused !important; }
.scp8::before { content: ""; width: 26px; height: 1px; background: rgb(19, 184, 166); flex-shrink: 0; display: block; }
.scp9:hover { transform: scale(1.04) !important; }
.scpa:hover { color: rgb(47, 208, 190) !important; border-color: rgb(47, 208, 190) !important; }
.scpb:hover { border-color: rgb(19, 184, 166) !important; }
.scpc:hover { color: rgb(19, 184, 166) !important; }
.scpd:focus { border-color: rgb(19, 184, 166) !important; outline: none !important; box-shadow: rgba(19, 184, 166, 0.18) 0px 0px 0px 3px !important; }
.scpe:hover { background: rgb(47, 208, 190) !important; }
.scpf:hover { background: rgb(19, 184, 166) !important; color: rgb(7, 20, 38) !important; }
.scpg:hover { border-color: rgb(19, 184, 166) !important; transform: translateY(-2px) !important; }
.scph:hover { border-color: rgb(19, 184, 166) !important; color: rgb(19, 184, 166) !important; }
.scpi:hover { border-color: rgba(19, 184, 166, 0.6) !important; }

/* ================= sheet 3 ================= */
html, body { height: 100%; margin: 0px; }
#dc-root, #dc-root > .sc-host { height: 100%; }

/* ---- EXTERNAL (not inlined): https://api.fontshare.com/v2/css?f[]=clash-display@500,600,700&f[]=switzer@400,500,600&display=swap ---- */

/* ---- EXTERNAL (not inlined): https://fonts.googleapis.com/css2?family=Fragment+Mono&display=swap ---- */

/* ================= sheet 6 ================= */
html { scroll-behavior: smooth; scrollbar-color: rgb(30, 58, 92) rgb(7, 20, 38); }
body { margin: 0px; background: rgb(7, 20, 38); color: rgb(245, 247, 250); font-family: Switzer, "Helvetica Neue", Arial, sans-serif; -webkit-font-smoothing: antialiased; text-rendering: optimizelegibility; }
h1, h2, h3 { font-family: "Clash Display", Switzer, "Helvetica Neue", sans-serif; }
::-webkit-scrollbar { width: 11px; }
::-webkit-scrollbar-track { background: rgb(7, 20, 38); }
::-webkit-scrollbar-thumb { background: rgb(30, 58, 92); border-radius: 6px; border: 3px solid rgb(7, 20, 38); }
::-webkit-scrollbar-thumb:hover { background: rgb(19, 184, 166); }
a { color: rgb(245, 247, 250); }
a:hover { color: rgb(19, 184, 166); }
::selection { background: rgb(19, 184, 166); color: rgb(7, 20, 38); }
:focus-visible { outline: rgb(19, 184, 166) solid 2px; outline-offset: 3px; border-radius: 2px; box-shadow: rgba(7, 20, 38, 0.9) 0px 0px 0px 5px; }
input, select, textarea, button { font-family: inherit; }
select option { background-color: rgb(14, 33, 56); color: rgb(245, 247, 250); }
input:-webkit-autofill, select:-webkit-autofill, textarea:-webkit-autofill { -webkit-text-fill-color: rgb(245, 247, 250); box-shadow: rgb(14, 33, 56) 0px 0px 0px 1000px inset; caret-color: rgb(245, 247, 250); transition: background-color 99999s ease-out; }
details { padding: 0px 12px; margin: 0px -12px; border-radius: 10px; transition: background 0.25s; }
details[open] { background: rgba(16, 35, 63, 0.4); }
@media (max-width: 920px) {
  [data-marquee] { animation-duration: 64s !important; }
  [data-m="hero-wrap"] { padding-bottom: 96px !important; }
  [data-m="hero-scrim"] { background: linear-gradient(rgba(7, 20, 38, 0.55) 0%, rgba(7, 20, 38, 0.05) 22%, rgba(7, 20, 38, 0.35) 46%, rgba(7, 20, 38, 0.92) 60%, rgb(7, 20, 38) 100%) !important; }
  [data-m="hero-wrap"] { padding-top: 46vh !important; }
  [data-m="cap-plate"] { min-height: 200px !important; }
  [data-m="cap-plate"] img { object-position: right center !important; }
  [data-m="process"] { display: flex !important; overflow-x: auto !important; scroll-snap-type: x mandatory !important; gap: 14px !important; padding: 0px 20px 18px !important; margin: 0px -20px !important; scrollbar-width: none !important; }
  [data-m="process"]::-webkit-scrollbar { display: none; }
  [data-m="process"] > li { flex: 0 0 78% !important; scroll-snap-align: start !important; background: rgb(11, 27, 51) !important; border: 1px solid rgba(220, 231, 234, 0.12) !important; border-radius: 14px !important; padding: 22px 20px !important; box-sizing: border-box !important; }
  [data-m="process-hint"] { display: flex !important; }
  [data-m="sheet-handle"] { display: block !important; }
  [data-m="faq-q"] { font-size: 16.5px !important; }
  [data-m="hero-side"] { background: none !important; }
  [data-m="hero-strip"] { margin-top: 44px !important; }
  [data-m="cap-plate"] figcaption { font-size: 10px !important; letter-spacing: 0.08em !important; right: 16px !important; }
  section[data-screen-label="Physical Digital Connected"] { padding-bottom: calc(24px + 50vw) !important; }
  [data-m="form-head"] { font-size: 11px !important; letter-spacing: 0.08em !important; white-space: nowrap !important; }
  #nv-meter [data-seg] { width: 10px !important; }
  [data-m="hero-h1"] { font-size: clamp(42px, 12.5vw, 58px) !important; }
  [data-m="hero-p"] { font-size: 16.5px !important; margin-bottom: 30px !important; }
  [data-m="cta-primary"] { width: 100% !important; text-align: center !important; box-sizing: border-box !important; }
  [data-m="cta-row"] { gap: 18px !important; }
  [data-m="pause"] { right: 16px !important; bottom: 14px !important; padding: 7px 14px !important; font-size: 11px !important; min-height: 40px !important; }
  [data-m="diagram"] { width: min(100%, 340px) !important; }
  [data-m="diagram-wrap"] { position: relative !important; top: auto !important; }
  [data-m="stage-art"] { inset: -4% 0px !important; }
  [data-m="cap-num"] { font-size: 30px !important; margin-bottom: 12px !important; }
  [data-m="cap-icon"] { width: 32px !important; height: 32px !important; top: 0px !important; }
  [data-m="cap-list"] { align-self: start !important; }
  [data-m="figure"] { min-height: 220px !important; }
  [data-m="pdc-grid"] { display: block !important; }
  [data-m="pdc-p"] { margin-top: 28px !important; }
  [data-m="big-h2"] { font-size: clamp(38px, 13vw, 56px) !important; }
  [data-m="contact-h2"] { font-size: clamp(32px, 9.5vw, 44px) !important; }
  [data-m="watermark"] { width: 96px !important; top: -6px !important; }
  [data-m="form-panel"] { padding: 22px 18px !important; border-radius: 14px !important; }
  [data-m="meter-label"] { display: none !important; }
  [data-m="faq-q"] { font-size: 16.5px !important; }
  [data-m="faq-a"] { padding-right: 8px !important; }
  [data-m="docket-row"] { flex-direction: column !important; gap: 4px !important; }
  [data-m="docket-label"] { width: auto !important; }
  [data-m="footer-mark"] { font-size: 21vw !important; }
  [data-m="footer-bottom"] { flex-direction: column !important; align-items: flex-start !important; }
  section { scroll-margin-top: 80px !important; }
}
@media (max-width: 1100px) {
  [data-m="engage-art"] { margin-top: 4px; position: static !important; display: block !important; }
  [data-m="engage-art"] img { width: 100% !important; max-width: none !important; margin-right: 0px !important; mask-image: linear-gradient(rgba(0, 0, 0, 0) 0%, rgb(0, 0, 0) 12%, rgb(0, 0, 0) 88%, rgba(0, 0, 0, 0) 100%) !important; }
}
@media (min-width: 660px) {
  [data-m="cap-card"] > div { grid-template-columns: minmax(0px, 1fr) minmax(0px, 1.2fr) !important; }
}
@media (max-width: 440px) {
  [data-m="badge"] { font-size: 10px !important; letter-spacing: 0.05em !important; padding: 8px 12px !important; gap: 0px !important; white-space: nowrap !important; }
  [data-m="badge"] img { display: none !important; }
}
body[data-menu-open] { overflow: hidden; }
@supports (-webkit-touch-callout: none) {
  input, select, textarea { font-size: 16px !important; }
}
summary { list-style: none; cursor: pointer; }
summary::-webkit-details-marker { display: none; }
details[open] .nv-x { transform: rotate(45deg); border-color: rgb(19, 184, 166) !important; color: rgb(7, 20, 38) !important; background: rgb(19, 184, 166) !important; }
details[open] summary .nv-q { color: rgb(245, 247, 250) !important; }
details[open] summary .nv-q > span { color: rgb(19, 184, 166) !important; }
.nv-x { transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), background 0.25s, border-color 0.25s, color 0.25s; }
details.nv-faq { border-bottom: 1px solid rgba(220, 231, 234, 0.14); }
details.nv-faq[open] { background: rgba(16, 35, 63, 0.28); border-bottom-color: rgba(19, 184, 166, 0.35); }
details.nv-faq:hover .nv-x { border-color: rgba(19, 184, 166, 0.6) !important; }
@keyframes nvFadeUp { 
  0% { opacity: 0; transform: translateY(18px); }
  100% { opacity: 1; transform: translateY(0px); }
}
@keyframes nvFadeIn { 
  0% { opacity: 0; }
  100% { opacity: 1; }
}
@keyframes nvFadeOut { 
  100% { opacity: 0; }
}
@keyframes nvGrowX { 
  0% { transform: scaleX(0); }
  100% { transform: scaleX(1); }
}
@keyframes nvDrawTo0 { 
  100% { stroke-dashoffset: 0; }
}
@keyframes nvDrawFrom { 
  0% { stroke-dashoffset: var(--nv-len, 900); }
  100% { stroke-dashoffset: 0; }
}
@keyframes nvFlow { 
  0% { stroke-dashoffset: 640; }
  100% { stroke-dashoffset: 0; }
}
@keyframes nvPulse { 
  0%, 100% { opacity: 0.35; }
  50% { opacity: 1; }
}
@keyframes nvNodeIn { 
  0% { opacity: 0; }
  100% { opacity: 1; }
}
@keyframes nvKenBurns { 
  0% { transform: scale(1.04); }
  100% { transform: scale(1.13) translateY(-1.2%); }
}
@keyframes nvMarquee { 
  0% { transform: translateX(0px); }
  100% { transform: translateX(-50%); }
}
@keyframes nvLineUp { 
  0% { transform: translateY(112%); }
  100% { transform: translateY(0px); }
}
@keyframes nvCue { 
  0% { transform: translateY(0px); }
  100% { transform: translateY(58px); }
}
@keyframes nvIntroLift { 
  100% { transform: translateY(-101%); }
}
@keyframes nvSweep { 
  0% { left: -30%; }
  100% { left: 110%; }
}
@keyframes nvScanY { 
  0% { top: -24%; opacity: 0; }
  12% { opacity: 1; }
  88% { opacity: 1; }
  100% { top: 122%; opacity: 0; }
}
@keyframes nvSheetUp { 
  0% { transform: translateY(48px); opacity: 0; }
  100% { transform: translateY(0px); opacity: 1; }
}
details[open] .nv-fa { animation: 0.35s ease 0s 1 normal both running nvFadeUp; }
body::after { content: ""; position: fixed; inset: 0px; z-index: 399; pointer-events: none; opacity: 0.05; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' sc-camel-base-frequency='0.9' sc-camel-num-octaves='2' sc-camel-stitch-tiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='180' height='180' filter='url(%23n)' opacity='0.6'/></svg>"); }
@supports not (animation-timeline: scroll()) {
  #nv-header[data-condensed] > div { backdrop-filter: blur(18px); max-width: 1060px !important; height: 62px !important; margin-top: 12px !important; padding-left: 26px !important; padding-right: 10px !important; background: rgba(9, 23, 44, 0.8) !important; box-shadow: rgba(0, 0, 0, 0.35) 0px 18px 50px !important; }
}
@keyframes nvCondense { 
  0% { max-width: 1280px; height: 78px; margin-top: 0px; padding-left: clamp(20px, 4vw, 48px); padding-right: clamp(20px, 4vw, 48px); background: rgba(9, 23, 44, 0); box-shadow: rgba(0, 0, 0, 0) 0px 18px 50px; backdrop-filter: blur(0px); }
  100% { max-width: 1060px; height: 62px; margin-top: 12px; padding-left: 26px; padding-right: 10px; background: rgba(9, 23, 44, 0.8); box-shadow: rgba(0, 0, 0, 0.35) 0px 18px 50px; backdrop-filter: blur(18px); }
}
#nv-header > div::before { content: ""; position: absolute; inset: -1px; border-radius: inherit; padding: 1px; background: linear-gradient(150deg, rgba(220, 231, 234, 0.34) 0%, rgba(220, 231, 234, 0.1) 45%, rgba(220, 231, 234, 0.05) 100%); mask: linear-gradient(rgb(0, 0, 0) 0px, rgb(0, 0, 0) 0px) content-box exclude, linear-gradient(rgb(0, 0, 0) 0px, rgb(0, 0, 0) 0px); pointer-events: none; opacity: 0; transition: opacity 0.4s; }
#nv-header[data-condensed] > div::before { opacity: 1; }
@supports (animation-timeline: scroll()) {
  @media (min-width: 921px) {
  #nv-header > div { animation-duration: auto; animation-timing-function: linear; animation-delay: 0s; animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: both; animation-play-state: running; animation-name: nvCondense; animation-timeline: scroll(root); animation-range: 0px 180px; }
  #nv-header > div::before { animation-duration: auto; animation-timing-function: linear; animation-delay: 0s; animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: both; animation-play-state: running; animation-name: nvFadeIn; animation-timeline: scroll(root); animation-range: 30px 200px; }
}
}
#nv-hcta:not([data-show]) { margin-left: clamp(-34px, -2.6vw, -18px); }
#nv-hcta:not([data-show]) > span { overflow: hidden; }
#nv-hcta[data-show] { grid-template-columns: 1fr !important; margin-left: 0px !important; }
#nv-hcta[data-show] a { opacity: 1 !important; transition-delay: 0s, 0s, 0.16s !important; }
button[data-route]:hover { color: rgb(245, 247, 250) !important; }
button[data-route]:hover .nv-ri { border-color: rgba(19, 184, 166, 0.7) !important; }
button[data-route][aria-selected="true"] { color: rgb(245, 247, 250) !important; padding-left: 12px !important; }
button[data-route][aria-selected="true"] .nv-ri { background: rgb(19, 184, 166) !important; border-color: rgb(19, 184, 166) !important; color: rgb(7, 20, 38) !important; }
button[data-route][aria-selected="true"] .nv-ra { opacity: 1; transform: translateX(0px); }
body[data-cursor], body[data-cursor] a, body[data-cursor] button, body[data-cursor] summary, body[data-cursor] label { cursor: none !important; }
body[data-cursor] input, body[data-cursor] textarea, body[data-cursor] select { cursor: auto !important; }
@keyframes nvHalo { 
  0%, 100% { opacity: 0.55; transform: scale(0.96); }
  50% { opacity: 1; transform: scale(1.04); }
}
@keyframes nvAssistIn { 
  0% { opacity: 0; transform: translateY(18px) scale(0.96); }
  100% { opacity: 1; transform: translateY(0px) scale(1); }
}
button[data-atype][aria-checked="true"] { border-color: rgb(19, 184, 166) !important; background: rgba(19, 184, 166, 0.1) !important; }
button[data-atype][aria-checked="true"] .nv-ai { background: rgb(19, 184, 166); border-color: rgb(19, 184, 166); color: rgb(7, 20, 38); }
[data-near="true"] { opacity: 0 !important; pointer-events: none !important; }
body[data-intro] #top .nv-anim, body[data-intro] #top .nv-anim * { animation-play-state: paused !important; }
body[data-ambient-paused] [data-ambient], body[data-ambient-paused] [data-ambient] * { animation-play-state: paused !important; }
@keyframes nvAssistOut { 
  100% { opacity: 0; transform: translateY(14px) scale(0.97); }
}
@keyframes nvSheetDown { 
  100% { transform: translateY(40px); opacity: 0; }
}
@keyframes nvStepOut { 
  100% { opacity: 0; transform: translateY(-8px); }
}
[data-exit="assist"][data-leaving="true"] { animation: 0.2s cubic-bezier(0.4, 0, 1, 1) 0s 1 normal both running nvAssistOut !important; }
[data-exit="menu"][data-leaving="true"] { animation: 0.24s cubic-bezier(0.4, 0, 1, 1) 0s 1 normal both running nvFadeOut !important; }
[data-exit="menu"][data-leaving="true"] > div { animation: 0.24s cubic-bezier(0.4, 0, 1, 1) 0s 1 normal both running nvSheetDown !important; }
[data-exit="toast"][data-leaving="true"] { animation: 0.2s cubic-bezier(0.4, 0, 1, 1) 0s 1 normal both running nvFadeOut !important; }
[data-exit="panel"][data-leaving="true"] { animation: 0.22s cubic-bezier(0.4, 0, 1, 1) 0s 1 normal both running nvFadeOut !important; }
@supports (interpolate-size: allow-keywords) {
  html { interpolate-size: allow-keywords; }
}
details.nv-faq::details-content { block-size: 0px; overflow-y: clip; transition: block-size 0.36s cubic-bezier(0.22, 0.61, 0.36, 1), content-visibility 0.36s allow-discrete; }
details.nv-faq[open]::details-content { block-size: auto; }
[data-live="false"] .nv-draw { stroke-dashoffset: var(--nv-len); }
[data-live="false"] .nv-node, [data-live="false"] .nv-t1, [data-live="false"] .nv-t2 { opacity: 0; }
[data-live="true"] .nv-d1 { animation: 0.5s cubic-bezier(0.22, 0.61, 0.36, 1) 0.1s 1 normal both running nvDrawFrom; }
[data-live="true"] .nv-d2 { animation: 0.5s cubic-bezier(0.22, 0.61, 0.36, 1) 0.22s 1 normal both running nvDrawFrom; }
[data-live="true"] .nv-d3 { animation: 0.5s cubic-bezier(0.22, 0.61, 0.36, 1) 0.34s 1 normal both running nvDrawFrom; }
[data-live="true"] .nv-d4 { animation: 0.55s cubic-bezier(0.22, 0.61, 0.36, 1) 0.75s 1 normal both running nvDrawFrom; }
[data-live="true"] .nv-d5 { animation: 0.55s cubic-bezier(0.22, 0.61, 0.36, 1) 0.87s 1 normal both running nvDrawFrom; }
[data-live="true"] .nv-d6 { animation: 0.55s cubic-bezier(0.22, 0.61, 0.36, 1) 0.99s 1 normal both running nvDrawFrom; }
[data-live="true"] .nv-n1 { animation: 0.3s ease 0s 1 normal both running nvNodeIn; }
[data-live="true"] .nv-n2 { animation: 0.3s ease 0.5s 1 normal both running nvNodeIn; }
[data-live="true"] .nv-n3 { animation: 0.3s ease 0.62s 1 normal both running nvNodeIn; }
[data-live="true"] .nv-n4 { animation: 0.3s ease 0.74s 1 normal both running nvNodeIn; }
[data-live="true"] .nv-n5 { animation: 0.3s ease 1.4s 1 normal both running nvNodeIn, 3.2s ease-in-out 1.8s infinite normal none running nvPulse; }
[data-live="true"] .nv-t1 { animation: 0.4s ease 0.2s 1 normal both running nvFadeIn; }
[data-live="true"] .nv-t2 { animation: 0.4s ease 1.5s 1 normal both running nvFadeIn; }
@supports not (animation-timeline: view()) {
  [data-sda]:not([data-in]) { animation-play-state: paused !important; }
}
@keyframes nvFadeUpB { 
  0% { opacity: 0; transform: translateY(18px); }
  100% { opacity: 1; transform: translateY(0px); }
}
@media (max-width: 920px) {
  #nv-header[data-condensed] > div { backdrop-filter: blur(18px); margin: 10px 12px 0px !important; height: 58px !important; padding-left: 18px !important; padding-right: 8px !important; background: rgba(9, 23, 44, 0.8) !important; box-shadow: rgba(0, 0, 0, 0.35) 0px 18px 50px !important; }
  [data-m="cap-grid"] { display: block !important; }
}
@media (max-height: 700px), (max-width: 1100px) {
  [data-m="cap-card"] { position: relative !important; top: auto !important; transform: none !important; opacity: 1 !important; box-shadow: none !important; }
  [data-m="cap-card"] { position: relative !important; top: auto !important; transform: none !important; opacity: 1 !important; box-shadow: none !important; }
  [data-m="cta-wrap"] { display: block !important; padding: 0px !important; margin: 0px !important; }
  [data-m="route-panel"] { padding: 22px 18px !important; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  details.nv-faq::details-content { transition: none !important; }
  #nv-route-ind, #nv-hcta, #nv-hcta a, #nv-cur-ring { transition: none !important; }
  .nv-anim, .nv-anim * { animation: auto ease 0s 1 normal none running none !important; transition: none !important; }
  #nv-cur-ring, #nv-cur-dot { display: none !important; }
  body[data-cursor], body[data-cursor] a, body[data-cursor] button, body[data-cursor] summary, body[data-cursor] label { cursor: auto !important; }
}

/* ------------------------------------------------------------------ *
 * Post-audit accessibility fixes (appended; overrides win by order).
 *
 * 1. The compiled design carried `.scpd:focus { outline: none !important }`
 *    from a style-focus attribute. That removes the keyboard focus ring —
 *    a WCAG 2.2 AA failure (2.4.7 Focus Visible). We restore a visible ring
 *    for keyboard users only, so the design's mouse styling is unaffected.
 * 2. The header is fixed (78px, condensing to 62px), so in-page anchors
 *    landed underneath it. scroll-padding-top fixes every #anchor at once.
 * ------------------------------------------------------------------ */
/* CORRECTED. The first version of this rule was scroll-padding-top: 96px, which
   was wrong: scroll-padding on the scroller and scroll-margin on the target ADD
   together, and the design already carries its own scroll-margin-top — 72px on
   every section, 96px on the capability cards, 0 on #main and #top.
   Anchors were therefore landing at 96 + 72 = 168px, leaving ~90px of dead
   space under a 78px header, which is why "Discuss a project" stopped short of
   the form.

   Fixed by making ONE offset authoritative: a single scroll-padding on the
   scroller, with the design's per-element scroll-margins neutralised so nothing
   stacks. 90px clears the 78px header with 12px of breathing room, and applies
   equally to #main (the skip link) and #top, which carry no margin of their
   own. */
html { scroll-padding-top: 90px; }

#top, #approach, #capabilities, #delivery, #engage, #routes, #faqs, #contact,
[data-cap] {
  scroll-margin-top: 0 !important;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
.scpd:focus-visible {
  outline: 2px solid #13B8A6 !important;
  outline-offset: 3px !important;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

/* ------------------------------------------------------------------ *
 * Mobile fix: the "Physical. Digital. Connected." campus band.
 *
 * THE BUG (reported from a real phone, confirmed at 390px):
 * campus-v2.jpg is 2200x1228. The compiled markup sizes it
 * `width:100%; height:auto`, so on a 390px screen it collapses to a
 * 218px strip - only 27% of the 800px section - anchored at the bottom.
 * The overlay gradient above it is sized to the SECTION, and its last
 * stops run rgba(7,20,38,.1) at 84% to SOLID rgb(7,20,38) at 100%.
 * The artwork therefore lands entirely inside the gradient's opaque
 * tail and is painted out. On desktop the image is tall enough to reach
 * the transparent window at 55%, which is why it only fails on phones.
 *
 * THE FIX: give the image a real band height and crop it with
 * object-fit instead of letting it shrink. object-position keeps the
 * bottom of the frame, because the source art is deliberately clean sky
 * in its upper 55% with the buildings beneath. Then re-cut the gradient
 * so its clear window sits over where the artwork actually is.
 *
 * The parallax transform is also neutralised here: with a fixed-height
 * cropped band, a translateY large enough to matter would drag the
 * buildings straight back out of the visible window.
 * ------------------------------------------------------------------ */
/* Breakpoint set from measurement, not guesswork. The artwork's top edge sits
   at 60% of the section at 768px and 57% at 900px - both inside the gradient's
   opaque tail - then jumps to 21% at 1024px, where the copy grid switches to
   two columns and the section gets shorter. 1000px covers every width where
   the bug actually occurs, and stops short of the ones where it does not. */
@media (max-width: 1000px) {
  img[src*="campus-v2"] {
    height: 42% !important;
    min-height: 250px !important;
    aspect-ratio: auto !important;
    object-fit: cover !important;
    object-position: 50% 88% !important;
    bottom: 0 !important;
    transform: none !important;
    opacity: 1 !important;
  }

  /* Clear window repositioned over the band: soft at the top edge so the
     copy above still reads, and only fully navy in the last few percent
     so the section still closes cleanly into the next one. */
  img[src*="campus-v2"] + div {
    background: linear-gradient(
      rgb(7, 20, 38) 0%,
      rgba(7, 20, 38, 0.94) 40%,
      rgba(7, 20, 38, 0.12) 64%,
      rgba(7, 20, 38, 0.12) 90%,
      rgb(7, 20, 38) 100%
    ) !important;
  }
}

/* Under 420px the section is shorter still, so 42% would not leave the band
   enough presence to read as architecture rather than a smudge. */
@media (max-width: 420px) {
  img[src*="campus-v2"] {
    height: 46% !important;
    min-height: 230px !important;
  }
}
