:root {
  font-family:
    ui-rounded,
    "SF Pro Rounded",
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;
  color: #203548;
  background: #f5f5ee;
  line-height: 1.5;
  --ink: #203548;
  --muted: #586b72;
  --navy: #20374c;
  --mint: #d6edc5;
  --peach: #ffe0c9;
  --blue: #dcecf6;
  --line: #dce2d9;
  --danger: #883e38;
  --radius: 24px;
}
* {
  box-sizing: border-box;
}
body {
  margin: 0;
}
button,
input,
select,
textarea {
  font: inherit;
}
button,
a,
input,
select,
textarea {
  -webkit-tap-highlight-color: transparent;
}
button {
  cursor: pointer;
}
button:disabled {
  cursor: default;
  opacity: 0.55;
}
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
  outline: 3px solid #24728e;
  outline-offset: 3px;
}
[hidden] {
  display: none !important;
}
h1,
h2,
h3,
p {
  margin-top: 0;
}
h1 {
  font-size: clamp(29px, 6vw, 40px);
  line-height: 1.15;
  letter-spacing: -0.035em;
  margin-bottom: 12px;
}
h2 {
  font-size: 23px;
  line-height: 1.2;
  letter-spacing: -0.02em;
  margin-bottom: 12px;
}
h3 {
  font-size: 18px;
  margin-bottom: 8px;
}
p {
  margin-bottom: 14px;
}
a {
  color: #286278;
}
.app-shell {
  max-width: 750px;
  margin: auto;
  padding: 21px 20px calc(104px + env(safe-area-inset-bottom));
}
.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 24px;
}
.brand {
  text-decoration: none;
  display: flex;
  gap: 10px;
  align-items: center;
  color: var(--ink);
  font-size: 16px;
  font-weight: 900;
  letter-spacing: 0.07em;
}
.brand small {
  font-size: 10px;
  display: block;
  font-weight: 600;
  letter-spacing: 0.02em;
  margin-top: 1px;
}
.brand-mark {
  display: grid;
  place-items: center;
  width: 41px;
  height: 41px;
  border-radius: 13px;
  background: var(--navy);
  color: var(--mint);
  font-size: 27px;
}
.icon-btn {
  height: 46px;
  min-width: 46px;
  border: 1px solid var(--line);
  border-radius: 15px;
  color: var(--ink);
  background: #fff;
  font-size: 22px;
  display: inline-grid;
  place-items: center;
}
.eyebrow {
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #587260;
  margin-bottom: 10px;
}
.hero {
  display: grid;
  grid-template-columns: 1fr 125px;
  align-items: center;
  gap: 5px;
  margin: 10px 0 20px;
}
.hero p {
  margin: 0;
  color: var(--muted);
}
.bot svg {
  width: 100%;
  display: block;
}
.bot.small {
  width: 88px;
}
.bot.large {
  width: 170px;
  margin: 0 auto 10px;
}
.card {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  padding: 23px;
  margin-bottom: 18px;
}
.card.dark {
  background: var(--navy);
  color: #f2f6ee;
  border-color: var(--navy);
}
.card.dark .muted {
  color: #c6d5d8;
}
.card.dark .eyebrow {
  color: #caeaa7;
}
.card.mint {
  background: #e5f0dc;
}
.card.peach {
  background: #fff0df;
}
.card.blue {
  background: #edf4f8;
}
.section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 25px 0 14px;
}
.section-head h2 {
  margin: 0;
}
.muted {
  color: var(--muted);
}
.small {
  font-size: 13px;
}
.tiny {
  font-size: 11px;
}
.pill {
  font-size: 12px;
  line-height: 1.4;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: #e9efe6;
  border-radius: 99px;
  padding: 6px 10px;
  color: #415d49;
  font-weight: 800;
}
.pill.dark {
  background: #364f60;
  color: #e1f0cb;
}
.row {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
}
.wrap {
  flex-wrap: wrap;
}
.stack {
  display: grid;
  gap: 12px;
}
.two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.actions {
  display: grid;
  gap: 11px;
  margin: 20px 0;
}
.btn {
  background: var(--navy);
  color: #fff;
  border: 1px solid transparent;
  border-radius: 16px;
  padding: 14px 18px;
  min-height: 50px;
  font-weight: 800;
  text-align: center;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
}
.btn.primary {
  background: var(--mint);
  color: #253d30;
}
.btn.secondary {
  background: #fff;
  border-color: #cdd7cc;
  color: var(--ink);
}
.btn.ghost {
  background: transparent;
  border-color: #cdd7cc;
  color: var(--ink);
}
.btn.danger {
  background: #f9e2dc;
  color: #78332e;
}
.btn.block {
  width: 100%;
}
.btn.big {
  min-height: 76px;
  font-size: 18px;
  justify-content: flex-start;
  text-align: left;
  padding: 16px 20px;
}
.btn.big small {
  font-size: 12px;
  display: block;
  font-weight: 550;
  margin-top: 2px;
}
.button-icon {
  width: 36px;
  flex-shrink: 0;
  font-size: 24px;
}
.link-btn {
  border: 0;
  background: none;
  color: #2d6478;
  font-weight: 750;
  min-height: 44px;
  padding: 9px 0;
  text-align: left;
}
.week-strip {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 5px;
  margin: 18px 0 10px;
}
.day-cell {
  min-width: 0;
  min-height: 53px;
  border-radius: 14px;
  border: 1px solid transparent;
  background: #f0f3ec;
  color: var(--ink);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding: 5px 1px;
  font-size: 15px;
  font-weight: 800;
}
.day-cell small {
  font-size: 10px;
  font-weight: 650;
}
.day-cell.active {
  background: var(--mint);
  border-color: #78956b;
}
.day-cell.partial {
  background: #ffedbe;
  border-color: #ac9250;
}
.day-cell.current {
  box-shadow: inset 0 0 0 2px #23728b;
}
.day-cell.selected {
  outline: 2px solid #437a8a;
  outline-offset: 1px;
}
.day-cell.rest {
  background: #eee8f4;
}
.day-cell.empty {
  background: none;
  pointer-events: none;
}
.day-cell.future {
  opacity: 0.48;
}
.dark .day-cell {
  background: #354e60;
  color: #f6f9f3;
}
.dark .day-cell.active {
  background: var(--mint);
  color: #233f30;
}
.dark .day-cell.partial {
  background: #ffdf9a;
  color: #543e21;
}
.progress-track {
  height: 7px;
  background: #405769;
  border-radius: 99px;
  overflow: hidden;
  margin: 15px 0;
}
.progress-track i {
  height: 100%;
  display: block;
  background: #c9eda7;
  border-radius: 99px;
}
.week-goal {
  font-size: 27px;
  font-weight: 900;
  letter-spacing: -0.04em;
}
.calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 6px;
}
.dow {
  font-size: 11px;
  font-weight: 850;
  text-align: center;
  padding: 6px 0;
}
.calendar .day-cell {
  min-height: 54px;
}
.month-nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  margin: 20px 0;
}
.month-nav strong {
  text-transform: capitalize;
  text-align: center;
  font-size: 17px;
}
.day-detail {
  border-radius: 15px;
  padding: 15px;
  background: #f0f4ed;
  margin: 16px 0 0;
}
.entry {
  display: flex;
  gap: 12px;
  justify-content: space-between;
  align-items: center;
  border-bottom: 1px solid #e3e9df;
  padding: 14px 0;
}
.entry:last-child {
  border-bottom: 0;
}
.entry small {
  display: block;
  color: var(--muted);
  font-size: 12px;
  margin-top: 3px;
}
.entry b {
  font-size: 15px;
}
.entry button {
  flex-shrink: 0;
}
.stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 9px;
  margin: 18px 0;
}
.stat {
  background: #eef3e9;
  border-radius: 16px;
  padding: 15px 8px;
  text-align: center;
}
.stat strong {
  display: block;
  font-size: 27px;
  letter-spacing: -0.05em;
}
.stat span {
  font-size: 11px;
  font-weight: 650;
}
.castle-row {
  border-radius: 18px;
  background: #eef3e9;
  padding: 16px;
  margin: 11px 0;
}
.castle-row .castle {
  font-size: 30px;
}
.castle-row.locked {
  background: #f2f3ef;
}
.castle-row h3 {
  margin: 0;
}
.castle-row p {
  margin: 4px 0 0;
  font-size: 12px;
}
.route {
  display: block;
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--blue);
  color: var(--ink);
  padding: 19px;
  text-align: left;
  min-height: 105px;
}
.route.peach {
  background: var(--peach);
}
.route.mint {
  background: #e1efd7;
}
.route .route-title {
  font-weight: 900;
  font-size: 22px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.route p {
  font-size: 13px;
  margin: 7px 0 8px;
}
.route small {
  font-size: 12px;
}
.chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.chip {
  background: #f1f4ed;
  border: 1px solid #dbe3d6;
  border-radius: 99px;
  min-height: 44px;
  padding: 9px 14px;
  font-size: 13px;
  color: #334e3c;
  font-weight: 700;
}
.chip.on {
  background: var(--navy);
  border-color: var(--navy);
  color: #fff;
}
.choice-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.choice {
  border: 1px solid var(--line);
  background: #f6f7f2;
  color: var(--ink);
  border-radius: 17px;
  min-height: 70px;
  padding: 12px;
  text-align: left;
  font-weight: 750;
}
.choice.selected {
  border: 2px solid #527c52;
  background: #e5f0d8;
}
.choice small {
  display: block;
  font-size: 11px;
  font-weight: 550;
  color: var(--muted);
}
.check {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  min-height: 48px;
  padding: 10px 0;
  font-weight: 650;
}
.check input {
  width: 23px;
  height: 23px;
  min-height: 23px;
  flex-shrink: 0;
  accent-color: #3b6b50;
  margin-top: 1px;
}
.check small {
  display: block;
  font-size: 12px;
  font-weight: 450;
  color: var(--muted);
}
label.field {
  display: block;
  font-size: 13px;
  font-weight: 800;
  margin: 18px 0 7px;
}
input:not([type="checkbox"]),
select,
textarea {
  width: 100%;
  border: 1px solid #b8c6b7;
  background: #fff;
  color: var(--ink);
  border-radius: 13px;
  min-height: 49px;
  padding: 12px;
  font-size: 16px;
}
textarea {
  min-height: 86px;
  resize: vertical;
}
.helper {
  font-size: 12px;
  color: var(--muted);
  margin: 7px 0 14px;
}
.notice {
  background: #fff1ce;
  border: 1px solid #e3c586;
  border-radius: 15px;
  padding: 14px;
  font-size: 13px;
  margin: 15px 0;
}
.error-banner {
  background: #fbe6e0;
  color: #78362f;
  border: 1px solid #d5a496;
  border-radius: 15px;
  padding: 15px;
  margin-bottom: 16px;
}
.lab-banner {
  background: #eee1ff;
  color: #5c387b;
  border-radius: 13px;
  padding: 12px;
  font-weight: 900;
  text-align: center;
  font-size: 12px;
  letter-spacing: 0.08em;
  margin-bottom: 15px;
}
.app-footer {
  font-size: 10px;
  color: #65766f;
  text-align: center;
  padding: 30px 0 0;
}
.bottom-nav {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  background: #fffef9ed;
  border-top: 1px solid #dce2d9;
  padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
  backdrop-filter: blur(14px);
  z-index: 20;
}
.bottom-nav button {
  flex: 1;
  max-width: 300px;
  border: 0;
  background: none;
  border-radius: 14px;
  color: #60746f;
  min-height: 55px;
  font-size: 12px;
  font-weight: 800;
  display: grid;
  justify-items: center;
  gap: 2px;
  align-content: center;
}
.bottom-nav button span {
  font-size: 25px;
  line-height: 1.1;
}
.bottom-nav button[aria-current="page"] {
  background: #e6efd9;
  color: #253f30;
}
dialog {
  border: 1px solid #d2ddce;
  border-radius: 26px;
  background: #fffef9;
  color: var(--ink);
  padding: 24px;
  width: min(560px, calc(100vw - 24px));
  max-height: calc(100dvh - 32px);
  overflow: auto;
  box-shadow: 0 24px 100px #15283840;
}
dialog::backdrop {
  background: #152c426b;
  backdrop-filter: blur(3px);
}
.dialog-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  margin-bottom: 15px;
}
.dialog-top h2 {
  margin: 0;
  font-size: 24px;
}
.dialog-top .icon-btn {
  flex-shrink: 0;
}
.guide-pictures {
  display: grid;
  grid-template-columns: 1fr 1fr;
  background: #eff4ea;
  border-radius: 20px;
  padding: 8px;
  margin-bottom: 16px;
}
.guide-pictures svg {
  width: 100%;
  max-height: 190px;
}
.guide-pictures figcaption {
  text-align: center;
  font-size: 11px;
  font-weight: 800;
  margin-bottom: 8px;
}
.guide-pictures figure {
  margin: 0;
}
.guide-steps {
  padding-left: 25px;
}
.guide-steps li {
  padding-left: 5px;
  margin: 10px 0;
  font-size: 14px;
}
.guide-list {
  display: grid;
  gap: 9px;
}
.guide-item {
  display: flex;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fff;
  padding: 10px 14px;
  min-height: 75px;
  text-align: left;
  color: var(--ink);
  width: 100%;
}
.guide-item .thumb {
  width: 50px;
  flex-shrink: 0;
}
.guide-item svg {
  width: 100%;
  height: 52px;
}
.guide-item small {
  display: block;
  color: var(--muted);
  font-size: 11px;
}
.guide-item b {
  font-size: 14px;
}
.session-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
}
.session-head .eyebrow {
  margin: 0;
}
.session-stage {
  text-align: center;
  margin: 20px 0 0;
}
.session-stage h1 {
  font-size: clamp(28px, 7vw, 38px);
  margin-bottom: 8px;
  min-height: 44px;
}
.session-figure {
  height: clamp(155px, 27dvh, 230px);
  display: grid;
  place-items: center;
  background: #e9f0e2;
  border-radius: 25px;
  margin: 15px 0;
}
.session-figure svg {
  height: 100%;
  width: 100%;
  max-width: 300px;
}
.session-figure .bot {
  height: 160px;
  width: 160px;
}
.session-tip {
  font-size: 15px;
  min-height: 45px;
  margin: 10px 0;
}
.timer {
  font-size: clamp(63px, 14vw, 92px);
  font-weight: 950;
  letter-spacing: -0.06em;
  line-height: 1.05;
  font-variant-numeric: tabular-nums;
}
.timer-sub {
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
  margin: 8px 0 15px;
}
.session-controls {
  position: sticky;
  bottom: 0;
  background: #f5f5eef5;
  padding: 14px 0 calc(8px + env(safe-area-inset-bottom));
  border-top: 1px solid #dce4d6;
  margin-top: 14px;
  z-index: 10;
}
.session-controls .btn {
  min-height: 54px;
}
.session-guide-link {
  display: flex;
  justify-content: center;
  gap: 24px;
}
.session-progress {
  height: 5px;
  border-radius: 10px;
  background: #d9e4d1;
  margin-top: 17px;
  overflow: hidden;
}
.session-progress i {
  display: block;
  height: 100%;
  background: #698c57;
  transition: width 0.2s;
}
.session-page .app-shell {
  padding-bottom: 12px;
}
.session-page .topbar,
.session-page .app-footer {
  display: none;
}
.parent-tabs {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
.parent-tabs button {
  font-size: 12px;
  padding: 10px 13px;
  min-height: 44px;
  border: 1px solid #cfd9ca;
  background: #fff;
  border-radius: 12px;
  color: var(--ink);
  font-weight: 800;
}
.parent-tabs button.active {
  background: var(--navy);
  color: #fff;
}
.exercise-picker {
  max-height: 350px;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 15px;
  padding: 8px 13px;
}
.exercise-picker .check {
  border-bottom: 1px solid #e6ece2;
  font-size: 13px;
}
.selected-order {
  margin: 15px 0;
}
.order-row {
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 7px 0;
  border-bottom: 1px solid var(--line);
}
.order-row span {
  flex: 1;
  font-size: 13px;
}
.order-row button {
  min-width: 44px;
  min-height: 44px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #fff;
  color: var(--ink);
}
.mood {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
.mood button {
  min-height: 71px;
  border: 1px solid var(--line);
  border-radius: 17px;
  background: #f2f5ed;
  color: var(--ink);
  font-weight: 750;
}
.mood button span {
  font-size: 24px;
  display: block;
}
.mood button.selected {
  background: #dceecf;
  border-color: #69875b;
}
.memory-art {
  background: linear-gradient(150deg, #d9e8c7, #f5eacb);
  border-radius: 24px;
  text-align: center;
  padding: 25px 16px;
  margin-bottom: 17px;
}
.memory-art .scene {
  font-size: 63px;
  letter-spacing: 6px;
  line-height: 1.4;
}
.memory-art .bot {
  width: 125px;
  margin: 0 auto;
}
.best-number {
  font-size: 38px;
  letter-spacing: -0.04em;
  font-weight: 900;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.toast {
  position: fixed;
  bottom: 96px;
  left: 50%;
  transform: translateX(-50%);
  max-width: min(90vw, 500px);
  background: #223c46;
  color: #fff;
  border-radius: 16px;
  padding: 13px 20px;
  font-size: 14px;
  box-shadow: 0 9px 30px #142f3626;
  z-index: 100;
  display: none;
}
.toast.show {
  display: block;
}
.empty-state {
  text-align: center;
  padding: 25px 15px;
}
.empty-state .emoji {
  font-size: 45px;
}
.training-tag {
  font-size: 11px;
  border-radius: 99px;
  background: #fff8;
  padding: 4px 7px;
}
.parent-welcome {
  border-left: 4px solid #92b77c;
  padding: 4px 0 4px 15px;
  margin: 16px 0;
}
details {
  border-top: 1px solid var(--line);
  padding: 15px 0;
}
summary {
  cursor: pointer;
  min-height: 44px;
  font-weight: 750;
}
.source-links {
  font-size: 12px;
}
.source-links a {
  display: block;
  margin: 10px 0;
}
.choice-description {
  margin: 10px 0;
  color: var(--muted);
  font-size: 13px;
}
.practice-note {
  font-size: 12px;
  color: var(--muted);
  text-align: center;
}
.paused-label {
  font-weight: 850;
  color: #596946;
  font-size: 15px;
}
.guide-search {
  margin: 15px 0;
}
.count-badge {
  font-size: 11px;
  background: #dcebcf;
  border-radius: 99px;
  padding: 5px 9px;
  font-weight: 800;
}
.together {
  background: #e7ecf8;
  color: #465c80;
  border-radius: 99px;
  font-size: 11px;
  padding: 6px 10px;
  font-weight: 850;
}
.field-error {
  font-size: 13px;
  color: #893a30;
  font-weight: 700;
  margin: 10px 0;
}
.progress-legend {
  font-size: 11px;
  color: var(--muted);
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin: 12px 0;
}
.danger-text {
  color: #823c36;
}
.shortcuts {
  margin-top: 15px;
  border-top: 1px solid #4b606e;
  padding-top: 10px;
}
.dark .link-btn {
  color: #d2edb8;
}
.demo-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.demo-controls .btn {
  font-size: 12px;
}
.test-person {
  display: flex;
  gap: 8px;
  align-items: center;
  font-weight: 750;
}
.bar-list {
  display: grid;
  gap: 12px;
  margin: 16px 0;
}
.bar-label {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
}
.bar {
  height: 7px;
  background: #e2eadc;
  border-radius: 99px;
  overflow: hidden;
  margin-top: 5px;
}
.bar i {
  display: block;
  height: 100%;
  background: #8eae77;
}
.field-hint {
  font-size: 12px;
  color: var(--muted);
}
@media (min-width: 650px) {
  .actions {
    grid-template-columns: 1fr 1fr;
  }
  .hero {
    grid-template-columns: 1fr 150px;
  }
  .hero h1 {
    max-width: 450px;
  }
  .week-strip .day-cell {
    min-height: 65px;
  }
  .calendar .day-cell {
    min-height: 65px;
  }
  .session-stage {
    max-width: 580px;
    margin: 20px auto 0;
  }
  .session-controls {
    max-width: 580px;
    margin: 15px auto 0;
  }
  .session-figure {
    height: 250px;
  }
}
@media (max-width: 370px) {
  .app-shell {
    padding-left: 12px;
    padding-right: 12px;
  }
  .card {
    padding: 17px;
  }
  .hero {
    grid-template-columns: 1fr 100px;
  }
  .brand {
    font-size: 14px;
  }
  .week-strip {
    gap: 3px;
  }
  .calendar {
    gap: 3px;
  }
  .day-cell {
    font-size: 13px;
    border-radius: 10px;
  }
  .timer {
    font-size: 65px;
  }
  dialog {
    padding: 19px;
  }
  .two-col {
    gap: 8px;
  }
  .btn {
    padding-left: 12px;
    padding-right: 12px;
  }
  .parent-tabs {
    gap: 5px;
  }
}
@media (prefers-reduced-motion: reduce) {
  *,
  *:before,
  *:after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}
.day-cell > span {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
}
.btn.big > span {
  display: flex;
  align-items: center;
  gap: 12px;
}
.session-figure .exercise-picture {
  height: 100%;
  width: 100%;
  min-height: 0;
  display: flex;
  justify-content: center;
}
.session-figure .exercise-picture svg {
  height: 100%;
  width: auto;
  max-width: 100%;
  display: block;
}
.month-landscape {
  margin: 12px -4px 15px;
}
.month-landscape svg {
  width: 100%;
  height: auto;
  display: block;
}
.day-cell {
  position: relative;
}
.pixel-day {
  position: absolute;
  right: -3px;
  top: -12px;
  font-size: 15px !important;
  display: block !important;
  line-height: 1;
}
/* v3.1: routes, a real month path and a calm training surface. */
:root {
  --mint: #ffce54;
  --navy: #18382f;
  --blue: #dcecf6;
}
.app-shell {
  max-width: 760px;
}
.brand small {
  font-size: 12px;
}
.small,
.helper,
.tiny,
.timer-sub,
.practice-note {
  font-size: 14px;
  line-height: 1.5;
}
.eyebrow {
  font-size: 12px;
}
.hero {
  grid-template-columns: 1fr 105px;
}
.hero h1 {
  font-size: 34px;
}
.hero p {
  font-weight: 700;
}
.hero .bot {
  max-width: 105px;
}
.btn.primary {
  background: #ffce54;
  color: #18382f;
}
.btn.big small {
  font-size: 14px;
}
.route small {
  display: block;
  font-size: 14px;
  line-height: 1.5;
}
.route.gold {
  background: #fff2c3;
}
.map-card {
  background: #10291f !important;
  color: #f4f4dc !important;
  padding: 20px 12px;
  overflow: hidden;
}
.map-card h2 {
  font-size: 23px;
}
.map-card > .row {
  padding: 0 8px;
}
.map-stage {
  padding: 15px 4px 5px;
  border-top: 1px solid #42614f44;
}
.map-stage h3 {
  font-size: 15px;
  letter-spacing: 0.02em;
  margin: 0;
  color: #d0e0d0;
}
.map-stage .row {
  padding: 0 10px;
}
.map-stage.stage-now {
  background: #355c452e;
  border-radius: 16px;
}
.path-svg {
  width: 100%;
  display: block;
  overflow: visible;
}
.path-svg [role="button"] {
  cursor: pointer;
  outline: none;
}
.path-svg [role="button"]:focus-visible circle,
.path-svg [role="button"]:focus-visible rect {
  stroke: #fff;
  stroke-width: 6;
}
.map-continuation {
  color: #c6d6ca;
  padding: 0 10px;
  margin: 0 0 5px;
}
.path-art {
  padding: 0 5px;
}
.map-card .pill.dark {
  white-space: nowrap;
  background: #355b45;
  color: #eff1da;
}
.portal-thumb {
  width: 72px;
  flex-shrink: 0;
}
.portal-art {
  width: 190px;
  margin: auto;
}
.portal-art svg,
.portal-thumb svg {
  width: 100%;
  display: block;
}
.month-landscape {
  border-radius: 20px;
  overflow: hidden;
  margin-bottom: 15px;
}
.month-landscape svg {
  width: 100%;
  display: block;
}
.category {
  background: #fff;
  border: 1px solid #d7dfd1;
  border-radius: 17px;
  margin: 12px 0;
  overflow: hidden;
}
.category > summary {
  padding: 17px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  cursor: pointer;
  font-size: 17px;
  font-weight: 800;
  min-height: 56px;
}
.category > summary:after {
  content: "＋";
  margin-left: auto;
}
.category[open] > summary:after {
  content: "−";
}
.category-body {
  padding: 0 16px 18px;
}
.category .pill {
  font-size: 13px;
}
.category .check {
  min-height: 52px;
  font-size: 16px;
}
.category .check small {
  font-size: 13px;
}
.library-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
  border-top: 1px solid #e4e9df;
}
.library-row .check {
  flex: 1;
  margin: 0;
}
.library-row .btn {
  min-height: 44px;
  padding: 10px 14px;
}
.exercise-picker {
  max-height: 330px;
}
.guide-steps {
  font-size: 16px;
}
.motion-demo {
  max-width: 360px;
  margin: 0 auto 15px;
  border-radius: 20px;
  overflow: hidden;
}
.motion-demo svg {
  width: 100%;
  display: block;
}
.session-page {
  background: #10221e;
  color: #f1f4e8;
}
.session-page .app-shell {
  max-width: 620px;
  padding: 14px 16px calc(14px + env(safe-area-inset-bottom));
}
.session-page .eyebrow,
.session-page .helper,
.session-page .small,
.session-page .timer-sub {
  color: #c9dacb;
}
.session-page .session-head {
  margin-bottom: 10px;
  gap: 12px;
}
.session-page .session-head p {
  margin: 0;
}
.session-page .icon-btn {
  background: #244036;
  color: #f6f5df;
  border-color: #527061;
}
.session-page .session-stage {
  padding: 0;
}
.session-page .session-stage h1 {
  font-size: clamp(25px, 6vw, 36px);
  line-height: 1.2;
  margin: 16px 0 12px;
}
.session-page .session-figure {
  height: clamp(185px, 29vh, 290px);
  min-height: 0;
  margin: 0 auto 12px;
}
.session-page .session-figure .exercise-picture {
  height: 100%;
  max-width: 340px;
  margin: 0 auto;
}
.session-page .session-figure svg {
  width: auto;
  height: 100%;
  max-width: 100%;
  display: block;
  margin: auto;
}
.session-page .session-tip {
  font-size: 18px;
  min-height: 0;
  line-height: 1.4;
  max-width: 36ch;
  margin: 8px auto 14px;
}
.session-page .clock-row {
  display: flex;
  align-items: center;
  gap: 14px;
  max-width: 380px;
  margin: auto;
}
.session-page .session-progress {
  flex: 1;
  height: 5px;
  margin: 0;
  background: #35584a;
}
.session-page .session-progress i {
  background: #ffce54;
}
.session-page .clock-row .timer {
  font-size: 30px;
  font-weight: 750;
  letter-spacing: -0.02em;
  min-width: 75px;
}
.session-page .session-controls {
  background: #10221ef5;
  border-color: #42604e;
  padding-top: 12px;
  margin-top: 12px;
}
.session-page .session-controls .btn.secondary {
  background: #29483d;
  color: #fff5dc;
  border-color: #688570;
}
.session-page .session-guide-link .link-btn {
  color: #daeadc;
}
.session-page .danger-text {
  color: #ffbdb1 !important;
}
.session-page .wake-note {
  font-size: 12px;
  color: #a9c0ae;
  text-align: center;
  margin: 10px auto 0;
  max-width: 43ch;
}
.session-page .timer-sub {
  font-size: 14px;
  margin: 12px 0;
}
.session-page .side-label {
  font-size: 21px;
  font-weight: 850;
  color: #ffdb6e;
}
.session-page .count-panel {
  border: 1px solid #688570;
  border-radius: 20px;
  padding: 15px;
  margin: 15px 0;
}
.count-panel strong {
  font-size: 54px;
}
.count-panel p {
  margin: 0 0 10px;
}
.count-panel .rep-button {
  font-size: 22px;
  min-height: 82px;
}
.session-page .session-stage > .timer {
  font-size: 58px;
}
.session-page .session-stage > .stack .btn.secondary {
  background: #29483d;
  color: #fff5dc;
  border-color: #688570;
}
.session-page dialog {
  color: #203548;
}
.session-page dialog .helper,
.session-page dialog .small {
  color: #586b72;
}
.session-page dialog .session-tip {
  font-size: 17px;
  color: #203548;
}
.spark {
  height: 43px;
  display: flex;
  align-items: end;
  gap: 5px;
  margin-top: 8px;
}
.spark i {
  width: 15px;
  background: #678c73;
  border-radius: 4px 4px 0 0;
}
.parent-tabs button {
  font-size: 14px;
}
.parent-tabs {
  gap: 7px;
}
.parent-tabs button {
  flex: 1;
  min-width: 92px;
}
.stats .stat span {
  font-size: 13px;
}
.fireworks {
  height: 140px;
  position: relative;
  overflow: hidden;
  background: #122e27;
  border-radius: 20px;
}
.fireworks i {
  position: absolute;
  left: 50%;
  top: 55%;
  color: #ffdb65;
  font-size: 26px;
  animation: firework 3.8s ease-out both;
  --angle: calc(var(--i) * 30deg);
  transform: rotate(var(--angle));
}
.fireworks.finished {
  height: 50px;
}
.fireworks.finished:after {
  content: "✦ Mes conseguido ✦";
  display: block;
  color: #ffe19a;
  text-align: center;
  padding: 12px;
}
.fireworks.finished i {
  display: none;
}
@keyframes firework {
  0% {
    opacity: 0;
    transform: rotate(var(--angle)) translateX(0) scale(0.2);
  }
  15% {
    opacity: 1;
  }
  75% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: rotate(var(--angle)) translateX(120px) scale(1);
  }
}
body[data-theme="10"] {
  background: #eceaf0;
  --navy: #273344;
}
body[data-theme="10"] .topbar {
  border-bottom: 2px solid #7d769344;
  padding-bottom: 15px;
}
body[data-theme="10"] .map-card {
  background: #111d23 !important;
}
body[data-theme="11"] {
  background: #f0eee4;
}
body[data-theme="12"] {
  background: #edf3f5;
}
body[data-theme="12"] .topbar {
  border-bottom: 2px solid #a7cddc88;
  padding-bottom: 15px;
}
body[data-theme="7"],
body[data-theme="8"] {
  background: #eaf4f1;
}
body.session-page {
  background: #10221e;
}
@media (max-width: 380px) {
  .app-shell {
    padding-left: 14px;
    padding-right: 14px;
  }
  .hero h1 {
    font-size: 29px;
  }
  .hero {
    grid-template-columns: 1fr 85px;
  }
  .card {
    padding: 18px;
  }
  .map-card {
    padding: 16px 7px;
  }
  .btn {
    padding: 12px;
  }
  .session-page .session-tip {
    font-size: 17px;
  }
  .session-page .session-figure {
    height: 180px;
  }
  .session-page .session-stage h1 {
    font-size: 24px;
  }
  .session-page .session-guide-link {
    gap: 14px;
  }
  .map-stage h3 {
    font-size: 14px;
  }
  .parent-tabs button {
    min-width: 85px;
    font-size: 13px;
  }
}
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
  .fireworks i {
    display: none;
  }
  .fireworks:after {
    content: "✦ ¡Mes conseguido! ✦";
    display: block;
    text-align: center;
    color: #ffe19a;
    padding-top: 50px;
  }
}

body {
  min-height: 100vh;
  min-height: 100dvh;
}
.session-page .session-figure {
  background: transparent;
}

.map-stage .path-art {
  position: relative;
}
.map-stage:not(.compact) .path-art:after {
  content: "";
  position: absolute;
  right: 7.2%;
  top: 44%;
  bottom: -62px;
  width: 5px;
  background: #557e6f;
  z-index: 0;
  pointer-events: none;
}
.map-stage.reverse:not(.compact) .path-art:after {
  right: auto;
  left: 3.3%;
}
.map-stage:not(.compact) .path-art:before {
  content: "";
  position: absolute;
  left: 3.3%;
  top: -65px;
  bottom: 56%;
  width: 5px;
  background: #557e6f;
  z-index: 0;
  pointer-events: none;
}
.map-stage.reverse:not(.compact) .path-art:before {
  left: auto;
  right: 7.2%;
}
.map-stage:first-of-type .path-art:before,
.map-stage:last-of-type .path-art:after {
  display: none;
}
.path-svg {
  position: relative;
  z-index: 1;
}
.month-album {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 9px;
}
.album-month {
  border: 1px solid #d7dfd1;
  background: #f1f4ec;
  color: #203d30;
  border-radius: 14px;
  min-height: 80px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
}
.album-month span {
  font-size: 23px;
}
.album-month small {
  font-size: 14px;
}

.map-stage > .row {
  position: relative;
  z-index: 2;
}
.map-stage .path-art:before,
.map-stage .path-art:after {
  opacity: 0.7;
}

/* 3.1.2: no programmatic blue frames; retain a discreet keyboard focus. */
#main:focus,
#modalTitle:focus,
[tabindex="-1"]:focus {
  outline: none !important;
  box-shadow: none !important;
}
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
  outline: 2px solid #b99635;
  outline-offset: 3px;
}
@media (hover: none) and (pointer: coarse) {
  button:focus-visible,
  a:focus-visible,
  summary:focus-visible {
    outline: none;
  }
}
.parent-tabs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}
.parent-tabs button {
  min-width: 0;
  width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.3;
  padding: 12px 9px;
  min-height: 52px;
}
.parent-tabs button:last-child {
  grid-column: 1/-1;
}
@media (min-width: 650px) {
  .parent-tabs {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
  .parent-tabs button:last-child {
    grid-column: auto;
  }
}
/* 3.2 — readable controls and a path made of real buttons. */
.app-icon {
  width: 24px;
  height: 24px;
  display: block;
  flex-shrink: 0;
}
.quest-logo {
  width: 42px;
  height: 42px;
  display: block;
}
.brand-mark {
  padding: 4px !important;
  display: grid;
  place-items: center;
  background: #18382f !important;
}
.brand-mark > div {
  width: 100%;
}
.brand-mark svg {
  width: 100%;
  height: auto;
}
.icon-btn .app-icon {
  margin: auto;
}
.training-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 18px 0;
}
.route-tile {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 8px;
  min-height: 130px;
  text-align: left;
  white-space: normal;
  overflow-wrap: anywhere;
}
.route-tile b {
  font-size: 19px;
  line-height: 1.2;
}
.route-tile small {
  font-size: 15px;
  font-weight: 650;
}
.route-tile.peach {
  background: #f7ded1;
}
.route-tile.blue {
  background: #d8eaf2;
}
.route-tile.mint {
  background: #e2edd5;
}
.route-tile.gold {
  background: #ffdc75;
}
.route-symbol svg {
  width: 30px;
  height: 28px;
}
.record-cta {
  margin: 8px 0 22px;
}
.hero {
  border-radius: 24px;
  padding: 18px 12px;
  background: linear-gradient(130deg, #fff9, #e8eddb88);
}
.hero h1 {
  font-family: ui-rounded, "Trebuchet MS", system-ui, sans-serif;
}
.hero p {
  font-size: 16px;
}
.hero .bot {
  width: 110px;
}
.journey-grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px 6px;
  padding: 18px 2px;
  isolation: isolate;
}
.journey-grid:before {
  content: "";
  position: absolute;
  inset: 54px 8% 55px;
  border: 5px solid #557e6f;
  border-left: 0;
  border-radius: 0 28px 28px 0;
  z-index: -1;
}
.journey-day,
.journey-station {
  position: relative;
  min-width: 44px;
  min-height: 80px;
  border: 2px solid #86a594;
  border-radius: 22px;
  background: #254a3d;
  color: #eef3df;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding: 6px 2px;
  font: inherit;
}
.journey-day:nth-child(5) {
  grid-column: 4;
  grid-row: 2;
}
.journey-day:nth-child(6) {
  grid-column: 3;
  grid-row: 2;
}
.journey-day:nth-child(7) {
  grid-column: 2;
  grid-row: 2;
}
.journey-station {
  grid-column: 1;
  grid-row: 2;
  background: #233c32;
  border-color: #ffce54;
}
.journey-day strong {
  font-size: 22px;
}
.journey-day small {
  font-size: 14px;
}
.journey-day > span {
  font-size: 14px;
  min-height: 20px;
}
.journey-day.active {
  background: #ffce54;
  color: #18382f;
  border-color: #ffe4a0;
}
.journey-day.partial {
  background: #c0dbcb;
  color: #18382f;
}
.journey-day.adjacent {
  border-style: dashed;
  opacity: 0.65;
}
.journey-day:disabled {
  opacity: 0.45;
}
.journey-station small {
  font-size: 12px;
  line-height: 1.25;
}
.station-icon svg {
  height: 36px;
  width: 42px;
}
.map-pixel {
  position: absolute;
  top: -24px;
  left: 50%;
  transform: translateX(-50%);
  width: 35px;
  pointer-events: none;
}
.map-pixel svg {
  width: 100%;
  height: 40px;
}
.tour-pixel {
  position: absolute;
  left: 50%;
  top: -28px;
  width: 40px;
  transform: translateX(-50%);
  pointer-events: none;
  z-index: 3;
}
.tour-pixel svg {
  width: 40px;
  height: 44px;
}
.tour-stop {
  box-shadow: 0 0 0 4px #fff4c2;
}
.tour-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px;
}
.tour-controls p {
  font-size: 14px;
}
.tour-message {
  padding: 12px;
}
.html-stage .section-head h2 {
  font-size: 16px;
}
.html-stage {
  padding-top: 20px;
}
.html-stage .section-head {
  gap: 6px;
  align-items: center;
}
.html-stage .pill {
  font-size: 14px;
}
.parent-tabs {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-bottom: 20px;
}
.parent-tabs button {
  font-size: 14px;
  min-width: 0;
  padding: 10px 6px;
}
.parent-tabs button:last-child {
  grid-column: auto;
}
body:has(.eyebrow) .helper {
  line-height: 1.55;
}
.session-page .session-figure {
  height: clamp(210px, 33dvh, 320px);
}
.session-page .session-stage > .timer {
  font-size: 60px;
}
.session-page .clock-row .timer {
  font-size: 30px;
}
.entry small,
.stat span,
.check small,
label.field,
.category .check small,
.bar-label,
.guide-item small,
.guide-steps li {
  font-size: 14px;
}
.entry {
  flex-wrap: wrap;
}
.entry > div {
  flex: 1;
  min-width: 140px;
}
.challenge-bot {
  width: 80px;
  margin: 0 auto 12px;
}
.challenge-bot svg {
  width: 100%;
  height: 90px;
}
.journey-grid .bot {
  margin: 0;
}
.calendar .day-cell small {
  font-size: 14px;
}
.parent-tabs + div {
  min-width: 0;
}
body[data-theme="10"] .hero {
  background: linear-gradient(140deg, #d9d4e7, #e6e5ec);
}
body[data-theme="12"] .hero {
  background: linear-gradient(140deg, #dcecf1, #fff);
}
body[data-theme="7"] .hero,
body[data-theme="8"] .hero {
  background: linear-gradient(140deg, #cae8df, #f2e6c2);
}
body:has(.eyebrow:first-child) .topbar {
  position: relative;
}
.session-page .hero {
  background: none;
}
.brand {
  min-width: 0;
}
.brand small {
  line-height: 1.4;
}
.bottom-nav .app-icon {
  width: 25px;
  height: 25px;
  margin: auto;
}
.library-row {
  flex-wrap: wrap;
}
.library-row > .stack {
  flex-direction: row;
  flex-wrap: wrap;
}
.library-row > .check {
  min-width: 150px;
}
@media (max-width: 370px) {
  .route-tile b {
    font-size: 17px;
  }
  .route-tile {
    padding: 12px;
    min-height: 130px;
  }
  .parent-tabs button {
    font-size: 12px;
    padding: 10px 4px;
  }
  .journey-grid {
    gap: 14px 5px;
  }
  .journey-day {
    min-height: 76px;
  }
  .journey-day strong {
    font-size: 20px;
  }
  .hero {
    padding: 14px 6px;
  }
  .hero h1 {
    font-size: 27px;
  }
  .hero .bot {
    width: 85px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .tour-pixel {
    display: none;
  }
  .hero .bot {
    animation: none;
  }
}
.recap-track {
  height: 85px;
  position: relative;
  border-bottom: 5px dashed #557e6f;
  margin: 12px 0;
}
.recap-pixel {
  width: 60px;
  position: absolute;
  left: 0;
  bottom: 0;
  transition: left 0.15s linear;
}
.recap-pixel svg {
  width: 60px;
  height: 80px;
}
.recap-journey .helper {
  min-height: 44px;
}
.fireworks {
  flex-shrink: 0;
}
.route-tile {
  color: #18382f !important;
}
.route-tile small {
  color: #29493d;
}
.route-tile .route-symbol {
  color: #29493d;
}
.parent-tabs button {
  min-height: 54px;
}
/* 3.3: one adventure world; the home week reads left-to-right. */
:root {
  --ink: #203548;
  --line: #d7dfd5;
}
*,
*::before,
*::after {
  box-sizing: border-box;
}
body {
  overflow-x: hidden;
}
.app-shell {
  max-width: 700px;
}
h1,
h2,
h3,
p,
.row > div,
.section-head > div {
  min-width: 0;
}
p {
  overflow-wrap: break-word;
}
.row,
.section-head {
  flex-wrap: wrap;
  gap: 12px;
}
.pill {
  max-width: 100%;
  white-space: normal;
}
.topbar {
  gap: 12px;
}
.brand {
  flex: 1;
  min-width: 0;
}
.brand small {
  font-size: 12px;
}
.icon-btn {
  flex-shrink: 0;
}
.hero {
  margin-top: 18px;
  padding: 20px 16px;
  gap: 8px 14px;
}
.hero > div:first-child {
  min-width: 0;
}
.hero h1 {
  font-size: 32px;
}
.hero p {
  font-size: 16px;
  margin-bottom: 0;
}
.voice-tools {
  grid-column: 1/-1;
  display: flex;
  gap: 6px 10px;
  align-items: center;
  flex-wrap: wrap;
  border-top: 1px solid #a7b6ae55;
  padding-top: 10px;
}
.voice-control {
  border: 0;
  border-radius: 99px;
  background: #fff9;
  color: #294438;
  min-height: 44px;
  padding: 8px 13px;
  display: flex;
  gap: 8px;
  align-items: center;
  font: inherit;
  font-size: 14px;
  font-weight: 750;
}
.voice-control svg {
  width: 19px;
  height: 19px;
}
.voice-state {
  font-size: 13px;
  margin: 0;
  max-width: 100%;
  line-height: 1.4;
}
.hero .voice-state {
  font-weight: 450;
  flex: 1;
  min-width: 130px;
}
.training-grid {
  margin: 16px 0;
  gap: 12px;
}
.route-tile {
  min-height: 122px;
  box-shadow: 0 4px 0 #2035480b;
}
.record-cta {
  margin: 4px 0 20px;
}
.map-card {
  padding: 20px 14px !important;
}
.map-card > .section-head {
  padding: 0 4px;
}
.map-card .section-head h2 {
  font-size: 24px;
}
.week-range {
  font-size: 14px !important;
  color: #c9d9ca;
  margin: 0 0 20px;
}
.week-line {
  position: relative;
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 3px;
  isolation: isolate;
}
.week-line:before {
  content: "";
  position: absolute;
  top: 45px;
  left: 5%;
  right: 5%;
  height: 4px;
  background: #557d66;
  z-index: -1;
}
.week-point {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-width: 0;
  min-height: 94px;
  background: transparent;
  border: 0;
  padding: 0;
  color: #dce7d8;
  font: inherit;
}
.week-point > small {
  font-size: 13px;
  line-height: 1;
}
.week-dot {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #244b3a;
  border: 2px solid #77977e;
  font-size: 16px;
  font-weight: 800;
  box-shadow: 0 0 0 4px #14291f;
}
.week-point.active .week-dot {
  background: #ffce54;
  border-color: #ffe9a5;
  color: #193b2d;
}
.week-point.partial .week-dot {
  background: #bfd8cc;
  color: #193b2d;
}
.week-point.current .week-dot {
  outline: 2px solid #fff5ce;
  outline-offset: 3px;
}
.week-point:disabled {
  opacity: 0.4;
}
.week-station {
  margin-top: 18px;
  border: 1px solid #688770;
  background: #294d3a;
  border-radius: 15px;
  padding: 12px;
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 48px;
  width: 100%;
  text-align: left;
  font: inherit;
  font-size: 14px;
  color: #f6efd6;
}
.week-station svg {
  width: 23px;
  height: 23px;
  flex-shrink: 0;
}
.week-path + .small {
  font-size: 14px;
  line-height: 1.6;
}
.world-map {
  padding: 0 !important;
  border-radius: 28px;
  overflow: hidden;
  background: #162e26;
  box-shadow: 0 14px 40px #172e2826;
  margin: 16px 0 22px;
}
.world-canvas {
  position: relative;
  width: 100%;
  overflow: hidden;
  isolation: isolate;
}
.world-backdrop,
.world-road {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.world-backdrop svg,
.world-road svg {
  width: 100%;
  height: 100%;
  display: block;
}
.world-backdrop {
  z-index: -2;
}
.world-road {
  z-index: -1;
}
.world-day,
.world-station {
  position: absolute;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 48px;
  width: 48px;
  height: 48px;
  min-height: 48px;
  padding: 2px;
  border-radius: 50%;
  border: 3px solid #b7d6b3;
  color: #f4f2d9;
  background: #315a46;
  box-shadow: 0 4px 0 #13261d80;
  font: inherit;
  gap: 0;
  z-index: 2;
}
.world-day b {
  font-size: 18px;
  line-height: 1.1;
}
.world-day small {
  font-size: 11px;
  font-weight: 800;
  line-height: 1.1;
}
.world-day.active {
  background: #ffcf50;
  color: #153d2b;
  border-color: #fff2ad;
}
.world-day.partial {
  background: #c5e2ce;
  color: #193b2d;
}
.world-day:disabled {
  background: #32523e;
  color: #d3e0cb;
  border-color: #7a9f7e;
  opacity: 0.72;
}
.world-day.current {
  outline: 2px solid #fff8d8;
  outline-offset: 4px;
}
.world-station {
  width: 55px;
  height: 60px;
  border: 2px solid #d6b65c;
  border-radius: 16px;
  background: #183e31;
  gap: 1px;
  color: #ffe6a2;
}
.world-station-art svg {
  width: 32px;
  height: 34px;
  display: block;
}
.world-station span {
  font-size: 11px;
  font-weight: 850;
  line-height: 1;
}
.world-station.unlocked {
  background: #f7cf69;
  color: #143e2b;
  border-color: #fff0aa;
}
.world-start {
  position: absolute;
  top: 22px;
  left: 22px;
  right: 22px;
  color: #fff4c9;
  display: flex;
  flex-direction: column;
  gap: 6px;
  text-shadow: 0 2px 9px #0008;
}
.world-start span {
  font-size: 11px;
  letter-spacing: 0.15em;
  font-weight: 800;
}
.world-start b {
  font-size: 21px;
  line-height: 1.2;
  max-width: 70%;
}
.world-today,
.world-traveller {
  position: absolute;
  z-index: 4;
  transform: translate(-50%, -90%);
  pointer-events: none;
  width: 48px;
  height: 75px;
}
.world-today .bot {
  width: 44px;
  height: 54px;
  margin: auto;
}
.world-today svg {
  width: 44px;
  height: 54px;
}
.world-today span {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  background: #fff4ba;
  color: #173d2a;
  font-size: 9px;
  font-weight: 900;
  padding: 2px 5px;
  border-radius: 6px;
}
.world-traveller {
  height: 60px;
  width: 48px;
  transition:
    left 0.18s linear,
    top 0.18s linear;
}
.world-traveller svg {
  height: 60px;
  width: 48px;
}
.world-caption {
  padding: 14px 20px;
  background: #142c24;
  color: #d4e4d1;
}
.world-caption p {
  margin: 4px 0;
}
.world-caption .helper {
  color: #b3c9b6;
}
.world-progress {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.world-progress .pill {
  background: #e5ecd8;
  color: #244835;
  font-size: 14px;
}
.adventure-heading h1 {
  font-size: 32px;
  line-height: 1.1;
}
.world-map .tour-controls {
  color: #e1ead7;
  padding: 12px 15px;
  background: #16372d;
}
.tour-controls .btn {
  font-size: 13px;
  min-height: 44px;
}
.world-map .fireworks {
  margin: 0 14px 16px;
}
.world-map .tour-message {
  color: #e1ead7;
  margin: 4px 10px;
  padding: 14px;
}
.world-day.tour-stop {
  box-shadow: 0 0 0 6px #fff5c777;
}
.parent-tabs {
  display: grid;
  grid-template-columns: 1fr !important;
  gap: 8px;
  padding: 4px;
  margin-bottom: 20px;
  background: #e2e8df;
  border-radius: 19px;
}
.parent-tabs button {
  font-size: 16px !important;
  min-height: 48px;
  padding: 12px 16px !important;
  white-space: normal;
  word-break: normal !important;
  overflow-wrap: normal !important;
  hyphens: none;
  min-width: 0;
  border-radius: 14px;
}
.parent-tabs button:last-child {
  grid-column: auto;
}
.parent-tabs button.active {
  background: #203b32;
  color: #fff9e4;
}
.parent-subnav {
  margin-bottom: 14px;
}
.parent-play {
  margin: 14px 0 20px;
}
.category > summary {
  white-space: normal;
  word-break: normal;
  overflow-wrap: normal;
}
.btn {
  word-break: normal;
  overflow-wrap: break-word;
}
.library-row .check {
  min-width: 0;
  flex-basis: 100%;
}
.library-row > .stack {
  width: 100%;
  margin-top: 4px;
}
.demo-options {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin: 0 0 16px;
}
.demo-options .btn {
  flex: 1;
  min-width: 125px;
  font-size: 14px;
}
.motion-demo {
  margin-bottom: 12px;
}
.session-page .voice-state {
  color: #c9dacb;
  text-align: center;
  margin: 8px 0;
}
.session-page [data-voice-retry] {
  color: #ffe2a0;
  display: block;
  margin: auto;
}
.session-page [data-voice-retry][hidden] {
  display: none;
}
.session-page .session-stage {
  margin-top: 8px;
}
.session-page .session-figure {
  height: clamp(210px, 32dvh, 300px);
}
.session-page .session-head > div {
  flex: 1;
  min-width: 0;
}
.session-page .session-head .eyebrow {
  overflow-wrap: break-word;
}
.session-page .session-controls .two-col {
  gap: 10px;
}
.entry {
  gap: 10px;
}
.entry button {
  max-width: 100%;
}
.stats .stat {
  min-width: 0;
}
.stats .stat span {
  line-height: 1.4;
}
.app-footer {
  font-size: 12px;
  line-height: 1.5;
}
body:has(.parent-tabs) .topbar {
  border-bottom-color: #51796344;
}
body:has(.parent-tabs) .app-shell {
  max-width: 800px;
}
@media (min-width: 620px) {
  .parent-tabs {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
  .parent-tabs button {
    font-size: 15px !important;
  }
  .world-map {
    max-width: 540px;
    margin-left: auto;
    margin-right: auto;
  }
  .world-day {
    width: 54px;
    height: 54px;
  }
  .world-day b {
    font-size: 21px;
  }
  .week-dot {
    width: 44px;
    height: 44px;
  }
  .week-line:before {
    top: 45px;
  }
}
@media (max-width: 370px) {
  .app-shell {
    padding-left: 12px;
    padding-right: 12px;
  }
  .map-card {
    padding: 18px 9px !important;
  }
  .week-dot {
    width: 30px;
    height: 30px;
    font-size: 15px;
  }
  .week-line:before {
    top: 45px;
  }
  .week-point {
    gap: 10px;
  }
  .hero {
    padding: 16px 12px;
  }
  .hero h1 {
    font-size: 27px;
  }
  .hero .bot {
    max-width: 76px;
  }
  .world-map {
    padding: 0 !important;
  }
  .world-day {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
  }
  .world-station {
    width: 48px;
    min-width: 48px;
    height: 56px;
  }
  .world-start {
    left: 16px;
    right: 16px;
  }
  .world-start b {
    font-size: 19px;
  }
  .world-today {
    width: 40px;
  }
  .parent-tabs button {
    font-size: 16px !important;
  }
  .parent-play {
    line-height: 1.4;
  }
  .voice-tools {
    gap: 8px;
  }
  .hero .voice-state {
    font-size: 12px;
  }
  .week-station {
    font-size: 13px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .world-traveller {
    transition: none;
  }
  .world-today .bot {
    animation: none;
  }
}
.route-heading{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.route-heading .route-symbol svg{width:24px;height:24px}.session-page .session-controls .btn{min-height:50px}dialog .voice-state{padding:10px 0;color:#4b6355}
/* Low-height landscape: keep movement, timer and controls visible together. */
@media(max-height:500px) and (min-width:600px){
 .session-page .app-shell{max-width:1000px;padding:10px 18px}.session-page #main:has(.session-controls){display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:6px 24px;align-items:start}.session-page #main:has(.session-controls)>.session-head{grid-column:1/-1;margin:0}.session-page #main:has(.session-controls)>.session-stage{grid-column:1;grid-row:2/6;margin:0;max-width:none}.session-page #main:has(.session-controls)>.voice-state{grid-column:2;grid-row:2;text-align:left;margin:2px 0}.session-page #main:has(.session-controls)>[data-voice-retry]{grid-column:2;grid-row:3;margin:0;text-align:left;min-height:36px}.session-page #main:has(.session-controls)>.session-controls{grid-column:2;grid-row:4;position:static;margin:0;padding:8px 0;background:none;border:0;align-self:center}.session-page #main:has(.session-controls)>.wake-note{grid-column:2;grid-row:5;margin:0;text-align:left}.session-page .session-stage h1{font-size:23px;min-height:0;margin:4px 0 6px}.session-page .session-figure{height:140px;margin-bottom:4px}.session-page .session-tip{font-size:16px;line-height:1.3;margin:5px 0}.session-page .clock-row{max-width:320px}.session-page .timer-sub{font-size:12px;margin:5px 0}.session-page .session-controls .btn{font-size:15px;min-height:48px;padding:10px}.session-page .session-guide-link{flex-wrap:wrap;gap:3px}.session-page .session-guide-link .link-btn{font-size:14px}.session-page .together{display:none}
}
@media(max-height:500px) and (min-width:600px){.session-page .together{display:inline-block;font-size:11px;padding:3px 7px;margin:0 0 3px}.session-page .session-guide-link{justify-content:space-between;gap:8px 16px}.session-page .session-guide-link .link-btn{min-height:44px}}
.world-effects{position:absolute;inset:0;pointer-events:none;z-index:0}.world-effects svg,.week-effects svg{width:100%;height:100%;display:block}.seasonal-week{position:relative;isolation:isolate}.week-effects{position:absolute;inset:0;opacity:.32;z-index:-1;pointer-events:none}.seasonal-week[data-season="10"]{background:linear-gradient(140deg,#182234,#26362d)!important}.seasonal-week[data-season="12"]{background:linear-gradient(140deg,#234359,#2e585c)!important}.seasonal-week[data-season="7"],.seasonal-week[data-season="8"]{background:linear-gradient(140deg,#18505b,#267b79)!important}.future-fog{position:absolute;z-index:1;pointer-events:none;transform:translate(-50%,-50%);width:145px;height:110px;background:radial-gradient(ellipse,#b6c6ca99 10%,#bdc8ca66 45%,transparent 72%);filter:blur(6px);animation:fogFloat 9s ease-in-out infinite}.world-day.unexplored{z-index:2;opacity:.7;box-shadow:none;border-style:dashed}.month-week-summary{padding:14px 0;border-bottom:1px solid #dce3d7}.month-week-summary b,.month-week-summary small{display:block}.month-week-summary small{font-size:13px;color:#627569;margin-top:4px}.month-week-summary p{margin:6px 0 0}@keyframes fogFloat{50%{translate:7px 0}}@media(prefers-reduced-motion:reduce){.future-fog{animation:none}}

/* WORK continuación: Juegos independientes del entrenamiento */
.top-games-btn{display:inline-flex;gap:.4rem;align-items:center;padding:.72rem .85rem;min-height:44px;border-radius:14px;background:#e8f4e4;border:1px solid #658d74;color:#23473c;font-size:15px;font-weight:800;white-space:nowrap;cursor:pointer;margin-left:auto;margin-right:.45rem}
.top-games-btn:focus-visible,.game-tile:focus-visible{outline:3px solid #2e83b0;outline-offset:3px}
.games-title{margin:0 0 6px}.games-subtitle{margin:0 0 18px;color:#536c6c}.games-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.game-tile{padding:18px 12px;min-height:158px;border-radius:18px;border:2px solid #bdd9ca;display:flex;align-items:flex-start;flex-direction:column;gap:9px;background:#f0f6ef;color:#27443d;text-align:left;cursor:pointer}.game-tile .game-icon{font-size:31px;line-height:1.1}.game-tile strong{font-size:17px;line-height:1.15}.game-tile small{font-size:13px;line-height:1.3}.games-back{margin-bottom:16px}.word-card h2{font-size:clamp(25px,6vw,38px);margin:14px 0}.word-def{font-size:18px;line-height:1.5}.word-example{font-size:17px;line-height:1.5}.word-letters{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;font-size:25px;font-weight:900;letter-spacing:.06em;margin:14px 0 22px}.letter-box{width:33px;border-bottom:3px solid #4b7b72;text-align:center;min-height:40px}.letter-box.revealed{border-color:#79a780}.word-keyboard{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.word-keyboard button{min-width:0;min-height:45px;padding:3px;border-radius:12px;background:#d5e6dd;border:1px solid #749883;color:#1e4136;font-size:17px;font-weight:800}.word-keyboard button:disabled{opacity:.4}.word-hint{font-weight:750}.word-finished{border-radius:14px;background:#d6eada;padding:13px;margin:14px 0}.word-robot{font-size:52px;text-align:center;margin:8px 0;min-height:55px}.game-meta{font-size:14px;color:#4a6761}.word-past{display:grid;gap:8px}.word-past button{text-align:left;min-height:45px}.topbar .brand{min-width:0;flex:1}.topbar{gap:6px}
@media(max-width:370px){.top-games-btn{font-size:13px;padding:.62rem .56rem}.games-grid{gap:8px}.game-tile{min-height:155px;padding:13px 8px}.game-tile strong{font-size:15px}.word-keyboard{gap:3px}.word-keyboard button{min-height:43px}}

/* 3.7: feelings are optional self-report, never a score. */
.mood{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mood .feeling-choice{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;min-height:112px;padding:14px;border:2px solid #71988b;border-radius:18px;background:#edf4ec;color:#23453a;font-size:17px;font-weight:750}.feeling-emoji{font-size:40px;line-height:1.25}.feeling-choice:focus-visible{outline:3px solid #286eae;outline-offset:3px}.world-effects{pointer-events:none}.word-robot.pixel-puzzle{display:flex;justify-content:center;align-items:center;gap:4px;min-height:85px}.pixel-piece{display:inline-block;font-size:30px;transition:transform .7s ease,opacity .7s ease}.pixel-piece.piece-0{transform:translate(calc(var(--apart)*-3px),calc(var(--apart)*2px)) rotate(calc(var(--apart)*-6deg))}.pixel-piece.piece-2{transform:translate(calc(var(--apart)*3px),calc(var(--apart)*2px)) rotate(calc(var(--apart)*6deg))}.pixel-piece.piece-3{transform:translateY(calc(var(--apart)*4px)) rotate(calc(var(--apart)*10deg));font-size:23px}.pixel-puzzle.rebuilt .pixel-piece{transform:none}.game-tile small,.game-meta,.helper{font-size:max(14px,1em)}.category>summary{min-height:44px;padding-block:12px}.feeling-choice:hover{background:#dcebdd}
@media(prefers-reduced-motion:reduce){.pixel-piece,.world-map *{animation:none!important;transition:none!important}}@media print{.world-map *{animation:none!important}}

.pixel-part{transform:translate(var(--dx),var(--dy)) rotate(var(--rot));transform-origin:center;transform-box:fill-box;transition:transform .75s cubic-bezier(.2,.7,.2,1)}.pixel-puzzle.rebuilt .pixel-part{transform:none}@media(prefers-reduced-motion:reduce){.pixel-part{transition:none!important}}

.pixel-puzzle.animate:not(.rebuilt) .pixel-part{animation:pixelScatter .75s ease-out both}.pixel-puzzle.animate.rebuilt .pixel-part{animation:pixelRebuild .85s ease-out both}@keyframes pixelScatter{from{transform:none}to{transform:translate(var(--dx),var(--dy)) rotate(var(--rot))}}@keyframes pixelRebuild{from{transform:translate(var(--dx),var(--dy)) rotate(var(--rot))}70%{transform:translateY(-2px)}to{transform:none}}@media(prefers-reduced-motion:reduce){.pixel-part{animation:none!important;transition:none!important}}

/* 3.7.2 · Prioridad 3: identidad familiar, acceso directo y lectura clara */
.person-avatar,.mind-player-portrait{
  width:64px;height:64px;flex:0 0 64px;object-fit:cover;border-radius:50%;
  background:#f5ead2;border:3px solid #fff;box-shadow:0 0 0 1px #b5cabc;
}
.avatar-fallback{display:grid;place-items:center;background:#e1e8df;color:#345a4d;font-size:25px}
.coach-choose{margin:0;padding:0;border:0;min-width:0}
.coach-choose legend{padding:0 0 9px;font-size:17px;font-weight:850;color:#203548}
.coach-choice-grid{display:grid;gap:9px}
.coach-choice{display:flex;align-items:center;gap:12px;min-height:88px;padding:12px;
  background:#f8faf6;border:2px solid #b5c6b8;border-radius:18px;cursor:pointer}
.coach-choice:has(input:checked){border-color:#277c65;background:#e5f3e5;box-shadow:0 0 0 2px #d4ead9 inset}
.coach-choice:has(input:focus-visible){outline:3px solid #237ba9;outline-offset:2px}
.coach-choice input[type="radio"]{order:3;margin-left:auto;width:22px;height:22px;accent-color:#226c55;flex:0 0 22px}
.coach-choice .person-avatar{width:62px;height:62px;flex-basis:62px}
.coach-choice-label{display:flex;min-width:0;flex-direction:column;gap:2px}
.coach-choice-label strong{font-size:17px;line-height:1.25;overflow-wrap:anywhere}
.coach-choice-label small{color:#52675f;font-size:14px}
.coach-pin-form{display:grid;gap:14px}
.coach-pin-form .btn{min-height:52px}
.family-person-row{display:flex;gap:14px;align-items:center;margin-bottom:12px}
.family-person-row h3{margin:0;font-size:18px}
.family-person-status{color:#50685d;font-size:14px;line-height:1.4;margin:5px 0 0}
.family-actions{margin-top:8px;padding:10px 12px;background:#f4f7f0;border:1px solid #cdded0;border-radius:14px}
.family-actions summary{font-size:15px;font-weight:750;cursor:pointer;min-height:36px;display:list-item}
.family-actions .btn{margin:7px 0;min-height:46px}
.parent-tabs[role="tablist"] button[aria-selected="true"]{box-shadow:inset 0 -3px #286956}
.parent-tabs[role="tablist"] button:focus-visible{outline:3px solid #25789d;outline-offset:2px}
.topbar .brand{flex:0 1 auto;min-width:0}
.topbar .brand>span:last-child{white-space:nowrap}
.topbar .brand .quest-logo{max-width:100%}
.topbar .top-games-btn{margin-left:auto;margin-right:0;min-height:46px}
.games-grid .game-tile{min-width:0;min-height:177px;justify-content:flex-start;gap:9px;position:relative}
.games-grid .game-tile .game-access{margin-top:auto;padding:4px 9px;display:inline-flex;border:1px solid #bbd2c5;border-radius:16px;font-size:12px;font-weight:780;background:#fff;color:#255c46}
.games-grid .game-tile-0{background:#eff4fd;border-color:#aebfdb}
.games-grid .game-tile-1{background:#fff2df;border-color:#e4cb9e}
.games-grid .game-tile-2{background:#e7f4e9;border-color:#b2d2b9}
.games-grid .game-tile-3{background:#f6ecfa;border-color:#d7c0e1}
.games-grid .game-tile strong{overflow-wrap:break-word}
.games-grid .game-tile:active{transform:translateY(1px)}
.settings-sound{margin-top:14px}
.settings-sound .category-body{display:grid;gap:10px}
@media (max-width:390px){
  .topbar{gap:5px}
  .topbar .brand{gap:6px;font-size:13px;letter-spacing:.025em}
  .topbar .brand small{font-size:9px;letter-spacing:0}
  .topbar .brand-mark{width:36px;height:36px;flex:0 0 36px;border-radius:11px}
  .topbar .top-games-btn{font-size:13px;padding:8px;min-height:46px;gap:2px}
  .topbar .icon-btn{min-width:45px;width:45px;flex:0 0 45px}
  .games-grid{gap:9px}
  .games-grid .game-tile{padding:15px 10px;min-height:185px}
  .games-grid .game-tile strong{font-size:16px}
  .games-grid .game-tile small{font-size:13px;line-height:1.3}
}
@media (max-width:340px){
  .topbar .brand small{display:none}
  .topbar .brand{font-size:12px}
  .games-grid{grid-template-columns:1fr 1fr}
  .games-grid .game-tile{padding:13px 8px}
}
@media (prefers-reduced-motion:reduce){
  .games-grid .game-tile{transition:none!important;transform:none!important}
}

/* Narrow screens: prevent the brand tagline from colliding with Games. */
@media(max-width:520px){.topbar .brand small{display:none}}
/* Word guessing uses sufficiently wide keys instead of seven cramped columns. */
.word-keyboard{grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}
.word-keyboard button{min-height:48px;font-size:19px}
@media(max-width:370px){.word-keyboard{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}}

/* Palabras compuestas: la separación es visible, no una letra para adivinar. */
.word-gap{width:16px;min-width:16px;min-height:40px;display:inline-block;flex-shrink:0}
@media(max-width:380px){.word-letters{gap:4px}.letter-box{width:29px;font-size:22px}.word-gap{width:11px;min-width:11px}}

/* Aciertos táctiles mínimos: teclado de letras 48 px, sin columnas estrechas en iPhone. */
.word-keyboard{grid-template-columns:repeat(6,minmax(0,1fr))}
.word-keyboard button{min-height:48px;touch-action:manipulation}
@media(max-width:360px){.word-keyboard{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(min-width:480px){.word-keyboard{grid-template-columns:repeat(7,minmax(0,1fr))}}
