/* VintageStride — layout accents beyond Tailwind utilities */

:root {
  --vs-header-height: 3.5rem;
  --vs-module-sticky-offset: 7.5rem;
  --vs-angle: -4deg;
}

@font-face {
  font-family: "VS Display";
  src: local("Playfair Display");
}

html {
  scroll-behavior: smooth;
  overflow-x: hidden;
  max-width: 100%;
}

body.vs-nav-open {
  overflow: hidden;
}

body {
  font-feature-settings: "kern" 1, "liga" 1;
  max-width: 100%;
}

/* Full-screen mobile nav: fill visual viewport (avoid max-h + dvh gaps on iOS/Android) */
#vs-mobile-panel {
  box-sizing: border-box;
  padding-bottom: env(safe-area-inset-bottom, 0px);
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  min-height: 100vh;
  min-height: 100svh;
  min-height: 100dvh;
  min-height: -webkit-fill-available;
  max-height: none !important;
  height: auto !important;
  overscroll-behavior: contain;
}

/* Home hero: decorative ring uses negative inset; clip overflow on small widths */
#intro {
  overflow-x: hidden;
}

/* Diagonal hero plane */
.vs-hero-slice {
  clip-path: polygon(0 0, 100% 0, 100% 88%, 0 100%);
}

@media (min-width: 1024px) {
  .vs-hero-slice {
    clip-path: polygon(0 0, 100% 0, 78% 100%, 0 92%);
  }
}

/* Staggered editorial cards */
.vs-card-tilt {
  transform: rotate(var(--vs-angle));
  transform-origin: center center;
}

@media (min-width: 768px) {
  .vs-card-tilt-md-reset {
    transform: rotate(0deg);
  }
}

.vs-stagger-1 {
  margin-top: 0;
}
.vs-stagger-2 {
  margin-top: 2rem;
}
@media (min-width: 768px) {
  .vs-stagger-2 {
    margin-top: 4.5rem;
  }
}
.vs-stagger-3 {
  margin-top: 1rem;
}
@media (min-width: 768px) {
  .vs-stagger-3 {
    margin-top: 8rem;
  }
}

/* Grain overlay for print texture */
.vs-grain::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: 0.06;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  z-index: 50;
}

/* Pull quote border */
.vs-pullquote {
  border-left: 4px solid rgb(194 150 110);
  padding-left: 1.25rem;
}

/* Decorative rule */
.vs-rule-thick {
  height: 3px;
  background: linear-gradient(90deg, rgb(114 47 55), rgb(194 150 110), transparent);
}

/* Focus visible for a11y */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible {
  outline: 2px solid rgb(114 47 55);
  outline-offset: 3px;
}

/* Fixed site header: skip link clears bar */
.vs-skip-link:focus {
  top: calc(var(--vs-header-height) + 0.5rem);
}

/* Sticky atlas module jumper: sits under fixed header */
.vs-module-nav {
  position: sticky;
  top: var(--vs-header-height);
  z-index: 55;
}

/* Anchor targets clear sticky bars */
.vs-scroll-target {
  scroll-margin-top: var(--vs-module-sticky-offset);
}
