/* Structure, motion, responsive + class-hover behaviors that inline styles cannot express.
   Per-element visual styling stays inline in each DC. */
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@600;700;800;900&display=swap');
:root {
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --body-font: 'Geist', system-ui, sans-serif;
  --display: 'Archivo', 'Geist', sans-serif;
  --mono: 'Geist Mono', ui-monospace, monospace;
  --red: #E0202E;
  --red-soft: #C81926;
  --bg: #ffffff;
  --surf: #f4f1ef;
  --line: rgba(20,17,17,.13);
  --line-strong: rgba(20,17,17,.22);
  --ink: #1b1917;
  --ink-2: #4d4744;
  --mut: #726c69;
}
/* Dark shell: header, footer, mobile nav, injected panels, loader keep the dark palette */
header[data-header], footer, [data-mobilenav], #vhs-search, #vhs-settings, #vhs-lang-note, #vhs-loader {
  --bg: #0b0a0a;
  --surf: #131111;
  --line: rgba(255,255,255,.1);
  --line-strong: rgba(255,255,255,.2);
  --ink: #f4f1ee;
  --ink-2: #c9c3c1;
  --mut: #97918e;
  --red-soft: #FF4351;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--body-font);
  font-size: 18px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
body.vhs-dys { --body-font: 'Lexend', 'Geist', sans-serif; --display: 'Lexend', sans-serif; letter-spacing: .01em; }
h1, h2, h3, .display { font-family: var(--display); }
a { color: var(--red); text-decoration: none; }
a:hover { color: var(--red-soft); }
img { max-width: 100%; display: block; }
::selection { background: rgba(224,32,46,.32); color: #fff; }

/* keyframes */
@keyframes vhsGrain { 0%{transform:translate(0,0)} 25%{transform:translate(-3%,2%)} 50%{transform:translate(2%,-3%)} 75%{transform:translate(-2%,-2%)} 100%{transform:translate(0,0)} }
@keyframes vhsKen { from{transform:scale(1.05)} to{transform:scale(1.2)} }
@keyframes vhsSpin { to{transform:rotate(360deg)} }
@keyframes vhsTap { 0%,100%{transform:rotate(0)} 55%{transform:rotate(-34deg)} }
@keyframes vhsPulse { 0%,100%{opacity:.5} 50%{opacity:1} }

/* reveal on scroll */
[data-reveal] { opacity: 0; transform: translateY(26px); transition: opacity .8s var(--ease), transform .8s var(--ease); will-change: opacity, transform; }
[data-reveal].in { opacity: 1; transform: none; }
[data-reveal-x] { opacity: 0; clip-path: inset(0 100% 0 0); transition: opacity .9s var(--ease), clip-path 1s var(--ease); }
[data-reveal-x].in { opacity: 1; clip-path: inset(0 0 0 0); }

/* Ken Burns hero image */
.ken { animation: vhsKen 22s var(--ease) infinite alternate; }

/* card hover per brief */
.card { transition: transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease); }
.card:hover { transform: translateY(-6px); box-shadow: 0 26px 60px -20px rgba(0,0,0,.75); border-color: rgba(224,32,46,.55) !important; }
.card .card-media { overflow: hidden; }
.card .card-media img { transition: transform .7s var(--ease); }
.card:hover .card-media img { transform: scale(1.06); }
.card .arrow { transition: transform .3s var(--ease); }
.card:hover .arrow { transform: translateX(4px); }

/* footer / nav underline wipe */
.uline { position: relative; }
.uline::after { content: ''; position: absolute; left: 0; bottom: -3px; height: 1.5px; width: 100%; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform .4s var(--ease); }
.uline:hover::after, .uline:focus-visible::after { transform: scaleX(1); }

/* settings toggle switch */
.vhs-switch { position: relative; display: inline-block; width: 44px; height: 26px; flex: none; }
.vhs-switch input { opacity: 0; width: 0; height: 0; }
.vhs-switch span { position: absolute; inset: 0; cursor: pointer; background: rgba(255,255,255,.16); border-radius: 999px; transition: background .3s var(--ease); }
.vhs-switch span::before { content: ''; position: absolute; width: 20px; height: 20px; left: 3px; top: 3px; background: #fff; border-radius: 50%; transition: transform .3s var(--ease); }
.vhs-switch input:checked + span { background: var(--red); }
.vhs-switch input:checked + span::before { transform: translateX(18px); }
.vhs-switch input:focus-visible + span { outline: 2px solid var(--red-soft); outline-offset: 2px; }
.vhs-field { width: 100%; background: #1c1919; color: var(--ink); border: 1px solid var(--line); border-radius: 9px; padding: 9px 11px; font: 500 14px var(--body-font); }
.vhs-range { width: 100%; accent-color: var(--red); }

/* header icon buttons */
.hdr-icon { background: transparent; border: 0; cursor: pointer; padding: 9px; border-radius: 11px; color: var(--mut); display: inline-flex; align-items: center; justify-content: center; transition: background .25s var(--ease), color .25s var(--ease); }
.hdr-icon:hover, .hdr-icon:focus-visible { background: rgba(224,32,46,.12); color: var(--ink); outline: none; }

/* mobile nav */
[data-mobilenav] { position: fixed; inset: 0; z-index: 118; background: rgba(10,9,9,.98); backdrop-filter: blur(10px); transform: translateX(100%); transition: transform .4s var(--ease); display: flex; flex-direction: column; padding: 90px 32px 40px; gap: 6px; }
[data-mobilenav].open { transform: translateX(0); }

/* responsive utilities */
.only-mobile { display: none; }
@media (max-width: 900px) {
  .only-desktop { display: none !important; }
  .only-mobile { display: inline-flex; }
}
@media (max-width: 560px) {
  .contact-num { display: none; }
  body { font-size: 17px; }
}

/* services alternating rows */
.svc-row { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px,5vw,64px); align-items: center; }
.svc-row:nth-of-type(even) .svc-media { order: 2; }
@media (max-width: 820px) {
  .svc-row { grid-template-columns: 1fr; }
  .svc-row:nth-of-type(even) .svc-media { order: 0; }
  .footer-grid { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 760px) {
  .about-grid, .teaser-grid { grid-template-columns: 1fr !important; }
}
@media (max-width: 520px) {
  .footer-grid { grid-template-columns: 1fr !important; }
}

/* FAQ accordion */
details.faq > summary { list-style: none; cursor: pointer; }
details.faq > summary::-webkit-details-marker { display: none; }
details.faq .faq-ico { transition: transform .3s var(--ease); }
details.faq[open] .faq-ico { transform: rotate(45deg); }
details.faq .faq-body { overflow: hidden; }

/* ===== EDITORIAL "FIELD MANUAL" SYSTEM ===== */
@keyframes vhsMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

.kicker { display: inline-flex; align-items: center; gap: 10px; font: 600 12px/1 var(--mono); letter-spacing: .2em; text-transform: uppercase; color: var(--mut); }
.kicker::before { content: ''; width: 8px; height: 8px; background: var(--red); flex: none; }
.kicker.red { color: var(--red-soft); }

.rule { height: 1px; width: 100%; background: var(--line); border: 0; }

/* marquee ticker */
.marquee { overflow: hidden; white-space: nowrap; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.marquee-track { display: inline-flex; align-items: center; will-change: transform; animation: vhsMarquee 26s linear infinite; }
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee-track > span { display: inline-flex; align-items: center; gap: 26px; padding-right: 26px; font: 800 clamp(20px,3vw,34px)/1 var(--display); letter-spacing: -.01em; text-transform: uppercase; }

/* ledger (numbered service index) */
.ledger { border-top: 1px solid var(--line); }
.ledger-row { position: relative; display: grid; grid-template-columns: 1fr clamp(180px,26vw,340px); gap: clamp(16px,3vw,44px); align-items: center; padding: clamp(22px,3.2vw,40px) 0; border-bottom: 1px solid var(--line); text-decoration: none; transition: background .4s var(--ease), padding-left .4s var(--ease); }
.ledger-row:hover { background: linear-gradient(90deg, rgba(224,32,46,.07), transparent 60%); padding-left: 14px; }
.ledger-row .idx { font: 700 clamp(30px,5vw,60px)/1 var(--display); color: var(--mut); transition: color .4s var(--ease); font-variant-numeric: tabular-nums; }
.ledger-row:hover .idx { color: var(--red-soft); }
.ledger-media { overflow: hidden; border-radius: 4px; aspect-ratio: 16/10; background: linear-gradient(135deg,#241012,#141212); }
.ledger-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease); }
.ledger-row:hover .ledger-media img { transform: scale(1.06); }
.ledger-row .arrow { transition: transform .3s var(--ease); display: inline-block; }
.ledger-row:hover .arrow { transform: translateX(5px); }
@media (max-width: 780px) {
  .ledger-row { grid-template-columns: 1fr; }
  .ledger-media { display: none; }
}

/* spec grid (bordered cells) */
.spec-grid { display: grid; border: 1px solid var(--line); }
.spec-grid > * { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }

/* per-image framing */
.svc-media img[src$="svcpg-fan.jpg"] { object-position: center 20%; }

/* outlined display type */
.stroke-text { color: transparent; -webkit-text-stroke: 1.4px rgba(244,241,238,.34); }

/* vertical rail label */
.vrail { writing-mode: vertical-rl; text-orientation: mixed; }
@media (prefers-reduced-motion: reduce) {
  .ken { animation: none !important; }
  html { scroll-behavior: auto; }
  [data-reveal], [data-reveal-x] { opacity: 1 !important; transform: none !important; clip-path: none !important; }
  .marquee-track { animation: none !important; }
}


/* ===== STATIC EXPORT ADDITIONS ===== */
/* nav wrapper: <nav> is display:contents so it doesn't affect the header flex row */
.nav-desktop a[aria-current="page"] { color: #fff; }
.nav-desktop a[aria-current="page"]::after { content:''; position:absolute; left:14px; right:14px; bottom:2px; height:2px; background:var(--red); border-radius:2px; }
[data-mobilenav] a[aria-current="page"] { color:#fff; }
/* social button hover (was inline style-hover in the authoring runtime) */
.social-fb { transition: all .3s var(--ease); }
.social-fb:hover { background: rgba(224,32,46,.16) !important; border-color: rgba(224,32,46,.5) !important; color:#fff !important; box-shadow:0 0 22px -6px rgba(224,32,46,.7); }
