:root {
  --navy-950: #0b263a;
  --navy-900: #12324a;
  --navy-800: #19445f;
  --ink: #17374d;
  --muted: #708794;
  --blue: #52b8ea;
  --blue-soft: #e9f7ff;
  --mint: #aeead7;
  --mint-soft: #e9faf4;
  --coral: #ff9278;
  --coral-soft: #fff0ec;
  --yellow: #ffdc78;
  --yellow-soft: #fff8df;
  --page: #f4f8fa;
  --surface: #ffffff;
  --line: #dce9ed;
  --shadow: 0 12px 32px rgba(17, 50, 71, 0.08);
  --shadow-small: 0 5px 15px rgba(17, 50, 71, 0.07);
  font-family: "MiSans", "Microsoft YaHei", "PingFang SC", sans-serif;
}

/* Real participant portraits and the classroom award ceremony. */
.participant-avatar,
.award-avatar {
  position: relative;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 2px solid var(--cartoon-ink, #17384c);
  border-radius: 50%;
  background: #ff8d72;
  box-shadow: 0 2px 0 var(--cartoon-ink, #17384c);
}
.participant-avatar { width: 28px; height: 28px; }
.participant-avatar img,
.award-avatar img { width: 100%; height: 100%; display: block; object-fit: cover; }
.participant-avatar > i,
.award-avatar > i {
  width: 100%; height: 100%; display: grid; place-items: center;
  color: #fff; background: #ff8d72; font-size: 11px; font-style: normal; font-weight: 900;
}
.rank-student > .participant-avatar { width: 27px; height: 27px; }
.rank-student > .participant-avatar > i { width: 100%; height: 100%; border: 0; border-radius: 0; background: #ff8d72; }
.classroom-cohort-row > .participant-avatar { width: 42px; height: 42px; border-radius: 13px; }
.classroom-cohort-row > .participant-avatar > i { border: 0; border-radius: 0; }

.classroom-award {
  --award-ink: #15384e;
  --award-blue: #58c8e8;
  --award-deep: #207caf;
  --award-sun: #ffd25f;
  --award-coral: #ff806b;
  --award-mint: #73d7b5;
  position: absolute;
  inset: 0;
  z-index: 90;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  overflow: hidden;
  color: var(--award-ink);
  background:
    radial-gradient(circle at 12% 12%, rgba(255,255,255,.92) 0 5%, transparent 5.3%),
    radial-gradient(circle at 88% 18%, rgba(255,255,255,.8) 0 4%, transparent 4.3%),
    linear-gradient(180deg, #8be1f1 0 58%, #55c9dc 58% 67%, #2f92c4 67% 100%);
}
.classroom-award::before {
  content: "";
  position: absolute;
  left: -4%; right: -4%; bottom: 20%; height: 23%;
  border-top: 4px solid var(--award-ink);
  background: repeating-linear-gradient(168deg, rgba(255,255,255,.72) 0 5px, transparent 6px 22px);
  opacity: .72;
}
.classroom-award::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0; height: 22%;
  border-top: 4px solid var(--award-ink);
  background: linear-gradient(180deg, #f7d885, #e4a857);
  clip-path: polygon(0 25%, 14% 12%, 29% 24%, 44% 5%, 61% 22%, 78% 8%, 100% 26%, 100% 100%, 0 100%);
}
.award-sky { position: absolute; inset: 0; pointer-events: none; }
.award-cloud {
  position: absolute; top: 14%; width: 112px; height: 33px;
  border: 3px solid var(--award-ink); border-radius: 99px; background: #fff;
  box-shadow: 32px -19px 0 6px #fff, 32px -19px 0 9px var(--award-ink), 70px -6px 0 2px #fff, 70px -6px 0 5px var(--award-ink);
  opacity: .85;
}
.award-cloud.cloud-left { left: 5%; }
.award-cloud.cloud-right { right: 12%; top: 22%; transform: scale(.72); }
.award-flag { position: absolute; top: 0; width: 34%; height: 54px; border-top: 5px solid var(--award-ink); }
.award-flag::before {
  content: ""; position: absolute; inset: 4px 0 auto; height: 28px;
  background: repeating-linear-gradient(105deg, var(--award-coral) 0 28px, var(--award-sun) 28px 56px, var(--award-mint) 56px 84px, #fff 84px 112px);
  clip-path: polygon(0 0,100% 0,94% 100%,84% 18%,72% 100%,60% 18%,48% 100%,36% 18%,24% 100%,12% 18%,0 100%);
}
.award-flag.flag-left { left: -2%; transform: rotate(4deg); }
.award-flag.flag-right { right: -2%; transform: scaleX(-1) rotate(4deg); }
.award-heading {
  position: relative; z-index: 4; padding: clamp(22px, 3.5vh, 42px) 20px 8px;
  display: grid; justify-items: center; gap: 5px; text-align: center;
}
.award-heading > span {
  padding: 5px 16px; color: #fff; border: 3px solid var(--award-ink); border-radius: 99px;
  background: var(--award-coral); box-shadow: 0 4px 0 var(--award-ink); font-size: clamp(14px, 1.15vw, 20px); font-weight: 850; letter-spacing: .16em;
}
.award-heading h2 {
  margin: 4px 0 0; color: #fff; font-size: clamp(34px, 4vw, 72px); font-weight: 900;
  letter-spacing: .06em; -webkit-text-stroke: 2px var(--award-ink); paint-order: stroke fill;
  text-shadow: 0 7px 0 rgba(21,56,78,.22);
}
.award-heading > div { display: flex; align-items: center; gap: 10px; color: var(--award-ink); font-size: clamp(11px, .78vw, 14px); letter-spacing: .24em; }
.award-heading > div i { width: 52px; height: 3px; border-radius: 99px; background: var(--award-ink); }
.award-podium {
  position: relative; z-index: 5; min-height: 0; padding: 0 clamp(86px, 10vw, 185px) 4vh;
  display: flex; align-items: end; justify-content: center; gap: clamp(16px, 3vw, 58px);
}
.award-winner {
  width: min(25vw, 330px); min-width: 190px; display: flex; flex-direction: column; align-items: center;
  opacity: 0; transform: translateY(120px) scale(.82); filter: saturate(.75);
}
.award-winner.rank-1 { order: 2; width: min(28vw, 380px); }
.award-winner.rank-2 { order: 1; }
.award-winner.rank-3 { order: 3; }
.award-winner.is-revealed { opacity: 1; transform: none; filter: none; animation: award-winner-rise .8s cubic-bezier(.2,.95,.25,1.18) both; }
.award-winner.rank-1.is-revealed { animation-name: award-champion-rise; }
.award-medal {
  position: relative; z-index: 3; width: 44px; height: 52px; margin-bottom: -20px;
  display: grid; place-items: start center; background: linear-gradient(90deg, var(--award-blue) 0 45%, var(--award-coral) 45%);
  clip-path: polygon(0 0,100% 0,82% 100%,50% 75%,18% 100%);
}
.award-medal span {
  width: 38px; height: 38px; display: grid; place-items: center; color: var(--award-ink);
  border: 3px solid var(--award-ink); border-radius: 50%; background: var(--award-sun); font-size: 20px; font-weight: 900;
}
.award-avatar {
  z-index: 4; width: clamp(78px, 7.2vw, 122px); height: clamp(78px, 7.2vw, 122px);
  border-width: 5px; background: var(--award-coral); box-shadow: 0 6px 0 var(--award-ink), 0 12px 0 rgba(21,56,78,.15);
}
.rank-1 .award-avatar { width: clamp(96px, 9vw, 148px); height: clamp(96px, 9vw, 148px); border-color: var(--award-sun); outline: 4px solid var(--award-ink); }
.award-avatar > i { font-size: clamp(30px, 3.5vw, 56px); }
.award-name {
  z-index: 4; width: 100%; margin-top: 12px; padding: 8px 10px; display: grid; gap: 2px; text-align: center;
  border: 3px solid var(--award-ink); border-radius: 13px; background: #fffaf0; box-shadow: 0 4px 0 var(--award-ink);
}
.award-name strong { overflow: hidden; color: var(--award-ink); font-size: clamp(17px, 1.45vw, 27px); font-weight: 900; text-overflow: ellipsis; white-space: nowrap; }
.award-name small { overflow: hidden; color: #53778a; font-size: clamp(11px, .76vw, 14px); font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.award-score { z-index: 5; margin: 8px 0 -18px; padding: 4px 15px; display: flex; align-items: baseline; gap: 4px; color: #fff; border: 3px solid var(--award-ink); border-radius: 99px; background: var(--award-deep); box-shadow: 0 3px 0 var(--award-ink); }
.award-score strong { color: #fff; font-size: clamp(20px, 1.8vw, 34px); font-weight: 900; }
.award-score small { color: #fff; font-size: 12px; font-weight: 800; }
.award-podium-step {
  width: 100%; height: clamp(82px, 12vh, 140px); padding-top: 22px; display: grid; place-items: center; align-content: center;
  color: var(--award-ink); border: 4px solid var(--award-ink); border-bottom: 0; border-radius: 20px 20px 0 0;
  background: #dfeef2; box-shadow: inset 0 8px 0 rgba(255,255,255,.58);
}
.rank-1 .award-podium-step { height: clamp(125px, 18vh, 205px); background: var(--award-sun); }
.rank-2 .award-podium-step { height: clamp(100px, 15vh, 170px); background: #d9e8ed; }
.rank-3 .award-podium-step { background: #ffc3ad; }
.award-podium-step b { font-size: clamp(40px, 4.6vw, 76px); line-height: .8; font-weight: 900; }
.award-podium-step span { margin-top: 8px; font-size: 11px; font-weight: 900; letter-spacing: .18em; }
.award-actions {
  position: absolute; right: 24px; top: 20px; z-index: 96; display: flex; gap: 10px;
}
.award-actions button {
  min-height: 46px; padding: 9px 17px; display: inline-flex; align-items: center; gap: 8px;
  color: var(--award-ink); border: 3px solid var(--award-ink); border-radius: 13px; background: #fffaf0;
  box-shadow: 0 4px 0 var(--award-ink); font-size: 15px; font-weight: 900;
}
.award-actions button.primary { color: var(--award-ink); background: var(--award-sun); }
.award-actions svg { width: 19px; height: 19px; }
.award-cannon { position: absolute; z-index: 7; bottom: 8%; width: 112px; height: 82px; transform: rotate(-13deg); pointer-events: none; }
.award-cannon.cannon-left { left: 2%; }
.award-cannon.cannon-right { right: 2%; transform: scaleX(-1) rotate(-13deg); }
.award-cannon i { position: absolute; left: 20px; top: 5px; width: 74px; height: 35px; border: 4px solid var(--award-ink); border-radius: 12px 25px 25px 12px; background: var(--award-coral); }
.award-cannon b { position: absolute; left: 27px; bottom: 4px; width: 44px; height: 44px; border: 5px solid var(--award-ink); border-radius: 50%; background: var(--award-sun); box-shadow: inset 0 0 0 8px #fffaf0; }
.award-cannon::after { content: ""; position: absolute; left: 93px; top: -2px; width: 18px; height: 18px; opacity: 0; border-radius: 50%; background: #fff; box-shadow: 22px -18px 0 var(--award-sun), 26px 14px 0 var(--award-coral), 2px -31px 0 var(--award-mint), 48px -3px 0 #fff; }
.award-cannon.burst::after { animation: award-cannon-burst .72s ease-out both; }
.award-confetti { position: absolute; inset: 0; z-index: 80; overflow: hidden; pointer-events: none; }
.confetti-piece { position: absolute; left: var(--x); top: -9%; width: 12px; height: 21px; border: 2px solid var(--award-ink); border-radius: 3px; animation: award-confetti-fall var(--duration) cubic-bezier(.18,.74,.34,1) var(--delay) both; }
.confetti-piece.tone-1 { background: var(--award-sun); }.confetti-piece.tone-2 { background: var(--award-coral); }.confetti-piece.tone-3 { background: var(--award-mint); }.confetti-piece.tone-4 { background: #fff; }.confetti-piece.tone-5 { background: var(--award-deep); }
.classroom-award.is-complete .award-heading > span { animation: award-finale-pulse 1.5s ease-in-out infinite; }

@keyframes award-winner-rise { 0% { opacity:0; transform:translateY(120px) scale(.82) rotate(-2deg); } 68% { opacity:1; transform:translateY(-13px) scale(1.035) rotate(1deg); } 100% { opacity:1; transform:none; } }
@keyframes award-champion-rise { 0% { opacity:0; transform:translateY(150px) scale(.7); } 58% { opacity:1; transform:translateY(-24px) scale(1.09); } 78% { transform:translateY(7px) scale(.98); } 100% { opacity:1; transform:none; } }
@keyframes award-cannon-burst { 0% { opacity:0; transform:scale(.2); } 25% { opacity:1; transform:scale(1.35); } 100% { opacity:0; transform:translate(55px,-30px) scale(.4); } }
@keyframes award-confetti-fall { 0% { opacity:0; transform:translate3d(0,-30px,0) rotate(0); } 10% { opacity:1; } 100% { opacity:.95; transform:translate3d(var(--drift),112vh,0) rotate(var(--turn)); } }
@keyframes award-finale-pulse { 50% { transform:translateY(-3px); box-shadow:0 7px 0 var(--award-ink); } }

@media (max-height: 720px) {
  .award-heading { padding-top: 14px; }
  .award-heading h2 { font-size: clamp(30px, 3.4vw, 54px); }
  .award-podium { padding-bottom: 1vh; }
  .award-avatar { width: 74px; height: 74px; }
  .rank-1 .award-avatar { width: 92px; height: 92px; }
  .award-name { margin-top: 8px; padding-block: 5px; }
  .award-podium-step { height: 74px; }
  .rank-1 .award-podium-step { height: 112px; }
  .rank-2 .award-podium-step { height: 92px; }
}
@media (max-width: 900px) {
  .award-podium { padding-inline: 24px; gap: 10px; }
  .award-winner { min-width: 0; width: 30%; }
  .award-winner.rank-1 { width: 34%; }
  .award-cannon { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .award-winner.is-revealed,
  .award-winner.rank-1.is-revealed,
  .award-cannon.burst::after,
  .confetti-piece,
  .classroom-award.is-complete .award-heading > span { animation: none !important; }
  .award-winner.is-revealed { opacity: 1; transform: none; }
}

* { box-sizing: border-box; }
html { min-width: 320px; background: var(--page); }
body { margin: 0; color: var(--ink); background: var(--page); }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { border: 0; cursor: pointer; color: inherit; }
button:disabled { cursor: not-allowed; opacity: 0.55; }
.hidden { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.svg-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
svg { width: 1.1em; height: 1.1em; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* Login */
.login-layout {
  width: min(1120px, calc(100% - 2rem));
  min-height: 100vh;
  margin: auto;
  padding: 2rem 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 390px;
  align-items: center;
  gap: clamp(3rem, 8vw, 7rem);
}
.login-story { position: relative; padding-left: 1rem; }
.login-story::before { content: ""; position: absolute; inset: 4% 8% 26% -5%; z-index: -1; border-radius: 52% 48% 43% 57%; background: linear-gradient(145deg, #d5f6ff, #e7fbf3); }
.mascot-wrap { width: min(430px, 82vw); filter: drop-shadow(0 18px 25px rgba(25, 68, 95, 0.14)); }
.mascot-wrap img { display: block; width: 100%; height: auto; }
.login-story h1 { margin: 0.7rem 0 1rem; font-size: clamp(2.8rem, 5.5vw, 5rem); line-height: 1.03; letter-spacing: -0.06em; }
.login-story h1 span { color: var(--coral); }
.story-dots { display: flex; gap: 0.5rem; }
.story-dots i { width: 11px; height: 11px; border-radius: 50%; background: var(--blue); }
.story-dots i:nth-child(2) { background: var(--coral); }
.story-dots i:nth-child(3) { background: var(--yellow); }
.login-card { padding: 2.1rem; border: 1px solid var(--line); border-radius: 26px; background: rgba(255, 255, 255, 0.94); box-shadow: 0 25px 65px rgba(17, 50, 71, 0.13); }
.login-icon { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 18px; color: #1677a5; background: var(--yellow-soft); }
.login-icon svg { width: 29px; height: 29px; stroke-width: 2; }
.login-card h2 { margin: 1.05rem 0 1.4rem; font-size: 1.5rem; }
.login-card form { display: grid; gap: 1rem; }
.login-status { min-height: 1.55rem; margin-top: 0.72rem; display:flex; align-items:center; gap:.46rem; color:#587685; font-size:.82rem; font-weight:850; }
.login-status::before { content:""; width:16px; height:16px; flex:0 0 16px; border-radius:50%; opacity:0; }
.login-status.is-loading::before { opacity:1; border:2px solid #bddce8; border-top-color:#1784b7; animation:login-status-spin .72s linear infinite; }
.login-status.is-error { color:#b83d35; }
.login-status.is-error::before { content:"×"; opacity:1; display:grid; place-content:center; color:#fff; background:#e86659; font-size:13px; line-height:1; }
.login-status.is-success { color:#176b53; }
.login-status.is-success::before { content:"✓"; opacity:1; display:grid; place-content:center; color:#fff; background:#52bea0; font-size:11px; line-height:1; }
.login-submit.is-loading svg { animation:login-status-spin .72s linear infinite; }
@keyframes login-status-spin { to { transform:rotate(360deg); } }

label { display: grid; gap: 0.42rem; color: var(--muted); font-size: 0.8rem; font-weight: 700; }
input, select, textarea { width: 100%; padding: 0.76rem 0.86rem; color: var(--ink); border: 1px solid var(--line); border-radius: 12px; outline: 0; background: #fbfdfe; }
input:focus, select:focus, textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 4px rgba(82, 184, 234, 0.14); }
textarea { min-height: 5rem; resize: vertical; }
.primary, .secondary, .danger-button { display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem; min-height: 40px; padding: 0.65rem 1rem; border-radius: 11px; font-size: 0.82rem; font-weight: 800; transition: 160ms ease; }
.primary { color: #11354c; background: linear-gradient(135deg, #73cdf4, #58b9ef); box-shadow: 0 7px 16px rgba(82, 184, 234, 0.23); }
.primary:hover { transform: translateY(-1px); box-shadow: 0 9px 20px rgba(82, 184, 234, 0.3); }
.secondary { border: 1px solid var(--line); background: #fff; }
.secondary:hover { color: #1677a5; border-color: #a9d9eb; background: #f3fbff; }
.danger-button { color: #a7473e; border: 1px solid #ffd0c8; background: var(--coral-soft); }
.wide { width: 100%; justify-content: space-between; }

/* Platform shell */
.app-shell { display: grid; min-height: 100vh; grid-template-columns: 252px minmax(0, 1fr); }
.sidebar { position: fixed; inset: 0 auto 0 0; z-index: 20; width: 252px; display: flex; flex-direction: column; padding: 1.3rem 1rem 1rem; color: #eaf8ff; background: linear-gradient(180deg, var(--navy-950), var(--navy-900)); box-shadow: 10px 0 35px rgba(11, 38, 58, 0.12); }
.sidebar::after { content: ""; position: absolute; right: -34px; bottom: 13%; width: 86px; height: 86px; border-radius: 50%; border: 18px solid rgba(82, 184, 234, 0.06); pointer-events: none; }
.sidebar-brand { display: flex; align-items: center; gap: 0.75rem; padding: 0.3rem 0.45rem 1.35rem; }
.brand-mark { display: grid; place-items: center; width: 42px; height: 42px; flex: 0 0 auto; color: var(--navy-900); border-radius: 14px; background: linear-gradient(145deg, var(--yellow), #ffbf61); }
.brand-mark svg { width: 23px; height: 23px; stroke-width: 2.1; }
.brand-copy { min-width: 0; }
.brand-copy strong, .brand-copy small { display: block; }
.brand-copy strong { font-size: 0.94rem; }
.brand-copy small { margin-top: 0.2rem; color: #89adbf; font-size: 0.68rem; }
.side-nav { display: flex; flex-direction: column; min-height: 0; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #315970 transparent; }
.nav-group { margin: 0.85rem 0.7rem 0.38rem; color: #6f98ac; font-size: 0.64rem; font-weight: 800; letter-spacing: 0.13em; }
.nav-item { position: relative; display: flex; align-items: center; gap: 0.72rem; margin: 0.11rem 0; padding: 0.7rem 0.78rem; color: #b9d1dd; border-radius: 11px; font-size: 0.82rem; font-weight: 700; }
.nav-item svg { width: 18px; height: 18px; }
.nav-item.is-refreshing svg { animation: task-nav-refresh .75s linear infinite; }
@keyframes task-nav-refresh { to { transform: rotate(360deg); } }
.nav-item:hover { color: #fff; background: rgba(255, 255, 255, 0.06); }
.nav-item.active { color: #102f45; background: linear-gradient(135deg, #b8eddf, #d8f7ee); box-shadow: 0 8px 18px rgba(0, 0, 0, 0.16); }
.nav-item.active::after { content: ""; position: absolute; right: -1rem; width: 4px; height: 20px; border-radius: 4px 0 0 4px; background: var(--yellow); }
.sidebar-foot { display: flex; align-items: center; gap: 0.6rem; margin-top: auto; padding: 1rem 0.35rem 0; border-top: 1px solid rgba(255, 255, 255, 0.1); }
.teacher-avatar { display: grid; place-items: center; width: 38px; height: 38px; flex: 0 0 auto; overflow: hidden; border-radius: 12px; color: #183e55; background: var(--yellow); font-weight: 900; }
.teacher-avatar img { width: 100%; height: 100%; object-fit: cover; }
.teacher-summary { min-width: 0; flex: 1; }
.teacher-summary strong, .teacher-summary span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.teacher-summary strong { max-width: 118px; font-size: 0.78rem; }
.teacher-summary span { margin-top: 0.18rem; color: #7fa6b8; font-size: 0.64rem; }
.icon-button { display: grid; place-items: center; width: 36px; height: 36px; flex: 0 0 auto; color: var(--muted); border-radius: 10px; background: #fff; }
.sidebar .icon-button { color: #9db8c5; background: rgba(255, 255, 255, 0.07); }
.icon-button:hover { color: #1278a8; }

.workspace { grid-column: 2; width: 100%; max-width: 1580px; min-width: 0; margin: 0 auto; padding: 0 2rem 3rem; }
.topbar { position: sticky; top: 0; z-index: 15; display: flex; min-height: 82px; align-items: center; justify-content: space-between; gap: 1rem; margin: 0 -0.3rem 1.25rem; padding: 0.8rem 0.3rem; background: rgba(244, 248, 250, 0.9); backdrop-filter: blur(14px); }
.route-heading span { display: block; color: var(--muted); font-size: 0.68rem; font-weight: 700; }
.route-heading h1 { margin: 0.23rem 0 0; font-size: 1.38rem; line-height: 1.2; }
.topbar-tools { display: flex; align-items: center; gap: 0.7rem; }
.classroom-reentry {
  display: flex;
  min-width: 205px;
  min-height: 54px;
  align-items: center;
  gap: 0.68rem;
  padding: 0.48rem 0.62rem;
  color: #123f4f;
  border: 1px solid #a8e2d3;
  border-radius: 15px;
  background: linear-gradient(135deg, #e8fbf5, #f4fcff);
  box-shadow: 0 8px 22px rgba(35, 123, 107, 0.14);
  transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
}
.classroom-reentry:hover { transform: translateY(-1px); border-color: #72ceb6; box-shadow: 0 11px 26px rgba(35, 123, 107, 0.2); }
.classroom-reentry-mark { position: relative; display: grid; width: 38px; height: 38px; flex: 0 0 auto; place-items: center; color: #167b68; border-radius: 12px; background: #c9f3e7; }
.classroom-reentry-mark svg { width: 20px; height: 20px; stroke-width: 2; }
.classroom-reentry-mark i { position: absolute; top: -2px; right: -2px; width: 9px; height: 9px; border: 2px solid #fff; border-radius: 50%; background: #35c99e; box-shadow: 0 0 0 4px rgba(53, 201, 158, 0.13); animation: classroom-reentry-pulse 1.8s ease-in-out infinite; }
.classroom-reentry-copy { display: grid; min-width: 0; flex: 1; gap: 0.08rem; text-align: left; }
.classroom-reentry-copy small, .classroom-reentry-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.classroom-reentry-copy small { max-width: 124px; color: #568073; font-size: 0.62rem; font-weight: 750; }
.classroom-reentry-copy strong { font-size: 0.75rem; }
.classroom-reentry-arrow { width: 14px; height: 14px; flex: 0 0 auto; color: #6f9b90; }
@keyframes classroom-reentry-pulse { 50% { box-shadow: 0 0 0 7px rgba(53, 201, 158, 0.04); transform: scale(0.9); } }
.top-refresh { border: 1px solid var(--line); box-shadow: var(--shadow-small); }
.topbar-account { display: flex; align-items: center; gap: 0.7rem; min-width: 255px; padding: 0.5rem 0.62rem; border: 1px solid var(--line); border-radius: 14px; background: rgba(255, 255, 255, 0.92); box-shadow: var(--shadow-small); }
.topbar-avatar { width: 42px; height: 42px; border-radius: 12px; }
.topbar-account-copy { display: grid; min-width: 0; flex: 1; gap: 0.1rem; }
.topbar-account-copy strong, .topbar-account-copy span, .topbar-account-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topbar-account-copy strong { font-size: 0.78rem; }
.topbar-account-copy span { color: #4f7180; font-size: 0.68rem; }
.topbar-account-copy span b { font-weight: 800; }
.topbar-account-copy span i { margin-left: 0.4rem; padding: 0.12rem 0.38rem; border-radius: 99px; color: #277a65; background: var(--mint-soft); font-size: 0.62rem; font-style: normal; }
.topbar-account-copy small { color: var(--muted); font-size: 0.62rem; }
.account-chevron { width: 15px; height: 15px; color: #9aadb7; }
.route-view { animation: route-in 180ms ease; }
@keyframes route-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* Reusable platform components */
.panel { padding: 1.25rem; border: 1px solid var(--line); border-radius: 17px; background: var(--surface); box-shadow: var(--shadow-small); }
.panel-head, .page-actions, .dialog-head, .dialog-actions, .welcome-strip, .welcome-actions, .detail-banner, .service-row { display: flex; align-items: center; }
.panel-head { justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.panel-head h3, .dialog-head h3 { margin: 0.18rem 0 0; font-size: 0.98rem; }
.panel-head > div > span, .dialog-head > div > span { color: var(--muted); font-size: 0.66rem; font-weight: 700; }
.panel-head a { display: inline-flex; align-items: center; gap: 0.2rem; color: #2783ae; font-size: 0.72rem; font-weight: 800; }
.panel-head a svg { width: 13px; height: 13px; }
.number-badge, .status, .status-pill, .course-pill { display: inline-flex; align-items: center; justify-content: center; padding: 0.28rem 0.55rem; border-radius: 99px; color: #687f8a; background: #edf3f5; font-size: 0.66rem; font-weight: 800; white-space: nowrap; }
.number-badge.ready, .status.open, .status-pill.open, .course-pill.open { color: #24755e; background: var(--mint-soft); }
.status.draft, .status-pill.draft { color: #8a681d; background: var(--yellow-soft); }
.status.closed, .status-pill.closed, .course-pill.closed { color: #a9564c; background: var(--coral-soft); }
.page-actions { justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.segmented { display: inline-flex; padding: 0.25rem; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.segmented button { padding: 0.48rem 0.75rem; border-radius: 9px; color: var(--muted); background: transparent; font-size: 0.72rem; font-weight: 800; }
.segmented button.active { color: #166b92; background: var(--blue-soft); }
.filter-tools { display: flex; align-items: center; gap: 0.6rem; min-width: 0; }
.search-box { position: relative; display: flex; width: min(260px, 28vw); min-width: 190px; align-items: center; color: var(--muted); }
.search-box > svg { position: absolute; left: 0.75rem; z-index: 1; width: 16px; height: 16px; pointer-events: none; }
.search-box input { min-height: 40px; padding: 0.58rem 0.75rem 0.58rem 2.15rem; border-radius: 12px; background: #fff; font-size: 0.72rem; }

.welcome-strip { position: relative; justify-content: space-between; gap: 1rem; min-height: 112px; margin-bottom: 1rem; padding: 1.25rem 1.4rem; overflow: hidden; border-radius: 19px; background: linear-gradient(115deg, #dff7ff, #e9fbf5 65%, #fff5d8); box-shadow: var(--shadow-small); }
.welcome-strip::after { content: ""; position: absolute; right: 20%; bottom: -60px; width: 140px; height: 140px; border: 22px solid rgba(82, 184, 234, 0.1); border-radius: 50%; }
.welcome-strip h2 { margin: 0.3rem 0 0; font-size: 1.35rem; }
.eyebrow { color: #43829c; font-size: 0.7rem; font-weight: 800; }
.welcome-actions { position: relative; z-index: 1; gap: 0.55rem; }
.stat-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.85rem; }
.command-stats { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.stat-grid article { position: relative; min-height: 108px; padding: 1rem 1.1rem; overflow: hidden; border: 1px solid var(--line); border-radius: 16px; background: #fff; box-shadow: var(--shadow-small); }
.stat-grid article > span:not(.stat-icon) { display: block; color: var(--muted); font-size: 0.71rem; }
.stat-grid strong { display: block; margin-top: 0.42rem; font-size: 1.8rem; line-height: 1; }
.stat-grid strong small { display: inline; margin-left: 0.15rem; color: var(--muted); font-size: 0.65rem; }
.stat-icon { position: absolute; right: 0.8rem; bottom: 0.75rem; display: grid; place-items: center; width: 38px; height: 38px; border-radius: 12px; }
.stat-icon svg { width: 20px; height: 20px; }
.stat-icon.blue { color: #2c8db8; background: var(--blue-soft); }
.stat-icon.mint { color: #30806a; background: var(--mint-soft); }
.stat-icon.yellow { color: #9d751b; background: var(--yellow-soft); }
.stat-icon.coral { color: #b55748; background: var(--coral-soft); }
.overview-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.85rem; margin-top: 0.85rem; }
.overview-command { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(290px, 0.82fr); }
.compact-list { display: grid; gap: 0.55rem; }
.compact-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 0.75rem; padding: 0.72rem 0.78rem; border-radius: 12px; background: #f7fafb; }
.compact-item strong, .compact-item small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.compact-item strong { font-size: 0.76rem; }
.compact-item small { margin-top: 0.16rem; color: var(--muted); font-size: 0.64rem; }
.activity-panel { position: relative; overflow: hidden; }
.activity-panel::after { content: ""; position: absolute; right: -30px; bottom: -42px; width: 88px; height: 88px; border: 16px solid rgba(98, 214, 177, 0.09); border-radius: 50%; pointer-events: none; }
.activity-list { position: relative; z-index: 1; display: grid; gap: 0.48rem; }
.activity-item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 0.55rem; padding: 0.58rem; border-radius: 11px; background: #f7fafb; }
.activity-item:hover { background: var(--blue-soft); }
.activity-item > span:nth-child(2) { min-width: 0; }
.activity-item strong, .activity-item small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.activity-item strong { font-size: 0.7rem; }
.activity-item small, .activity-item time { color: var(--muted); font-size: 0.59rem; }
.activity-mark { display: grid; place-items: center; width: 30px; height: 30px; color: #2a87ad; border-radius: 10px; background: var(--blue-soft); }
.activity-mark.completed { color: #28775f; background: var(--mint-soft); }
.activity-mark svg { width: 15px; height: 15px; }
.compact-empty { padding: 1.3rem 0.5rem; }
.empty-state, .empty-table { padding: 2rem 1rem; color: var(--muted); text-align: center; font-size: 0.76rem; }

.class-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.75rem; }
.class-card { padding: 1rem; border: 1px solid var(--line); border-radius: 14px; background: #fbfdfe; transition: 160ms ease; }
.class-card:hover { transform: translateY(-2px); border-color: #b8dce8; box-shadow: var(--shadow-small); }
.class-card-top { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.class-card h4 { margin: 0.75rem 0 0.3rem; font-size: 0.9rem; }
.class-code { margin: 0; color: #3080a4; font-size: 0.7rem; font-weight: 800; }
.class-rule { display: flex; justify-content: space-between; gap: 0.6rem; margin: 0.85rem 0 0.7rem; padding-top: 0.7rem; border-top: 1px dashed var(--line); color: var(--muted); font-size: 0.65rem; }
.class-rule strong { color: var(--ink); font-weight: 700; }
.class-rule strong.expired { color: #b0544b; }
.more-button { width: 30px; height: 30px; border-radius: 9px; color: var(--muted); background: #eef5f7; letter-spacing: 0.05em; }
.class-actions, .row-actions { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.class-actions { justify-content: space-between; }
.class-actions button, .row-actions button { min-height: 31px; padding: 0.4rem 0.58rem; border-radius: 8px; font-size: 0.66rem; font-weight: 800; }
.class-actions .primary { box-shadow: none; }
.danger-soft, .text-danger { color: #ab4e45; background: var(--coral-soft); }
.row-actions .secondary { min-height: 30px; }

.table-shell { overflow: auto; border: 1px solid var(--line); border-radius: 13px; }
table { width: 100%; min-width: 720px; border-collapse: collapse; }
th, td { padding: 0.78rem 0.82rem; border-bottom: 1px solid var(--line); text-align: left; font-size: 0.72rem; vertical-align: middle; }
th { color: #6e8794; background: #f2f8fa; font-size: 0.66rem; font-weight: 800; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover { background: #fbfdfe; }
td b, td small { display: block; }
td small { margin-top: 0.22rem; color: var(--muted); font-size: 0.62rem; }
.game-label { font-weight: 800; }
.legend { display: flex; align-items: center; gap: 0.32rem; color: var(--muted); font-size: 0.63rem; }
.legend span { width: 7px; height: 7px; margin-left: 0.38rem; border-radius: 50%; }
.legend .draft { background: #c89b3b; }
.legend .open { background: #49bd8d; }
.legend .closed { background: #e57d70; }
.load-more { display: block; margin: 1rem auto 0; }

.detail-banner { gap: 0.9rem; margin-bottom: 0.85rem; padding: 1rem 1.2rem; border: 1px solid var(--line); border-radius: 17px; background: linear-gradient(110deg, #fff, #eefaff); box-shadow: var(--shadow-small); }
.detail-banner > div { min-width: 0; flex: 1; }
.detail-banner > div > span { color: var(--muted); font-size: 0.67rem; font-weight: 700; }
.detail-banner h2 { margin: 0.2rem 0 0; overflow: hidden; font-size: 1.18rem; text-overflow: ellipsis; white-space: nowrap; }
.detail-icon { display: grid; place-items: center; width: 44px; height: 44px; color: #1b80aa; border-radius: 14px; background: var(--blue-soft); }
.detail-icon.coral { color: #ac5348; background: var(--coral-soft); }
.result-stats { margin-bottom: 0.85rem; }
.result-stats article { min-height: 90px; }
.result-stats strong { font-size: 1.5rem; }
.monitor-banner { background: linear-gradient(110deg, #fff, #e9faf4 70%, #fff8df); }
.teacher-control-panel { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .85rem; padding: .9rem 1rem; border: 1px solid #d8e7e3; background: linear-gradient(110deg, #f7fbf8, #fffaf0); }
.teacher-control-copy { min-width: 220px; display: grid; gap: .18rem; }
.teacher-control-copy > strong { color: #244957; font-size: .95rem; }
.teacher-control-copy > small { color: var(--muted); font-size: .64rem; }
.control-status { width: max-content; display: inline-flex; align-items: center; gap: .38rem; padding: .25rem .5rem; border-radius: 99px; color: #28725e; font-size: .6rem; font-weight: 850; background: #dff4ea; }
.control-status i { width: 7px; height: 7px; border-radius: 50%; background: #36ad7a; }
.control-status.paused { color: #9b5c2e; background: #fff0c7; }.control-status.paused i { background: #e08b36; }
.control-status.waiting_teacher { color: #426c82; background: #e3f0f5; }.control-status.waiting_teacher i { background: #5598b7; }
.control-status.ended { color: #78848a; background: #edf1f2; }.control-status.ended i { background: #87959b; }
.teacher-control-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .42rem; }
.control-button { min-height: 36px; display: inline-flex; align-items: center; gap: .34rem; padding: .48rem .62rem; border: 1px solid #cbdcdb; border-radius: 9px; color: #315a67; background: #fff; font-size: .64rem; font-weight: 800; box-shadow: 0 2px 0 rgba(42,82,91,.08); }
.control-button svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; }
.control-button.pause { color: #98602c; border-color: #eccb91; background: #fff8e5; }
.control-button.resume { color: #247251; border-color: #9bd6bd; background: #ebf8f1; }
.control-button.restore { color: #356e8e; border-color: #acd0df; background: #edf7fa; }
.control-button.danger { color: #a64f46; border-color: #efc0b9; background: #fff5f2; }
.world-flow-overview { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; margin-bottom: .85rem; }
.world-flow-overview article { display: grid; grid-template-columns: 1fr auto; gap: .36rem .65rem; padding: .72rem .82rem; border: 1px solid #d9e5e6; border-radius: 14px; background: #fff; }
.world-flow-overview span { color: #526d76; font-size: .65rem; font-weight: 800; }.world-flow-overview strong { color: #244957; font-size: .8rem; }
.world-flow-overview i { grid-column: 1 / -1; height: 7px; overflow: hidden; border-radius: 99px; background: #e9eff0; }.world-flow-overview i b { display: block; width: 0; height: 100%; border-radius: inherit; transition: width .28s ease; }
.world-flow-overview .cargo i b { background: #e5904f; }.world-flow-overview .document i b { background: #4d9fc2; }.world-flow-overview .fund i b { background: #4bb883; }
.monitor-clock { display: grid; grid-template-columns: auto auto; align-items: center; justify-items: end; gap: 0.16rem 0.4rem; color: #26755f; }
.monitor-clock time { grid-column: 1 / -1; color: var(--muted); font-size: 0.6rem; }
.monitor-clock strong { font-size: 0.68rem; }
.live-dot { width: 8px; height: 8px; border-radius: 50%; background: #42ba86; box-shadow: 0 0 0 5px rgba(66, 186, 134, 0.14); animation: live-pulse 1.8s ease-in-out infinite; }
@keyframes live-pulse { 50% { box-shadow: 0 0 0 9px rgba(66, 186, 134, 0); } }
.monitor-stats { margin-bottom: 0.85rem; }
.monitor-stats article { min-height: 88px; }
.monitor-stats article:nth-child(1) { border-top: 3px solid var(--blue); }
.monitor-stats article:nth-child(2) { border-top: 3px solid var(--yellow); }
.monitor-stats article:nth-child(3) { border-top: 3px solid var(--coral); }
.monitor-stats article:nth-child(4) { border-top: 3px solid var(--mint); }
.team-monitor-board { margin: 0 0 .85rem; padding: .85rem; border: 1px solid #cce4e7; border-radius: 18px; background: linear-gradient(135deg,#f7fcfb,#e7f6f3); box-shadow: 0 10px 24px rgba(44,98,108,.08); }
.team-monitor-board > header { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: .7rem; }
.team-monitor-board > header span { color: #2a88a0; font-size: .62rem; font-weight: 900; letter-spacing: .04em; }
.team-monitor-board > header h3 { margin: .15rem 0 0; color: #284f5d; font-size: .92rem; }
.team-monitor-board > header > small { color: #67848b; font-size: .62rem; font-weight: 700; }
.team-monitor-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(270px,1fr)); gap: .65rem; }
.team-monitor-card { padding: .7rem; border: 1px solid #c9e0e1; border-radius: 14px; background: #fff; box-shadow: 0 5px 14px rgba(32,89,99,.07); }
.team-monitor-card.status-playing { border-color: #7fc8b0; box-shadow: inset 4px 0 #55b88f,0 5px 14px rgba(32,89,99,.07); }
.team-monitor-card.status-confirming { border-color: #e4c76d; box-shadow: inset 4px 0 #e4b84e,0 5px 14px rgba(32,89,99,.07); }
.team-card-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.team-card-head span { color: #63808a; font-size: .6rem; font-weight: 800; }
.team-card-head strong { padding: .2rem .42rem; border-radius: 999px; color: #23775e; background: #dff4ea; font-size: .58rem; }
.team-interventions { display:flex; flex-wrap:wrap; gap:.35rem; margin-top:.55rem; padding-top:.48rem; border-top:1px dashed #bfd1d2; }
.team-interventions button { min-height:1.8rem; padding:.3rem .52rem; border:1px solid #8fb8bd; border-radius:.45rem; color:#245f6a; background:#eff8f4; font:700 .58rem/1.2 inherit; cursor:pointer; }
.team-interventions button:hover { border-color:#3d8e8d; background:#e0f3ec; }
.team-interventions button:disabled { opacity:.55; cursor:wait; }
.team-seats { display: grid; grid-template-columns: repeat(3,1fr); gap: .35rem; margin-top: .55rem; }
.team-seat { min-width: 0; display: grid; grid-template-columns: 25px minmax(0,1fr); align-items: center; gap: .35rem; padding: .36rem; border: 1px solid #d9e5e7; border-radius: 9px; background: #f6f9f9; }
.team-seat > b { width: 25px; height: 25px; display: grid; place-items: center; border-radius: 7px; color: #fff; background: #91a4aa; font-size: .65rem; }
.team-seat i { min-width: 0; display: block; font-style: normal; }
.team-seat strong,.team-seat small { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.team-seat strong { color: #365a65; font-size: .61rem; }
.team-seat small { margin-top: .08rem; color: #84969b; font-size: .52rem; }
.team-seat.online > b { background: #46a97f; }
.team-seat.active { border-color: #e4a850; background: #fff6dc; box-shadow: 0 0 0 2px rgba(228,168,80,.16); }
.team-seat.active > b { background: #df724f; }
.team-current { margin-top: .55rem; padding: .45rem .55rem; border-radius: 9px; background: #eaf5f4; }
.team-current b,.team-current span { display: block; }
.team-current b { color: #285966; font-size: .67rem; }
.team-current span { margin-top: .12rem; color: #668087; font-size: .56rem; }
.team-business-state { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .3rem; margin-top: .4rem; }
.team-business-state > span { overflow: hidden; padding: .34rem .42rem; border-radius: 8px; color: #58747c; background: #eef6f3; font-size: .51rem; white-space: nowrap; text-overflow: ellipsis; }
.team-business-state b { margin-right: .25rem; color: #2d6b62; }
.team-handoff { margin-top: .45rem; padding: .4rem .5rem; border: 1px solid #d9e5e7; border-radius: 9px; background: #f6f9f9; }
.team-handoff.pending { border-color: #e5bd5a; background: #fff7dc; }
.team-handoff b,.team-handoff small,.team-documents b,.team-documents small { display: block; }
.team-handoff b { color: #315c66; font-size: .59rem; }
.team-handoff small { margin-top: .1rem; color: #6d848a; font-size: .52rem; }
.team-documents { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .3rem; margin-top: .4rem; }
.team-documents > span { min-width: 0; padding: .32rem .4rem; border-radius: 8px; background: #edf5f6; }
.team-documents b,.team-documents small { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.team-documents b { color: #376574; font-size: .55rem; }
.team-documents small { margin-top: .08rem; color: #758c92; font-size: .49rem; }
.team-flow-mini { display: grid; grid-template-columns: repeat(3,1fr); gap: .4rem; margin-top: .5rem; }
.team-flow-mini > span { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .22rem; color: #5b747b; font-size: .54rem; font-weight: 800; }
.team-flow-mini i { height: 5px; overflow: hidden; border-radius: 99px; background: #dbe7e7; }
.team-flow-mini i b { display: block; height: 100%; border-radius: inherit; background: #df7c52; }
.team-flow-mini > span:nth-child(2) i b { background: #3f9ebf; }
.team-flow-mini > span:nth-child(3) i b { background: #52ad7c; }
.team-monitor-empty { grid-column: 1/-1; padding: .9rem; border: 1px dashed #a8c8cc; border-radius: 12px; text-align: center; color: #6d858b; font-size: .68rem; background: rgba(255,255,255,.58); }
.monitor-head { align-items: flex-end; }
.monitor-summary { display: grid; grid-template-columns: auto minmax(120px, 220px) auto; align-items: center; gap: 0.55rem; }
.number-badge.attention { color: #a95147; background: var(--coral-soft); }
.progress-track { width: 180px; height: 8px; overflow: hidden; border-radius: 99px; background: #e8f0f2; }
.progress-track i { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--blue), var(--mint)); transition: width 260ms ease; }
.monitor-summary > b { color: #2a765f; font-size: 0.68rem; }
.compact-actions { margin-bottom: 0.75rem; }
.progress-pill { display: inline-flex; padding: 0.27rem 0.52rem; border-radius: 99px; color: #6d8089; background: #edf3f5; font-size: 0.64rem; font-weight: 800; }
.progress-pill.playing { color: #17779f; background: var(--blue-soft); }
.progress-pill.completed { color: #26765f; background: var(--mint-soft); }
.progress-pill.not_started { color: #876819; background: var(--yellow-soft); }
.stage-chip { display: inline-flex; align-items: center; gap: 0.34rem; font-weight: 800; }
.stage-chip svg { color: #2c8cb3; }
.stale-row { background: #fff9f1; }
.attention-text { color: #b0584d; }
.capability-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0.7rem; margin-bottom: 0.85rem; padding: 0.9rem 1rem; }
.capability-item { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 0.35rem 0.7rem; }
.capability-item span { color: var(--muted); font-size: 0.65rem; font-weight: 700; }
.capability-item strong { font-size: 0.78rem; }
.capability-item > i { grid-column: 1 / -1; height: 5px; overflow: hidden; border-radius: 99px; background: #e9f0f2; }
.capability-item > i b { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--blue), var(--mint)); }
.metric-row { display: flex; min-width: 300px; gap: 0.3rem; }
.metric-chip { display: grid; min-width: 48px; padding: 0.27rem 0.34rem; border-radius: 8px; background: #f2f7f8; text-align: center; }
.metric-chip i { color: var(--muted); font-size: 0.52rem; font-style: normal; }
.metric-chip b { margin-top: 0.08rem; font-size: 0.62rem; }
.metric-empty { color: var(--muted); font-size: 0.62rem; }

.game-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.9rem; }
.game-card { min-height: 248px; padding: 1.15rem; display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 18px; background: #fbfdfe; box-shadow: 0 7px 18px rgba(17, 50, 71, 0.04); transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease; }
.game-card:hover { transform: translateY(-2px); border-color: #b8dce9; box-shadow: var(--shadow-small); }
.game-card.open { border-color: #97dac5; background: #effbf6; box-shadow: 0 10px 24px rgba(48, 139, 111, 0.1); }
.game-card-head { display: flex; align-items: center; justify-content: space-between; }
.game-card-icon { display: grid; place-items: center; width: 44px; height: 44px; flex: 0 0 auto; color: #287e9f; border-radius: 14px; background: var(--blue-soft); }
.game-card-icon svg { width: 21px; height: 21px; }
.game-card.open .game-card-icon { color: #26745f; background: #d5f4e9; }
.game-card.tone-coral .game-card-icon { color: #b95c4d; background: var(--coral-soft); }
.game-card.tone-gold .game-card-icon { color: #8d6b13; background: var(--yellow-soft); }
.game-card-copy { min-height: 60px; margin-top: 0.9rem; }
.game-card-chapter { color: #2d86aa; font-size: 0.62rem; font-weight: 800; }
.game-card h4 { margin: 0.34rem 0 0; font-size: 1rem; line-height: 1.35; }
.game-skill-row { display: flex; flex-wrap: wrap; gap: 0.38rem; margin-top: 0.9rem; }
.game-skill-row span { padding: 0.27rem 0.48rem; color: #526e7c; border-radius: 99px; background: #edf4f6; font-size: 0.58rem; font-weight: 800; }
.game-card-footer { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; margin-top: auto; padding-top: 0.95rem; }
.game-value-tags { gap: 0.35rem; }
.game-value-tags span { background: #dff6ed; color: #26745f; }
.fixed-config { display: grid; gap: 0.35rem; align-content: center; min-height: 76px; padding: 0.7rem 0.85rem; border: 1px solid #bfe6d8; border-radius: 12px; background: #f0fbf6; }
.fixed-config-label { color: var(--muted); font-size: 0.7rem; font-weight: 700; }
.fixed-config strong { display: flex; align-items: center; gap: 0.4rem; font-size: 0.88rem; color: #206b59; }
.fixed-config svg { width: 16px; height: 16px; }
.game-duration { display: inline-flex; align-items: center; gap: 0.3rem; color: var(--muted); font-size: 0.6rem; font-weight: 700; }
.game-guide-button { display: inline-flex; align-items: center; gap: 0.35rem; min-height: 34px; padding: 0.45rem 0.68rem; color: #176f96; border: 1px solid #c8e5f0; border-radius: 10px; background: #f3fbfe; font-size: 0.64rem; font-weight: 800; transition: 160ms ease; }
.game-guide-button:hover { color: #fff; border-color: #2e92ba; background: #2e92ba; }
.game-guide-button svg { width: 14px; height: 14px; }

.health-layout, .account-layout { display: grid; grid-template-columns: minmax(300px, 0.8fr) minmax(380px, 1.2fr); gap: 0.85rem; }
.health-hero { display: flex; flex-direction: column; align-items: center; padding: 2.2rem; text-align: center; }
.health-orbit { display: grid; place-items: center; width: 78px; height: 78px; margin-bottom: 1rem; color: #2486ad; border: 10px solid #e5f6fd; border-radius: 50%; background: #fff; box-shadow: 0 0 0 1px var(--line); }
.health-orbit svg { width: 31px; height: 31px; }
.health-hero h2 { margin: 0.8rem 0 0.3rem; font-size: 1.18rem; }
.health-hero time { margin-bottom: 1rem; color: var(--muted); font-size: 0.68rem; }
.service-panel { align-self: start; }
.service-row { gap: 0.8rem; padding: 0.9rem; border-radius: 12px; background: #f7fafb; }
.service-row div { min-width: 0; flex: 1; }
.service-row strong, .service-row small { display: block; }
.service-row strong { font-size: 0.76rem; }
.service-row small { margin-top: 0.18rem; color: var(--muted); font-size: 0.63rem; }
.service-row b { color: var(--muted); font-size: 0.68rem; }
.service-dot { width: 10px; height: 10px; border-radius: 50%; background: #a9b7bd; box-shadow: 0 0 0 5px #eef2f3; }
.service-dot.online { background: #48bd8b; box-shadow: 0 0 0 5px #e2f7ef; }
.service-dot.offline { background: #e2675c; box-shadow: 0 0 0 5px #ffebe7; }

.account-card { display: flex; flex-direction: column; align-items: center; text-align: center; }
.settings-avatar { width: 68px; height: 68px; border-radius: 20px; font-size: 1.3rem; }
.account-card h2 { margin: 0.75rem 0 0.45rem; font-size: 1.15rem; }
.account-card dl { width: 100%; margin: 1.2rem 0; border-top: 1px solid var(--line); }
.account-card dl div { display: grid; grid-template-columns: 80px 1fr; padding: 0.75rem 0; border-bottom: 1px solid var(--line); text-align: left; font-size: 0.72rem; }
.account-card dt { color: var(--muted); }
.account-card dd { margin: 0; font-weight: 800; }
.access-card { align-self: start; }
.access-address { display: flex; align-items: center; justify-content: space-between; padding: 0.85rem 0.9rem; color: #27765f; border-radius: 12px; background: var(--mint-soft); font-size: 0.8rem; font-weight: 800; }

/* Dialogs and feedback */
dialog { width: min(620px, calc(100% - 2rem)); padding: 0; color: var(--ink); border: 0; border-radius: 18px; box-shadow: 0 28px 75px rgba(11, 38, 58, 0.32); }
dialog::backdrop { background: rgba(11, 38, 58, 0.48); backdrop-filter: blur(3px); }
.wide-dialog { width: min(760px, calc(100% - 2rem)); }
.game-guide-dialog { width: min(1120px, calc(100% - 2rem)); }
.game-guide-dialog .dialog-body { max-height: min(80vh, 760px); padding: 1rem; }
.dialog-head { justify-content: space-between; gap: 1rem; padding: 1rem 1.2rem; border-bottom: 1px solid var(--line); }
.dialog-form, .dialog-body { padding: 1.15rem 1.2rem; }
.dialog-form { display: grid; gap: 0.9rem; }
.form-grid { grid-template-columns: 1fr 1fr; }
.span-two { grid-column: span 2; }
.support-field { display: flex; align-items: center; justify-content: space-between; padding-top: 1.05rem; color: var(--muted); font-size: 0.8rem; font-weight: 700; }
.dialog-actions { justify-content: flex-end; gap: 0.55rem; padding-top: 0.3rem; }
.dialog-body { max-height: 70vh; overflow: auto; }
.game-guide-shell { display: grid; grid-template-columns: minmax(0, 1.72fr) minmax(260px, 0.58fr); gap: 1rem; }
.guide-player { min-width: 0; }
.guide-screen { --guide-accent: #55c5df; min-height: 470px; padding: 1rem; display: flex; flex-direction: column; color: #fff; border: 1px solid rgba(139, 218, 235, 0.28); border-radius: 18px; background: radial-gradient(circle at 83% 18%, rgba(81, 201, 220, 0.19), transparent 31%), linear-gradient(145deg, #102f43, #123c54 58%, #0e2a3d); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 18px 34px rgba(17, 50, 71, 0.16); overflow: hidden; }
.guide-screen.tone-mint { --guide-accent: #65d7b3; }
.guide-screen.tone-coral { --guide-accent: #ff957f; }
.guide-screen.tone-gold { --guide-accent: #ffd36e; }
.guide-screen-bar { min-height: 24px; display: flex; align-items: center; justify-content: space-between; color: #d9edf5; font-size: 0.61rem; font-weight: 900; }
.guide-screen-bar > strong { color: #9fc1cf; font-size: 0.58rem; }
.guide-autoplay { display: inline-flex; align-items: center; gap: 0.42rem; }
.guide-autoplay > i { width: 7px; height: 7px; border-radius: 50%; background: var(--guide-accent); box-shadow: 0 0 0 0 color-mix(in srgb, var(--guide-accent) 40%, transparent); animation: guide-live-pulse 1.6s ease-out infinite; }
.guide-autoplay > b { color: #e9f8fc; font-size: inherit; }
.guide-timeline { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.42rem; margin-top: 0.7rem; }
.guide-timeline button { position: relative; min-width: 0; padding: 0.48rem 0.55rem 0.58rem; display: flex; align-items: center; gap: 0.38rem; color: #8caeba; border-radius: 9px; background: rgba(255, 255, 255, 0.055); text-align: left; overflow: hidden; }
.guide-timeline button > span { display: grid; place-items: center; width: 21px; height: 21px; flex: 0 0 auto; border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 7px; font-size: 0.5rem; }
.guide-timeline button > b { overflow: hidden; font-size: 0.58rem; white-space: nowrap; text-overflow: ellipsis; }
.guide-timeline button > i { position: absolute; left: 0; bottom: 0; width: 0; height: 2px; background: var(--guide-accent); }
.guide-timeline button.done { color: #d8edf2; }
.guide-timeline button.done > i { width: 100%; opacity: 0.45; }
.guide-timeline button.active { color: #fff; background: rgba(255, 255, 255, 0.105); }
.guide-timeline button.active > span { color: #092c3e; border-color: transparent; background: var(--guide-accent); }
.guide-timeline button.active > i { animation: guide-timeline-progress var(--scene-duration) linear both; }
.guide-stage { position: relative; min-height: 286px; margin-top: 0.72rem; display: flex; align-items: stretch; }
.guide-demo-scene { width: 100%; min-width: 0; min-height: 286px; }
.guide-demo-scene > .demo-scene { height: 100%; animation: guide-demo-enter 460ms cubic-bezier(.2,.75,.25,1) both; }
.guide-stage > img { position: absolute; right: 0.35rem; bottom: 0.4rem; z-index: 6; width: 104px; max-height: 94px; object-fit: contain; filter: drop-shadow(0 10px 14px rgba(4, 25, 37, 0.28)); animation: guide-mascot-float 3.6s ease-in-out infinite; pointer-events: none; }
.guide-scene { min-height: 80px; margin-top: 0.72rem; padding: 0.75rem 0.9rem; display: grid; grid-template-columns: 78px 1fr; gap: 0.85rem; align-items: center; border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 13px; background: rgba(3, 24, 36, 0.36); backdrop-filter: blur(9px); }
.guide-scene.scene-in { animation: guide-scene-in 420ms ease both; }
.guide-scene > span { color: var(--guide-accent); font-size: 0.59rem; font-weight: 900; letter-spacing: 0.04em; }
.guide-scene h4 { margin: 0; color: #fff; font-size: 0.88rem; line-height: 1.35; }
.guide-scene p { margin: 0.25rem 0 0; color: #b9d1da; font-size: 0.63rem; line-height: 1.5; }
.guide-controls { display: flex; align-items: center; justify-content: center; gap: 0.5rem; padding-top: 0.72rem; }
.guide-control, .guide-play-toggle { min-height: 36px; display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem; color: #276f8e; border: 1px solid #cfe3ea; border-radius: 10px; background: #fff; font-size: 0.64rem; font-weight: 800; transition: 160ms ease; }
.guide-control:hover, .guide-play-toggle:hover { color: #fff; border-color: #2e92ba; background: #2e92ba; }
.guide-control { width: 38px; padding: 0; }
.guide-control.previous svg { transform: rotate(180deg); }
.guide-play-toggle { min-width: 104px; padding: 0.45rem 0.72rem; }
.guide-summary-head { display: flex; align-items: center; justify-content: space-between; }
.guide-teacher-card { min-width: 0; padding: 1rem; display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 16px; background: linear-gradient(180deg, #fff, #fbfdfe); box-shadow: 0 12px 28px rgba(17, 50, 71, 0.06); }
.guide-teacher-card > .game-card-chapter { margin-top: 0.9rem; }
.guide-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 0.55rem; margin-top: 1rem; }
.guide-facts span { padding: 0.62rem; border-radius: 11px; background: #f3f7f8; }
.guide-facts small, .guide-facts strong { display: block; }
.guide-facts small { color: var(--muted); font-size: 0.56rem; }
.guide-facts strong { margin-top: 0.18rem; font-size: 0.68rem; }
.guide-section-label { margin-top: 1rem; color: #567582; font-size: 0.68rem; font-weight: 900; }
.guide-monitor-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; margin-top: 0.5rem; }
.guide-monitor-grid > span { min-width: 0; padding: 0.58rem; display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 0.12rem 0.42rem; align-items: center; border: 1px solid #e2ecef; border-radius: 11px; background: #fbfefe; }
.guide-monitor-grid svg { grid-row: 1 / 3; width: 18px; height: 18px; color: #2b9ab6; }
.guide-monitor-grid small { color: #758d97; font-size: 0.62rem; font-weight: 800; }
.guide-monitor-grid strong { overflow: hidden; color: #315766; font-size: 0.7rem; white-space: nowrap; text-overflow: ellipsis; }
.guide-create-task { margin-top: 0.75rem; }

.demo-scene { position: relative; padding: 0.12rem 0.12rem 0; }
.demo-order-window { position: relative; width: min(76%, 520px); min-height: 245px; padding: 0.9rem; color: var(--ink); border: 1px solid rgba(161, 210, 223, 0.55); border-radius: 15px; background: rgba(250, 254, 255, 0.97); box-shadow: 0 16px 32px rgba(2, 20, 30, 0.24); overflow: hidden; animation: demo-window-in 620ms cubic-bezier(.2,.78,.2,1) both; }
.demo-order-window::after { content: ""; position: absolute; inset: 0 auto 0 -30%; width: 24%; background: linear-gradient(90deg, transparent, rgba(91, 203, 225, 0.16), transparent); transform: skewX(-12deg); animation: demo-scan 2.4s 0.5s ease-in-out both; pointer-events: none; }
.demo-order-window header { display: flex; align-items: center; justify-content: space-between; color: #577785; font-size: 0.57rem; }
.demo-order-window header span { display: inline-flex; align-items: center; gap: 0.35rem; color: #2a849f; font-weight: 900; }
.demo-order-window header span i { width: 7px; height: 7px; border-radius: 50%; background: #55c7a2; box-shadow: 0 0 0 5px #e3f8f0; }
.demo-order-window header b { color: #3f6372; }
.demo-order-main { margin-top: 0.85rem; padding: 0.7rem 0.75rem; border-radius: 11px; background: #edf7fa; }
.demo-order-main small { color: #6a8792; font-size: 0.54rem; }
.demo-order-main h5 { margin: 0.22rem 0 0; font-size: 1.02rem; }
.demo-order-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.48rem; margin-top: 0.55rem; }
.demo-order-grid > span { min-width: 0; padding: 0.55rem; border: 1px solid #e2edf0; border-radius: 10px; opacity: 0; transform: translateY(7px); animation: demo-detail-in 420ms calc(0.75s + var(--i) * 0.13s) ease forwards; }
.demo-order-grid small, .demo-order-grid strong { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.demo-order-grid small { color: #7b949e; font-size: 0.49rem; }
.demo-order-grid strong { margin-top: 0.18rem; font-size: 0.6rem; }
.demo-read-status { margin-top: 0.62rem; display: inline-flex; align-items: center; gap: 0.3rem; color: #23775f; font-size: 0.56rem; font-weight: 900; opacity: 0; animation: demo-detail-in 420ms 1.42s ease forwards; }
.demo-read-status svg { width: 13px; height: 13px; }
.demo-document-stack { position: absolute; top: 2.4rem; right: 1.2rem; width: 130px; height: 185px; }
.demo-document-stack > span { position: absolute; inset: calc(var(--i) * 26px) 0 auto auto; width: 118px; height: 142px; padding: 0.7rem; display: flex; flex-direction: column; color: #dff5f9; border: 1px solid rgba(146, 220, 232, 0.28); border-radius: 13px; background: linear-gradient(145deg, rgba(32, 91, 113, 0.96), rgba(21, 63, 81, 0.98)); box-shadow: 0 13px 22px rgba(2, 17, 25, 0.22); transform: translate(34px, 10px) rotate(4deg); opacity: 0; animation: demo-document-in 560ms calc(0.38s + var(--i) * 0.18s) cubic-bezier(.2,.76,.24,1) forwards; }
.demo-document-stack svg { width: 20px; height: 20px; color: var(--guide-accent); }
.demo-document-stack b { margin-top: 0.7rem; font-size: 0.65rem; }
.demo-document-stack i { width: 62%; height: 4px; margin-top: 0.5rem; border-radius: 99px; background: rgba(255, 255, 255, 0.2); box-shadow: 0 10px 0 rgba(255, 255, 255, 0.12), 0 20px 0 rgba(255, 255, 255, 0.08); }

.demo-decision-panel { width: calc(100% - 1rem); min-height: 260px; padding: 0.95rem; color: var(--ink); border-radius: 15px; background: rgba(250, 254, 255, 0.97); box-shadow: 0 16px 32px rgba(2, 20, 30, 0.24); }
.demo-decision-panel > header, .demo-decision-panel > footer { display: flex; align-items: center; justify-content: space-between; }
.demo-decision-panel > header { color: #63808c; font-size: 0.57rem; }
.demo-decision-panel > header b { color: #277f9f; }
.demo-choice-list { position: relative; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.65rem; margin-top: 0.85rem; }
.demo-choice { position: relative; min-height: 120px; padding: 0.75rem; display: flex; flex-direction: column; justify-content: space-between; color: #55717d; border: 1px solid #dce9ed; border-radius: 13px; background: #f4f8f9; opacity: 0; transform: translateY(12px); animation: demo-choice-in 460ms calc(0.28s + var(--i) * 0.12s) ease forwards; }
.demo-choice > span { color: #93a8b0; font-size: 0.52rem; font-weight: 900; }
.demo-choice > strong { font-size: 0.7rem; }
.demo-choice > svg { position: absolute; right: 0.62rem; top: 0.62rem; width: 16px; height: 16px; opacity: 0; }
.demo-choice.selected { animation: demo-choice-in 460ms 0.4s ease forwards, demo-choice-select 520ms 1.65s ease forwards; }
.demo-choice.selected > svg { animation: demo-check-pop 320ms 2s ease forwards; }
.demo-cursor { position: absolute; left: calc(50% + 22px); top: 92px; z-index: 4; width: 34px; height: 34px; display: grid; place-items: center; color: #fff; border-radius: 50%; background: #2d9fc5; box-shadow: 0 8px 18px rgba(23, 111, 150, 0.28); opacity: 0; animation: demo-cursor-move 2.25s 0.66s cubic-bezier(.2,.8,.25,1) both; }
.demo-cursor svg { width: 17px; height: 17px; }
.demo-decision-panel > footer { margin-top: 0.78rem; padding-top: 0.68rem; color: #718c96; border-top: 1px solid #e5eef1; font-size: 0.56rem; }
.demo-decision-panel > footer strong { display: inline-flex; align-items: center; gap: 0.3rem; color: #27775f; }
.demo-decision-panel > footer svg { width: 13px; height: 13px; }

.demo-flow-scene { padding-top: 1.2rem; }
.demo-route-track { position: relative; width: calc(100% - 1.4rem); min-height: 148px; margin: 0 auto; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); align-items: start; }
.demo-route-line, .demo-route-progress { position: absolute; left: 9%; right: 9%; top: 34px; height: 4px; border-radius: 99px; }
.demo-route-line { background: rgba(206, 237, 244, 0.18); }
.demo-route-progress { right: auto; width: 0; background: linear-gradient(90deg, #48b6d4, var(--guide-accent)); box-shadow: 0 0 18px color-mix(in srgb, var(--guide-accent) 38%, transparent); animation: demo-route-grow 4.25s 0.35s ease-in-out forwards; }
.demo-route-token { position: absolute; left: 7%; top: 18px; z-index: 3; width: 34px; height: 34px; display: grid; place-items: center; color: #0d3347; border-radius: 11px; background: var(--guide-accent); box-shadow: 0 8px 18px rgba(0, 0, 0, 0.24); animation: demo-token-travel 4.25s 0.35s ease-in-out forwards; }
.demo-route-token svg { width: 17px; height: 17px; }
.demo-flow-node { position: relative; z-index: 2; display: grid; justify-items: center; gap: 0.55rem; color: #7fa3b1; text-align: center; animation: demo-node-pass 4.6s calc(0.32s + var(--i) * 0.73s) ease both; }
.demo-flow-node > i { width: 42px; height: 42px; display: grid; place-items: center; color: #c0dae3; border: 4px solid #173f54; border-radius: 14px; background: #204b60; box-shadow: 0 0 0 1px rgba(199, 238, 245, 0.1); font-size: 0.57rem; font-style: normal; font-weight: 900; }
.demo-flow-node > b { font-size: 0.58rem; }
.demo-flow-event { width: min(72%, 440px); margin: 0.4rem auto 0; padding: 0.68rem 0.8rem; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 0.65rem; border: 1px solid rgba(158, 224, 235, 0.18); border-radius: 12px; background: rgba(6, 31, 43, 0.72); opacity: 0; transform: translateY(12px); animation: demo-event-rise 420ms 3.7s ease forwards; }
.demo-flow-event > span { color: #85aebc; font-size: 0.52rem; }
.demo-flow-event > b { font-size: 0.62rem; }
.demo-flow-event > em { display: inline-flex; align-items: center; gap: 0.25rem; color: #70ddb9; font-size: 0.52rem; font-style: normal; }
.demo-flow-event svg { width: 12px; height: 12px; }

.demo-result-scene { display: grid; grid-template-columns: 142px minmax(0, 1fr); grid-template-rows: 1fr auto; gap: 0.7rem; padding-right: 5.2rem; }
.demo-score-card { min-height: 198px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px solid rgba(172, 229, 238, 0.18); border-radius: 16px; background: radial-gradient(circle, rgba(95, 210, 187, 0.16), rgba(7, 37, 51, 0.72)); box-shadow: inset 0 0 0 8px rgba(255, 255, 255, 0.025); }
.demo-score-card > span, .demo-score-card > small { color: #8fb2bf; font-size: 0.52rem; }
.demo-score-card > strong { margin: 0.28rem 0; color: #fff; font-size: 2.5rem; line-height: 1; text-shadow: 0 0 24px color-mix(in srgb, var(--guide-accent) 45%, transparent); opacity: 0; transform: scale(0.72); animation: demo-score-pop 620ms 0.45s cubic-bezier(.2,.88,.28,1.2) forwards; }
.demo-metric-board { min-width: 0; display: grid; align-content: center; gap: 0.62rem; }
.demo-metric-board > span { min-width: 0; padding: 0.62rem 0.72rem; display: grid; grid-template-columns: 55px 1fr; gap: 0.2rem 0.55rem; border: 1px solid rgba(168, 222, 232, 0.12); border-radius: 11px; background: rgba(255, 255, 255, 0.05); opacity: 0; transform: translateX(10px); animation: demo-metric-in 420ms calc(0.58s + var(--i) * 0.18s) ease forwards; }
.demo-metric-board small { color: #93b3bf; font-size: 0.53rem; }
.demo-metric-board strong { justify-self: end; color: #fff; font-size: 0.62rem; }
.demo-metric-board i { grid-column: 1 / -1; height: 5px; overflow: hidden; border-radius: 99px; background: rgba(255, 255, 255, 0.08); }
.demo-metric-board i b { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #4bb5d2, var(--guide-accent)); animation: demo-bar-grow 1.05s calc(0.9s + var(--i) * 0.18s) ease forwards; }
.demo-teacher-signal { grid-column: 1 / -1; padding: 0.62rem 0.72rem; display: flex; align-items: center; gap: 0.6rem; color: #d8edf3; border-radius: 11px; background: rgba(255, 255, 255, 0.07); opacity: 0; animation: demo-detail-in 420ms 1.55s ease forwards; }
.demo-teacher-signal > svg { width: 19px; height: 19px; color: var(--guide-accent); }
.demo-teacher-signal span { min-width: 0; }
.demo-teacher-signal small, .demo-teacher-signal strong { display: block; }
.demo-teacher-signal small { color: #8eafbb; font-size: 0.49rem; }
.demo-teacher-signal strong { margin-top: 0.12rem; overflow: hidden; font-size: 0.6rem; white-space: nowrap; text-overflow: ellipsis; }

.guide-screen.is-paused *, .guide-screen.is-paused *::before, .guide-screen.is-paused *::after { animation-play-state: paused !important; }
.guide-screen.is-paused .guide-autoplay > i { opacity: 0.45; animation: none; }
@keyframes guide-scene-in { from { opacity: 0; transform: translateY(9px); } to { opacity: 1; transform: none; } }
@keyframes guide-demo-enter { from { filter: blur(2px); transform: translateX(14px) scale(0.985); } to { filter: none; transform: none; } }
@keyframes guide-mascot-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@keyframes guide-live-pulse { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--guide-accent) 40%, transparent); } 70%, 100% { box-shadow: 0 0 0 8px transparent; } }
@keyframes guide-timeline-progress { from { width: 0; } to { width: 100%; } }
@keyframes demo-window-in { from { opacity: 0; transform: translateY(16px) scale(0.975); } to { opacity: 1; transform: none; } }
@keyframes demo-scan { from { left: -30%; } to { left: 115%; } }
@keyframes demo-detail-in { to { opacity: 1; transform: none; } }
@keyframes demo-document-in { to { opacity: 1; transform: translate(calc(var(--i) * -10px), calc(var(--i) * 4px)) rotate(calc((var(--i) - 1) * -3deg)); } }
@keyframes demo-choice-in { to { opacity: 1; transform: none; } }
@keyframes demo-choice-select { to { color: #205f73; border-color: #77c8dc; background: #e7f7fb; box-shadow: 0 9px 18px rgba(31, 127, 159, 0.13); transform: translateY(-3px); } }
@keyframes demo-check-pop { from { opacity: 0; transform: scale(0.5); } to { opacity: 1; transform: scale(1); } }
@keyframes demo-cursor-move { 0% { opacity: 0; transform: translate(115px, 48px) scale(0.8); } 32% { opacity: 1; } 64% { transform: translate(0, 0) scale(1); } 76% { transform: translate(0, 0) scale(0.82); } 88%, 100% { opacity: 1; transform: translate(0, 0) scale(1); } }
@keyframes demo-route-grow { to { width: 82%; } }
@keyframes demo-token-travel { 0% { left: 7%; transform: translateX(0) rotate(-4deg); } 100% { left: calc(93% - 34px); transform: rotate(4deg); } }
@keyframes demo-node-pass { 0%, 10% { color: #7fa3b1; transform: translateY(0); } 25%, 100% { color: #fff; transform: translateY(-3px); } 25%, 100% { filter: drop-shadow(0 0 10px color-mix(in srgb, var(--guide-accent) 35%, transparent)); } }
@keyframes demo-event-rise { to { opacity: 1; transform: none; } }
@keyframes demo-score-pop { to { opacity: 1; transform: scale(1); } }
@keyframes demo-metric-in { to { opacity: 1; transform: none; } }
@keyframes demo-bar-grow { to { width: var(--value); } }

/* One continuous operation demo: every phase lives on the same canvas. */
.guide-screen { min-height: 500px; }
.guide-cycle-track { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.42rem; margin-top: 0.7rem; padding-bottom: 6px; }
.guide-cycle-track::before { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; border-radius: 99px; background: rgba(255, 255, 255, 0.09); }
.guide-cycle-track > em { position: absolute; left: 0; bottom: 0; width: 0; height: 3px; border-radius: 99px; background: linear-gradient(90deg, #51bddd, var(--guide-accent)); box-shadow: 0 0 14px color-mix(in srgb, var(--guide-accent) 45%, transparent); }
.guide-cycle-track > span { min-width: 0; padding: 0.48rem 0.55rem; display: flex; align-items: center; gap: 0.4rem; color: #789fad; border-radius: 9px; background: rgba(255, 255, 255, 0.045); }
.guide-cycle-track > span > i { width: 21px; height: 21px; flex: 0 0 auto; display: grid; place-items: center; border: 1px solid rgba(255, 255, 255, 0.14); border-radius: 7px; font-size: 0.5rem; font-style: normal; font-weight: 900; }
.guide-cycle-track > span > b { overflow: hidden; font-size: 0.58rem; white-space: nowrap; text-overflow: ellipsis; }
.guide-continuous-demo { position: relative; width: 100%; min-height: 286px; }
.guide-continuous-demo > .demo-scene { position: absolute; inset: 0; height: 100%; opacity: 0; pointer-events: none; }
.guide-continuous-captions { position: relative; min-height: 80px; margin-top: 0.72rem; border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 13px; background: rgba(3, 24, 36, 0.36); backdrop-filter: blur(9px); overflow: hidden; }
.guide-continuous-captions > article { position: absolute; inset: 0; padding: 0.75rem 0.9rem; display: grid; grid-template-columns: 78px 1fr; gap: 0.85rem; align-items: center; opacity: 0; transform: translateY(8px); }
.guide-continuous-captions article > span { color: var(--guide-accent); font-size: 0.59rem; font-weight: 900; letter-spacing: 0.04em; }
.guide-continuous-captions h4 { margin: 0; color: #fff; font-size: 0.88rem; line-height: 1.35; }
.guide-continuous-captions p { margin: 0.25rem 0 0; color: #b9d1da; font-size: 0.63rem; line-height: 1.5; }
.guide-restart { min-height: 36px; padding: 0.45rem 0.72rem; display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem; color: #526f7c; border: 1px solid #d4e2e7; border-radius: 10px; background: #f7fafb; font-size: 0.64rem; font-weight: 800; transition: 160ms ease; }
.guide-restart:hover { color: #176f96; border-color: #afd7e6; background: #eef9fc; }
.guide-restart svg { width: 14px; height: 14px; }

.cycle-running .guide-cycle-track > em { animation: continuous-progress var(--cycle-duration) linear infinite; }
.cycle-running .guide-cycle-track .phase-1 { animation: continuous-phase-1 var(--cycle-duration) linear infinite; }
.cycle-running .guide-cycle-track .phase-2 { animation: continuous-phase-2 var(--cycle-duration) linear infinite; }
.cycle-running .guide-cycle-track .phase-3 { animation: continuous-phase-3 var(--cycle-duration) linear infinite; }
.cycle-running .guide-cycle-track .phase-4 { animation: continuous-phase-4 var(--cycle-duration) linear infinite; }
.cycle-running .demo-brief-scene { animation: continuous-order-phase var(--cycle-duration) ease-in-out infinite; }
.cycle-running .demo-decision-scene { animation: continuous-decision-phase var(--cycle-duration) ease-in-out infinite; }
.cycle-running .demo-flow-scene { animation: continuous-flow-phase var(--cycle-duration) ease-in-out infinite; }
.cycle-running .demo-result-scene { animation: continuous-result-phase var(--cycle-duration) ease-in-out infinite; }
.cycle-running .guide-continuous-captions .caption-1 { animation: continuous-caption-1 var(--cycle-duration) ease-in-out infinite; }
.cycle-running .guide-continuous-captions .caption-2 { animation: continuous-caption-2 var(--cycle-duration) ease-in-out infinite; }
.cycle-running .guide-continuous-captions .caption-3 { animation: continuous-caption-3 var(--cycle-duration) ease-in-out infinite; }
.cycle-running .guide-continuous-captions .caption-4 { animation: continuous-caption-4 var(--cycle-duration) ease-in-out infinite; }

.cycle-running .demo-order-window { animation: continuous-order-window var(--cycle-duration) ease-in-out infinite; }
.cycle-running .demo-order-window::after { animation: continuous-order-scan var(--cycle-duration) ease-in-out infinite; }
.cycle-running .demo-order-grid > span, .cycle-running .demo-read-status, .cycle-running .demo-document-stack > span { opacity: 1; transform: none; animation: none; }
.cycle-running .demo-document-stack > span { transform: translate(calc(var(--i) * -10px), calc(var(--i) * 4px)) rotate(calc(var(--i) * -2deg)); }
.cycle-running .demo-choice { opacity: 1; transform: none; animation: none; }
.cycle-running .demo-choice.selected { color: #55717d; border-color: #dce9ed; background: #f4f8f9; box-shadow: none; }
.cycle-running .demo-choice.selected > svg { opacity: 0; animation: continuous-check var(--cycle-duration) ease infinite; }
.cycle-running .demo-choice.selected { animation: continuous-choice var(--cycle-duration) ease infinite; }
.cycle-running .demo-cursor { animation: continuous-cursor var(--cycle-duration) cubic-bezier(.2,.8,.25,1) infinite; }
.cycle-running .demo-route-progress { animation: continuous-route var(--cycle-duration) ease-in-out infinite; }
.cycle-running .demo-route-token { animation: continuous-token var(--cycle-duration) ease-in-out infinite; }
.cycle-running .demo-flow-node { color: #7fa3b1; transform: none; filter: none; animation: continuous-node var(--cycle-duration) ease infinite; animation-delay: calc(var(--i) * 0.72s); }
.cycle-running .demo-flow-event { animation: continuous-event var(--cycle-duration) ease infinite; }
.cycle-running .demo-score-card > strong { animation: continuous-score var(--cycle-duration) cubic-bezier(.2,.88,.28,1.2) infinite; }
.cycle-running .demo-metric-board > span { opacity: 1; transform: none; animation: none; }
.cycle-running .demo-metric-board i b { animation: continuous-bar var(--cycle-duration) ease infinite; }
.cycle-running .demo-teacher-signal { animation: continuous-insight var(--cycle-duration) ease infinite; }

@keyframes continuous-progress { from { width: 0; } to { width: 100%; } }
@keyframes continuous-phase-1 { 0%, 2%, 19% { color: #fff; background: rgba(255,255,255,.1); } 23%, 100% { color: #789fad; background: rgba(255,255,255,.045); } }
@keyframes continuous-phase-2 { 0%, 18% { color: #789fad; background: rgba(255,255,255,.045); } 23%, 42% { color: #fff; background: rgba(255,255,255,.1); } 47%, 100% { color: #789fad; background: rgba(255,255,255,.045); } }
@keyframes continuous-phase-3 { 0%, 41% { color: #789fad; background: rgba(255,255,255,.045); } 46%, 68% { color: #fff; background: rgba(255,255,255,.1); } 73%, 100% { color: #789fad; background: rgba(255,255,255,.045); } }
@keyframes continuous-phase-4 { 0%, 67% { color: #789fad; background: rgba(255,255,255,.045); } 72%, 97% { color: #fff; background: rgba(255,255,255,.1); } 100% { color: #789fad; background: rgba(255,255,255,.045); } }
@keyframes continuous-order-phase { 0% { opacity: 0; transform: translateY(12px) scale(.985); } 3%, 18% { opacity: 1; transform: none; } 24%, 100% { opacity: 0; transform: translateX(-24px) scale(.98); } }
@keyframes continuous-decision-phase { 0%, 18% { opacity: 0; transform: translateX(28px) scale(.985); } 23%, 41% { opacity: 1; transform: none; } 47%, 100% { opacity: 0; transform: translateX(-24px) scale(.98); } }
@keyframes continuous-flow-phase { 0%, 41% { opacity: 0; transform: translateX(28px) scale(.985); } 46%, 67% { opacity: 1; transform: none; } 73%, 100% { opacity: 0; transform: translateX(-24px) scale(.98); } }
@keyframes continuous-result-phase { 0%, 67% { opacity: 0; transform: translateX(28px) scale(.985); } 72%, 96% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateY(-10px) scale(.985); } }
@keyframes continuous-caption-1 { 0% { opacity: 0; transform: translateY(8px); } 3%, 18% { opacity: 1; transform: none; } 23%, 100% { opacity: 0; transform: translateY(-8px); } }
@keyframes continuous-caption-2 { 0%, 18% { opacity: 0; transform: translateY(8px); } 23%, 41% { opacity: 1; transform: none; } 46%, 100% { opacity: 0; transform: translateY(-8px); } }
@keyframes continuous-caption-3 { 0%, 41% { opacity: 0; transform: translateY(8px); } 46%, 67% { opacity: 1; transform: none; } 72%, 100% { opacity: 0; transform: translateY(-8px); } }
@keyframes continuous-caption-4 { 0%, 67% { opacity: 0; transform: translateY(8px); } 72%, 97% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateY(-8px); } }
@keyframes continuous-order-window { 0% { transform: translateY(14px) scale(.98); } 4%, 18% { transform: none; } 23%, 100% { transform: translateX(-18px) scale(.985); } }
@keyframes continuous-order-scan { 0%, 3% { left: -30%; } 14% { left: 115%; } 15%, 100% { left: 115%; } }
@keyframes continuous-cursor { 0%, 23% { opacity: 0; transform: translate(115px, 48px) scale(.8); } 27% { opacity: 1; } 34% { opacity: 1; transform: translate(0, 0) scale(1); } 37% { opacity: 1; transform: translate(0, 0) scale(.82); } 40%, 44% { opacity: 1; transform: translate(0, 0) scale(1); } 47%, 100% { opacity: 0; transform: translate(0, 0) scale(1); } }
@keyframes continuous-choice { 0%, 30% { color: #55717d; border-color: #dce9ed; background: #f4f8f9; box-shadow: none; transform: none; } 35%, 43% { color: #205f73; border-color: #77c8dc; background: #e7f7fb; box-shadow: 0 9px 18px rgba(31,127,159,.13); transform: translateY(-3px); } 47%, 100% { color: #55717d; border-color: #dce9ed; background: #f4f8f9; box-shadow: none; transform: none; } }
@keyframes continuous-check { 0%, 33% { opacity: 0; transform: scale(.5); } 36%, 43% { opacity: 1; transform: scale(1); } 47%, 100% { opacity: 0; transform: scale(.5); } }
@keyframes continuous-route { 0%, 45% { width: 0; } 67%, 100% { width: 82%; } }
@keyframes continuous-token { 0%, 45% { left: 7%; transform: rotate(-4deg); } 67%, 100% { left: calc(93% - 34px); transform: rotate(4deg); } }
@keyframes continuous-node { 0%, 45% { color: #7fa3b1; transform: none; filter: none; } 50%, 68% { color: #fff; transform: translateY(-3px); filter: drop-shadow(0 0 10px color-mix(in srgb, var(--guide-accent) 35%, transparent)); } 73%, 100% { color: #7fa3b1; transform: none; filter: none; } }
@keyframes continuous-event { 0%, 59% { opacity: 0; transform: translateY(12px); } 64%, 70% { opacity: 1; transform: none; } 73%, 100% { opacity: 0; transform: translateY(12px); } }
@keyframes continuous-score { 0%, 70% { opacity: 0; transform: scale(.72); } 76%, 96% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(.9); } }
@keyframes continuous-bar { 0%, 72% { width: 0; } 84%, 97% { width: var(--value); } 100% { width: 0; } }
@keyframes continuous-insight { 0%, 82% { opacity: 0; transform: translateY(8px); } 87%, 97% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateY(-4px); } }

/* The role-play introduction uses one continuous film canvas. */
.game-guide-dialog { width: min(1280px, calc(100% - 2rem)); }
.game-guide-dialog .dialog-body { max-height: min(82vh, 790px); }
.game-guide-shell { grid-template-columns: minmax(0, 2.35fr) minmax(300px, 0.72fr); }
.guide-screen.trade-roleplay-guide { min-height: 610px; padding: 0.85rem; }
.trade-roleplay-guide .guide-screen-bar { min-height: 28px; font-size: 0.76rem; }
.trade-roleplay-guide .guide-screen-bar > strong { color: #c4dce5; font-size: 0.75rem; }
.guide-facts small { font-size: 0.68rem; }
.guide-facts strong { font-size: 0.78rem; }
.guide-create-task { min-height: 46px; font-size: 0.8rem; }
.game-guide-dialog .guide-teacher-card :where(.game-card-chapter, .guide-section-label, small, .game-skill-row span, .status-pill),
.game-guide-dialog .guide-controls button { font-size: 0.75rem; }

.trade-demo-board { position: relative; min-height: 552px; margin-top: 0.55rem; padding: 0.6rem; display: grid; grid-template-rows: 50px 46px 60px 264px 82px; gap: 0.48rem; color: #244c5c; border: 1px solid rgba(145, 218, 230, 0.38); border-radius: 16px; background: radial-gradient(circle at 88% 8%, rgba(255, 218, 111, 0.22), transparent 26%), linear-gradient(145deg, #e9faff, #f4fff5 66%, #fff8e5); box-shadow: 0 16px 30px rgba(2, 20, 30, 0.24); overflow: hidden; }
.trade-demo-topbar { padding: 0.45rem 0.65rem; display: grid; grid-template-columns: 100px minmax(0, 1fr) 190px; gap: 0.75rem; align-items: center; border: 1px solid #d7edf2; border-radius: 12px; background: rgba(255, 255, 255, 0.9); }
.trade-demo-topbar small, .trade-demo-market small, .trade-demo-order > small, .trade-demo-resources > small, .trade-demo-result small { color: #6f8d98; font-size: 0.7rem; font-weight: 800; }
.trade-demo-round { display: flex; align-items: center; gap: 0.5rem; }
.trade-demo-round strong { color: #1f6d87; font-size: 1rem; }
.trade-demo-race { display: grid; grid-template-columns: auto minmax(100px, 1fr) auto; gap: 0.55rem; align-items: center; }
.trade-demo-race > span { display: flex; gap: 0.38rem; align-items: baseline; color: #315e70; font-size: 0.72rem; white-space: nowrap; }
.trade-demo-race > span:last-child { justify-content: flex-end; }
.trade-demo-race > span strong { color: #123d4f; font-size: 0.9rem; }
.trade-demo-race > i { position: relative; height: 8px; border-radius: 99px; background: #dceef2; }
.trade-demo-race > i b, .trade-demo-race > i em { position: absolute; left: 0; height: 3px; border-radius: 99px; }
.trade-demo-race > i b { top: 0; width: 42%; background: #45bde0; }
.trade-demo-race > i em { bottom: 0; width: 38%; background: #ffab64; }
.trade-demo-race > i svg { position: absolute; left: 39%; top: -11px; width: 22px; height: 22px; padding: 4px; color: #fff; border-radius: 7px; background: #269ec4; box-shadow: 0 5px 10px rgba(36, 129, 158, 0.25); }
.trade-demo-task { min-width: 0; display: grid; justify-items: end; }
.trade-demo-task strong { max-width: 100%; overflow: hidden; color: #214d5d; font-size: 0.76rem; white-space: nowrap; text-overflow: ellipsis; }

.trade-demo-market { padding: 0.42rem 0.62rem; display: grid; grid-template-columns: 30px auto minmax(0, 1fr) auto; gap: 0.52rem; align-items: center; border-radius: 11px; background: linear-gradient(90deg, #fff4c8, #eaf8d8); box-shadow: inset 0 0 0 1px rgba(209, 187, 89, 0.18); }
.trade-demo-market > span { font-size: 1.3rem; }
.trade-demo-market > div { display: grid; }
.trade-demo-market > div strong { color: #46642d; font-size: 0.78rem; }
.trade-demo-market-rules { display: flex !important; justify-content: flex-end; gap: 0.38rem; }
.trade-demo-market-rules span { padding: 0.26rem 0.48rem; color: #627542; border: 1px solid rgba(109, 139, 67, 0.18); border-radius: 99px; background: rgba(255, 255, 255, 0.76); font-weight: 900; }
.trade-demo-sync { width: 28px; height: 28px; display: grid; place-items: center; color: #258068; border-radius: 50%; background: #fff; }
.trade-demo-sync svg { width: 15px; height: 15px; }

.trade-demo-stages { position: relative; padding: 0 1.4rem; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); align-items: start; }
.trade-demo-stages::before, .trade-demo-stages > em { content: ""; position: absolute; left: 10%; top: 20px; height: 4px; border-radius: 99px; }
.trade-demo-stages::before { right: 10%; background: #cfe6eb; }
.trade-demo-stages > em { width: 42%; background: linear-gradient(90deg, #47bddd, #68d3af); }
.trade-demo-stages > span { position: relative; z-index: 2; display: grid; justify-items: center; gap: 0.22rem; color: #78929c; }
.trade-demo-stages > span i { width: 40px; height: 40px; display: grid; place-items: center; border: 4px solid #eefafb; border-radius: 13px; background: #d8e9ed; font-size: 1.05rem; font-style: normal; }
.trade-demo-stages > span b { font-size: 0.71rem; }
.trade-demo-stages > span.done i { background: #bcefdc; }
.trade-demo-stages > span.active { color: #176f8e; }
.trade-demo-stages > span.active i { background: #78d7e8; box-shadow: 0 0 0 5px rgba(82, 192, 218, 0.16); }
.trade-demo-stages > svg { position: absolute; z-index: 4; left: 47%; top: 8px; width: 26px; height: 26px; padding: 5px; color: #fff; border-radius: 9px; background: #269ec4; box-shadow: 0 7px 14px rgba(36, 129, 158, 0.28); }

.trade-demo-workspace { min-width: 0; display: grid; grid-template-columns: 192px minmax(0, 1fr) 142px; gap: 0.5rem; }
.trade-demo-order, .trade-demo-planning, .trade-demo-resources { min-width: 0; border: 1px solid #d6e8ec; border-radius: 13px; background: rgba(255, 255, 255, 0.92); box-shadow: 0 9px 18px rgba(51, 105, 123, 0.08); }
.trade-demo-order { padding: 0.72rem; }
.trade-demo-order h5 { margin: 0.2rem 0 0; color: #173f50; font-size: 0.95rem; }
.trade-demo-order-route { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.32rem; }
.trade-demo-order-route span { padding: 0.2rem 0.38rem; color: #68828c; border-radius: 99px; background: #f0f6f8; font-weight: 800; }
.trade-demo-tags { display: flex; flex-wrap: wrap; gap: 0.28rem; margin-top: 0.55rem; }
.trade-demo-tags span { padding: 0.2rem 0.36rem; color: #54727e; border-radius: 99px; background: #edf6f8; font-size: 0.64rem; font-weight: 800; }
.trade-demo-order-data { display: grid; grid-template-columns: 1fr 0.7fr; gap: 0.38rem; margin-top: 0.55rem; }
.trade-demo-order-data span:first-child { grid-column: 1 / -1; }
.trade-demo-order-data span { padding: 0.36rem 0.42rem; display: grid; border-radius: 8px; background: #f5f9fa; }
.trade-demo-order-data small { color: #8198a0; font-size: 0.63rem; }
.trade-demo-order-data b { margin-top: 0.08rem; color: #335b6b; font-size: 0.7rem; }
.trade-demo-stage-progress { margin-top: 0.62rem; }
.trade-demo-stage-progress > span { display: flex; justify-content: space-between; color: #416778; font-size: 0.68rem; }
.trade-demo-stage-progress > i { height: 6px; margin-top: 0.3rem; display: block; overflow: hidden; border-radius: 99px; background: #dcecef; }
.trade-demo-stage-progress > i b { display: block; width: 62%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #42badb, #68d2ae); }

.trade-demo-planning { position: relative; padding: 0.68rem; overflow: hidden; }
.trade-demo-planning > header { display: flex; align-items: flex-start; justify-content: space-between; }
.trade-demo-planning > header span { display: grid; }
.trade-demo-planning > header small { color: #708b96; font-size: 0.68rem; font-weight: 900; }
.trade-demo-planning > header strong { margin-top: 0.1rem; color: #315c6d; font-size: 0.74rem; }
.trade-demo-planning > header > b { padding: 0.25rem 0.42rem; color: #217d9a; border-radius: 8px; background: #e2f6fb; font-size: 0.66rem; }
.trade-demo-services { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.4rem; margin-top: 0.55rem; }
.trade-demo-services > span { position: relative; min-width: 0; min-height: 70px; padding: 0.5rem; display: grid; align-content: space-between; gap: 0.28rem; color: #466775; border: 1px solid #dce9ec; border-radius: 10px; background: #f5f9fa; }
.trade-demo-services strong { font-size: 0.72rem; }
.trade-demo-services small { color: #79919a; font-size: 0.62rem; line-height: 1.4; }
.trade-demo-services svg { position: absolute; right: 0.35rem; top: 0.35rem; width: 15px; height: 15px; color: #2aaa83; opacity: 0; }
.trade-demo-actions { display: flex; gap: 0.34rem; align-items: center; margin-top: 0.5rem; }
.trade-demo-actions > small { margin-right: auto; color: #718c96; font-size: 0.67rem; font-weight: 900; }
.trade-demo-actions > span { padding: 0.3rem 0.42rem; display: inline-flex; align-items: center; gap: 0.2rem; color: #617e89; border: 1px solid #dce9ec; border-radius: 8px; background: #f7fafb; font-size: 0.64rem; font-weight: 800; }
.trade-demo-actions svg { width: 13px; height: 13px; color: #2aaa83; opacity: 0; }
.trade-demo-roll { width: 100%; min-height: 38px; margin-top: 0.55rem; color: #fff; border-radius: 10px; background: linear-gradient(100deg, #229fc7, #54c6a5); box-shadow: 0 8px 16px rgba(34, 159, 199, 0.2); font-size: 0.73rem; font-weight: 900; }
.trade-demo-roll i { margin-left: 0.35rem; font-size: 1rem; font-style: normal; }
.trade-demo-cursor { position: absolute; z-index: 12; left: 23%; top: 61px; width: 30px; height: 30px; display: grid; place-items: center; color: #fff; border: 3px solid #fff; border-radius: 50%; background: #217fa3; box-shadow: 0 8px 16px rgba(23, 93, 121, 0.3); opacity: 0; }
.trade-demo-cursor svg { width: 15px; height: 15px; }
.trade-demo-dice { position: absolute; z-index: 9; inset: 42px 54px auto; min-height: 160px; padding: 0.8rem; display: grid; justify-items: center; color: #315665; border: 1px solid #bee0e8; border-radius: 15px; background: rgba(250, 254, 255, 0.98); box-shadow: 0 18px 35px rgba(11, 57, 75, 0.25); opacity: 0; transform: translateY(18px) scale(0.96); pointer-events: none; }
.trade-demo-dice > small { color: #64848f; font-size: 0.7rem; font-weight: 900; }
.trade-demo-dice > span { position: relative; width: 66px; height: 66px; margin-top: 0.28rem; }
.trade-demo-dice > span i { position: absolute; inset: 0; display: grid; place-items: center; color: #fff; border-radius: 18px; background: linear-gradient(145deg, #36b5d5, #258bb4); box-shadow: inset 0 0 0 5px rgba(255, 255, 255, 0.16), 0 10px 20px rgba(31, 128, 161, 0.22); font-size: 1.8rem; font-style: normal; font-weight: 900; opacity: 0; }
.trade-demo-dice > strong { display: none; }
.trade-demo-dice > b { color: #27846c; font-size: 0.7rem; }
.trade-demo-turn { position: absolute; z-index: 10; left: 0.7rem; right: 0.7rem; bottom: 0.7rem; min-height: 64px; padding: 0.62rem; display: grid; grid-template-columns: 34px 1fr auto; gap: 0.55rem; align-items: center; border: 1px solid #bfe6d8; border-radius: 11px; background: #effcf6; box-shadow: 0 12px 24px rgba(31, 112, 89, 0.18); opacity: 0; transform: translateY(18px); }
.trade-demo-turn > span { width: 32px; height: 32px; display: grid; place-items: center; color: #fff; border-radius: 10px; background: #43bd96; }
.trade-demo-turn svg { width: 17px; height: 17px; }
.trade-demo-turn > div { display: grid; }
.trade-demo-turn small { color: #63887b; font-size: 0.65rem; }
.trade-demo-turn strong { margin-top: 0.1rem; color: #245f4e; font-size: 0.7rem; }
.trade-demo-turn > b { color: #238c6c; font-size: 0.9rem; }

.trade-demo-resources { padding: 0.65rem; }
.trade-demo-resources > span { min-height: 27px; display: grid; grid-template-columns: 1fr auto auto; gap: 0.3rem; align-items: center; border-bottom: 1px solid #edf2f4; color: #55737f; font-size: 0.68rem; }
.trade-demo-resources > span strong { color: #234d5e; font-size: 0.75rem; }
.trade-demo-resources > span em { color: #21936d; font-size: 0.62rem; font-style: normal; font-weight: 900; opacity: 0; }
.trade-demo-resources > span:last-of-type strong { color: #d66558; }
.trade-demo-resources > div { margin-top: 0.45rem; padding: 0.48rem; border-radius: 9px; background: #fff4e8; }
.trade-demo-resources > div small { color: #a36839; font-size: 0.63rem; font-weight: 900; }
.trade-demo-ai-choice { margin-top: 0.22rem; display: grid; gap: 0.2rem; justify-items: start; }
.trade-demo-ai-choice b { color: #765d48; white-space: nowrap; }
.trade-demo-ai-choice em { padding: 0.18rem 0.32rem; color: #9a6134; border-radius: 99px; background: rgba(255, 255, 255, 0.72); font-style: normal; font-weight: 900; white-space: nowrap; }

.trade-demo-track { padding: 0.48rem; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0.35rem; border: 1px solid rgba(78, 150, 174, 0.18); border-radius: 12px; background: #0d3448; overflow: hidden; }
.trade-demo-track > span { min-width: 0; padding: 0.4rem; display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 0.08rem 0.4rem; align-content: center; color: #aec9d3; border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 9px; background: rgba(255, 255, 255, 0.035); opacity: 0.58; }
.trade-demo-track i { grid-row: 1 / 3; width: 28px; height: 28px; display: grid; place-items: center; color: #77dcbc; border-radius: 9px; background: rgba(113, 220, 189, 0.12); }
.trade-demo-track i svg { width: 15px; height: 15px; }
.trade-demo-track b, .trade-demo-track em { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.trade-demo-track b { color: #f0fbff; }
.trade-demo-track em { color: #a9c6d1; font-style: normal; }

.trade-demo-result { position: absolute; z-index: 20; top: 64px; right: 0.7rem; bottom: 91px; width: min(58%, 520px); padding: 1rem; color: #244e5d; border: 1px solid #c4e3e8; border-radius: 15px; background: rgba(252, 255, 255, 0.985); box-shadow: 0 22px 44px rgba(8, 49, 66, 0.3); opacity: 0; transform: translateX(112%); pointer-events: none; }
.trade-demo-result > header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.trade-demo-result h5 { margin: 0.15rem 0 0; color: #1c5367; font-size: 1.2rem; }
.trade-demo-result-tags { display: flex; gap: 0.3rem; margin-top: 0.35rem; }
.trade-demo-result-tags span { padding: 0.2rem 0.4rem; color: #28745f; border-radius: 99px; background: #e7f8f1; font-weight: 900; }
.trade-demo-result header > span { min-width: 108px; padding: 0.6rem; display: grid; justify-items: center; border-radius: 12px; background: #eaf9f3; }
.trade-demo-result header > span strong { color: #1e8365; font-size: 1.7rem; line-height: 1; }
.trade-demo-result header > span em { margin-top: 0.2rem; color: #33836b; font-size: 0.62rem; font-style: normal; font-weight: 900; }
.trade-demo-score-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0.45rem; margin-top: 0.75rem; }
.trade-demo-score-list > span { padding: 0.48rem; display: grid; grid-template-columns: 1fr auto; gap: 0.28rem; border-radius: 9px; background: #f3f8f9; }
.trade-demo-score-list small { font-size: 0.65rem; }
.trade-demo-score-list strong { color: #315d6c; font-size: 0.68rem; }
.trade-demo-score-list i { grid-column: 1 / -1; height: 5px; overflow: hidden; border-radius: 99px; background: #dbeaec; }
.trade-demo-score-list i b { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #3fb7d8, #5bcea9); }
.trade-demo-result > footer { margin-top: 0.75rem; padding: 0.65rem; display: grid; grid-template-columns: 24px 1fr; gap: 0.55rem; align-items: center; border-radius: 10px; background: #123c50; color: #fff; }
.trade-demo-result > footer svg { width: 22px; height: 22px; color: #76dfbf; }
.trade-demo-result-signals { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.trade-demo-result-signals span { padding: 0.22rem 0.4rem; color: #d8edf4; border-radius: 99px; background: rgba(255, 255, 255, 0.09); font-weight: 800; }

.game-card-interactive { cursor: pointer; transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease; }
.game-card-interactive:hover, .game-card-interactive:focus-visible { border-color: #65cfb3; box-shadow: 0 18px 34px rgba(44, 145, 119, 0.14); transform: translateY(-3px); }
.trade-demo-board small,
.trade-demo-board em,
.trade-demo-board b,
.trade-demo-board span { font-size: 0.75rem; }
.trade-demo-board .trade-demo-services strong,
.trade-demo-board .trade-demo-planning > header strong,
.trade-demo-board .trade-demo-turn strong,
.trade-demo-board .trade-demo-score-list strong,
.trade-demo-board .trade-demo-result-signals span { font-size: 0.75rem; }
.trade-demo-board small,
.trade-demo-board em,
.trade-demo-board b { font-size: 0.75rem !important; }
.trade-demo-board .trade-demo-market > span { font-size: 1.3rem; }
.trade-demo-board .trade-demo-turn > b { font-size: 0.9rem !important; }
.trade-demo-board .trade-demo-roll { font-size: 0.78rem; }

.cycle-running .trade-demo-market { animation: trade-market-focus var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-order { animation: trade-order-focus var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-services > .chosen { animation: trade-service-choice var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-services > .chosen svg { animation: trade-choice-check var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-actions > .chosen { animation: trade-action-choice var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-actions > .chosen svg { animation: trade-action-check var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-roll { animation: trade-roll-focus var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-cursor { animation: trade-cursor-path var(--cycle-duration) cubic-bezier(.2,.78,.24,1) infinite; }
.cycle-running .trade-demo-dice { animation: trade-dice-panel var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-dice > span i { animation: trade-dice-face var(--cycle-duration) steps(1) infinite; animation-delay: calc(var(--i, 0) * 0s); }
.cycle-running .trade-demo-dice > span i:nth-child(1) { --face-start: 52%; }
.cycle-running .trade-demo-dice > span i:nth-child(2) { animation-name: trade-dice-face-2; }
.cycle-running .trade-demo-dice > span i:nth-child(3) { animation-name: trade-dice-face-3; }
.cycle-running .trade-demo-dice > span i:nth-child(4) { animation-name: trade-dice-face-4; }
.cycle-running .trade-demo-dice > span i:nth-child(5) { animation-name: trade-dice-face-5; }
.cycle-running .trade-demo-dice > span i:nth-child(6) { animation-name: trade-dice-face-6; }
.cycle-running .trade-demo-turn { animation: trade-turn-result var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-stages > em { animation: trade-stage-progress var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-stages > svg { animation: trade-stage-ship var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-stage-progress > i b { animation: trade-order-progress var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-race > i b { animation: trade-player-race var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-race > i em { animation: trade-peer-race var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-race > i svg { animation: trade-race-ship var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-resources > span em { animation: trade-resource-delta var(--cycle-duration) ease infinite; animation-delay: calc(var(--i) * 0.08s); }
.cycle-running .trade-demo-result { animation: trade-result-sheet var(--cycle-duration) cubic-bezier(.2,.8,.2,1) infinite; }
.cycle-running .trade-demo-score-list i b { animation: trade-result-bar var(--cycle-duration) ease infinite; animation-delay: calc(var(--i) * 0.08s); }
.cycle-running .trade-demo-track .track-1 { animation: trade-track-1 var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-track .track-2 { animation: trade-track-2 var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-track .track-3 { animation: trade-track-3 var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-track .track-4 { animation: trade-track-4 var(--cycle-duration) ease infinite; }
.cycle-running .trade-demo-track .track-5 { animation: trade-track-5 var(--cycle-duration) ease infinite; }

@keyframes trade-order-focus { 0%, 2% { box-shadow: 0 9px 18px rgba(51,105,123,.08); transform: none; } 7%, 14% { border-color: #52bfd9; box-shadow: 0 0 0 4px rgba(82,191,217,.16), 0 12px 24px rgba(51,105,123,.16); transform: translateY(-2px); } 18%, 100% { box-shadow: 0 9px 18px rgba(51,105,123,.08); transform: none; } }
@keyframes trade-market-focus { 0%, 15% { box-shadow: inset 0 0 0 1px rgba(209,187,89,.18); transform: none; } 19%, 28% { box-shadow: inset 0 0 0 2px #e3bd3f, 0 8px 16px rgba(172,137,36,.16); transform: translateY(-1px); } 32%, 100% { box-shadow: inset 0 0 0 1px rgba(209,187,89,.18); transform: none; } }
@keyframes trade-service-choice { 0%, 29% { color:#466775; border-color:#dce9ec; background:#f5f9fa; transform:none; } 34%, 50% { color:#205e70; border-color:#66c6dc; background:#e7f7fb; box-shadow:0 7px 14px rgba(31,127,159,.14); transform:translateY(-2px); } 54%, 100% { color:#466775; border-color:#dce9ec; background:#f5f9fa; transform:none; } }
@keyframes trade-choice-check { 0%, 34% { opacity:0; transform:scale(.5); } 37%, 50% { opacity:1; transform:scale(1); } 54%, 100% { opacity:0; } }
@keyframes trade-action-choice { 0%, 39% { color:#617e89; border-color:#dce9ec; background:#f7fafb; } 43%, 51% { color:#21715c; border-color:#78d4b7; background:#eaf9f3; } 55%, 100% { color:#617e89; border-color:#dce9ec; background:#f7fafb; } }
@keyframes trade-action-check { 0%, 43% { opacity:0; transform:scale(.5); } 46%, 51% { opacity:1; transform:scale(1); } 55%, 100% { opacity:0; } }
@keyframes trade-roll-focus { 0%, 47% { filter:none; transform:none; } 50%, 54% { filter:brightness(1.1); transform:scale(1.015); box-shadow:0 0 0 4px rgba(45,175,190,.18), 0 10px 20px rgba(34,159,199,.26); } 57%, 100% { filter:none; transform:none; } }
@keyframes trade-cursor-path { 0%, 3% { opacity:0; transform:translate(-280px, 122px) scale(.8); } 7% { opacity:1; transform:translate(-250px, 110px) scale(1); } 11% { opacity:1; transform:translate(-250px, 110px) scale(.78); } 15%, 28% { opacity:0; transform:translate(-250px, 110px); } 32% { opacity:1; transform:translate(0, 0); } 36% { opacity:1; transform:translate(0, 0) scale(.78); } 40% { opacity:1; transform:translate(150px, 105px) scale(1); } 44% { opacity:1; transform:translate(150px, 105px) scale(.78); } 49% { opacity:1; transform:translate(92px, 170px) scale(1); } 52% { opacity:1; transform:translate(92px, 170px) scale(.78); } 56%, 100% { opacity:0; transform:translate(92px, 170px); } }
@keyframes trade-dice-panel { 0%, 52% { opacity:0; transform:translateY(18px) scale(.96); } 56%, 63% { opacity:1; transform:none; } 67%, 100% { opacity:0; transform:translateY(-10px) scale(.98); } }
@keyframes trade-dice-face { 0%, 52% { opacity:0; } 53%, 54% { opacity:1; } 55%, 100% { opacity:0; } }
@keyframes trade-dice-face-2 { 0%, 54% { opacity:0; } 55%, 56% { opacity:1; } 57%, 100% { opacity:0; } }
@keyframes trade-dice-face-3 { 0%, 56% { opacity:0; } 57%, 58% { opacity:1; } 59%, 100% { opacity:0; } }
@keyframes trade-dice-face-4 { 0%, 58% { opacity:0; } 59%, 60% { opacity:1; } 61%, 100% { opacity:0; } }
@keyframes trade-dice-face-5 { 0%, 60% { opacity:0; } 61%, 66% { opacity:1; } 67%, 100% { opacity:0; } }
@keyframes trade-dice-face-6 { 0%, 62% { opacity:0; } 63%, 64% { opacity:1; } 65%, 100% { opacity:0; } }
@keyframes trade-turn-result { 0%, 64% { opacity:0; transform:translateY(18px); } 68%, 76% { opacity:1; transform:none; } 79%, 100% { opacity:0; transform:translateY(-8px); } }
@keyframes trade-stage-progress { 0%, 62% { width:42%; } 72%, 100% { width:61%; } }
@keyframes trade-stage-ship { 0%, 62% { left:47%; transform:rotate(-3deg); } 72%, 100% { left:61%; transform:rotate(3deg); } }
@keyframes trade-order-progress { 0%, 62% { width:62%; } 72%, 100% { width:100%; } }
@keyframes trade-player-race { 0%, 62% { width:42%; } 72%, 100% { width:62%; } }
@keyframes trade-peer-race { 0%, 62% { width:38%; } 72%, 100% { width:55%; } }
@keyframes trade-race-ship { 0%, 62% { left:39%; } 72%, 100% { left:59%; } }
@keyframes trade-resource-delta { 0%, 64% { opacity:0; transform:translateX(-5px); } 68%, 75% { opacity:1; transform:none; } 79%, 100% { opacity:0; transform:translateX(4px); } }
@keyframes trade-result-sheet { 0%, 76% { opacity:0; transform:translateX(112%); } 81%, 96% { opacity:1; transform:none; } 100% { opacity:0; transform:translateX(15px); } }
@keyframes trade-result-bar { 0%, 80% { width:0; } 89%, 97% { width:var(--value); } 100% { width:0; } }
@keyframes trade-track-1 { 0%, 2% { opacity:.58; transform:none; } 5%, 15% { opacity:1; border-color:#62d2b3; background:rgba(98,210,179,.14); transform:translateY(-2px); } 18%, 100% { opacity:.58; transform:none; } }
@keyframes trade-track-2 { 0%, 15% { opacity:.58; transform:none; } 19%, 29% { opacity:1; border-color:#62d2b3; background:rgba(98,210,179,.14); transform:translateY(-2px); } 32%, 100% { opacity:.58; transform:none; } }
@keyframes trade-track-3 { 0%, 29% { opacity:.58; transform:none; } 33%, 50% { opacity:1; border-color:#62d2b3; background:rgba(98,210,179,.14); transform:translateY(-2px); } 53%, 100% { opacity:.58; transform:none; } }
@keyframes trade-track-4 { 0%, 50% { opacity:.58; transform:none; } 54%, 75% { opacity:1; border-color:#62d2b3; background:rgba(98,210,179,.14); transform:translateY(-2px); } 78%, 100% { opacity:.58; transform:none; } }
@keyframes trade-track-5 { 0%, 75% { opacity:.58; transform:none; } 79%, 97% { opacity:1; border-color:#62d2b3; background:rgba(98,210,179,.14); transform:translateY(-2px); } 100% { opacity:.58; transform:none; } }

/* 一单到底：第三视角项目介绍片 */
.trade-promo-film { --promo-progress:0%; --scene-progress:0%; position:relative; min-height:548px; overflow:hidden; color:#f5fbff; border:1px solid rgba(127,226,239,.22); border-radius:18px; background:radial-gradient(circle at 82% 22%,rgba(33,157,184,.33),transparent 34%),radial-gradient(circle at 18% 82%,rgba(255,183,77,.13),transparent 34%),linear-gradient(145deg,#061b29,#0a2e43 52%,#061722); box-shadow:inset 0 1px 0 rgba(255,255,255,.08); isolation:isolate; }
.trade-promo-film:fullscreen { width:100vw; height:100vh; min-height:100vh; border:0; border-radius:0; }
.promo-media-gate { position:absolute; inset:0; z-index:60; padding:clamp(1.2rem,4vw,3rem); display:grid; grid-template-columns:minmax(230px,330px) minmax(250px,360px); grid-template-rows:auto auto auto; place-content:center; align-items:center; gap:.65rem clamp(1.5rem,5vw,4rem); color:#17394a; background:linear-gradient(180deg,rgba(242,252,255,.97),rgba(224,247,250,.98)); backdrop-filter:blur(12px); }
.promo-media-gate[hidden] { display:none !important; }
.promo-loader-port { position:relative; grid-row:1 / 4; width:100%; aspect-ratio:2.35; overflow:hidden; border:3px solid #17394a; border-radius:28px; background:linear-gradient(#a9e7f5 0 58%,#62bfd4 58% 100%); box-shadow:0 12px 0 #17394a,0 24px 42px rgba(25,83,104,.16); }
.promo-loader-port::before { content:""; position:absolute; left:0; right:0; top:57%; height:3px; background:#17394a; }
.promo-loader-port::after { content:""; position:absolute; left:-10%; right:-10%; bottom:10%; height:5px; border-radius:50%; background:repeating-linear-gradient(90deg,rgba(255,255,255,.78) 0 26px,transparent 26px 44px); animation:promo-loader-water 1.4s linear infinite; }
.promo-loader-cloud { position:absolute; width:44px; height:18px; border:2px solid #17394a; border-radius:999px; background:#fff; }
.promo-loader-cloud::before,.promo-loader-cloud::after { content:""; position:absolute; bottom:7px; border:2px solid #17394a; border-bottom:0; border-radius:50% 50% 0 0; background:#fff; }
.promo-loader-cloud::before { left:7px; width:15px; height:13px; }.promo-loader-cloud::after { right:7px; width:20px; height:18px; }
.promo-loader-cloud.cloud-one { left:9%; top:17%; }.promo-loader-cloud.cloud-two { right:8%; top:11%; transform:scale(.72); opacity:.82; }
.promo-loader-crane { position:absolute; left:19%; bottom:41%; width:5px; height:52px; background:#ffb544; box-shadow:inset 0 0 0 2px #17394a; }
.promo-loader-crane::before { content:""; position:absolute; left:0; top:0; width:72px; height:5px; border:2px solid #17394a; border-left:0; background:#ffb544; }
.promo-loader-crane::after { content:""; position:absolute; left:58px; top:5px; width:2px; height:28px; background:#17394a; animation:promo-loader-hook 1.45s ease-in-out infinite alternate; }
.promo-loader-crane i { position:absolute; left:53px; top:31px; width:12px; height:9px; border:2px solid #17394a; border-top:0; border-radius:0 0 8px 8px; }
.promo-loader-cargo { position:absolute; left:47%; bottom:42%; display:flex; align-items:flex-end; }
.promo-loader-cargo i { width:27px; height:23px; border:2px solid #17394a; background:#ff765f; box-shadow:inset 5px 0 rgba(255,255,255,.18); transform-origin:center bottom; animation:promo-loader-box 1.25s ease-in-out infinite alternate; }
.promo-loader-cargo i:nth-child(2) { height:31px; margin-left:-2px; background:#ffce55; animation-delay:.15s; }.promo-loader-cargo i:nth-child(3) { margin-left:-2px; background:#56ccb0; animation-delay:.3s; }
.promo-loader-ship { position:absolute; left:8%; bottom:9%; width:70px; height:44px; display:grid; place-items:center; color:#fff; border:3px solid #17394a; border-radius:12px 12px 26px 26px; background:#ff765f; box-shadow:inset 0 -9px #e65344; animation:promo-loader-sail 2.4s ease-in-out infinite; }
.promo-loader-ship svg { width:27px; height:27px; stroke-width:2.4; }.promo-loader-port > b { position:absolute; left:12%; right:12%; bottom:2%; height:3px; border-radius:50%; background:rgba(23,57,74,.32); }
.promo-loader-copy { display:grid; gap:.24rem; align-self:end; }
.promo-loader-copy small { color:#278eaa; font-size:.72rem; font-weight:950; letter-spacing:.1em; }.promo-loader-copy strong { color:#17394a; font-size:clamp(1.55rem,2.8vw,2.35rem); line-height:1.05; }.promo-loader-copy span { color:#567985; font-size:.84rem; font-weight:800; }
.promo-load-track { --promo-load:0%; position:relative; align-self:center; height:12px; overflow:hidden; border:2px solid #17394a; border-radius:999px; background:#fff; box-shadow:0 4px 0 rgba(23,57,74,.13); }
.promo-load-track i { display:block; width:var(--promo-load); height:100%; border-radius:inherit; background:#55cdb1; transition:width .15s ease; }
.promo-load-track.is-indeterminate i { width:38%; animation:promo-loader-indeterminate 1.15s ease-in-out infinite; }
.promo-load-percent { justify-self:end; align-self:start; color:#17394a; font-size:.82rem; font-variant-numeric:tabular-nums; }
.promo-load-retry { justify-self:start; min-height:42px; padding:.56rem .9rem; display:inline-flex; align-items:center; gap:.4rem; color:#fff; border:2px solid #17394a; border-radius:12px; background:#ff765f; box-shadow:0 5px 0 #17394a; font-size:.78rem; font-weight:950; }.promo-load-retry[hidden] { display:none; }.promo-load-retry svg { width:17px; height:17px; }
.promo-media-gate.is-error .promo-load-track i { background:#ff765f; }.promo-media-gate.is-blocked .promo-load-track i { width:100%; background:#55cdb1; }
.guide-screen.is-paused .promo-media-gate,.guide-screen.is-paused .promo-media-gate *,.guide-screen.is-paused .promo-media-gate *::before,.guide-screen.is-paused .promo-media-gate *::after { animation-play-state:running !important; }
@keyframes promo-loader-water { to { transform:translateX(44px); } }
@keyframes promo-loader-hook { to { height:38px; } }
@keyframes promo-loader-box { to { transform:translateY(-4px) rotate(2deg); } }
@keyframes promo-loader-sail { 0%,100% { transform:translateX(0) rotate(-1deg); } 50% { transform:translateX(128px) rotate(1deg); } }
@keyframes promo-loader-indeterminate { 0% { transform:translateX(-115%); } 100% { transform:translateX(300%); } }
.promo-film-grid,.promo-film-grain { position:absolute; inset:0; pointer-events:none; }
.promo-film-grid { opacity:.18; background-image:linear-gradient(rgba(112,213,230,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(112,213,230,.12) 1px,transparent 1px); background-size:42px 42px; mask-image:linear-gradient(to bottom,transparent,#000 20%,#000 70%,transparent); }
.promo-film-grain { z-index:8; opacity:.12; background-image:radial-gradient(circle at 20% 30%,#fff 0 1px,transparent 1px),radial-gradient(circle at 70% 60%,#fff 0 1px,transparent 1px); background-size:5px 5px,7px 7px; mix-blend-mode:soft-light; }
.promo-film-header { position:absolute; left:24px; right:24px; top:18px; z-index:12; display:flex; align-items:center; justify-content:space-between; color:#a9cbd5; font-size:.7rem; font-weight:900; letter-spacing:.08em; }
.promo-film-header > span { display:flex; align-items:center; gap:.45rem; }
.promo-film-header > span i { width:7px; height:7px; border-radius:50%; background:#68e3c1; box-shadow:0 0 0 6px rgba(104,227,193,.12); animation:promo-live 1.7s ease-out infinite; }
.promo-film-header > b { color:#fff; font-variant-numeric:tabular-nums; }
.promo-chapter-rail { position:absolute; left:50%; top:-7px; display:flex; align-items:center; gap:.25rem; padding:.24rem .3rem; border:1px solid rgba(150,224,235,.16); border-radius:999px; background:rgba(2,23,34,.56); transform:translateX(-50%); backdrop-filter:blur(8px); }
.promo-chapter-rail button { position:relative; min-width:52px; padding:.3rem .48rem; display:flex; align-items:center; justify-content:center; gap:.32rem; color:#739aa8; border:0; border-radius:999px; background:transparent; font:inherit; font-size:.61rem; font-weight:900; letter-spacing:.04em; cursor:pointer; transition:color .2s ease,background .2s ease,transform .2s ease; }
.promo-chapter-rail button:hover { color:#d9f6f7; transform:translateY(-1px); }
.promo-chapter-rail button > i { width:6px; height:6px; border-radius:50%; background:#527887; box-shadow:0 0 0 3px rgba(82,120,135,.12); transition:background .2s ease,box-shadow .2s ease; }
.promo-chapter-rail button.is-current { color:#062633; background:linear-gradient(135deg,#74e2d0,#7bdcf0); }
.promo-chapter-rail button.is-current > i { background:#fff; box-shadow:0 0 0 4px rgba(255,255,255,.2); }
.trade-promo-scenes { position:absolute; inset:0; z-index:2; }
.trade-promo-scene { position:absolute; inset:0; opacity:0; visibility:hidden; transform:scale(1.025); transition:opacity .28s ease,transform .5s cubic-bezier(.2,.75,.2,1),visibility 0s .5s; }
.trade-promo-scene.is-current { opacity:1; visibility:visible; transform:none; transition-delay:0s; }
.promo-scene-copy { position:absolute; left:5%; top:21%; z-index:4; width:40%; text-wrap:balance; }
.promo-scene-copy small { display:inline-flex; padding:.32rem .55rem; color:#062534; border-radius:999px; background:#74e2d0; font-size:.62rem; font-weight:950; letter-spacing:.14em; }
.promo-scene-copy h4 { margin:.75rem 0 .55rem; color:#fff; font-size:clamp(1.9rem,3.3vw,3.45rem); line-height:1.02; letter-spacing:-.045em; text-shadow:0 12px 28px rgba(0,0,0,.28); }
.promo-scene-copy p { margin:0; color:#c6e1e8; font-size:clamp(.9rem,1.55vw,1.2rem); font-weight:750; line-height:1.45; }
.is-current .promo-scene-copy small { animation:promo-tag-in .38s .05s both; }
.is-current .promo-scene-copy h4 { animation:promo-headline-in .5s .12s both; }
.is-current .promo-scene-copy p { animation:promo-copy-in .45s .22s both; }
.promo-scene-visual { position:absolute; inset:68px 3.5% 90px 45%; min-width:0; display:grid; place-items:center; }
.is-current .promo-scene-visual { animation:promo-visual-in .55s .08s cubic-bezier(.18,.78,.24,1) both; }
.trade-promo-caption { position:absolute; left:4%; right:4%; bottom:26px; z-index:12; min-height:54px; padding:0 .35rem 11px; display:grid; grid-template-columns:52px 1fr; gap:.85rem; align-items:center; border-bottom:1px solid rgba(255,255,255,.16); }
.trade-promo-caption > small { color:#78ddeb; font-size:.75rem; font-weight:900; font-variant-numeric:tabular-nums; }
.trade-promo-caption > div { min-width:0; display:grid; grid-template-columns:auto 1fr; gap:.65rem; align-items:center; }
.trade-promo-caption strong { color:#fff; font-size:1rem; white-space:nowrap; }
.trade-promo-caption span { overflow:hidden; color:#b4d2db; font-size:.8rem; white-space:nowrap; text-overflow:ellipsis; }
.trade-promo-progress { position:absolute; left:4%; right:4%; bottom:18px; z-index:13; height:4px; border-radius:99px; background:rgba(255,255,255,.12); }
.trade-promo-progress i { display:block; width:var(--promo-progress); height:100%; border-radius:inherit; background:linear-gradient(90deg,#5bd6ec,#65e1be 65%,#ffd267); box-shadow:0 0 14px rgba(91,214,236,.5); transition:width .08s linear; }
.trade-promo-progress b { position:absolute; left:var(--promo-progress); top:50%; width:8px; height:8px; border:2px solid #fff; border-radius:50%; background:#62d8d5; transform:translate(-50%,-50%); }
.scene-2 .promo-scene-copy,.scene-12 .promo-scene-copy { display:none; }
.scene-2 .promo-scene-visual,.scene-12 .promo-scene-visual { inset:58px 4% 82px; }

.promo-world-map { position:relative; width:100%; aspect-ratio:2.1; }
.promo-world-map svg { width:100%; height:100%; overflow:visible; }
.map-land { fill:#1a5367; stroke:#4b8292; stroke-width:1.4; }
.promo-route-line { fill:none; stroke:#ffd064; stroke-width:4; stroke-linecap:round; stroke-dasharray:9 10; filter:drop-shadow(0 0 7px rgba(255,208,100,.55)); }
.route-pulse { fill:#fff; stroke:#5ee1d1; stroke-width:5; animation:promo-route-pulse 1.3s ease-out infinite; }
.map-label { position:absolute; padding:.28rem .48rem; color:#fff; border:1px solid rgba(255,255,255,.18); border-radius:7px; background:rgba(3,28,41,.72); font-size:.62rem; font-weight:850; }
.map-start { left:52%; top:34%; }.map-finish { right:1%; top:54%; }
.promo-ship { position:absolute; left:53%; top:42%; display:flex; align-items:center; gap:.25rem; color:#082534; filter:drop-shadow(0 8px 12px rgba(0,0,0,.28)); animation:promo-ship-cross 4.35s .35s cubic-bezier(.22,.63,.3,1) both; }
.promo-ship svg { width:30px; height:30px; padding:6px; color:#063044; border-radius:10px; background:#ffd064; }
.promo-ship b { padding:.2rem .32rem; border-radius:5px; background:#fff; font-size:.54rem; }

.promo-title-slam { width:100%; min-height:330px; display:grid; place-items:center; align-content:center; text-align:center; }
.promo-title-slam > span { color:#6fe2e0; font-size:.72rem; font-weight:950; letter-spacing:.28em; animation:promo-title-kicker .55s .05s both; }
.promo-title-slam > strong { margin:.35rem 0; color:#fff; font-size:clamp(3.5rem,8vw,6.4rem); line-height:.9; letter-spacing:-.08em; text-shadow:0 12px 40px rgba(0,0,0,.4),0 0 30px rgba(83,214,229,.2); animation:promo-title-slam .58s .12s cubic-bezier(.16,.88,.24,1.22) both; }
.promo-title-slam > div { display:flex; align-items:center; gap:.7rem; color:#c5dce3; font-size:1rem; font-weight:850; }
.promo-title-slam > div i { width:36px; height:3px; background:#ffcf66; transform:skewX(-30deg); }
.promo-title-slam > div em { color:#ffd66c; font-style:normal; }
.promo-title-slam > small { margin-top:1rem; padding:.42rem .78rem; color:#082a3b; border-radius:999px; background:#6ee0cc; font-size:.8rem; font-weight:950; }

.promo-versus { width:100%; display:grid; grid-template-columns:1fr auto 1fr; gap:1rem; align-items:center; }
.promo-versus section { min-height:205px; display:grid; place-items:center; align-content:center; border:1px solid rgba(255,255,255,.16); border-radius:24px; background:linear-gradient(155deg,rgba(64,191,220,.19),rgba(255,255,255,.05)); box-shadow:inset 0 1px rgba(255,255,255,.1); }
.promo-versus section > span { width:74px; height:74px; display:grid; place-items:center; color:#052c3e; border-radius:24px; background:#65d8ea; font-size:1.7rem; font-weight:950; box-shadow:0 14px 28px rgba(0,0,0,.2); }
.promo-versus section > span svg { width:38px; height:38px; }
.promo-versus section.ai > span { background:#ffd064; }
.promo-versus section > b { margin-top:.75rem; color:#fff; font-size:1rem; }.promo-versus section > small { color:#9dc3ce; font-size:.66rem; }
.promo-versus > i { display:grid; place-items:center; gap:.35rem; font-style:normal; }.promo-versus > i strong { color:#fff; font-size:2.4rem; font-style:italic; text-shadow:0 0 22px rgba(255,208,100,.5); }.promo-versus > i span { padding:.2rem .4rem; color:#082b3c; border-radius:5px; background:#65e1be; font-size:.55rem; font-weight:950; }
.promo-versus footer { grid-column:1/-1; display:flex; justify-content:center; gap:.5rem; }.promo-versus footer b { padding:.32rem .5rem; color:#d8eef3; border:1px solid rgba(255,255,255,.14); border-radius:7px; font-size:.62rem; }

.promo-order-deck { width:100%; display:grid; grid-template-columns:repeat(3,1fr); gap:.75rem; perspective:800px; }
.promo-order-deck article { position:relative; min-height:215px; padding:1rem .8rem; display:flex; flex-direction:column; justify-content:flex-end; border:1px solid rgba(255,255,255,.16); border-radius:18px; background:linear-gradient(165deg,#174c61,#0b2a3b); box-shadow:0 18px 30px rgba(0,0,0,.22); transform:rotateY(7deg) translateY(14px); }
.promo-order-deck article:nth-child(3){transform:rotateY(-7deg) translateY(14px)}.promo-order-deck article.chosen { border-color:#72e4c5; background:linear-gradient(165deg,#1c6a6a,#103c4a); transform:translateY(-8px); }
.promo-order-deck article > span { color:#91bcc7; font-size:.62rem; }.promo-order-deck article > strong { margin:.35rem 0; color:#fff; font-size:1rem; }.promo-order-deck article > small { color:#c5dbe1; font-size:.58rem; }.promo-order-deck article > b { position:absolute; right:.7rem; top:.7rem; width:28px; height:28px; display:grid; place-items:center; color:#063042; border-radius:50%; background:#6fe0bd; }.promo-order-deck article > b svg { width:16px; }
.promo-order-deck footer { grid-column:1/-1; display:flex; justify-content:center; gap:.38rem; }.promo-order-deck footer i { padding:.3rem .48rem; color:#072c3d; border-radius:6px; background:#ffd36c; font-size:.58rem; font-style:normal; font-weight:900; }

.promo-five-route { position:relative; width:100%; display:flex; align-items:center; justify-content:space-between; gap:.45rem; }
.promo-five-route > .route-beam { position:absolute; left:7%; right:7%; top:51px; height:4px; border-radius:99px; background:rgba(255,255,255,.1); overflow:hidden; }.promo-five-route > .route-beam::after { content:""; display:block; width:var(--scene-progress); height:100%; background:linear-gradient(90deg,#5ed8eb,#ffd16a); box-shadow:0 0 12px #55cbd8; }
.promo-five-route > span { position:relative; z-index:2; width:74px; display:grid; justify-items:center; gap:.38rem; color:#9ebdc6; }.promo-five-route > span svg { width:54px; height:54px; padding:14px; color:#0c4053; border:4px solid #163d4e; border-radius:18px; background:#70dceb; box-shadow:0 0 0 1px rgba(255,255,255,.1); }.promo-five-route > span b { color:#fff; font-size:.7rem; }.promo-five-route > span em { position:absolute; right:2px; top:-4px; width:21px; height:21px; display:grid; place-items:center; color:#062b3a; border-radius:50%; background:#ffd16a; font-size:.54rem; font-style:normal; font-weight:950; }
.promo-five-route footer { position:absolute; left:50%; top:120px; display:flex; align-items:center; gap:.5rem; transform:translateX(-50%); }.promo-five-route footer b { padding:.4rem .65rem; color:#fff; border:1px solid rgba(255,255,255,.16); border-radius:8px; background:rgba(255,255,255,.06); font-size:.64rem; }.promo-five-route footer i { color:#ffd16a; font-size:1.25rem; font-style:normal; }

.promo-tradeoff { width:100%; display:grid; grid-template-columns:1.5fr .8fr; gap:1.2rem; align-items:center; }
.promo-tradeoff section { display:grid; gap:.75rem; }.promo-tradeoff section > span { display:flex; justify-content:space-between; align-items:baseline; }.promo-tradeoff section b { color:#fff; font-size:.76rem; }.promo-tradeoff section em { color:#ffd16a; font-size:.63rem; font-style:normal; }.promo-tradeoff section > i { height:9px; overflow:hidden; border-radius:99px; background:rgba(255,255,255,.09); }.promo-tradeoff section > i b { display:block; width:var(--value); height:100%; border-radius:inherit; background:linear-gradient(90deg,#5dd7ea,#6ee0bd); animation:promo-meter 1.2s .3s both; }
.promo-balance { position:relative; min-height:210px; display:grid; grid-template-columns:1fr auto 1fr; align-items:end; justify-items:center; }.promo-balance::before { content:""; position:absolute; left:12%; right:12%; top:74px; height:7px; border-radius:99px; background:#ffd16a; transform:rotate(-5deg); animation:promo-balance 2s ease-in-out infinite alternate; }.promo-balance > i { position:absolute; left:50%; top:70px; width:8px; height:100px; background:#8bc3cf; transform:translateX(-50%); clip-path:polygon(0 0,100% 0,70% 100%,30% 100%); }.promo-balance span { width:68px; height:54px; display:grid; place-items:center; color:#082d3e; border-radius:13px; background:#f8fbfc; font-size:.62rem; font-weight:900; }.promo-balance strong { position:absolute; bottom:0; color:#76e1d0; font-size:.72rem; }

.promo-event-storm { position:relative; width:100%; min-height:280px; }.promo-dice { position:absolute; left:12%; top:66px; width:92px; height:92px; display:grid; place-items:center; border-radius:24px; background:linear-gradient(145deg,#fff,#bbdce4); box-shadow:18px 20px 35px rgba(0,0,0,.26); transform:rotate(-12deg); animation:promo-dice-roll 1.15s .1s cubic-bezier(.17,.84,.28,1.2) both; }.promo-dice b { color:#0d465a; font-size:.72rem; letter-spacing:.08em; }.promo-dice i { position:absolute; inset:7px; border:1px solid rgba(15,77,98,.18); border-radius:19px; }
.event-chip { position:absolute; padding:.48rem .7rem; color:#072d3e; border-radius:9px; font-size:.68rem; font-weight:950; box-shadow:0 12px 22px rgba(0,0,0,.2); }.event-chip.freight { right:8%; top:22px; background:#ff8877; transform:rotate(6deg); }.event-chip.congestion { right:0; top:92px; background:#ffd16a; transform:rotate(-4deg); }.event-chip.inspection { right:10%; top:162px; background:#6ee0bd; transform:rotate(4deg); }
.promo-event-storm svg { position:absolute; inset:48px 0 auto 12%; width:78%; height:160px; overflow:visible; }.promo-event-storm svg path { fill:none; stroke:#61d6e6; stroke-width:3; stroke-dasharray:7 9; }.promo-event-storm > strong { position:absolute; left:8%; bottom:0; color:#fff; font-size:1.25rem; line-height:1.15; }.promo-event-storm > strong em { color:#74e2cf; font-style:normal; }

.promo-undo-route { position:relative; width:100%; min-height:280px; }.undo-path { position:absolute; left:6%; right:4%; top:85px; height:8px; border-radius:99px; background:rgba(255,255,255,.1); }.undo-path > i { display:block; width:82%; height:100%; border-radius:inherit; background:linear-gradient(90deg,#5bd8e8,#ff8d7a); }.undo-path > span { position:absolute; top:-38px; padding:.34rem .5rem; border-radius:7px; font-size:.6rem; font-weight:900; }.undo-path .wrong { right:8%; color:#fff; background:#c75558; }.undo-path .right { left:51%; color:#083142; background:#6ee0bd; }.undo-arrow { position:absolute; right:17%; top:62px; color:#ffd16a; font-size:5.5rem; line-height:1; text-shadow:0 0 24px rgba(255,209,106,.35); animation:promo-undo 1.2s .2s both; }.promo-undo-route section { position:absolute; left:8%; bottom:20px; display:grid; grid-template-columns:auto 1fr; gap:0 .6rem; align-items:center; }.promo-undo-route section > span { grid-row:1/3; width:52px; height:52px; display:grid; place-items:center; color:#082f40; border-radius:16px; background:#68ddeb; }.promo-undo-route section svg { width:26px; }.promo-undo-route section b { color:#fff; font-size:.78rem; }.promo-undo-route section small { color:#9cc4ce; font-size:.6rem; }.promo-undo-route > em { position:absolute; right:5%; bottom:24px; padding:.42rem .7rem; color:#082e3e; border-radius:999px; background:#ffd16a; font-size:.7rem; font-style:normal; font-weight:950; }

.promo-ai-logic { position:relative; width:100%; min-height:290px; }.ai-core { position:absolute; left:42%; top:72px; width:112px; height:112px; display:grid; place-items:center; border:1px solid rgba(111,226,211,.5); border-radius:36px; background:radial-gradient(circle,#1f7080,#0c3245); box-shadow:0 0 0 13px rgba(96,223,212,.08),0 18px 30px rgba(0,0,0,.24); }.ai-core span { color:#fff; font-size:2.2rem; font-weight:950; }.ai-core i { position:absolute; inset:-24px; border:1px dashed rgba(112,223,218,.38); border-radius:50%; animation:promo-spin 8s linear infinite; }.promo-ai-logic > section { position:absolute; left:0; top:30px; display:grid; gap:.55rem; }.promo-ai-logic > section span { min-width:115px; padding:.48rem .6rem; display:flex; justify-content:space-between; gap:.6rem; border:1px solid rgba(255,255,255,.14); border-radius:9px; background:rgba(255,255,255,.06); }.promo-ai-logic section b { color:#9ec2cb; font-size:.6rem; }.promo-ai-logic section em { color:#fff; font-size:.62rem; font-style:normal; font-weight:900; }.promo-ai-logic > svg { position:absolute; inset:0; width:100%; height:100%; }.promo-ai-logic > svg path { fill:none; stroke:#55cbdf; stroke-width:2; stroke-dasharray:5 7; }.promo-ai-logic footer { position:absolute; right:0; top:58px; display:grid; gap:.55rem; }.promo-ai-logic footer b { min-width:130px; padding:.5rem .6rem; display:flex; align-items:center; gap:.4rem; color:#072f40; border-radius:9px; background:#6fe0be; font-size:.62rem; }.promo-ai-logic footer svg { width:16px; }

.promo-score-radar { position:relative; width:340px; height:310px; }.promo-score-radar > svg { width:100%; height:100%; filter:drop-shadow(0 12px 22px rgba(0,0,0,.2)); }.radar-grid { fill:rgba(85,187,207,.06); stroke:rgba(136,213,226,.35); stroke-width:2; }.radar-grid.inner { fill:none; stroke-dasharray:4 5; }.radar-value { fill:rgba(101,224,190,.29); stroke:#68e1c1; stroke-width:4; transform-origin:center; animation:promo-radar-grow .85s .15s both; }.promo-score-radar > span { position:absolute; color:#cde4ea; font-size:.65rem; font-weight:900; }.score-profit { left:46%; top:0 }.score-time { right:0; top:34% }.score-compliance { right:12%; bottom:0 }.score-risk { left:10%; bottom:0 }.score-reputation { left:-2%; top:34% }.promo-score-radar > strong { position:absolute; left:50%; top:50%; display:grid; justify-items:center; color:#fff; font-size:2.5rem; transform:translate(-50%,-50%); }.promo-score-radar > strong small { color:#7ce0d1; font-size:.58rem; }

.promo-evidence { width:100%; display:grid; grid-template-columns:1fr auto 1fr auto 1fr auto 1fr; gap:.4rem; align-items:center; }.promo-evidence > span { min-height:145px; padding:.75rem .45rem; display:grid; place-items:center; align-content:center; gap:.35rem; text-align:center; border:1px solid rgba(255,255,255,.15); border-radius:15px; background:linear-gradient(165deg,rgba(79,193,217,.16),rgba(255,255,255,.045)); }.promo-evidence > span svg { width:32px; height:32px; color:#6fdfd2; }.promo-evidence > span b { color:#fff; font-size:.67rem; }.promo-evidence > span i { color:#95bcc7; font-size:.56rem; font-style:normal; }.promo-evidence > em { width:18px; height:2px; background:#ffd16a; }.promo-evidence footer { grid-column:1/-1; padding:.6rem .8rem; display:flex; align-items:center; justify-content:center; gap:.5rem; color:#073044; border-radius:10px; background:#ffd16a; }.promo-evidence footer svg { width:20px; }.promo-evidence footer b { font-size:.68rem; }

.promo-finale { width:100%; min-height:360px; display:grid; grid-template-columns:1fr 1.2fr; align-items:center; }.promo-finale > img { position:absolute; right:1%; bottom:5%; width:min(40%,330px); filter:drop-shadow(0 22px 28px rgba(0,0,0,.3)); animation:promo-finale-mascot .8s .15s cubic-bezier(.16,.84,.24,1.15) both; }.finale-globe { position:absolute; right:5%; width:330px; height:330px; border:1px solid rgba(103,221,224,.3); border-radius:50%; background:radial-gradient(circle at 40% 35%,rgba(82,206,224,.22),transparent 48%); animation:promo-spin 18s linear infinite; }.finale-globe i { position:absolute; inset:18%; border:1px dashed rgba(255,209,106,.4); border-radius:50%; }.finale-globe b { position:absolute; left:3%; top:43%; width:48px; height:48px; display:grid; place-items:center; color:#073043; border-radius:16px; background:#ffd16a; }.finale-globe svg { width:26px; }.promo-finale section { position:relative; z-index:2; max-width:520px; padding-left:3%; display:grid; justify-items:start; }.promo-finale section small { color:#71e1d9; font-size:.7rem; font-weight:950; letter-spacing:.16em; }.promo-finale section strong { margin:.45rem 0 0; color:#fff; font-size:clamp(3.4rem,7vw,6.4rem); line-height:.86; letter-spacing:-.075em; }.promo-finale section > b { color:#ffd16a; font-size:2.15rem; }.promo-finale section div { margin-top:1rem; display:flex; gap:.45rem; }.promo-finale section div span { padding:.38rem .55rem; color:#d6ecf1; border:1px solid rgba(255,255,255,.16); border-radius:7px; background:rgba(255,255,255,.06); font-size:.62rem; font-weight:850; }

/* 规则信息保持课堂投屏可读；装饰性编号可继续作为小徽章。 */
.trade-promo-film .promo-film-header,
.trade-promo-film .promo-chapter-rail button,
.trade-promo-film .promo-scene-copy small,
.trade-promo-film .map-label,
.trade-promo-film .promo-ship b,
.trade-promo-film .promo-title-slam > span,
.trade-promo-film .promo-versus section > small,
.trade-promo-film .promo-versus > i span,
.trade-promo-film .promo-versus footer b,
.trade-promo-film .promo-order-deck article > span,
.trade-promo-film .promo-order-deck article > small,
.trade-promo-film .promo-order-deck footer i,
.trade-promo-film .promo-five-route > span b,
.trade-promo-film .promo-five-route footer b,
.trade-promo-film .promo-tradeoff section em,
.trade-promo-film .promo-balance span,
.trade-promo-film .promo-balance strong,
.trade-promo-film .event-chip,
.trade-promo-film .undo-path > span,
.trade-promo-film .promo-undo-route section small,
.trade-promo-film .promo-undo-route > em,
.trade-promo-film .promo-ai-logic section b,
.trade-promo-film .promo-ai-logic section em,
.trade-promo-film .promo-ai-logic footer b,
.trade-promo-film .promo-score-radar > span,
.trade-promo-film .promo-score-radar > strong small,
.trade-promo-film .promo-evidence > span b,
.trade-promo-film .promo-evidence > span i,
.trade-promo-film .promo-evidence footer b,
.trade-promo-film .promo-finale section small,
.trade-promo-film .promo-finale section div span { font-size:.75rem; }

/* Cinematic third-person stage: one continuous camera language across every cue. */
.cinematic-stage { position:absolute; inset:7% 3% 8%; overflow:hidden; border:1px solid rgba(151,231,239,.3); border-radius:20px; background:#061b29; perspective:900px; isolation:isolate; }
.cinematic-backdrop { position:absolute; inset:-8%; width:116%; height:116%; object-fit:cover; opacity:.72; filter:saturate(.85) contrast(1.08); transform:scale(1.06); animation:cinematic-dolly 11s ease-in-out infinite alternate; }
.cinematic-haze { position:absolute; inset:0; z-index:1; background:linear-gradient(90deg,rgba(3,19,31,.93) 0%,rgba(3,19,31,.42) 43%,rgba(3,19,31,.14) 100%),linear-gradient(0deg,rgba(2,12,21,.82),transparent 42%); }
.cinematic-role { position:absolute; z-index:3; right:8%; bottom:-12%; width:min(47%,360px); max-height:92%; object-fit:contain; object-position:center bottom; filter:drop-shadow(0 26px 28px rgba(0,0,0,.45)); animation:cinematic-entrance 8s cubic-bezier(.2,.7,.2,1) infinite alternate; }
.cinematic-route { position:absolute; z-index:2; left:10%; right:18%; bottom:23%; height:3px; background:linear-gradient(90deg,transparent,#65dcd2 16%,#ffd36c 72%,transparent); box-shadow:0 0 18px rgba(100,220,211,.8); transform:skewY(-7deg); animation:cinematic-route-pan 5s ease-in-out infinite alternate; }
.cinematic-route::after { content:""; position:absolute; top:-4px; left:0; width:11px; height:11px; border-radius:50%; background:#fff4b0; box-shadow:0 0 0 5px rgba(255,211,108,.2),0 0 18px #ffd36c; animation:cinematic-marker 4s linear infinite; }
.cinematic-route b { position:relative; top:-1.5rem; margin-right:18%; color:#d9f7f2; font-size:.62rem; letter-spacing:.08em; }
.cinematic-document { position:absolute; z-index:4; left:7%; bottom:10%; display:grid; gap:.25rem; max-width:48%; transform:rotate(-2deg); animation:cinematic-document 4s ease-in-out infinite alternate; }
.cinematic-document small { color:#76e3d5; font-size:.55rem; letter-spacing:.16em; font-weight:900; }
.cinematic-document strong { color:#fff; font-size:clamp(1.35rem,3vw,2.6rem); line-height:1; text-shadow:0 5px 18px rgba(0,0,0,.5); }
.cinematic-document span { color:#d0e8ec; font-size:.67rem; }
.cinematic-scan { position:absolute; z-index:5; inset:0 auto 0 -15%; width:2px; background:linear-gradient(transparent,#75e8dc,transparent); box-shadow:0 0 20px #75e8dc; opacity:.45; animation:cinematic-scan 7s linear infinite; }
@keyframes cinematic-dolly { to { transform:scale(1.18) translate3d(-2%,1%,0); } }
@keyframes cinematic-entrance { from { opacity:.2; transform:translate3d(13%,7%,0) scale(.88); } to { opacity:1; transform:translate3d(-3%,-1%,0) scale(1.04); } }
@keyframes cinematic-route-pan { to { transform:skewY(7deg) translateX(5%); } }
@keyframes cinematic-marker { to { left:94%; } }
@keyframes cinematic-document { to { transform:translateY(-9px) rotate(2deg); } }
@keyframes cinematic-scan { to { left:115%; } }
@media (max-width:900px) { .cinematic-stage { inset:6% 2% 10%; } .cinematic-role { right:-4%; width:55%; } .cinematic-document { max-width:62%; } .cinematic-route b { margin-right:8%; } }
@media (prefers-reduced-motion:reduce) { .cinematic-backdrop,.cinematic-role,.cinematic-route,.cinematic-document,.cinematic-scan,.cinematic-route::after { animation:none; } }

.guide-audio-toggle,.guide-fullscreen { min-height:36px; padding:.45rem .72rem; display:inline-flex; align-items:center; justify-content:center; gap:.35rem; color:#526f7c; border:1px solid #d4e2e7; border-radius:10px; background:#f7fafb; font-size:.64rem; font-weight:800; transition:160ms ease; }.guide-audio-toggle:hover,.guide-fullscreen:hover { color:#176f96; border-color:#afd7e6; background:#eef9fc; }.guide-audio-toggle svg,.guide-fullscreen svg { width:15px; height:15px; }

@keyframes promo-live { 70%,100%{box-shadow:0 0 0 11px transparent} }
@keyframes promo-tag-in { from{opacity:0;transform:translateX(-18px) skewX(-9deg)}to{opacity:1;transform:none} }
@keyframes promo-headline-in { from{opacity:0;transform:translateY(22px) scale(.94);filter:blur(4px)}to{opacity:1;transform:none;filter:none} }
@keyframes promo-copy-in { from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none} }
@keyframes promo-visual-in { from{opacity:0;transform:translateX(28px) scale(.96);filter:blur(4px)}to{opacity:1;transform:none;filter:none} }
@keyframes promo-route-pulse { 70%,100%{r:17;opacity:0} }
@keyframes promo-ship-cross { from{left:52%;top:40%;transform:rotate(-8deg) scale(.82)}to{left:82%;top:53%;transform:rotate(8deg) scale(1)} }
@keyframes promo-title-kicker { from{opacity:0;letter-spacing:.7em}to{opacity:1;letter-spacing:.28em} }
@keyframes promo-title-slam { from{opacity:0;transform:scale(1.65);filter:blur(7px)}to{opacity:1;transform:none;filter:none} }
@keyframes promo-meter { from{width:0}to{width:var(--value)} }
@keyframes promo-balance { to{transform:rotate(5deg)} }
@keyframes promo-dice-roll { from{opacity:0;transform:translate(-90px,-60px) rotate(-380deg) scale(.55)}to{opacity:1;transform:rotate(-12deg) scale(1)} }
@keyframes promo-undo { from{opacity:0;transform:rotate(90deg) scale(.45)}to{opacity:1;transform:none} }
@keyframes promo-spin { to{transform:rotate(360deg)} }
@keyframes promo-radar-grow { from{opacity:0;transform:scale(.1)}to{opacity:1;transform:none} }
@keyframes promo-finale-mascot { from{opacity:0;transform:translateY(70px) scale(.8)}to{opacity:1;transform:none} }
@media (max-width:900px){.promo-chapter-rail button{min-width:30px;padding:.32rem}.promo-chapter-rail button b{display:none}.promo-scene-copy{width:46%}.promo-scene-visual{left:49%}.trade-promo-caption span{display:none}.trade-promo-caption>div{grid-template-columns:1fr}.promo-evidence>span i{display:none}.promo-order-deck article{padding:.7rem .55rem}.promo-five-route>span{width:58px}.promo-five-route>span svg{width:46px;height:46px;padding:11px}.promo-finale>img{width:38%}}
@media (max-width:900px){.promo-media-gate{grid-template-columns:minmax(220px,310px);grid-template-rows:auto auto auto auto;gap:.55rem;padding:1rem}.promo-loader-port{grid-row:auto;aspect-ratio:2.8}.promo-loader-copy{text-align:center;justify-items:center}.promo-load-percent{justify-self:center}.promo-load-retry{justify-self:center}.promo-loader-crane{height:38px}.promo-loader-sail{animation-name:promo-loader-sail-small}@keyframes promo-loader-sail-small{0%,100%{transform:translateX(0)}50%{transform:translateX(88px)}}}
@media (prefers-reduced-motion:reduce){.trade-promo-film *,.trade-promo-film *::before,.trade-promo-film *::after{animation:none!important;transition:none!important}.trade-promo-scene.is-current{opacity:1;visibility:visible;transform:none}}

.toast { position: fixed; right: 1rem; bottom: 1rem; z-index: 100; padding: 0.72rem 0.95rem; color: #fff; border-radius: 11px; background: var(--navy-900); box-shadow: var(--shadow); opacity: 0; transform: translateY(8px); pointer-events: none; transition: 180ms ease; font-size: 0.75rem; }
.toast.show { opacity: 1; transform: none; }
.toast.error { background: #b95049; }
.toast.success { background: #267b62; }

:where(a, button, input, select, textarea, [tabindex]):focus-visible { outline: 3px solid rgba(82, 184, 234, 0.5); outline-offset: 2px; }
.route-view:focus { outline: 0; }

/* Classroom launch console */
.nav-item-quiet { color: #91afbc; font-size: 0.76rem; }
.launch-console {
  position: relative;
  min-height: 320px;
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(390px, .75fr);
  overflow: hidden;
  color: #f5fbff;
  border-radius: 24px;
  background:
    radial-gradient(circle at 12% 120%, rgba(105, 226, 201, .28), transparent 35%),
    radial-gradient(circle at 83% -10%, rgba(255, 210, 106, .24), transparent 31%),
    linear-gradient(135deg, #0b2c42, #123d55 58%, #0b263a);
  box-shadow: 0 22px 48px rgba(11, 38, 58, .18);
}
.launch-console::before { content: ""; position: absolute; left: 5%; right: 44%; bottom: 37px; height: 2px; background: repeating-linear-gradient(90deg, rgba(111, 224, 211, .72) 0 34px, transparent 34px 52px); transform: rotate(-3deg); opacity: .45; }
.launch-console-copy { position: relative; min-width: 0; padding: 2rem 2.1rem; display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto 1fr auto; gap: 1.1rem 1rem; align-items: center; }
.launch-index { grid-column: 1 / -1; width: max-content; padding: .34rem .62rem; color: #082b3c; border-radius: 999px; background: #72dfc8; font-size: .68rem; font-weight: 950; letter-spacing: .08em; }
.launch-icon { width: 86px; height: 86px; display: grid; place-items: center; color: #0b3043; border-radius: 28px; background: linear-gradient(145deg, #ffd76d, #ffb95f); box-shadow: 0 18px 30px rgba(0, 0, 0, .2); transform: rotate(-4deg); }
.launch-icon svg { width: 46px; height: 46px; stroke-width: 2.1; }
.launch-console-copy h2 { margin: 0; color: #fff; font-size: clamp(2.5rem, 4vw, 4.2rem); line-height: .92; letter-spacing: -.06em; }
.launch-console-copy > div > strong { display: block; margin-top: .4rem; color: #82e3e2; font-size: 1.15rem; letter-spacing: .04em; }
.launch-facts { grid-column: 1 / -1; display: flex; gap: .55rem; }
.launch-facts span { min-width: 92px; padding: .55rem .72rem; color: #b9d6df; border: 1px solid rgba(255, 255, 255, .13); border-radius: 11px; background: rgba(255, 255, 255, .055); font-size: .7rem; font-weight: 800; }
.launch-facts b { margin-right: .25rem; color: #fff; font-size: 1.1rem; }
.launch-console-actions { position: relative; z-index: 2; margin: 1.2rem; padding: 1.25rem; display: flex; flex-direction: column; gap: .85rem; justify-content: center; border: 1px solid rgba(255, 255, 255, .14); border-radius: 20px; background: rgba(245, 252, 254, .96); box-shadow: 0 18px 35px rgba(0, 0, 0, .15); }
.launch-class-picker { color: #5d7985; }
.launch-class-picker select { min-height: 48px; color: #173b50; background: #fff; font-weight: 850; }
.launch-mode-picker { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.launch-mode-picker button { min-height: 68px; padding: .6rem .7rem; display: flex; align-items: center; justify-content: center; gap: .5rem; color: #577581; border: 1px solid #dce9ed; border-radius: 13px; background: #f7fafb; font-size: .72rem; font-weight: 900; }
.launch-mode-picker button svg { width: 18px; height: 18px; }
.launch-mode-picker button > span { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: .15rem; text-align: left; }
.launch-mode-picker button strong { color: inherit; font-size: .76rem; }
.launch-mode-picker button small { color: #78909a; font-size: .57rem; font-weight: 750; line-height: 1.25; }
.launch-mode-picker button.active small { color: #407768; }
.launch-mode-picker button.active { color: #1e705d; border-color: #79d4b8; background: #e8f9f3; box-shadow: inset 0 0 0 2px rgba(93, 205, 172, .11); }
.launch-button { min-height: 76px; padding: .85rem 1rem; display: flex; align-items: center; justify-content: space-between; color: #0b3448; border-radius: 16px; background: linear-gradient(135deg, #70dfc7, #65cfee 76%); box-shadow: 0 13px 24px rgba(56, 170, 186, .26); transition: transform .18s ease, box-shadow .18s ease; }
.launch-button:hover { transform: translateY(-2px); box-shadow: 0 17px 28px rgba(56, 170, 186, .34); }
.launch-button span { display: grid; gap: .18rem; text-align: left; }
.launch-button small { color: #e9f8fc; font-size: .62rem; font-weight: 800; }
.launch-button strong { font-size: 1rem; }
.launch-button > svg { width: 30px; height: 30px; padding: 6px; border-radius: 50%; background: rgba(255, 255, 255, .55); }
.experiment-shelf { margin-top: 1rem; }
.game-catalog-stack { display: grid; gap: .8rem; }
.active-game-grid { grid-template-columns: 1fr; }
.active-game-grid .game-card { min-height: 205px; }
.future-projects { border: 1px solid var(--line); border-radius: 14px; background: #f8fbfc; overflow: hidden; }
.future-projects > summary { min-height: 64px; padding: .75rem .9rem; display: flex; align-items: center; justify-content: space-between; color: #557480; cursor: pointer; list-style: none; }
.future-projects > summary::-webkit-details-marker { display: none; }
.future-projects > summary span { display: grid; gap: .14rem; }.future-projects > summary small { color: #7e969f; font-size: .62rem; font-weight: 800; }.future-projects > summary strong { font-size: .78rem; }
.future-projects > summary > svg { width: 18px; height: 18px; transition: transform .2s ease; }.future-projects[open] > summary > svg { transform: rotate(90deg); }
.future-game-grid { padding: 0 .8rem .8rem; }
.game-card-actions { display: flex; align-items: center; gap: .4rem; }
.game-launch-button { min-height: 34px; padding: .45rem .68rem; color: #1f705b; border: 1px solid #9bddc9; border-radius: 10px; background: #e7f8f2; font-size: .64rem; font-weight: 900; }

/* Full-screen intelligent classroom */
.classroom-stage { position: fixed; inset: 0; z-index: 1000; height: 100dvh; display: grid; grid-template-rows: 72px minmax(0, 1fr) 58px; color: #eefbff; background: radial-gradient(circle at 88% 12%, rgba(37, 141, 166, .24), transparent 31%), linear-gradient(145deg, #061722, #09283a 58%, #05151f); overflow: hidden; }
.classroom-stage:fullscreen { width: 100vw; height: 100vh; }
.classroom-topbar, .classroom-footer { position: relative; z-index: 20; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0 1.35rem; background: rgba(4, 20, 30, .88); backdrop-filter: blur(14px); }
.classroom-topbar { border-bottom: 1px solid rgba(164, 226, 236, .13); }
.classroom-brand { display: flex; align-items: center; gap: .7rem; }
.classroom-brand > span { width: 42px; height: 42px; display: grid; place-items: center; color: #082c3e; border-radius: 13px; background: #ffd167; }
.classroom-brand svg { width: 24px; height: 24px; }
.classroom-brand small, .classroom-brand strong { display: block; }
.classroom-brand small { color: #7fa7b5; font-size: .64rem; }
.classroom-brand strong { margin-top: .1rem; color: #fff; font-size: .83rem; }
.classroom-steps { display: flex; align-items: center; gap: .35rem; }
.classroom-steps i { position: relative; min-width: 72px; padding: .42rem .55rem; color: #648a98; border: 1px solid rgba(255, 255, 255, .08); border-radius: 999px; text-align: center; font-size: .65rem; font-style: normal; font-weight: 900; }
.classroom-steps i.done { color: #78d8c2; }
.classroom-steps i.active { color: #062b3b; border-color: transparent; background: #70dfc8; }
.classroom-tools { display: flex; gap: .4rem; }
.classroom-tools button { width: 38px; height: 38px; display: grid; place-items: center; color: #b7d4dd; border: 1px solid rgba(255, 255, 255, .12); border-radius: 11px; background: rgba(255, 255, 255, .055); }
.classroom-tools button span { display: none; }
.classroom-tools svg { width: 19px; height: 19px; }
.classroom-canvas { min-height: 0; position: relative; overflow: hidden; }
.classroom-phase { position: absolute; inset: 0; }
.classroom-intro { padding: 1rem 1.15rem; }
.classroom-film, .classroom-guide-screen { height: 100%; min-height: 0 !important; }
.classroom-guide-screen { padding: .65rem; }
.classroom-guide-screen > .trade-promo-film { min-height: 0; flex: 1; border-radius: 14px; }
.classroom-skip { position: absolute; right: 2.1rem; bottom: 2rem; z-index: 30; min-height: 42px; padding: .6rem .85rem; display: flex; align-items: center; gap: .4rem; color: #d7edf2; border: 1px solid rgba(255, 255, 255, .18); border-radius: 11px; background: rgba(5, 30, 42, .76); font-size: .7rem; font-weight: 900; backdrop-filter: blur(8px); }
.classroom-skip svg { width: 15px; height: 15px; }
.classroom-ready { display: grid; grid-template-columns: minmax(260px, .65fr) minmax(420px, 1fr); align-items: center; gap: clamp(2rem, 7vw, 7rem); padding: clamp(2rem, 6vw, 5rem) 8vw; background: radial-gradient(circle at 25% 50%, rgba(101, 221, 202, .18), transparent 28%); }
.ready-orbit { position: relative; width: min(32vw, 360px); aspect-ratio: 1; display: grid; place-items: center; align-content: center; border: 1px solid rgba(112, 223, 200, .34); border-radius: 50%; background: radial-gradient(circle, rgba(76, 196, 184, .2), transparent 63%); box-shadow: 0 0 0 28px rgba(101, 218, 205, .035), 0 0 0 58px rgba(101, 218, 205, .02); }
.ready-orbit i { position: absolute; inset: 11%; border: 1px dashed rgba(255, 210, 103, .5); border-radius: 50%; animation: classroom-orbit 15s linear infinite; }
.ready-orbit span { color: #fff; font-size: clamp(5rem, 10vw, 9rem); font-weight: 950; line-height: .9; text-shadow: 0 15px 35px rgba(0, 0, 0, .28); }
.ready-orbit small { margin-top: .6rem; color: #85b6c3; font-size: 1rem; font-weight: 900; }
.ready-board { display: grid; justify-items: start; }
.ready-status { display: inline-flex; align-items: center; gap: .45rem; padding: .36rem .62rem; color: #78e0c9; border: 1px solid rgba(117, 224, 199, .25); border-radius: 999px; font-size: .72rem; font-weight: 900; }
.ready-status i { width: 8px; height: 8px; border-radius: 50%; background: #6fe0c4; box-shadow: 0 0 0 7px rgba(111, 224, 196, .1); }
.ready-board h2 { margin: 1rem 0; color: #fff; font-size: clamp(2.8rem, 6vw, 5.5rem); line-height: .95; letter-spacing: -.06em; }
.ready-metrics { display: flex; gap: .65rem; }
.ready-metrics span { min-width: 110px; padding: .7rem .8rem; color: #9fc0ca; border: 1px solid rgba(255, 255, 255, .11); border-radius: 12px; background: rgba(255, 255, 255, .045); font-size: .7rem; font-weight: 850; }
.ready-metrics b { margin-right: .28rem; color: #fff; font-size: 1.2rem; }
#classroomAnnounceStart { min-width: 240px; min-height: 64px; margin-top: 1.4rem; display: flex; align-items: center; justify-content: center; gap: .65rem; color: #062c3d; border-radius: 17px; background: linear-gradient(135deg, #ffd16a, #70e0c5); box-shadow: 0 18px 30px rgba(68, 191, 177, .25); font-size: 1rem; font-weight: 950; }
#classroomAnnounceStart svg { width: 25px; height: 25px; }
.classroom-live { padding: 1.2rem 2.4rem 1rem; }
.classroom-slides { height: 100%; position: relative; }
.classroom-slide { position: absolute; inset: 0; display: grid; grid-template-rows: auto minmax(0, 1fr); opacity: 0; visibility: hidden; transform: translateY(10px) scale(.99); transition: opacity .22s ease, transform .32s cubic-bezier(.2,.78,.22,1), visibility 0s .32s; }
.classroom-slide.active { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.classroom-slide > header { display: flex; align-items: baseline; gap: .8rem; padding-bottom: .8rem; }
.classroom-slide > header span { color: #6edbc8; font-size: .72rem; font-weight: 950; letter-spacing: .16em; }
.classroom-slide > header h2 { margin: 0; color: #fff; font-size: clamp(1.8rem, 3.2vw, 3rem); letter-spacing: -.04em; }
.classroom-overview { min-height: 0; display: grid; grid-template-columns: minmax(260px, .72fr) minmax(0, 1.3fr); gap: clamp(2rem, 7vw, 7rem); align-items: center; padding: 1rem 6vw 2rem; }
.classroom-ring { width: min(28vw, 340px); aspect-ratio: 1; display: grid; place-items: center; align-content: center; border-radius: 50%; background: radial-gradient(circle at center, #09283a 57%, transparent 58%), conic-gradient(#69dfc6 var(--completion), rgba(255, 255, 255, .08) 0); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .1), 0 25px 45px rgba(0, 0, 0, .24); }
.classroom-ring strong { color: #fff; font-size: clamp(4rem, 8vw, 7rem); line-height: .9; }
.classroom-ring small { margin-top: .5rem; color: #83aeba; font-size: .85rem; font-weight: 900; }
.classroom-kpis { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
.classroom-kpis article { min-height: 135px; padding: 1.2rem 1.35rem; display: flex; flex-direction: column; justify-content: space-between; border: 1px solid rgba(255, 255, 255, .12); border-radius: 19px; background: linear-gradient(145deg, rgba(61, 143, 164, .16), rgba(255, 255, 255, .035)); }
.classroom-kpis small { color: #8cb1bd; font-size: .74rem; font-weight: 850; }
.classroom-kpis strong { color: #fff; font-size: clamp(2.7rem, 5vw, 4.8rem); line-height: .9; }
.classroom-students { min-height: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); grid-auto-rows: minmax(96px, 125px); align-content: center; gap: .65rem; overflow: hidden; }
.classroom-student { min-width: 0; padding: .75rem .8rem; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: .7rem; align-items: center; border: 1px solid rgba(255, 255, 255, .1); border-radius: 15px; background: rgba(255, 255, 255, .05); }
.classroom-student > span { width: 42px; height: 42px; display: grid; place-items: center; color: #082c3d; border-radius: 13px; background: #72dcca; font-weight: 950; }
.classroom-student.not_started > span { background: #7795a0; }.classroom-student.completed > span { background: #ffd16a; }.classroom-student.stale { border-color: rgba(255, 142, 119, .55); }
.classroom-student div { min-width: 0; }.classroom-student strong, .classroom-student small { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }.classroom-student strong { color: #fff; font-size: .75rem; }.classroom-student small { margin-top: .2rem; color: #82a6b2; font-size: .62rem; }.classroom-student > b { color: #8ce0cf; font-size: .67rem; }
.classroom-stage-chart { width: min(980px, 88vw); align-self: center; justify-self: center; display: grid; gap: .75rem; }
.classroom-stage-row { display: grid; grid-template-columns: minmax(130px, 240px) 1fr 36px; gap: .8rem; align-items: center; }
.classroom-stage-row span { color: #d9eef3; font-size: .77rem; font-weight: 850; }.classroom-stage-row i { height: 14px; overflow: hidden; border-radius: 99px; background: rgba(255, 255, 255, .08); }.classroom-stage-row i b { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #57cfe3, #72dfc6); box-shadow: 0 0 16px rgba(87, 207, 227, .24); }.classroom-stage-row > strong { color: #fff; font-size: .9rem; }
.classroom-stage-foot { display: flex; justify-content: center; gap: .6rem; padding-top: 1rem; }.classroom-stage-foot span { padding: .55rem .7rem; display: inline-flex; align-items: center; gap: .4rem; color: #91b4bf; border: 1px solid rgba(255, 255, 255, .1); border-radius: 10px; font-size: .68rem; font-weight: 850; }.classroom-stage-foot svg { width: 16px; height: 16px; color: #6fddc7; }
.classroom-finish { min-height: 0; display: grid; grid-template-columns: minmax(300px, .7fr) minmax(0, 1.3fr); gap: 1.2rem; align-items: center; padding: 1rem 5vw 2rem; }
.finish-signal { min-height: 250px; display: grid; place-items: center; align-content: center; gap: .8rem; color: #ffd06a; border: 1px solid rgba(255, 205, 100, .24); border-radius: 28px; background: radial-gradient(circle, rgba(255, 205, 100, .13), transparent 65%); }.finish-signal.ready { color: #6fe0c6; border-color: rgba(111, 224, 198, .34); background: radial-gradient(circle, rgba(111, 224, 198, .15), transparent 65%); }.finish-signal svg { width: 72px; height: 72px; padding: 17px; border-radius: 24px; background: currentColor; stroke: #082b3d; }.finish-signal strong { color: #fff; font-size: 1.7rem; }
.finish-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }.finish-grid span { min-height: 120px; padding: 1rem; display: flex; flex-direction: column; justify-content: space-between; border: 1px solid rgba(255, 255, 255, .11); border-radius: 17px; background: rgba(255, 255, 255, .045); }.finish-grid small { color: #86aab6; font-size: .7rem; font-weight: 850; }.finish-grid b { color: #fff; font-size: 2.7rem; }
.classroom-empty { min-height: 180px; display: grid; place-items: center; color: #6f95a3; border: 1px dashed rgba(255, 255, 255, .14); border-radius: 18px; font-size: .78rem; font-weight: 850; }
.classroom-slide-dots { position: absolute; left: 50%; bottom: .8rem; z-index: 10; display: flex; gap: .4rem; transform: translateX(-50%); }.classroom-slide-dots button { width: 24px; height: 5px; padding: 0; border-radius: 99px; background: rgba(255, 255, 255, .16); transition: width .2s ease, background .2s ease; }.classroom-slide-dots button.active { width: 42px; background: #70dfc8; }
.classroom-footer { border-top: 1px solid rgba(164, 226, 236, .12); color: #87aab6; font-size: .68rem; font-weight: 850; }.classroom-live-status { display: inline-flex; align-items: center; gap: .42rem; color: #91c9bd; }.classroom-live-status i { width: 7px; height: 7px; border-radius: 50%; background: #69ddc1; box-shadow: 0 0 0 6px rgba(105, 221, 193, .08); }.classroom-footer > div { display: flex; gap: .4rem; }.classroom-footer button { min-height: 34px; padding: .45rem .65rem; color: #9fc0ca; border: 1px solid rgba(255, 255, 255, .12); border-radius: 9px; background: rgba(255, 255, 255, .055); font-size: .64rem; font-weight: 850; }#classroomCloseTask { color: #ffc1b5; border-color: rgba(255, 143, 121, .24); }
.classroom-control-actions { align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.classroom-footer .classroom-control.pause { color: #ffd08b; border-color: rgba(255,208,139,.38); }.classroom-footer .classroom-control.resume { color: #93ebc8; border-color: rgba(147,235,200,.36); }.classroom-footer .classroom-control.reset { color: #ffb4a8; border-color: rgba(255,180,168,.34); }

@media (max-width: 900px) {
  .teacher-control-panel { align-items: flex-start; flex-direction: column; }
  .teacher-control-actions { justify-content: flex-start; }
  .world-flow-overview { grid-template-columns: 1fr; }
}

/* Classroom analytics cockpit: dense enough for projection, calm enough for teaching. */
.classroom-stage { grid-template-rows: 64px minmax(0, 1fr) 48px; background-color: #061722; background-image: linear-gradient(rgba(94, 210, 219, .025) 1px, transparent 1px), linear-gradient(90deg, rgba(94, 210, 219, .025) 1px, transparent 1px), radial-gradient(circle at 88% 12%, rgba(37, 141, 166, .24), transparent 31%), linear-gradient(145deg, #061722, #09283a 58%, #05151f); background-size: 32px 32px, 32px 32px, auto, auto; }
.classroom-topbar, .classroom-footer { padding-inline: 1rem; }
.classroom-brand > span { width: 38px; height: 38px; border-radius: 11px; }
.classroom-brand svg { width: 21px; height: 21px; }
.classroom-live { padding: .58rem .85rem .48rem; }
.classroom-slide { gap: .45rem; }
.classroom-slide > header.classroom-slide-head { min-height: 48px; padding: 0 .2rem .2rem; display: flex; align-items: center; justify-content: space-between; }
.classroom-slide-head > div { display: flex; align-items: baseline; gap: .75rem; }
.classroom-slide-head > div > span { color: #68dcc8; font-size: .7rem; font-weight: 950; letter-spacing: .13em; }
.classroom-slide-head h2 { margin: 0; font-size: clamp(1.55rem, 2.45vw, 2.35rem); }
.classroom-slide-head time { padding: .36rem .58rem; color: #8eb4bf; border: 1px solid rgba(145, 211, 220, .13); border-radius: 9px; background: rgba(255, 255, 255, .035); font-size: .68rem; font-weight: 850; }

.classroom-command-grid { min-height: 0; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: 82px minmax(172px, .72fr) minmax(0, 1.28fr); gap: .62rem; }
.classroom-kpi-strip { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .62rem; }
.classroom-kpi-card { position: relative; min-width: 0; padding: .7rem .82rem; display: flex; align-items: flex-end; justify-content: space-between; overflow: hidden; border: 1px solid rgba(121, 211, 220, .18); border-radius: 13px; background: linear-gradient(145deg, rgba(36, 117, 139, .2), rgba(255, 255, 255, .035)); }
.classroom-kpi-card::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #55cddd; }
.classroom-kpi-card span { align-self: flex-start; color: #87adba; font-size: .68rem; font-weight: 850; }
.classroom-kpi-card strong { color: #fff; font-size: clamp(1.7rem, 2.7vw, 2.65rem); line-height: .86; }
.classroom-kpi-card i { position: absolute; right: 10px; top: 9px; width: 7px; height: 7px; border-radius: 50%; background: #5fcedb; box-shadow: 0 0 0 5px rgba(95, 206, 219, .08); }
.classroom-kpi-card.tone-completed::before, .classroom-kpi-card.tone-safe::before { background: #68d4b5; }
.classroom-kpi-card.tone-rate::before, .classroom-kpi-card.tone-score::before { background: #ffd06d; }
.classroom-kpi-card.tone-attention::before { background: #ff8f75; }
.classroom-kpi-card.tone-attention strong { color: #ffb2a1; }

.classroom-data-panel { min-width: 0; min-height: 0; padding: .72rem .82rem; overflow: hidden; border: 1px solid rgba(130, 215, 224, .15); border-radius: 14px; background: linear-gradient(145deg, rgba(30, 100, 122, .16), rgba(255, 255, 255, .025)); box-shadow: inset 0 1px rgba(255, 255, 255, .025); }
.classroom-data-panel > header { height: 26px; display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding-bottom: .45rem; border-bottom: 1px solid rgba(136, 213, 222, .1); }
.classroom-data-panel > header span { color: #dff7fb; font-size: .76rem; font-weight: 920; }
.classroom-data-panel > header b { color: #72dcca; font-size: .66rem; }
.flow-panel { grid-column: 1 / 7; grid-row: 2; }
.trend-panel { grid-column: 1 / 7; grid-row: 3; }
.capability-panel { grid-column: 7 / 10; grid-row: 2 / 4; }
.alert-panel { grid-column: 10 / 13; grid-row: 2 / 4; }
.classroom-flow-funnel { height: 50px; margin-top: .55rem; display: flex; gap: .35rem; }
.classroom-flow-funnel > div { width: auto !important; min-width: 68px; padding: .42rem .55rem; display: flex; align-items: center; justify-content: space-between; border-radius: 9px; background: rgba(111, 146, 158, .16); }
.classroom-flow-funnel > div.playing { color: #7ee0cf; background: rgba(87, 201, 188, .15); }
.classroom-flow-funnel > div.completed { color: #ffd06b; background: rgba(255, 208, 107, .13); }
.classroom-flow-funnel span { color: inherit; font-size: .66rem; font-weight: 800; }
.classroom-flow-funnel b { color: #fff; font-size: 1.25rem; }
.classroom-chapter-bars { margin-top: .55rem; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .4rem; }
.classroom-chapter-row { min-width: 0; display: grid; grid-template-rows: auto 6px; grid-template-columns: 1fr auto; align-items: center; gap: .28rem .38rem; }
.classroom-chapter-row > span { min-width: 0; color: #9dbcc5; font-size: .62rem; font-weight: 850; white-space: nowrap; }
.classroom-chapter-row > span b { margin-right: .22rem; color: #4fb9ca; font-size: .58rem; }
.classroom-chapter-row > i { grid-column: 1 / 3; overflow: hidden; height: 6px; border-radius: 99px; background: rgba(255, 255, 255, .07); }
.classroom-chapter-row > i b { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #4fc3d5, #69d5b5); }
.classroom-chapter-row > strong { color: #fff; font-size: .7rem; }

.classroom-capabilities { height: calc(100% - 31px); padding-top: .5rem; display: grid; align-content: space-around; }
.classroom-capability { display: grid; grid-template-columns: 64px minmax(0, 1fr) 46px; align-items: center; gap: .42rem; }
.classroom-capability > span { color: #a4c2ca; font-size: .66rem; font-weight: 850; }
.classroom-capability > i { height: 8px; overflow: hidden; border-radius: 99px; background: rgba(255, 255, 255, .07); }
.classroom-capability > i b { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #53c8db, #75ddc1); box-shadow: 0 0 12px rgba(87, 211, 202, .18); }
.classroom-capability > strong { color: #fff; font-size: .75rem; text-align: right; }
.classroom-capability > strong small { color: #7095a1; font-size: .52rem; }
.classroom-reach-chart { width: 100%; height: calc(100% - 48px); min-height: 118px; margin-top: .2rem; overflow: visible; }
.classroom-reach-chart .reach-guides line { stroke: rgba(166, 221, 229, .1); stroke-width: 1; stroke-dasharray: 4 5; }
.classroom-reach-chart polygon { fill: rgba(82, 202, 213, .13); stroke: none; }
.classroom-reach-chart polyline { fill: none; stroke: #65d9d0; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.classroom-reach-chart circle { fill: #ffd06b; stroke: #082635; stroke-width: 3; }
.classroom-reach-chart text { font-family: inherit; text-anchor: middle; }
.classroom-reach-chart .reach-value { fill: #eafcff; font-size: 10px; font-weight: 900; }
.classroom-reach-chart .reach-label { fill: #779eaa; font-size: 9px; font-weight: 850; }
.trend-footer { position: absolute; right: .8rem; bottom: .55rem; display: flex; gap: .7rem; }
.trend-panel { position: relative; }
.trend-footer span { color: #7fa5b1; font-size: .6rem; font-weight: 800; }
.trend-footer b { margin-right: .15rem; color: #fff; font-size: .72rem; }

.classroom-alert-list { min-height: 0; height: calc(100% - 76px); padding-top: .35rem; display: grid; align-content: start; gap: .34rem; }
.classroom-alert-row { min-width: 0; min-height: 46px; padding: .4rem .45rem; display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; align-items: center; gap: .42rem; border-radius: 9px; background: rgba(255, 255, 255, .035); }
.classroom-alert-row > span { width: 30px; height: 30px; display: grid; place-items: center; color: #082737; border-radius: 9px; background: #ffad91; font-size: .68rem; font-weight: 950; }
.classroom-alert-row div { min-width: 0; }
.classroom-alert-row strong, .classroom-alert-row small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.classroom-alert-row strong { color: #edfaff; font-size: .65rem; }
.classroom-alert-row small { margin-top: .1rem; color: #779aa6; font-size: .54rem; }
.classroom-alert-row > b { color: #ffb29f; font-size: .58rem; }
.classroom-clear { height: 100%; display: grid; place-items: center; align-content: center; gap: .45rem; color: #73d9bf; }
.classroom-clear svg { width: 30px; height: 30px; }
.classroom-clear strong { color: #dff9f3; font-size: .72rem; }
.alert-totals { height: 40px; display: grid; grid-template-columns: 1fr 1fr; gap: .25rem .45rem; }
.alert-totals span { color: #789ca7; font-size: .58rem; font-weight: 800; }
.alert-totals b { float: right; color: #e5f7fa; font-size: .65rem; }

.classroom-ops-table { min-height: 0; display: grid; grid-template-rows: 38px minmax(0, 1fr); overflow: hidden; border: 1px solid rgba(128, 213, 222, .16); border-radius: 14px; background: rgba(255, 255, 255, .025); }
.classroom-ops-head, .classroom-ops-row { display: grid; grid-template-columns: 1.25fr .72fr 1.2fr 1.05fr .42fr .42fr .82fr; align-items: center; gap: .6rem; padding: 0 .78rem; }
.classroom-ops-head { color: #78a8b4; background: rgba(67, 155, 173, .1); font-size: .62rem; font-weight: 900; }
.classroom-ops-body { min-height: 0; display: grid; grid-auto-rows: minmax(46px, 1fr); overflow: hidden; }
.classroom-ops-row { min-width: 0; color: #cfe5eb; border-top: 1px solid rgba(131, 201, 211, .07); font-size: .65rem; }
.classroom-ops-row:nth-child(even) { background: rgba(87, 160, 175, .035); }
.classroom-ops-row.stale { background: rgba(255, 128, 99, .07); }
.classroom-ops-row > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.student-id { display: flex; align-items: center; gap: .48rem; }
.student-id > b { width: 28px; height: 28px; flex: 0 0 auto; display: grid; place-items: center; color: #082b3a; border-radius: 8px; background: #70dac5; }
.student-id > span { min-width: 0; }
.student-id strong, .student-id small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.student-id strong { color: #fff; font-size: .67rem; }.student-id small { color: #7197a3; font-size: .53rem; }
.status-dot { display: inline-block; width: 6px; height: 6px; margin-right: .28rem; border-radius: 50%; background: #6f8e98; }
.classroom-ops-row.playing .status-dot { background: #66d9c1; }.classroom-ops-row.completed .status-dot { background: #ffd06c; }
.role-meter { display: grid; grid-template-columns: minmax(0, 1fr) 31px; align-items: center; gap: .35rem; }
.role-meter > i { height: 6px; overflow: hidden; border-radius: 99px; background: rgba(255, 255, 255, .07); }.role-meter > i b { display: block; height: 100%; background: #63d1c8; }.role-meter strong { color: #dff8fb; font-size: .58rem; }
.classroom-ops-row .attention { color: #ffad9a; }

.classroom-relay-layout { min-height: 0; display: grid; grid-template-columns: minmax(280px, .68fr) minmax(0, 1.55fr); gap: .65rem; }
.classroom-chapter-bars.large { height: calc(100% - 74px); margin-top: .65rem; display: grid; grid-template-columns: 1fr; align-content: space-around; }
.classroom-chapter-bars.large .classroom-chapter-row { grid-template-columns: 95px minmax(0, 1fr) 26px; grid-template-rows: auto; }
.classroom-chapter-bars.large .classroom-chapter-row > i { grid-column: auto; height: 9px; }
.relay-evidence { height: 42px; display: grid; grid-template-columns: 1fr 1fr; gap: .4rem; }
.relay-evidence span { padding: .42rem .5rem; color: #83a9b4; border-radius: 8px; background: rgba(255, 255, 255, .035); font-size: .61rem; font-weight: 850; }.relay-evidence b { margin-right: .2rem; color: #fff; font-size: .78rem; }
.classroom-role-heatmap { height: calc(100% - 31px); padding-top: .5rem; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); grid-auto-rows: minmax(0, 1fr); gap: .38rem; }
.classroom-role-cell { min-width: 0; padding: .42rem .48rem; display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; align-items: center; gap: .35rem; border: 1px solid rgba(125, 196, 207, .08); border-radius: 9px; background: rgba(255, 255, 255, .025); }
.classroom-role-cell.active { border-color: rgba(99, 219, 198, .35); background: rgba(84, 194, 183, .11); box-shadow: inset 3px 0 #65d8c1; }
.classroom-role-cell > span { color: #4faebe; font-size: .58rem; font-weight: 950; }
.classroom-role-cell > strong { overflow: hidden; color: #9fc0ca; font-size: .6rem; text-overflow: ellipsis; white-space: nowrap; }
.classroom-role-cell.active > strong { color: #efffff; }
.classroom-role-cell > b { color: #fff; font-size: .72rem; }

.classroom-finish { padding: .35rem 3vw .8rem; }
.finish-signal { min-height: 230px; }
.finish-signal small { color: #86aab6; font-size: .72rem; font-weight: 850; }
.finish-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.finish-grid span { min-height: 104px; }
@keyframes classroom-orbit { to { transform: rotate(360deg); } }

@media (max-width: 1120px) {
  .command-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .overview-command { grid-template-columns: 1fr 1fr; }
  .activity-panel { grid-column: 1 / -1; }
  .game-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .class-grid { grid-template-columns: repeat(2, 1fr); }
  .launch-console { grid-template-columns: minmax(0, 1fr) 390px; }
  .classroom-students { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .login-layout { grid-template-columns: 1fr; gap: 2rem; max-width: 540px; }
  .login-story { display: grid; justify-items: center; text-align: center; }
  .app-shell { display: block; }
  .sidebar { position: sticky; top: 0; width: 100%; height: auto; flex-direction: row; align-items: center; gap: 0.8rem; padding: 0.55rem 0.75rem; }
  .sidebar-brand { padding: 0; }
  .brand-copy small, .nav-group, .sidebar-foot .teacher-avatar, .teacher-summary { display: none; }
  .side-nav { flex: 1; flex-direction: row; overflow-x: auto; }
  .nav-item { flex: 0 0 auto; margin: 0; padding: 0.55rem 0.65rem; }
  .nav-item.active::after { display: none; }
  .sidebar-foot { margin: 0; padding: 0; border: 0; }
  .workspace { grid-column: auto; padding: 0 1rem 2.5rem; }
  .topbar { min-height: 74px; }
  .overview-grid { grid-template-columns: 1fr; }
  .overview-command { grid-template-columns: 1fr; }
  .activity-panel { grid-column: auto; }
  .health-layout, .account-layout { grid-template-columns: 1fr; }
  .launch-console { grid-template-columns: 1fr; }
  .launch-console-copy { min-height: 250px; }
  .launch-console-actions { margin-top: 0; }
  .classroom-ready { grid-template-columns: 1fr 1.2fr; padding-inline: 4vw; }
  .classroom-students { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .game-guide-shell { grid-template-columns: 1fr; }
  .guide-screen { min-height: 450px; }
  .guide-stage { min-height: 286px; }
  .guide-stage > img { width: 86px; max-height: 82px; }
  .guide-create-task { margin-top: 1rem; }
}
@media (max-width: 680px) {
  .brand-copy { display: none; }
  .nav-item span { display: none; }
  .nav-item svg { width: 19px; height: 19px; }
  .sidebar { justify-content: space-between; }
  .side-nav { flex: 0 1 auto; }
  .topbar-account { min-width: 0; }
  .topbar-account-copy, .account-chevron { display: none; }
  .classroom-reentry { min-width: 0; min-height: 46px; padding: 0.38rem 0.5rem; }
  .classroom-reentry-mark { width: 32px; height: 32px; }
  .classroom-reentry-copy small { display: none; }
  .classroom-reentry-arrow { display: none; }
  .welcome-strip { align-items: flex-start; flex-direction: column; }
  .stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .class-grid, .game-grid { grid-template-columns: 1fr; }
  .page-actions { align-items: stretch; flex-direction: column; }
  .filter-tools { align-items: stretch; flex-direction: column; }
  .search-box { width: 100%; }
  .segmented { overflow-x: auto; }
  .capability-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .monitor-head { align-items: stretch; flex-direction: column; }
  .monitor-summary { grid-template-columns: auto minmax(90px, 1fr) auto; }
  .progress-track { width: 100%; }
  .form-grid { grid-template-columns: 1fr; }
  .span-two { grid-column: auto; }
  .guide-timeline button { justify-content: center; padding-inline: 0.35rem; }
  .guide-timeline button > b { display: none; }
  .guide-scene { grid-template-columns: 66px 1fr; }
  .demo-order-window { width: calc(100% - 58px); }
  .demo-order-grid { grid-template-columns: 1fr; }
  .demo-order-grid > span:nth-child(n + 2) { display: none; }
  .demo-document-stack { right: 0; transform: scale(0.78); transform-origin: top right; }
  .demo-choice-list { gap: 0.32rem; }
  .demo-choice { min-height: 112px; padding: 0.52rem; }
  .demo-choice > strong { font-size: 0.6rem; }
  .demo-flow-node > b { font-size: 0.5rem; }
  .demo-flow-event { width: 92%; }
  .demo-result-scene { grid-template-columns: 112px minmax(0, 1fr); padding-right: 3.6rem; }
  .demo-score-card { min-height: 180px; }
  .demo-score-card > strong { font-size: 2rem; }
}

/* Projection cockpit v2: black/white contrast, large type, decision-first analytics. */
.classroom-stage {
  --wall-bg: #050505;
  --wall-surface: #111111;
  --wall-surface-raised: #181818;
  --wall-line: #434343;
  --wall-line-soft: #2a2a2a;
  --wall-white: #ffffff;
  --wall-muted: #d0d0d0;
  --wall-dim: #a3a3a3;
  --wall-ok: #54f0ce;
  --wall-warn: #ffc44d;
  --wall-danger: #ff6966;
  grid-template-rows: 68px minmax(0, 1fr) 54px;
  color: var(--wall-white);
  background: var(--wall-bg);
  background-image: linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.018) 1px, transparent 1px);
  background-size: 48px 48px;
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
  text-rendering: geometricPrecision;
}
.classroom-stage strong,
.classroom-stage b,
.classroom-stage span,
.classroom-stage small,
.classroom-stage time { text-shadow: none; }
.classroom-topbar,
.classroom-footer {
  padding-inline: clamp(18px, 1.6vw, 32px);
  border-color: #333;
  background: #080808;
  backdrop-filter: none;
}
.classroom-brand { gap: 12px; }
.classroom-brand > span {
  width: 42px;
  height: 42px;
  color: #050505;
  border: 1px solid #fff;
  border-radius: 9px;
  background: #fff;
}
.classroom-brand svg { width: 23px; height: 23px; stroke-width: 1.7; }
.classroom-brand small { color: var(--wall-muted); font-size: 15px; font-weight: 400; }
.classroom-brand strong { margin-top: 1px; color: #fff; font-size: 18px; font-weight: 600; letter-spacing: .01em; }
.classroom-steps { gap: 8px; }
.classroom-steps i {
  min-width: 82px;
  padding: 8px 13px;
  color: #aaa;
  border-color: #3a3a3a;
  border-radius: 8px;
  font-size: 15px;
  font-weight: 500;
}
.classroom-steps i.done { color: #fff; border-color: #777; }
.classroom-steps i.active { color: #050505; border-color: #fff; background: #fff; }
.classroom-tools { gap: 8px; }
.classroom-tools button {
  width: 42px;
  height: 42px;
  color: #fff;
  border-color: #555;
  border-radius: 8px;
  background: #151515;
}
.classroom-tools svg { width: 21px; height: 21px; stroke-width: 1.7; }
.classroom-live { padding: 12px clamp(16px, 1.5vw, 28px) 10px; }
.classroom-slide { gap: 10px; }
.classroom-slide > header.classroom-slide-head {
  min-height: 52px;
  padding: 0 2px 6px;
  border-bottom: 1px solid #343434;
}
.classroom-slide-head > div { gap: 14px; align-items: center; }
.classroom-slide-head > div > span {
  color: var(--wall-ok);
  font-size: clamp(14px, .85vw, 17px);
  font-weight: 500;
  letter-spacing: .12em;
}
.classroom-slide-head h2 {
  color: #fff;
  font-size: clamp(28px, 2vw, 38px);
  font-weight: 500;
  letter-spacing: -.025em;
}
.classroom-slide-head time {
  padding: 7px 11px;
  color: #fff;
  border-color: #505050;
  border-radius: 7px;
  background: #111;
  font-size: clamp(14px, .85vw, 17px);
  font-weight: 400;
}
.classroom-command-grid {
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-template-rows: 92px minmax(0, 1fr);
  gap: 12px;
}
.classroom-kpi-strip {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
}
.classroom-kpi-card {
  position: relative;
  min-width: 0;
  padding: 13px 16px 12px 18px;
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto 1fr;
  align-items: end;
  gap: 2px 12px;
  border: 1px solid var(--wall-line);
  border-radius: 10px;
  background: var(--wall-surface);
}
.classroom-kpi-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 5px;
  background: var(--wall-ok);
}
.classroom-kpi-card span {
  align-self: start;
  color: var(--wall-muted);
  font-size: clamp(15px, .95vw, 19px);
  font-weight: 500;
}
.classroom-kpi-card strong {
  grid-row: 1 / 3;
  grid-column: 2;
  align-self: center;
  color: #fff;
  font-size: clamp(34px, 2.55vw, 50px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -.035em;
}
.classroom-kpi-card small {
  color: var(--wall-dim);
  font-size: clamp(13px, .76vw, 16px);
  font-weight: 400;
}
.classroom-kpi-card.tone-warning::before { background: var(--wall-warn); }
.classroom-kpi-card.tone-warning strong { color: var(--wall-warn); }
.classroom-kpi-card.tone-danger::before { background: var(--wall-danger); }
.classroom-kpi-card.tone-danger strong { color: var(--wall-danger); }
.classroom-data-panel {
  min-width: 0;
  min-height: 0;
  padding: clamp(15px, 1.1vw, 22px);
  overflow: hidden;
  border: 1px solid var(--wall-line);
  border-radius: 10px;
  background: var(--wall-surface);
  box-shadow: none;
}
.classroom-data-panel > header {
  height: 42px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--wall-line);
}
.classroom-data-panel > header span { color: #fff; font-size: clamp(18px, 1.15vw, 23px); font-weight: 500; }
.classroom-data-panel > header b { color: var(--wall-muted); font-size: clamp(14px, .9vw, 18px); font-weight: 400; }
.classroom-pipeline-panel { grid-column: 1 / 9; grid-row: 2; }
.classroom-pipeline {
  height: calc(100% - 42px);
  padding-top: 10px;
  display: grid;
  grid-template-rows: repeat(5, minmax(0, 1fr));
  gap: 6px;
}
.classroom-pipeline-row {
  min-height: 0;
  padding: 7px 10px;
  display: grid;
  grid-template-columns: 42px minmax(120px, .7fr) minmax(180px, 2fr) 82px 72px;
  align-items: center;
  gap: 12px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: #161616;
}
.classroom-pipeline-row.bottleneck { border-color: var(--wall-warn); background: #211c11; }
.pipeline-index { color: var(--wall-dim); font-size: clamp(14px, .85vw, 17px); font-weight: 500; }
.pipeline-name { min-width: 0; }
.pipeline-name strong,
.pipeline-name small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pipeline-name strong { color: #fff; font-size: clamp(17px, 1.08vw, 22px); font-weight: 500; }
.pipeline-name small { margin-top: 2px; color: var(--wall-dim); font-size: clamp(13px, .76vw, 16px); font-weight: 400; }
.classroom-pipeline-row > i { height: 12px; overflow: hidden; border-radius: 2px; background: #333; }
.classroom-pipeline-row > i b { display: block; height: 100%; background: #fff; }
.classroom-pipeline-row.bottleneck > i b { background: var(--wall-warn); }
.pipeline-rate { color: #fff; font-size: clamp(24px, 1.5vw, 30px); font-weight: 500; text-align: right; }
.pipeline-drop { color: var(--wall-dim); font-size: clamp(14px, .85vw, 17px); font-weight: 500; text-align: right; }
.classroom-pipeline-row.bottleneck .pipeline-drop { color: var(--wall-warn); }
.classroom-diagnosis {
  grid-column: 9 / 13;
  grid-row: 2;
  min-height: 0;
  display: grid;
  grid-template-rows: minmax(148px, .42fr) minmax(0, .58fr);
  gap: 12px;
}
.classroom-bottleneck-card {
  min-height: 0;
  padding: clamp(18px, 1.4vw, 28px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  border: 2px solid var(--wall-warn);
  border-radius: 10px;
  background: #201b10;
}
.classroom-bottleneck-card.stable { border-color: var(--wall-ok); background: #0d1f1b; }
.classroom-bottleneck-card span { color: var(--wall-muted); font-size: clamp(15px, .95vw, 19px); font-weight: 500; }
.classroom-bottleneck-card strong { margin-top: 8px; color: #fff; font-size: clamp(27px, 2vw, 40px); font-weight: 500; line-height: 1.05; }
.classroom-bottleneck-card b { margin-top: 12px; color: var(--wall-warn); font-size: clamp(17px, 1.08vw, 22px); font-weight: 500; }
.classroom-bottleneck-card.stable b { color: var(--wall-ok); }
.classroom-actions-panel > div { height: calc(100% - 42px); padding-top: 10px; display: grid; grid-template-rows: 1fr 1fr; gap: 8px; }
.classroom-action-row {
  min-height: 0;
  padding: 10px 12px;
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  border-left: 4px solid #fff;
  background: #1b1b1b;
}
.classroom-action-row > span { color: var(--wall-dim); font-size: 15px; font-weight: 500; }
.classroom-action-row strong,
.classroom-action-row small { display: block; }
.classroom-action-row strong { color: #fff; font-size: clamp(17px, 1.05vw, 21px); font-weight: 500; line-height: 1.15; }
.classroom-action-row small { margin-top: 5px; color: var(--wall-muted); font-size: clamp(13px, .78vw, 16px); font-weight: 400; line-height: 1.25; }

.classroom-analysis-grid {
  min-height: 0;
  display: grid;
  grid-template-columns: 1.35fr .9fr 1fr;
  gap: 12px;
}
.classroom-capabilities {
  height: calc(100% - 42px);
  padding-top: 10px;
  display: grid;
  grid-template-rows: repeat(5, minmax(0, 1fr));
  gap: 7px;
}
.classroom-capability {
  min-height: 0;
  padding: 8px 10px;
  display: grid;
  grid-template-columns: minmax(128px, .8fr) minmax(150px, 1.4fr) 64px;
  align-items: center;
  gap: 13px;
  background: #181818;
}
.classroom-capability > div span,
.classroom-capability > div small { display: block; }
.classroom-capability > div span { color: #fff; font-size: clamp(16px, 1vw, 20px); font-weight: 500; }
.classroom-capability > div small { margin-top: 3px; color: var(--wall-dim); font-size: clamp(12px, .72vw, 15px); font-weight: 400; }
.classroom-capability > i { height: 12px; overflow: hidden; border-radius: 2px; background: #333; }
.classroom-capability > i b { display: block; height: 100%; background: var(--wall-ok); box-shadow: none; }
.classroom-capability > strong { color: #fff; font-size: clamp(21px, 1.35vw, 27px); font-weight: 500; text-align: right; }
.classroom-behavior-panel > div {
  height: calc(100% - 42px);
  padding-top: 10px;
  display: grid;
  grid-template-rows: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.classroom-behavior-card {
  min-height: 0;
  padding: 9px 12px;
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto 1fr;
  align-items: end;
  gap: 3px 10px;
  border: 1px solid var(--wall-line-soft);
  background: #181818;
}
.classroom-behavior-card span { color: var(--wall-muted); font-size: clamp(14px, .85vw, 17px); font-weight: 500; }
.classroom-behavior-card strong { grid-row: 1 / 3; grid-column: 2; align-self: center; color: #fff; font-size: clamp(22px, 1.35vw, 28px); font-weight: 500; }
.classroom-behavior-card small { color: var(--wall-dim); font-size: clamp(12px, .72vw, 15px); font-weight: 400; }
.classroom-congestion-panel { display: grid; grid-template-rows: 42px minmax(0, 1fr) minmax(104px, .36fr); }
.classroom-congestion-panel > div:nth-child(2) { padding-top: 10px; display: grid; align-content: start; gap: 8px; }
.classroom-congestion-row {
  min-height: 48px;
  padding: 8px 10px;
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--wall-line-soft);
  background: #181818;
}
.classroom-congestion-row span { color: var(--wall-dim); font-size: 14px; font-weight: 500; }
.classroom-congestion-row strong { overflow: hidden; color: #fff; font-size: clamp(16px, .96vw, 19px); font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.classroom-congestion-row b { color: var(--wall-warn); font-size: clamp(16px, 1vw, 20px); font-weight: 500; }
.classroom-analysis-callout {
  align-self: end;
  padding: 12px 14px;
  border: 1px solid var(--wall-warn);
  background: #211c11;
}
.classroom-analysis-callout span,
.classroom-analysis-callout strong,
.classroom-analysis-callout small { display: block; }
.classroom-analysis-callout span { color: var(--wall-warn); font-size: 14px; font-weight: 500; }
.classroom-analysis-callout strong { margin-top: 4px; color: #fff; font-size: clamp(18px, 1.15vw, 23px); font-weight: 500; }
.classroom-analysis-callout small { margin-top: 5px; color: var(--wall-muted); font-size: clamp(13px, .78vw, 16px); font-weight: 400; }

.classroom-cohort-grid { min-height: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.classroom-cohort-panel {
  min-width: 0;
  min-height: 0;
  padding: 16px;
  display: grid;
  grid-template-rows: 48px minmax(0, 1fr);
  border: 1px solid var(--wall-line);
  border-top: 6px solid var(--wall-ok);
  border-radius: 10px;
  background: var(--wall-surface);
}
.classroom-cohort-panel.tone-urgent { border-top-color: var(--wall-danger); }
.classroom-cohort-panel.tone-watch { border-top-color: var(--wall-warn); }
.classroom-cohort-panel > header { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--wall-line); }
.classroom-cohort-panel > header span { color: #fff; font-size: clamp(20px, 1.3vw, 26px); font-weight: 500; }
.classroom-cohort-panel > header b { color: var(--wall-muted); font-size: clamp(17px, 1.05vw, 21px); font-weight: 500; }
.classroom-cohort-panel > div { min-height: 0; padding-top: 10px; display: grid; grid-template-rows: repeat(5, minmax(0, 1fr)); gap: 8px; }
.classroom-cohort-row {
  min-height: 0;
  padding: 8px 10px;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  align-items: center;
  gap: 11px;
  border: 1px solid var(--wall-line-soft);
  background: #181818;
}
.classroom-cohort-row > span { width: 38px; height: 38px; display: grid; place-items: center; color: #050505; border-radius: 5px; background: #fff; font-size: 17px; font-weight: 600; }
.tone-urgent .classroom-cohort-row > span { background: var(--wall-danger); }
.tone-watch .classroom-cohort-row > span { background: var(--wall-warn); }
.classroom-cohort-row div { min-width: 0; }
.classroom-cohort-row strong,
.classroom-cohort-row small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.classroom-cohort-row strong { color: #fff; font-size: clamp(16px, 1vw, 20px); font-weight: 500; }
.classroom-cohort-row small { margin-top: 3px; color: var(--wall-dim); font-size: clamp(13px, .78vw, 16px); font-weight: 400; }
.classroom-cohort-row > b { max-width: 145px; color: var(--wall-muted); font-size: clamp(13px, .8vw, 16px); font-weight: 500; text-align: right; }
.tone-urgent .classroom-cohort-row > b { color: var(--wall-danger); }
.tone-watch .classroom-cohort-row > b { color: var(--wall-warn); }
.classroom-cohort-empty { display: grid; place-items: center; color: var(--wall-dim); border: 1px dashed var(--wall-line); font-size: clamp(15px, .9vw, 18px); font-weight: 400; }

.classroom-closure-grid {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(300px, .72fr) minmax(0, 1.28fr);
  grid-template-rows: minmax(0, 1fr) 132px;
  gap: 12px;
}
.classroom-closure-signal {
  grid-row: 1 / 3;
  padding: clamp(24px, 3vw, 58px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  border: 2px solid var(--wall-warn);
  border-radius: 10px;
  background: #1c180f;
}
.classroom-closure-signal.ready { border-color: var(--wall-ok); background: #0b1d18; }
.classroom-closure-signal > span { color: var(--wall-warn); font-size: clamp(18px, 1.2vw, 24px); font-weight: 500; letter-spacing: .18em; }
.classroom-closure-signal.ready > span { color: var(--wall-ok); }
.classroom-closure-signal > strong { margin-top: 14px; color: #fff; font-size: clamp(52px, 5vw, 96px); font-weight: 500; line-height: .95; letter-spacing: -.055em; }
.classroom-closure-signal > small { margin-top: 22px; color: var(--wall-muted); font-size: clamp(17px, 1.1vw, 22px); font-weight: 400; }
.classroom-gate-grid { min-height: 0; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 12px; }
.classroom-gate {
  min-height: 0;
  padding: clamp(16px, 1.35vw, 26px);
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto 1fr;
  align-items: end;
  border: 1px solid var(--wall-line);
  border-left: 6px solid var(--wall-danger);
  border-radius: 8px;
  background: var(--wall-surface);
}
.classroom-gate.passed { border-left-color: var(--wall-ok); }
.classroom-gate span { color: var(--wall-danger); font-size: clamp(14px, .85vw, 17px); font-weight: 500; }
.classroom-gate.passed span { color: var(--wall-ok); }
.classroom-gate strong { color: #fff; font-size: clamp(20px, 1.4vw, 28px); font-weight: 500; }
.classroom-gate b { grid-row: 1 / 3; grid-column: 2; align-self: center; color: #fff; font-size: clamp(26px, 1.8vw, 36px); font-weight: 500; }
.classroom-closure-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.classroom-closure-summary > span { min-width: 0; padding: 14px; display: flex; flex-direction: column; justify-content: space-between; border: 1px solid var(--wall-line); background: var(--wall-surface); }
.classroom-closure-summary small { color: var(--wall-muted); font-size: clamp(13px, .78vw, 16px); font-weight: 400; }
.classroom-closure-summary strong { color: #fff; font-size: clamp(26px, 1.8vw, 36px); font-weight: 500; }
.classroom-slide-dots { bottom: 8px; gap: 8px; }
.classroom-slide-dots button { width: 30px; height: 7px; border: 1px solid #666; border-radius: 2px; background: #1d1d1d; }
.classroom-slide-dots button.active { width: 52px; border-color: #fff; background: #fff; }
.classroom-slide small { font-size: clamp(14px, .82vw, 17px); }
.classroom-slide .classroom-capability > div small { font-size: clamp(14px, .82vw, 17px); }
.classroom-cohort-row > b { font-size: clamp(14px, .82vw, 17px); }
.classroom-footer { color: var(--wall-muted); font-size: 15px; font-weight: 400; }
.classroom-live-status { color: #fff; font-size: 16px; font-weight: 500; }
.classroom-live-status i { width: 9px; height: 9px; background: var(--wall-ok); box-shadow: none; }
.classroom-footer button { min-height: 38px; padding: 8px 13px; color: #fff; border-color: #555; border-radius: 7px; background: #151515; font-size: 15px; font-weight: 500; }
#classroomCloseTask { color: #fff; border-color: var(--wall-danger); }

@media (max-width: 1500px), (max-height: 820px) {
  .classroom-stage { grid-template-rows: 62px minmax(0, 1fr) 48px; }
  .classroom-brand > span { width: 38px; height: 38px; }
  .classroom-brand small { font-size: 14px; }
  .classroom-brand strong { font-size: 16px; }
  .classroom-steps i { min-width: 72px; padding: 7px 10px; font-size: 14px; }
  .classroom-tools button { width: 38px; height: 38px; }
  .classroom-live { padding: 9px 13px 8px; }
  .classroom-slide { gap: 8px; }
  .classroom-slide > header.classroom-slide-head { min-height: 46px; }
  .classroom-command-grid { grid-template-rows: 80px minmax(0, 1fr); gap: 9px; }
  .classroom-kpi-strip,
  .classroom-analysis-grid,
  .classroom-cohort-grid,
  .classroom-closure-grid { gap: 9px; }
  .classroom-kpi-card { padding: 10px 12px 9px 15px; }
  .classroom-data-panel { padding: 13px; }
  .classroom-data-panel > header { height: 36px; padding-bottom: 9px; }
  .classroom-pipeline { height: calc(100% - 36px); padding-top: 7px; gap: 4px; }
  .classroom-pipeline-row { padding: 4px 8px; grid-template-columns: 34px minmax(100px, .7fr) minmax(120px, 2fr) 68px 60px; gap: 8px; }
  .classroom-diagnosis { grid-template-rows: minmax(122px, .4fr) minmax(0, .6fr); gap: 9px; }
  .classroom-bottleneck-card { padding: 16px; }
  .classroom-actions-panel > div { height: calc(100% - 36px); padding-top: 7px; gap: 6px; }
  .classroom-action-row { padding: 7px 9px; }
  .classroom-capabilities,
  .classroom-behavior-panel > div { height: calc(100% - 36px); padding-top: 7px; gap: 5px; }
  .classroom-capability { padding: 5px 8px; gap: 9px; }
  .classroom-behavior-card { padding: 6px 8px; }
  .classroom-congestion-panel { grid-template-rows: 36px minmax(0, 1fr) minmax(92px, .34fr); }
  .classroom-congestion-panel > div:nth-child(2) { padding-top: 7px; gap: 5px; }
  .classroom-congestion-row { min-height: 40px; padding: 5px 8px; }
  .classroom-analysis-callout { padding: 9px 11px; }
  .classroom-cohort-panel { padding: 12px; grid-template-rows: 42px minmax(0, 1fr); }
  .classroom-cohort-panel > div { padding-top: 7px; gap: 5px; }
  .classroom-cohort-row { padding: 5px 7px; gap: 8px; }
  .classroom-cohort-row > span { width: 34px; height: 34px; }
  .classroom-closure-grid { grid-template-rows: minmax(0, 1fr) 112px; }
  .classroom-gate-grid { gap: 9px; }
  .classroom-gate { padding: 14px; }
  .classroom-closure-summary { gap: 7px; }
  .classroom-closure-summary > span { padding: 10px; }
  .classroom-footer { font-size: 14px; }
  .classroom-footer button { min-height: 34px; padding: 6px 10px; font-size: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

/* 中期综合实验诊断：高对比、远距可读、所有教学动作可操作。 */
.classroom-action-row {
  width: 100%;
  grid-template-columns: 36px minmax(0, 1fr) auto;
  color: inherit;
  border-top: 1px solid #454545;
  border-right: 1px solid #454545;
  border-bottom: 1px solid #454545;
  border-radius: 0 7px 7px 0;
  text-align: left;
  cursor: pointer;
}
.classroom-action-row:hover,
.classroom-action-row:focus-visible { border-color: #fff; background: #272727; outline: none; }
.classroom-action-row > b { color: #fff; font-size: clamp(14px, .85vw, 17px); font-weight: 500; }
.classroom-behavior-card { border-left: 5px solid var(--wall-ok); }
.classroom-behavior-card.tone-warning { border-left-color: var(--wall-warn); }
.classroom-behavior-card.tone-danger { border-left-color: var(--wall-danger); }
.classroom-behavior-card.tone-warning strong { color: var(--wall-warn); }
.classroom-behavior-card.tone-danger strong { color: var(--wall-danger); }
.classroom-congestion-row.misconception-row { border-left: 5px solid var(--wall-warn); }
.classroom-congestion-row.misconception-row strong { white-space: normal; line-height: 1.15; }
.monitor-misconception { display: block; margin-top: 4px; color: #a15f31; font-weight: 700; }
.monitor-panel tbody tr.risk-row { background: #fff6f1; box-shadow: inset 5px 0 #e66f55; }
.monitor-panel tbody tr.risk-row td { border-bottom-color: #f2c8ba; }

/* 港口故事书主题：双端共用海港蓝、珊瑚橙与纸张米白，控制台仍保持投影可读。 */
:root {
  --navy-950:#0b2c40;
  --navy-900:#123d55;
  --navy-800:#1a5773;
  --ink:#173b52;
  --muted:#627e8c;
  --blue:#2b8fba;
  --blue-soft:#e1f1f7;
  --mint:#78cbd1;
  --mint-soft:#e4f4f5;
  --coral:#ef7657;
  --coral-soft:#fff0e9;
  --yellow:#ffc86a;
  --yellow-soft:#fff5d9;
  --page:#e8f3f7;
  --surface:#fffaf0;
  --line:#b7ced8;
  --shadow:0 5px 0 rgba(18,61,85,.18),0 14px 30px rgba(18,61,85,.10);
  --shadow-small:0 3px 0 rgba(18,61,85,.16),0 9px 20px rgba(18,61,85,.08);
}
html,body { background:#e8f3f7; }
.sidebar { background:#0b2c40; background-image:none; box-shadow:8px 0 0 rgba(10,39,56,.12); }
.sidebar::after { border-color:rgba(255,255,255,.07); }
.brand-mark { border:2px solid #071f2d; color:#173b52; background:#ffc86a; background-image:none; box-shadow:0 4px 0 #071f2d; }
.nav-item { border:1px solid transparent; }
.nav-item.active { border-color:#071f2d; color:#173b52; background:#fff6df; background-image:none; box-shadow:0 4px 0 #071f2d; }
.nav-item.active::after { background:#ef7657; }
.workspace { max-width:1640px; }
.topbar { background:rgba(232,243,247,.95); backdrop-filter:none; }
.panel,.topbar-account,.login-card,.class-card,.game-card,.table-shell,.detail-banner,.monitor-banner {
  border:2px solid #173b52;
  background:#fffaf0;
  background-image:none;
  box-shadow:var(--shadow-small);
}
.panel { border-radius:18px; }
.panel-head { padding-bottom:.72rem; border-bottom:1px dashed #b7ced8; }
.primary,.launch-button { border:2px solid #173b52; color:#fff; background:#2b8fba; background-image:none; box-shadow:0 4px 0 #173b52; }
.primary:hover,.launch-button:hover { transform:translateY(-1px); box-shadow:0 5px 0 #173b52; }
.primary:active,.launch-button:active { transform:translateY(3px); box-shadow:0 1px 0 #173b52; }
.secondary { border:2px solid #173b52; color:#173b52; background:#fffaf0; box-shadow:0 3px 0 rgba(23,59,82,.18); }
.secondary:hover { color:#173b52; border-color:#173b52; background:#e1f1f7; }
.login-story::before { background:#cce9f3; background-image:none; }
.login-icon { border:2px solid #173b52; color:#173b52; background:#ffc86a; box-shadow:0 3px 0 #173b52; }
.welcome-strip { border:2px solid #173b52; background:#d8edf6; background-image:none; box-shadow:var(--shadow-small); }
.welcome-strip::after { border-color:rgba(23,59,82,.08); }
.stat-grid article { border:2px solid #173b52; background:#fffaf0; box-shadow:var(--shadow-small); }
.stat-icon { border:1px solid #173b52; }
.compact-item,.activity-item { border:1px solid #c2d4dc; background:#f7fbfc; }
.class-card:hover,.game-card:hover { border-color:#173b52; box-shadow:0 6px 0 rgba(23,59,82,.2),0 14px 25px rgba(23,59,82,.1); }
.game-card,.game-card.open { min-height:220px; border-color:#173b52; background:#fffaf0; }
.game-card-icon,.game-card.open .game-card-icon { border:2px solid #173b52; color:#173b52; background:#bfe4f0; box-shadow:0 3px 0 #173b52; }
.game-card.tone-coral .game-card-icon { background:#ffd5c9; }
.game-card.tone-gold .game-card-icon { background:#ffe2a6; }
.status.open,.status-pill.open,.course-pill.open { color:#175d75; background:#dceff7; }
.status.closed,.status-pill.closed,.course-pill.closed { color:#9d4632; background:#ffe3da; }

.launch-console { border:3px solid #071f2d; background:#123d55; background-image:none; box-shadow:0 7px 0 #071f2d,0 18px 34px rgba(7,31,45,.2); }
.launch-console::before { display:none; }
.launch-icon { border:3px solid #071f2d; color:#173b52; background:#ffc86a; background-image:none; box-shadow:0 5px 0 #071f2d; }
.launch-index { color:#173b52; border:2px solid #071f2d; background:#bfe4f0; }
.launch-facts span { color:#d9edf4; border-color:#8ab5c5; background:#0d3145; }
.launch-console-actions { border:3px solid #173b52; background:#fffaf0; box-shadow:0 6px 0 #071f2d; }
.launch-mode-picker button { border:2px solid #b7ced8; background:#fff; }
.launch-mode-picker button.active { color:#173b52; border-color:#173b52; background:#dceff7; box-shadow:0 3px 0 #173b52; }
.classroom-reentry { border:2px solid #173b52; color:#173b52; background:#fff5d9; background-image:none; box-shadow:0 4px 0 #173b52; }
.classroom-reentry-mark { border:1px solid #173b52; color:#173b52; background:#bfe4f0; }

.classroom-stage {
  --wall-bg:#082536;
  --wall-surface:#0f3447;
  --wall-surface-raised:#16475b;
  --wall-line:#5f8fa1;
  --wall-line-soft:#315d70;
  --wall-muted:#d5e7ed;
  --wall-dim:#a9c5d0;
  --wall-ok:#76d9e0;
  --wall-warn:#ffc86a;
  --wall-danger:#ff8467;
  background:#082536;
  background-image:none;
}
.classroom-topbar,.classroom-footer { border-color:#5f8fa1; background:#061e2c; }
.classroom-brand > span { border:2px solid #fff; border-radius:13px; color:#173b52; background:#ffc86a; box-shadow:0 3px 0 #000; }
.classroom-steps i { border:1px solid #5f8fa1; border-radius:12px; background:#0f3447; }
.classroom-steps i.active { color:#173b52; border-color:#fff; background:#fff5d9; box-shadow:0 3px 0 #000; }
.classroom-tools button { border:1px solid #8ab5c5; border-radius:12px; background:#0f3447; }
.classroom-slide > header.classroom-slide-head { border-bottom:2px solid #5f8fa1; }
.classroom-slide-head > div > span { color:#8fe3e8; }
.classroom-slide-head time { border-color:#8ab5c5; border-radius:10px; background:#0f3447; }
.classroom-kpi-card,.classroom-data-panel,.classroom-bottleneck-card,.classroom-cohort-panel,.classroom-closure-signal,.classroom-closure-summary > span {
  border:2px solid #5f8fa1;
  border-radius:16px;
  background:#0f3447;
  background-image:none;
  box-shadow:0 4px 0 #041722;
}
.classroom-kpi-card::before { border-radius:14px 0 0 14px; background:#76d9e0; }
.classroom-pipeline-row,.classroom-congestion-row,.classroom-cohort-row,.classroom-action-row { border-color:#5f8fa1; border-radius:10px; background:#123b50; }
.classroom-pipeline-row.bottleneck,.classroom-bottleneck-card.warning { border-color:#ffc86a; background:#3b2d12; }
.classroom-bottleneck-card.stable,.classroom-closure-signal.ready { border-color:#76d9e0; background:#0d3a40; }
.classroom-cohort-row > span { border:2px solid #041722; border-radius:10px; background:#fff5d9; box-shadow:0 2px 0 #041722; }
.classroom-action-row:hover,.classroom-action-row:focus-visible { border-color:#fff; background:#1a4b60; }

/* 开场按钮与课堂进度使用单一语义色，不再出现黄绿渐变。 */
#classroomAnnounceStart {
  color:#173f58;
  border:3px solid #fff8e8;
  background:#ff8a67;
  background-image:none;
  box-shadow:0 6px 0 #102f43,0 16px 28px rgba(0,0,0,.24);
}
#classroomAnnounceStart:hover { transform:translateY(-2px) rotate(-.4deg); }
#classroomAnnounceStart:active { transform:translateY(4px); box-shadow:0 2px 0 #102f43; }
.classroom-stage-row i b,
.classroom-capability > i b,
.classroom-chapter-row > i b { background:#65c8dc; background-image:none; }

/* 中期综合实验单页驾驶舱：与学生端一致的港口故事书卡通视觉。 */
.classroom-stage {
  --cartoon-ink:#173f58;
  --cartoon-paper:#fffaf0;
  --cartoon-sky:#9ddfeb;
  --cartoon-blue:#2b91c3;
  --cartoon-mint:#70ceb1;
  --cartoon-coral:#f87959;
  --cartoon-sun:#ffd36d;
  --cartoon-shadow:#0f3044;
  color:var(--cartoon-ink);
  background:#dff3f8;
  background-image:none;
}
.classroom-stage .classroom-topbar,
.classroom-stage .classroom-footer {
  color:var(--cartoon-ink);
  border-color:var(--cartoon-ink);
  background:#fffaf0;
}
.classroom-stage .classroom-brand small { color:#557787; }
.classroom-stage .classroom-brand strong { color:var(--cartoon-ink); font-weight:800; }
.classroom-stage .classroom-brand > span {
  color:var(--cartoon-ink);
  border-color:var(--cartoon-ink);
  background:var(--cartoon-sun);
  box-shadow:0 3px 0 var(--cartoon-ink);
}
.classroom-stage .classroom-steps i {
  color:#557787;
  border:2px solid #aac8d2;
  background:#eef8fa;
}
.classroom-stage .classroom-steps i.done { color:var(--cartoon-ink); border-color:var(--cartoon-blue); background:#dff3f8; }
.classroom-stage .classroom-steps i.active { color:var(--cartoon-ink); border-color:var(--cartoon-ink); background:var(--cartoon-sun); box-shadow:0 3px 0 var(--cartoon-ink); }
.classroom-stage .classroom-tools button {
  color:var(--cartoon-ink);
  border:2px solid var(--cartoon-ink);
  background:#fff;
  box-shadow:0 3px 0 var(--cartoon-ink);
}
.classroom-stage .classroom-ready {
  background:
    radial-gradient(circle at 22% 50%, rgba(112,206,177,.34), transparent 30%),
    linear-gradient(135deg,#dff3f8 0%,#ccebf2 100%);
}
.classroom-stage .ready-orbit {
  border:4px solid var(--cartoon-ink);
  background:radial-gradient(circle at 42% 35%,#fffdf7 0%,var(--cartoon-paper) 58%,#ccefe3 100%);
  box-shadow:0 8px 0 var(--cartoon-shadow),0 0 0 28px rgba(43,145,195,.08),0 0 0 58px rgba(43,145,195,.04);
}
.classroom-stage .ready-orbit i { border:3px dashed var(--cartoon-blue); }
.classroom-stage .ready-orbit span {
  color:var(--cartoon-ink);
  text-shadow:none;
}
.classroom-stage .ready-orbit small { color:#557787; }
.classroom-stage .ready-board {
  padding:clamp(24px,3vw,42px);
  border:4px solid var(--cartoon-ink);
  border-radius:26px;
  background:var(--cartoon-paper);
  box-shadow:0 9px 0 var(--cartoon-shadow),0 20px 34px rgba(15,48,68,.16);
}
.classroom-stage .ready-status {
  color:var(--cartoon-ink);
  border:2px solid var(--cartoon-ink);
  background:#ccefe3;
  box-shadow:0 2px 0 var(--cartoon-ink);
}
.classroom-stage .ready-status i {
  background:var(--cartoon-mint);
  box-shadow:0 0 0 2px var(--cartoon-ink);
}
.classroom-stage .ready-board h2 {
  color:var(--cartoon-ink);
  text-shadow:none;
}
.classroom-stage .ready-metrics span {
  color:#557787;
  border:2px solid #a9c7d2;
  background:#f5fbfc;
}
.classroom-stage .ready-metrics b { color:var(--cartoon-ink); }
.classroom-stage .classroom-live { padding:10px clamp(13px,1.35vw,26px) 9px; }
.classroom-stage .classroom-slides { overflow:hidden; }
.classroom-stage .classroom-slide { gap:8px; }
.classroom-stage .classroom-slide > header.classroom-slide-head {
  min-height:50px;
  padding:0 3px 6px;
  border-bottom:0;
}
.classroom-stage .cartoon-slide-head > div > span {
  color:#fff;
  padding:5px 10px;
  border:2px solid var(--cartoon-ink);
  border-radius:99px;
  background:var(--cartoon-coral);
  box-shadow:0 2px 0 var(--cartoon-ink);
  font-size:clamp(12px,.72vw,15px);
  font-weight:800;
  letter-spacing:.08em;
}
.classroom-stage .cartoon-slide-head h2 { color:var(--cartoon-ink); font-size:clamp(24px,1.75vw,34px); font-weight:900; }
.cartoon-crew-badge {
  height:48px;
  padding:3px 10px 3px 4px;
  display:grid;
  grid-template-columns:76px auto;
  grid-template-rows:1fr 1fr;
  align-items:center;
  column-gap:8px;
  color:var(--cartoon-ink);
  border:2px solid var(--cartoon-ink);
  border-radius:15px;
  background:#fffaf0;
  box-shadow:0 3px 0 var(--cartoon-ink);
}
.cartoon-crew-badge img { grid-row:1 / 3; width:76px; height:40px; object-fit:cover; object-position:center; border-radius:11px; }
.cartoon-crew-badge strong { align-self:end; color:var(--cartoon-ink); font-size:clamp(13px,.78vw,16px); font-weight:900; }
.cartoon-crew-badge time { align-self:start; padding:0; color:#648493; border:0; background:none; font-size:clamp(11px,.66vw,13px); font-weight:700; }
.cartoon-dashboard {
  min-height:0;
  display:grid;
  grid-template-columns:.85fr 1.18fr 1.45fr;
  grid-template-rows:84px minmax(0,1fr) 116px;
  gap:10px;
}
.cartoon-stat-strip { grid-column:1 / -1; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.cartoon-stat {
  min-width:0;
  padding:10px 15px;
  display:grid;
  grid-template-columns:52px minmax(0,1fr);
  align-items:center;
  gap:11px;
  border:3px solid var(--cartoon-ink);
  border-radius:18px;
  background:#fffaf0;
  box-shadow:0 5px 0 var(--cartoon-shadow);
}
.cartoon-stat > span { width:48px; height:48px; display:grid; place-items:center; border:2px solid var(--cartoon-ink); border-radius:14px; background:#dff3f8; }
.cartoon-stat > span svg { width:25px; height:25px; stroke:var(--cartoon-ink); stroke-width:2; }
.cartoon-stat > div { min-width:0; display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto; align-items:end; column-gap:8px; }
.cartoon-stat small { grid-column:1 / 3; color:#547585; font-size:clamp(12px,.72vw,15px); font-weight:800; }
.cartoon-stat strong { color:var(--cartoon-ink); font-size:clamp(28px,2vw,40px); font-weight:950; line-height:1; }
.cartoon-stat b { padding-bottom:3px; color:#547585; font-size:clamp(11px,.68vw,14px); font-weight:800; }
.cartoon-stat.tone-sun > span { background:#ffe6a9; }
.cartoon-stat.tone-coral > span { background:#ffd7cc; }
.cartoon-stat.tone-mint > span { background:#ccefe3; }
.cartoon-panel {
  min-width:0;
  min-height:0;
  padding:12px 14px;
  overflow:hidden;
  border:3px solid var(--cartoon-ink);
  border-radius:20px;
  background:#fffaf0;
  box-shadow:0 5px 0 var(--cartoon-shadow);
}
.cartoon-panel > header { height:44px; display:flex; align-items:center; gap:9px; border-bottom:2px dashed #b8d0d8; }
.cartoon-panel > header > span { width:34px; height:34px; display:grid; place-items:center; border:2px solid var(--cartoon-ink); border-radius:10px; background:#bfe7f0; }
.cartoon-panel > header svg { width:19px; height:19px; stroke:var(--cartoon-ink); }
.cartoon-panel > header div { min-width:0; }
.cartoon-panel > header strong,.cartoon-panel > header small { display:block; }
.cartoon-panel > header strong { color:var(--cartoon-ink); font-size:clamp(17px,1vw,21px); font-weight:950; }
.cartoon-panel > header small { color:#648493; font-size:clamp(11px,.65vw,13px); font-weight:750; }
.status-donut-wrap { height:calc(100% - 44px); display:grid; grid-template-rows:minmax(128px,1fr) auto; place-items:center; gap:6px; padding-top:8px; }
.status-donut {
  width:min(14.5vh,150px);
  aspect-ratio:1;
  display:grid;
  place-items:center;
  border:3px solid var(--cartoon-ink);
  border-radius:50%;
  background:conic-gradient(var(--cartoon-sun) 0 calc(var(--waiting-end) * 1%),var(--cartoon-blue) calc(var(--waiting-end) * 1%) calc(var(--playing-end) * 1%),var(--cartoon-mint) calc(var(--playing-end) * 1%) 100%);
  box-shadow:0 4px 0 var(--cartoon-ink);
}
.status-donut > span { width:62%; aspect-ratio:1; display:grid; place-content:center; text-align:center; border:3px solid var(--cartoon-ink); border-radius:50%; background:#fffaf0; }
.status-donut strong { color:var(--cartoon-ink); font-size:clamp(24px,1.8vw,36px); font-weight:950; line-height:1; }
.status-donut small { margin-top:3px; color:#648493; font-size:12px; font-weight:800; }
.status-donut-wrap ul { width:100%; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,1fr); gap:5px; list-style:none; }
.status-donut-wrap li { min-width:0; padding:5px; display:grid; grid-template-columns:8px 1fr; align-items:center; gap:3px 5px; border:1px solid #c5d9df; border-radius:9px; background:#f7fbfc; }
.status-donut-wrap li i { width:8px; height:8px; border-radius:50%; background:var(--cartoon-sun); }
.status-donut-wrap li.tone-playing i { background:var(--cartoon-blue); }
.status-donut-wrap li.tone-completed i { background:var(--cartoon-mint); }
.status-donut-wrap li span { color:#587685; font-size:clamp(10px,.61vw,12px); font-weight:800; white-space:nowrap; }
.status-donut-wrap li strong { grid-column:1 / 3; color:var(--cartoon-ink); font-size:clamp(12px,.75vw,15px); font-weight:950; text-align:center; }
.cartoon-chapters { height:calc(100% - 44px); padding-top:7px; display:grid; grid-template-rows:repeat(5,minmax(0,1fr)); gap:5px; }
.cartoon-chapter-row { min-height:0; padding:4px 7px; display:grid; grid-template-columns:28px minmax(88px,.75fr) minmax(100px,1.25fr) 48px; align-items:center; gap:7px; border:2px solid #c1d5dd; border-radius:11px; background:#f7fbfc; }
.cartoon-chapter-row > span { width:25px; height:25px; display:grid; place-items:center; color:var(--cartoon-ink); border:2px solid var(--cartoon-ink); border-radius:8px; background:#ffe6a9; font-size:11px; font-weight:950; }
.cartoon-chapter-row div { min-width:0; }
.cartoon-chapter-row strong,.cartoon-chapter-row small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cartoon-chapter-row strong { color:var(--cartoon-ink); font-size:clamp(13px,.8vw,16px); font-weight:950; }
.cartoon-chapter-row small { color:#668593; font-size:clamp(10px,.61vw,12px); font-weight:750; }
.cartoon-chapter-row > i { height:11px; overflow:hidden; border:2px solid var(--cartoon-ink); border-radius:99px; background:#e2edf0; }
.cartoon-chapter-row > i b { display:block; height:100%; background:var(--cartoon-blue); }
.cartoon-chapter-row em { color:var(--cartoon-ink); font-size:clamp(13px,.82vw,17px); font-style:normal; font-weight:950; text-align:right; }
.ranking-panel { padding-inline:12px; }
.cartoon-rank-table { height:calc(100% - 44px); overflow:hidden; }
.cartoon-rank-table table { width:100%; height:100%; border-collapse:collapse; table-layout:fixed; }
.cartoon-rank-table th { height:28px; color:#668593; border-bottom:2px solid #c5d9df; font-size:clamp(10px,.62vw,12px); font-weight:850; text-align:left; }
.cartoon-rank-table th:nth-child(1) { width:48px; text-align:center; }
.cartoon-rank-table th:nth-child(2) { width:28%; }
.cartoon-rank-table th:nth-child(4) { width:76px; }
.cartoon-rank-table td { height:calc((100% - 28px) / 6); padding:3px 4px; color:var(--cartoon-ink); border-bottom:1px dashed #c5d9df; font-size:clamp(11px,.68vw,14px); font-weight:800; }
.cartoon-rank-table td:first-child { text-align:center; }
.rank-badge { width:25px; height:25px; display:inline-grid; place-items:center; border:2px solid var(--cartoon-ink); border-radius:8px; background:#dfeef2; box-shadow:0 2px 0 var(--cartoon-ink); }
.rank-badge.rank-1 { background:var(--cartoon-sun); }.rank-badge.rank-2 { background:#d8e8ed; }.rank-badge.rank-3 { background:#ffd5c9; }
.rank-student { min-width:0; display:flex; align-items:center; gap:6px; }
.rank-student i { width:25px; height:25px; flex:0 0 auto; display:grid; place-items:center; color:#fff; border:2px solid var(--cartoon-ink); border-radius:50%; background:var(--cartoon-coral); font-size:11px; font-style:normal; font-weight:950; }
.rank-student strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rank-progress { display:grid; grid-template-columns:minmax(50px,1fr) 37px; align-items:center; gap:5px; }
.rank-progress > i { height:9px; overflow:hidden; border:2px solid var(--cartoon-ink); border-radius:99px; background:#e2edf0; }
.rank-progress > i b { display:block; height:100%; background:var(--cartoon-mint); }
.rank-progress em { color:#587685; font-style:normal; font-weight:900; }
.cartoon-empty { padding:16px; color:#678693; text-align:center; }
.time-panel { grid-column:1 / -1; padding:10px 13px; display:grid; grid-template-columns:170px minmax(0,1fr); align-items:stretch; gap:12px; }
.time-panel > header { height:auto; padding-right:12px; border-right:2px dashed #b8d0d8; border-bottom:0; }
.time-summary { min-width:0; display:grid; grid-template-columns:repeat(4,minmax(90px,.58fr)) minmax(310px,1.7fr); align-items:center; gap:9px; }
.time-summary > span { min-width:0; height:74px; padding:9px 11px; display:flex; flex-direction:column; justify-content:center; border:2px solid #c1d5dd; border-radius:12px; background:#f7fbfc; }
.time-summary > span small { color:#668593; font-size:clamp(10px,.61vw,12px); font-weight:800; }
.time-summary > span strong { margin-top:4px; color:var(--cartoon-ink); font-size:clamp(17px,1.08vw,22px); font-weight:950; white-space:nowrap; }
.time-distribution { min-width:0; display:grid; gap:7px; }
.time-distribution > div { height:22px; display:flex; overflow:hidden; border:3px solid var(--cartoon-ink); border-radius:99px; background:#e6eef1; box-shadow:0 3px 0 var(--cartoon-ink); }
.time-bucket { height:100%; min-width:0; background:var(--cartoon-sky); }
.time-bucket.bucket-2 { background:var(--cartoon-blue); }.time-bucket.bucket-3 { background:var(--cartoon-sun); }.time-bucket.bucket-4 { background:var(--cartoon-coral); }
.time-empty-bar { width:100%; background:#e6eef1; }
.time-distribution ul { margin:0; padding:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:5px; list-style:none; }
.time-distribution li { min-width:0; display:grid; grid-template-columns:7px 1fr auto; align-items:center; gap:4px; color:#668593; font-size:clamp(9px,.56vw,11px); font-weight:800; }
.time-distribution li i { width:7px; height:7px; border-radius:50%; background:var(--cartoon-sky); }
.time-distribution li.bucket-2 i { background:var(--cartoon-blue); }.time-distribution li.bucket-3 i { background:var(--cartoon-sun); }.time-distribution li.bucket-4 i { background:var(--cartoon-coral); }
.time-distribution li span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.time-distribution li strong { color:var(--cartoon-ink); font-size:inherit; }
.classroom-stage .classroom-slide-dots { display:none; }
.classroom-stage .classroom-footer { font-size:14px; font-weight:800; }
.classroom-stage .classroom-live-status { color:var(--cartoon-ink); font-weight:900; }
.classroom-stage .classroom-live-status i { background:var(--cartoon-mint); box-shadow:0 0 0 2px var(--cartoon-ink); }
.classroom-stage .classroom-footer button { color:var(--cartoon-ink); border:2px solid var(--cartoon-ink); border-radius:10px; background:#fff; box-shadow:0 3px 0 var(--cartoon-ink); font-weight:900; }
.classroom-stage .classroom-footer .classroom-control.pause { color:var(--cartoon-ink); border-color:var(--cartoon-ink); background:#ffe6a9; }
.classroom-stage .classroom-footer .classroom-control.resume { color:var(--cartoon-ink); border-color:var(--cartoon-ink); background:#ccefe3; }
.classroom-stage .classroom-footer .classroom-control.checkpoint { color:var(--cartoon-ink); border-color:var(--cartoon-ink); background:#fff5d9; }
.classroom-stage .classroom-footer .classroom-control.restore { color:var(--cartoon-ink); border-color:var(--cartoon-ink); background:#dff3f8; }
.classroom-stage .classroom-footer .classroom-control.reset { color:var(--cartoon-ink); border-color:var(--cartoon-ink); background:#ffd7cc; }
.classroom-stage #classroomCloseTask { color:var(--cartoon-ink); border-color:var(--cartoon-ink); background:#ffd7cc; }

@media (max-width:1500px),(max-height:820px) {
  .cartoon-dashboard { grid-template-rows:76px minmax(0,1fr) 104px; gap:8px; }
  .cartoon-stat-strip { gap:8px; }
  .cartoon-stat { padding:7px 11px; grid-template-columns:44px minmax(0,1fr); border-width:2px; border-radius:15px; box-shadow:0 4px 0 var(--cartoon-shadow); }
  .cartoon-stat > span { width:40px; height:40px; border-radius:11px; }
  .cartoon-panel { padding:9px 10px; border-width:2px; border-radius:16px; box-shadow:0 4px 0 var(--cartoon-shadow); }
  .cartoon-panel > header { height:38px; }
  .cartoon-panel > header > span { width:30px; height:30px; }
  .status-donut-wrap,.cartoon-chapters,.cartoon-rank-table { height:calc(100% - 38px); }
  .cartoon-chapter-row { padding-block:2px; }
  .time-panel { padding:8px 10px; grid-template-columns:150px minmax(0,1fr); }
  .time-summary { gap:6px; }
  .time-summary > span { height:66px; padding:6px 8px; }
}
@media (max-width:1120px) {
  .cartoon-dashboard { grid-template-columns:.9fr 1.1fr 1.35fr; }
  .cartoon-stat b,.cartoon-panel > header small { display:none; }
  .time-panel { grid-template-columns:125px minmax(0,1fr); }
  .time-summary { grid-template-columns:repeat(4,minmax(72px,.55fr)) minmax(260px,1.6fr); }
  .status-donut-wrap ul { grid-template-columns:1fr; }
  .status-donut-wrap li { grid-template-columns:8px 1fr auto; }
  .status-donut-wrap li strong { grid-column:auto; }
}

/* 实验目录通用信息样式。 */
.game-after-chapter { display:flex; align-items:center; gap:6px; margin-top:10px; color:#255d78; font-size:13px; font-weight:800; }
.game-after-chapter svg { width:15px; height:15px; }
.launch-console-copy > div:nth-child(3) strong { display:block; margin-top:7px; color:#c8edf5; font-size:14px; }

/* Full-route world guide, grounded in the same ImageGen pixel scenes as the student world. */
.trade-world-guide { --world-ink:#173b54; --world-sky:#91dbe9; min-height:470px; display:grid; grid-template-rows:auto minmax(0,1fr) auto; overflow:hidden; color:var(--world-ink); border:3px solid var(--world-ink); border-radius:18px; background:var(--world-sky); box-shadow:0 8px 0 var(--world-ink),0 18px 34px rgba(23,59,84,.18); }
.trade-world-guide.is-classroom { height:100%; min-height:0; }
.world-guide-head { position:relative; z-index:8; min-height:56px; padding:9px 14px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:12px; border-bottom:3px solid var(--world-ink); background:#fff8dc; }
.world-guide-head > span { display:flex; align-items:center; gap:8px; font-size:.66rem; font-weight:950; letter-spacing:.08em; }
.world-guide-head > span i { width:9px; height:9px; border:2px solid var(--world-ink); background:#62cdb6; box-shadow:2px 2px 0 var(--world-ink); }
.world-guide-head > strong { padding:7px 12px; color:#fff; border:2px solid var(--world-ink); border-radius:8px; background:#225c78; box-shadow:0 3px 0 var(--world-ink); font-size:.8rem; }
.world-guide-head > b { justify-self:end; color:#8a5227; font-size:.65rem; }
.world-guide-full-scene { min-height:0; padding:10px; display:grid; grid-template-rows:minmax(190px,1fr) 122px; gap:10px; background:linear-gradient(145deg,#dff3f8,#bce8f1); }
.world-guide-hero { min-height:0; position:relative; overflow:hidden; border:3px solid var(--world-ink); border-radius:14px; background:#82cbd9; box-shadow:0 4px 0 var(--world-ink); }
.world-guide-hero > img { width:100%; height:100%; display:block; object-fit:cover; object-position:center 58%; image-rendering:auto; }
.world-guide-hero::after { content:""; position:absolute; inset:34% 0 0; background:linear-gradient(transparent,rgba(7,31,45,.91)); pointer-events:none; }
.world-guide-hero > div { position:absolute; z-index:2; left:18px; right:18px; bottom:14px; display:grid; gap:3px; color:#fff; text-shadow:0 2px 0 rgba(7,31,45,.55); }
.world-guide-hero small { font-size:clamp(11px,.66rem,14px); font-weight:800; letter-spacing:.04em; }
.world-guide-hero strong { font-size:clamp(22px,2vw,36px); font-weight:950; line-height:1.08; }
.world-guide-hero span { font-size:clamp(11px,.7rem,15px); font-weight:800; }
.world-guide-chapters { min-height:0; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
.world-guide-chapters article { min-width:0; position:relative; overflow:hidden; border:3px solid var(--world-ink); border-radius:11px; background:#fff8dc; box-shadow:0 3px 0 var(--world-ink); }
.world-guide-chapters article > img { width:100%; height:100%; display:block; object-fit:cover; object-position:center; }
.world-guide-chapters article::after { content:""; position:absolute; inset:35% 0 0; background:linear-gradient(transparent,rgba(7,31,45,.94)); }
.world-guide-chapters article > div { position:absolute; z-index:2; left:7px; right:7px; bottom:6px; display:flex; align-items:end; gap:6px; color:#fff; }
.world-guide-chapters article b { width:25px; height:25px; flex:0 0 auto; display:grid; place-items:center; color:var(--world-ink); border:2px solid #fff; border-radius:7px; background:#ffd36d; box-shadow:0 2px 0 var(--world-ink); font-size:11px; }
.world-guide-chapters article span { min-width:0; display:grid; }
.world-guide-chapters article strong,.world-guide-chapters article small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.world-guide-chapters article strong { font-size:clamp(10px,.62rem,13px); font-weight:950; }
.world-guide-chapters article small { color:#dff3f8; font-size:clamp(9px,.53rem,11px); font-weight:750; }
.world-guide-scene { position:relative; min-height:330px; padding:48px 4% 44px; display:grid; grid-template-columns:minmax(0,1fr) minmax(170px,.55fr) minmax(0,1fr); align-items:end; gap:2.5%; background:linear-gradient(#8dd9e9 0 62%,#78bf83 62% 69%,#d9c28f 69% 100%); }
.world-guide-scene::after { content:""; position:absolute; left:0; right:0; bottom:22px; height:24px; border-top:3px solid var(--world-ink); border-bottom:3px solid var(--world-ink); background:repeating-linear-gradient(90deg,#597888 0 28px,#f4d770 28px 47px); opacity:.92; }
.world-sun { position:absolute; right:7%; top:18px; width:42px; height:42px; border:3px solid var(--world-ink); border-radius:50%; background:#ffd65a; box-shadow:0 0 0 7px rgba(255,214,90,.25); }
.world-cloud { position:absolute; top:24px; width:65px; height:20px; border:3px solid var(--world-ink); border-radius:5px; background:#fff; box-shadow:12px -10px 0 -2px #fff,12px -10px 0 1px var(--world-ink),34px -5px 0 -3px #fff,34px -5px 0 0 var(--world-ink); }
.world-cloud.cloud-a { left:8%; }.world-cloud.cloud-b { left:45%; top:34px; transform:scale(.72); }
.world-office { position:relative; z-index:4; min-width:0; border:3px solid var(--world-ink); border-radius:8px 8px 3px 3px; background:#f5e5b5; box-shadow:8px 8px 0 rgba(23,59,84,.28); }
.world-office-sign { min-height:42px; padding:5px 8px; display:flex; align-items:center; gap:8px; color:#fff; border-bottom:3px solid var(--world-ink); background:#28779a; }
.seller-office .world-office-sign { background:#c75d45; }
.world-office-sign > b { width:25px; height:25px; display:grid; place-items:center; color:var(--world-ink); border:2px solid var(--world-ink); border-radius:5px; background:#ffd85e; box-shadow:2px 2px 0 var(--world-ink); font-size:.72rem; }
.world-office-sign span,.world-office-sign small { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.world-office-sign span { min-width:0; font-size:.67rem; font-weight:950; }.world-office-sign small { margin-top:1px; color:#dff6fb; font-size:.5rem; }
.world-room { position:relative; height:130px; overflow:hidden; background:linear-gradient(90deg,rgba(255,255,255,.18) 50%,transparent 50%),linear-gradient(#f1d992 0 68%,#b67b4c 68%); background-size:24px 24px,auto; }
.world-room::after { content:""; position:absolute; left:0; right:0; bottom:38px; height:3px; background:var(--world-ink); opacity:.45; }
.world-window { position:absolute; left:9%; top:14px; width:44px; height:37px; border:3px solid var(--world-ink); background:linear-gradient(135deg,#bfeff6 0 46%,#fff 47% 54%,#8bd5e7 55%); box-shadow:inset 0 0 0 3px #fff; }
.world-board,.world-cabinet { position:absolute; right:7%; top:14px; min-width:43px; height:39px; padding:4px; box-sizing:border-box; display:grid; place-items:center; border:3px solid var(--world-ink); background:#fff4c8; font-size:.47rem; font-style:normal; font-weight:950; }
.world-cabinet { width:37px; min-width:0; height:61px; background:#83b889; }
.world-phone { position:absolute; right:15%; bottom:40px; width:21px; height:13px; border:3px solid var(--world-ink); border-radius:8px 8px 3px 3px; background:#ef6f61; }
.world-phone::before { content:""; position:absolute; left:2px; right:2px; top:-8px; height:6px; border:3px solid var(--world-ink); border-bottom:0; border-radius:6px 6px 0 0; }
.world-computer { position:absolute; right:21%; bottom:43px; width:29px; height:23px; border:3px solid var(--world-ink); background:#bfe8ed; box-shadow:0 8px 0 -3px var(--world-ink); }
.world-desk { position:absolute; right:7%; bottom:18px; width:74px; height:25px; border:3px solid var(--world-ink); background:#d98a48; box-shadow:8px 12px 0 -5px var(--world-ink),-48px 12px 0 -5px var(--world-ink); }
.world-avatar { position:absolute; left:43%; bottom:20px; width:28px; height:43px; border:3px solid var(--world-ink); border-radius:5px 5px 2px 2px; background:#467eb5; box-shadow:0 4px 0 var(--world-ink); }
.world-avatar::before { content:""; position:absolute; left:3px; top:-25px; width:20px; height:20px; border:3px solid var(--world-ink); border-radius:4px; background:#f1bc83; box-shadow:0 -6px 0 -1px #513d39; }
.seller-avatar { background:#df7657; }.world-avatar b { position:absolute; left:5px; bottom:-11px; width:5px; height:9px; border-left:5px solid var(--world-ink); border-right:5px solid var(--world-ink); }
.world-office > footer { min-height:38px; padding:5px; display:flex; justify-content:center; flex-wrap:wrap; gap:4px; border-top:3px solid var(--world-ink); background:#fff8dc; }
.world-office > footer span { padding:4px 6px; border:1px solid #688394; border-radius:4px; background:#fff; font-size:.48rem; font-weight:900; white-space:nowrap; }
.world-handoff { position:relative; z-index:5; align-self:center; display:grid; grid-template-columns:1fr 14px 1fr 14px 1fr 14px 1fr; align-items:center; gap:2px; }
.world-handoff span { min-width:0; padding:6px 2px; text-align:center; color:#fff; border:2px solid var(--world-ink); border-radius:5px; background:#225c78; font-size:.48rem; font-weight:950; box-shadow:0 3px 0 var(--world-ink); }
.world-handoff span:last-child { color:var(--world-ink); background:#ffd75d; }
.world-handoff i { height:3px; background:var(--world-ink); }.world-handoff i::after { content:""; float:right; margin-top:-3px; border:4px solid transparent; border-left-color:var(--world-ink); }
.world-port-strip { position:absolute; z-index:2; left:0; right:0; bottom:0; height:44px; background:#65b9cf; }
.world-port-strip i { position:absolute; left:7%; bottom:9px; width:54px; height:18px; border:3px solid var(--world-ink); background:#ef7b58; clip-path:polygon(0 35%,78% 35%,88% 0,100% 0,92% 100%,8% 100%); }
.world-port-strip b { position:absolute; left:13%; bottom:27px; width:3px; height:22px; background:var(--world-ink); }.world-port-strip b::after { content:""; position:absolute; left:3px; width:22px; height:12px; background:#fff; clip-path:polygon(0 0,100% 50%,0 100%); }
.world-port-strip span,.world-port-strip em { position:absolute; bottom:10px; width:25px; height:7px; background:#e8f7fa; opacity:.7; }.world-port-strip span { left:27%; }.world-port-strip em { right:19%; }
.world-guide-rules { position:relative; z-index:8; min-height:54px; padding:8px 12px; display:grid; grid-template-columns:repeat(4,1fr); gap:7px; border-top:3px solid var(--world-ink); background:#fff8dc; }
.world-guide-rules span { min-width:0; display:flex; align-items:center; gap:7px; font-size:.58rem; font-weight:900; }
.world-guide-rules b { flex:0 0 auto; width:24px; height:24px; display:grid; place-items:center; color:#fff; border:2px solid var(--world-ink); border-radius:5px; background:#28779a; box-shadow:2px 2px 0 var(--world-ink); }
.world-guide-controls { justify-content:space-between; }.world-guide-controls > span { display:flex; align-items:center; gap:7px; color:#2d7c67; font-size:.68rem; font-weight:950; }.world-guide-controls > span i { width:9px; height:9px; border-radius:50%; background:#55c49c; box-shadow:0 0 0 4px rgba(85,196,156,.15); }
.classroom-stage .trade-world-guide { border-radius:14px; box-shadow:0 6px 0 var(--world-ink); }
.classroom-stage .classroom-intro { background:#bcebf2; }
.classroom-stage .classroom-skip { color:#173b54; border:3px solid #173b54; background:#ffd75d; box-shadow:0 5px 0 #173b54; }
@media (max-width:1100px),(max-height:690px) {
  .world-guide-head { min-height:46px; padding:6px 10px; grid-template-columns:1fr auto; }.world-guide-head > b { display:none; }
  .world-guide-full-scene { padding:7px; grid-template-rows:minmax(165px,1fr) 102px; gap:7px; }
  .world-guide-hero > div { left:13px; right:13px; bottom:10px; }
  .world-guide-chapters { gap:6px; }
  .world-guide-chapters article { border-width:2px; }
  .world-guide-scene { min-height:260px; padding-top:38px; }.world-room { height:96px; }.world-office-sign { min-height:36px; }
  .world-guide-rules { min-height:43px; padding:5px 8px; }.world-guide-rules span { font-size:.5rem; }.world-guide-rules b { width:20px; height:20px; }
}
