/* Крупное чтение для интерактивной доски. Подключать после style.css.
   JS меняет только --reading-scale: 1, 1.15 или 1.3.
   Размеры настоящие: без масштабирования страницы через transform/zoom. */
:root {
  --reading-scale: 1;
  --read-body: calc(clamp(20px, 1.4vw, 28px) * var(--reading-scale));
  --read-game: calc(clamp(24px, 1.8vw, 34px) * var(--reading-scale));
  --read-ui: calc(clamp(20px, 1.45vw, 28px) * var(--reading-scale));
  --read-meta: calc(clamp(18px, 1.25vw, 24px) * var(--reading-scale));
  --read-title: calc(clamp(36px, 2.8vw, 52px) * var(--reading-scale));
  --read-question: calc(clamp(27px, 2vw, 38px) * var(--reading-scale));
  --read-gap: clamp(16px, 1.4vw, 30px);
  --read-page-width: 2200px;
}

@media screen {
  body { font-size: var(--read-body); line-height: 1.55; }
  button, input, textarea { line-height: 1.4; }
  button, a, input, textarea { touch-action: manipulation; }
  p, li, h1, h2, h3, button, label, small { overflow-wrap: break-word; }
  .hero-copy, .hero-art, .section-heading > div, .location-copy,
  .teacher-strip > div, .story-scene > div, .activity-content,
  .workshop > div, .guide-box, .card-form label { min-width: 0; }
  svg.icon { width: 28px; height: 28px; flex-shrink: 0; }

  .header, .hero, .journey, footer { max-width: var(--read-page-width); }
  .header {
    padding: 24px clamp(24px, 3.4vw, 76px);
    gap: 22px;
    flex-wrap: wrap;
  }
  .brand { font-size: var(--read-ui); gap: 14px; flex-shrink: 0; }
  .brand-icon { width: 58px; height: 58px; border-radius: 19px; font-size: 38px; }
  .header nav { flex-wrap: wrap; justify-content: flex-end; gap: 12px; min-width: 0; }
  .tool, .tool.icon-only {
    min-height: 56px;
    min-width: 56px;
    padding: 12px 18px;
    font-size: var(--read-meta);
    line-height: 1.3;
  }
  .tool.icon-only { padding: 13px; }
  .tool .tool-label { display: inline; }
  .tool svg.icon { height: 28px; width: 28px; }
  #voiceBtn { border-color: #94b5a5; background: #edf4e8; }
  #voiceBtn[aria-pressed="true"] { background: #d4e7cb; border-color: #658e6c; }

  .reading-controls {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 7px;
    max-width: 100%;
    padding: 4px;
    border: 1px solid #c8d6bc;
    border-radius: 32px;
    background: #fffdf6;
  }
  .reading-controls button, #textSmaller, #textLarger {
    min-height: 56px;
    min-width: 56px;
    padding: 9px 12px;
    border-radius: 26px;
    border: 1px solid #d4dfc9;
    background: #edf2e4;
    font-size: calc(24px * var(--reading-scale));
    font-weight: 900;
    line-height: 1.2;
  }
  .reading-controls button:disabled { color: #63715d; background: #f1f1e8; opacity: .65; }
  #textSizeLabel {
    min-width: 4.2ch;
    padding: 0 5px;
    color: #345743;
    font-size: var(--read-meta);
    font-weight: 900;
    text-align: center;
    white-space: nowrap;
  }

  .hero {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
    gap: clamp(20px, 2vw, 44px);
    padding: 62px clamp(24px, 3.4vw, 76px) 54px;
    min-height: 0;
  }
  .eyebrow { font-size: var(--read-meta); letter-spacing: .09em; line-height: 1.45; }
  .eyebrow i { width: 10px; height: 10px; flex-shrink: 0; }
  .hero h1 {
    font-size: calc(clamp(58px, 5.2vw, 100px) * var(--reading-scale));
    line-height: 1.08;
    letter-spacing: -.045em;
    margin: 25px 0;
  }
  .hero h1 em { letter-spacing: -.045em; }
  .title-star { left: auto; right: 5%; top: 0; font-size: .56em; }
  .hero-lead { font-size: calc(clamp(28px, 2vw, 38px) * var(--reading-scale)); line-height: 1.45; }
  .hero-desc { font-size: var(--read-body); line-height: 1.65; max-width: 38em; color: #566b52; }
  .hero-actions { gap: 22px; }
  .primary, .hero-actions .primary, .activity-footer .primary,
  .journey-bottom .primary, .final-actions .primary,
  .success-scene .primary, .story-scene .primary, .reset-buttons .primary {
    min-height: 64px;
    padding: 17px 28px;
    gap: 18px;
    font-size: var(--read-ui);
    line-height: 1.4;
    text-align: center;
    white-space: normal;
  }
  .primary span { font-size: 1.25em; flex-shrink: 0; }
  .text-button, .hero-actions .text-button, footer .text-button {
    min-height: 56px;
    padding: 12px 8px;
    gap: 12px;
    font-size: var(--read-meta);
    line-height: 1.4;
    white-space: normal;
  }
  .play-circle { width: 40px; height: 40px; flex-shrink: 0; }
  .outline, .teacher-actions .outline, .final-actions .outline {
    min-height: 60px;
    padding: 14px 24px;
    gap: 16px;
    font-size: var(--read-meta);
    line-height: 1.4;
    justify-content: center;
    white-space: normal;
  }
  .hero-details { flex-wrap: wrap; font-size: var(--read-meta); gap: 14px 25px; margin-top: 30px; color: #5f7258; }
  .hero-details i svg { width: 23px; height: 23px; }
  .hero-details > span:last-child { padding: 6px 10px; }
  .hero-art { min-height: clamp(540px, 36vw, 760px); }
  .fox-hero { height: clamp(400px, 29vw, 590px); bottom: 8px; }
  .hero-bubble { font-size: var(--read-meta); padding: 20px 25px; left: 28%; top: 18px; }
  .adventure-tag { font-size: var(--read-meta); padding: 15px 19px; max-width: 90%; }
  .adventure-tag span { font-size: 1.3em; }
  .float-heart { min-width: 56px; min-height: 56px; font-size: 46px; }

  .journey { padding: 50px clamp(24px, 3.4vw, 76px) 42px; }
  h2 { font-size: var(--read-title); line-height: 1.25; letter-spacing: -.025em; }
  .section-heading { gap: 30px; margin-bottom: 34px; }
  .section-heading p { font-size: var(--read-body); line-height: 1.55; color: #586d50; }
  .progress-pill { font-size: var(--read-meta); padding: 17px 25px; gap: 18px; border-radius: 28px; }
  .progress-pill > span { font-size: calc(clamp(48px, 4vw, 70px) * var(--reading-scale)); }
  .mini-sparks { gap: 6px; margin-top: 8px; }
  .mini-sparks span { font-size: calc(24px * var(--reading-scale)); }
  .journey-layout { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 30px; }
  .map-board { min-width: 0; aspect-ratio: 14 / 9; height: auto; min-height: 0; align-self: center; }
  .map-image { object-fit: contain; }
  .map-node { width: 72px; height: 72px; font-size: calc(28px * var(--reading-scale)); border-width: 4px; }
  .map-node::after {
    top: 65px;
    max-width: min(270px, 30vw);
    padding: 7px 12px;
    border-radius: 16px;
    font-size: var(--read-meta);
    line-height: 1.25;
    text-align: center;
    white-space: normal;
    width: max-content;
  }
  .beacon-button { min-width: 80px; min-height: 70px; left: 44%; top: 36%; padding: 0; }
  .beacon-button > span { font-size: 54px; }
  .beacon-button b { font-size: var(--read-meta); padding: 6px 12px; }
  .map-caption { font-size: var(--read-meta); max-width: 90%; padding: 7px 14px; white-space: normal; text-align: center; }
  .journey-list { gap: 14px; }
  .location-card { min-height: 118px; padding: 19px 21px; gap: 19px; border-radius: 22px; }
  .location-icon { width: 64px; height: 64px; min-width: 64px; border-radius: 20px; }
  .location-icon svg { width: 37px; height: 37px; }
  .location-copy strong { font-size: var(--read-ui); line-height: 1.35; }
  .location-copy small { font-size: var(--read-meta); line-height: 1.45; margin-top: 6px; color: #607252; }
  .location-num { font-size: var(--read-meta); white-space: nowrap; }
  .location-card.completed .location-num { font-size: 30px; }
  .journey-bottom { gap: 25px; margin-top: 32px; }
  .journey-bottom p { font-size: var(--read-body); max-width: 67%; line-height: 1.55; color: #5c7350; }
  .journey-bottom p > span { font-size: 1.4em; }
  .teacher-strip {
    max-width: min(calc(100% - 80px), 2048px);
    margin: 42px auto 0;
    padding: 30px;
    gap: 24px;
    flex-wrap: wrap;
  }
  .strip-icon { height: 62px; width: 62px; min-width: 62px; border-radius: 20px; }
  .strip-icon svg { height: 34px; width: 34px; }
  .teacher-strip h3 { font-size: var(--read-ui); line-height: 1.4; }
  .teacher-strip p { font-size: var(--read-meta); line-height: 1.55; color: #5e7351; }
  .teacher-strip .outline { font-size: var(--read-meta); margin-left: auto; white-space: normal; }
  footer { padding: 38px clamp(24px, 3.4vw, 76px); gap: 25px; flex-wrap: wrap; font-size: var(--read-meta); }
  footer p { min-width: 180px; }
  footer .text-button { color: #5f7354; }

  /* Полноразмерная игровая сцена: прокручивается сама модалка. */
  .overlay { padding: 16px; align-items: center; }
  .modal, .modal.small {
    width: min(96vw, 1800px);
    max-width: none;
    min-width: 0;
    max-height: calc(100dvh - 32px);
    padding: clamp(28px, 2.8vw, 56px);
    border-radius: 30px;
    overflow: auto;
    overscroll-behavior: contain;
    scrollbar-width: auto;
    scrollbar-gutter: stable;
    font-size: var(--read-game);
    line-height: 1.55;
    scroll-padding-block: 30px;
  }
  .close-modal {
    width: 58px;
    height: 58px;
    min-width: 58px;
    min-height: 58px;
    top: 18px;
    right: 18px;
    font-size: 36px;
    line-height: 1;
  }
  .modal h2 { font-size: var(--read-title); line-height: 1.25; padding-right: 76px; margin: 15px 0; }
  .modal-sub { font-size: var(--read-game); color: #516b4b; line-height: 1.55; margin: 15px 0 26px; }
  .modal-top { padding-right: 76px; gap: 16px; align-items: center; }
  .modal-top .location-icon { height: 56px; width: 56px; min-width: 56px; border-radius: 16px; }
  .modal-top .location-icon svg { height: 31px; width: 31px; }
  .modal-top .eyebrow, .modal .eyebrow { font-size: var(--read-meta); letter-spacing: .06em; }

  .narration-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 18px;
    margin: 22px 0 28px;
    padding: 17px 20px;
    border: 1px solid #bccfb1;
    border-radius: 22px;
    background: #edf3e4;
    color: #345743;
  }
  .narration-play, .narration-stop {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 60px;
    min-width: 60px;
    max-width: 100%;
    padding: 13px 22px;
    border: 1px solid #94b19b;
    border-radius: 28px;
    font-size: var(--read-ui);
    font-weight: 900;
    line-height: 1.35;
    text-align: center;
  }
  .narration-play { background: #285f4d; color: #fffdf3; border-color: #285f4d; }
  .narration-stop { background: #fffdf3; color: #315640; }
  .narration-play:disabled, .narration-stop:disabled { opacity: .55; }
  .narration-status { flex: 1 1 280px; min-width: 0; font-size: var(--read-meta); line-height: 1.5; overflow-wrap: anywhere; }
  .narration-toolbar > .reading-controls { flex: 0 0 auto; margin-inline-start: auto; gap: 6px; }
  .narration-toolbar .modal-text-smaller,
  .narration-toolbar .modal-text-larger { min-height: 56px; min-width: 56px; }

  .activity-layout { grid-template-columns: clamp(170px, 13vw, 260px) minmax(0, 1fr); gap: var(--read-gap); }
  .guide-character { padding-top: 12px; }
  .guide-character img { height: clamp(220px, 19vw, 340px); }
  .guide-character p { font-size: var(--read-meta); line-height: 1.55; padding: 18px; border-radius: 20px; color: #4d6744; }
  .activity-status { flex-wrap: wrap; gap: 14px; font-size: var(--read-meta); color: #526b48; margin-bottom: 22px; line-height: 1.5; }
  .activity-status .dots { gap: 10px; }
  .dots i { width: 14px; height: 14px; }
  .word-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
  .word-card {
    min-width: 0;
    min-height: 140px;
    padding: 24px;
    gap: 16px;
    border-radius: 23px;
    font-size: var(--read-game);
    line-height: 1.45;
  }
  .word-card .tiny-flower { font-size: calc(40px * var(--reading-scale)); flex-shrink: 0; }
  .word-card > span:last-child { min-width: 0; }
  .feedback {
    min-height: 78px;
    padding: 20px 25px;
    margin: 25px 0;
    border-radius: 20px;
    font-size: calc(clamp(22px, 1.6vw, 30px) * var(--reading-scale));
    color: #3e5e36;
    line-height: 1.55;
  }
  .activity-footer { flex-wrap: wrap; gap: 18px; margin-top: 26px; }
  .activity-footer small { font-size: var(--read-meta); line-height: 1.5; color: #576e4a; }
  .scene-card { padding: 27px 30px; margin-bottom: 24px; border-radius: 24px; }
  .scene-card .scene-symbol { font-size: calc(52px * var(--reading-scale)); line-height: 1.1; margin-bottom: 12px; }
  .scene-card h3 { font-size: var(--read-question); line-height: 1.45; margin: 8px 0; }
  .choices { gap: 16px; }
  .choice { min-width: 0; min-height: 84px; padding: 21px 24px; gap: 18px; border-radius: 20px; font-size: var(--read-game); line-height: 1.45; overflow-wrap: anywhere; }
  .choice .choice-label { height: 44px; width: 44px; min-width: 44px; font-size: var(--read-meta); }
  .memory-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
  .memory-card { aspect-ratio: auto; min-height: clamp(130px, 12vw, 215px); border-radius: 23px; font-size: 52px; }
  .memory-card svg { width: clamp(64px, 6vw, 108px); height: clamp(64px, 6vw, 108px); }
  .memory-card .card-back { font-size: calc(48px * var(--reading-scale)); }
  .music-pads { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; margin: 30px 0; }
  .music-pad { min-height: clamp(180px, 15vw, 260px); padding: 22px 12px; border-radius: 28px; font-size: var(--read-game); gap: 24px; }
  .music-pad .note-shape { font-size: calc(52px * var(--reading-scale)); }
  .music-message { min-height: 48px; font-size: var(--read-game); line-height: 1.5; }
  .echo-progress { gap: 14px; margin: 22px; }
  .echo-progress span { width: 18px; height: 18px; }
  .workshop { grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 28px; }
  .bouquet-stage { min-height: 420px; border-radius: 26px; }
  #bouquetDisplay { display: grid; place-items: center; width: 100%; min-width: 0; }
  .bouquet-stage svg { width: 100%; max-width: 420px; height: 420px; }
  .bouquet-empty { font-size: var(--read-meta); line-height: 1.4; text-align: center; bottom: 18px; width: 100%; padding: 0 16px; color: #6b654e; }
  .flower-picker { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
  .flower-pick { min-height: 120px; padding: 14px 8px; border-radius: 20px; gap: 8px; font-size: var(--read-meta); line-height: 1.35; }
  .flower-pick svg { width: 60px; height: 60px; max-width: 100%; flex-shrink: 0; }
  .flower-pick span { max-width: 100%; }
  .postcard-options { margin-top: 20px; gap: 12px; }
  .postcard-option { min-width: 0; min-height: 64px; padding: 16px 18px; border-radius: 17px; font-size: var(--read-ui); line-height: 1.45; overflow-wrap: anywhere; }

  .story-scene { grid-template-columns: minmax(190px, 24%) minmax(0, 1fr); gap: 35px; }
  .story-scene > img { width: 100%; height: clamp(270px, 27vw, 450px); }
  .story-scene p { font-size: var(--read-game); color: #526a4a; line-height: 1.65; }
  .story-note { font-size: var(--read-ui) !important; padding: 20px; line-height: 1.6; }
  .success-scene { max-width: 1200px; padding: 25px 0; }
  .success-scene h2 { padding-right: 0; }
  .success-scene p { font-size: var(--read-game); line-height: 1.6; color: #536c48; }
  .success-count { font-size: var(--read-meta); line-height: 1.5; }
  .success-scene .big-spark { width: 124px; height: 124px; font-size: 82px; margin-bottom: 30px; }
  .guide-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
  .guide-box { padding: 25px; border-radius: 22px; }
  .guide-box h3 { font-size: var(--read-ui); line-height: 1.4; margin-bottom: 16px; }
  .guide-box p, .guide-box li { font-size: var(--read-game); line-height: 1.65; color: #4f6845; }
  .guide-box ol { padding-left: 1.4em; }
  .guide-box li + li { margin-top: .65em; }
  .teacher-actions { gap: 18px; margin-top: 28px; }
  .final-scene .final-heart { font-size: 100px; }
  .final-scene h2 { font-size: var(--read-title); max-width: 1100px; padding: 0; }
  .final-scene .modal-sub { font-size: var(--read-game); max-width: 1200px; }
  .final-scene > p { font-size: var(--read-game) !important; line-height: 1.55; }
  .final-gift { gap: 22px; max-width: 100%; flex-wrap: wrap; }
  .final-gift img { width: clamp(140px, 13vw, 240px); height: 240px; max-width: 30%; }
  .final-gift svg { width: clamp(210px, 20vw, 350px); height: 330px; max-width: 40%; }
  .promise-options { gap: 14px; margin: 26px 0; }
  .promise { min-height: 60px; padding: 14px 22px; font-size: var(--read-ui); line-height: 1.45; }
  #promiseFeedback { min-height: 40px !important; font-size: var(--read-meta) !important; line-height: 1.5; color: #4f6a43 !important; }
  .final-actions { gap: 20px; margin-top: 28px; }
  .card-form { gap: 22px; margin: 27px 0; }
  .card-form label { min-width: 220px; font-size: var(--read-meta); line-height: 1.45; }
  .card-form input { min-height: 64px; margin-top: 10px; padding: 15px 18px; font-size: var(--read-game); }
  .card-preview { max-width: 800px; padding: 28px; border-radius: 28px; }
  .card-preview h3 { font-size: calc(clamp(36px, 3vw, 52px) * var(--reading-scale)); line-height: 1.3; }
  .card-preview > svg { height: 350px; width: 100%; max-width: 100%; }
  .card-preview p { font-size: var(--read-game) !important; line-height: 1.55; }
  .reset-buttons { flex-wrap: wrap; gap: 20px; }
  #toast { padding: 20px 28px; font-size: var(--read-ui); line-height: 1.45; max-width: min(94%, 1300px); }
  .skip { font-size: var(--read-ui); min-height: 56px; }
}

@media screen and (max-width: 1200px) {
  .header { gap: 20px; }
  .header nav { flex: 1 1 100%; justify-content: flex-start; }
  .hero { gap: 22px; padding-top: 40px; }
  .hero-art { min-height: 510px; }
  .hero-bubble { left: 14%; max-width: 84%; }
  .hero-details { gap: 12px 18px; }
  .hero-desc .desktop { display: none; }
  .journey-layout { grid-template-columns: 1fr; }
  .map-board { width: 100%; max-width: 1400px; justify-self: center; }
  .journey-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
  .location-card:last-child { grid-column: 1 / -1; }
  .location-card { min-height: 112px; }
  .teacher-strip .outline { margin-left: 0; }
  .activity-layout { grid-template-columns: minmax(140px, 18%) minmax(0, 1fr); }
  .workshop { grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); }
  .flower-picker { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .guide-grid { grid-template-columns: 1fr; }
}

@media screen and (max-width: 900px) {
  .hero { grid-template-columns: 1fr; gap: 6px; }
  .hero h1 { max-width: 12ch; }
  .hero h1 em { display: inline; margin-left: .16em; font-size: 1em; }
  .hero-art { width: min(100%, 700px); justify-self: center; min-height: 510px; }
  .fox-hero { height: 400px; width: 52%; left: 11%; }
  .hero-bubble { left: 34%; top: 10px; }
  .hero-lead br, .hero-desc br { display: none; }
  .section-heading { align-items: flex-start; }
  .journey-bottom { flex-wrap: wrap; }
  .journey-bottom p { max-width: 100%; }
  .modal, .modal.small { padding: 30px; }
  .activity-layout { grid-template-columns: minmax(0, 1fr); }
  .guide-character { display: none; }
  .story-scene { grid-template-columns: minmax(130px, 24%) minmax(0, 1fr); gap: 25px; }
  .story-scene > img { height: 260px; }
  .teacher-strip > div:nth-child(2) { flex: 1 1 300px; }
  footer { justify-content: space-between; }
  footer p { flex: 1 1 100%; order: 3; text-align: left; margin: 0; }
}

@media screen and (max-width: 700px) {
  .header { padding: 20px; }
  .hero, .journey { padding-right: 22px; padding-left: 22px; }
  .journey-list { grid-template-columns: 1fr; }
  .section-heading { flex-wrap: wrap; gap: 15px; }
  .progress-pill { margin-top: 0; }
  .word-grid { grid-template-columns: minmax(0, 1fr); }
  .word-card { min-height: 116px; }
  .music-pads { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .music-pad { min-height: 160px; }
  .workshop { grid-template-columns: minmax(0, 1fr); }
  .bouquet-stage { min-height: 330px; }
  .bouquet-stage svg { height: 330px; max-width: 330px; }
  .flower-picker { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .story-scene { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .story-scene > img { height: 200px; width: 170px; margin: 0 auto; }
  .activity-footer { align-items: stretch; }
  .activity-footer small { flex: 1 1 100%; }
  .activity-footer .primary { flex: 1 1 100%; }
  .teacher-strip { max-width: calc(100% - 44px); padding: 24px; gap: 16px; }
  .teacher-strip > div:nth-child(2) { max-width: none; flex-basis: 100%; }
  .teacher-strip .outline { width: 100%; }
}

@media screen and (max-width: 560px) {
  :root {
    --read-body: calc(clamp(18px, 3.6vw, 20px) * var(--reading-scale));
    --read-game: calc(clamp(18px, 3.9vw, 22px) * var(--reading-scale));
    --read-ui: calc(clamp(18px, 3.6vw, 20px) * var(--reading-scale));
    --read-meta: calc(clamp(17px, 3.2vw, 18px) * var(--reading-scale));
    --read-title: calc(clamp(29px, 6.2vw, 36px) * var(--reading-scale));
    --read-question: calc(clamp(22px, 4.8vw, 27px) * var(--reading-scale));
    --read-gap: 18px;
  }
  .header { padding: 18px; gap: 18px; align-items: flex-start; }
  .brand { font-size: var(--read-ui); gap: 12px; }
  .brand-icon { width: 50px; height: 50px; border-radius: 16px; font-size: 34px; }
  .header nav { width: 100%; gap: 10px; }
  .tool { flex: 1 1 120px; padding: 12px; font-size: var(--read-meta); }
  .tool.icon-only { flex: 0 0 56px; padding: 12px; }
  .tool .tool-label { display: inline; }
  .tool svg.icon { width: 25px; height: 25px; }
  .reading-controls { flex: 0 1 auto; }
  .reading-controls button, #textSmaller, #textLarger { min-height: 56px; min-width: 56px; padding: 10px; }
  #textSizeLabel { font-size: var(--read-meta); }
  .hero { display: flex; flex-direction: column; padding: 32px 20px 20px; gap: 10px; }
  .hero h1 { font-size: calc(clamp(43px, 10vw, 56px) * var(--reading-scale)); max-width: 100%; margin: 22px 0; }
  .hero h1 em { margin-left: 0; display: block; letter-spacing: -.04em; }
  .title-star { font-size: .5em; top: 0; right: 0; }
  .hero-lead { font-size: calc(clamp(23px, 5vw, 28px) * var(--reading-scale)); line-height: 1.45; }
  .hero-desc { font-size: var(--read-body); line-height: 1.65; max-width: none; margin: 14px 0 24px; }
  .hero-actions { gap: 15px; align-items: stretch; }
  .hero-actions .primary { width: 100%; }
  .hero-actions .text-button { font-size: var(--read-ui); }
  .primary, .hero-actions .primary, .activity-footer .primary,
  .journey-bottom .primary, .final-actions .primary,
  .success-scene .primary, .story-scene .primary, .reset-buttons .primary {
    min-height: 60px;
    padding: 16px 20px;
    gap: 13px;
    font-size: var(--read-ui);
  }
  .text-button, .hero-actions .text-button, footer .text-button { min-height: 56px; font-size: var(--read-meta); }
  .outline, .teacher-actions .outline, .final-actions .outline { min-height: 56px; padding: 13px 18px; font-size: var(--read-meta); }
  .hero-details { gap: 13px; font-size: var(--read-meta); margin-top: 24px; }
  .hero-art { width: 100%; min-height: 340px; margin-top: 10px; }
  .world-preview { width: 115%; left: -7.5%; top: -15px; }
  .fox-hero { width: 55%; height: 275px; left: 8%; bottom: 0; }
  .bird-hero { width: 24%; right: 5%; top: 32%; }
  .hero-bubble { font-size: var(--read-meta); top: 10px; left: auto; right: 0; max-width: 70%; padding: 12px 14px; }
  .adventure-tag { font-size: var(--read-meta); padding: 12px; max-width: 92%; bottom: 0; }
  .heart-one { right: 18%; bottom: 20%; font-size: 35px; }
  .journey { padding: 28px 18px; border-radius: 28px 28px 0 0; }
  .section-heading { gap: 18px; margin-bottom: 24px; }
  .section-heading h2 { font-size: var(--read-title); max-width: none; }
  .section-heading p { max-width: none; font-size: var(--read-body); }
  .progress-pill { font-size: var(--read-meta); padding: 13px 18px; gap: 12px; }
  .progress-pill > span { font-size: calc(43px * var(--reading-scale)); }
  .mini-sparks { gap: 5px; }
  .mini-sparks span { font-size: calc(22px * var(--reading-scale)); }
  .journey-layout { gap: 20px; }
  .map-board { aspect-ratio: 14 / 9; height: auto; min-height: 0; border-radius: 20px; }
  .map-node { width: 56px; height: 56px; font-size: calc(22px * var(--reading-scale)); border-width: 3px; }
  .map-node::after, .map-caption { display: none; }
  .beacon-button { left: 44%; top: 39%; width: 64px; min-width: 64px; min-height: 56px; padding: 0; }
  .beacon-button > span { font-size: 34px; }
  .beacon-button b { display: none; }
  .journey-list { gap: 12px; }
  .location-card { min-height: 112px; padding: 16px 13px; gap: 12px; border-radius: 19px; }
  .location-icon { width: 50px; height: 50px; min-width: 50px; border-radius: 16px; }
  .location-icon svg { width: 29px; height: 29px; }
  .location-copy strong { font-size: var(--read-ui); }
  .location-copy small { font-size: var(--read-meta); margin-top: 6px; }
  .location-num { font-size: var(--read-meta); }
  .location-card.completed .location-num { font-size: 26px; }
  .journey-bottom { align-items: stretch; gap: 22px; margin-top: 25px; }
  .journey-bottom p { max-width: 100%; font-size: var(--read-body); }
  .journey-bottom .primary { width: 100%; }
  .teacher-strip { max-width: calc(100% - 36px); margin: 25px auto 0; padding: 20px; }
  .strip-icon { width: 56px; height: 56px; min-width: 56px; }
  .teacher-strip h3 { font-size: var(--read-ui); }
  .teacher-strip p { font-size: var(--read-meta); }
  .teacher-strip .outline { margin-left: 0; font-size: var(--read-meta); }
  footer { padding: 28px 18px; gap: 15px; font-size: var(--read-meta); }

  .overlay { padding: 8px; align-items: center; }
  .modal, .modal.small {
    width: calc(100vw - 16px);
    max-height: calc(100dvh - 16px);
    padding: 24px 18px;
    border-radius: 20px;
    scroll-padding-block: 24px;
    scrollbar-gutter: auto;
  }
  .close-modal { top: 10px; right: 10px; width: 56px; height: 56px; min-width: 56px; min-height: 56px; font-size: 34px; }
  .modal-top { min-height: 56px; padding-right: 60px; gap: 10px; align-items: flex-start; }
  .modal-top .location-icon { width: 46px; height: 46px; min-width: 46px; border-radius: 14px; }
  .modal-top .location-icon svg { width: 27px; height: 27px; }
  .modal-top .eyebrow, .modal .eyebrow { font-size: var(--read-meta); letter-spacing: .035em; }
  .modal h2 { font-size: var(--read-title); padding-right: 0; margin: 20px 0 15px; }
  .modal > .eyebrow { display: block; padding-right: 58px; min-height: 56px; }
  .modal > h2:first-of-type { padding-right: 58px; }
  .modal .modal-top + h2 { padding-right: 0; }
  .modal-sub { font-size: var(--read-game); line-height: 1.6; margin-bottom: 22px; }
  .narration-toolbar { padding: 14px; gap: 12px; margin: 20px 0 24px; border-radius: 18px; }
  .narration-play, .narration-stop { flex: 1 1 145px; min-height: 56px; padding: 13px 16px; font-size: var(--read-ui); border-radius: 22px; }
  .narration-status { flex-basis: 100%; font-size: var(--read-meta); }
  .narration-toolbar > .reading-controls { margin-inline-start: 0; }
  .activity-layout { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .guide-character { display: none; }
  .activity-status { align-items: flex-start; font-size: var(--read-meta); gap: 12px; margin-bottom: 18px; }
  .dots i { width: 12px; height: 12px; }
  .word-grid { grid-template-columns: minmax(0, 1fr); gap: 13px; }
  .word-card { padding: 20px 16px; min-height: 108px; font-size: var(--read-game); gap: 13px; border-radius: 19px; }
  .word-card .tiny-flower { font-size: calc(34px * var(--reading-scale)); }
  .feedback { font-size: var(--read-game); padding: 17px 18px; line-height: 1.6; margin: 22px 0; min-height: 74px; }
  .activity-footer { margin-top: 22px; gap: 16px; }
  .activity-footer small { font-size: var(--read-meta); }
  .scene-card { padding: 20px 18px; border-radius: 20px; }
  .scene-card h3 { font-size: var(--read-question); line-height: 1.5; }
  .scene-card .scene-symbol { font-size: 42px; }
  .choice { min-height: 78px; padding: 17px 15px; gap: 12px; font-size: var(--read-game); border-radius: 18px; }
  .choice .choice-label { height: 36px; width: 36px; min-width: 36px; font-size: var(--read-meta); }
  .memory-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  .memory-card { min-height: 120px; aspect-ratio: auto; border-radius: 18px; }
  .memory-card svg { width: 64px; height: 64px; }
  .memory-card .card-back { font-size: calc(40px * var(--reading-scale)); }
  .music-pads { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; margin: 24px 0; }
  .music-pad { min-height: 150px; padding: 20px 10px; font-size: var(--read-game); border-radius: 21px; gap: 20px; }
  .music-pad .note-shape { font-size: calc(42px * var(--reading-scale)); }
  .music-message { font-size: var(--read-game); }
  .echo-progress { gap: 11px; margin: 20px 0; }
  .echo-progress span { width: 15px; height: 15px; }
  .workshop { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .bouquet-stage { min-height: 315px; }
  .bouquet-stage svg { height: 300px; max-width: 300px; }
  .bouquet-empty { font-size: var(--read-meta); bottom: 12px; }
  .flower-picker { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .flower-pick { min-height: 114px; padding: 14px 8px; font-size: var(--read-meta); border-radius: 17px; }
  .flower-pick svg { height: 54px; width: 54px; }
  .postcard-options { gap: 12px; margin-top: 18px; }
  .postcard-option { min-height: 64px; padding: 16px; font-size: var(--read-game); line-height: 1.5; }
  .story-scene { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .story-scene > img { height: 190px; width: 165px; margin: 0 auto; }
  .story-scene p { font-size: var(--read-game); line-height: 1.65; }
  .story-note { font-size: var(--read-game) !important; padding: 17px; }
  .story-scene .primary { width: 100%; }
  .guide-grid { grid-template-columns: minmax(0, 1fr); gap: 17px; }
  .guide-box { padding: 21px 18px; }
  .guide-box h3 { font-size: var(--read-ui); }
  .guide-box p, .guide-box li { font-size: var(--read-game); line-height: 1.7; }
  .teacher-actions { gap: 14px; }
  .teacher-actions > * { width: 100%; }
  .success-scene { padding-top: 56px; }
  .success-scene h2 { padding: 0; }
  .success-scene p { font-size: var(--read-game); }
  .success-scene .big-spark { width: 100px; height: 100px; font-size: 68px; }
  .success-count { font-size: var(--read-meta); }
  .final-scene { padding-top: 48px; }
  .final-scene .final-heart { font-size: 76px; }
  .final-scene h2 { font-size: var(--read-title); padding: 0; }
  .final-scene .modal-sub { font-size: var(--read-game); }
  .final-gift { flex-wrap: nowrap; gap: 5px; }
  .final-gift img { width: 25%; max-width: 25%; height: 150px; }
  .final-gift svg { width: 45%; max-width: 45%; height: 190px; }
  .promise-options { gap: 12px; }
  .promise { min-height: 58px; padding: 14px 18px; font-size: var(--read-game); width: 100%; }
  #promiseFeedback { font-size: var(--read-meta) !important; }
  .final-actions { gap: 15px; }
  .final-actions > * { width: 100%; }
  .card-form { gap: 18px; margin: 24px 0; }
  .card-form label { min-width: 0; flex: 1 1 100%; font-size: var(--read-meta); }
  .card-form input { min-height: 60px; font-size: var(--read-game); padding: 15px; }
  .card-preview { padding: 22px 16px; border-radius: 22px; }
  .card-preview h3 { font-size: var(--read-title); }
  .card-preview > svg { height: 260px; }
  .card-preview p { font-size: var(--read-game) !important; }
  .reset-buttons { gap: 15px; }
  .reset-buttons > * { width: 100%; }
  #toast { font-size: var(--read-ui); padding: 18px; width: max-content; max-width: calc(100% - 24px); bottom: 12px; border-radius: 17px; }
}

@media screen and (max-width: 360px) {
  .header { padding: 16px; }
  .hero { padding-right: 18px; padding-left: 18px; }
  .hero-art { min-height: 360px; }
  .hero-bubble { max-width: 78%; }
  .adventure-tag { max-width: 100%; }
  .location-card { gap: 10px; padding: 15px 11px; }
  .location-icon { width: 44px; height: 44px; min-width: 44px; }
  .location-num { display: none; }
  .modal, .modal.small { padding-right: 16px; padding-left: 16px; }
  .narration-toolbar { padding: 12px; }
}

@media print {
  .reading-controls, .narration-toolbar, #voiceBtn { display: none !important; }
}
