/* =========================================================================
   Za Emanuelu — pozdrav → slagalica → zvuk → let → Fuji → poruka
   Vizualno: duboko plava + koraljna + senf, debeli grotesk, čvrste plohe.
   ========================================================================= */

:root{
  --ink:#050b22;
  --deep:#0b1d5b;
  --blue:#1b3fa8;
  --electric:#3d7bff;
  --sky:#8fb6ff;
  --coral:#ff6b5e;
  --mustard:#ffc94d;
  --cream:#fff2e0;
  --text:#eaf0ff;
  --muted:#8ea4d4;

  --disp:"Archivo",system-ui,-apple-system,"Segoe UI",sans-serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;

  --pad:clamp(18px,5.5vw,36px);
  --ease:cubic-bezier(.22,.61,.36,1);
  --pop:cubic-bezier(.34,1.56,.64,1);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none !important}

html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--sans);color:var(--text);background:var(--ink);
  line-height:1.55;overflow:hidden;
  -webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;
}
img{max-width:100%;display:block;height:auto}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
a{color:inherit}


/* ------------------------------ pozadina ------------------------------- */
.bg{
  position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;
  background:
    radial-gradient(120% 90% at 50% -20%,#153a91 0%,transparent 58%),
    linear-gradient(170deg,#0a1a4d 0%,#050b22 55%,#04081a 100%);
}
.blob{
  position:absolute;border-radius:50%;filter:blur(60px);opacity:.5;
  animation:sway 20s ease-in-out infinite alternate;
}
.blob--1{width:62vw;height:62vw;left:-18vw;top:-8vh;background:#2b5bd8}
.blob--2{width:54vw;height:54vw;right:-16vw;bottom:-6vh;background:#ff6b5e;opacity:.22;animation-delay:-7s}
@keyframes sway{from{transform:translate3d(0,0,0)}to{transform:translate3d(6vw,4vh,0)}}

/* tanka zrnatost — plohe ne izgledaju plasticno */
.grain{
  position:absolute;inset:0;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
}

#petals{position:fixed;inset:0;z-index:3;pointer-events:none}


/* ============================ sustav koraka ============================ */
.step{
  position:fixed;inset:0;z-index:2;
  display:flex;align-items:center;justify-content:center;
  padding:
    calc(var(--pad) + env(safe-area-inset-top))
    calc(var(--pad) + env(safe-area-inset-right))
    calc(var(--pad) + env(safe-area-inset-bottom))
    calc(var(--pad) + env(safe-area-inset-left));
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .75s var(--ease),visibility .75s;
}
.step--on{opacity:1;visibility:visible;pointer-events:auto}

.box{width:100%;max-width:440px;text-align:center}
.box--scroll{max-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-block:10px;text-align:left}


/* ------------------------------ tipografija ---------------------------- */
.chip{
  display:inline-block;margin-bottom:1rem;
  padding:.32rem .8rem;border-radius:100px;
  font-size:.66rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;
  background:rgba(143,182,255,.14);color:var(--sky);
  border:1px solid rgba(143,182,255,.28);
}
.chip--coral{background:rgba(255,107,94,.16);color:#ffb0a8;border-color:rgba(255,107,94,.4)}
.chip--mustard{background:rgba(255,201,77,.16);color:var(--mustard);border-color:rgba(255,201,77,.4)}

.mega{
  font-family:var(--disp);font-weight:900;
  font-size:clamp(2.2rem,12.6vw,4rem);line-height:.94;letter-spacing:-.035em;
  text-transform:uppercase;
}
.mega span{display:block}
.mega em{
  display:block;font-style:normal;text-transform:none;
  font-weight:800;letter-spacing:-.03em;
  font-size:.82em;margin-top:.12em;
  color:var(--mustard);
}
.mega--sm{font-size:clamp(2.2rem,13vw,3.6rem)}

.big{
  font-family:var(--disp);font-weight:800;
  font-size:clamp(2rem,10vw,2.9rem);line-height:1;letter-spacing:-.03em;
}
.big--shadow{text-shadow:0 3px 26px rgba(4,9,26,1),0 0 50px rgba(4,9,26,.9)}

.sub{color:var(--muted);font-size:.98rem;margin-top:1rem;max-width:34ch;margin-inline:auto}
.micro{font-size:.76rem;color:var(--muted);opacity:.75;margin-top:1rem}
.micro a{color:var(--sky)}


/* -------------------------------- gumbi -------------------------------- */
.btn{
  display:inline-block;text-decoration:none;text-align:center;
  padding:.85rem 1.5rem;border-radius:100px;
  font-family:var(--disp);font-size:.95rem;font-weight:700;letter-spacing:.01em;
  border:2px solid transparent;
  transition:transform .18s var(--pop),box-shadow .18s var(--ease),background .2s,color .2s;
}
.btn--sm{padding:.5rem 1rem;font-size:.8rem}
.btn--big{padding:1.05rem 2.8rem;font-size:1.15rem;margin-top:1.8rem}
.btn--coral{
  background:var(--coral);color:#2a0b07;border-color:#2a0b07;
  box-shadow:4px 4px 0 rgba(4,9,26,.9);
}
.btn--ghost{
  border-color:rgba(143,182,255,.35);color:var(--sky);
  background:rgba(143,182,255,.06);
}
.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 rgba(4,9,26,.9)}
@media (hover:hover){ .btn--ghost:hover{border-color:var(--mustard);color:var(--mustard)} }

.btns{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.8rem;justify-content:center}

.skip{
  display:block;margin:1.4rem auto 0;
  font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);opacity:.45;text-decoration:underline;text-underline-offset:4px;
}
.skip:active{opacity:.9}
.skip--fixed{
  position:absolute;right:calc(var(--pad) + env(safe-area-inset-right));
  bottom:calc(var(--pad) + env(safe-area-inset-bottom));margin:0;z-index:6;
}


/* ============================== 1. POZDRAV ============================= */
[data-in]{opacity:0;transform:translateY(20px)}
.step--on [data-in]{animation:rise .85s var(--ease) forwards}
.step--on [data-in="1"]{animation-delay:.15s}
.step--on [data-in="2"]{animation-delay:.4s}
.step--on [data-in="3"]{animation-delay:.95s}
@keyframes rise{to{opacity:1;transform:none}}


/* ============================= 2. SLAGALICA ============================ */
.pz{
  width:100%;max-width:460px;height:100%;
  display:flex;flex-direction:column;text-align:center;
}
.pz__head{flex:0 0 auto}
.pz__head .big{font-size:clamp(1.7rem,8vw,2.3rem)}
.pz__head .sub{font-size:.86rem;margin-top:.5rem}

.pz__stage{
  position:relative;flex:1 1 auto;min-height:0;margin-top:.9rem;
  touch-action:none;
}

.pz__board{
  position:absolute;
  border-radius:8px;
  background:rgba(143,182,255,.06);
  box-shadow:inset 0 0 0 2px rgba(143,182,255,.22),
             inset 0 0 40px rgba(4,9,26,.5);
  transition:box-shadow .5s var(--ease);
}
.pz__board.is-done{
  box-shadow:inset 0 0 0 3px var(--mustard),0 0 44px -6px rgba(255,201,77,.55);
}
/* blijedi duh slike na ploci — ploca inace izgleda kao prazna rupa,
   a ovako se odmah vidi kamo komadici idu */
.pz__peek{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  border-radius:6px;opacity:.1;pointer-events:none;transition:opacity .3s ease;
}
.pz__peek.is-on{opacity:.55}

/* jedan komadić */
.piece{
  position:absolute;left:0;top:0;
  background-repeat:no-repeat;
  will-change:transform;
  cursor:grab;touch-action:none;
  filter:drop-shadow(0 6px 10px rgba(0,0,0,.55));
  transition:filter .18s ease;
}
.piece.is-held{
  cursor:grabbing;z-index:900 !important;
  filter:drop-shadow(0 16px 22px rgba(0,0,0,.7)) brightness(1.08);
}
.piece.is-locked{pointer-events:none;filter:none}
/* kratki bljesak kad komadić sjedne */
.piece.is-snap{animation:snap .38s var(--pop)}
@keyframes snap{
  0%{filter:drop-shadow(0 0 0 rgba(255,201,77,0))}
  40%{filter:drop-shadow(0 0 14px rgba(255,201,77,.95)) brightness(1.25)}
  100%{filter:none}
}

.pz__foot{
  flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:.7rem;
  padding-top:.7rem;
}
.count{font-family:var(--disp);font-weight:700;font-size:.95rem;color:var(--muted)}
.count b{color:var(--mustard);font-size:1.2rem}
.count i{font-style:normal;opacity:.5;margin:0 .1em}


/* =============================== 3. ZVUK =============================== */
.yt{
  width:240px;max-width:100%;margin:1.5rem auto 0;
  border-radius:14px;overflow:hidden;
  opacity:0;height:0;transition:opacity .5s ease,height .5s ease;
}
.yt.is-on{opacity:.92;height:135px}
.yt iframe{width:100%;height:135px;border:0;display:block}
.yt.is-mini{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(8px + env(safe-area-inset-bottom));
  width:150px;height:84px;margin:0;z-index:7;opacity:.3;
}
.yt.is-mini iframe{height:84px}
.yt.is-mini:active{opacity:.95}


/* ============================= 4. PUTOVANJE ============================ */
.step--journey{padding:0;display:block}

.map{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity 1s ease}
.map.is-on{opacity:1}
/* velicine su u jedinicama karte; app.js ih protuskalira pri zumiranju */
.mlbl{
  fill:var(--mustard);font-family:var(--disp),sans-serif;font-size:24px;font-weight:700;
  letter-spacing:3px;text-anchor:middle;
  paint-order:stroke;stroke:#050b22;stroke-width:5px;stroke-linejoin:round;
}
.mlbl--jp{font-size:32px;letter-spacing:5px}

.fuji{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 1.6s ease}
.fuji.is-on{opacity:1}
.fuji__svg{position:absolute;inset:0;width:100%;height:100%}

/* prizor se slaze u slojevima */
#fFar,#fMt,#fHills,#fNear,#fMoon,#fTorii,#fStars{
  transform-box:view-box;transform-origin:center;
  opacity:0;transform:translateY(64px);
  transition:opacity 1.5s var(--ease),transform 2s var(--ease);
}
.fuji.is-on #fFar  {opacity:1;transform:none}
.fuji.is-on #fMt   {opacity:1;transform:none;transition-delay:.18s}
.fuji.is-on #fHills{opacity:1;transform:none;transition-delay:.4s}
.fuji.is-on #fNear {opacity:1;transform:none;transition-delay:.55s}
.fuji.is-on #fStars{opacity:.65;transform:none;transition-delay:.8s;transition-duration:2.2s}
.fuji.is-on #fMoon {opacity:1;transform:none;transition-delay:.9s;transition-duration:2.6s}
.fuji.is-on #fTorii{opacity:.92;transform:none;transition-delay:1.25s}

.fuji__txt{
  position:absolute;left:0;right:0;top:clamp(44px,11vh,100px);
  padding-inline:22px;text-align:center;
  opacity:0;transform:translateY(16px);
  transition:opacity 1.3s var(--ease),transform 1.3s var(--ease);
}
.fuji__txt.is-on{opacity:1;transform:none}

.next{
  position:absolute;left:50%;transform:translateX(-50%);
  bottom:calc(26px + env(safe-area-inset-bottom));z-index:6;
  padding:.7rem 1.5rem;border-radius:100px;
  border:2px solid var(--mustard);color:var(--mustard);
  background:rgba(5,11,34,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  font-family:var(--disp);font-weight:700;font-size:.9rem;
  animation:bob 2.2s ease-in-out infinite;
}
@keyframes bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,6px)}}


/* ============================== 5. PORUKA ============================== */
.step--letter .big{margin-bottom:1.4rem}

.polaroid{
  width:min(100%,340px);margin:0 0 1.6rem;padding:9px 9px 38px;
  background:var(--cream);border-radius:3px;
  box-shadow:0 22px 50px -20px rgba(0,0,0,1);
  transform:rotate(-1.8deg);
}
.polaroid img{border-radius:2px;aspect-ratio:3/2;object-fit:cover;background:#0b1d5b}
.polaroid figcaption{
  font-family:var(--disp);font-weight:600;font-size:.78rem;letter-spacing:.02em;
  color:#7a5f4e;text-align:center;margin-top:10px;
}

.notes{list-style:none;margin-bottom:1.8rem}
.notes li{
  display:flex;gap:.7rem;align-items:flex-start;
  font-size:.93rem;color:var(--text);
  padding:.6rem 0;border-bottom:1px solid rgba(143,182,255,.14);
}
.notes li:first-child{border-top:1px solid rgba(143,182,255,.14)}
.notes span{
  flex:0 0 auto;font-family:var(--disp);font-weight:800;font-size:.72rem;
  color:var(--coral);padding-top:.18em;letter-spacing:.06em;
}

.letter p{font-size:1rem;line-height:1.62;margin-bottom:.9rem;color:var(--text)}
.letter p:first-child{color:var(--mustard);font-family:var(--disp);font-weight:700}
.letter strong{color:var(--mustard);font-weight:600}

/* recenica koja treba stati sama za sebe */
.istaknuto{
  font-family:var(--disp);font-weight:800;font-size:1.06rem;line-height:1.42;
  color:var(--mustard) !important;
  border-left:3px solid var(--coral);
  padding-left:.9rem;margin:1.5rem 0 1.3rem;
}
/* zavrsna cestitka i P.S. */
.big--kraj{
  margin-top:1.9rem;text-align:center;
  font-size:clamp(1.55rem,7.2vw,2.1rem);line-height:1.12;
}
.ps{
  margin-top:.9rem;font-size:.86rem;font-style:italic;
  color:var(--muted);text-align:center;line-height:1.5;
}
.sign{
  font-family:var(--disp);font-weight:800;font-size:1.15rem;
  color:var(--coral) !important;margin-top:1.3rem;
}

.foot{
  margin-top:2.2rem;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--muted);opacity:.5;text-align:center;
}
.foot span{text-transform:none;letter-spacing:.3em;color:var(--mustard)}


/* ========================= pitanje s namjestenim ======================= */
.ask{
  margin-top:2rem;padding:1.3rem 1.1rem;
  border:2px dashed rgba(255,201,77,.35);border-radius:16px;
  background:rgba(255,201,77,.05);text-align:center;
}
.ask__q{font-family:var(--disp);font-weight:700;font-size:1.05rem;line-height:1.35;margin-bottom:1.1rem}
/* arena: "Moze" stoji, "Ne moze" bjezi unutar ovog okvira */
.ask__arena{position:relative;height:170px;margin-top:.2rem}
.ask__arena .btn{min-width:118px}
#askYes{position:absolute;left:50%;top:8px;transform:translateX(-50%)}
#askNo{
  position:absolute;left:50%;top:80px;transform:translateX(-50%);
  transition:left .2s var(--pop),top .2s var(--pop);
  touch-action:manipulation;
}
.btn--yes{background:#2fbf6b;color:#04220f;border-color:#04220f;box-shadow:4px 4px 0 rgba(4,9,26,.9)}
.btn--no{background:rgba(143,182,255,.1);color:var(--sky);border-color:rgba(143,182,255,.4)}
.ask__hint{margin-top:.8rem;font-size:.84rem;color:var(--mustard)}
.ask__done{
  margin-top:.4rem;font-family:var(--disp);font-weight:800;font-size:1.3rem;color:#54d98c;
  animation:rise .6s var(--ease) both;
}
.ask__done span{display:block;font-family:var(--sans);font-weight:400;font-size:.82rem;color:var(--muted);margin-top:.35rem}


/* ============================== 6. IGRICE ============================== */
.gm{width:100%;max-width:460px;height:100%;display:flex;flex-direction:column;text-align:center}
.gm__head{flex:0 0 auto}
.gm__head .big{font-size:clamp(1.7rem,8vw,2.3rem)}
.gm__head .sub{font-size:.86rem;margin-top:.4rem;margin-bottom:1rem}

.hub{
  flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
  display:grid;grid-template-columns:1fr 1fr;gap:.7rem;align-content:center;
}
.card{
  display:flex;flex-direction:column;align-items:flex-start;gap:.18rem;
  padding:.9rem .8rem;border-radius:16px;text-align:left;
  border:2px solid rgba(143,182,255,.22);
  background:linear-gradient(160deg,rgba(61,123,255,.16),rgba(5,11,34,.5));
  transition:transform .18s var(--pop),border-color .2s;
}
.card:active{transform:scale(.96)}
.card__e{font-size:1.7rem;line-height:1}
.card__t{font-family:var(--disp);font-weight:800;font-size:.95rem;line-height:1.15;margin-top:.2rem}
.card__d{font-size:.72rem;color:var(--muted);line-height:1.3}
.card__b{font-size:.7rem;color:var(--mustard);font-weight:600;margin-top:.2rem;min-height:1em}

.gm__play{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.gm__bar{
  flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;
  padding-bottom:.6rem;
}
.gm__back{font-size:.82rem;color:var(--sky);letter-spacing:.02em}
.gm__score{font-family:var(--disp);font-weight:800;font-size:.95rem;color:var(--mustard)}
.gm__stage{
  flex:1 1 auto;min-height:0;position:relative;
  border-radius:16px;border:2px solid rgba(143,182,255,.18);
  background:rgba(5,11,34,.45);overflow:hidden;
  display:flex;flex-direction:column;
}

.gm__mid{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:.8rem;padding:1.2rem;text-align:center;
}
.gm__mid h3{font-family:var(--disp);font-weight:800;font-size:1.5rem;line-height:1.1}
.gm__mid p{font-size:.9rem;color:var(--muted);max-width:26ch}
.gm__big{font-family:var(--disp);font-weight:900;font-size:3rem;color:var(--mustard);line-height:1}

/* --- 1. latice --- */
.latica{
  position:absolute;top:-58px;width:48px;height:48px;
  display:grid;place-items:center;
  cursor:pointer;touch-action:manipulation;user-select:none;
  animation:pad linear forwards;
}
/* cvijet (SVG); okvir oko njega je vece polje za prst */
.latica svg{
  display:block;width:30px;height:30px;
  filter:drop-shadow(0 0 6px var(--boja));
}
.latica svg path{fill:var(--boja)}
.latica svg circle{fill:rgba(255,255,255,.8)}
.latica.zlatna svg{
  width:38px;height:38px;
  filter:drop-shadow(0 0 10px var(--boja)) drop-shadow(0 0 20px var(--boja));
}
@keyframes pad{to{transform:translateY(var(--do)) rotate(var(--rot))}}
.latica.is-hit{animation:pop .28s ease-out forwards;pointer-events:none}
@keyframes pop{to{transform:scale(2.2);opacity:0}}

/* "+1" koji odleti kad je uhvatis */
.plus{
  position:absolute;pointer-events:none;
  font-family:var(--disp);font-weight:800;font-size:1rem;
  animation:odleti .7s ease-out forwards;
}
@keyframes odleti{
  from{opacity:1;transform:translateY(0)}
  to{opacity:0;transform:translateY(-42px)}
}

.zivoti{letter-spacing:2px}

/* --- 2. memorija --- */
.mem{
  flex:1 1 auto;display:grid;grid-template-columns:repeat(3,1fr);
  gap:.5rem;padding:.6rem;min-height:0;align-content:center;
}
.mem__c{aspect-ratio:1}   /* inace se rastegnu u visoke pravokutnike */
.mem__c{
  position:relative;border-radius:12px;font-size:1.8rem;
  display:grid;place-items:center;
  background:linear-gradient(150deg,#2b52b8,#12275e);
  border:2px solid rgba(143,182,255,.25);
  transition:transform .25s var(--pop),background .2s,border-color .2s;
}
/* emoji su u boji pa ih color:transparent ne skriva — krijemo sam span */
.mem__f{opacity:0;transition:opacity .15s ease}
.mem__c.is-up{background:var(--cream);border-color:var(--cream)}
.mem__c.is-done{background:rgba(47,191,107,.22);border-color:#2fbf6b}
.mem__c.is-up .mem__f,.mem__c.is-done .mem__f{opacity:1}
.mem__c:active{transform:scale(.95)}

/* --- 3. refleks --- */
.rx{flex:1 1 auto;display:grid;place-items:center;text-align:center;padding:1rem;
  background:#12275e;transition:background .12s;cursor:pointer;user-select:none}
.rx.is-wait{background:#8c2b2b}
.rx.is-go{background:#2fbf6b}
.rx__t{font-family:var(--disp);font-weight:800;font-size:1.35rem;line-height:1.2}
.rx__s{font-size:.85rem;opacity:.85;margin-top:.4rem}

/* --- 4. kviz --- */
.qz{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;gap:.55rem;padding:.9rem;overflow-y:auto}
.qz__n{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--mustard)}
.qz__q{font-family:var(--disp);font-weight:800;font-size:1.1rem;line-height:1.25;margin-bottom:.3rem;text-align:left}
.qz__o{
  padding:.7rem .9rem;border-radius:12px;text-align:left;font-size:.92rem;
  border:2px solid rgba(143,182,255,.25);background:rgba(143,182,255,.06);
  transition:background .18s,border-color .18s;
}
.qz__o.is-ok{background:rgba(47,191,107,.25);border-color:#2fbf6b}
.qz__o.is-no{background:rgba(255,107,94,.2);border-color:var(--coral)}
.qz__o:active{transform:scale(.98)}

.btns--c{justify-content:center;flex:0 0 auto;margin-top:.8rem}


/* ============================ pristupacnost ============================ */
:focus-visible{outline:2px solid var(--mustard);outline-offset:3px;border-radius:6px}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important}
  [data-in]{opacity:1;transform:none}
  #petals{display:none}
}

@media (max-height:660px){
  .pz__head .sub{display:none}
  .btn--big{margin-top:1.1rem}
}
