/* ============================================================
   HiFutureSelf — warm "journal" homepage system
   (ported from the Claude Design handoff for landing.php)
   ============================================================ */

/* ---- Tokens ---- */
:root {
  --paper:      #FFFFFF;   /* pure white */
  --paper-2:    #FFFFFF;   /* cards (separated by border + shadow) */
  --paper-3:    #F6F6F4;   /* alt band (neutral light gray) */
  --ink:        #292319;
  --ink-2:      #5C5345;
  --ink-3:      #8B7F6C;
  --line:       #EAEAE7;
  --line-2:     #E2E2DF;

  --accent:     #2E6BE6;   /* brand blue */
  --on-accent:  #ffffff;
  --accent-tint: color-mix(in srgb, var(--accent) 10%, var(--paper-2));
  --accent-line: color-mix(in srgb, var(--accent) 30%, var(--line));

  --font-display: 'Newsreader', Georgia, serif;
  --font-body:    'Figtree', system-ui, sans-serif;
  --font-hand:    'Caveat', cursive;

  --shadow-soft: 0 1px 2px rgba(40,32,18,.04), 0 8px 24px rgba(40,32,18,.06);
  --shadow-card: 0 1px 2px rgba(40,32,18,.05), 0 18px 40px rgba(40,32,18,.10);
  --shadow-phone: 0 2px 6px rgba(20,16,8,.10), 0 40px 80px -20px rgba(20,16,8,.38);

  --maxw: 1180px;
  --r-lg: 28px;
  --r-md: 18px;
}

/* Scope the journal look to the landing page so it never fights the
   shared Bootstrap pages. The class lives on <body>. */
body.landing { box-sizing: border-box; }
body.landing *, body.landing *::before, body.landing *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.landing {
  margin: 0;
  font-family: var(--font-body);
  color: var(--ink);
  background-color: var(--paper);
  background-image: radial-gradient(circle at 1px 1px, color-mix(in srgb, var(--ink) 5%, transparent) 1px, transparent 0);
  background-size: 26px 26px;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  line-height: 1.6;
  overflow-x: hidden;
}

body.landing img { max-width: 100%; display: block; }
/* Inline content links read as accent; chrome links (brand, nav, footer,
   badges) set their own colour below and override this. */
body.landing a { color: var(--accent); text-decoration: none; }
body.landing a:hover { text-decoration: underline; }

/* Give plain page headings the editorial serif (landing's own headings use
   .display, which is excluded so its weights are untouched). */
.landing h1:not(.display), .landing h2:not(.display) {
  font-family: var(--font-display); font-weight: 480; letter-spacing: -.01em; line-height: 1.12;
}

/* Drive Bootstrap's container to the design width + gutter. Setting the
   container gutter to 3.5rem gives 28px side padding (matching the mock);
   rows inside use g-4/g-5 (<= 3.5rem) so columns stay edge-aligned. */
.landing .container { max-width: var(--maxw); --bs-gutter-x: 3.5rem; }

/* ---- Type helpers ---- */
.landing .display { font-family: var(--font-display); font-weight: 440; letter-spacing: -.012em; line-height: 1.03; }
.landing .serif-italic { font-family: var(--font-display); font-style: italic; font-weight: 400; }
.landing .eyebrow {
  font-size: 12.5px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase;
  color: var(--accent); display: inline-flex; align-items: center; gap: 9px;
}
.landing .eyebrow::before { content: ""; width: 22px; height: 1.5px; background: currentColor; opacity: .65; }
.landing .hand { font-family: var(--font-hand); font-weight: 600; color: var(--accent); line-height: 1.1; }
.landing .lead { font-size: clamp(17px, 1.4vw, 19px); color: var(--ink-2); }

/* ============================================================
   Header
   ============================================================ */
.site-head {
  position: sticky; top: 0; z-index: 50;
  backdrop-filter: saturate(1.4) blur(12px);
  -webkit-backdrop-filter: saturate(1.4) blur(12px);
  background: color-mix(in srgb, var(--paper) 78%, transparent);
  border-bottom: 1px solid transparent;
  transition: border-color .3s, background .3s;
}
.site-head.scrolled { border-bottom-color: var(--line); }
.site-head .container { height: 74px; }
.brand { display: flex; align-items: center; gap: 11px; }
.brand img { height: 26px; width: auto; }
.nav { display: flex; align-items: center; gap: 30px; }
.nav a.navlink { font-size: 15px; color: var(--ink-2); font-weight: 500; transition: color .2s; }
.nav a.navlink:hover { color: var(--ink); }
@media (max-width: 740px) { .nav .navlink { display: none; } }

.badge-store { display: inline-block; transition: opacity .2s ease; }
.badge-store:hover { opacity: .6; }
.badge-store img { height: 44px; width: auto; }
.badge-store.sm img { height: 38px; }
.hero__cta .badge-store img,
.cta__actions .badge-store img { height: 58px; }

/* ============================================================
   Generic section
   ============================================================ */
.section { padding: clamp(70px, 9vw, 124px) 0; position: relative; }
.section.band { background: var(--paper-3); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
/* Layout for features lives in Bootstrap (row / col-lg-6). These just style
   the copy + center the phone art within its column. */
.feature__media { display: flex; justify-content: center; }
.feature__copy h2 { font-size: clamp(30px, 3.6vw, 50px); margin: 18px 0 0; }
.feature__copy .lead { margin-top: 20px; max-width: 30em; }

/* ---- idea chips ---- */
.chips { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
.chip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 15px; border-radius: 999px;
  background: var(--paper-2); border: 1px solid var(--line);
  font-size: 14.5px; color: var(--ink); box-shadow: var(--shadow-soft);
}
.chip .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }

/* ============================================================
   Phone frame
   ============================================================ */
.phone {
  --w: 300px;
  position: relative; width: var(--w);
  border-radius: 46px; padding: 9px;
  background: linear-gradient(160deg, #2a2a2e, #0b0b0d 60%);
  box-shadow: var(--shadow-phone), inset 0 0 0 1.5px rgba(255,255,255,.08);
}
.phone::after { /* side button hint */
  content: ""; position: absolute; right: -2px; top: 130px; width: 3px; height: 56px;
  border-radius: 3px; background: #2a2a2e;
}
.phone img { width: 100%; border-radius: 38px; display: block; }
.phone-wrap { position: relative; display: inline-block; }

/* ============================================================
   iOS notification banner
   ============================================================ */
.notif {
  display: flex; gap: 11px; align-items: flex-start;
  width: 320px; max-width: 100%;
  padding: 12px 14px; border-radius: 19px;
  background: color-mix(in srgb, var(--paper-2) 86%, transparent);
  backdrop-filter: blur(14px) saturate(1.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.3);
  border: 1px solid color-mix(in srgb, var(--ink) 8%, transparent);
  box-shadow: var(--shadow-card);
}
.notif__icon { width: 40px; height: 40px; border-radius: 10px; flex: 0 0 auto; box-shadow: 0 1px 2px rgba(0,0,0,.2); }
.notif__body { flex: 1; min-width: 0; }
.notif__top { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 2px; }
.notif__app { font-size: 11px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--ink-2); }
.notif__time { font-size: 12px; color: var(--ink-3); white-space: nowrap; }
.notif__msg { font-size: 14.5px; color: var(--ink); line-height: 1.42; }

.notif.secret .notif__msg { position: relative; }
.notif.secret .redact {
  display: inline-block; border-radius: 5px; color: transparent;
  background: var(--ink-2); filter: blur(.3px);
  transition: background .35s, color .35s, filter .35s; user-select: none;
}
.notif.secret:hover .redact { background: transparent; color: var(--ink); filter: none; user-select: auto; }
.notif .lock { font-size: 12px; color: var(--accent); }

.notif-stack { display: flex; flex-direction: column; gap: 16px; }

/* floating notif over phone */
.float-notif { position: absolute; z-index: 5; box-shadow: var(--shadow-card); }

/* ============================================================
   Hero
   ============================================================ */
.hero { padding: clamp(40px, 6vw, 76px) 0 clamp(64px, 8vw, 110px); position: relative; }
.hero h1 { font-size: clamp(44px, 6.4vw, 92px); margin: 22px 0 0; }
.hero h1 em { color: var(--accent); font-style: italic; }
.hero .lead { margin-top: 24px; font-size: clamp(18px, 1.5vw, 21px); max-width: 27em; }
.hero__cta { display: flex; align-items: center; gap: 22px; margin-top: 34px; flex-wrap: wrap; }
.hero__rating { display: flex; align-items: center; gap: 12px; margin-top: 30px; }
.stars { color: var(--accent); letter-spacing: 2px; font-size: 16px; }
.hero__rating .meta { font-size: 14.5px; color: var(--ink-2); }
.hero__rating .meta b { color: var(--ink); font-weight: 700; }

.hero__media { position: relative; display: flex; justify-content: center; }
.hand-note { position: absolute; font-size: 25px; line-height: 1.05; pointer-events: none; z-index: 6; }
.hand-note .arrow { display: block; font-size: 22px; }
/* The handwritten callouts pinned beside the phones overlap once the columns
   stack, so hide them on mobile/tablet (the secret-section note is a plain
   .hand, not a .hand-note, so it stays visible). */
@media (max-width: 991.98px) { .hand-note { display: none; } }

/* ============================================================
   How-it-works mini steps (grid handled by Bootstrap row / col-md-4)
   ============================================================ */
.step {
  background: var(--paper-2); border: 1px solid var(--line); border-radius: var(--r-md);
  padding: 24px 22px; box-shadow: var(--shadow-soft);
}
.step .num {
  font-family: var(--font-display); font-size: 17px; color: var(--accent);
  width: 34px; height: 34px; border-radius: 50%; border: 1.5px solid var(--accent-line);
  display: grid; place-items: center; margin-bottom: 16px; background: var(--accent-tint);
}
.step h3 { font-size: 18px; margin: 0 0 6px; font-weight: 650; }
.step p { margin: 0; font-size: 14.5px; color: var(--ink-2); }

/* ============================================================
   Secret band
   ============================================================ */
.secret-band { text-align: center; }
.secret-band h2 { font-size: clamp(30px, 3.8vw, 52px); margin: 16px auto 0; max-width: 16em; }
.secret-band .lead { margin: 20px auto 0; max-width: 34em; }
.secret-demo { display: flex; justify-content: center; margin-top: 40px; }

/* ============================================================
   Reviews
   ============================================================ */
/* reviews-head layout uses Bootstrap flex utilities; review grid uses row / col-md-4 */
.bigrate { display: flex; align-items: baseline; gap: 14px; }
.bigrate .score { font-family: var(--font-display); font-size: clamp(56px, 8vw, 96px); line-height: .9; }
.bigrate .of { color: var(--ink-3); font-size: 22px; font-family: var(--font-display); white-space: nowrap; }
.review {
  background: var(--paper-2); border: 1px solid var(--line); border-radius: var(--r-md);
  padding: 28px 26px; box-shadow: var(--shadow-soft); position: relative;
  display: flex; flex-direction: column;
}
.review .qstars { color: var(--accent); letter-spacing: 2px; font-size: 14px; margin-bottom: 16px; }
.review p { font-family: var(--font-display); font-size: 19px; line-height: 1.5; margin: 0 0 20px; color: var(--ink); }
.review .who { margin-top: auto; font-size: 14px; color: var(--ink-2); font-weight: 600; }
.review .who span { color: var(--ink-3); font-weight: 400; }

/* ============================================================
   Final CTA
   ============================================================ */
.cta { text-align: center; }
.cta__icon { width: 92px; height: 92px; border-radius: 21px; margin: 0 auto 28px; box-shadow: var(--shadow-card); }
.cta h2 { font-size: clamp(34px, 5vw, 66px); margin: 0 auto; max-width: 14em; }
.cta h2 em { color: var(--accent); font-style: italic; }
.cta .lead { margin: 22px auto 0; max-width: 30em; }
.cta__actions { display: flex; justify-content: center; margin-top: 34px; }
.cta__fine { margin-top: 18px; font-size: 13.5px; color: var(--ink-3); }

/* ============================================================
   Footer
   ============================================================ */
.foot { border-top: 1px solid var(--line); padding: 64px 0 48px; }
/* foot__top columns come from Bootstrap row / col; spacing kept below */
.foot__brand img { height: 26px; margin-bottom: 16px; }
[data-theme="dark"] .foot__brand img { filter: invert(1) brightness(1.7) contrast(.9); }
.foot__brand p { font-size: 14px; color: var(--ink-2); max-width: 24em; margin: 0; }
.foot h4 { font-size: 12px; text-transform: uppercase; letter-spacing: .12em; color: var(--ink-3); margin: 0 0 16px; font-weight: 700; }
.foot ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 11px; }
.foot ul a { font-size: 14.5px; color: var(--ink-2); transition: color .2s; }
.foot ul a:hover { color: var(--accent); }
.foot__bottom { margin-top: 52px; padding-top: 26px; border-top: 1px solid var(--line); font-size: 13px; color: var(--ink-3); }

/* ---- entrance ---- */
@media (prefers-reduced-motion: no-preference) {
  .reveal { opacity: 0; transform: translateY(18px); transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
  .reveal.in { opacity: 1; transform: none; }
}
