/* The portal (docs/PORTAL.md, section 10): warm paper and crayons. Taken from docs/prototype/index.html. */
@font-face { font-family:Nunito; src:url("fonts/nunito.woff2") format("woff2"); font-weight:200 1000; font-display:swap; }
:root {
  --paper:#fff8ee; --card:#ffffff; --ink:#342a7d; --muted:#77727f; --line:#efe6d8;
  --red:#ef5350; --orange:#ff9f1c; --yellow:#ffd23f; --green:#3dbb6d; --teal:#18b5b0; --blue:#3e7bfa;
  --purple:#8e5cf7; --pink:#ff6fa8; --brown:#a0673a;
  --radius:22px; --shadow:0 2px 0 #0000000a, 0 8px 24px #3b2a1414;
}
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); color:var(--ink); font:17px/1.5 Nunito, system-ui, sans-serif; }
a { color:inherit; text-decoration:none; }
.wrap { max-width:1180px; margin:0 auto; padding:0 20px; }
[hidden] { display:none !important; }

/* header */
header { position:sticky; top:0; z-index:5; background:#fff8eecc; backdrop-filter:blur(8px); border-bottom:1px solid var(--line); }
header .wrap { display:flex; align-items:center; gap:18px; height:68px; }
.logo { display:flex; align-items:center; gap:10px; font-weight:900; font-size:22px; letter-spacing:-.3px; white-space:nowrap; }
.logo .mark { width:38px; height:38px; border-radius:12px; background:conic-gradient(var(--red) 0 20%, var(--yellow) 0 40%, var(--green) 0 60%, var(--blue) 0 80%, var(--purple) 0); position:relative; flex:none; }
.logo .mark::after { content:""; position:absolute; inset:7px; border-radius:7px; background:#fff; border:3px solid var(--ink); }
.logo small { display:block; font-weight:700; font-size:12px; color:var(--muted); letter-spacing:0; margin-top:-4px; }
.logo .c { display:inline-block; }
.c-red { color:var(--red); } .c-orange { color:var(--orange); } .c-yellow { color:var(--yellow); -webkit-text-stroke:.6px #c79a00; }
.c-green { color:var(--green); } .c-teal { color:var(--teal); } .c-blue { color:var(--blue); } .c-purple { color:var(--purple); } .c-pink { color:var(--pink); }
nav.main { display:flex; gap:4px; margin-left:12px; }
nav.main a { padding:8px 14px; border-radius:999px; font-weight:700; color:var(--muted); }
nav.main a:hover, nav.main a.on { background:#fff; color:var(--ink); box-shadow:var(--shadow); }
.langs { margin-left:auto; display:flex; background:#fff; border-radius:999px; padding:4px; box-shadow:var(--shadow); }
.langs a { padding:4px 11px; border-radius:999px; font-weight:800; font-size:14px; color:var(--muted); }
.langs a.on { background:var(--ink); color:#fff; }

/* «this page is also in your language» (portal.js) */
.suggest { background:var(--ink); color:#fff; font-size:15px; }
.suggest-in { display:flex; align-items:center; gap:14px; min-height:44px; }
.suggest-in span { flex:1; }
.suggest a { color:var(--yellow); font-weight:800; white-space:nowrap; }
.suggest button { background:none; border:0; color:inherit; font-size:22px; line-height:1; cursor:pointer; padding:4px 8px; opacity:.7; }
.suggest button:hover { opacity:1; }

/* hero */
.hero { display:grid; grid-template-columns:1.05fr 1fr; gap:40px; align-items:center; padding:46px 0 30px; }
.hero h1 { font-size:54px; line-height:1.04; margin:0 0 16px; font-weight:900; letter-spacing:-1.2px; }
.hl { background:linear-gradient(transparent 62%, var(--yellow) 62%); padding:0 4px; }
.lead { font-size:20px; color:var(--muted); margin:0 0 26px; max-width:620px; }
.search { display:flex; background:#fff; border-radius:999px; box-shadow:var(--shadow); padding:6px; max-width:520px; }
.search input { flex:1; min-width:0; border:0; outline:0; font:inherit; padding:10px 16px; background:transparent; color:inherit; }
.search button { border:0; border-radius:999px; background:var(--ink); color:#fff; font:inherit; font-weight:800; padding:10px 20px; cursor:pointer; }
.ages { display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; align-items:center; }
.ages span.lbl { font-weight:800; color:var(--muted); margin-right:4px; }
.age, .chip { padding:8px 16px; border-radius:999px; font-weight:800; background:#fff; box-shadow:var(--shadow); border:2px solid transparent; }
.age i, .chip i { font-style:normal; display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:7px; }
.age:hover, .chip:hover { border-color:var(--ink); }
.split { display:block; position:relative; aspect-ratio:4/3; border-radius:28px; overflow:hidden; box-shadow:var(--shadow); background:#fff; transform:rotate(1.2deg); }
/* a margin inside the rounded card: the page's own frame line must not run into the rounded corners */
.split img { position:absolute; inset:14px; width:calc(100% - 28px); height:calc(100% - 28px); object-fit:contain; }
.split .colored { clip-path:polygon(58% 0, 100% 0, 100% 100%, 38% 100%); }
.split.soon { display:grid; place-items:center; align-content:center; gap:22px; background:#fff; }
.split.soon b { font-size:24px; font-weight:900; color:var(--muted); text-align:center; padding:0 20px; }
.mark.big { width:140px; height:140px; border-radius:44px; background:conic-gradient(var(--red) 0 20%, var(--yellow) 0 40%, var(--green) 0 60%, var(--blue) 0 80%, var(--purple) 0); position:relative; }
.mark.big::after { content:""; position:absolute; inset:26px; border-radius:24px; background:#fff; border:9px solid var(--ink); }
.sticker { position:absolute; left:-14px; bottom:22px; background:var(--green); color:#fff; font-weight:900; padding:10px 16px 10px 28px; border-radius:16px; transform:rotate(-4deg); box-shadow:var(--shadow); }

/* sections */
section { padding:28px 0; }
.sec-head { display:flex; align-items:baseline; gap:14px; margin-bottom:16px; flex-wrap:wrap; }
.sec-head h2 { font-size:30px; margin:0; font-weight:900; letter-spacing:-.5px; }
.sec-head p { margin:0; color:var(--muted); }
.sec-head a.more { margin-left:auto; font-weight:800; color:var(--blue); }

.cats { display:grid; grid-template-columns:repeat(6, 1fr); gap:14px; }
.cat { background:#fff; border-radius:var(--radius); padding:16px 14px 14px; box-shadow:var(--shadow); text-align:center; transition:transform .15s; position:relative; overflow:hidden; }
.cat:hover { transform:translateY(-3px) rotate(-.6deg); }
.cat .ico { width:72px; height:72px; margin:0 auto 8px; border-radius:24px; display:grid; place-items:center; font-size:40px; }
.cat .ico img { width:64px; height:64px; object-fit:contain; }
.cat b { display:block; font-size:16px; font-weight:800; }
.cat small { color:var(--muted); font-weight:600; }

.learn { display:grid; grid-template-columns:repeat(4, 1fr); gap:16px; }
.lcard { border-radius:var(--radius); padding:20px 20px 78px; min-height:170px; position:relative; overflow:hidden; box-shadow:var(--shadow); color:var(--ink); }
.lcard h3 { margin:0 0 6px; font-size:21px; font-weight:900; }
.lcard p { margin:0; font-size:15px; opacity:.85; position:relative; z-index:1; }
.lcard .big { position:absolute; right:16px; bottom:6px; font-size:56px; line-height:1.1; font-weight:900; letter-spacing:-2px; }
.lcard img.art { position:absolute; right:10px; bottom:8px; width:84px; height:84px; object-fit:contain; }
.lcard .tag { display:inline-block; font-size:12px; font-weight:800; background:#ffffffaa; border-radius:999px; padding:2px 10px; margin-bottom:10px; }

/* page cards */
.grid { display:grid; grid-template-columns:repeat(4, 1fr); gap:18px; }
.page { display:block; background:#fff; border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden; transition:transform .15s; }
.page:hover { transform:translateY(-3px); }
.thumb { aspect-ratio:4/3; position:relative; background:#fff; border-bottom:1px solid var(--line); }
.thumb img { position:absolute; inset:8px; width:calc(100% - 16px); height:calc(100% - 16px); object-fit:contain; display:block; }
.thumb .line { opacity:1; transition:opacity .25s; background:#fff; }
.page:hover .thumb .line, .page:focus .thumb .line { opacity:0; }           /* hover: line art -> colored */
.newb { position:absolute; left:10px; top:10px; background:var(--pink); color:#fff; font-weight:900; font-size:13px; padding:2px 10px; border-radius:999px; transform:rotate(-4deg); }
.meta { padding:12px 14px 14px; }
.meta b { display:block; font-size:16px; font-weight:800; margin-bottom:6px; }
.badges { display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.badge { font-size:12.5px; font-weight:800; padding:3px 9px; border-radius:999px; background:var(--paper); color:var(--muted); }
.badges.big .badge { font-size:15px; padding:5px 12px; background:#fff; box-shadow:var(--shadow); }
.dots { display:inline-flex; gap:3px; margin-left:auto; }
.dots i { width:8px; height:8px; border-radius:50%; background:var(--line); } .dots i.on { background:var(--ink); }
.acts { display:flex; gap:8px; margin-top:12px; }
.btn { flex:1; text-align:center; font-weight:800; font-size:14.5px; padding:9px 12px; border-radius:12px; background:var(--paper); border:0; font-family:inherit; color:inherit; cursor:pointer; }
.btn.play { background:var(--ink); color:#fff; }

.parents { display:grid; grid-template-columns:repeat(4, 1fr); gap:16px; }
.pfeat { background:#fff; border-radius:var(--radius); padding:18px; box-shadow:var(--shadow); }
.pfeat .e { font-size:28px; } .pfeat .e img { width:56px; height:56px; object-fit:contain; display:block; } .pfeat b { display:block; font-weight:900; margin:4px 0; } .pfeat p { margin:0; color:var(--muted); font-size:15px; }

.bot { margin:26px 0 10px; border-radius:28px; padding:28px 30px; background:var(--ink); color:#fff; display:flex; align-items:center; gap:24px; }
.bot img.art { width:96px; height:96px; object-fit:contain; flex:none; }
.bot h3 { margin:0 0 4px; font-size:26px; font-weight:900; } .bot p { margin:0; opacity:.8; }
.bot .cta { margin-left:auto; background:var(--yellow); color:var(--ink); font-weight:900; padding:12px 22px; border-radius:999px; white-space:nowrap; }
footer { color:var(--muted); font-size:14px; padding:26px 0 50px; }
footer .wrap { display:flex; gap:20px; flex-wrap:wrap; }
footer a:hover { color:var(--ink); }

/* lists: category, age, new, search, album */
.list-head { padding:30px 0 6px; }
.list-head h1 { font-size:44px; line-height:1.1; margin:6px 0 10px; font-weight:900; letter-spacing:-1px; }
.crumb { font-weight:800; color:var(--muted); }
.crumb:hover { color:var(--ink); }
.art-i { width:22px; height:22px; vertical-align:-5px; object-fit:contain; }
.art-h { width:64px; height:64px; vertical-align:-12px; margin-right:10px; object-fit:contain; }
.filters { display:flex; flex-direction:column; gap:10px; margin:6px 0 22px; }
.chips { display:flex; flex-wrap:wrap; gap:8px; }
.chip { font:inherit; font-weight:800; font-size:15px; padding:6px 14px; cursor:pointer; color:var(--ink); }
.chip.on { background:var(--ink); color:#fff; }
.empty { color:var(--muted); font-size:18px; padding:30px 0; }

/* a page */
.pv { display:grid; grid-template-columns:1.25fr 1fr; gap:34px; align-items:start; padding:10px 0 20px; }
.pv-pic { position:relative; }
.pv-img { display:block; background:#fff; border-radius:28px; box-shadow:var(--shadow); padding:14px; transition:transform .15s; }
.pv-img:hover, .pv-img:focus { transform:translateY(-3px); }   /* the picture plays: the same lift as the cards */
.pv-img img { width:100%; display:block; }
.toggle { position:absolute; right:14px; top:14px; display:flex; background:#fff; border-radius:999px; padding:4px; box-shadow:var(--shadow); }
.toggle button { border:0; background:none; font:inherit; font-weight:900; padding:4px 12px; border-radius:999px; cursor:pointer; color:var(--muted); }
.toggle button.on { background:var(--ink); color:#fff; }
.pv-info h1 { font-size:42px; line-height:1.08; margin:6px 0 12px; font-weight:900; letter-spacing:-1px; }
.pv-info h2 { font-size:20px; margin:24px 0 10px; font-weight:900; }
.pv-info .lead { font-size:18px; margin-bottom:16px; }
.cta-play { display:block; text-align:center; margin:22px 0 12px; background:var(--green); color:#fff; font-weight:900; font-size:22px; padding:16px; border-radius:18px; box-shadow:var(--shadow); }
.pv-acts { display:flex; flex-wrap:wrap; gap:8px; }
.pv-acts .btn { flex:1 1 auto; background:#fff; box-shadow:var(--shadow); font-size:16px; padding:11px 14px; }
.legend { list-style:none; padding:0; margin:0; display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:8px 14px; }
.legend li { display:flex; align-items:center; gap:8px; font-weight:700; font-size:15px; }
.legend .sw { flex:none; width:28px; height:28px; border-radius:50%; display:grid; place-items:center; font-size:12px; font-weight:900; color:#fff; text-shadow:0 0 2px #000a; border:2px solid #0002; }
.tags { margin-top:18px; color:var(--blue); font-weight:800; }
.ai-note { font-size:14px; color:var(--muted); margin:10px 0 0; } .ai-note a { text-decoration:underline; }
.text { max-width:760px; padding:30px 0; font-size:18px; }
.text h1 { font-size:42px; font-weight:900; margin:0 0 14px; }
.text a { color:var(--blue); font-weight:800; }
.print-sheet { display:none; }

@media (max-width: 980px) {
  .hero, .pv { grid-template-columns:1fr; } .hero h1 { font-size:40px; }
  .cats { grid-template-columns:repeat(3, 1fr); } .learn, .grid, .parents { grid-template-columns:repeat(2, 1fr); }
  nav.main { display:none; }
}
@media (max-width: 560px) {
  .wrap { padding:0 16px; }
  header .wrap { gap:10px; } .logo { font-size:19px; } .logo small { display:none; }
  .hero { padding-top:26px; } .hero h1, .list-head h1, .pv-info h1 { font-size:32px; }
  .cats { grid-template-columns:repeat(2, 1fr); } .learn, .grid, .parents { grid-template-columns:1fr; }
  .bot { flex-direction:column; align-items:flex-start; } .bot .cta { margin-left:0; }
  .split { transform:none; } .sticker { left:8px; }
}

/* paper: only the picture and its legend, no interface */
@media print {
  @page { margin:12mm; }
  body { background:#fff; }
  header, footer, main > *:not(.print-sheet) { display:none !important; }
  .print-sheet { display:block; }
  .print-sheet h1 { font-size:18pt; margin:0 0 4mm; }
  .print-sheet img { width:100%; max-height:200mm; object-fit:contain; }
  .print-sheet .legend { grid-template-columns:repeat(4, 1fr); margin-top:4mm; }
  .print-sheet .legend .sw { color:#000; text-shadow:none; background:#fff !important; border:1.5px solid #000; }
  .print-foot { color:#888; font-size:8pt; text-align:right; }
}
