/* ══════════════════════════════════════════════
   CẨM NANG VĂN HOÁ VIỆT NAM
   Desktop: intro left + horizontal stacking cards
   Mobile:  vertical stacking cards
   ══════════════════════════════════════════════ */

*{margin:0;padding:0;box-sizing:border-box}

:root{
  --ink:#0a0a0a;
  --ink-50:rgba(10,10,10,.5);
  --ink-08:rgba(10,10,10,.08);
  --paper:#f0ede6;
  --paper-card:#faf9f6;
  --red:#c4301a;
  --rule:rgba(10,10,10,.1);
  --display:"Be Vietnam Pro", sans-serif;
  --body:"Familjen Grotesk", sans-serif;
  --header-h:50px;
  --intro-w:clamp(300px, 30vw, 440px);
}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  -webkit-font-smoothing:antialiased;
  overscroll-behavior:none;
}

/* ── HEADER ── */
.site-header{
  position:fixed;
  top:0;left:0;right:0;
  z-index:100;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 28px;
  height:var(--header-h);
  background:var(--ink);
  color:#fff;
  border-bottom:1px solid rgba(255,255,255,.06);
}
.site-header .logo{
  display:flex;
  align-items:center;
  gap:10px;
  font:700 10.5px/1 var(--display);
  text-transform:uppercase;
  letter-spacing:.12em;
}
.logo-dot{width:6px;height:6px;background:var(--red);flex-shrink:0}
.site-header .subtitle{
  font:400 12px/1 var(--body);
  opacity:.45;
  letter-spacing:.02em;
}
.site-header .counter{
  font:600 11px/1 var(--display);
  letter-spacing:.1em;
  opacity:.6;
  font-variant-numeric:tabular-nums;
}

/* ── INTRO CARD (shared content styles) ── */
.intro-stripe{width:36px;height:3px;background:var(--red)}
.card-intro h1{
  font:900 38px/1 var(--display);
  letter-spacing:-.02em;
}
.card-intro h1 .h1-sub{
  display:block;
  font-weight:300;
  font-size:14px;
  letter-spacing:.06em;
  margin-bottom:14px;
  opacity:.45;
  text-transform:uppercase;
}
.card-intro .intro-desc{
  font:400 13px/1.65 var(--body);
  opacity:.5;
  max-width:320px;
}
.card-intro .intro-letters{
  margin-top:12px;
  font:600 10px/2 var(--display);
  letter-spacing:.2em;
  opacity:.22;
  word-spacing:6px;
  text-transform:uppercase;
}

/* ── CARD INTERNALS (shared) ── */
.card-head{
  flex-shrink:0;
  padding:28px 26px 18px;
  border-bottom:1px solid var(--rule);
  position:relative;
  overflow:hidden;
}
.card-head-bg{
  position:absolute;
  right:-14px;top:-32px;
  font:900 180px/1 var(--display);
  color:rgba(10,10,10,.03);
  pointer-events:none;
  user-select:none;
}
.card-letter-tag{
  font:800 11px/1 var(--display);
  text-transform:uppercase;
  letter-spacing:.16em;
  color:var(--red);
  position:relative;
}
.card-title{
  font:800 24px/1.12 var(--display);
  letter-spacing:-.005em;
  margin-top:6px;
  position:relative;
}
.card-idx{
  font:500 10px/1 var(--display);
  letter-spacing:.1em;
  color:var(--ink-50);
  margin-top:6px;
  position:relative;
}
.card-body{
  flex:1;
  overflow-y:auto;
  padding:20px 26px 36px;
  scrollbar-width:none;
}
.card-body::-webkit-scrollbar{display:none}
.card-body p{
  font:300 13px/1.75 var(--body);
  color:rgba(10,10,10,.78);
  margin-bottom:12px;
  text-align:justify;
  hyphens:auto;
  text-wrap:pretty;
}
.card-body p:first-child::first-letter{
  font:800 32px/1 var(--display);
  float:left;
  padding:3px 7px 0 0;
  color:var(--red);
}
.card-body p:last-child{margin-bottom:0}
.card-body em{font-style:italic}

/* ── PROGRESS BAR ── */
.progress-bar{
  position:fixed;
  bottom:0;left:0;
  height:3px;
  background:var(--red);
  z-index:200;
  width:0%;
  will-change:width;
}


/* ═══════════════════════════════════════════════
   DESKTOP  (≥ 769px)
   Intro pinned left. Cards stack one-at-a-time
   in the right zone (~33% from left edge).
   Whole section is sticky to viewport.
   Vertical scroll drives which card is shown.
   ═══════════════════════════════════════════════ */
@media(min-width:769px){

  .scroll-wrapper{
    position:sticky;
    top:0;
    height:100vh;
    margin-top:var(--header-h);
    display:flex;
    overflow:hidden;
  }

  /* ── Intro: fixed left column ── */
  .card-intro{
    flex-shrink:0;
    width:var(--intro-w);
    height:100%;
    background:var(--ink);
    color:#fff;
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    padding:48px 36px;
    gap:18px;
    border-right:1px solid rgba(255,255,255,.06);
    position:relative;
    z-index:2;
  }

  /* ── Cards area: the right portion where cards stack ── */
  .cards-area{
    flex:1;
    position:relative;
    overflow:hidden;
  }

  /* ── Individual card: absolutely positioned, stacked ── */
  .stack-card{
    position:absolute;
    top:0;
    left:0;
    width:400px;
    height:100%;
    background:var(--paper-card);
    border-right:1px solid var(--rule);
    display:flex;
    flex-direction:column;
    overflow:hidden;
    transform-origin:left center;
    will-change:transform, opacity;
    box-shadow:4px 0 24px rgba(0,0,0,.06);
  }
}


/* ═══════════════════════════════════════════════
   MOBILE  (≤ 768px)
   Vertical stacking cards (CodyHouse style).
   Intro becomes a full-width hero section.
   ═══════════════════════════════════════════════ */
@media(max-width:768px){
  :root{
    --card-top:64px;
    --stack-gap:8px;
  }

  .scroll-wrapper{
    margin-top:var(--header-h);
    display:flex;
    flex-direction:column;
    align-items:center;
  }

  /* Intro becomes full-width hero */
  .card-intro{
    width:100%;
    min-height:80vh;
    background:var(--ink);
    color:#fff;
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    padding:48px 24px;
    gap:18px;
  }
  .card-intro h1{font-size:30px}

  /* Cards area holds vertical stacking cards */
  .cards-area{
    width:100%;
    display:flex;
    flex-direction:column;
    align-items:center;
    padding:40px 20px 60vh;
  }

  .stack-card{
    position:sticky;
    width:90vw;
    height:460px;
    background:var(--paper-card);
    border:1px solid var(--rule);
    border-radius:6px;
    display:flex;
    flex-direction:column;
    overflow:hidden;
    margin-bottom:40px;
    transform-origin:center top;
    transition:transform .1s ease-out, box-shadow .15s ease-out;
    will-change:transform;
    box-shadow:0 2px 12px rgba(0,0,0,.06);
  }

  .site-header{padding:12px 16px}
  .site-header .subtitle{display:none}
  .card-head{padding:22px 20px 14px}
  .card-body{padding:16px 20px 28px}
  .card-head-bg{font-size:130px;right:-10px;top:-24px}
  .card-title{font-size:21px}
}