/* VIBEBUILT — graphic layer */

/* —— HERO: kinetic composition —— */
.hero { padding-top: 140px; }
.hero .wrap { position: relative; }
.hero-layout {
  display: grid;
  grid-template-columns: 1.25fr 1fr;
  gap: 64px;
  align-items: start;
  margin-top: 16px;
}
@media (max-width: 1000px) {
  .hero-layout { grid-template-columns: 1fr; gap: 48px; }
}
.hero-graphic {
  position: relative;
  aspect-ratio: 4/5;
  width: 100%;
  border: 1px solid var(--line-2);
  background:
    linear-gradient(180deg, var(--bg-2), var(--bg));
  overflow: hidden;
  min-height: 420px;
}
.hero-graphic svg { width: 100%; height: 100%; display: block; }
.hero-graphic .grid-bg {
  position: absolute; inset: 0;
  background-image:
    linear-gradient(var(--line-2) 1px, transparent 1px),
    linear-gradient(90deg, var(--line-2) 1px, transparent 1px);
  background-size: 40px 40px;
  opacity: 0.6;
  mask-image: radial-gradient(ellipse at center, black 30%, transparent 80%);
  -webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 80%);
}
.hero-graphic .hg-label {
  position: absolute; left: 16px; bottom: 14px;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; color: var(--fg-3); text-transform: uppercase;
  z-index: 3;
}
.hero-graphic .hg-label .dot {
  display: inline-block; width: 6px; height: 6px;
  background: var(--accent); border-radius: 999px;
  margin-right: 8px; vertical-align: middle;
  animation: hg-pulse 1.6s ease-in-out infinite;
}
.hero-graphic .hg-index {
  position: absolute; right: 16px; top: 14px;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; color: var(--fg-3); text-transform: uppercase;
  z-index: 3;
}
@keyframes hg-pulse {
  0%, 100% { opacity: 0.4; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.3); }
}

/* —— animated browser mock —— */
.mock-window {
  position: absolute; inset: 10% 8% 14% 8%;
  background: var(--bg);
  border: 1px solid var(--line);
  box-shadow: 0 30px 60px -20px oklch(0.16 0.008 80 / 0.18);
  display: flex; flex-direction: column;
  z-index: 2;
}
.mock-window .chrome {
  display: flex; align-items: center; gap: 6px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line-2);
}
.mock-window .chrome i {
  width: 8px; height: 8px; border-radius: 999px;
  background: var(--line);
  display: inline-block;
}
.mock-window .chrome .url {
  margin-left: 12px;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.08em; color: var(--fg-3);
  padding: 3px 10px; border: 1px solid var(--line-2); border-radius: 999px;
  flex: 1; text-align: center;
}
.mock-window .body {
  flex: 1; padding: 18px; display: flex; flex-direction: column; gap: 10px;
  position: relative; overflow: hidden;
}
.mock-window .mw-bar {
  height: 8px; background: var(--fg); border-radius: 2px;
  transform-origin: left;
  opacity: 0.92;
}
.mock-window .mw-bar.lite { background: var(--line); opacity: 0.9; }
.mock-window .mw-bar.accent { background: var(--accent); }
.mock-window .mw-bar.w1 { width: 55%; height: 18px; }
.mock-window .mw-bar.w2 { width: 80%; }
.mock-window .mw-bar.w3 { width: 40%; }
.mock-window .mw-bar.w4 { width: 65%; }
.mock-window .mw-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
  margin-top: 8px; flex: 1;
}
.mock-window .mw-grid .cell {
  background: var(--bg-2);
  border: 1px solid var(--line-2);
  position: relative;
}
.mock-window .mw-grid .cell::after {
  content: ""; position: absolute; left: 8px; right: 40%; bottom: 8px;
  height: 4px; background: var(--line); border-radius: 2px;
}
.mock-window .cursor {
  position: absolute; width: 2px; height: 14px;
  background: var(--accent);
  animation: hg-cursor 0.9s steps(2) infinite;
  pointer-events: none;
}
@keyframes hg-cursor { 50% { opacity: 0; } }

/* Floating ornamental tags */
.hg-tag {
  position: absolute;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase;
  padding: 6px 10px; border: 1px solid var(--line); background: var(--bg);
  color: var(--fg-2);
  border-radius: 999px;
  z-index: 3;
  white-space: nowrap;
}
.hg-tag.t1 { top: 12%; right: 4%; }
.hg-tag.t2 { bottom: 22%; left: 2%; }
.hg-tag.t3 { top: 48%; right: -4%; }
.hg-tag .dot { display: inline-block; width: 5px; height: 5px; background: var(--accent); border-radius:999px; margin-right:6px; vertical-align:middle; }

/* Connector lines */
.hg-connect {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
}
.hg-connect path {
  fill: none; stroke: var(--line); stroke-width: 1;
  stroke-dasharray: 3 4;
}

/* —— PROCESS SPINE —— */
.process-steps { position: relative; }
.process-spine {
  position: absolute; left: 47px; top: 0; bottom: 0;
  width: 1px;
  background: var(--line-2);
  pointer-events: none;
}
.process-spine::after {
  content: "";
  position: absolute; left: -4px; top: 0;
  width: 9px; height: 9px;
  background: var(--accent);
  border-radius: 999px;
  box-shadow: 0 0 0 4px var(--bg);
  transform: translateY(0);
  transition: transform 0.1s linear;
}
@media (max-width: 900px) {
  .process-spine { left: 27px; }
}

/* —— TRUST arcs —— */
.trust > div { position: relative; overflow: hidden; }
.trust-arc {
  position: absolute; right: -40px; bottom: -40px;
  width: 140px; height: 140px;
  pointer-events: none;
  opacity: 0.4;
}
.trust-arc circle {
  fill: none;
  stroke: var(--fg);
  stroke-width: 1;
}

/* —— MARQUEE glyphs —— */
.marquee .glyph {
  display: inline-flex; align-items: center; justify-content: center;
  width: clamp(22px, 2.6vw, 36px);
  height: clamp(22px, 2.6vw, 36px);
  color: var(--fg-3);
}
.marquee .glyph svg { width: 100%; height: 100%; }

/* —— Section divider ornament —— */
.sec-ornament {
  display: grid;
  grid-template-columns: 40px 1fr 40px;
  gap: 16px;
  align-items: center;
  padding: 0 0 48px;
}
.sec-ornament .bullet {
  width: 8px; height: 8px; border-radius: 999px;
  background: var(--accent);
  justify-self: start;
}
.sec-ornament .bullet.end { justify-self: end; }
.sec-ornament .draw {
  height: 1px; background: var(--line); position: relative; overflow: hidden;
}
.sec-ornament .draw::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(90deg, transparent, var(--fg), transparent);
  transform: translateX(-100%);
  animation: draw-sweep 4s ease-in-out infinite;
}
@keyframes draw-sweep {
  0% { transform: translateX(-100%); }
  50% { transform: translateX(100%); }
  100% { transform: translateX(100%); }
}

/* —— About decoration —— */
.about-portrait { position: relative; }
.about-portrait .frame-ticks {
  position: absolute; inset: -10px;
  pointer-events: none;
  z-index: 3;
}
.about-portrait .frame-ticks::before,
.about-portrait .frame-ticks::after {
  content: ""; position: absolute;
  width: 16px; height: 16px;
  border: 1px solid var(--fg);
}
.about-portrait .frame-ticks::before { top: 0; left: 0; border-right: 0; border-bottom: 0; }
.about-portrait .frame-ticks::after { bottom: 0; right: 0; border-left: 0; border-top: 0; }

/* —— Problem grid ambient glyphs —— */
.problem-item { position: relative; }
.problem-item .pi-glyph {
  position: absolute; top: 40px; right: 0;
  width: 28px; height: 28px;
  color: var(--fg-4);
  opacity: 0.7;
}
.problem-item:hover .pi-glyph { color: var(--accent); opacity: 1; transition: color .3s, opacity .3s; }
.problem-item .pi-glyph svg { width: 100%; height: 100%; }
