/* Typistia: landing page.
   Palette = the game's own UI skin (docs/art/WORLD1_VISUAL_SPEC.md): cream plate #fffef4, navy #244762, gold #d19d56. */
:root{
  --sky:#8fd3f4; --cream:#fffef4; --cream2:#fff7dc; --ink:#203c54; --navy:#244762; --deep:#153645;
  --gold:#d19d56; --sun:#ffd66b; --grass:#a9cf72; --soil:#805c3e; --cyan:#80e8ff; --heart:#ff8ca1;
  --f1:#ff9fb2; --f2:#ffb867; --f3:#9adf78; --f4:#7fd6f7;
  --font:"Nunito","Fredoka","Baloo 2","Varela Round","Arial Rounded MT Bold","Trebuchet MS",system-ui,sans-serif;
  --gutter:clamp(14px,5vw,64px); --head:64px; --k:.64;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--head) + 8px);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--sky);color:var(--ink);font:400 clamp(1rem,.35vw + .95rem,1.15rem)/1.6 var(--font);overflow-x:hidden}
img{max-width:100%;height:auto}
h1,h2,h3{font-weight:800;line-height:1.1;margin:0 0 .5em;color:var(--deep);letter-spacing:-.01em}
h1{font-size:clamp(2rem,min(4.8vw,9vh),3.6rem);text-shadow:0 3px 0 var(--sun)}
h2{font-size:clamp(1.7rem,3.6vw,2.6rem)}
h3{font-size:clamp(1.15rem,1.6vw,1.4rem)}
p{margin:0 0 1em;max-width:62ch}
a{color:var(--navy)}
:focus-visible{outline:3px solid var(--deep);outline-offset:3px;box-shadow:0 0 0 6px #fff}
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--cream);color:var(--deep);padding:10px 16px;border-radius:12px;border:3px solid var(--navy);font-weight:800;transition:top .2s}
.skip:focus{top:10px}

/* header + progress */
.top{position:fixed;inset:0 0 auto 0;height:var(--head);z-index:30;display:flex;align-items:center;gap:20px;padding:0 var(--gutter);
  background:rgba(255,254,244,.86);border-bottom:3px solid var(--navy);backdrop-filter:blur(12px) saturate(1.3);-webkit-backdrop-filter:blur(12px) saturate(1.3)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:800;color:var(--deep);font-size:1.05rem;white-space:nowrap}
.brand img{display:block;height:46px;width:auto}
.brand{transition:opacity .25s,visibility .25s}
.top.big-logo-on .brand{opacity:0;visibility:hidden}
@media (prefers-reduced-motion:reduce){.brand{transition:none}}
.hero-logo{display:block;width:min(100%,420px);height:auto;margin:0 0 .5em;filter:drop-shadow(0 8px 14px rgba(21,54,69,.25))}
.top nav{margin-left:auto}
.top ul{display:flex;gap:4px;margin:0;padding:0;list-style:none}
.top nav a{display:block;padding:8px 12px;border-radius:999px;text-decoration:none;font-weight:700;color:var(--ink)}
.top nav a:hover{background:var(--cream2)}
.progress{position:fixed;top:var(--head);left:0;right:0;height:5px;z-index:31;background:rgba(36,71,98,.18)}
.progress i{display:block;height:100%;width:100%;transform-origin:0 50%;transform:scaleX(var(--p,0));background:linear-gradient(90deg,var(--grass),var(--cyan))}

/* buttons */
.btn{display:inline-block;padding:.7em 1.4em;border-radius:999px;border:3px solid var(--navy);background:var(--sun);color:var(--deep);
  font:800 1.05rem/1.2 var(--font);text-decoration:none;box-shadow:0 5px 0 var(--gold);cursor:pointer;transition:transform .12s,box-shadow .12s}
.btn:hover{transform:translateY(-2px);box-shadow:0 7px 0 var(--gold)}
.btn:active{transform:translateY(3px);box-shadow:0 2px 0 var(--gold)}
.btn-ghost{background:var(--cream)}
.btn-small{margin-left:0;padding:.45em 1.1em;font-size:.95rem;box-shadow:0 3px 0 var(--gold)}
.btn[aria-disabled="true"]{opacity:.8;cursor:default}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin:1.2em 0 0}

/* the world behind the page */
.world{position:fixed;inset:0;z-index:0;overflow:hidden;background:var(--sky)}
.scene{position:absolute;inset:0;opacity:0;will-change:opacity,transform;transform-origin:50% 62%}
.scene[data-scene="sky"]{opacity:1}
.fill,.layer{position:absolute;inset:-7%;width:114%;height:114%;object-fit:cover;max-width:none}
.layer.mid,.layer.front{object-position:50% 100%}
.cloud{position:absolute;width:clamp(180px,30vw,460px);height:auto;opacity:.92;animation:drift 70s linear infinite}
.cloud.c1{top:20%;left:-35%}
.cloud.c2{top:50%;left:-35%;width:clamp(150px,22vw,330px);opacity:.8;animation-duration:95s;animation-delay:-40s}
@keyframes drift{to{transform:translateX(190vw)}}
.isle{position:absolute;width:clamp(96px,15vw,230px);height:auto;filter:drop-shadow(0 18px 18px rgba(21,54,69,.25));animation:float 7s ease-in-out infinite}
@keyframes float{50%{transform:translateY(-14px)}}
.water{position:absolute;left:0;right:0;bottom:0;height:20%;
  background:linear-gradient(180deg,rgba(47,134,184,0) 0,#2f86b8 38%,#216596 100%)}
.water::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(180deg,rgba(255,255,255,.16) 0 2px,transparent 2px 22px);
  -webkit-mask:linear-gradient(180deg,transparent,#000 40%);mask:linear-gradient(180deg,transparent,#000 40%);animation:ripple 9s linear infinite}
@keyframes ripple{to{background-position:0 22px}}

/* content over the world */
main{position:relative;z-index:1}
.block{min-height:100vh;min-height:100svh;display:flex;align-items:center;padding:calc(var(--head) + 28px) var(--gutter) 56px}
.block.left{justify-content:flex-start}
.block.right{justify-content:flex-end}
.block.center{justify-content:center}
.hero{min-height:100vh;min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:calc(var(--head) + 28px) var(--gutter) 70px;position:relative}
.panel{position:relative;width:min(100%,560px);padding:clamp(20px,3vw,34px);border-radius:28px;border:3px solid var(--navy);
  background:linear-gradient(180deg,rgba(255,254,244,.9),rgba(255,247,220,.86));box-shadow:0 8px 0 var(--gold),0 22px 40px rgba(21,54,69,.25);
  backdrop-filter:blur(14px) saturate(1.25);-webkit-backdrop-filter:blur(14px) saturate(1.25)}
.panel.wide{width:min(100%,1000px)}
.panel.solid{background:var(--cream)}
.panel>:last-child{margin-bottom:0}
.tagline{font-weight:800;font-size:clamp(1.1rem,2vw,1.4rem);color:var(--navy);margin-bottom:.6em}
.lead{font-size:1.08em}
.hint{position:absolute;left:0;right:0;bottom:22px;margin:0 auto;text-align:center;font-weight:800;color:var(--deep);max-width:none;text-shadow:0 1px 0 #fff,0 0 12px #fff}
.hint::after{content:"";display:block;width:14px;height:14px;margin:8px auto 0;border:solid var(--deep);border-width:0 4px 4px 0;transform:rotate(45deg);animation:nudge 1.6s ease-in-out infinite}
@keyframes nudge{50%{transform:translateY(8px) rotate(45deg)}}

/* characters stand on a strip of grass inside the panel */
.pair{position:relative;display:flex;justify-content:center;align-items:flex-end;gap:14px;height:180px;margin-top:20px;padding:0 12px}
.pair::after{content:"";position:absolute;left:0;right:0;bottom:0;height:16px;border-radius:10px;background:linear-gradient(var(--grass) 0 7px,var(--soil) 7px)}
.pair img{height:170px;width:auto;margin-bottom:8px;position:relative;z-index:1}
.pair img+img{height:110px}
.end-pair{margin-top:26px}

.moves{list-style:none;margin:1em 0 0;padding:0;display:grid;gap:10px}
.moves li{display:flex;align-items:center;gap:14px;padding:8px 14px 8px 8px;border-radius:18px;background:rgba(255,255,255,.7);border:2px solid rgba(36,71,98,.25)}
.moves img{width:64px;height:auto;flex:none}
.moves strong{display:block;color:var(--deep)}



/* teaching + parents */
.keyboard{display:grid;grid-template-columns:repeat(10,1fr);gap:clamp(4px,1vw,10px);margin:1.2em 0 .6em}
.keyboard b{display:grid;place-items:center;aspect-ratio:1;border-radius:14px;border:3px solid var(--navy);font-size:clamp(1rem,2.6vw,1.7rem);color:var(--deep);box-shadow:0 4px 0 rgba(36,71,98,.35)}
.f1{background:var(--f1)}.f2{background:var(--f2)}.f3{background:var(--f3)}.f4{background:var(--f4)}
.fingers{display:flex;flex-wrap:wrap;gap:8px 18px;list-style:none;margin:0 0 1.4em;padding:0;font-weight:700;font-size:.95rem}
.fingers li{display:flex;align-items:center;gap:8px;background:none}
.fingers li::before{content:"";width:18px;height:18px;border-radius:6px;border:2px solid var(--navy)}
.fingers .f1::before{background:var(--f1)}.fingers .f2::before{background:var(--f2)}.fingers .f3::before{background:var(--f3)}.fingers .f4::before{background:var(--f4)}
.points{list-style:none;margin:0;padding:0;display:grid;gap:18px 32px;grid-template-columns:repeat(3,1fr)}
.points h3{margin-bottom:.3em}
.points p{margin:0}
.faq-title{margin-top:1.8em}
.faq{display:grid;gap:8px}
details{border:2px solid var(--navy);border-radius:16px;background:#fff;padding:2px 16px}
summary{cursor:pointer;padding:12px 0;font-weight:800;color:var(--deep)}
details p{margin:0 0 14px}
.cta-panel{text-align:center;width:min(100%,640px)}
.cta-panel p{margin-inline:auto}
.cta-panel .cta-row{justify-content:center}
.play-note{margin-top:1em;font-weight:700}
.foot{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between;padding:20px var(--gutter);background:var(--deep);color:#e8f4f8}
.foot p{margin:0;max-width:none}
.foot a{color:#fff}

@media (max-width:900px){
  .top nav{display:none}
  .top .btn{margin-left:auto}
}
@media (max-width:700px){
  :root{--k:.5}
  .block{align-items:flex-end;justify-content:center!important;padding-top:calc(var(--head) + 16px);padding-bottom:28px}
  .hero{justify-content:flex-start;padding-top:calc(var(--head) + 20px)}
  .panel{border-radius:22px}

  .brand span{font-size:.95rem}
  .pair{height:140px}.pair img{height:128px}.pair img+img{height:82px}
  .points{grid-template-columns:1fr}
  .worlds{grid-template-columns:repeat(2,1fr);gap:10px}
}
@media (max-width:420px){.brand span{display:none}}

/* reduced motion: no scrubbing, no loops, static layers */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .scene{transform:none!important}
  .layer{transform:none!important}
  .cloud{display:none}
}

/* the world gallery */
.worlds{list-style:none;margin:1.2em 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.worlds li{border-radius:18px;overflow:hidden;border:3px solid var(--navy);background:var(--cream);box-shadow:0 5px 0 var(--gold)}
.worlds img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
.worlds span{display:block;padding:8px 12px 10px;font-weight:800;color:var(--deep);line-height:1.25}

/* fixes found in the size review */
.hero .panel{width:min(100%,620px)}
.keyboard{grid-template-columns:repeat(10,minmax(0,1fr))}
@media (max-width:700px){
  .worlds{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .keyboard b{border-width:2px;border-radius:9px;font-size:clamp(.7rem,3.4vw,1.1rem)}
  .worlds span{font-size:.92rem;padding:6px 8px 8px}
}

/* floating islands in the hero sky: clear of the text panel and of the castle island */
.isle.i1{right:9%;top:50%;width:clamp(90px,12vw,200px)}
.isle.i2{right:38%;top:38%;width:clamp(84px,11vw,180px);animation-delay:-2s;animation-duration:8s}
.isle.i3{right:28%;top:15%;width:clamp(90px,12vw,200px);animation-delay:-4s;animation-duration:9s}
.isle.i4{right:39%;top:18%;width:clamp(64px,7.5vw,130px);animation-delay:-1s;animation-duration:6s}
@media (max-width:700px){
  .isle.i1{right:5%;top:76%;width:22vw}
  .isle.i2{right:32%;top:80%;width:20vw}
  .isle.i3{right:58%;top:75%;width:22vw}
  .isle.i4{right:6%;top:64%;width:14vw}
}
