/* ============================================================
   DemNerds — Styles
   Structure:
   1) Foundations (tokens)
   2) Base / Reset
   3) Layout utilities
   4) Typography
   5) Surfaces (theme/bg/texture)
   6) Components (header/nav, cards, buttons, footer)
   7) Page patterns (home)
   8) Modes (protective)
   9) Media queries
   ============================================================ */


/* ============================================================
   1) Foundations (tokens)
   ============================================================ */
:root{
  /* Layout */
  --layout-page-max: 1100px;
  --layout-prose-max: 74ch;
  --layout-pad: 1.25rem;
  --layout-header-offset: 112px;

  /* Spacing */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  /* NOTE: removed --space-5 (duplicate of --space-4).
     If you want it, set to 1.25rem instead. */
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-12: 3rem;
  --space-16: 4rem;

  /* Colors */
  --color-bg: #F7F7F5;
  --color-surface: #FFFFFF;
  --color-surface-muted: #F1F1EE;

  --color-text: #212121;
  --color-muted: #4A5563;
  --color-border: rgba(33,33,33,.12);

  --color-theme: #0B3D2E;
  --color-accent-warm: #FFD93B;
  --color-error: #C62828;

  --color-on-dark-primary: rgba(255,255,255,.92);
  --color-on-dark-muted: rgba(255,255,255,.75);

  --color-link: var(--color-theme);
  --color-focus: rgba(11,61,46,.35);

  --state-dim: rgba(0,0,0,.08);
  --texture-opacity: .15;

  /* Surfaces + elevation */
  --radius-base: 12px;
  --shadow-card: 0 4px 12px rgba(0,0,0,.05);

  /* Focus */
  --focus-ring: 3px solid var(--color-focus);
  --focus-offset: 2px;

  /* Motion */
  --motion-fast: 120ms ease;
}


/* ============================================================
   2) Base / Reset
   ============================================================ */
*{ box-sizing:border-box; }

html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}

body{
  margin:0;
  background:var(--color-bg);
  color:var(--color-text);
  font-family:"Source Sans 3", system-ui, -apple-system, sans-serif;
  line-height:1.55;
}

/* Smooth scroll (honor reduced motion below) */
html:focus-within{ scroll-behavior:smooth; }
[id]{ scroll-margin-top:var(--layout-header-offset); }

/* Prevent 100vw full-bleed math from causing a right “bar” */
html, body{ overflow-x: clip; } /* switch to hidden if needed */


/* ============================================================
   3) Layout utilities
   ============================================================ */
.container{
  max-width: var(--layout-page-max);
  margin: 0 auto;
  padding: 0 var(--layout-pad);
}

/* Full-bleed section wrapper (use on the section itself) */
.full-bleed{
  position: relative;
  left: 50%;
  right: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
  width: 100vw;
}

/* Rhythm */
main{ padding: var(--space-12) 0; }
body[data-template="home"] main{ padding: 0; }
section + section{ margin-top: var(--space-8); }

/* Skip link */
.skip-link{
  position:absolute;
  left:-9999px;
  top:0;
  padding:.6rem .85rem;
  background:#000;
  color:#fff;
  border-radius:10px;
  z-index:1000;
}
.skip-link:focus{
  left:var(--layout-pad);
  top:var(--layout-pad);
  outline:none;
}


/* ============================================================
   4) Typography
   ============================================================ */
h1,h2,h3{
  line-height:1.15;
  margin:0 0 var(--space-4);
}
h1{ font-size: clamp(2.2rem, 4vw, 2.7rem); font-weight:700; }
h2{ font-size: clamp(1.5rem, 2.5vw, 1.9rem); font-weight:600; }
h3{ font-size: clamp(1.15rem, 1.8vw, 1.25rem); font-weight:600; }

p{ margin:0 0 var(--space-4); }
.muted{ color: var(--color-muted); } /* class utility, works on any element */
ul{ margin:0 0 var(--space-4); padding-left:1.25rem; }
li{ margin:.35rem 0; }

a{ color: var(--color-link); }

/* Prose mold */
.prose{ max-width: var(--layout-prose-max); }
.prose h2{ margin-top: var(--space-8); }
.prose h3{ margin-top: var(--space-6); }
.prose p, .prose ul{ margin-bottom: var(--space-4); }

mark{
  background: color-mix(in srgb, var(--color-accent-warm) 35%, transparent);
  padding: 0 .15em;
  border-radius: .25em;
}


/* ============================================================
   5) Surfaces (theme/bg/texture)
   ============================================================ */
.textured-surface{
  position: relative;
  isolation: isolate;
}
.textured-surface::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background-image: url("/assets/textures/paper-fibers.png");
  background-size: 256px;
  background-repeat: repeat;
  opacity: var(--texture-opacity);
  mix-blend-mode: normal;

}
.textured-surface > *{
  position: relative;
  z-index: 1;
}

/* Surface background utilities */
.surface-theme{ background-color: var(--color-theme); }
.surface-bg{ background-color: var(--color-bg); }
.surface-white{ background-color: var(--color-surface); }
.surface-muted{ background-color: var(--color-surface-muted); }

/* “On theme” text context */
.on-theme{ color: var(--color-on-dark-primary); }
.on-theme .muted{ color: var(--color-on-dark-muted); }
.on-theme a{ color: var(--color-on-dark-primary); }

.divider-warm{
  border-top: 1px solid var(--color-accent-warm);
  margin: var(--space-8) 0;
}


/* ============================================================
   6) Components
   ============================================================ */

/* Header */
.site-header{
  color: #fff;
  border-bottom: 3px solid var(--color-accent-warm);
  margin-bottom: var(--space-8);
}
.site-header .container{
  padding-top: var(--space-6);
  padding-bottom: var(--space-4);
}

/* Page header (subpages) — echoes home cards without looking like a CTA */
.page-head{
  margin: 0 0 var(--space-8);
  padding: var(--space-6);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-top: 3px solid var(--color-accent-warm);
  border-radius: var(--radius-base);
  box-shadow: var(--shadow-card);
}

.page-head__title{
  margin: 0 0 var(--space-2);
}

.page-head__kicker{
  margin: 0;
  color: color-mix(in srgb, var(--color-text) 80%, var(--color-muted));
  line-height: 1.35;
  max-width: 65ch;
  font-size: 1.05rem;
}

/* Brand */
.brand{
  display:flex;
  flex-direction:column;
  gap: var(--space-1);
}
.brand__link{
  color: inherit;
  font-size: 1.6rem;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.brand__sub{
  color: var(--color-on-dark-muted);
  font-size: 0.9rem;
  line-height: 1.35;
  font-weight: 400;
}
.nav-context{
  font-size: 0.95rem;
  line-height: 1.35;
  color: var(--color-on-dark-muted);
  margin-bottom: var(--space-2);
  max-width: 32ch;
}

/* Nav */
.nav{
  display:flex;
  flex-wrap:wrap;
  gap: .75rem 1.25rem;
  margin-top: var(--space-3);
}
.nav a{
  color: inherit;
  font-weight: 600;
  font-size: 1.2rem;
  text-decoration: none;
  padding-bottom: 0.2em;
  border-bottom: 2px solid transparent;
  letter-spacing: .01em;
}
.nav a:hover{ border-bottom-color: currentColor; }
.nav a:focus-visible{
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
  border-bottom-color: currentColor;
}
.nav a[aria-current="page"]{
  border-bottom-color: var(--color-accent-warm);
  border-bottom-width: 3px;
}

/* Buttons */
.button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:.65rem .9rem;
  border-radius: var(--radius-base);
  font-weight:600;
  text-decoration:none;
  transition: background-color var(--motion-fast), color var(--motion-fast);
  border: 1px solid color-mix(in srgb, var(--color-theme) 40%, transparent);
  background: var(--color-theme);
  color:#fff;
}
.button:hover{
  background: color-mix(in srgb, var(--color-theme) 90%, black);
}
.button:focus-visible{
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}
.button--ghost{
  background: transparent;
  color: var(--color-theme);
  border: 1px solid color-mix(in srgb, var(--color-theme) 50%, transparent);
}
.button--ghost:hover{
  background: color-mix(in srgb, var(--color-theme) 8%, white);
}

/* Cards */
.card{
  background: var(--color-surface-muted);
  border: 1px solid var(--color-border);
  border-top: 3px solid var(--color-accent-warm);
  border-radius: var(--radius-base);
  padding: var(--space-6);
  box-shadow: var(--shadow-card);
}
.card h3{ margin-top:0; }
.card h3 a{
  color: var(--color-text);
  text-decoration:none;
}
.card h3 a:hover{
  text-decoration: underline;
  text-underline-offset: .2em;
}

/* Footer */
.site-footer{
  background-color: var(--color-theme);
  color: #fff;
  border-top: 3px solid var(--color-accent-warm);
  padding: var(--space-4) 0;
  margin-top: var(--space-6);
}



/* ============================================================
   7) Page patterns — Home
   ============================================================ */

/* Hero */
.home-intro{
  padding: var(--space-12) 0 var(--space-16);
}
body[data-template="home"] .home-intro{
  margin-top: calc(var(--space-8) * -1);
}

.home-intro__inner{
  padding-left: clamp(0rem, 4vw, 4rem);
}

.home-intro__grid{
  display:grid;
  grid-template-columns: 160px 1fr;
  gap: var(--space-6) var(--space-6);
  align-items:center;
}

.home-intro__mark{
  display:block;
  width:160px;
  height:auto;
  max-width:100%;
}

/* Wordmark on home only */
.home-intro .home-intro__title{
  font-size: clamp(2.2rem, 1.6vw + 1.9rem, 2.9rem);
  line-height: 1.05;
  margin: 0;
  font-weight: 700;
  letter-spacing: -0.01em;
}

/* Kicker lines */
.home-intro__kicker{
  margin: 0 0 var(--space-4);
  font-size: clamp(1.1rem, 1.4vw, 1.35rem);
  line-height: 1.25;
}
.home-intro__kicker span{ display:block; }
.home-intro__kicker span + span{ margin-top:.25rem; }
.home-intro__kicker span:last-child{ font-weight:600; }

.home-intro__desc{ margin:0; max-width: 70ch; }

/* Cards overlap band */
.home-start{
  position: relative;
  z-index: 2;
  margin-top: calc(var(--space-12) * -1);
}
.home-cards{
  display:grid;
  gap: var(--space-4);
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* Path cards: icon row + stretched-link behavior */
.card--path{
  position: relative;
  transition: box-shadow var(--motion-fast), transform var(--motion-fast), background-color var(--motion-fast);
}
.card--path .card__header{
  display:flex;
  align-items:center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}
.card--path .card__icon{
  width: 65px;
  height: 65px;
  flex: 0 0 auto;
}
.card--path .card__title{
  margin:0;
  line-height:1.15;
}

/* Stretched link: requires <a class="card__link">... */
.card--path .card__link{
  position: relative;
  z-index: 2;
}

.card--path .card__link::after{
  content:"";
  position:absolute;
  inset:0;
  border-radius: inherit;
}
/* keep content above overlay */
.card--path .card__header,
.card--path p{
  position: relative;
  z-index: 1;
}

.card--path:hover{
  transform: translateY(1px);
  box-shadow: 0 6px 16px rgba(0,0,0,.08);
  background-color: color-mix(in srgb, var(--color-surface-muted) 85%, white);
}
.card--path:focus-within{
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}
.card--path h3 a:hover{ text-decoration: none; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  html:focus-within{ scroll-behavior:auto; }
  *{ transition:none !important; animation:none !important; }
  .card--path:hover{ transform:none; }
}


/* ============================================================
   8) Modes — Protective
   ============================================================ */
body.is-protective .site-header{
  color: var(--color-text);
  border-bottom-color: var(--color-border);
}
body.is-protective .site-header.surface-theme{ background-color: var(--color-bg); }
body.is-protective .site-header.textured-surface::before{ opacity: 0; }
body.is-protective .nav a,
body.is-protective .brand__link{ color: var(--color-text); }
body.is-protective .brand__sub{ color: var(--color-muted); }

.protective-dimmer{ background: var(--state-dim); }


/* ============================================================
   9) Media queries
   ============================================================ */
@media (max-width: 860px){
  .home-cards{ grid-template-columns: 1fr; }
}

@media (max-width: 640px){
  .home-intro__inner{ padding-left: var(--space-6); }
  .home-intro__grid{
    grid-template-columns: 1fr;
    align-items: start;
  }
  .home-intro__mark{ width: 88px; }
}

@media (max-width: 520px){
  :root{
    --layout-pad: 1rem;
    --layout-header-offset: 148px;
  }
  .brand__link{ font-size: 1.4rem; }
}
