/* The tutor: an ordinary chatbot next to the real challenge stage.
   Everything inside a phone is sized in iPhone points (--pt). */

/* ------------------------------------------------------------ layout */
[data-scene="tutor"] { padding: clamp(110px, 16vh, 180px) 0 clamp(90px, 12vh, 140px); }
.tutor-head { margin-bottom: clamp(44px, 7vh, 72px); }
.tutor-head .h2 { margin-bottom: 22px; }
.tutor-head .lede { max-width: 31ch; }

.tutor-stage {
  --phone-w: min(316px, max(250px, 23vw), calc((100svh - 120px) / 2.054));
  max-width: var(--max); margin: 0 auto; padding: 0 var(--gutter);
  display: grid; grid-template-columns: auto auto 270px;
  justify-content: center; align-items: end;
  column-gap: clamp(32px, 4.6vw, 66px);
}
.tutor-col { margin: 0; display: flex; flex-direction: column; align-items: center; }
.tutor-col figcaption {
  margin-top: 18px; font-size: 17px; font-weight: 600; letter-spacing: -0.01em; color: var(--ink);
}
.tutor-col-bot figcaption { color: var(--muted); }

/* the visitor's replies: what the kid could write next */
.tutor-replies {
  align-self: end;
  margin-bottom: calc(var(--phone-w) * 0.105 + 44px);
  display: flex; flex-direction: column; align-items: flex-start; gap: 18px;
  min-height: 196px; justify-content: flex-end;
}
.tutor-chips { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.tutor-chip {
  text-align: left; max-width: 100%;
  font-size: 17px; line-height: 1.3; font-weight: 500; letter-spacing: -0.012em;
  padding: 12px 18px; border-radius: 22px;
  background: var(--soft); color: var(--ink);
  transition: background-color .2s, color .2s, opacity .3s, transform .35s var(--spring);
  -webkit-tap-highlight-color: transparent;
}
.tutor-chip:hover { background: #e8e8ed; }
.tutor-chip:active { transform: scale(0.96); }
.tutor-chip:focus-visible, .tutor-again:focus-visible { outline: 2px solid var(--gold-deep); outline-offset: 2px; }
.tutor-chips.show .tutor-chip { animation: tutor-chip-in .5s var(--out) both; animation-delay: calc(var(--i) * 70ms); }
.tutor-chips.wait .tutor-chip { pointer-events: none; opacity: .32; }
.tutor-chips.wait .tutor-chip.picked { background: var(--ink); color: #fff; opacity: 1; }
@keyframes tutor-chip-in { from { opacity: 0; transform: translateY(10px); } }
.tutor-again { color: var(--gold-deep); font-weight: 600; font-size: 17px; padding: 4px 0; }
.tutor-again:hover { text-decoration: underline; }

@media (max-width: 1100px) {
  .tutor-stage { grid-template-columns: auto auto; }
  .tutor-replies { grid-column: 1 / -1; justify-self: center; align-items: center; margin: 30px 0 0; min-height: 0; }
  .tutor-chips { flex-direction: row; flex-wrap: wrap; justify-content: center; min-height: 48px; }
}
@media (max-width: 860px) {
  [data-scene="tutor"] { padding-top: clamp(96px, 14vh, 140px); }
  .tutor-head { text-align: center; }
  .tutor-head .lede { margin: 0 auto; }
  .tutor-stage { --phone-w: min(300px, 78vw, max(240px, calc((100svh - 250px) / 2.054))); grid-template-columns: 1fr; justify-items: center; }
  .tutor-col figcaption { margin-top: 12px; }
  /* the chatbot shows only its upper half: the question and the wall it gets back */
  .tutor-crop {
    height: calc(var(--phone-w) * 2.054 * 0.5); overflow: hidden;
    -webkit-mask-image: linear-gradient(#000 62%, transparent);
    mask-image: linear-gradient(#000 62%, transparent);
  }
  .tutor-col-bot figcaption { margin-top: 0; }
  .tutor-col-ll { margin-top: 44px; }
  .tutor-replies { width: 100%; max-width: 360px; margin-top: 18px; gap: 12px; }
  .tutor-chips { flex-direction: column; align-items: stretch; flex-wrap: nowrap; min-height: 0; gap: 8px; }
  .tutor-chip { text-align: center; font-size: 16px; padding: 11px 16px; }
}

/* ------------------------------------------------- the chatbot phone */
.tutor-bot-screen { background: #fff; color: #0d0d0d; font-family: var(--sans); }
.tutor-bot-bar {
  position: absolute; top: calc(58 * var(--pt)); left: calc(20 * var(--pt)); right: calc(20 * var(--pt));
  height: calc(40 * var(--pt)); display: flex; align-items: center; justify-content: space-between; z-index: 2;
}
.tutor-bot-bar svg { width: calc(24 * var(--pt)); height: calc(24 * var(--pt)); }
.tutor-bot-chat {
  position: absolute; top: calc(104 * var(--pt)); left: 0; right: 0; bottom: calc(96 * var(--pt));
  padding: calc(14 * var(--pt)) calc(20 * var(--pt)) calc(24 * var(--pt));
  overflow-y: auto; scrollbar-width: none;
}
.tutor-bot-chat::-webkit-scrollbar { display: none; }
.tutor-bot-me {
  margin-left: auto; width: fit-content; max-width: 80%;
  background: #f1f1f1; border-radius: calc(20 * var(--pt));
  padding: calc(10 * var(--pt)) calc(15 * var(--pt));
  font-size: calc(16 * var(--pt)); line-height: 1.38;
  opacity: 0; transform: translateY(calc(10 * var(--pt)));
  transition: opacity .3s, transform .45s var(--out);
}
.tutor-bot.sent .tutor-bot-me { opacity: 1; transform: none; }
.tutor-bot-think {
  width: calc(12 * var(--pt)); height: calc(12 * var(--pt)); border-radius: 50%;
  background: #0d0d0d; margin: calc(22 * var(--pt)) 0 0 calc(2 * var(--pt));
  opacity: 0; transform: scale(.6);
}
.tutor-bot.sent:not(.streaming) .tutor-bot-think { opacity: 1; animation: tutor-pulse 1s ease-in-out infinite alternate; }
.tutor-bot.streaming .tutor-bot-think { display: none; }
@keyframes tutor-pulse { from { transform: scale(.6); } to { transform: scale(1); } }
.tutor-bot-answer {
  margin-top: calc(18 * var(--pt));
  font-size: calc(15.5 * var(--pt)); line-height: 1.5; letter-spacing: -0.005em;
}
.tutor-bot-answer p { margin-bottom: calc(12 * var(--pt)); }
.tutor-bot-answer ol { list-style: none; margin-bottom: calc(12 * var(--pt)); }
.tutor-bot-answer li { display: flex; gap: calc(7 * var(--pt)); margin-bottom: calc(8 * var(--pt)); }
.tutor-bot-answer b { font-weight: 650; }
.tutor-num { flex: none; min-width: calc(15 * var(--pt)); font-weight: 600; }
.tutor-tok { opacity: 0; transition: opacity .22s linear; }
.tutor-tok.on { opacity: 1; }
.tutor-bot-composer {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: calc(8 * var(--pt)) calc(14 * var(--pt)) calc(40 * var(--pt));
  display: flex; align-items: center; gap: calc(10 * var(--pt)); background: #fff;
}
.tutor-bot-plus {
  flex: none; width: calc(38 * var(--pt)); height: calc(38 * var(--pt)); border-radius: 50%;
  display: grid; place-items: center; box-shadow: inset 0 0 0 1px #e3e3e3;
}
.tutor-bot-plus svg { width: 46%; height: 46%; }
.tutor-bot-field {
  position: relative; flex: 1; min-width: 0; height: calc(44 * var(--pt));
  border-radius: calc(22 * var(--pt)); box-shadow: inset 0 0 0 1px #e3e3e3;
  display: flex; align-items: center; padding: 0 calc(46 * var(--pt)) 0 calc(16 * var(--pt));
  font-size: calc(16 * var(--pt));
}
.tutor-bot-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tutor-bot-ph { color: #9a9a9a; }
.tutor-bot-field.has-text .tutor-bot-ph { display: none; }
.tutor-bot-send {
  position: absolute; right: calc(6 * var(--pt)); top: calc(6 * var(--pt));
  width: calc(32 * var(--pt)); height: calc(32 * var(--pt)); border-radius: 50%;
  background: #000; display: grid; place-items: center; opacity: .18; transition: opacity .2s;
}
.tutor-bot-field.has-text .tutor-bot-send { opacity: 1; }
.tutor-bot-send svg { width: 60%; height: 60%; }

/* ------------------------------------------ the real challenge stage */
.tutor-ll-screen .status { z-index: 6; }
.tutor-chat {
  position: absolute; top: 0; left: 0; right: 0; bottom: calc(97 * var(--pt));
  overflow-y: auto; scrollbar-width: none; outline: none;
}
.tutor-chat::-webkit-scrollbar { display: none; }
.tutor-msgs {
  display: flex; flex-direction: column; gap: calc(16 * var(--pt));
  padding: calc(168 * var(--pt)) calc(20 * var(--pt)) calc(12 * var(--pt));
}
.tutor-ll.can-finish .tutor-msgs { padding-bottom: calc(66 * var(--pt)); }
.tutor-row { display: flex; align-items: flex-start; gap: calc(10 * var(--pt)); }
.tutor-row.ai { padding-right: calc(44 * var(--pt)); }
.tutor-row.kid { justify-content: flex-end; padding-left: calc(44 * var(--pt)); }
.tutor-row.in { animation: tutor-in .38s var(--out) both; }
@keyframes tutor-in { from { opacity: 0; transform: translateY(calc(10 * var(--pt))); } }
.tutor-av {
  flex: none; width: calc(30 * var(--pt)); height: calc(30 * var(--pt)); border-radius: 50%;
  background: rgba(201, 166, 107, 0.1); color: var(--gold);
  display: grid; place-items: center;
}
.tutor-av svg { width: calc(18 * var(--pt)); height: calc(18 * var(--pt)); stroke-width: 1.9; }
.tutor-bub {
  font-size: calc(16 * var(--pt)); line-height: calc(24 * var(--pt));
  padding: calc(12 * var(--pt)) calc(16 * var(--pt));
  border-radius: calc(16 * var(--pt));
  background: var(--cream); color: var(--app-ink);
  box-shadow: inset 0 0 0 calc(0.5 * var(--pt)) rgba(26, 26, 26, 0.1), 0 calc(2 * var(--pt)) calc(4 * var(--pt)) rgba(26, 26, 26, 0.06);
  overflow-wrap: anywhere;
}
.tutor-row.kid .tutor-bub { background: var(--gold); color: #fff; box-shadow: 0 calc(2 * var(--pt)) calc(4 * var(--pt)) rgba(26, 26, 26, 0.06); }
.tutor-typing .tutor-bub { display: flex; gap: calc(5 * var(--pt)); padding: calc(14 * var(--pt)) calc(18 * var(--pt)); height: calc(42 * var(--pt)); align-items: center; }
.tutor-typing i {
  width: calc(7 * var(--pt)); height: calc(7 * var(--pt)); border-radius: 50%;
  background: rgba(26, 26, 26, 0.28);
  animation: tutor-dot 1.2s ease-in-out infinite;
}
.tutor-typing i:nth-child(2) { animation-delay: .15s; }
.tutor-typing i:nth-child(3) { animation-delay: .3s; }
@keyframes tutor-dot { 0%, 60%, 100% { transform: none; } 30% { transform: translateY(calc(-4 * var(--pt))); } }

/* the scroll edge under the lesson bar */
.tutor-edge {
  position: absolute; top: 0; left: 0; right: 0; height: calc(150 * var(--pt));
  background: linear-gradient(var(--parch) 0, var(--parch) 68%, rgba(239, 227, 199, 0.85) 80%, rgba(239, 227, 199, 0));
  pointer-events: none; z-index: 2;
}
.tutor-bar {
  position: absolute; top: calc(60 * var(--pt)); left: calc(16 * var(--pt)); right: calc(16 * var(--pt));
  height: calc(44 * var(--pt)); display: flex; align-items: center; justify-content: space-between; z-index: 3;
}
.tutor-circle {
  width: calc(44 * var(--pt)); height: calc(44 * var(--pt)); border-radius: 50%;
  display: grid; place-items: center; flex: none;
  background: rgba(255, 250, 234, 0.72);
  box-shadow: inset 0 0 0 0.5px rgba(255, 255, 255, 0.9), 0 0 0 0.5px rgba(26, 26, 26, 0.05), 0 calc(6 * var(--pt)) calc(18 * var(--pt)) rgba(138, 106, 59, 0.14);
  color: var(--gold);
}
.tutor-circle svg { width: calc(22 * var(--pt)); height: calc(22 * var(--pt)); }
.tutor-step { font-family: var(--sans); font-size: calc(15 * var(--pt)); font-variant-numeric: tabular-nums; color: rgba(26, 26, 26, 0.6); }
.tutor-title {
  position: absolute; left: calc(56 * var(--pt)); right: calc(56 * var(--pt)); text-align: center;
  font-family: var(--sans); font-weight: 600; font-size: calc(17 * var(--pt)); letter-spacing: -0.02em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.tutor-finish {
  position: absolute; left: 50%; bottom: calc(105 * var(--pt)); z-index: 3;
  display: flex; align-items: center; gap: calc(8 * var(--pt));
  padding: calc(10 * var(--pt)) calc(20 * var(--pt)); border-radius: 999px;
  font-family: var(--serif); font-weight: 500; font-size: calc(14 * var(--pt)); color: var(--gold-deep);
  background: rgba(252, 247, 234, 0.82);
  white-space: nowrap;
  opacity: 0; transform: translate(-50%, calc(26 * var(--pt))); pointer-events: none;
  transition: opacity .3s, transform .5s var(--spring);
}
.tutor-finish svg { width: calc(15 * var(--pt)); height: calc(15 * var(--pt)); color: var(--gold); }
.tutor-ll.can-finish .tutor-finish { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; cursor: pointer; }
.tutor-ll.can-finish .tutor-finish:active { transform: translate(-50%, 0) scale(.95); }
.tutor-ll.can-finish:not(.complete) .tutor-finish { animation: tutor-nudge 2.6s 2s ease-in-out infinite; }
@keyframes tutor-nudge { 0%, 80%, 100% { transform: translate(-50%, 0); } 88% { transform: translate(-50%, calc(-3 * var(--pt))); } }

.tutor-input {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 3;
  padding: calc(10 * var(--pt)) calc(20 * var(--pt)) calc(44 * var(--pt));
  display: flex; align-items: flex-end; gap: calc(12 * var(--pt));
  background: var(--parch);
  box-shadow: 0 calc(-0.5 * var(--pt)) 0 rgba(26, 26, 26, 0.1);
}
.tutor-field {
  flex: 1; min-width: 0; min-height: calc(43 * var(--pt));
  padding: calc(11 * var(--pt)) calc(16 * var(--pt));
  background: var(--cream); border-radius: calc(20 * var(--pt));
  box-shadow: inset 0 0 0 calc(0.5 * var(--pt)) rgba(26, 26, 26, 0.1);
  font-size: calc(16 * var(--pt)); line-height: calc(21 * var(--pt));
}
.tutor-ph { color: rgba(26, 26, 26, 0.3); }
.tutor-input.has-text .tutor-ph { display: none; }
.tutor-send {
  flex: none; width: calc(36 * var(--pt)); height: calc(36 * var(--pt)); border-radius: 50%;
  margin-bottom: calc(3.5 * var(--pt));
  display: grid; place-items: center; color: rgba(26, 26, 26, 0.22);
  background: rgba(255, 250, 234, 0.72);
  box-shadow: inset 0 0 0 0.5px rgba(255, 255, 255, 0.9), 0 0 0 0.5px rgba(26, 26, 26, 0.05), 0 calc(6 * var(--pt)) calc(16 * var(--pt)) rgba(138, 106, 59, 0.14);
  transition: color .2s;
}
.tutor-input.has-text .tutor-send { color: var(--gold); }
.tutor-send svg { width: calc(16 * var(--pt)); height: calc(16 * var(--pt)); }

/* ------------------------------------ Lesson complete (the real next screen) */
.tutor-done {
  position: absolute; inset: 0; z-index: 5;
  background: var(--parch);
  display: flex; flex-direction: column; align-items: center;
  padding: calc(116 * var(--pt)) calc(20 * var(--pt)) 0;
  opacity: 0; transform: scale(.95); pointer-events: none;
  transition: opacity .35s, transform .45s var(--out);
}
.tutor-ll.complete .tutor-done { opacity: 1; transform: none; pointer-events: auto; }
.tutor-seal { position: relative; width: calc(140 * var(--pt)); height: calc(140 * var(--pt)); margin-bottom: calc(28 * var(--pt)); flex: none; }
.tutor-seal > svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.tutor-seal-body {
  position: absolute; left: calc(15 * var(--pt)); top: calc(15 * var(--pt));
  width: calc(110 * var(--pt)); height: calc(110 * var(--pt)); border-radius: 50%;
  box-shadow: 0 calc(4 * var(--pt)) calc(26 * var(--pt)) rgba(201, 166, 107, 0.4);
}
.tutor-seal-body svg { width: 100%; height: 100%; }
.tutor-done-title { font-weight: 700; font-size: calc(32 * var(--pt)); line-height: 1.2; text-align: center; margin-bottom: calc(6 * var(--pt)); }
.tutor-done-lesson { font-weight: 500; font-size: calc(16 * var(--pt)); color: rgba(26, 26, 26, 0.55); text-align: center; margin-bottom: calc(28 * var(--pt)); }
.tutor-divider { align-self: stretch; margin: 0 calc(28 * var(--pt)) calc(32 * var(--pt)); display: flex; align-items: center; gap: calc(12 * var(--pt)); }
.tutor-divider i { flex: 1; height: calc(0.5 * var(--pt)); background: rgba(201, 166, 107, 0.25); }
.tutor-divider b { width: calc(5 * var(--pt)); height: calc(5 * var(--pt)); background: rgba(201, 166, 107, 0.4); transform: rotate(45deg) scale(.8); }
.tutor-cards { align-self: stretch; display: flex; flex-direction: column; gap: calc(14 * var(--pt)); }
.tutor-card {
  display: flex; align-items: center; gap: calc(16 * var(--pt));
  padding: calc(16 * var(--pt)) calc(18 * var(--pt));
  background: var(--cream); border-radius: calc(14 * var(--pt));
  box-shadow: inset 0 0 0 calc(0.5 * var(--pt)) color-mix(in srgb, var(--c) 12%, transparent), 0 calc(2 * var(--pt)) calc(4 * var(--pt)) rgba(26, 26, 26, 0.06);
}
.tutor-card-ic {
  flex: none; width: calc(52 * var(--pt)); height: calc(52 * var(--pt)); border-radius: calc(12 * var(--pt));
  display: grid; place-items: center; color: var(--c);
  background: color-mix(in srgb, var(--c) 8%, transparent);
  box-shadow: inset 0 0 0 calc(0.5 * var(--pt)) color-mix(in srgb, var(--c) 15%, transparent);
}
.tutor-card-ic svg { width: calc(24 * var(--pt)); height: calc(24 * var(--pt)); }
.tutor-card-l { font-weight: 500; font-size: calc(13 * var(--pt)); color: rgba(26, 26, 26, 0.55); margin-bottom: calc(3 * var(--pt)); }
.tutor-card-v { display: flex; align-items: baseline; gap: calc(5 * var(--pt)); }
.tutor-card-v b { font-weight: 700; font-size: calc(26 * var(--pt)); line-height: 1.1; font-variant-numeric: tabular-nums; }
.tutor-card-v span { font-weight: 500; font-size: calc(15 * var(--pt)); color: rgba(26, 26, 26, 0.55); }
.tutor-next {
  align-self: stretch; margin-top: calc(40 * var(--pt));
  display: flex; align-items: center; justify-content: center; gap: calc(10 * var(--pt));
  padding: calc(16 * var(--pt)) 0; border-radius: 999px;
  background: rgba(255, 249, 232, 0.86);
  font-family: var(--serif); font-weight: 600; font-size: calc(18 * var(--pt)); color: var(--app-ink);
  transition: transform .3s var(--spring);
}
.tutor-next:active { transform: scale(.97); }
.tutor-next svg { width: calc(17 * var(--pt)); height: calc(17 * var(--pt)); }
.tutor-finish:focus-visible, .tutor-next:focus-visible { outline: 2px solid var(--gold-deep); outline-offset: 2px; }

/* the entrance, staggered like runEntrance() */
.tutor-done > *, .tutor-seal-ring, .tutor-seal-body { transition: opacity .4s, transform .5s var(--out); }
.tutor-ll:not(.complete) .tutor-done > * { opacity: 0; transition: none; }
.tutor-ll:not(.complete) .tutor-done-title { transform: translateY(calc(12 * var(--pt))); }
.tutor-ll:not(.complete) .tutor-cards { transform: translateY(calc(20 * var(--pt))); }
.tutor-ll:not(.complete) .tutor-next { transform: translateY(calc(16 * var(--pt))); }
.tutor-ll:not(.complete) .tutor-seal-body { transform: scale(.3) rotate(-180deg); opacity: 0; transition: none; }
.tutor-ll:not(.complete) .tutor-seal-ring { opacity: 0; transform: scale(.9); transition: none; }
.tutor-seal-ring { transform-origin: 70px 70px; transform-box: view-box; }
.tutor-ll.complete .tutor-seal-body { transition: transform .75s cubic-bezier(.3, 1.45, .5, 1), opacity .25s; }
.tutor-ll.complete .tutor-seal-ring { transition-delay: .3s; transition-duration: .8s; }
.tutor-ll.complete .tutor-done-title { transition-delay: .6s; }
.tutor-ll.complete .tutor-done-lesson { transition-delay: .8s; }
.tutor-ll.complete .tutor-divider { transition-delay: .95s; }
.tutor-ll.complete .tutor-cards { transition-delay: 1.1s; }
.tutor-ll.complete .tutor-next { transition-delay: 1.5s; }

@media (prefers-reduced-motion: reduce) {
  .tutor-row.in { animation: tutor-fade .3s both; }
  @keyframes tutor-fade { from { opacity: 0; } }
  .tutor-typing i, .tutor-bot-think { animation: none !important; }
  .tutor-chips.show .tutor-chip { animation: tutor-fade .3s both; }
  .tutor-ll.can-finish:not(.complete) .tutor-finish { animation: none; }
  .tutor-finish { transform: translate(-50%, 0); }
  .tutor-done, .tutor-done > *, .tutor-seal-ring, .tutor-seal-body { transform: none !important; transition: opacity .3s !important; transition-delay: 0s !important; }
  .tutor-bot-me { transform: none; }
}
