/* Yash Marwal — Broadsheet Editorial Custom Styles */

/* Base & Scrollbar */
@layer base {
  html, body {
    margin: 0;
    padding: 0;
    background-color: #f4eee1 !important;
    color: #1c1c17;
    font-family: "Source Serif 4", Georgia, serif;
    overscroll-behavior: none;
    /* Authentic warm broadsheet beige cold-press paper tooth & tone */
    background-image: 
      radial-gradient(rgba(140, 125, 100, 0.04) 1px, transparent 0),
      linear-gradient(180deg, rgba(244, 238, 225, 0.98) 0%, rgba(239, 233, 219, 0.98) 100%) !important;
    background-size: 6px 6px, 100% 100% !important;
  }

  /* Authentic Archival Cold-Press White Paper Grain (Fine-embossed fibers & soft grazing light) */
  body::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    pointer-events: none;
    z-index: 9999;
    opacity: 0.12;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='paperGrain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3CfeDiffuseLighting in='noise' lighting-color='%23ffffff' surfaceScale='0.65'%3E%3CfeDistantLight azimuth='60' elevation='65'/%3E%3C/feDiffuseLighting%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23paperGrain)'/%3E%3C/svg%3E");
    background-repeat: repeat;
    mix-blend-mode: multiply;
  }
  
  ::-webkit-scrollbar {
    width: 6px;
    height: 6px;
  }
  
  ::-webkit-scrollbar-track {
    background: #e9e3d5;
  }
  
  ::-webkit-scrollbar-thumb {
    background: #747878;
    border-radius: 0px;
  }
  
  ::-webkit-scrollbar-thumb:hover {
    background: #1c1c17;
  }
}

/* Custom Broadsheet Typography & Borders */
.font-headline {
  font-family: 'Newsreader', Georgia, serif;
}

.font-body-serif {
  font-family: 'Source Serif 4', Georgia, serif;
}

.font-label-sans {
  font-family: 'Libre Franklin', -apple-system, sans-serif;
}

.font-mono-cap {
  font-family: 'Space Mono', monospace;
}

/* Hairline & Double Rules */
.border-hairline {
  border-color: #c4c7c7;
}

.border-lead {
  border-color: #1c1c17;
}

.double-rule-bottom {
  position: relative;
}

.double-rule-bottom::after {
  content: '';
  display: block;
  width: 100%;
  height: 1px;
  background-color: #1c1c17;
  margin-top: 2px;
}

/* Editorial Drop Cap */
.drop-cap-initial::first-letter {
  font-family: 'Newsreader', Georgia, serif;
  float: left;
  font-size: 3.5rem;
  line-height: 0.85;
  padding-top: 4px;
  padding-right: 12px;
  padding-bottom: 2px;
  color: #1c1c17;
  font-weight: 500;
}

/* Interactive Image Frames */
.broadsheet-frame {
  border: 1px solid #1c1c17;
  background-color: #ffffff;
  padding: 4px;
  transition: border-color 0.2s ease, transform 0.2s ease;
}

.broadsheet-frame img {
  filter: grayscale(100%) contrast(115%);
  transition: filter 0.3s ease;
}

.broadsheet-frame:hover img {
  filter: grayscale(0%) contrast(100%);
}

/* Modal Backdrop & Drawer */
.modal-overlay {
  background-color: rgba(28, 28, 23, 0.75);
  backdrop-filter: blur(4px);
}

.modal-box {
  background-color: #f4eee1;
  border: 2px solid #1c1c17;
  box-shadow: 8px 8px 0px #1c1c17;
}

/* Section Navigation Active State */
.nav-link.active {
  background-color: #1c1b1b;
  color: #f4eee1;
  font-weight: 700;
  padding: 4px 10px;
}

/* Toast Notification */
#toast-notification {
  transform: translateY(100%);
  opacity: 0;
  visibility: hidden;
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease, visibility 0.3s;
}

#toast-notification.show {
  transform: translateY(0);
  opacity: 1;
  visibility: visible;
}

/* Print Optimization */
@media print {
  header, footer, nav, .no-print {
    display: none !important;
  }
  body {
    background: #ffffff !important;
    color: #000000 !important;
  }
  body::before {
    display: none !important;
  }
  .broadsheet-frame img {
    filter: grayscale(100%) !important;
  }
}

/* ------------------------------------------------------------------
   Motion. Everything below only applies when JS has marked <html class="js">
   and the visitor has not asked for reduced motion, so content is never
   hidden by default.
------------------------------------------------------------------- */

/* Nav: animated underline */
.nav-link { position: relative; }
.nav-link:not(.active)::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -4px;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.28s ease;
}
.nav-link:not(.active):hover::after { transform: scaleX(1); }

/* Venture cards and contact links: small lift / nudge */
#ventures article h3 { transition: transform 0.28s ease; }
#ventures article:hover h3 { transform: translateX(5px); }
#inquiries a { transition: letter-spacing 0.25s ease, color 0.2s ease; }
#inquiries a:hover { letter-spacing: 0.08em; }

/* Lightbox opening */
#media-modal.flex { animation: fade-in 0.25s ease; }
#media-modal.flex .modal-box { animation: pop-in 0.3s cubic-bezier(0.2, 0.8, 0.2, 1); }
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes pop-in { from { opacity: 0; transform: translateY(14px) scale(0.97); } to { opacity: 1; transform: none; } }

/* Mobile menu: a newspaper page turning down from the masthead edge */
#mobile-nav {
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%;
  transform-origin: top center;
  transform: perspective(900px) rotateX(-96deg);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  box-shadow: 0 14px 22px -10px rgba(28, 28, 23, 0.45);
  background-image: linear-gradient(180deg, rgba(244, 238, 225, 1) 0%, rgba(233, 227, 213, 1) 100%);
  transition: transform 0.65s cubic-bezier(0.22, 0.8, 0.24, 1), opacity 0.25s ease 0.1s, visibility 0s linear 0.65s;
}
#mobile-nav::after { /* paper shading that clears as the page lies flat */
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(28, 28, 23, 0.55), rgba(28, 28, 23, 0));
  opacity: 1;
  transition: opacity 0.65s ease;
}
#mobile-nav.open {
  transform: perspective(900px) rotateX(0deg);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: transform 0.65s cubic-bezier(0.22, 0.8, 0.24, 1), opacity 0.2s ease, visibility 0s;
}
#mobile-nav.open::after { opacity: 0; }
#mobile-nav a {
  opacity: 0;
  transform: translateX(-10px);
  transition: opacity 0.3s ease, transform 0.3s ease;
}
#mobile-nav.open a { opacity: 1; transform: none; transition-delay: calc(0.28s + var(--i, 0) * 0.05s); }

@media (prefers-reduced-motion: no-preference) {
  /* Page load: masthead rules draw, headline lines rise */
  html.js .load-in {
    opacity: 0;
    animation: rise 0.8s cubic-bezier(0.2, 0.7, 0.2, 1) forwards;
    animation-delay: var(--d, 0s);
  }
  html.js .load-rule {
    transform: scaleX(0);
    transform-origin: left;
    animation: draw 0.9s cubic-bezier(0.6, 0, 0.2, 1) forwards;
    animation-delay: var(--d, 0s);
  }
  @keyframes rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
  @keyframes draw { to { transform: scaleX(1); } }

  /* Scroll: sections fade up, rules draw, figures wipe in */
  html.js .reveal {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.2, 0.7, 0.2, 1);
    transition-delay: var(--d, 0s);
  }
  html.js .reveal.in { opacity: 1; transform: none; }
  html.js .rule-draw {
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.9s cubic-bezier(0.6, 0, 0.2, 1);
  }
  html.js .rule-draw.in { transform: scaleX(1); }
  /* In The Field: diagrams draw themselves (see initDrawnFigures) */
  html.js .draw-svg .d-stroke { stroke-dasharray: var(--len); stroke-dashoffset: var(--len); }
  html.js .draw-svg .d-fill { fill-opacity: 0; }
  html.js .draw-svg .d-text { opacity: 0; }
  html.js .draw-svg .d-rule { transform-box: fill-box; transform-origin: left center; transform: scaleX(0); }
  html.js .draw-svg.in .d-stroke { animation: svg-draw 0.9s cubic-bezier(0.5, 0, 0.2, 1) forwards; animation-delay: var(--d, 0s); }
  html.js .draw-svg.in .d-fill { animation: svg-fill 0.5s ease forwards; animation-delay: calc(var(--d, 0s) + 0.55s); }
  html.js .draw-svg.in .d-text { animation: svg-fill-text 0.5s ease forwards; animation-delay: calc(var(--d, 0s) + 0.35s); }
  html.js .draw-svg.in .d-rule { animation: svg-rule 0.8s cubic-bezier(0.6, 0, 0.2, 1) forwards; animation-delay: var(--d, 0s); }
  @keyframes svg-draw { to { stroke-dashoffset: 0; } }
  @keyframes svg-fill { to { fill-opacity: 1; } }
  @keyframes svg-fill-text { to { opacity: 1; } }
  @keyframes svg-rule { to { transform: scaleX(1); } }
}

@media (prefers-reduced-motion: reduce) {
  #mobile-nav { transform: none; transition: opacity 0.2s ease, visibility 0s linear 0.2s; }
  #mobile-nav.open { transition: opacity 0.2s ease; }
  #mobile-nav::after { display: none; }
  #mobile-nav a { opacity: 1; transform: none; transition: none; }
}
