/* Cultural Storybook Hybrid — live UI, local fonts, original teaching art. */
@font-face {
  font-family: 'Baloo 2';
  src: url('../assets/fonts/baloo2-latin.woff2') format('woff2');
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
}
@font-face {
  font-family: 'Nunito';
  src: url('../assets/fonts/nunito-latin.woff2') format('woff2');
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
}
:root {
  color-scheme: light;
  --ivory: #fff9ec;
  --paper: #fffdf5;
  --ink: #453018;
  --muted: #756044;
  --orange: #c45a1b;
  --amber: #ffc443;
  --amber-dark: #9c5812;
  --green: #367044;
  --green-deep: #275d38;
  --mint: #e2efcd;
  --sky: #e0f2f9;
  --blue: #346b88;
  --line: #e7d5ad;
  --shadow: 0 7px 0 #decda04a, 0 15px 32px #6950270c;
  --radius: 26px;
  --font-body: 'Nunito', 'Trebuchet MS', sans-serif;
  --font-play: 'Baloo 2', 'Nunito', sans-serif;
  --content-width: 1192px;
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { min-width: 320px; overflow-x: clip; scroll-padding-top: 28px; }
body.playful-app {
  margin: 0;
  min-width: 320px;
  min-height: 100vh;
  isolation: isolate;
  overflow-x: clip;
  background: var(--ivory);
  color: var(--ink);
  font: 600 16px/1.6 var(--font-body);
  -webkit-font-smoothing: antialiased;
}
body.playful-app::before {
  content: '';
  position: absolute;
  z-index: 0;
  inset: 0 0 auto;
  height: 1050px;
  pointer-events: none;
  background-image: linear-gradient(180deg, #fff9ec00 34%, #fff9ec 91%), linear-gradient(90deg, #fff9ec08, #fff9ecd9 15%, #fff9ecf5 30%, #fff9ecf2 72%, #fff9ecd9 85%, #fff9ec08), url('../assets/playful/environment.webp');
  background-position: center top;
  background-repeat: no-repeat;
  background-size: cover;
}
.ambient-background { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.playful-app :where(h1, h2, h3, h4) { font-family: var(--font-play); font-weight: 800; line-height: 1.12; text-wrap: balance; overflow-wrap: anywhere; }
.playful-app h1 { margin: 0; font-size: clamp(36px, 4.1vw, 60px); letter-spacing: -.025em; }
.playful-app h2 { margin: 0; font-size: clamp(25px, 2.4vw, 34px); letter-spacing: -.015em; }
.playful-app h3 { margin: 0; font-size: 24px; }
.playful-app p { margin: 0 0 1em; }
.playful-app :where(button, input, select, textarea) { font: inherit; color: inherit; }
.playful-app :where(a, button, input, select, textarea) { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.playful-app button { cursor: pointer; }
.playful-app a { color: inherit; text-decoration: none; }
.playful-app button { border: 0; }
.playful-app button:disabled { opacity: .55; cursor: not-allowed; transform: none; }
.playful-app :where(button, a, input, select, textarea, summary, [tabindex]):focus-visible { outline: 3px solid #166e9e; outline-offset: 5px; }
.playful-app :where(input, select, textarea) { max-width: 100%; border: 2px solid var(--line); border-radius: 13px; padding: 12px 15px; background: var(--paper); }
.playful-app input[type='checkbox'] { accent-color: var(--green); width: 21px; height: 21px; }
.playful-app input[type='text'] { width: 100%; min-height: 48px; }
.playful-app label { font-weight: 800; }
.playful-app img { display: block; max-width: 100%; }
.icon { width: 24px; height: 24px; display: inline-block; vertical-align: middle; flex: 0 0 24px; overflow: visible; }
.visually-hidden, .sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; border: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
.skip, .skip-link { position: fixed; top: 12px; left: 12px; z-index: 100; padding: 12px 20px; background: var(--paper); border-radius: 14px; transform: translateY(-160%); }
.skip:focus, .skip-link:focus { transform: translateY(0); }
#app { position: relative; z-index: 1; min-height: 65vh; outline: none; }
.view { width: min(var(--content-width), calc(100% - 64px)); margin: 0 auto; padding: 0 0 36px; }
.view > *, .view :where(article, section, header, aside, div) { min-width: 0; }
.panel { background: var(--paper); border: 1.5px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); }
.eyebrow { display: flex; align-items: center; gap: 7px; margin: 0 0 12px !important; color: var(--green); font-size: 11px; font-weight: 900; line-height: 1.6; letter-spacing: .14em; overflow-wrap: anywhere; }
.eyebrow .icon { width: 18px; height: 18px; flex-basis: 18px; }
.section-heading { display: flex; justify-content: space-between; align-items: center; gap: 18px; margin-bottom: 22px; }
.section-heading .eyebrow { margin-bottom: 5px !important; }
.section-heading > .icon { color: var(--green); }
.text-link { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 8px 0; min-height: 44px; background: transparent; color: var(--green-deep) !important; font-weight: 900; line-height: 1.35; text-align: left; }
.text-link .icon { width: 19px; height: 19px; flex-basis: 19px; }
.text-link:hover { text-decoration: underline; text-underline-offset: 4px; }
.page-intro { position: relative; text-align: center; padding: 42px 0 30px; }
.page-intro > .eyebrow { justify-content: center; }
.page-intro p:not(.eyebrow) { margin: 12px auto 0; color: var(--muted); font-size: 17px; max-width: 60ch; }
.page-footnote { text-align: center; color: var(--muted); font-size: 12px; padding: 28px 16px 0; margin: 0 !important; }
/* A pill-shaped header like a small sign at the garden gate. */
.site-header { position: relative; z-index: 20; display: flex; align-items: center; gap: 22px; width: min(1304px, calc(100% - 48px)); min-height: 82px; margin: 18px auto 0; padding: 10px 18px 10px 25px; border: 2px solid #fffef6; border-radius: 30px; background: #fffaf0f5; box-shadow: 0 4px 0 #dac28e45, 0 8px 24px #59432109; }
.brand { display: flex; align-items: center; gap: 10px; min-height: 44px; flex-shrink: 0; font: 800 23px/1.08 var(--font-play); letter-spacing: -.025em; }
.brand > .icon, .brand-mark { display: grid; place-items: center; width: 43px; height: 46px; flex: 0 0 43px; color: var(--green); background: #e5eccb; border: 1px solid #ced6a8; border-radius: 50% 50% 38% 38%; }
.brand img { width: 44px; height: 48px; object-fit: contain; }
.brand small { display: block; font: 800 9px/1.5 var(--font-body); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.brand strong { font-weight: 800; }
.brand :is(em, b) { color: var(--orange); font-style: normal; }
.desktop-nav { display: flex; align-items: center; justify-content: center; gap: 3px; margin-left: auto; }
.desktop-nav :is(a, button) { display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 11px 14px; min-height: 44px; white-space: nowrap; border-radius: 15px; background: transparent; font: 700 17px/1.25 var(--font-play); }
.desktop-nav .icon { width: 19px; height: 19px; flex-basis: 19px; }
.desktop-nav :is(a, button):hover { background: #f3ecd9; }
.desktop-nav :is([aria-current='page'], .active, .is-active) { background: #ffdd83; color: #603b13; box-shadow: inset 0 -2px #d7a65038; }
.header-tools { display: flex; align-items: center; gap: 7px; }
.icon-btn { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 46px; min-height: 46px; padding: 10px; color: var(--ink); border: 1.5px solid var(--line) !important; border-radius: 15px; background: var(--paper); box-shadow: 0 3px 0 #d9c79955; transition: transform 160ms, background 160ms, box-shadow 160ms; }
.icon-btn:hover { background: #fff0c4; transform: translateY(-2px); }
.icon-btn:active { transform: translateY(2px); box-shadow: none; }
.mobile-nav { display: none; }
.site-footer { position: relative; z-index: 1; display: flex; align-items: center; flex-wrap: wrap; gap: 12px 26px; width: min(var(--content-width), calc(100% - 36px)); margin: 5px auto 0; padding: 22px 0 30px; border-top: 1px dashed var(--line); }
.site-footer > div { margin-right: auto; }
.site-footer strong { display: block; font: 800 22px/1.3 var(--font-play); }
.site-footer span, .site-footer p { display: block; font-size: 11px; color: var(--muted); }
.site-footer .text-link { font-size: 12px; }
.site-footer p { flex-basis: 100%; margin: 0; }
/* Raised controls are CSS, never stretched bitmap buttons. */
.btn { --btn-shadow: #cf9c46; display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 54px; padding: 12px 23px; border: 1.5px solid #cda157 !important; border-radius: 17px; font: 800 21px/1.3 var(--font-play); text-align: center; color: var(--ink); box-shadow: 0 4px 0 var(--btn-shadow), inset 0 2px 0 #ffffffb3; transition: transform 160ms ease, box-shadow 160ms ease, background 160ms ease; }
.btn-primary { background: linear-gradient(#ffda70, #ffc344); color: #4d3212 !important; }
.btn-secondary { --btn-shadow: #dbcba5; background: #fffcf3; border-color: #e2ce9c !important; color: var(--ink) !important; }
.btn-green { --btn-shadow: #254f33; background: linear-gradient(#477f49, #356b41); color: #fffdf0 !important; border-color: #2f6039 !important; }
.btn-quiet { --btn-shadow: #dacba7; box-shadow: none; border-color: var(--line) !important; background: #f5edd9; }
.btn:hover { transform: translateY(-2px); box-shadow: 0 6px 0 var(--btn-shadow), inset 0 2px 0 #ffffff80; }
.btn:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--btn-shadow); }
.btn:disabled { transform: none; box-shadow: none; }
.btn .icon { width: 21px; height: 21px; flex-basis: 21px; }
.gentle-note { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; font-weight: 700; }
.gentle-note .icon { color: var(--orange); width: 16px; height: 16px; flex-basis: 16px; }
.theme-amber { --theme-soft: #fff0c9; --theme-pale: #fffae9; --theme-line: #e5ca87; --theme-ink: #845016; --theme-bar: #e8a731; }
.theme-green { --theme-soft: #e2efcf; --theme-pale: #f7faed; --theme-line: #c9d6ab; --theme-ink: #3f673c; --theme-bar: #6e9c4e; }
.theme-sky { --theme-soft: #e0eef5; --theme-pale: #f2f9fb; --theme-line: #bdd5df; --theme-ink: #3c6a83; --theme-bar: #5d98b5; }
.theme-rose { --theme-soft: #f7e0d6; --theme-pale: #fff7f0; --theme-line: #e0c3b5; --theme-ink: #945844; --theme-bar: #b17c64; }
.progress-track { display: block; height: 10px; width: 100%; overflow: hidden; border-radius: 20px; background: #e8dfc9; box-shadow: inset 0 1px 2px #60472010; }
.progress-track > span { display: block; height: 100%; max-width: 100%; border-radius: inherit; background: var(--theme-bar, #6f994a); transition: width 300ms ease; }
.progress-caption { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; margin: 0 0 8px; color: var(--muted); font-size: 12px; }
.progress-caption strong { color: var(--theme-ink, var(--green)); font-weight: 900; }
/* BERANDA: a real illustration, surrounded by live type and controls. */
.welcome-hero { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); align-items: center; min-height: 490px; gap: 14px; padding: 40px 6px 22px; }
.hero-copy { position: relative; z-index: 3; }
.hero-copy > .eyebrow { display: inline-flex; max-width: 100%; padding: 5px 13px; border: 1px solid #d8dfb5; border-radius: 100px; background: #f4f6e5e6; text-transform: none; letter-spacing: .02em; font-size: 12px; }
.hero-copy h1 { font-size: clamp(48px, 5.6vw, 81px); line-height: .99; letter-spacing: -.035em; color: #49321c; text-shadow: 0 2px #fffdf3; }
.hero-copy h1 span { color: var(--orange); }
.hero-subtitle { max-width: 30ch; margin: 23px 0 12px !important; font-size: clamp(18px, 1.65vw, 22px); line-height: 1.45; font-weight: 900; color: #4f5f35; }
.hero-description { color: var(--muted); font-size: 15px; line-height: 1.6; }
.hero-actions { display: flex; align-items: center; gap: 13px; flex-wrap: wrap; margin: 23px 0 17px; }
.hero-actions .btn-primary { min-width: 207px; }
.hero-actions .btn-secondary { font-size: 19px; padding-inline: 18px; }
.hero-world { position: relative; height: 424px; isolation: isolate; align-self: end; }
.hero-orbit { position: absolute; inset: 60px 14px 15px; z-index: 0; border-radius: 47% 53% 43% 57%; background: radial-gradient(ellipse at 58% 43%, #fffbe9 0, #f6e5b788 63%, #e8eed9 64%); border: 2px solid #e4d2a282; box-shadow: inset 0 0 0 10px #fffdf459; transform: rotate(-5deg); }
.mascot { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center bottom; user-select: none; transform-origin: 50% 90%; }
.mascot-button { position: relative; display: block; padding: 0; border: 0; background: transparent; border-radius: 32px; }
.hero-mascot { position: absolute; z-index: 2; left: 0; bottom: 34px; width: 100%; height: 344px; }
.hero-mascot .mascot-boy { position: absolute; width: 64%; height: 100%; left: -2%; bottom: 0; transform: rotate(-6deg); }
.hero-mascot .mascot-girl { position: absolute; width: 55%; height: 89%; right: -1%; bottom: -1px; transform: rotate(5deg); }
.mascot-button:hover .mascot { filter: drop-shadow(0 5px 0 #bf8e3a18); }
.hero-ground { position: absolute; bottom: 16px; left: 2%; width: 96%; height: 50px; z-index: 1; border-radius: 50%; background: #b5c18d55; border: 1px solid #adb97d33; }
.hero-art-note { position: absolute; bottom: -6px; left: 0; right: 0; text-align: center; color: #6c6549; font: 700 15px var(--font-play); }
.mascot-bubble { position: absolute; z-index: 4; right: 18px; top: 4px; padding: 12px 19px; background: #fffdf4; border: 2px solid #e1cca0; border-radius: 22px 24px 22px 6px; font: 800 24px/1.15 var(--font-play); box-shadow: 0 5px 0 #d6c09028; transform: rotate(5deg); }
.mascot-bubble span { display: block; font: 700 12px/1.7 var(--font-body); color: var(--muted); }
.story-spark { position: absolute; z-index: 3; display: grid; place-items: center; width: 47px; height: 47px; border-radius: 16px; }
.story-spark .icon { width: 30px; height: 30px; }
.spark-one { top: 37px; left: 13%; color: #b98623; transform: rotate(-13deg); background: #ffe39d; }
.spark-two { top: 145px; right: 0; color: #557b40; transform: rotate(16deg); background: #dbe9c5; }
.home-adventures { position: relative; padding: 24px 0 0; }
.topic-mini-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 17px; }
.topic-mini { display: grid; grid-template-columns: 94px minmax(0, 1fr) 26px; align-items: center; gap: 13px; padding: 13px 14px; min-height: 135px; background: var(--theme-pale); border: 1.5px solid var(--theme-line); border-radius: 23px; box-shadow: 0 5px 0 #d9c99e3d; transition: transform 180ms ease, box-shadow 180ms ease; }
.topic-mini:hover { transform: translateY(-4px) rotate(-.3deg); box-shadow: 0 9px 0 #d9c99e3d; }
.topic-mini:active { transform: translateY(2px); box-shadow: 0 2px 0 #d9c99e3d; }
.topic-mini-art { display: flex; align-items: center; justify-content: center; height: 96px; background: var(--theme-soft); padding: 5px; border: 1px solid var(--theme-line); border-radius: 17px; transform: rotate(-4deg); }
.topic-mini-art img { width: 100%; height: 100%; object-fit: contain; border-radius: 5px; }
.topic-mini h3 { margin: 5px 0; font-size: 25px; color: var(--theme-ink); }
.topic-kicker { display: block; font-size: 9px; letter-spacing: .1em; font-weight: 900; color: var(--theme-ink); }
.topic-mini-copy > span:last-child { display: block; font-size: 11px; line-height: 1.5; color: var(--muted); }
.round-arrow { display: grid; place-items: center; width: 28px; height: 34px; color: var(--theme-ink); }
.round-arrow .icon { width: 20px; height: 20px; }
.storybook-callout { position: relative; display: grid; grid-template-columns: 132px minmax(0, 1fr) auto; align-items: center; gap: 25px; padding: 24px 32px 24px 17px; margin-top: 37px; background: #eaf0d8; border: 1.5px solid #cad5ae; border-radius: 25px 48px 25px 25px; }
.storybook-callout h2 { color: var(--green-deep); font-size: 31px; }
.storybook-callout p:not(.eyebrow) { color: #5d684a; font-size: 14px; margin: 7px 0 0; }
.storybook-callout .eyebrow { font-size: 10px; }
.callout-mascot { height: 133px; margin: -20px 0; }
.storybook-callout .btn { font-size: 18px; }
/* KATALOG: three original boards in little illustration frames. */
.catalog-intro { display: flex; align-items: center; justify-content: center; min-height: 200px; padding-right: 125px; padding-left: 125px; }
.catalog-intro .eyebrow { justify-content: center; }
.intro-mascot { position: absolute; right: 24px; bottom: -11px; width: 133px; height: 186px; transform: rotate(5deg); }
.catalog-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 7px 0 28px; }
.filter-tabs { display: inline-flex; align-items: center; gap: 5px; padding: 6px; border: 1.5px solid var(--line); border-radius: 20px; background: #fffcf2e6; box-shadow: 0 4px 0 #ddc99c24; }
.filter-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; min-width: 113px; padding: 10px 16px; border-radius: 14px; background: transparent; font: 700 19px/1.2 var(--font-play) !important; transition: background 160ms, transform 160ms; }
.filter-btn .icon { width: 19px; height: 19px; flex-basis: 19px; }
.filter-btn:hover { background: #f6ecd6; }
.filter-btn[aria-pressed='true'] { background: #ffdb77; box-shadow: inset 0 -2px #d8a33e2e; }
.filter-btn:active { transform: scale(.97); }
.topic-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 25px; align-items: stretch; }
.topic-card { position: relative; display: flex; flex-direction: column; padding: 12px; border: 1.5px solid var(--theme-line); background: var(--theme-pale); border-radius: 29px; box-shadow: 0 7px 0 #d9c89e4d; }
.topic-card-art { position: relative; display: flex; align-items: center; justify-content: center; aspect-ratio: 1.38; width: 100%; background: var(--theme-soft); border: 1px solid var(--theme-line); padding: 22px 14px 43px; border-radius: 19px; }
.topic-card-art > img { width: 100%; height: 100%; object-fit: contain; border-radius: 6px; box-shadow: 0 4px 10px #73572915; }
.adventure-number { position: absolute; z-index: 1; top: -8px; left: 12px; display: grid; place-items: center; width: 35px; height: 36px; border-radius: 5px 5px 12px 12px; background: var(--theme-ink); color: #fffdf3; font: 800 17px var(--font-play); }
.topic-type { display: inline-flex; align-items: center; gap: 6px; position: absolute; bottom: 10px; left: 13px; color: var(--theme-ink); font: 800 14px/1.2 var(--font-play); }
.topic-type .icon { width: 17px; height: 17px; flex-basis: 17px; }
.topic-card-body { flex: 1; display: flex; flex-direction: column; padding: 21px 10px 10px; }
.topic-title-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.topic-title-row h2 { font-size: 30px; color: var(--theme-ink); }
.completed-mark { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; color: #fffdf5; background: var(--green); }
.completed-mark .icon { width: 17px; height: 17px; flex-basis: 17px; }
.topic-description { margin: 9px 0 21px !important; color: var(--muted); font-size: 13px; line-height: 1.6; flex: 1; }
.topic-card-body .btn { display: flex; margin-top: 22px; font-size: 20px; padding-inline: 12px; }
.topic-card-body .btn > .icon:last-child { margin-left: auto; }
.topic-card-body .btn > .icon:first-child { margin-right: auto; }
.discovery-note, .collection-empty { display: flex; align-items: center; gap: 20px; margin-top: 37px; padding: 24px 27px; border: 1.5px solid #d6deb9; border-radius: 23px; background: #f0f3e2; }
.note-icon { display: inline-grid; place-items: center; flex: 0 0 48px; width: 48px; height: 48px; border-radius: 18px; background: #e2eacb; color: var(--green); }
.discovery-note h2, .collection-empty h2 { font-size: 25px; color: var(--green-deep); }
.discovery-note p, .collection-empty p { margin: 7px 0 0; font-size: 13px; color: #5c6749; }
.discovery-note > .text-link { flex-shrink: 0; margin-left: auto; font-size: 13px; }
.learning-path { display: flex; align-items: center; justify-content: center; gap: 26px; margin-top: 29px; color: var(--muted); font-size: 13px; }
.learning-path > span { display: flex; align-items: center; gap: 8px; }
.learning-path b { font: 800 22px var(--font-play); color: #b08039; }
.learning-path .icon { width: 14px; height: 14px; }
/* CERITA: an open book and a character directory, not another card grid. */
.story-intro { padding-bottom: 23px; }
.story-tabs { display: flex; align-items: stretch; justify-content: center; gap: 9px; margin: 0 auto 29px; }
.story-tab { display: inline-flex; align-items: center; justify-content: center; gap: 9px; padding: 13px 23px; min-height: 48px; border: 1.5px solid var(--line); border-radius: 17px; background: #fffdf2; font: 700 20px/1.25 var(--font-play); box-shadow: 0 4px 0 #dbc79b2e; transition: background 160ms, transform 160ms; }
.story-tab .icon { width: 19px; height: 19px; flex-basis: 19px; }
.story-tab:hover { transform: translateY(-2px); background: #fff2cd; }
.story-tab[aria-current='page'] { border-color: #cda95f; background: #ffdc84; }
.story-layout { display: grid; grid-template-columns: minmax(0, 1.9fr) minmax(0, 1fr); align-items: start; gap: 25px; }
.story-book { position: relative; padding: 31px 34px 25px 40px; border: 1.5px solid #e1c99b; border-left: 9px solid #d4b574; border-radius: 12px 28px 28px 12px; background: #fffdf4; box-shadow: 5px 7px 0 #e5d7b7, 7px 10px 0 #f2ead5, 0 17px 30px #6c502b0b; }
.story-cover { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 23px; align-items: center; padding-bottom: 23px; margin-bottom: 20px; border-bottom: 1px dashed #decba4; }
.story-cover h2 { font-size: clamp(30px, 3vw, 43px); color: var(--orange); }
.story-cover > div > p:last-child { margin: 12px 0 0; font-size: 13px; color: var(--muted); }
.story-source-art { margin: 0; min-width: 0; padding: 9px; background: #f2e9cf; border: 1px solid #dfcea3; border-radius: 10px; transform: rotate(2deg); }
.story-source-art img { width: 100%; height: auto; aspect-ratio: 1.4; object-fit: contain; }
.story-source-art figcaption { margin-top: 6px; text-align: center; font-size: 9px; color: #756244; letter-spacing: .04em; }
.story-reading { font-size: 16px; line-height: 1.9; font-weight: 600; overflow-wrap: anywhere; }
.story-reading p { margin-bottom: 16px; }
.story-reading p:first-child::first-letter { float: left; padding: 3px 8px 0 0; color: var(--green); font: 800 47px/.9 var(--font-play); }
.reading-helper { display: flex; align-items: flex-start; gap: 13px; padding: 15px; background: #f1f3e3; border-radius: 15px; margin: 23px 0 21px; }
.reading-helper .note-icon { width: 33px; height: 33px; flex-basis: 33px; border-radius: 12px; }
.reading-helper .icon { width: 18px; height: 18px; }
.reading-helper p { font-size: 12px; line-height: 1.7; color: #596447; margin: 0; }
.reading-helper strong { display: block; }
.story-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.story-actions .btn { flex: 1; font-size: 17px; padding: 11px 13px; }
.source-note { margin: 20px 0 0 !important; font-size: 10px; line-height: 1.65; color: #7b694d; overflow-wrap: anywhere; }
.story-sidebar { display: flex; flex-direction: column; gap: 24px; }
.people-panel { padding: 25px 21px 18px; border: 1.5px solid #d2dcb5; border-radius: 25px; background: #f8faef; box-shadow: 0 5px 0 #cfd8b42d; }
.people-panel h2 { margin-bottom: 16px; font-size: 29px; color: var(--green-deep); }
.people-panel > p:not(.eyebrow) { font-size: 13px; color: var(--muted); }
.character-list { display: grid; gap: 8px; }
.character-row { display: grid; align-items: center; grid-template-columns: 48px minmax(0, 1fr) 18px; gap: 12px; width: 100%; padding: 8px 9px; min-height: 71px; border: 1px solid #dce1c8 !important; border-radius: 15px; background: #fffdf4; text-align: left; transition: transform 160ms, background 160ms; }
.character-row:hover { background: #eaf1d8; transform: translateX(3px); }
.character-row:active { transform: scale(.98); }
.character-portrait { display: grid; place-items: center; height: 51px; background: #e6ebd2; color: #7b895d; border-radius: 13px; font: 800 27px var(--font-play); overflow: hidden; }
.character-portrait img { width: 100%; height: 100%; object-fit: contain; }
.character-row strong { display: block; font: 800 21px/1.2 var(--font-play); }
.character-row small { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; }
.character-row > .icon { width: 18px; height: 18px; flex-basis: 18px; color: var(--green); }
.aksara-names { display: flex; flex-wrap: wrap; gap: 8px; }
.aksara-names > span { display: grid; place-items: center; min-height: 41px; min-width: 41px; padding: 4px 10px; font: 700 20px var(--font-play); color: #7e5524; background: #fff2cd; border: 1px solid #ead7a5; border-radius: 10px; }
.quiz-callout { position: relative; display: flex; flex-direction: column; align-items: center; padding: 13px 23px 25px; background: #f9edce; border: 1.5px solid #e3cd9d; border-radius: 25px; text-align: center; }
.quiz-callout > .mascot { width: 135px; height: 137px; margin: -3px 0 4px; }
.quiz-callout h2 { font-size: 28px; }
.quiz-callout .eyebrow { font-size: 9px; justify-content: center; }
.quiz-callout p:not(.eyebrow) { font-size: 13px; color: var(--muted); margin: 10px 0 17px; }
.quiz-callout .btn { width: 100%; font-size: 18px; padding-inline: 12px; }
/* KOLEKSI: a personal journal, truthful numbers and earned stamps only. */
.collection-welcome { position: relative; display: grid; grid-template-columns: 115px minmax(0, 1fr) minmax(0, 1.1fr) 170px; align-items: center; gap: 22px; padding: 24px 28px; background: #fff2cd; border: 1.5px solid #e2cc95; border-radius: 30px; box-shadow: var(--shadow); }
.collection-avatar { width: 112px; height: 112px; padding: 9px 3px 0; background: #e5b766; border: 5px solid #fffdf3; border-radius: 50%; overflow: hidden; }
.collection-greeting .eyebrow { font-size: 9px; margin-bottom: 4px !important; }
.collection-greeting h2 { font-size: clamp(29px, 3.1vw, 44px); overflow-wrap: anywhere; }
.collection-greeting .text-link { font-size: 11px; }
.collection-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; margin: 0; }
.collection-stats > div { display: flex; flex-direction: column; justify-content: center; min-height: 112px; padding: 15px; border: 1px solid #e6d4a7; background: #fffaf0b3; border-radius: 19px; }
.collection-stats dt { display: flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 900; }
.collection-stats dt .icon { width: 18px; height: 18px; flex-basis: 18px; color: #986322; }
.collection-stats dd { margin: 5px 0 0; line-height: 1.1; }
.collection-stats dd strong { font: 800 44px/1 var(--font-play); }
.collection-stats dd span { color: #726042; font-size: 10px; }
.collection-cheer { align-self: stretch; position: relative; text-align: center; }
.collection-cheer .mascot { width: 147px; height: 131px; margin: -24px auto 0; }
.collection-cheer p { margin: 2px 0 0; color: var(--green); font: 700 14px/1.2 var(--font-play); }
.collection-empty { margin-top: 29px; background: #f4f6e8; padding-block: 21px; }
.collection-empty .btn { flex: 0 0 auto; margin-left: auto; font-size: 18px; }
.collection-layout { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 26px; margin-top: 31px; align-items: start; }
.collection-progress, .stamp-album { padding: 26px; }
.collection-layout .section-heading h2 { font-size: 27px; }
.collection-layout .eyebrow { font-size: 9px; }
.collection-progress-row { display: grid; align-items: center; grid-template-columns: 98px minmax(0, 1fr) 44px; gap: 17px; padding: 15px 0; border-bottom: 1px dashed #e3d7b8; }
.collection-progress-row:last-child { border: 0; padding-bottom: 0; }
.collection-thumb { display: flex; align-items: center; justify-content: center; height: 83px; padding: 7px; background: var(--theme-soft); border: 1px solid var(--theme-line); border-radius: 13px; transform: rotate(-3deg); }
.collection-thumb img { width: 100%; height: 100%; object-fit: contain; border-radius: 4px; }
.collection-row-copy h3 { margin: 0 0 9px; color: var(--theme-ink); font-size: 24px; }
.collection-row-copy .progress-caption { font-size: 10px; }
.collection-progress-row .icon-btn { width: 44px; min-height: 44px; background: var(--theme-soft); border-color: var(--theme-line) !important; color: var(--theme-ink); border-radius: 14px; padding: 9px; }
.stamp-count { flex: 0 0 auto; padding: 4px 10px; border-radius: 10px; background: #f7eccd; color: #876128; font: 800 17px var(--font-play); }
.badge-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; }
.collection-badge { position: relative; padding: 17px 8px 14px; border: 1px dashed #dacaab; border-radius: 17px; text-align: center; background: #faf6e9; }
.badge-medallion { position: relative; display: grid; place-items: center; width: 71px; height: 71px; margin: 0 auto 12px; color: #9b8c6c; background: #eee7d5; border: 3px double #cabc9d; border-radius: 38% 38% 44% 44%; box-shadow: inset 0 0 0 4px #fffcf06b; }
.badge-medallion > .icon { width: 32px; height: 32px; }
.collection-badge h3 { font-size: 20px; }
.collection-badge p { font-size: 10px; line-height: 1.6; max-width: 23ch; margin: 7px auto 0; color: var(--muted); }
.collection-badge[data-earned='true'] { border: 1.5px solid var(--theme-line); background: var(--theme-pale); }
.collection-badge[data-earned='true'] .badge-medallion { color: var(--theme-ink); border-color: var(--theme-line); background: var(--theme-soft); box-shadow: inset 0 0 0 4px #fffdf486, 0 4px 0 #d3c0952e; transform: rotate(-6deg); }
.badge-tick { display: grid; place-items: center; position: absolute; bottom: -3px; right: -7px; width: 24px; height: 24px; border: 2px solid #fffdf0; border-radius: 50%; background: var(--green); color: #fffdf2; }
.badge-tick .icon { width: 14px; height: 14px; flex-basis: 14px; }
.album-note { color: var(--muted); font-size: 10px; margin: 17px 0 0 !important; text-align: center; }
.local-note { display: flex; align-items: center; gap: 15px; margin-top: 28px; padding: 17px 23px; border: 1px solid #e1d6b7; border-radius: 19px; background: #f7f1e0c9; }
.local-note > .icon { color: var(--green); }
.local-note p { flex: 1; margin: 0; color: var(--muted); font-size: 11px; }
.local-note strong { color: var(--ink); }
.local-note .text-link { font-size: 11px; flex: 0 0 auto; }
/* Shared dialogs and toast. Parent app owns focus, Escape and state. */
#modal { position: fixed; max-width: min(660px, calc(100vw - 36px)); width: 100%; max-height: calc(100dvh - 48px); padding: 34px; border: 2px solid #e0ca97; border-radius: 28px; background: var(--paper); color: var(--ink); box-shadow: 0 15px 0 #5c44191a, 0 24px 90px #261a174d; overflow-y: auto; overscroll-behavior: contain; font-family: var(--font-body); }
#modal::backdrop { background: #26342088; backdrop-filter: blur(5px); }
#modal .dialog-close, #modal #dialog-close { position: sticky; float: right; top: 0; z-index: 2; display: grid; place-items: center; width: 44px; min-height: 44px; margin: -14px -14px 0 10px; border: 1px solid var(--line); border-radius: 14px; color: var(--ink); background: #fff4d7; font-size: 24px; }
#dialog-body h2 { padding-right: 22px; margin: 0 0 20px; font-size: 33px; }
#dialog-body h3 { font-size: 23px; margin: 22px 0 10px; }
#dialog-body p { color: var(--muted); font-size: 14px; }
#dialog-body :where(.actions, .dialog-actions, .settings-actions) { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 20px; }
#dialog-body :where(.setting-row, .settings-row) { display: flex; flex-wrap: wrap; align-items: center; gap: 11px; margin-block: 16px; padding-bottom: 16px; border-bottom: 1px dashed var(--line); }
#dialog-body :where(.setting-row, .settings-row) > :is(h3, p) { flex: 1 1 100%; }
#dialog-body img { max-width: 100%; height: auto; border-radius: 13px; }
#dialog-body .guide-steps { padding-left: 24px; }
#dialog-body .guide-steps li { padding: 9px 0 9px 6px; }
#dialog-body .guide-steps li::marker { font: 800 22px var(--font-play); color: var(--orange); }
#toast { position: fixed; z-index: 100; left: 50%; bottom: 26px; width: max-content; max-width: min(540px, calc(100% - 32px)); padding: 14px 22px; border: 1.5px solid #b2c89c; border-radius: 18px; background: #f6ffe9; color: var(--green-deep); box-shadow: 0 6px 0 #758e5820, 0 14px 40px #2e49201a; text-align: center; font: 800 14px/1.5 var(--font-body); opacity: 0; visibility: hidden; transform: translate(-50%, 12px); transition: opacity 180ms, transform 180ms, visibility 180ms; pointer-events: none; }
#toast.show, #toast.is-visible, #toast[data-visible='true'] { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
/* Motion is a welcome, not a distraction: finite arrival and reaction only. */
@keyframes page-arrive { from { opacity: 0; transform: translateY(9px); } to { opacity: 1; transform: translateY(0); } }
@keyframes mascot-nod { 0%, 100% { transform: rotate(0) translateY(0); } 45% { transform: rotate(-4deg) translateY(-7px); } 75% { transform: rotate(3deg) translateY(-2px); } }
@keyframes mascot-greet { 0%, 100% { translate: 0 0; } 50% { translate: 0 -5px; } }
.page-enter { animation: page-arrive 300ms ease-out both; }
.hero-mascot .mascot { animation: mascot-greet 1.8s ease-in-out 2; }
.mascot.has-react, .mascot-button.has-react .mascot { animation: mascot-nod 380ms ease-out 1; }
/* Tablet: keep all three subjects, but let the layout breathe. */
@media (max-width: 1100px) {
  .site-header { gap: 12px; padding-inline: 18px; }
  .brand { font-size: 21px; }
  .desktop-nav :is(a, button) { padding-inline: 10px; font-size: 15px; }
  .desktop-nav .icon { display: none; }
  .header-tools { gap: 6px; }
  .view { width: calc(100% - 48px); }
  .welcome-hero { min-height: 460px; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); }
  .hero-copy h1 { font-size: clamp(48px, 6.3vw, 69px); }
  .hero-world { height: 370px; }
  .hero-mascot { height: 297px; }
  .hero-actions { gap: 10px; }
  .hero-actions .btn { padding-inline: 14px; font-size: 18px; min-width: 0; }
  .hero-actions .btn .icon:last-child:not(:first-child) { display: none; }
  .topic-mini { grid-template-columns: 70px minmax(0, 1fr); gap: 10px; padding: 12px; }
  .topic-mini-art { height: 82px; }
  .topic-mini .round-arrow { display: none; }
  .topic-mini h3 { font-size: 22px; }
  .topic-card-grid { gap: 17px; }
  .topic-card { padding: 9px; border-radius: 24px; }
  .topic-card-body { padding: 19px 6px 7px; }
  .topic-title-row h2 { font-size: 26px; }
  .topic-description { font-size: 12px; }
  .topic-card-body .btn { font-size: 18px; padding-inline: 8px; }
  .storybook-callout { gap: 18px; grid-template-columns: 105px minmax(0, 1fr) auto; padding-right: 23px; }
  .story-layout { gap: 20px; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); }
  .story-book { padding: 25px 23px; }
  .story-cover { gap: 15px; }
  .story-cover h2 { font-size: 32px; }
  .story-cover .eyebrow { font-size: 9px; }
  .people-panel { padding: 21px 15px 16px; }
  .people-panel h2 { font-size: 25px; }
  .character-row { gap: 9px; padding-inline: 7px; }
  .character-row strong { font-size: 19px; }
  .quiz-callout { padding-inline: 17px; }
  .collection-welcome { grid-template-columns: 95px minmax(0, 1fr) minmax(0, 1.2fr); gap: 18px; }
  .collection-avatar { width: 93px; height: 93px; }
  .collection-cheer { display: none; }
  .collection-progress, .stamp-album { padding: 22px; }
  .collection-layout { gap: 20px; }
  .collection-progress-row { grid-template-columns: 74px minmax(0, 1fr) 44px; gap: 12px; }
  .collection-thumb { height: 72px; }
  .collection-row-copy h3 { font-size: 22px; }
}
@media (max-width: 850px) {
  .site-header { width: calc(100% - 36px); margin-top: 14px; min-height: 74px; padding: 10px 15px; border-radius: 25px; }
  .brand { font-size: 22px; }
  .desktop-nav { display: none; }
  .header-tools { margin-left: auto; }
  .playful-app { padding-bottom: calc(92px + env(safe-area-inset-bottom, 0px)); }
  .mobile-nav { position: fixed; z-index: 50; display: flex; align-items: stretch; justify-content: space-around; gap: 4px; left: max(16px, env(safe-area-inset-left, 0px)); right: max(16px, env(safe-area-inset-right, 0px)); bottom: max(12px, env(safe-area-inset-bottom, 0px)); min-height: 72px; padding: 7px; border: 2px solid #fffdf4; border-radius: 24px; background: #fffaf1f7; box-shadow: 0 5px 0 #ac955e2e, 0 0 0 1px #ddcda6, 0 10px 40px #57441d26; backdrop-filter: blur(12px); }
  .mobile-nav :is(a, button) { flex: 1 1 0; min-width: 0; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 4px; min-height: 54px; padding: 5px 3px; border-radius: 17px; background: transparent; color: #7d6d54; font: 800 11px/1.1 var(--font-body); text-align: center; }
  .mobile-nav :is([aria-current='page'], .active, .is-active) { background: #ffdfa1; color: #754318; }
  .mobile-nav .icon { width: 23px; height: 23px; flex-basis: 23px; }
  .mobile-nav :is(a, button):active { background: #f9e8c6; }
  #toast { bottom: calc(100px + env(safe-area-inset-bottom, 0px)); }
  .welcome-hero { min-height: 430px; padding-top: 29px; gap: 8px; }
  .hero-copy h1 { font-size: clamp(43px, 6.3vw, 57px); }
  .hero-subtitle { margin-top: 19px !important; font-size: 18px; }
  .hero-description { font-size: 13px; }
  .hero-world { height: 340px; }
  .hero-mascot { height: 270px; bottom: 28px; }
  .mascot-bubble { font-size: 22px; padding: 11px 14px; right: 5px; }
  .mascot-bubble span { font-size: 10px; }
  .hero-orbit { inset: 70px 6px 17px; }
  .spark-one { top: 32px; left: 3%; }
  .spark-two { right: 1px; top: 133px; }
  .hero-actions { margin-top: 19px; gap: 10px; }
  .hero-actions .btn { min-height: 49px; font-size: 17px; gap: 7px; padding-inline: 12px; }
  .hero-actions .icon { width: 18px; height: 18px; flex-basis: 18px; }
  .hero-copy .gentle-note { font-size: 10px; }
  .topic-mini-grid { gap: 12px; }
  .topic-mini { grid-template-columns: 1fr; text-align: center; padding: 13px; }
  .topic-mini-art { width: 100%; height: 110px; transform: rotate(-2deg); }
  .topic-mini h3 { font-size: 25px; }
  .storybook-callout { grid-template-columns: 96px minmax(0, 1fr); gap: 9px 18px; padding: 20px 23px; }
  .storybook-callout .btn { grid-column: 2; justify-self: start; font-size: 17px; }
  .callout-mascot { grid-row: span 2; height: 150px; margin: 0; }
  .storybook-callout h2 { font-size: 30px; }
  .catalog-intro { padding-inline: 70px; min-height: 185px; }
  .catalog-intro h1 { font-size: 42px; }
  .intro-mascot { width: 94px; height: 129px; right: -8px; bottom: 2px; }
  .page-intro { padding-top: 35px; }
  .page-intro p:not(.eyebrow) { font-size: 15px; }
  .topic-card-grid { gap: 15px; }
  .topic-card-art { padding: 22px 8px 36px; aspect-ratio: 1.2; }
  .topic-type { font-size: 12px; left: 9px; }
  .topic-title-row h2 { font-size: 25px; }
  .topic-description { font-size: 12px; }
  .topic-card-body .btn { font-size: 17px; gap: 6px; }
  .topic-card-body .btn > .icon:last-child { display: none; }
  .topic-card-body .btn > .icon:first-child { margin-right: 0; }
  .discovery-note { flex-wrap: wrap; gap: 12px 17px; }
  .discovery-note > div { flex: 1 1 calc(100% - 70px); }
  .discovery-note > .text-link { margin-left: 65px; }
  .learning-path { gap: 12px; font-size: 11px; }
  .story-layout { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 17px; }
  .story-cover { grid-template-columns: 1fr; }
  .story-source-art { max-width: 290px; }
  .story-cover h2 { font-size: 35px; }
  .story-book { padding: 24px 20px; }
  .story-reading { font-size: 15px; }
  .story-actions { gap: 11px; }
  .story-actions .btn { flex: 1 1 100%; font-size: 17px; }
  .collection-welcome { padding: 21px; grid-template-columns: 83px minmax(0, 1fr); }
  .collection-avatar { width: 83px; height: 83px; }
  .collection-stats { grid-column: 1 / -1; }
  .collection-stats > div { min-height: 95px; }
  .collection-stats dd { display: flex; align-items: baseline; gap: 8px; }
  .collection-layout { grid-template-columns: 1fr; }
  .collection-progress-row { grid-template-columns: 92px minmax(0, 1fr) 46px; gap: 20px; }
  .collection-row-copy .progress-caption { font-size: 12px; }
  .collection-thumb { height: 80px; }
  .collection-empty { flex-wrap: wrap; }
  .collection-empty > div { flex: 1 1 calc(100% - 75px); }
  .collection-empty > .btn { margin-left: 68px; }
  .badge-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .local-note { flex-wrap: wrap; gap: 10px; }
  .local-note p { flex-basis: calc(100% - 45px); }
  .local-note .text-link { margin-left: 34px; }
}
/* Phones: live content stacks naturally, never shrink a desktop screenshot. */
@media (max-width: 620px) {
  body.playful-app::before { height: 950px; background-size: auto 900px; background-position: center top; background-image: linear-gradient(180deg, #fff9ec05, #fff9eceb 46%, #fff9ec 90%), linear-gradient(90deg, #fff9ec33, #fff9ece3 20%, #fff9eced 80%, #fff9ec33), url('../assets/playful/environment.webp'); }
  .view { width: calc(100% - 36px); padding-bottom: 26px; }
  .site-header { width: calc(100% - 28px); min-height: 69px; margin-top: 11px; padding: 9px 12px; border-radius: 23px; gap: 8px; }
  .brand { gap: 8px; font-size: 21px; }
  .brand > .icon, .brand-mark { width: 35px; height: 40px; flex-basis: 35px; }
  .brand small { font-size: 8px; letter-spacing: .06em; }
  .brand img { width: 36px; height: 40px; }
  .header-tools { gap: 6px; }
  .header-tools .icon-btn { width: 44px; min-height: 44px; padding: 10px; border-radius: 14px; }
  .header-tools .icon-btn .icon { width: 21px; height: 21px; flex-basis: 21px; }
  .playful-app h1 { font-size: 38px; }
  .playful-app h2 { font-size: 28px; }
  .eyebrow { font-size: 10px; }
  .section-heading { gap: 10px; align-items: flex-end; margin-bottom: 18px; }
  .section-heading h2 { font-size: 28px; }
  .section-heading > .text-link { flex-shrink: 0; font-size: 11px; max-width: 85px; justify-content: flex-end; }
  .section-heading > .text-link .icon { width: 16px; height: 16px; flex-basis: 16px; }
  .welcome-hero { display: flex; flex-direction: column; min-height: auto; padding: 29px 0 13px; gap: 0; }
  .hero-copy { text-align: center; width: 100%; }
  .hero-copy > .eyebrow { font-size: 10px; margin-bottom: 16px !important; padding: 4px 11px; }
  .hero-copy h1 { font-size: clamp(45px, 11vw, 63px); line-height: 1; }
  .hero-subtitle { font-size: 16px; max-width: 28ch; margin: 17px auto 0 !important; line-height: 1.5; }
  .hero-description { display: none; }
  .hero-actions { justify-content: center; gap: 10px; margin: 21px 0 13px; }
  .hero-actions .btn { font-size: 18px; min-height: 51px; gap: 7px; padding: 10px 15px; }
  .hero-actions .btn-primary { padding-inline: 19px; }
  .hero-copy .gentle-note { justify-content: center; margin: 0; font-size: 10px; }
  .hero-world { width: min(100%, 380px); height: 267px; align-self: center; margin-top: 22px; }
  .hero-orbit { inset: 47px 11px 12px; border-radius: 47% 53% 41% 59%; }
  .hero-mascot { height: 233px; bottom: 22px; left: 5%; width: 90%; }
  .hero-mascot .mascot-boy { width: 61%; left: -1%; }
  .hero-mascot .mascot-girl { width: 52%; right: 1%; }
  .hero-ground { height: 34px; bottom: 12px; left: 7%; width: 86%; }
  .hero-art-note { display: none; }
  .mascot-bubble { top: -5px; right: 3px; font-size: 20px; padding: 9px 13px; border-radius: 19px 19px 19px 4px; transform: rotate(4deg); }
  .mascot-bubble span { font-size: 9px; }
  .story-spark { width: 32px; height: 32px; border-radius: 11px; }
  .story-spark .icon { width: 22px; height: 22px; }
  .spark-one { top: 19px; left: 9%; }
  .spark-two { top: 100px; right: 6px; }
  .home-adventures { padding-top: 23px; }
  .home-adventures .eyebrow { font-size: 8px; letter-spacing: .12em; }
  .topic-mini-grid { grid-template-columns: 1fr; gap: 13px; }
  .topic-mini { grid-template-columns: 94px minmax(0, 1fr) 26px; gap: 14px; text-align: left; min-height: 116px; padding: 12px 14px; border-radius: 22px; }
  .topic-mini-art { height: 88px; transform: rotate(-4deg); }
  .topic-mini h3 { font-size: 28px; margin-block: 5px; }
  .topic-mini-copy > span:last-child { font-size: 11px; }
  .topic-kicker { font-size: 8px; }
  .topic-mini .round-arrow { display: grid; width: 28px; height: 36px; border-radius: 11px; background: var(--theme-soft); }
  .storybook-callout { grid-template-columns: 82px minmax(0, 1fr); gap: 12px 14px; margin-top: 29px; padding: 23px 18px; border-radius: 23px 35px 23px 23px; }
  .storybook-callout .eyebrow { font-size: 8px; letter-spacing: .09em; margin-bottom: 7px !important; }
  .storybook-callout h2 { font-size: 27px; }
  .storybook-callout p:not(.eyebrow) { font-size: 12px; }
  .storybook-callout .btn { font-size: 16px; min-height: 47px; padding: 10px 14px; }
  .callout-mascot { height: 142px; }
  .page-footnote { font-size: 10px; padding-top: 25px; }
  .page-intro { padding: 31px 0 25px; }
  .page-intro .eyebrow { font-size: 9px; margin-bottom: 10px !important; }
  .page-intro h1 { font-size: 39px; }
  .page-intro p:not(.eyebrow) { font-size: 14px; line-height: 1.6; margin-top: 11px; }
  .catalog-intro { padding-right: 0; padding-left: 0; min-height: auto; }
  .catalog-intro > div { width: 100%; }
  .intro-mascot { display: none; }
  .catalog-toolbar { flex-wrap: wrap; gap: 6px; margin: 0 0 20px; }
  .filter-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: 100%; padding: 5px; gap: 3px; border-radius: 18px; }
  .filter-btn { min-width: 0; gap: 6px; font-size: 17px !important; padding: 9px 7px; border-radius: 12px; }
  .filter-btn .icon { width: 17px; height: 17px; flex-basis: 17px; }
  .catalog-toolbar > .text-link { margin-left: auto; font-size: 11px; min-height: 44px; }
  .topic-card-grid { grid-template-columns: 1fr; gap: 23px; }
  .topic-card { padding: 11px; border-radius: 26px; }
  .topic-card-art { aspect-ratio: 1.7; padding: 15px 23px 37px; border-radius: 17px; }
  .topic-card-art > img { box-shadow: none; }
  .adventure-number { width: 34px; height: 35px; }
  .topic-type { bottom: 10px; left: 14px; font-size: 14px; }
  .topic-card-body { padding: 19px 10px 10px; }
  .topic-title-row h2 { font-size: 33px; }
  .topic-description { font-size: 13px; margin: 8px 0 17px !important; }
  .progress-caption { font-size: 12px; }
  .topic-card-body .btn { font-size: 20px; min-height: 52px; margin-top: 19px; }
  .topic-card-body .btn > .icon:first-child { margin-right: auto; }
  .topic-card-body .btn > .icon:last-child { display: inline-block; }
  .discovery-note { margin-top: 30px; padding: 20px 18px; gap: 12px; }
  .discovery-note .note-icon { width: 39px; height: 39px; flex-basis: 39px; border-radius: 14px; }
  .discovery-note h2, .collection-empty h2 { font-size: 25px; }
  .discovery-note p, .collection-empty p { font-size: 12px; }
  .discovery-note > div { flex: 1 1 calc(100% - 54px); }
  .discovery-note > .text-link { margin-left: 51px; }
  .learning-path { align-items: flex-start; gap: 12px; margin-top: 26px; }
  .learning-path > span:nth-child(even) { display: none; }
  .learning-path > span { flex: 1; flex-direction: column; gap: 3px; text-align: center; font-size: 10px; line-height: 1.6; }
  .learning-path b { font-size: 24px; }
  .story-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-bottom: 23px; }
  .story-tab { min-height: 61px; padding: 9px 4px; font-size: 15px; gap: 5px; border-radius: 14px; text-align: center; flex-direction: column; }
  .story-tab .icon { width: 19px; height: 19px; }
  .story-layout { grid-template-columns: 1fr; gap: 28px; }
  .story-book { padding: 25px 20px 24px; border-left-width: 6px; border-radius: 10px 23px 23px 10px; box-shadow: 3px 5px 0 #e5d7b7, 4px 8px 0 #f2ead5; }
  .story-cover { grid-template-columns: 1fr; gap: 19px; padding-bottom: 20px; margin-bottom: 20px; }
  .story-cover h2 { font-size: 41px; }
  .story-cover > div > p:last-child { font-size: 13px; margin-top: 8px; }
  .story-source-art { width: 100%; max-width: 100%; padding: 9px; transform: rotate(1deg); }
  .story-source-art img { max-height: 230px; }
  .story-source-art figcaption { font-size: 9px; }
  .story-reading { font-size: 15px; line-height: 1.95; }
  .story-actions .btn { min-height: 51px; font-size: 18px; }
  .reading-helper { gap: 10px; padding: 13px; }
  .reading-helper p { font-size: 11px; }
  .source-note { font-size: 9px; }
  .people-panel { padding: 23px 19px 18px; }
  .people-panel h2 { font-size: 30px; }
  .character-row { grid-template-columns: 52px minmax(0, 1fr) 20px; min-height: 77px; gap: 14px; padding: 9px 13px; }
  .character-row strong { font-size: 23px; }
  .character-row small { font-size: 11px; }
  .character-portrait { height: 53px; }
  .quiz-callout { display: grid; grid-template-columns: 87px minmax(0, 1fr); align-items: center; gap: 12px; padding: 24px 17px; text-align: left; }
  .quiz-callout > .mascot { width: 100%; height: 155px; margin: 0; }
  .quiz-callout .eyebrow { justify-content: flex-start; font-size: 8px; letter-spacing: .08em; }
  .quiz-callout h2 { font-size: 28px; }
  .quiz-callout p:not(.eyebrow) { font-size: 11px; }
  .quiz-callout .btn { font-size: 16px; padding-inline: 9px; min-height: 47px; gap: 6px; }
  .quiz-callout .btn .icon { width: 18px; height: 18px; flex-basis: 18px; }
  .collection-welcome { grid-template-columns: 80px minmax(0, 1fr); gap: 16px; padding: 21px 18px; border-radius: 24px; }
  .collection-avatar { width: 79px; height: 79px; border-width: 4px; padding-top: 6px; }
  .collection-greeting .eyebrow { font-size: 7px; letter-spacing: .11em; }
  .collection-greeting h2 { font-size: 34px; }
  .collection-greeting .text-link { font-size: 10px; }
  .collection-stats { gap: 10px; }
  .collection-stats > div { min-height: 94px; padding: 13px 11px; border-radius: 16px; }
  .collection-stats dt { font-size: 10px; gap: 6px; }
  .collection-stats dd { gap: 6px; }
  .collection-stats dd strong { font-size: 40px; }
  .collection-stats dd span { font-size: 9px; }
  .collection-layout { gap: 24px; margin-top: 25px; }
  .collection-progress, .stamp-album { padding: 23px 18px; border-radius: 24px; }
  .collection-layout .section-heading h2 { font-size: 28px; }
  .collection-layout .eyebrow { font-size: 8px; }
  .collection-progress-row { grid-template-columns: 72px minmax(0, 1fr) 44px; gap: 11px; padding-block: 17px; }
  .collection-thumb { height: 72px; padding: 5px; }
  .collection-row-copy h3 { font-size: 23px; margin-bottom: 7px; }
  .collection-row-copy .progress-caption { font-size: 10px; gap: 4px; }
  .collection-row-copy .progress-track { height: 8px; }
  .collection-empty { padding: 20px 18px; gap: 12px; margin-top: 25px; }
  .collection-empty .note-icon { width: 37px; height: 37px; flex-basis: 37px; border-radius: 12px; }
  .collection-empty > div { flex-basis: calc(100% - 54px); }
  .collection-empty > .btn { margin-left: 49px; font-size: 17px; min-height: 48px; }
  .badge-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .collection-badge { padding: 17px 7px 14px; }
  .collection-badge h3 { font-size: 21px; }
  .collection-badge p { font-size: 10px; }
  .badge-medallion { width: 67px; height: 67px; }
  .local-note { padding: 17px; gap: 12px; }
  .local-note p { font-size: 10px; }
  .local-note strong { display: block; }
  .local-note > .text-link { margin-left: 36px; }
  #modal { max-width: calc(100vw - 28px); max-height: calc(100dvh - 32px); padding: 29px 21px; border-radius: 24px; }
  #dialog-body h2 { font-size: 30px; margin-bottom: 17px; }
  #dialog-body .btn { font-size: 18px; padding: 11px 17px; }
  #toast { font-size: 12px; padding: 12px 17px; }
}
@media (max-width: 375px) {
  .brand { font-size: 19px; }
  .brand-mark { width: 31px; flex-basis: 31px; }
  .header-tools { gap: 5px; }
  .hero-actions .btn { font-size: 17px; gap: 6px; padding-inline: 12px; }
  .hero-actions .btn-primary { padding-inline: 17px; }
  .topic-mini { grid-template-columns: 83px minmax(0, 1fr) 25px; gap: 11px; padding: 11px; }
  .topic-mini h3 { font-size: 26px; }
  .topic-mini-copy > span:last-child { font-size: 10px; }
  .story-tab { font-size: 14px; }
  .collection-progress-row { grid-template-columns: 59px minmax(0, 1fr) 44px; gap: 9px; }
  .collection-thumb { height: 64px; }
  .collection-row-copy h3 { font-size: 22px; }
  .collection-row-copy .progress-caption { font-size: 9px; }
  .collection-stats dd { flex-wrap: wrap; gap: 2px 7px; }
}
body[data-motion='off'] *, body[data-motion='off'] *::before, body[data-motion='off'] *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media (forced-colors: active) {
  .btn, .icon-btn, .filter-btn, .story-tab { border: 2px solid ButtonText !important; }
  .progress-track { border: 1px solid CanvasText; }
  .progress-track > span { background: Highlight; }
  .collection-badge[data-earned='true'] { border: 2px solid Highlight; }
}
