/* ════════════════════════════════════════════════════════
   Prologue — style.css
   All styles extracted from the monolithic HTML.
   Paper texture: place paper_bg.png in img/ folder.
════════════════════════════════════════════════════════ */

/* ── DESIGN TOKENS ── */
:root{
  --paper:#FAFAF7; --paper2:#F0EFE9; --paper3:#E5E2D8;
  --ink:#1A1714; --ink-mid:#45403B; --ink-dim:#7A756E; --ink-faint:#C0BBB2;
  --red:#B82828; --red-dim:rgba(184,40,40,.09);
  --green:#246040; --green-dim:rgba(36,96,64,.09);
  --amber:#7A4E08; --amber-dim:rgba(122,78,8,.09);
  --blue:#243870; --blue-dim:rgba(36,56,112,.09);
  --purple:#5A3888;
  --teal:#0D7377;   --teal-dim:rgba(13,115,119,.09);
  --lavender:#6B5B95; --lavender-dim:rgba(107,91,149,.09);
  --font-h:'Times New Roman','Times',Georgia,serif;
  --font-n:'Times New Roman','Times',Georgia,serif;
  --font-script:'Times New Roman','Times',Georgia,serif;
  --font-b:'Times New Roman','Times',Georgia,serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%;font-family:'Times New Roman','Times',Georgia,serif;background:var(--paper);color:var(--ink);overflow:hidden}
body::before{content:'';position:fixed;inset:0;z-index:0;pointer-events:none;
  background:repeating-linear-gradient(transparent,transparent 29px,rgba(36,56,112,.042) 29px,rgba(36,56,112,.042) 30px)}
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--ink-faint);border-radius:2px}
.screen{display:none;width:100%;height:100%;overflow-y:auto;position:relative;z-index:1}
.screen.active{display:flex;flex-direction:column}

/* ── SHARED BUTTONS ── */
.btn-stamp{background:var(--ink);color:var(--paper);border:2.5px solid var(--ink);border-radius:3px;
  padding:12px 30px;font-family:var(--font-h);font-size:16px;letter-spacing:.5px;cursor:pointer;
  box-shadow:4px 4px 0 var(--ink-mid);transition:transform .12s,box-shadow .12s}
.btn-stamp:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink-mid)}
.btn-stamp:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink-mid)}
.btn-stamp:disabled{opacity:.35;cursor:not-allowed;transform:none}
.btn-ghost2{background:transparent;border:1.5px solid var(--ink-faint);border-radius:3px;
  padding:10px 22px;font-family:var(--font-b);font-size:14px;font-weight:600;color:var(--ink-mid);cursor:pointer;transition:all .15s}
.btn-ghost2:hover{border-color:var(--ink);color:var(--ink)}

/* ── ANIMATIONS ── */
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes sketchIn{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}
@keyframes dotBounce{0%,80%,100%{transform:translateY(0);opacity:.45}40%{transform:translateY(-7px);opacity:1}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes trophyPop{0%{transform:scale(0) rotate(-8deg)}70%{transform:scale(1.08) rotate(1deg)}100%{transform:scale(1) rotate(0)}}
@keyframes bubblePop{from{transform:translateX(-50%) scale(.75);opacity:0}to{transform:translateX(-50%) scale(1);opacity:1}}
@keyframes bubblePopRight{from{transform:translateX(50%) scale(.75);opacity:0}to{transform:translateX(50%) scale(1);opacity:1}}
@keyframes pulseRing{0%{box-shadow:0 0 0 0 rgba(184,40,40,.4)}70%{box-shadow:0 0 0 16px rgba(184,40,40,0)}100%{box-shadow:0 0 0 0 rgba(184,40,40,0)}}
@keyframes wavePulse{0%,100%{height:6px;opacity:.5}50%{height:28px;opacity:1}}
@keyframes recPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}

/* ════════════════════════════════════════════
   INTAKE SCREEN
════════════════════════════════════════════ */
#intakeScreen{align-items:center;justify-content:flex-start;overflow-y:auto}
.intake-wrap{width:100%;max-width:660px;margin:0 auto;padding:36px 28px 60px;display:flex;flex-direction:column;align-items:center}
.logo-stamp{display:inline-block;border:2.5px solid var(--ink);border-radius:3px;padding:5px 18px;
  font-family:var(--font-h);font-size:12px;letter-spacing:3px;text-transform:uppercase;color:var(--ink);
  margin-bottom:18px;animation:fadeUp .5s ease both;box-shadow:2px 2px 0 var(--ink)}
.intake-h{font-family:var(--font-h);font-size:clamp(30px,5vw,52px);line-height:1.15;text-align:center;
  margin-bottom:10px;animation:fadeUp .6s .07s ease both;letter-spacing:.5px}
.intake-h em{font-style:italic;color:var(--red);text-decoration:underline;text-decoration-style:wavy}
.intake-sub{font-family:var(--font-n);font-size:20px;color:var(--ink-mid);line-height:1.6;
  max-width:440px;margin-bottom:8px;text-align:center;animation:fadeUp .6s .14s ease both}

/* Saved profile banner */
.profile-banner{width:100%;background:#FFFDE7;border:2px solid #C8A830;border-radius:3px;
  padding:12px 16px;margin-bottom:14px;display:none;box-shadow:2px 2px 0 rgba(200,168,48,.25);
  animation:fadeUp .4s ease both;font-family:var(--font-n);font-size:16px}
.profile-banner.show{display:flex;align-items:center;justify-content:space-between;gap:12px}
.pb-text{color:#4A3800;flex:1}
.pb-btns{display:flex;gap:8px;flex-shrink:0}
.pb-btn{font-family:var(--font-n);font-size:14px;font-weight:700;padding:5px 14px;border-radius:3px;cursor:pointer;border:1.5px solid}
.pb-load{background:#4A3800;color:#FFFDE7;border-color:#4A3800}
.pb-dismiss{background:transparent;color:#7A6000;border-color:#C8A830}

/* Step cards */
.step-card{width:100%;background:var(--paper);border:2px solid var(--ink);border-radius:3px;
  padding:22px 20px;margin-bottom:14px;animation:sketchIn .45s ease both;
  box-shadow:4px 4px 0 var(--ink);position:relative}
.step-card::before{content:'';position:absolute;left:38px;top:0;bottom:0;width:1.5px;background:rgba(184,40,40,.16);pointer-events:none}
.step-head{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding-left:16px}
.step-num{width:28px;height:28px;border:2px solid var(--ink);border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-h);font-size:13px;color:var(--ink);flex-shrink:0;background:var(--paper3)}
.step-title{font-family:var(--font-h);font-size:20px;color:var(--ink);letter-spacing:.3px}
.step-sub{font-family:var(--font-n);font-size:14px;color:var(--ink-dim);margin-top:2px}

/* Form */
.fl{display:block;font-family:var(--font-n);font-size:16px;font-weight:700;color:var(--ink-mid);margin-bottom:6px}
.fg{margin-bottom:14px}
.fi,.fta{width:100%;background:var(--paper2);border:1.5px solid var(--ink);border-radius:2px;
  padding:11px 14px;color:var(--ink);font-family:var(--font-b);font-size:16px;outline:none;
  transition:box-shadow .15s;box-shadow:2px 2px 0 var(--ink-faint)}
.fta{resize:vertical;min-height:66px}
.fi:focus,.fta:focus{box-shadow:3px 3px 0 var(--ink);border-color:var(--ink)}
.fi::placeholder,.fta::placeholder{color:var(--ink-dim);font-family:var(--font-n);font-size:14px}
.id-pills{display:flex;gap:8px;flex-wrap:wrap}
.id-pill{padding:7px 15px;font-family:var(--font-n);font-size:15px;font-weight:600;cursor:pointer;
  border:1.5px solid var(--ink-faint);border-radius:3px;color:var(--ink-mid);background:var(--paper2);transition:all .15s}
.id-pill:hover{border-color:var(--ink);color:var(--ink)}
.id-pill.on{border:2px solid var(--ink);background:var(--ink);color:var(--paper);box-shadow:2px 2px 0 var(--ink-mid)}
.int-pills{display:flex;gap:10px}
.int-pill{flex:1;background:var(--paper2);border:1.5px solid var(--ink-faint);border-radius:3px;padding:12px 6px;text-align:center;cursor:pointer;transition:all .15s}
.int-pill .pi{display:block;font-size:22px;margin-bottom:5px}
.int-pill .pl{display:block;font-family:var(--font-h);font-size:13px;color:var(--ink-mid)}
.int-pill .ps{display:block;font-family:var(--font-n);font-size:12px;color:var(--ink-dim);margin-top:2px}
.int-pill:hover{border-color:var(--ink)}
.int-pill.on{border:2px solid var(--ink);background:var(--ink);box-shadow:2px 2px 0 var(--ink-mid)}
.int-pill.on .pl,.int-pill.on .ps{color:var(--paper)}

/* Mentor toggle */
.mentor-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0}
.mt-label{font-family:var(--font-n);font-size:16px;color:var(--ink-mid)}
.toggle-wrap{display:flex;gap:0}
.tog-opt{padding:7px 16px;font-family:var(--font-n);font-size:14px;font-weight:700;cursor:pointer;
  border:1.5px solid var(--ink-faint);color:var(--ink-dim);background:var(--paper2);transition:all .15s}
.tog-opt:first-child{border-radius:3px 0 0 3px}
.tog-opt:last-child{border-radius:0 3px 3px 0}
.tog-opt:not(:first-child){border-left:none}
.tog-opt.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.api-row{display:flex;gap:8px;margin-top:8px}
.prov-pill{padding:6px 14px;font-family:var(--font-n);font-size:14px;font-weight:600;cursor:pointer;
  border:1.5px solid var(--ink-faint);border-radius:3px;color:var(--ink-mid);background:var(--paper2);transition:all .15s}
.prov-pill:hover{border-color:var(--ink)}
.prov-pill.on{border:2px solid var(--ink);background:var(--ink);color:var(--paper)}

.resume-zone{border:2px dashed var(--ink-faint);border-radius:3px;padding:14px;text-align:center;cursor:pointer;transition:all .15s;margin-top:8px}
.resume-zone:hover{border-color:var(--ink);background:var(--paper2)}
.resume-zone.has{border-color:var(--green);background:var(--green-dim)}
.resume-zone p{font-family:var(--font-n);font-size:15px;color:var(--ink-dim)}
.resume-zone strong{color:var(--ink)}
#resumeFile{display:none}
.launch-bar{width:100%;margin-top:10px;animation:fadeUp .5s .35s ease both}
.btn-launch{width:100%;background:var(--ink);color:var(--paper);border:2.5px solid var(--ink);border-radius:3px;
  padding:16px;font-family:var(--font-h);font-size:19px;letter-spacing:1px;cursor:pointer;
  box-shadow:5px 5px 0 var(--ink-mid);transition:transform .12s,box-shadow .12s;display:flex;align-items:center;justify-content:center;gap:10px}
.btn-launch:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink-mid)}
.btn-launch:active{transform:translate(3px,3px);box-shadow:2px 2px 0 var(--ink-mid)}

/* ════════════════════════════════════════════
   PREP SCREEN
════════════════════════════════════════════ */
#prepScreen{align-items:center;justify-content:center}
.prep-wrap{max-width:520px;width:100%;padding:40px 24px;text-align:center}
.prep-spinner{width:44px;height:44px;border:3px solid var(--ink-faint);border-top-color:var(--ink);
  border-radius:50%;animation:spin .9s linear infinite;margin:0 auto 20px}
.prep-title{font-family:var(--font-h);font-size:30px;margin-bottom:10px;letter-spacing:.5px}
.prep-status{font-family:var(--font-n);font-size:20px;color:var(--ink-dim);line-height:1.6;min-height:46px}
.prep-analysis{margin-top:22px;text-align:left;background:var(--paper);border:2px solid var(--ink);
  border-radius:3px;padding:18px;box-shadow:3px 3px 0 var(--ink);display:none}
.pa-label{font-family:var(--font-h);font-size:13px;letter-spacing:.5px;margin-bottom:10px;color:var(--ink)}
.pa-item{font-family:var(--font-n);font-size:18px;color:var(--ink-mid);line-height:1.5;padding-left:18px;position:relative;margin-bottom:4px}
.pa-item::before{content:'—';position:absolute;left:0;color:var(--red);font-family:var(--font-h)}


/* ════════════════════════════════════════════
   ARENA — SKETCH-ACCURATE LAYOUT
════════════════════════════════════════════ */
#arenaScreen{display:none;height:100%;position:relative;overflow:hidden}
#arenaScreen.active{display:flex;flex-direction:column}

/* ── TOP BAR ── */
.arena-topbar{
  flex-shrink:0;height:50px;z-index:50;
  display:flex;align-items:center;justify-content:space-between;padding:0 16px;
  background:var(--paper2);border-bottom:2px solid var(--ink);
}
.arena-topbar-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tb-tag{background:var(--paper);border:1.5px solid var(--ink);border-radius:3px;
  padding:5px 10px;font-family:var(--font-h);font-size:clamp(9px,1.8vw,12px);
  letter-spacing:.5px;color:var(--ink);box-shadow:1.5px 1.5px 0 var(--ink-faint)}
.tb-red{background:var(--red-dim);border-color:var(--red);color:var(--red)}
.tb-green{background:var(--green-dim);border-color:var(--green);color:var(--green)}
.tb-teal{background:var(--teal-dim);border-color:var(--teal);color:var(--teal)}
.tb-lavender{background:var(--lavender-dim);border-color:var(--lavender);color:var(--lavender)}
.q-bar{height:4px;background:var(--paper3);flex-shrink:0}
.q-bar-fill{height:100%;background:var(--ink);transition:width .6s ease}
.end-btn{background:var(--red-dim);border:1.5px solid var(--red);border-radius:3px;
  padding:6px 14px;font-family:var(--font-h);font-size:12px;letter-spacing:.5px;
  color:var(--red);cursor:pointer;box-shadow:2px 2px 0 rgba(184,40,40,.18)}

/* ── BODY: left (75%) + right (25%) ── */
#arenaBody{
  flex:1;
  display:flex;flex-direction:row;
  overflow:hidden;min-height:0;
}

/* ══════════════════════════════
   LEFT PANEL
══════════════════════════════ */
#leftPanel{
  flex:3;
  display:flex;flex-direction:column;
  border-right:2px solid var(--ink);
  min-width:0;overflow:hidden;
}

/* Stage: characters with overlap */
#stage{
  flex:1;
  position:relative;
  background:var(--paper);
  overflow:hidden;
  min-height:0;
}

#friendlyChar{
  position:absolute;
  left:0; top:0; bottom:0;
  width:58%;
  z-index:1;
  display:flex;align-items:flex-end;justify-content:flex-start;
  transition:opacity .5s ease, filter .5s ease;
}

#challChar{
  position:absolute;
  right:0; top:0; bottom:0;
  width:58%;
  z-index:2;
  display:flex;align-items:flex-end;justify-content:flex-end;
  transition:opacity .5s ease, filter .5s ease;
}

#mentorChar{
  position:absolute;
  inset:0;
  z-index:20;
  display:flex;align-items:center;justify-content:center;
  background:rgba(250,250,247,.82);
  backdrop-filter:blur(3px);
  -webkit-backdrop-filter:blur(3px);
  transition:opacity .5s ease;
  pointer-events:none;
}

.char-sprite-img{
  width:100%;height:auto;
  display:block;
  object-fit:contain;
  object-position:bottom center;
  mix-blend-mode:multiply;
  transition:opacity .35s ease;
}
.char-label{display:none}
.mentor-dot{display:none}
.char-unit.dimmed{opacity:0.28;filter:grayscale(20%)}
.char-unit.hidden{opacity:0}

#speakerBar{
  flex-shrink:0;
  background:var(--ink);
  display:flex;align-items:center;gap:10px;
  padding:7px 18px;
}
#speakerNameText{
  font-family:var(--font-h);
  font-size:clamp(10px,1.5vw,13px);
  letter-spacing:2px;
  color:var(--paper);
}
.speaker-dot{
  width:9px;height:9px;border-radius:50%;
  background:var(--paper);flex-shrink:0;
  opacity:0;transition:opacity .3s;
}
.speaker-dot.speaking{
  opacity:1;
  animation:dotPulse 1.1s ease-in-out infinite;
}
@keyframes dotPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.5)}}

#arenaScreen.scenario-debate   #speakerBar{background:var(--teal)}
#arenaScreen.scenario-smalltalk #speakerBar{background:var(--lavender)}

#scriptArea{
  flex-shrink:0;
  padding:14px 18px 16px;
  background:var(--paper);
  min-height:100px;
  max-height:190px;
  overflow-y:auto;
}
.debate-topic-card{
  font-family:var(--font-b);font-size:14px;font-weight:600;
  background:var(--teal-dim);border:2px solid var(--teal);
  border-radius:3px;padding:8px 14px;text-align:center;
  color:var(--teal);margin-bottom:8px;display:none}
.debate-topic-card.show{display:block}
.st-topics{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px;display:none}
.st-topics.show{display:flex}
.st-topic{font-family:var(--font-b);font-size:12px;padding:5px 13px;
  border-radius:100px;cursor:pointer;border:1.5px solid var(--lavender);
  color:var(--lavender);background:var(--lavender-dim);transition:all .15s}
.st-topic:hover{background:var(--lavender);color:var(--paper)}
.vntb-speaker{display:none}
.vntb-text{
  font-family:var(--font-b);
  font-size:clamp(15px,2.2vw,21px);
  line-height:1.65;color:var(--ink);font-weight:400;
}
.vntb-cursor{
  display:inline-block;width:2px;height:1em;
  background:var(--ink);margin-left:2px;vertical-align:text-bottom;
  animation:cursorBlink .8s step-end infinite;
}
@keyframes cursorBlink{0%,100%{opacity:1}50%{opacity:0}}

/* ══════════════════════════════
   RIGHT PANEL
══════════════════════════════ */
#rightPanel{
  flex:1;
  display:flex;flex-direction:column;
  background:var(--paper2);
  min-width:160px;max-width:280px;
  overflow:hidden;
}

#answerBubbleWrap{
  flex:1;display:flex;flex-direction:column;
  padding:14px 12px 8px;overflow:hidden;
}
.answer-bubble-label{
  font-family:var(--font-h);font-size:10px;letter-spacing:1.5px;
  color:var(--ink-dim);margin-bottom:8px;text-align:center;
  text-transform:uppercase;
}
#answerBubble{
  flex:1;
  background:var(--paper3);
  border:2px solid var(--ink);
  border-radius:10px 10px 10px 3px;
  padding:12px 14px;
  overflow-y:auto;
  position:relative;
  box-shadow:3px 3px 0 var(--ink-faint);
}
#hearingDisplay{
  font-family:var(--font-b);font-size:13px;
  color:var(--ink);line-height:1.65;
  font-weight:400;
  white-space:pre-wrap;word-break:break-word;
}
.answer-placeholder{
  font-family:var(--font-b);font-size:12px;
  color:var(--ink-faint);font-style:italic;
  position:absolute;top:12px;left:14px;right:14px;
  pointer-events:none;line-height:1.5;
}

#micDock{
  flex-shrink:0;
  border-top:2px solid var(--ink);
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:8px;padding:16px 12px;
  background:var(--paper2);
}
#bigMicBtn{
  width:clamp(54px,7vw,72px);height:clamp(54px,7vw,72px);
  border-radius:50%;
  background:var(--ink);color:var(--paper);
  border:none;cursor:pointer;font-size:26px;
  display:none;
  box-shadow:4px 4px 0 var(--ink-mid);
  transition:transform .12s,box-shadow .12s,background .2s;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
#bigMicBtn:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink-mid)}
#bigMicBtn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink-mid)}
#bigMicBtn.recording{
  background:var(--red);
  animation:micPulse .9s ease-in-out infinite;
}
@keyframes micPulse{
  0%,100%{box-shadow:4px 4px 0 rgba(184,40,40,.5)}
  50%{box-shadow:4px 4px 0 rgba(184,40,40,.5),0 0 0 10px rgba(184,40,40,.12)}
}
#micStatus{
  font-family:var(--font-b);font-size:12px;
  color:var(--ink-dim);text-align:center;font-weight:500;
}
#micStatus.active{color:var(--red);font-weight:600}
#skipBtn{
  font-family:var(--font-h);font-size:10px;letter-spacing:.5px;
  border:1.5px solid var(--ink-faint);border-radius:2px;
  background:transparent;color:var(--ink-dim);
  padding:4px 14px;cursor:pointer;display:none;
}
#skipBtn.show{display:inline-block}

/* ── RESPONSIVE ── */
@media(max-width:700px){
  #arenaBody{flex-direction:column}
  #leftPanel{flex:none;height:60%;border-right:none;border-bottom:2px solid var(--ink)}
  #rightPanel{flex:1;flex-direction:row;min-width:0;max-width:none}
  #answerBubbleWrap{flex:1;padding:8px 8px 4px}
  #micDock{
    flex-direction:column;border-top:none;border-left:2px solid var(--ink);
    padding:10px 8px;min-width:90px;max-width:110px;
  }
  .vntb-text{font-size:14px}
  #scriptArea{min-height:80px;padding:10px 14px}
  #friendlyChar{width:55%}
  #challChar{width:55%}
}
@media(max-width:900px) and (min-width:701px){
  #rightPanel{max-width:210px}
  .vntb-text{font-size:17px}
}
@media(max-height:500px) and (orientation:landscape){
  #scriptArea{min-height:60px;max-height:110px;padding:8px 14px}
  .vntb-text{font-size:13px}
  #micDock{padding:8px}
  #bigMicBtn{width:46px;height:46px;font-size:20px}
}

#vntextbox{display:none!important}

/* ════════════════════════════════════════════
   FEEDBACK SCREEN
════════════════════════════════════════════ */
#feedbackScreen{align-items:center;overflow-y:auto}
.fb-wrap{width:100%;max-width:760px;margin:0 auto;padding:40px 24px 60px}
.fb-title{font-family:var(--font-h);font-size:36px;text-align:center;margin-bottom:8px}
.fb-sub{font-family:var(--font-n);font-size:18px;color:var(--ink-dim);text-align:center;margin-bottom:28px}
.fb-btn {
  background: var(--ink);
  color: var(--paper);
  border: 2px solid var(--ink);
  border-radius: 3px;
  padding: 10px 20px;
  font-family: var(--font-h);
  font-size: 14px;
  cursor: pointer;
  transition: all 0.2s;
}
.fb-btn:hover {
  transform: translate(-2px, -2px);
  box-shadow: 3px 3px 0 var(--ink-mid);
}
#errorPracticeBtn {
  background: var(--green);
  border-color: var(--green);
  color: var(--paper);
  font-weight: bold;
  animation: subtlePulse 1.5s infinite;
}
#bankBtn {
  background: var(--blue);
  border-color: var(--blue);
}
@keyframes subtlePulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}

.dim-scores{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:22px}
@media(max-width:520px){.dim-scores{grid-template-columns:1fr}}
.dim-card{background:var(--paper);border:2px solid var(--ink);border-radius:3px;padding:16px;box-shadow:3px 3px 0 var(--ink-faint)}
.dim-name{font-family:var(--font-h);font-size:14px;letter-spacing:.3px;margin-bottom:8px;display:flex;align-items:center;gap:8px}
.dim-score{font-family:var(--font-h);font-size:22px;margin-left:auto}
.dim-bar-bg{height:6px;background:var(--paper3);border-radius:1px;margin-bottom:8px}
.dim-bar-fill{height:100%;border-radius:1px;transition:width 1s ease}
.dim-note{font-family:var(--font-n);font-size:17px;color:var(--ink-mid);line-height:1.5}

.issues-section{background:var(--paper);border:2px solid var(--ink);border-radius:3px;
  padding:18px;margin-bottom:18px;box-shadow:3px 3px 0 var(--ink-faint)}
.sec-title{font-family:var(--font-h);font-size:16px;letter-spacing:.3px;margin-bottom:14px;
  display:flex;align-items:center;gap:8px}
.issue-row{border-bottom:1px dashed var(--ink-faint);padding:10px 0;display:flex;gap:12px;align-items:flex-start}
.issue-row:last-child{border-bottom:none;padding-bottom:0}
.issue-badge{font-family:var(--font-h);font-size:10px;letter-spacing:.5px;padding:2px 8px;border-radius:2px;flex-shrink:0;margin-top:3px}
.badge-err{background:var(--red-dim);border:1.5px solid var(--red);color:var(--red)}
.badge-tip{background:var(--blue-dim);border:1.5px solid var(--blue);color:var(--blue)}
.badge-up{background:var(--green-dim);border:1.5px solid var(--green);color:var(--green)}
.issue-content{font-family:var(--font-n);font-size:17px;color:var(--ink-mid);line-height:1.5}
.issue-content strong{color:var(--ink);font-weight:700}

.vocab-grid{display:flex;flex-direction:column;gap:10px}
.vocab-row{background:var(--paper);border:1.5px solid var(--ink-faint);border-radius:3px;
  padding:12px 14px;display:grid;grid-template-columns:1fr auto 1fr auto;gap:8px;align-items:center}
.vocab-orig{font-family:var(--font-n);font-size:18px;color:var(--ink-mid);text-decoration:line-through}
.vocab-arrow{font-size:16px;color:var(--ink-faint)}
.vocab-better{font-family:var(--font-n);font-size:18px;font-weight:700;color:var(--green)}
.vocab-ctx{font-family:var(--font-n);font-size:14px;color:var(--ink-dim);grid-column:1/-1;margin-top:4px}

.phrase-card{background:#FFFDE7;border:2px solid #C8A830;border-radius:3px;padding:14px 16px;
  box-shadow:2px 2px 0 rgba(200,168,48,.2);margin-bottom:8px}
.phrase-text{font-family:var(--font-h);font-size:17px;color:#4A3800;margin-bottom:5px}
.phrase-meaning{font-family:var(--font-n);font-size:17px;color:#7A6000;margin-bottom:5px}
.phrase-example{font-family:var(--font-n);font-size:14px;color:#A07020;font-style:italic}

.fb-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}
@media(max-width:520px){.fb-cards{grid-template-columns:1fr}}
.fb-card{background:var(--paper);border:2px solid var(--ink);border-radius:3px;padding:18px;box-shadow:3px 3px 0 var(--ink-faint)}
.fbc-head{display:flex;align-items:center;gap:10px;margin-bottom:11px}
.fbc-icon{font-size:22px}
.fbc-name{font-family:var(--font-h);font-size:15px;letter-spacing:.3px}
.fbc-role{font-family:var(--font-n);font-size:12px;color:var(--ink-dim);margin-top:2px}
.fbc-body{font-family:var(--font-n);font-size:17px;line-height:1.65;color:var(--ink-mid);
  border-left:3px solid var(--ink-faint);padding-left:12px}

.narrative-box{background:var(--paper);border:2px solid var(--ink);border-radius:3px;
  padding:18px 20px;margin-bottom:18px;box-shadow:3px 3px 0 var(--ink);display:none}
.narr-label{font-family:var(--font-h);font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--red);margin-bottom:8px}
.narr-text{font-family:var(--font-n);font-size:20px;line-height:1.72;color:var(--ink-mid);font-style:italic}

.fb-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:24px}

/* ════════════════════════════════════════════
   WORD PRACTICE SCREEN
════════════════════════════════════════════ */
#wordPracticeScreen{align-items:center;overflow-y:auto}
.wp-wrap{width:100%;max-width:640px;margin:0 auto;padding:40px 24px 60px;text-align:center}
.wp-title{font-family:var(--font-h);font-size:30px;margin-bottom:8px}
.wp-sub{font-family:var(--font-n);font-size:18px;color:var(--ink-dim);margin-bottom:28px}
.wp-phrase-card{background:var(--paper);border:2.5px solid var(--ink);border-radius:3px;
  padding:22px;box-shadow:4px 4px 0 var(--ink);margin-bottom:20px;text-align:left}
.wpp-num{font-family:var(--font-h);font-size:11px;letter-spacing:2px;color:var(--ink-dim);margin-bottom:8px}
.wpp-phrase{font-family:var(--font-h);font-size:22px;color:var(--ink);margin-bottom:6px}
.wpp-meaning{font-family:var(--font-n);font-size:17px;color:var(--ink-mid);margin-bottom:6px}
.wpp-example{font-family:var(--font-n);font-size:15px;color:var(--ink-dim);font-style:italic}
.wp-prompt{font-family:var(--font-n);font-size:18px;color:var(--ink-mid);margin-bottom:16px;padding:12px 16px;
  background:var(--paper2);border-radius:3px;border:1.5px solid var(--ink-faint)}
.wp-transcript{font-family:var(--font-n);font-size:17px;color:var(--ink-mid);min-height:24px;font-style:italic;margin-bottom:12px}
.wp-eval{font-family:var(--font-n);font-size:16px;line-height:1.6;padding:12px 16px;
  border-radius:3px;border:2px solid;display:none;margin-bottom:16px}
.wp-eval.good{background:var(--green-dim);border-color:var(--green);color:#0A3020}
.wp-eval.ok{background:var(--amber-dim);border-color:var(--amber);color:#3A2000}
.wp-mic-row{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:12px}
.wp-mic{width:56px;height:56px;border-radius:50%;background:var(--ink);color:var(--paper);
  border:2.5px solid var(--ink);cursor:pointer;font-size:24px;display:flex;align-items:center;justify-content:center;
  box-shadow:3px 3px 0 var(--ink-mid);transition:all .12s}
.wp-mic:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink-mid)}
.wp-mic.recording{background:var(--red);border-color:var(--red);animation:pulseRing 1.2s ease infinite}
.wp-nav{display:flex;gap:10px;justify-content:center}


/* ════════════════════════════════════════════
   VN TEXTBOX — OMORI-style speech panel
════════════════════════════════════════════ */
#vntextbox{
  position:absolute;
  left:0;right:0;
  bottom:90px;
  min-height:128px;
  max-height:220px;
  overflow-y:auto;
  background:rgba(250,250,247,.98);
  border-top:3.5px solid var(--ink);
  border-bottom:none;
  padding:14px 60px 16px 52px;
  z-index:30;
  transform:translateY(12px);
  opacity:0;
  pointer-events:none;
  transition:transform .32s cubic-bezier(.4,0,.2,1), opacity .28s ease;
  box-shadow:0 -4px 22px rgba(0,0,0,.1);
}
#vntextbox.show{transform:translateY(0);opacity:1;pointer-events:auto}
#vntextbox::before,#vntextbox::after{
  content:'';position:absolute;top:-3.5px;height:3.5px;width:28px;
  background:var(--paper2);
}
#vntextbox::before{left:24px}
#vntextbox::after{right:24px}
.vntb-speaker{
  font-family:var(--font-h);
  font-size:11px;letter-spacing:2px;text-transform:uppercase;
  margin-bottom:9px;display:flex;align-items:center;gap:5px;
  transition:color .2s;
}
.vntb-text{
  font-family:var(--font-b);
  font-size:clamp(17px,3.5vw,24px);line-height:1.65;
  color:var(--ink);
  font-weight:500;
  min-height:46px;
  letter-spacing:.1px;
}
.vntb-cursor{
  display:inline-block;width:2px;height:1.1em;
  background:var(--ink);margin-left:2px;
  vertical-align:text-bottom;
  animation:blink .7s step-end infinite;
}


/* ════════════════════════════════════════════
   SCENARIO HUB SCREEN
════════════════════════════════════════════ */
#hubScreen{align-items:center;justify-content:flex-start;overflow-y:auto}
.hub-wrap{width:100%;max-width:760px;margin:0 auto;padding:36px 24px 60px;
  display:flex;flex-direction:column;align-items:center}
.hub-logo{font-family:var(--font-h);font-size:13px;letter-spacing:3px;
  border:2px solid var(--ink);border-radius:2px;padding:4px 16px;
  box-shadow:2px 2px 0 var(--ink);margin-bottom:18px;animation:fadeUp .5s ease both}
.hub-title{font-family:var(--font-h);font-size:clamp(26px,4.5vw,44px);
  text-align:center;margin-bottom:8px;animation:fadeUp .5s .06s ease both}
.hub-title em{color:var(--red);font-style:italic}
.hub-sub{font-family:var(--font-b);font-size:15px;color:var(--ink-dim);
  text-align:center;margin-bottom:32px;animation:fadeUp .5s .12s ease both}

.scenario-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;
  width:100%;animation:fadeUp .5s .18s ease both}
@media(min-width:1100px){.scenario-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:600px){
  #deskBar{ display:none; }
#deskImg{ display:none; }
  .scenario-grid{grid-template-columns:1fr 1fr;gap:10px}}
@media(min-width:601px) and (max-width:800px){.scenario-grid{grid-template-columns:1fr 1fr}}

.scenario-card{border:2px solid var(--ink);border-radius:3px;
  background:var(--paper);padding:22px 18px;cursor:pointer;
  box-shadow:4px 4px 0 var(--ink);
  transition:transform .15s,box-shadow .15s;
  position:relative;overflow:hidden;
  display:flex;flex-direction:column;gap:10px}
.scenario-card:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink)}
.scenario-card:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}
.scenario-card .sc-accent{
  position:absolute;top:0;left:0;right:0;height:5px}
.scenario-card .sc-icon{font-size:32px;margin-bottom:4px}
.scenario-card .sc-name{font-family:var(--font-h);font-size:18px;color:var(--ink)}
.scenario-card .sc-tagline{font-family:var(--font-b);font-size:13px;
  color:var(--ink-mid);line-height:1.5}
.scenario-card .sc-chars{display:flex;gap:8px;margin-top:4px;flex-wrap:wrap}
.scenario-card .sc-char{font-size:11px;font-family:var(--font-b);font-weight:600;
  padding:2px 10px;border-radius:100px;border:1.5px solid}
.scenario-card .sc-badge{position:absolute;top:14px;right:14px;
  font-family:var(--font-h);font-size:9px;letter-spacing:1px;
  padding:2px 8px;border-radius:2px;border:1.5px solid}

#arenaScreen.scenario-debate #vntextbox{border-top-color:var(--teal)}
#arenaScreen.scenario-smalltalk #vntextbox{border-top-color:var(--lavender)}
#arenaScreen.scenario-interview #vntextbox{border-top-color:var(--ink)}

#arenaScreen.scenario-debate .q-bar-fill{background:var(--teal)}
#arenaScreen.scenario-smalltalk .q-bar-fill{background:var(--lavender)}

.label-teal{color:var(--teal)}
.label-lavender{color:var(--lavender)}
.tb-teal{background:var(--teal-dim);border-color:var(--teal);color:var(--teal);
  box-shadow:1.5px 1.5px 0 rgba(13,115,119,.15)}
.tb-lavender{background:var(--lavender-dim);border-color:var(--lavender);color:var(--lavender);
  box-shadow:1.5px 1.5px 0 rgba(107,91,149,.15)}

.debate-topic-card{
  font-family:var(--font-b);font-size:15px;font-weight:600;
  background:var(--teal-dim);border:2px solid var(--teal);
  border-radius:3px;padding:10px 16px;text-align:center;
  color:var(--teal);margin-bottom:8px;display:none}
.debate-topic-card.show{display:block}

/* Small Talk game panel */
.st-game-panel{display:none;flex-direction:column;gap:10px;margin-bottom:8px}
.st-game-panel.show{display:flex}
.st-game-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.st-game-btn{font-size:13px;font-weight:600;padding:7px 16px;border-radius:3px;cursor:pointer;
  border:2px solid var(--lavender);color:var(--lavender);background:var(--lavender-dim);
  transition:all .15s;letter-spacing:.3px}
.st-game-btn:hover{background:var(--lavender);color:var(--paper)}
.st-game-btn:disabled{opacity:.45;cursor:not-allowed}
.st-game-words{display:none;flex-wrap:wrap;gap:8px;justify-content:center;
  padding:10px 12px;background:var(--lavender-dim);border:2px solid var(--lavender);
  border-radius:3px;animation:fadeUp .3s ease both}
.st-game-words.show{display:flex}
.st-word-chip{font-size:14px;font-weight:700;padding:5px 14px;background:var(--paper);
  border:2px solid var(--lavender);border-radius:3px;color:var(--lavender);
  box-shadow:2px 2px 0 var(--lavender);transition:all .2s}
.st-word-chip.used{opacity:.3;text-decoration:line-through;box-shadow:none}
/* Debate motion card */
.debate-num,.st-num{font-size:15px;width:32px;height:32px;display:flex;align-items:center;justify-content:center}
.debate-num{background:var(--teal-dim);border:1.5px solid var(--teal);color:var(--teal);border-radius:3px}
.motion-card{position:relative;background:var(--teal-dim);border:2px solid var(--teal);border-radius:3px;
  padding:16px 52px 16px 16px;min-height:58px;display:flex;align-items:center;
  box-shadow:3px 3px 0 rgba(13,115,119,.18);margin-bottom:4px}
.motion-text{font-size:16px;color:var(--ink);line-height:1.5;flex:1;font-style:italic;transition:opacity .2s}
.motion-refresh-btn{position:absolute;right:10px;top:50%;transform:translateY(-50%);
  background:var(--teal);color:#fff;border:none;border-radius:3px;width:34px;height:34px;
  font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:background .15s;line-height:1}
.motion-refresh-btn:hover{background:var(--ink)}
.motion-refresh-btn:disabled{opacity:.45;cursor:not-allowed}
.motion-refresh-btn.spinning{animation:spinBtn .55s linear infinite}
@keyframes spinBtn{to{transform:translateY(-50%) rotate(360deg)}}
.stance-pills{display:flex;flex-direction:column;gap:8px}
.stance-pill{display:flex;align-items:center;gap:10px;padding:11px 14px;border:1.5px solid var(--ink-faint);
  border-radius:3px;cursor:pointer;font-size:15px;color:var(--ink-mid);
  background:var(--paper2);transition:all .15s;user-select:none}
.stance-pill input[type=radio]{accent-color:var(--teal);width:16px;height:16px;flex-shrink:0}
.stance-pill:has(input:checked){border-color:var(--teal);background:var(--teal-dim);color:var(--ink)}
.stance-pill:hover{border-color:var(--ink)}
/* Small Talk session report */
.st-report{background:var(--lavender-dim);border:2px solid var(--lavender);border-radius:3px;
  padding:20px 24px;margin-bottom:22px;display:none}
.st-report.show{display:block}
.st-report-title{font-size:17px;color:var(--lavender);margin-bottom:14px;letter-spacing:.5px}
.st-report-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}
.st-stat{text-align:center;padding:10px 6px;background:var(--paper);
  border:1.5px solid var(--lavender);border-radius:3px}
.st-stat-n{font-size:28px;color:var(--lavender)}
.st-stat-l{font-size:12px;color:var(--ink-dim);margin-top:3px}
.st-moments{margin-top:12px}
.st-moment-label{font-size:12px;font-weight:700;letter-spacing:1px;color:var(--ink-dim);
  text-transform:uppercase;margin-bottom:8px}
.st-moment-item{font-size:14px;color:var(--ink-mid);padding:8px 12px;background:var(--paper);
  border-left:3px solid var(--lavender);margin-bottom:6px;border-radius:0 3px 3px 0;font-style:italic}
#deskImg{
  width:100%; height:100%;
  object-fit:contain;
  object-position:bottom center;
  mix-blend-mode:multiply;
  display:block;
}

.loading-veil{position:fixed;inset:0;z-index:9990;background:rgba(250,250,247,.9);backdrop-filter:blur(4px);
  display:none;align-items:center;justify-content:center;flex-direction:column;gap:16px}
.loading-veil.show{display:flex}
.spinner{width:34px;height:34px;border:3px solid var(--ink-faint);border-top-color:var(--ink);border-radius:50%;animation:spin .85s linear infinite}
.loading-msg{font-family:var(--font-n);font-size:18px;color:var(--ink-dim);max-width:220px;text-align:center;line-height:1.5}

/* ════════════════════════════════════════════════════════════
   RESPONSIVE — MOBILE & TABLET
════════════════════════════════════════════════════════════ */

@media(max-width:900px) and (min-width:601px){
  #deskBar{ height:24%; }
  .intake-wrap  { max-width:100%; padding:28px 20px 48px; }
  .fb-wrap      { padding:28px 18px 48px; }
  .dim-scores   { grid-template-columns:1fr 1fr; gap:10px; }
  .fb-cards     { grid-template-columns:1fr; }
  .rings-row    { gap:12px; }
  .vntb-text    { font-size:20px; }
  #bigMicBtn    { width:64px; height:64px; font-size:26px; }
}

@media(max-width:600px){
  .btn-stamp, .btn-launch { font-size:15px; }
  .btn-launch { padding:14px; }
  .intake-wrap  { padding:20px 14px 44px; max-width:100%; }
  .intake-h     { font-size:clamp(24px,8vw,36px); margin-bottom:8px; }
  .intake-sub   { font-size:16px; margin-bottom:20px; }
  .logo-stamp   { font-size:10px; letter-spacing:2px; padding:4px 12px; margin-bottom:14px; }
  .step-card    { padding:16px 14px; margin-bottom:12px; box-shadow:3px 3px 0 var(--ink); }
  .step-card::before { display:none; }
  .step-head    { padding-left:0; gap:10px; margin-bottom:12px; }
  .step-title   { font-size:16px; }
  .step-sub     { font-size:12px; }
  .step-num     { width:24px; height:24px; font-size:12px; }
  .fl           { font-size:14px; }
  .fi, .fta     { font-size:15px; padding:10px 12px; }
  .id-pills     { gap:6px; }
  .id-pill      { font-size:13px; padding:6px 12px; }
  .int-pills    { gap:6px; }
  .int-pill     { padding:10px 4px; }
  .int-pill .pl { font-size:12px; }
  .int-pill .ps { display:none; }
  .int-pill .pi { font-size:18px; margin-bottom:3px; }
  .mentor-toggle-row { flex-direction:column; align-items:flex-start; gap:8px; }
  .api-row      { gap:6px; }
  .prov-pill    { font-size:12px; padding:5px 12px; }
  .launch-bar   { margin-top:6px; }
  .profile-banner { padding:10px 12px; }
  .pb-text      { font-size:14px; }
  .prep-wrap    { padding:32px 18px; }
  .prep-title   { font-size:24px; }
  .prep-status  { font-size:16px; }
  .pa-item      { font-size:15px; }
  .prep-analysis{ padding:14px; }
  .arena-topbar { height:46px; padding:0 10px; }
  .tb-tag       { font-size:10px; padding:3px 8px; box-shadow:1px 1px 0 var(--ink-faint); }
  .end-btn      { font-size:11px; padding:5px 10px; }
  .q-bar        { top:46px; }
  #stage        { top:50px; }
  #vntextbox    { bottom:84px; padding:10px 14px 12px; min-height:100px; max-height:160px; }
  #vntextbox::before { left:14px; width:20px; }
  #vntextbox::after  { right:14px; width:20px; }
  .vntb-speaker { font-size:10px; margin-bottom:6px; }
  .vntb-text    { font-size:16px; line-height:1.52; min-height:40px; }
  #micDock      { height:84px; padding:6px 12px 8px; }
  #hearingDisplay{ font-size:15px; }
  #bigMicBtn    { width:60px; height:60px; font-size:26px;
                  box-shadow:3px 3px 0 var(--ink-mid); }
  #micStatus    { font-size:13px; min-width:70px; }
  .skip-btn-wrap{ gap:12px; }
  #skipBtn      { font-size:10px; padding:3px 9px; }
  .char-label   { font-size:12px; }
  .fb-wrap      { padding:28px 14px 48px; }
  .fb-wrap > div[style*="font-size:56px"] { font-size:44px; }
  .fb-title     { font-size:26px; }
  .fb-sub       { font-size:15px; margin-bottom:20px; }
  .dim-scores   { grid-template-columns:1fr; gap:10px; }
  .dim-card     { padding:13px; }
  .dim-name     { font-size:13px; }
  .dim-score    { font-size:18px; }
  .dim-note     { font-size:14px; }
  .rings-row    { gap:8px; }
  .ring-pos     { width:60px; height:60px; }
  .ring-svg-el  { width:60px; height:60px; }
  .ring-num     { font-size:14px; }
  .ring-label   { font-size:11px; }
  .narrative-box{ padding:14px 16px; }
  .narr-text    { font-size:16px; }
  .issues-section{ padding:14px; }
  .issue-content { font-size:15px; }
  .fb-cards     { grid-template-columns:1fr; gap:10px; }
  .fb-card      { padding:14px; }
  .fbc-name     { font-size:13px; }
  .fbc-body     { font-size:14px; }
  .vocab-row    { grid-template-columns:1fr auto 1fr; gap:6px; }
  .vocab-orig,.vocab-better { font-size:15px; }
  .phrase-card  { padding:11px 13px; }
  .phrase-text  { font-size:15px; }
  .phrase-meaning,.phrase-example { font-size:14px; }
  .fb-actions   { flex-direction:column; align-items:center; }
  .btn-again    { width:100%; text-align:center; }
  .wp-wrap      { padding:28px 14px 48px; }
  .wp-title     { font-size:24px; }
  .wp-sub       { font-size:16px; margin-bottom:20px; }
  .wp-phrase-card{ padding:16px; }
  .wpp-phrase   { font-size:18px; }
  .wpp-meaning  { font-size:15px; }
  .wp-prompt    { font-size:16px; }
  .wp-transcript{ font-size:15px; }
  .wp-eval      { font-size:14px; }
  .wp-nav       { flex-direction:column; align-items:center; gap:8px; width:100%; }
  .wp-nav .btn-stamp,.wp-nav .btn-ghost2{ width:100%; text-align:center; }
}

@media(max-width:380px){
  .vntb-text    { font-size:15px; }
  .tb-tag       { font-size:9px; padding:2px 6px; }
  #bigMicBtn    { width:54px; height:54px; font-size:22px; }
  .int-pill .pl { font-size:11px; }
  .intake-h     { font-size:clamp(22px,9vw,30px); }
}

@media(hover:none) and (pointer:coarse){
  .id-pill, .int-pill, .tog-opt, .prov-pill {
    min-height:40px;
    display:flex; align-items:center; justify-content:center;
  }
  .id-pill      { min-height:36px; }
  #bigMicBtn    { cursor:default; }
  .end-btn, #skipBtn { min-height:34px; }
  ::-webkit-scrollbar { width:0; }
}

@media(max-width:900px) and (max-height:500px) and (orientation:landscape){
  #deskBar      { bottom:150px; height:18%; }
  .char-unit    { padding-bottom:28%; }
  #vntextbox    { min-height:80px; max-height:120px; bottom:70px; padding:8px 14px; }
  .vntb-text    { font-size:14px; line-height:1.45; min-height:32px; }
  #micDock      { height:70px; padding:4px 12px 6px; }
  #bigMicBtn    { width:50px; height:50px; font-size:22px; }
  #hearingDisplay{ font-size:13px; }
  .arena-topbar { height:40px; }
  #stage        { top:44px; }
  .q-bar        { top:40px; }
  .tb-tag       { font-size:9px; padding:2px 6px; }
  .char-sprite-img{ max-height:55vh; }
}

@supports(padding-bottom:env(safe-area-inset-bottom)){
  #micDock      { padding-bottom:max(8px, env(safe-area-inset-bottom)); }
  .intake-wrap  { padding-bottom:max(44px, calc(env(safe-area-inset-bottom) + 24px)); }
  .fb-wrap      { padding-bottom:max(44px, calc(env(safe-area-inset-bottom) + 24px)); }
}

/* ── Mobile polish ── */
.arena-topbar-left{
  display:flex;align-items:center;gap:6px;
  overflow:hidden;flex:1;min-width:0;
}
.tb-tag{
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  max-width:clamp(50px,22vw,160px);
  flex-shrink:1;
}

@media(max-width:600px){
  .char-label{ display:none; }
  .char-unit { touch-action:none; }
  #stage{ bottom:0; }
  #vntextbox{ bottom:84px; border-top-width:2.5px; box-shadow:0 -3px 14px rgba(0,0,0,.09); }
  #hearingDisplay{
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    max-width:90vw;
  }
  .intake-wrap  { overflow-x:hidden; }
  .id-pills     { flex-wrap:wrap; }
  .int-pill     { min-width:0; }
  .rings-row    { gap:10px; justify-content:space-around; }
  .fb-actions   { flex-direction:column; align-items:stretch; }
  .btn-again,.btn-ghost2{
    width:100%; text-align:center; justify-content:center;
  }
  .wp-nav       { flex-direction:column; align-items:stretch; width:100%; }
  .wp-nav .btn-stamp,
  .wp-nav .btn-ghost2 { width:100%; text-align:center; }
  .loading-msg  { max-width:80vw; font-size:16px; }
}

@media(max-width:900px) and (max-height:480px) and (orientation:landscape){
  .char-label   { display:none; }
  .arena-topbar { height:38px; }
  .q-bar        { top:38px; }
  #stage        { top:42px; }
  #vntextbox    { bottom:64px; min-height:72px; max-height:110px;
                  padding:7px 12px 8px; }
  .vntb-text    { font-size:13px; min-height:28px; line-height:1.4; }
  .vntb-speaker { margin-bottom:4px; font-size:9px; }
  #micDock      { height:64px; padding:4px 10px 5px; gap:4px; }
  #bigMicBtn    { width:46px; height:46px; font-size:20px; }
  #hearingDisplay{ font-size:12px; min-height:16px; }
  .char-sprite-img{ max-height:50vh; }
}

@media(max-width:360px){
  #scenePill    { display:none; }
  .vntb-text    { font-size:14px; }
}

.char-unit,#mentorChar,#challChar{
  -webkit-user-select:none;
  user-select:none;
  -webkit-tap-highlight-color:transparent;
}
#bigMicBtn{
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
#skipBtn, .end-btn, .btn-stamp, .btn-outline{
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
#feedbackScreen, #intakeScreen, #wordPracticeScreen{
  -webkit-overflow-scrolling:touch;
}
.fi,.fta{
  font-size:max(16px, 1em);
}
/* 新增 error practice 屏幕样式（替换原有 .ep-* 相关样式） */
#errorPracticeScreen {
  background: var(--paper);
}
.ep-wrap {
  display: flex;
  height: 100%;
  width: 100%;
  flex-direction: row;
  overflow: hidden;
}

.ep-left {
  flex: 2;
  display: flex;
  flex-direction: column;
  padding: 24px 28px;
  overflow-y: auto;
  border-right: 2px solid var(--ink);
  background: var(--paper);
}
.ep-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 20px;
  border-bottom: 2px solid var(--ink-faint);
  padding-bottom: 8px;
}
.ep-badge {
  font-family: var(--font-h);
  font-size: 12px;
  background: var(--ink);
  color: var(--paper);
  padding: 4px 12px;
  border-radius: 2px;
}
.ep-progress {
  font-family: var(--font-n);
  font-size: 14px;
  color: var(--ink-dim);
}

/* 上半部分：左右两列布局 */
.ep-top-row {
  display: flex;
  gap: 20px;
  margin-bottom: 24px;
  background: var(--paper2);
  border: 1px solid var(--ink-faint);
  border-radius: 3px;
  padding: 16px;
}
.ep-left-col {
  flex: 1;
}
.ep-right-col {
  flex: 1;
  border-left: 1px dashed var(--ink-faint);
  padding-left: 16px;
}
.ep-error-original, .ep-correction, .ep-tip {
  margin-bottom: 12px;
}
.ep-error-original .ep-label, .ep-correction .ep-label, .ep-tip .ep-label {
  font-family: var(--font-h);
  font-size: 11px;
  letter-spacing: 0.5px;
  color: var(--ink-dim);
  display: block;
  margin-bottom: 4px;
}
.ep-error-original .ep-content {
  font-family: var(--font-b);
  font-size: 15px;
  color: var(--red);
  background: var(--red-dim);
  padding: 6px 10px;
  border-radius: 3px;
  display: inline-block;
}
.ep-correction .ep-content {
  font-family: var(--font-b);
  font-size: 15px;
  color: var(--green);
  background: var(--green-dim);
  padding: 6px 10px;
  border-radius: 3px;
  display: inline-block;
  font-weight: bold;
}
.ep-tip .ep-content {
  font-family: var(--font-n);
  font-size: 16px;
  color: var(--ink-mid);
  line-height: 1.5;
  display: block;
}

/* 题目区域 */
.ep-task-area {
  margin: 12px 0 20px;
  background: var(--paper);
  border: 2px solid var(--ink);
  border-radius: 3px;
  padding: 18px;
  box-shadow: 3px 3px 0 var(--ink-faint);
}
.ep-prompt {
  font-family: var(--font-n);
  font-size: 16px;
  color: var(--ink);
  margin-bottom: 12px;
  font-weight: 600;
}
.ep-task {
  font-family: var(--font-b);
  font-size: 20px;
  background: var(--blue-dim);
  border: 2px solid var(--blue);
  padding: 16px 18px;
  border-radius: 3px;
  margin-bottom: 16px;
  color: var(--blue);
  font-weight: 600;
  line-height: 1.6;
  box-shadow: 2px 2px 0 rgba(36,56,112,.15);
}
.ep-feedback {
  font-family: var(--font-n);
  font-size: 15px;
  padding: 12px;
  border-radius: 3px;
  background: var(--amber-dim);
  color: var(--amber);
  border-left: 4px solid var(--amber);
}
.ep-feedback.correct {
  background: var(--green-dim);
  color: var(--green);
  border-left-color: var(--green);
}
.ep-feedback.wrong {
  background: var(--red-dim);
  color: var(--red);
  border-left-color: var(--red);
}

.ep-answer-area {
  margin-top: auto;
}
.ep-answer-label {
  font-family: var(--font-h);
  font-size: 10px;
  letter-spacing: 1px;
  color: var(--ink-dim);
  margin-bottom: 6px;
}
.ep-answer-display {
  font-family: var(--font-b);
  font-size: 15px;
  background: var(--paper);
  border: 1px solid var(--ink-faint);
  border-radius: 3px;
  padding: 12px;
  min-height: 70px;
  color: var(--ink);
  white-space: pre-wrap;
}

/* 右侧 Mentor */
.ep-right {
  flex: 1;
  display: flex;
  flex-direction: column;
  background: var(--paper2);
  position: relative;
  min-width: 280px;
  border-left: 2px solid var(--ink);
}
.ep-mentor {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 20px;
  text-align: center;
}
.ep-mentor-img {
  max-width: 220px;
  width: 80%;
  height: auto;
  margin-bottom: 16px;
  filter: drop-shadow(2px 4px 6px rgba(0,0,0,0.1));
  transition: transform 0.2s;
}
.ep-mentor-bubble {
  background: var(--paper);
  border: 2px solid var(--ink);
  border-radius: 16px 16px 16px 4px;
  padding: 14px 18px;
  max-width: 90%;
  font-family: var(--font-n);
  font-size: 16px;
  color: var(--ink-mid);
  text-align: left;
  box-shadow: 3px 3px 0 var(--ink-faint);
}
.ep-mic-dock {
  border-top: 2px solid var(--ink);
  padding: 20px 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  background: var(--paper2);
}
.ep-mic-btn {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  background: var(--ink);
  color: var(--paper);
  border: 3px solid var(--ink);
  font-size: 34px;
  cursor: pointer;
  box-shadow: 4px 4px 0 var(--ink-mid);
  transition: all 0.12s;
  display: flex; align-items: center; justify-content: center;
}
.ep-mic-btn:hover { transform: translate(-2px,-2px); box-shadow: 6px 6px 0 var(--ink-mid); }
.ep-mic-btn.recording {
  background: var(--red);
  animation: micPulse 0.9s ease infinite;
}
.ep-mic-status {
  font-family: var(--font-b);
  font-size: 12px;
  color: var(--ink-dim);
}
.ep-next-btn, .ep-done-btn, .ep-harder-btn {
  font-family: var(--font-h);
  font-size: 13px;
  background: var(--ink);
  color: var(--paper);
  border: none;
  padding: 8px 18px;
  border-radius: 3px;
  cursor: pointer;
  width: 100%;
  margin-top: 6px;
}
.ep-harder-btn {
  background: var(--amber);
}
.ep-done-btn {
  background: var(--green);
}

/* 响应式 */
@media (max-width: 700px) {
  .ep-wrap {
    flex-direction: column;
  }
  .ep-left {
    flex: 1;
    border-right: none;
    border-bottom: 2px solid var(--ink);
    padding: 16px;
  }
  .ep-right {
    min-height: 320px;
  }
  .ep-mentor-img {
    max-width: 120px;
  }
  .ep-top-row {
    flex-direction: column;
    gap: 12px;
  }
  .ep-right-col {
    border-left: none;
    padding-left: 0;
    border-top: 1px dashed var(--ink-faint);
    padding-top: 12px;
  }
}

/* 个人题库屏 (预留) */
#bankScreen {
  align-items: center;
  justify-content: center;
  background: var(--paper);
}
.bank-wrap {
  max-width: 800px;
  width: 100%;
  padding: 30px;
}
/* 提高练习模块字体可读性 */
.ep-tip .ep-content {
  font-family: var(--font-b);
  font-size: 16px;
  line-height: 1.5;
  color: var(--ink);
}
.ep-feedback {
  font-family: var(--font-b);
  font-size: 15px;
  line-height: 1.5;
  padding: 12px;
}
.ep-feedback.correct {
  background: var(--green-dim);
  color: var(--green);
  border-left: 4px solid var(--green);
}
.ep-feedback.wrong {
  background: var(--red-dim);
  color: var(--red);
  border-left: 4px solid var(--red);
}
.ep-correction .ep-content {
  font-size: 16px;
}
.ep-correction div[style*="margin-top"] {
  font-size: 14px;
}
/* ── 练习模块：醒目推荐表达 ── */
.ep-correction .ep-content {
  font-size: 1.6rem !important;
  font-family: 'DM Sans', 'Segoe UI', system-ui, sans-serif !important;
  font-weight: 700 !important;
  background: #FFF3C9 !important;
  border: 2px solid #F5B042 !important;
  border-radius: 12px !important;
  padding: 12px 16px !important;
  display: inline-block !important;
  color: #B45F06 !important;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1) !important;
  letter-spacing: 0.5px !important;
}

/* 缩小 Mentor 形象 */
#mentorChar .char-sprite-img {
  max-width: 180px !important;
  width: 65% !important;
  margin: 0 auto;
}
@media (max-width: 600px) {
  #mentorChar .char-sprite-img {
    max-width: 130px !important;
    width: 55% !important;
  }
}

/* 无限 Small Talk 进度显示 */
.tb-tag.tb-lavender#qPill {
  font-family: monospace;
}

/* Hub Expression Bank hint */
.hub-hint{font-size:13px;color:var(--amber);margin-top:12px;text-align:center;
  animation:fadeUp .4s ease both;background:var(--amber-dim);border:1.5px solid var(--amber);
  border-radius:3px;padding:8px 16px;display:none}
.hub-hint.show{display:block}

/* Expression practice progress bar */
.ep-progress-bar{height:4px;background:var(--paper3);border-radius:2px;margin-bottom:16px}
.ep-progress-fill{height:100%;background:var(--green);border-radius:2px;transition:width .5s ease}
