/* Owlpath: single-page navigation + Story Corner.
   Loaded after the base styles in index.html, so these rules win. */

:root{
  --paper:#FFF6E6;
  --green:#5FA052;
  --tab-h:68px;
  --top-h:60px;
}
[hidden]{display:none !important;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} *{animation:none !important; transition:none !important;} }
body.lock{overflow:hidden;}
button{font-family:inherit;}

/* ---------- top bar ---------- */
.topbar{
  height:var(--top-h);
  padding:0 16px;
  padding-top:env(safe-area-inset-top);
  display:flex;align-items:center;
  max-width:1180px;margin:0 auto;
}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);}
.brand-dot{width:22px;height:22px;border-radius:50%;background:var(--coral);box-shadow:10px 4px 0 -2px var(--yellow), -2px 8px 0 -4px var(--teal);}
.brand-name{font-family:'Baloo 2',sans-serif;font-weight:800;font-size:1.5rem;letter-spacing:-.01em;}
.brand-name em{font-style:normal;color:var(--teal);}
#authBar{top:calc(10px + env(safe-area-inset-top));right:12px;}
#authBar button{padding:10px 14px;min-height:40px;}
#authBar .auth-email{display:none;}
@media (min-width:700px){ #authBar .auth-email{display:inline;} }

/* ---------- main + panels ---------- */
main#app{max-width:1180px;padding:6px 18px calc(var(--tab-h) + 40px + env(safe-area-inset-bottom));}
.tab-panel{animation:panelIn .25s ease;}
@keyframes panelIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.tab-hero{text-align:center;padding:10px 0 6px;}
.tab-title{font-family:'Baloo 2',sans-serif;font-weight:800;font-size:clamp(2.1rem,6vw,3.4rem);line-height:1.05;margin:4px 0 8px;}
.tab-title .hl{color:var(--teal);}
.tab-sub{font-size:1.1rem;line-height:1.5;color:#4a4438;max-width:560px;margin:0 auto 14px;}

/* ---------- bottom tab bar ---------- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:80;
  display:flex;gap:6px;
  padding:8px 10px calc(8px + env(safe-area-inset-bottom));
  background:#fff;border-top:3px solid var(--ink);
}
.tabbtn{
  flex:1;min-height:52px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;
  border:2px solid transparent;border-radius:16px;background:transparent;color:var(--ink);cursor:pointer;
  font-family:'Baloo 2',sans-serif;font-weight:700;
  -webkit-tap-highlight-color:transparent;
}
.tabbtn .ti{font-size:1.5rem;line-height:1.1;}
.tabbtn .tl{font-size:.85rem;line-height:1.1;}
.tabbtn:hover{background:#f2f7fa;}
.tabbtn[aria-current="page"]{background:var(--yellow);border-color:var(--ink);box-shadow:0 3px 0 var(--ink);}
.tabbtn:focus-visible{outline:3px solid var(--teal);outline-offset:2px;}
@media (min-width:900px){
  main#app{padding-bottom:80px;}
  .tabbar{
    top:calc(8px + env(safe-area-inset-top));bottom:auto;left:50%;right:auto;transform:translateX(-50%);
    border:3px solid var(--ink);border-radius:999px;padding:5px 8px;gap:4px;
    box-shadow:0 4px 0 rgba(35,31,26,.15);
  }
  .tabbtn{flex-direction:row;gap:8px;min-height:44px;padding:0 20px;border-radius:999px;}
  .tabbtn .ti{font-size:1.25rem;}
  .tabbtn .tl{font-size:1.05rem;}
}

/* ---------- cards (games, listen) ---------- */
.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:18px;margin-top:10px;}
.card-grid.one{max-width:640px;margin-left:auto;margin-right:auto;grid-template-columns:1fr;}
.game-card{
  display:flex;align-items:center;gap:14px;text-align:left;width:100%;
  background:#fff;color:var(--ink);text-decoration:none;
  border:2px solid var(--ink);border-radius:20px;padding:16px;
  box-shadow:0 6px 0 var(--c,#6B4C9A);
  transition:transform .12s ease, box-shadow .12s ease;
  cursor:pointer;font:inherit;
}
.game-card:hover{transform:translateY(-3px);box-shadow:0 9px 0 var(--c);}
.game-card:active{transform:translateY(3px);box-shadow:0 2px 0 var(--c);}
.game-card:focus-visible{outline:3px solid var(--teal);outline-offset:3px;}
.gc-emoji{flex:none;width:64px;height:64px;border-radius:18px;background:var(--c);display:grid;place-items:center;font-size:2rem;border:2px solid var(--ink);}
.gc-text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0;}
.gc-text b{font-family:'Baloo 2',sans-serif;font-size:1.2rem;line-height:1.15;}
.gc-text small{font-size:.95rem;color:#5a5346;line-height:1.3;}
.gc-go{flex:none;font-family:'Baloo 2',sans-serif;font-weight:800;background:var(--ink);color:#fff;border-radius:999px;padding:8px 16px;}

/* ---------- Story Corner: list ---------- */
.progress-pill{display:inline-block;font-family:'Baloo 2',sans-serif;font-weight:700;background:#fff;border:2px solid var(--ink);border-radius:999px;padding:4px 14px;font-size:1rem;}
.chips{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:14px 0 22px;}
.chip{font-family:'Baloo 2',sans-serif;font-weight:700;font-size:1rem;min-height:44px;padding:0 18px;border-radius:999px;border:2px solid var(--teal);background:#fff;color:var(--teal);cursor:pointer;}
.chip.active{background:var(--teal);color:#fff;}
.chip:focus-visible{outline:3px solid var(--ink);outline-offset:2px;}
.story-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr));gap:26px 22px;}
.story-card{
  position:relative;display:flex;flex-direction:column;text-align:left;padding:0;overflow:hidden;
  background:#fff;color:var(--ink);cursor:pointer;
  border:2px solid var(--ink);border-radius:18px;
  box-shadow:0 6px 0 var(--sc,#2C8C93);
  transition:transform .15s ease, box-shadow .15s ease;font:inherit;
}
.story-card:hover{transform:translateY(-4px) rotate(-.4deg);box-shadow:0 10px 0 var(--sc);}
.story-card:active{transform:translateY(3px);box-shadow:0 2px 0 var(--sc);}
.story-card:focus-visible{outline:3px solid var(--teal);outline-offset:3px;}
.story-card img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;display:block;border-bottom:2px solid var(--ink);background:#eee;}
.sc-icon{position:absolute;top:10px;left:10px;width:44px;height:44px;border-radius:50%;background:#fff;border:2px solid var(--ink);display:grid;place-items:center;font-size:1.4rem;}
.sc-done{position:absolute;top:10px;right:10px;background:var(--green);color:#fff;border:2px solid var(--ink);border-radius:999px;padding:2px 10px;font-family:'Baloo 2',sans-serif;font-weight:800;font-size:.85rem;}
.sc-body{padding:12px 14px 16px;display:flex;flex-direction:column;gap:6px;flex:1;}
.sc-title{font-family:'Baloo 2',sans-serif;font-weight:800;font-size:1.3rem;line-height:1.1;}
.sc-tag{font-size:.97rem;line-height:1.4;color:#4a4438;}
.sc-meta{margin-top:auto;padding-top:4px;font-weight:800;font-size:.85rem;color:var(--sc);text-transform:uppercase;letter-spacing:.03em;}

/* ---------- Story Corner: reader ---------- */
.reader{position:fixed;inset:0;z-index:150;background:var(--paper);display:flex;flex-direction:column;--fs:1.2rem;animation:panelIn .2s ease;
  background-image:radial-gradient(circle at 1px 1px, rgba(35,31,26,.05) 1px, transparent 0);background-size:22px 22px;}
.reader-bar{flex:none;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));background:#fff;border-bottom:3px solid var(--ink);}
.reader-tools{display:flex;gap:8px;}
.rbtn{min-height:44px;padding:0 14px;border:2px solid var(--ink);border-radius:999px;background:#fff;color:var(--ink);font-family:'Baloo 2',sans-serif;font-weight:800;font-size:1rem;cursor:pointer;display:inline-flex;align-items:center;gap:6px;}
.rbtn:hover{background:var(--yellow);}
.rbtn[aria-pressed="true"]{background:var(--coral);color:#fff;}
.rbtn:focus-visible{outline:3px solid var(--teal);outline-offset:2px;}
@media (max-width:420px){ #readerSpeak span{display:none;} }
.reader-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:18px 18px calc(60px + env(safe-area-inset-bottom));}
.reader-article{max-width:720px;margin:0 auto;font-size:var(--fs);}
.r-cover{margin:0 0 16px;}
.r-cover img,.r-img img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;display:block;border:3px solid var(--ink);border-radius:20px;box-shadow:0 6px 0 var(--sc);background:#eee;}
.r-head h2{font-family:'Baloo 2',sans-serif;font-weight:800;font-size:clamp(1.9rem,6vw,2.6rem);line-height:1.05;margin:8px 0 6px;}
.r-stars{font-size:.95em;color:#4a4438;margin:0 0 4px;}
.r-meta{display:inline-block;font-family:'Baloo 2',sans-serif;font-weight:800;font-size:.8em;color:#fff;background:var(--sc);border-radius:999px;padding:2px 12px;margin-bottom:12px;}
.r-p{line-height:1.7;margin:0 0 1em;color:#1b1814;border-radius:10px;transition:background .2s;}
.r-p.speaking,.r-think.speaking,.r-chapter.speaking{background:rgba(242,183,5,.35);box-shadow:0 0 0 6px rgba(242,183,5,.35);}
.r-img{margin:1.4em 0;}
.r-think{display:flex;gap:12px;align-items:flex-start;margin:1.3em 0;padding:14px 16px;background:#fff7d6;border:2px dashed var(--ink);border-radius:18px;}
.r-think .em{flex:none;font-size:1.6em;line-height:1;}
.r-think .lb{display:block;font-family:'Baloo 2',sans-serif;font-weight:800;font-size:.85em;text-transform:uppercase;letter-spacing:.05em;color:var(--coral);}
.r-think .tx{line-height:1.5;font-weight:700;}
.r-chapter{display:flex;align-items:center;gap:12px;margin:2.2em 0 .8em;font-family:'Baloo 2',sans-serif;font-weight:800;font-size:1.5em;line-height:1.1;}
.r-chapter .num{flex:none;display:grid;place-items:center;min-width:2.1em;height:2.1em;border-radius:50%;background:var(--sc);color:#fff;border:2px solid var(--ink);font-size:.9em;}
.reveal-btn{display:block;width:100%;margin:1.4em 0;min-height:56px;padding:12px 18px;border:3px solid var(--ink);border-radius:18px;background:var(--coral);color:#fff;font-family:'Baloo 2',sans-serif;font-weight:800;font-size:1.15em;cursor:pointer;box-shadow:0 5px 0 var(--ink);}
.reveal-btn:active{transform:translateY(3px);box-shadow:0 2px 0 var(--ink);}
.reveal-btn:focus-visible{outline:3px solid var(--teal);outline-offset:3px;}
.r-lesson{position:relative;margin:1.4em 0;padding:16px 18px 16px 18px;background:var(--teal);color:#fff;border:3px solid var(--ink);border-radius:20px;box-shadow:0 5px 0 var(--ink);animation:pop .45s cubic-bezier(.2,1.6,.4,1);}
.r-lesson .lb{display:block;font-family:'Baloo 2',sans-serif;font-weight:800;font-size:.85em;text-transform:uppercase;letter-spacing:.06em;color:var(--yellow);}
.r-lesson .tx{font-family:'Baloo 2',sans-serif;font-weight:700;font-size:1.25em;line-height:1.25;}
@keyframes pop{0%{transform:scale(.8);opacity:0;}100%{transform:scale(1);opacity:1;}}
.spark{position:absolute;pointer-events:none;font-size:1.4rem;animation:fly 1s ease-out forwards;}
@keyframes fly{0%{opacity:1;transform:translate(0,0) scale(.6);}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1.3) rotate(var(--r));}}
.r-extra{margin:1.1em 0;padding:14px 16px;border:2px solid var(--ink);border-radius:18px;background:#fff;line-height:1.55;animation:panelIn .3s ease;}
.r-extra .lb{display:block;font-family:'Baloo 2',sans-serif;font-weight:800;font-size:.85em;text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px;}
.r-extra.talk{background:#efe8f8;}.r-extra.talk .lb{color:var(--purple);}
.r-extra.tip{background:#e6f3e2;}.r-extra.tip .lb{color:#2f7a25;}
.r-extra.saying{background:#fff7d6;}.r-extra.saying .lb{color:#9a6f00;}
.r-extra.grownups{background:#fff;font-size:.9em;}.r-extra.grownups .lb{color:#6b6458;}
.r-end{display:flex;flex-direction:column;gap:10px;margin-top:1.6em;}
.r-end .reveal-btn{background:var(--purple);}
.r-end .ghost{background:#fff;color:var(--ink);}
.r-done{text-align:center;font-family:'Baloo 2',sans-serif;font-weight:800;font-size:1.2em;color:#2f7a25;}

@media (min-width:900px){
  .reader{padding:24px;background:rgba(35,31,26,.55);justify-content:center;}
  .reader-bar,.reader-scroll{background:var(--paper);}
  .reader{align-items:center;}
  .reader > .reader-bar{width:100%;max-width:820px;border-radius:22px 22px 0 0;border:3px solid var(--ink);border-bottom:3px solid var(--ink);padding-top:8px;background:#fff;}
  .reader > .reader-scroll{width:100%;max-width:820px;border:3px solid var(--ink);border-top:0;border-radius:0 0 22px 22px;flex:0 1 auto;max-height:calc(100vh - 140px);background:var(--paper);padding-bottom:48px;}
}

/* ---------- optional log-in nudge ---------- */
.gate-panel{text-align:center;}
.gate-emoji{font-size:3rem;line-height:1;margin-bottom:6px;}
.gate-panel h3{margin-bottom:8px;}
.gate-text{font-size:1.05rem;line-height:1.5;color:#3a352c;margin:0 0 6px;}
.gate-later{display:block;width:100%;margin-top:10px;min-height:50px;padding:10px;border:2px solid var(--ink);border-radius:10px;background:#fff;color:var(--ink);font-family:'Baloo 2',sans-serif;font-weight:800;font-size:1rem;cursor:pointer;}
.gate-later:hover{background:var(--yellow);}
.r-login{margin-top:10px;}
.r-login .reveal-btn{background:var(--teal);}
.r-listen{background:var(--purple);margin:.9em 0 1.1em;min-height:52px;font-size:1.05em;}
.r-listen[aria-pressed="true"]{background:var(--coral);}
.r-listen:disabled{background:#999;box-shadow:none;cursor:default;}

/* ---------- profile chip + dialogs ---------- */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.profile-chip{font:800 .95rem 'Nunito Sans',sans-serif;color:var(--ink);background:#fff;border:2px solid var(--ink);border-radius:999px;padding:6px 14px;cursor:pointer;box-shadow:0 3px 0 var(--ink);max-width:62vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-flex;gap:6px;align-items:center;}
.profile-chip:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ink);}
.pf-overlay{position:fixed;inset:0;background:rgba(35,31,26,.55);z-index:400;display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto;}
.pf-overlay[hidden]{display:none;}
.pf-box{position:relative;background:#fff;border:3px solid var(--ink);border-radius:22px;box-shadow:0 8px 0 var(--ink);width:100%;max-width:460px;max-height:92vh;overflow:auto;padding:22px 22px 18px;}
.pf-box h2{font-family:'Baloo 2',sans-serif;font-weight:800;font-size:1.7rem;margin:0 0 6px;line-height:1.15;padding-right:34px;}
.pf-x{position:absolute;top:10px;right:12px;width:38px;height:38px;border-radius:50%;border:2px solid var(--ink);background:#fff;font-size:1.5rem;line-height:1;cursor:pointer;}
.pf-l{font-weight:800;margin:14px 0 6px;}
.pf-l small{font-weight:600;color:#5a5346;}
.pf-in{width:100%;font:700 1.15rem 'Nunito Sans',sans-serif;padding:11px 14px;border:2px solid var(--ink);border-radius:14px;background:#fffdf5;}
.pf-code{letter-spacing:.02em;}
.pf-animals{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.pf-animal{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 2px;border:2px solid #cfc8b8;border-radius:14px;background:#fff;cursor:pointer;font-size:1.7rem;}
.pf-animal small{font:700 .72rem 'Nunito Sans',sans-serif;color:#5a5346;}
.pf-animal.on{border-color:var(--ink);background:var(--yellow);box-shadow:0 3px 0 var(--ink);}
.pf-bands{display:flex;gap:10px;}
.pf-band{flex:1;padding:11px;border:2px solid #cfc8b8;border-radius:14px;background:#fff;font:800 1.05rem 'Nunito Sans',sans-serif;cursor:pointer;}
.pf-band.on{border-color:var(--ink);background:var(--yellow);box-shadow:0 3px 0 var(--ink);}
.pf-main{width:100%;margin-top:16px;}
.pf-link{display:block;margin:12px auto 0;background:none;border:0;font:800 .95rem 'Nunito Sans',sans-serif;color:var(--teal);text-decoration:underline;cursor:pointer;padding:6px;}
.pf-link.warn{color:#b3361a;}
.warnbtn{background:#b3361a !important;color:#fff !important;}
.pf-p{margin:6px 0;line-height:1.45;}
.pf-p.small{font-size:.85rem;color:#5a5346;text-align:center;margin-top:14px;}
.pf-msg{min-height:1.4em;margin-top:10px;font-weight:700;color:#b3361a;}
.pf-row{display:flex;flex-wrap:wrap;justify-content:center;gap:0 18px;}
.pf-danger{border-top:2px dashed #cfc8b8;margin-top:14px;padding-top:2px;}
.pf-codebox{text-align:center;background:#f4f9fb;border:2px solid var(--ink);border-radius:16px;padding:6px 14px 14px;margin-top:10px;}
.pf-bigcode{font:800 1.5rem 'Baloo 2',sans-serif;word-break:break-word;margin:2px 0 8px;}
.pf-qr{width:170px;height:170px;display:block;margin:6px auto;border:6px solid #fff;border-radius:6px;}
.game-card.for-you{outline:3px solid var(--yellow);}
.game-card .fy{display:inline-block;font:800 .72rem 'Nunito Sans',sans-serif;background:var(--yellow);border:2px solid var(--ink);border-radius:999px;padding:1px 8px;margin-left:6px;vertical-align:middle;}
.fy[hidden]{display:none;}
