/* ============================================================
   Level Learn — landing (levelplus.tech/learn)
   Design system: editorial (Jeton reference) on Level Plus yellow.
   Single typeface Onest, one accent, hierarchy by size & colour.
   ============================================================ */

:root {
  /* Brand */
  --accent:#FED852;          /* signal yellow — objects, tints, surfaces */
  --accent-strong:#EFA400;   /* deep gold — hero/CTA fills, white text on them */
  --accent-deep:#F5C63C;
  --ink:#191919;             /* all text on white; never pure black */
  --ink-soft:rgba(25,25,25,0.56);
  --canvas:#FFFFFF;
  --tint-warm:#FFF6DC;       /* warm section / card tint */
  --tint-brand:rgba(254,216,82,0.16);
  --on-accent:#FFFFFF;
  --line:rgba(25,25,25,0.10);

  --hero-grad:radial-gradient(130% 125% at 18% 0%, #E99800 0%, #F7AC0A 46%, #FFC94A 100%);
  --hero-shade:linear-gradient(112deg, rgba(120,70,0,0.42) 0%, rgba(120,70,0,0) 58%);
  --cta-grad:radial-gradient(120% 120% at 50% 0%, #F7AC0A 0%, #EFA400 55%, #E29400 100%);

  /* Ecosystem platform colours (used only as tiny dots / accents) */
  --plat-connect:#3B82F6;
  --plat-formula:#7C5CFC;
  --plat-learn:#EFA400;
  --plat-closr:#F97316;
  --plat-hub:#EF4444;

  --font:'Onest', ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --ease:cubic-bezier(0.32,0.72,0,1);
  --shadow-lift:rgba(0,0,0,0.05) 0 -4px 16px 0;
  --shadow-soft:rgba(120,80,0,0.10) 0 18px 48px -12px;

  --container:1200px;
  --gutter:clamp(20px, 5vw, 48px);
  --section-y:clamp(72px, 11vw, 160px);
  --radius-card:16px;
  --radius-btn:12px;
}

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  font-family:var(--font);
  font-weight:500;
  color:var(--ink);
  background:var(--canvas);
  line-height:1.2;
  letter-spacing:0.01em;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
h1,h2,h3,p{margin:0;}
::selection{background:var(--accent);color:var(--ink);}

/* ---------- type scale ---------- */
.display{
  font-size:clamp(38px, 6.4vw, 84px);
  line-height:1.0;
  letter-spacing:-0.015em;
  font-weight:800;
}
.display-lg{
  font-size:clamp(38px, 7vw, 84px);
  line-height:0.98;
  letter-spacing:-0.01em;
  font-weight:800;
}
.heading{
  font-size:clamp(30px, 4.6vw, 56px);
  line-height:1.02;
  letter-spacing:-0.005em;
  font-weight:800;
}
.subheading{
  font-size:clamp(18px, 2.2vw, 23px);
  line-height:1.3;
  font-weight:500;
}
.body{font-size:16px;line-height:1.55;font-weight:400;}
.caption{
  font-size:12px;line-height:1.5;letter-spacing:0.06em;
  text-transform:uppercase;font-weight:500;color:var(--ink-soft);
}
.accent-text{color:var(--accent-strong);}

/* ---------- layout ---------- */
.container{
  width:100%;
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
section{position:relative;}
.section{padding-block:var(--section-y);}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:13px 22px;border-radius:var(--radius-btn);
  font-size:15px;font-weight:500;letter-spacing:0.01em;
  transition:transform .18s var(--ease), background .2s var(--ease), color .2s var(--ease), opacity .2s var(--ease);
  white-space:nowrap;
}
.btn:active{transform:scale(0.98);}
.btn-accent{background:var(--accent);color:var(--ink);}
.btn-accent:hover{background:var(--accent-deep);}
.btn-ghost{color:var(--ink);border:1px solid var(--line);}
.btn-ghost:hover{border-color:var(--ink);}
.btn-on-accent{background:#fff;color:var(--ink);}
.btn-on-accent:hover{opacity:0.9;}
.btn-ghost-light{color:#fff;border:1px solid rgba(255,255,255,0.5);}
.btn-ghost-light:hover{border-color:#fff;background:rgba(255,255,255,0.1);}
.btn-lg{padding:16px 28px;font-size:16px;}

/* ---------- nav ---------- */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:60;
  transition:background .3s var(--ease), box-shadow .3s var(--ease);
}
.nav-inner{
  display:flex;align-items:center;gap:22px;
  height:60px;
}
.nav-brand{
  font-weight:800;font-size:16px;letter-spacing:-0.01em;
  display:inline-flex;align-items:center;gap:7px;color:#fff;
  transition:color .3s var(--ease);
}
.brand-logo{width:21px;height:21px;flex:none;display:inline-block;}
.brand-logo svg{width:100%;height:100%;display:block;}
.brand-logo .lg-bg{fill:var(--logo-bg,#fff);transition:fill .3s var(--ease);}
.brand-logo .lg-fg{fill:var(--logo-fg,var(--accent-strong));transition:fill .3s var(--ease);}
.nav-brand .brand-sub{opacity:0.7;font-weight:500;}
.nav-links{display:flex;gap:20px;margin-left:8px;}
.nav-links a{font-size:14px;color:#fff;opacity:0.82;transition:opacity .2s;}
.nav-links a:hover{opacity:1;}
.nav-right{margin-left:auto;display:flex;align-items:center;gap:14px;}
.lang-switch{display:flex;align-items:center;gap:6px;font-size:13px;color:#fff;opacity:0.85;}
.lang-switch a{opacity:0.6;transition:opacity .2s;}
.lang-switch a:hover{opacity:1;}
.lang-switch a.is-active{opacity:1;font-weight:800;}
.lang-sep{opacity:0.4;}
.nav-cta{font-size:13px;padding:8px 16px;}

/* scrolled state — white bar */
.nav.scrolled{background:rgba(255,255,255,0.86);backdrop-filter:blur(16px);box-shadow:0 1px 0 var(--line);}
.nav.scrolled .nav-brand{color:var(--ink);}
.nav.scrolled{--logo-bg:var(--accent);--logo-fg:var(--ink);}
.nav.scrolled .nav-links a{color:var(--ink);}
.nav.scrolled .lang-switch{color:var(--ink);}
.nav.scrolled .btn-ghost-light{color:var(--ink);border-color:var(--line);}
.nav.scrolled .btn-ghost-light:hover{border-color:var(--ink);background:transparent;}

/* ---------- hero ---------- */
.hero{
  position:relative;min-height:100svh;display:flex;align-items:center;
  color:#fff;overflow:hidden;
  background:var(--hero-grad);
}
.hero::after{content:"";position:absolute;inset:0;background:var(--hero-shade);pointer-events:none;}
.hero-inner{position:relative;z-index:2;width:100%;padding-block:clamp(104px,14vh,132px) clamp(56px,8vh,80px);}
.hero h1{max-width:15ch;}
.hero-sub{margin-top:22px;max-width:42ch;color:rgba(255,255,255,0.92);}
.hero-actions{margin-top:32px;display:flex;gap:14px;flex-wrap:wrap;}
/* brand object */
.hero-object{
  position:absolute;z-index:1;right:clamp(24px,6vw,104px);top:50%;
  width:clamp(230px,34vw,470px);transform:translateY(-50%);
  filter:drop-shadow(0 30px 60px rgba(120,70,0,0.35));
  will-change:transform;pointer-events:none;
}
.hero-object img{width:100%;}

/* ---------- generic reveal ----------
   Hidden state is gated behind html.js-ready so the page degrades gracefully:
   without JS every element renders visible; with JS it animates in. */
.reveal-line{display:block;overflow:hidden;}
.reveal-line > span{display:block;transition:transform .9s var(--ease);}
.js-ready .reveal-line > span{transform:translateY(110%);}
.js-ready .is-in .reveal-line > span{transform:translateY(0);}
.is-in .reveal-line:nth-child(2) > span{transition-delay:.09s;}
.is-in .reveal-line:nth-child(3) > span{transition-delay:.18s;}
.fade-up{transition:opacity .8s var(--ease), transform .8s var(--ease);}
.js-ready .fade-up{opacity:0;transform:translateY(24px);}
.js-ready .is-in .fade-up{opacity:1;transform:none;}
.fade-up.d1{transition-delay:.08s;}
.fade-up.d2{transition-delay:.16s;}
.fade-up.d3{transition-delay:.24s;}

/* ---------- promise (warm tint band) ---------- */
.promise .container{display:grid;grid-template-columns:1.1fr minmax(300px,480px);gap:clamp(32px,5vw,72px);align-items:center;}
.promise-sub{margin-top:24px;max-width:40ch;color:var(--ink-soft);}
.promise-visual{position:relative;display:grid;place-items:center;min-height:clamp(260px,32vw,420px);}
.promise-visual::before{
  content:"";position:absolute;width:74%;aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle, rgba(239,164,0,0.20), rgba(239,164,0,0) 70%);filter:blur(8px);
}
.promise-visual img{
  position:relative;width:96%;max-width:480px;
  filter:drop-shadow(0 34px 60px rgba(120,70,0,0.30));
  animation:ctaFloat 6.5s ease-in-out infinite;
}

/* ---------- feature cards (AI) ---------- */
.cards{margin-top:clamp(40px,6vw,72px);display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.card{
  background:transparent;padding:0;display:flex;flex-direction:column;
  transition:transform .35s var(--ease);
}
.card:hover{transform:translateY(-6px);}
.card-obj{
  width:clamp(140px,15vw,168px);height:clamp(140px,15vw,168px);object-fit:contain;
  margin:0 0 4px -12px;
  filter:drop-shadow(0 24px 34px rgba(80,60,0,0.18));
  animation:cardFloat 6s ease-in-out infinite;
}
.card:nth-child(2) .card-obj{animation-delay:-2s;}
.card:nth-child(3) .card-obj{animation-delay:-4s;}
@keyframes cardFloat{0%,100%{transform:translateY(-5px);}50%{transform:translateY(5px);}}
.card h3{font-size:23px;font-weight:800;margin-top:12px;line-height:1.1;}
.card p{margin-top:10px;color:var(--ink-soft);font-size:15px;line-height:1.5;font-weight:400;}

/* ---------- split rows (student / author / monetise) ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,80px);align-items:center;}
.split.reverse .split-media{order:-1;}
.split-media{position:relative;display:grid;place-items:center;padding:clamp(6px,1.5vw,18px);min-height:clamp(240px,28vw,360px);}
.split-media::before{content:"";position:absolute;width:80%;aspect-ratio:1.25;border-radius:50%;
  background:radial-gradient(circle, rgba(239,164,0,0.15), rgba(239,164,0,0) 70%);filter:blur(6px);}
.split-media img{position:relative;width:100%;border-radius:14px;box-shadow:var(--shadow-soft);}

/* ---------- product mockups (in-brand recreations of real screens) ---------- */
.mock{position:relative;z-index:1;width:100%;max-width:520px;background:#fff;border:1px solid var(--line);
  border-radius:14px;overflow:hidden;box-shadow:0 34px 60px -20px rgba(120,80,0,0.30);}
.mock-bar{height:30px;display:flex;align-items:center;gap:6px;padding:0 12px;background:#faf7ef;border-bottom:1px solid var(--line);}
.mock-bar i{width:9px;height:9px;border-radius:50%;background:#e4dcca;display:block;}
.mock .bar{height:8px;border-radius:4px;background:#ece7db;display:block;}
.mock .bar.d{background:#dcd6c8;}
.mock .bar.w40{width:40%;}.mock .bar.w50{width:50%;}.mock .bar.w60{width:60%;}.mock .bar.w80{width:80%;}
.mock .dot{width:9px;height:9px;border-radius:50%;flex:none;display:block;}

/* lesson */
.mock-lesson .mock-body{display:grid;grid-template-columns:118px 1fr;gap:14px;padding:14px;}
.ml-side{border-right:1px solid var(--line);padding-right:12px;display:flex;flex-direction:column;gap:9px;}
.ml-title{font-size:12px;font-weight:800;color:var(--ink);}
.ml-prog{height:5px;border-radius:3px;background:#ece7db;overflow:hidden;}
.ml-prog span{display:block;height:100%;width:25%;background:var(--accent-strong);}
.ml-row{display:flex;align-items:center;gap:7px;}
.ml-row .ic{width:13px;height:13px;border-radius:50%;flex:none;}
.ml-row .ic.ok{background:#34C771;}
.ml-row .ic.now{border:2px solid #477EE9;background:#fff;}
.ml-row .ic.lk{background:#e6e0d3;}
.ml-row.active{background:var(--tint-brand);border-radius:6px;padding:4px 6px;margin:-4px -6px;}
.ml-main{display:flex;flex-direction:column;gap:9px;}
.ml-video{aspect-ratio:16/9;border-radius:8px;background:linear-gradient(135deg,#2c2c2c,#101010);display:grid;place-items:center;}
.ml-play{width:34px;height:34px;border-radius:50%;background:var(--accent-strong);display:grid;place-items:center;}
.ml-play::before{content:"";border-left:11px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent;margin-left:3px;}

/* dashboard */
.mock-dash .mock-body{display:flex;flex-direction:column;gap:12px;padding:14px;}
.md-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.md-stat{background:var(--tint-brand);border-radius:10px;padding:10px 11px;}
.md-stat b{font-size:20px;font-weight:800;color:var(--ink);line-height:1;}
.md-stat .bar{margin-top:8px;width:62%;height:6px;}
.md-chart{display:flex;align-items:flex-end;gap:6px;height:52px;}
.md-chart i{flex:1;background:var(--accent);border-radius:4px 4px 0 0;display:block;}
.md-table{display:flex;flex-direction:column;gap:9px;}
.md-tr{display:flex;align-items:center;gap:9px;}
.md-av{width:22px;height:22px;border-radius:50%;flex:none;display:grid;place-items:center;font-size:10px;font-weight:800;color:#fff;}
.md-tr .bar.nm{flex:1;}
.md-prog{width:60px;height:6px;border-radius:3px;background:#ece7db;overflow:hidden;flex:none;}
.md-prog span{display:block;height:100%;background:var(--accent-strong);}

/* monetise */
.mock-mon .mock-body{display:flex;flex-direction:column;gap:11px;padding:14px;}
.mm-link{display:flex;align-items:center;gap:10px;background:var(--tint-warm);border-radius:10px;padding:12px;}
.mm-link .lk{width:30px;height:30px;border-radius:8px;background:var(--accent);flex:none;}
.mm-badge{margin-left:auto;font-size:12px;font-weight:800;color:var(--ink);background:#fff;border-radius:999px;padding:4px 11px;box-shadow:var(--shadow-lift);}
.mm-tier{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid var(--line);border-radius:10px;}
.mm-price{margin-left:auto;height:8px;width:46px;border-radius:4px;background:#ece7db;flex:none;}
.split-body p{margin-top:20px;max-width:42ch;color:var(--ink-soft);}
.point-list{margin-top:24px;display:flex;flex-direction:column;gap:12px;}
.point{display:flex;gap:12px;align-items:flex-start;font-size:16px;font-weight:500;}
.point::before{content:"";width:9px;height:9px;border-radius:3px;background:var(--accent-strong);margin-top:7px;flex:none;}

/* ---------- ecosystem ---------- */
.eco{background:var(--tint-warm);}
.eco .eco-lead{max-width:30ch;}
.eco-sub{margin-top:20px;max-width:46ch;color:var(--ink-soft);}
.eco-plats{margin-top:40px;display:flex;flex-wrap:wrap;gap:10px;}
.eco-pill{
  display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:9999px;
  background:#fff;font-size:14px;font-weight:500;box-shadow:var(--shadow-lift);
}
.eco-pill .dot{width:8px;height:8px;border-radius:3px;background:var(--c,var(--accent));flex:none;}
.eco-stats{margin-top:48px;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.eco-stat .n{font-size:clamp(38px,5vw,64px);font-weight:800;line-height:1;letter-spacing:-0.01em;}
.eco-stat .l{margin-top:10px;color:var(--ink-soft);font-size:15px;}

/* ---------- CTA (interactive) ---------- */
.cta{background:var(--cta-grad);color:#fff;text-align:center;overflow:hidden;}
.cta-inner{padding-block:var(--section-y);display:flex;flex-direction:column;align-items:center;}
.cta h2{max-width:18ch;}
.cta-inner .btn{margin-top:8px;}

.cta-stage{
  position:relative;width:clamp(220px,30vw,340px);aspect-ratio:1;
  margin:clamp(28px,4vw,48px) 0 clamp(36px,5vw,56px);
  display:grid;place-items:center;
}
/* pulses */
.cta-pulses{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;}
.cta-pulses span{
  position:absolute;width:52%;height:52%;border-radius:50%;
  border:1.5px solid rgba(255,255,255,0.55);
  transform:scale(0.5);opacity:0;
  animation:ctaPulse 4.2s var(--ease) infinite;
}
.cta-pulses span:nth-child(2){animation-delay:1.4s;}
.cta-pulses span:nth-child(3){animation-delay:2.8s;}
@keyframes ctaPulse{
  0%{transform:scale(0.5);opacity:0;}
  15%{opacity:0.7;}
  100%{transform:scale(1.9);opacity:0;}
}
/* object + cursor parallax + float + masked sheen */
.cta-object{
  position:relative;z-index:2;width:78%;
  transform:translate3d(0,0,0);will-change:transform;
  transition:transform .5s var(--ease);
}
.cta-object img{
  width:100%;display:block;
  filter:drop-shadow(0 24px 44px rgba(90,55,0,0.42));
  animation:ctaFloat 6s ease-in-out infinite;
}
@keyframes ctaFloat{0%,100%{transform:translateY(-3%);}50%{transform:translateY(3%);}}
.cta-sheen{
  position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen;
  -webkit-mask:url(assets/level-learn.png) center/contain no-repeat;
  mask:url(assets/level-learn.png) center/contain no-repeat;
  background:linear-gradient(110deg, transparent 40%, rgba(255,255,255,0.7) 50%, transparent 60%);
  background-size:260% 100%;background-position:170% 0;
  animation:ctaSheen 5s var(--ease) infinite;
}
@keyframes ctaSheen{0%{background-position:170% 0;}60%,100%{background-position:-70% 0;}}

/* ---------- footer ---------- */
.footer{padding-block:56px;border-top:1px solid var(--line);}
.footer-inner{display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between;}
.footer-brand{font-weight:800;font-size:18px;display:inline-flex;align-items:center;gap:8px;}
.footer-brand .brand-logo{width:22px;height:22px;--logo-bg:var(--accent);--logo-fg:var(--ink);}
.footer-links{display:flex;gap:20px;flex-wrap:wrap;font-size:14px;color:var(--ink-soft);}
.footer-links a:hover{color:var(--ink);}
.footer-meta{width:100%;margin-top:28px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;color:var(--ink-soft);font-size:13px;}

/* ---------- modal ---------- */
.modal{
  position:fixed;inset:0;z-index:100;display:none;
  align-items:center;justify-content:center;padding:20px;
  background:rgba(25,25,25,0.5);backdrop-filter:blur(6px);
  opacity:0;transition:opacity .25s var(--ease);
}
.modal.open{display:flex;opacity:1;}
.modal-card{
  width:100%;max-width:460px;background:#fff;border-radius:20px;padding:32px;
  transform:translateY(16px) scale(0.98);transition:transform .3s var(--ease);
}
.modal.open .modal-card{transform:none;}
.modal-card h3{font-size:28px;font-weight:800;line-height:1.05;}
.modal-card .sub{margin-top:8px;color:var(--ink-soft);font-size:15px;}
.modal-card form{margin-top:22px;display:flex;flex-direction:column;gap:12px;}
.modal-card input,.modal-card textarea{
  width:100%;background:var(--tint-brand);border:1px solid transparent;border-radius:14px;
  padding:14px 16px;font:inherit;font-weight:500;color:var(--ink);
  transition:background .2s, border-color .2s;
}
.modal-card input::placeholder,.modal-card textarea::placeholder{color:var(--ink-soft);}
.modal-card input:focus,.modal-card textarea:focus{outline:none;background:#fff;border-color:var(--accent-strong);}
.modal-card textarea{resize:vertical;min-height:96px;}
.modal-card .btn{justify-content:center;margin-top:6px;}
.modal-close{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:10px;color:var(--ink-soft);display:grid;place-items:center;font-size:20px;}
.modal-close:hover{background:var(--tint-brand);color:var(--ink);}
.modal-success{display:none;text-align:center;padding:16px 0 4px;}
.modal-success .tick{width:52px;height:52px;border-radius:50%;background:var(--accent);color:var(--ink);display:grid;place-items:center;margin:0 auto 16px;font-size:26px;}
.modal.done .modal-form-wrap{display:none;}
.modal.done .modal-success{display:block;}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .promise .container{grid-template-columns:1fr;gap:32px;}
  .promise-visual{order:-1;max-width:420px;}
  .cards{grid-template-columns:1fr;}
  .split{grid-template-columns:1fr;gap:28px;}
  .split.reverse .split-media{order:0;}
  .eco-stats{grid-template-columns:1fr;gap:28px;}
  .nav-links{display:none;}
}
@media (max-width:560px){
  .nav-cta{display:none;}
  /* Hero becomes a clean vertical stack: object on top, pitch below. */
  .hero{flex-direction:column;justify-content:center;align-items:flex-start;padding-top:clamp(72px,10vh,96px);}
  .hero-object{position:static;transform:none;opacity:1;top:auto;right:auto;
    width:min(56%,220px);margin:0 0 4px var(--gutter);}
  .hero-inner{padding-block:12px clamp(40px,7vh,64px);}
  .footer-inner{flex-direction:column;align-items:flex-start;}
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important;}
  .reveal-line > span{transform:none;}
  .fade-up{opacity:1;transform:none;}
  html{scroll-behavior:auto;}
}
