@font-face {
  font-family: "Instructor Nerd Symbol";
  src: url("/assets/fonts/instructor-symbol.ttf") format("truetype");
  font-display: block;
  font-style: normal;
  font-weight: 400;
}

@font-face {
  font-family: "Project Nerd Icons";
  src: url("/assets/fonts/project-nerd-icons.ttf") format("truetype");
  font-display: block;
  font-style: normal;
  font-weight: 400;
}

@font-face {
  font-family: "Choko Milky";
  src: url("/assets/fonts/ChokoMilky-gx8gR.otf") format("opentype");
  font-display: swap;
  font-style: normal;
  font-weight: 400;
}

@font-face {
  font-family: "DS Digital";
  src: url("/assets/fonts/Digital/DS-DIGIB.TTF") format("truetype");
  font-display: swap;
  font-style: normal;
  font-weight: 700;
}

:root {
  color-scheme: light;
  --ink: #172033;
  --muted: #637083;
  --paper: #ffffff;
  --canvas: #eef3f8;
  --line: #cbd5e1;
  --wall: #253047;
  --accent: #3157d5;
  --accent-dark: #2342aa;
  --success: #16794a;
  --success-bg: #e8f7ef;
  --danger: #b42318;
  --danger-bg: #fff0ee;
  --warning: #8a4b08;
  --warning-bg: #fff6df;
  --radius: 16px;
  --shadow: 0 12px 30px rgba(25, 40, 65, 0.1);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  min-width: 320px;
  min-height: 100vh;
  color: var(--ink);
  background: var(--canvas);
}

button, textarea { font: inherit; }

button:focus-visible, textarea:focus-visible {
  outline: 3px solid rgba(49, 87, 213, 0.35);
  outline-offset: 2px;
}

.site-header {
  min-height: 76px;
  padding: 14px clamp(20px, 4vw, 56px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  color: white;
  background: #18223a;
}

.site-header h1, .code-heading h2, .mission-heading h2 { margin: 0; }
.site-header h1 { font-size: clamp(1.35rem, 2vw, 1.8rem); }

.eyebrow, .mission-progress {
  margin: 0 0 3px;
  color: #70809a;
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.site-header .eyebrow { color: #aebbd0; }

.instructor-name {
  display: inline-block;
  margin-left: 0.55rem;
  color: #f7b8d2;
  font-family: "Choko Milky", "Segoe Script", "Brush Script MT", cursive;
  font-size: 1.5rem;
  font-weight: 400;
  letter-spacing: 0.02em;
  text-transform: none;
  transform: rotate(-1deg);
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.12);
}

.instructor-symbol {
  font-family: "Instructor Nerd Symbol";
  font-size: 0.9em;
  font-style: normal;
  font-weight: 400;
}

.lesson-chip, .mission-badge {
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 750;
  white-space: nowrap;
}

.lesson-chip {
  padding: 8px 12px;
  color: #dce6ff;
  background: rgba(255, 255, 255, 0.1);
}

.app-shell {
  width: min(1440px, calc(100% - 32px));
  margin: 24px auto;
  display: grid;
  grid-template-columns: minmax(390px, 0.9fr) minmax(450px, 1.1fr) minmax(190px, 0.42fr);
  gap: 20px;
  align-items: stretch;
}

.mission-panel, .code-panel, .progress-panel {
  padding: clamp(18px, 2.5vw, 28px);
  background: var(--paper);
  border: 1px solid #dce3ec;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.mission-heading, .code-heading, .console-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
}

.mission-heading h2, .code-heading h2 { font-size: clamp(1.25rem, 2vw, 1.65rem); }

.mission-badge {
  padding: 7px 11px;
  color: var(--accent-dark);
  background: #e9eeff;
}

.objective {
  margin: 16px 0;
  padding: 12px 14px;
  display: grid;
  gap: 3px;
  border-left: 4px solid var(--accent);
  background: #f4f7ff;
  border-radius: 8px;
  font-size: 0.9rem;
}

.objective span { color: var(--muted); }

.maze {
  --maze-columns: 7;
  width: min(100%, 500px);
  aspect-ratio: var(--maze-columns) / var(--maze-rows, 6);
  margin: 18px auto;
  display: grid;
  position: relative;
  grid-template-columns: repeat(var(--maze-columns), minmax(0, 1fr));
  grid-template-rows: repeat(var(--maze-rows, 6), minmax(0, 1fr));
  border: 3px solid var(--wall);
  background: var(--line);
}

.maze-stage { position: relative; }

.speech-bubble {
  position: absolute;
  z-index: 8;
  max-width: min(86%, 360px);
  padding: 9px 12px;
  color: #172033;
  background: white;
  border: 2px solid #3157d5;
  border-radius: 12px;
  box-shadow: 0 5px 16px rgba(23, 32, 51, 0.2);
  font-size: 0.83rem;
  transform: translate(-50%, calc(-100% - 14px));
  white-space: pre-line;
  pointer-events: none;
}

.speech-bubble::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -8px;
  width: 12px;
  height: 12px;
  background: white;
  border-right: 2px solid #3157d5;
  border-bottom: 2px solid #3157d5;
  transform: translateX(-50%) rotate(45deg);
}

.maze-cell {
  position: relative;
  display: grid;
  place-items: center;
  min-width: 0;
  border: 1px solid var(--line);
  background: #fbfcfe;
  overflow: hidden;
}

.maze-cell.wall { background: var(--wall); border-color: #36415a; }
.maze-cell.goal { background: #fff8d8; }
.maze-cell.trail::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 13%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: #b8c5dd;
  transform: translate(-50%, -50%);
}

.cell-icon {
  position: absolute;
  z-index: 2;
  font-size: clamp(1.15rem, 2.5vw, 1.65rem);
  line-height: 1;
  filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.18));
}

.cell-icon.game-object { right: 7%; bottom: 7%; }

.cell-label {
  position: absolute;
  right: 3px;
  bottom: 1px;
  z-index: 3;
  color: #172033;
  font-size: clamp(0.55rem, 1.2vw, 0.72rem);
  font-weight: 900;
  -webkit-text-stroke: 2px white;
  paint-order: stroke fill;
  text-shadow: 0 0 2px white;
}

.robot {
  position: absolute;
  z-index: 6;
  font-size: clamp(1.15rem, 2.5vw, 1.65rem);
  line-height: 1;
  pointer-events: none;
  filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.18));
  transform: translate(-50%, -50%);
  transition: left 260ms ease, top 260ms ease;
  will-change: left, top;
}
.robot.no-transition { transition: none; }
.robot.bump { animation: bump 280ms ease; }

@keyframes bump {
  35% { transform: translate(-50%, -50%) scale(0.78) rotate(-9deg); }
  70% { transform: translate(-50%, -50%) scale(1.08) rotate(5deg); }
}

.legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px 20px;
  color: var(--muted);
  font-size: 0.82rem;
}

.legend > span { display: flex; align-items: center; gap: 6px; }
.legend-icon { font-size: 1rem; }
.wall-swatch { width: 16px; height: 16px; border-radius: 3px; background: var(--wall); }

.hint-box {
  margin-top: 16px;
  padding: 10px 12px;
  color: #435069;
  background: #f3f6fa;
  border-radius: 8px;
  font-size: 0.88rem;
  line-height: 1.45;
}
.hint-box ul { margin: 7px 0 0; padding-left: 21px; }
.hint-box li + li { margin-top: 5px; }

.mission-nav { margin-top: 18px; display: flex; justify-content: space-between; gap: 12px; }

.command-reference {
  margin: 20px 0 14px;
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

code {
  padding: 0.1em 0.35em;
  color: #263b77;
  background: #edf1fb;
  border-radius: 4px;
  font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}

.command-reference code { padding: 6px 9px; font-size: 0.8rem; }
.editor-wrap {
  min-height: 290px;
  display: grid;
  grid-template-columns: 44px 1fr;
  overflow: hidden;
  border: 1px solid #2f3b55;
  border-radius: 10px;
  background: #121a2b;
}

.line-numbers, #code-editor {
  padding: 15px 12px;
  color: #e8edf8;
  font: 15px/1.65 "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}

.line-numbers {
  color: #748099;
  text-align: right;
  white-space: pre;
  background: #182238;
  user-select: none;
}

.editor-canvas {
  position: relative;
  min-width: 0;
  min-height: 290px;
  overflow: hidden;
}

.indentation-guides {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  color: transparent;
  font: 15px/1.65 "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}

.indent-guide {
  position: absolute;
  height: 24.75px;
  border-left: 1px solid rgba(151, 170, 207, 0.28);
  transform: translate(var(--editor-scroll-left, 0px), var(--editor-scroll-top, 0px));
}

#code-editor {
  position: relative;
  z-index: 1;
  width: 100%;
  min-height: 290px;
  resize: vertical;
  border: 0;
  outline: 0;
  background: transparent;
  tab-size: 4;
}

#code-editor:disabled { opacity: 0.7; cursor: wait; }
.editor-help { margin: 7px 0 14px; display: flex; align-items: center; flex-wrap: wrap; gap: 5px; color: var(--muted); font-size: 0.78rem; }
.movement-icon { position: relative; width: 22px; height: 22px; display: inline-grid; place-items: center; color: var(--accent-dark); font-size: 1.15rem; font-weight: 900; }
.movement-icon span { position: absolute; line-height: 1; }

.actions { display: flex; align-items: center; gap: 14px; }
.actions span { color: var(--muted); font-size: 0.78rem; }

.button {
  min-height: 40px;
  padding: 9px 14px;
  border: 0;
  border-radius: 9px;
  font-weight: 750;
  cursor: pointer;
  transition: transform 120ms ease, background 120ms ease, opacity 120ms ease;
}

.button:hover:not(:disabled) { transform: translateY(-1px); }
.button:disabled { opacity: 0.42; cursor: not-allowed; }
.button-primary { color: white; background: var(--accent); }
.button-primary:hover:not(:disabled) { background: var(--accent-dark); }
.button-secondary { color: var(--ink); background: #e9eef5; }
.button-danger { color: white; background: var(--danger); }
.python-input-dialog { width: min(430px, calc(100% - 32px)); padding: 0; border: 0; border-radius: 14px; box-shadow: 0 18px 50px rgba(23,32,51,.28); }
.python-input-dialog::backdrop { background: rgba(23,32,51,.48); }
.python-input-dialog form { padding: 22px; display: grid; gap: 14px; }
.python-input-dialog label { font-weight: 800; white-space: pre-wrap; }
.python-input-dialog input { width: 100%; padding: 11px 12px; border: 1px solid #aeb9c8; border-radius: 8px; font: inherit; }
.dialog-actions { display: flex; justify-content: flex-end; gap: 8px; }
.console, .memory-panel {
  min-height: 130px;
  margin-top: 18px;
  padding: 14px;
  border: 1px solid #dce3ec;
  border-radius: 10px;
  background: #f8fafc;
}

.learning-panels { display: grid; grid-template-columns: minmax(160px, 0.7fr) minmax(230px, 1.3fr); gap: 12px; }
.panel-heading { min-height: 26px; display: flex; align-items: center; justify-content: space-between; }
.memory-panel h3 { margin: 0; font-size: 0.92rem; }
.memory-output { margin: 10px 0 0; font: 0.8rem/1.55 "SFMono-Regular", Consolas, monospace; }
.memory-output > div:not(.empty-state) { display: grid; grid-template-columns: auto 14px 1fr; gap: 5px; }
.memory-output dt, .memory-output dd { margin: 0; overflow-wrap: anywhere; }
.memory-output dd.string-value { color: #16794a; }
.empty-state { color: #8792a5; font-family: Inter, sans-serif; }

.progress-panel { align-self: start; }
.progress-panel h2 { margin: 0 0 14px; font-size: 1.1rem; }
.progress-list { margin: 0; padding: 0; list-style: none; display: grid; gap: 9px; }
.progress-list button { width: 100%; padding: 8px; display: flex; justify-content: space-between; gap: 8px; border: 0; border-radius: 7px; color: var(--ink); background: #f1f4f8; text-align: left; cursor: pointer; }
.progress-list button.current { color: var(--accent-dark); background: #e7edff; font-weight: 750; }
.progress-score { padding-top: 12px; border-top: 1px solid #dce3ec; font-weight: 850; }
.progress-panel .button { width: 100%; }
.progress-panel .mission-nav .button { width: auto; flex: 1; }
.progress-panel .mission-nav { font-size: .5em; }

.header-actions { display: flex; align-items: center; gap: 8px; }
.assignment-chip { padding: 7px 10px; border-radius: 999px; color: #dce6ff; background: rgba(255,255,255,.1); font-size: .75rem; }
.nav-button { display: inline-flex; align-items: center; gap: 6px; padding: 8px 11px; border: 0; border-radius: 8px; color: #dce6ff; background: transparent; font-weight: 750; cursor: pointer; }
.nav-button.active { color: white; background: rgba(255,255,255,.16); }
.nav-link { text-decoration: none; }
.view-tabs { display: inline-flex; gap: 2px; padding: 3px; border: 1px solid rgba(255,255,255,.24); border-radius: 10px; background: rgba(12,23,43,.3); }
.view-toggle { border-radius: 7px; background: transparent; }
.view-toggle:hover:not(.active) { background: rgba(255,255,255,.12); }
.view-toggle.active { color: #172033; background: white; box-shadow: 0 2px 7px rgba(0,0,0,.18); }

.course-view { width: min(1180px, calc(100% - 32px)); margin: 34px auto; }
.week-status-message { margin: 0 2px 12px; color: var(--muted); font-size: .86rem; }
.week-status-message:empty { display: none; }
.week-grid { margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 14px; list-style: none; }
.week-card { min-height: 190px; padding: 20px; display: flex; flex-direction: column; border: 1px solid #dce3ec; border-radius: 13px; background: white; box-shadow: 0 5px 16px rgba(25, 40, 65, .06); }
.week-card h3 { margin: 0 0 9px; color: var(--accent-dark); font-size: 1.2rem; }
.week-card p { margin: 0 0 16px; color: var(--ink); line-height: 1.5; }
.week-state { margin-top: auto; color: var(--muted); font-size: .82rem; font-weight: 750; }
.week-state.submission-open { color: var(--success); }
.week-state.submission-closed { color: var(--danger); }
.week-deadline, .week-countdown { display: block; margin-top: 5px; color: var(--muted); font-size: .76rem; }
.week-countdown { margin-top: 2px; font-weight: 750; }
.week-card.week-open { border-color: #7ccca5; background: #f8fffb; }
.week-card.week-locked {
  border-color: #d5dae2;
  background: #e7e9ed;
  box-shadow: none;
  opacity: .7;
}
.week-card.week-locked h3,
.week-card.week-locked p { color: #697386; }
.week-link { margin-top: 13px; text-align: center; text-decoration: none; }
.project-hub-card { grid-column: span 2; min-height: 190px; padding: 20px; border: 1px solid #efb5ca; border-radius: 13px; background: linear-gradient(135deg, #fff 0 64%, #fff0f6 64%); box-shadow: 0 5px 16px rgba(25, 40, 65, .06); }
.project-hub-card h3 { margin: 0 0 9px; color: var(--accent-dark); font-size: 1.2rem; }
.project-hub-card p { margin: 0; color: var(--ink); line-height: 1.5; }
.project-hub-links { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 18px; }
.project-hub-link { display: inline-flex; align-items: center; gap: 7px; text-decoration: none; }
.course-nerd-icon { font-family: "Project Nerd Icons"; font-style: normal; font-weight: 400; line-height: 1; }

.submission-view { width: min(720px, calc(100% - 28px)); margin: 28px auto; }
.submission-card { padding: clamp(22px, 4vw, 38px); background: white; border: 1px solid #dce3ec; border-radius: var(--radius); box-shadow: var(--shadow); }
.submission-card h2 { margin: 2px 0 18px; font-size: 1.7rem; }
.back-link { margin: 0 0 22px; padding: 0; border: 0; color: var(--accent); background: transparent; font-weight: 750; cursor: pointer; }
.assignment-details { padding: 12px 14px; border-radius: 9px; background: #f3f6fa; line-height: 1.55; }
.submission-score { margin: 18px 0; padding: 15px; display: grid; grid-template-columns: 1fr auto; gap: 8px; border: 1px solid #dce3ec; border-radius: 10px; }
.submission-score strong { font-size: 1.1rem; }
#submission-form { display: grid; gap: 14px; }
#submission-form label { display: grid; gap: 6px; font-size: .86rem; font-weight: 750; }
#submission-form input, #submission-form select { width: 100%; padding: 10px 11px; border: 1px solid #b9c4d2; border-radius: 8px; background: white; }
.submit-button { width: 100%; }
.submission-result { margin-top: 15px; padding: 0; line-height: 1.55; }
.submission-result.success, .submission-result.error { padding: 13px; border-radius: 8px; }
.submission-result.success { color: var(--success); background: var(--success-bg); }
.submission-result.error { color: var(--danger); background: var(--danger-bg); }
.console-heading { align-items: center; }
.console h3 { margin: 0; font-size: 0.92rem; }
.console-output { margin: 10px 0 0; padding-left: 0; list-style: none; color: #435069; font: 0.82rem/1.55 "SFMono-Regular", Consolas, monospace; }
.console-output:empty::before { content: "Output ของโปรแกรมจะแสดงที่นี่"; color: #8792a5; font-family: Inter, sans-serif; }
.console-output li + li { margin-top: 3px; }
.console-output .error { color: var(--danger); }
.console-output .success { color: var(--success); font-weight: 700; }
.console-output .active { color: var(--accent-dark); font-weight: 700; }

/* Week 4 — Robot Decision Routes */
body[data-week="4"]{--accent:#6b4c84;--accent-dark:#4f3565;--canvas:#f2edf5}
body[data-week="4"] .mission-panel{background:linear-gradient(180deg,#fff,#fbf8fd);border-color:#dacde3}
body[data-week="4"] .mission-badge{color:#4f3565;background:#eee4f4}
body[data-week="4"] .objective{border-left-color:#6b4c84;background:#f5eff8}
body[data-week="4"] .maze{border-color:#4b3b59;background:#cbbbd5;box-shadow:0 12px 28px #4f356526}
body[data-week="4"] .maze-cell{border-color:#d9cee0;background:#fffdf8}
body[data-week="4"] .maze-cell.wall{border-color:#46394f;background:#372f40}
body[data-week="4"] .cell-icon.game-object{right:8%;bottom:8%;font-size:clamp(1.35rem,3vw,2rem)}
body[data-week="4"] .cell-label{top:2px;right:3px;bottom:auto;max-width:92%;color:#4b335f;font-size:clamp(.46rem,.9vw,.63rem);text-align:right;-webkit-text-stroke:2px #fff;paint-order:stroke fill}
body[data-week="4"] .hint-box{border-color:#d7c5e2;background:#fbf7fd}
body[data-week="4"] .console-output li{padding:3px 6px;border-left:3px solid transparent;border-radius:4px;color:#778092;white-space:pre-wrap;transition:color .18s,background .18s,border-color .18s}
body[data-week="4"] .console-output li.executed{border-left-color:#6b4c84;background:#f2eaf7;color:#3c2e47}
body[data-week="4"] .console-output li.active{border-left-color:#249163;background:#e8f7ef;color:#145d3f;box-shadow:inset 0 0 0 1px #bde7d2}
body[data-week="4"] .memory-panel{border-color:#d8c9e1;background:#fcf9fd}
body[data-week="4"] .command-reference code{border-color:#d5c3df;background:#f5eef8;color:#513a62}
body[data-week="4"] .speech-bubble{border-color:#6b4c84}
body[data-week="4"] .speech-bubble::after{border-right-color:#6b4c84;border-bottom-color:#6b4c84}
@media(max-width:900px){body[data-week="4"] .app-shell{width:min(720px,calc(100% - 24px))}}

.status-pill { padding: 5px 9px; border-radius: 999px; font-size: 0.72rem; font-weight: 800; }
.status-ready { color: #536176; background: #e8edf3; }
.status-running { color: var(--accent-dark); background: #e5ebff; }
.status-success { color: var(--success); background: var(--success-bg); }
.status-error { color: var(--danger); background: var(--danger-bg); }

@media (max-width: 900px) {
  .app-shell { grid-template-columns: 1fr; width: min(680px, calc(100% - 24px)); }
}

@media (min-width: 901px) and (max-width: 1180px) {
  .app-shell { grid-template-columns: minmax(380px, .9fr) minmax(450px, 1.1fr); }
  .progress-panel { grid-column: 1 / -1; }
  .progress-list { grid-template-columns: repeat(5, 1fr); }
}

@media (max-width: 520px) {
  .site-header { align-items: flex-start; }
  .lesson-chip { display: none; }
  .assignment-chip { display: none; }
  .site-header { flex-direction: column; }
  .header-actions { width: 100%; }
  .course-view { width: min(100% - 24px, 680px); margin-top: 18px; }
  .project-hub-card { grid-column: auto; }
  .project-hub-links { display: grid; }
  .app-shell { margin-top: 12px; }
  .mission-panel, .code-panel { padding: 16px; border-radius: 12px; }
  .editor-wrap, #code-editor { min-height: 230px; }
  .actions { align-items: stretch; flex-direction: column; }
  .button-primary { width: 100%; }
  .learning-panels { grid-template-columns: 1fr; }
  .progress-list { grid-template-columns: 1fr; }
}

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

/* Week 2 · Data Core Defense */
.week2-view{padding:18px;min-height:calc(100vh - 88px);background:radial-gradient(circle at 50% 20%,#162d4f 0,#091426 55%,#050b16 100%);color:#eaf4ff}.w2-shell{max-width:1500px;margin:auto;display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:14px}.w2-hud{grid-column:1/-1;display:grid;grid-template-columns:1.2fr 1fr 1.5fr auto;gap:16px;align-items:center;padding:14px 18px;border:1px solid #31547c;background:#0b1b31;border-radius:14px;box-shadow:0 0 26px #16a8ff1c}.w2-hud h2,.w2-hud p{margin:2px 0}.w2-completed{display:inline-block;margin-top:5px;color:#75f3b0}.integrity{display:grid;grid-template-columns:1fr auto;gap:5px 10px;align-items:center}.integrity strong{font-size:.74rem;letter-spacing:.08em}.integrity-track{height:13px;background:#24364d;border:1px solid #4c6686;border-radius:9px;overflow:hidden}.integrity-track span{display:block;height:100%;width:100%;background:linear-gradient(90deg,#22d77b,#b6f13c);transition:width .25s}.w2-metrics{display:flex;margin:0;gap:6px}.w2-metrics div{min-width:58px;padding:6px;text-align:center;background:#122944;border-radius:7px}.w2-metrics dt{font-size:.62rem;color:#9ab1ce}.w2-metrics dd{margin:2px 0 0;font-weight:800}.w2-legend{display:grid;gap:4px;font-size:.68rem}.w2-legend span{padding:4px 7px;border-radius:5px;font-weight:900}.w2-legend small{font-weight:500}.category-memory{background:#126744;color:#d9ffeb}.category-type{background:#6337a3;color:#f1e4ff}.category-result{background:#165eae;color:#e5f2ff}.battlefield{position:relative;height:min(64vh,650px);min-height:480px;overflow:hidden;border:1px solid #32577e;border-radius:16px;background:linear-gradient(#06101fdd,#0b203be8),repeating-linear-gradient(90deg,transparent 0 24.8%,#3f71921a 25%);box-shadow:inset 0 0 55px #02101f,0 10px 32px #0006}.battlefield:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 28px,#58c8ff0a 29px);pointer-events:none}.data-stream{position:absolute;inset:0 0 120px}.data-threat{--fall:2%;--lane:0;position:absolute;z-index:3;top:calc(var(--fall) - 10px);left:calc(4% + var(--lane) * 31%);width:min(29%,310px);min-width:220px;padding:9px;text-align:left;color:#eef8ff;background:#10233aee;border:2px solid #3178a9;border-radius:9px;box-shadow:0 0 18px #31a8ff33;transform:translateY(-50%);transition:top .08s linear,filter .15s,box-shadow .15s;cursor:pointer}.data-threat.selected{filter:brightness(1.2);box-shadow:0 0 0 3px #fff,0 0 28px #66c9ff}.data-threat.category-memory{border-color:#32d487}.data-threat.category-type{border-color:#b173ff}.data-threat.category-result{border-color:#4ba3ff}.threat-badge{display:inline-block;padding:3px 7px;border-radius:4px;font-size:.68rem;font-weight:900}.category-memory .threat-badge{background:#126744}.category-type .threat-badge{background:#6337a3}.category-result .threat-badge{background:#165eae}.data-threat pre{margin:6px 0;padding:6px;max-height:84px;overflow:hidden;color:#dff4ff;background:#071320;border-radius:5px;font:600 .72rem/1.3 ui-monospace,monospace;white-space:pre-wrap}.threat-question{display:block;font-size:.78rem}.data-threat small{display:block;margin-top:3px;color:#a8bdd3;font-size:.64rem}.threat-input{margin:3px 0;color:#ffd76b;font-size:.68rem}.data-core{position:absolute;z-index:2;bottom:22px;left:50%;transform:translateX(-50%);display:grid;place-items:center;width:190px;height:72px;border:2px solid #2ee7ff;border-radius:50%;background:#0e5b7b;box-shadow:0 0 35px #2ee7ff88,inset 0 0 22px #061524;color:#d9fbff}.data-core span{font-size:.58rem;letter-spacing:.3em}.robot-cannon{position:absolute;z-index:4;bottom:20px;left:13%;font-size:2.5rem}.robot-cannon i{display:block;margin:-8px auto 0;width:10px;height:42px;border-radius:8px;background:#7be7ff;transform:rotate(20deg);transform-origin:bottom;box-shadow:0 0 10px #38dfff}.battlefield.laser-hit:after{content:"";position:absolute;z-index:5;bottom:78px;left:13%;width:5px;height:70%;background:#80f7ff;box-shadow:0 0 14px #30eaff;transform-origin:bottom;animation:laser .35s ease-out forwards}.core-impact{animation:core-impact .5s}.w2-feedback{position:absolute;z-index:8;bottom:105px;left:50%;transform:translateX(-50%);max-width:80%;padding:8px 14px;border-radius:8px;white-space:pre-line;font-size:.82rem}.w2-feedback.wrong{background:#7d2334;color:#fff}.w2-feedback.info{background:#174d70;color:#dff8ff}.w2-overlay{position:absolute;z-index:10;inset:25% 20%;display:grid;place-content:center;text-align:center;padding:22px;background:#081729ee;border:2px solid #43c8ff;border-radius:16px}.w2-overlay[hidden]{display:none}.w2-controls{display:grid;grid-template-columns:1.3fr 1fr auto auto;gap:10px;align-items:end;padding:12px;background:#0d2038;border:1px solid #31547c;border-radius:12px}.w2-controls label{display:grid;gap:4px;font-size:.72rem}.w2-controls input{padding:11px;border:2px solid #3c86ba;border-radius:8px;background:#071523;color:#fff;font:700 1rem ui-monospace,monospace}.selected-label{display:block;color:#6fcfff;font-size:.62rem;font-weight:900}.fire-button{background:#0879b9;box-shadow:0 0 16px #26bdff55}.w2-progress{grid-row:2/4;grid-column:2;display:flex;flex-direction:column;gap:12px;padding:14px;color:#1b2b42;background:#fff;border-radius:14px}.w2-progress>div{display:flex;gap:5px}.w2-progress .button{font-size:.62rem;padding:7px}.w2-debug{grid-column:1/-1;padding:10px;color:#b8ffc9;background:#04120a;white-space:pre-wrap}.w2-submission{grid-column:1/-1;padding:20px;color:#17243b;background:#fff;border-radius:14px}.w2-submission form{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:12px;align-items:end}.w2-submission label{display:grid;gap:5px}.w2-submission input,.w2-submission select{padding:9px;border:1px solid #aab7c8;border-radius:7px}.w2-submission[hidden]{display:none}@keyframes laser{0%{opacity:1;transform:scaleY(0)}60%{opacity:1;transform:scaleY(1)}100%{opacity:0;transform:scaleY(1)}}@keyframes core-impact{50%{filter:brightness(2);box-shadow:0 0 70px #ff456c}}
@media(max-width:1100px){.w2-shell{grid-template-columns:1fr}.w2-hud{grid-template-columns:1fr 1fr}.w2-progress{grid-column:1;grid-row:auto}.w2-progress .progress-list{display:grid;grid-template-columns:repeat(5,1fr)}.w2-progress>div{justify-content:center}.data-threat{width:42%;left:calc(4% + var(--lane) * 48%)}}
@media(max-width:720px){.week2-view{padding:8px}.w2-hud{grid-template-columns:1fr}.battlefield{min-height:540px}.data-threat{width:90%;left:5%;min-width:0}.w2-controls{grid-template-columns:1fr 1fr}.w2-submission form{grid-template-columns:1fr}.w2-metrics{overflow:auto}.w2-progress .progress-list{grid-template-columns:1fr}}

.battlefield.laser-hit:after{height:var(--laser-height,70%)}
@keyframes laser{0%{opacity:1;transform:rotate(var(--laser-angle,0deg)) scaleY(0)}60%{opacity:1;transform:rotate(var(--laser-angle,0deg)) scaleY(1)}100%{opacity:0;transform:rotate(var(--laser-angle,0deg)) scaleY(1)}}

/* Week 2 service-queue theme */
.energy-summary{display:grid;gap:3px}.energy-summary strong{letter-spacing:.08em;color:#8eeaff}.energy-summary span{font-size:.72rem;color:#aebfd3}.service-room{position:relative;min-height:540px;display:grid;grid-template-columns:190px minmax(420px,1fr) 250px;gap:24px;align-items:center;padding:34px;border:1px solid #32577e;border-radius:16px;background:linear-gradient(180deg,#102b48,#081727);box-shadow:inset 0 0 55px #02101f,0 10px 32px #0006;overflow:hidden}.service-room:before{content:"";position:absolute;inset:0;background:linear-gradient(transparent 78%,#194366 79%,#102b43 100%),repeating-linear-gradient(90deg,transparent 0 49px,#65cfff0a 50px);pointer-events:none}.robot-station,.question-station,.customer-line{position:relative;z-index:2}.robot-station{align-self:end;display:grid;justify-items:center;padding-bottom:26px}.robot-energy{display:flex;justify-content:center;gap:1px;min-height:32px;font-size:1.35rem;filter:drop-shadow(0 0 5px #42f5a7)}.robot-station>strong{margin-bottom:8px;font-size:.72rem;color:#aefbd3}.robot-emoji{font-size:5rem;line-height:1}.robot-label{margin-top:7px;padding:4px 8px;border-radius:5px;background:#0d5878;color:#dff9ff;font-size:.66rem;font-weight:900;letter-spacing:.08em}.question-station{display:grid;grid-template-columns:90px minmax(0,1fr);align-items:end;gap:10px}.active-npc{position:relative;display:grid;justify-items:center;align-self:end;padding-bottom:20px}.customer-head{position:relative;z-index:2;font-size:3.6rem;line-height:.9}.customer-shirt{display:block;width:54px;height:38px;margin-top:-10px;border:3px solid #d8e8f5;border-radius:12px 12px 6px 6px;background:#52677c;box-shadow:0 5px 10px #0005}.category-memory .customer-shirt{background:#15945e}.category-type .customer-shirt{background:#8650ce}.category-result .customer-shirt{background:#267ccd}.npc-speech{position:relative;min-height:360px;padding:22px 26px;color:#17243b;background:#fff;border:4px solid #9bdcff;border-radius:24px;box-shadow:0 12px 30px #0005,0 0 20px #49c9ff33}.npc-speech:before{content:"";position:absolute;left:-25px;bottom:48px;border-width:16px 25px 16px 0;border-style:solid;border-color:transparent #9bdcff transparent transparent}.npc-speech:after{content:"";position:absolute;left:-17px;bottom:52px;border-width:12px 19px 12px 0;border-style:solid;border-color:transparent #fff transparent transparent}.npc-speech header{display:flex;justify-content:space-between;align-items:center;gap:10px}.question-category{padding:5px 9px;border-radius:6px;background:#203853;color:#fff;font-size:.74rem;font-weight:900;letter-spacing:.08em}.npc-speech pre{margin:16px 0;padding:18px;min-height:145px;overflow:auto;border-radius:10px;background:#071522;color:#dff6ff;font:700 1.05rem/1.5 ui-monospace,SFMono-Regular,monospace;white-space:pre-wrap}.npc-speech h3{margin:14px 0 5px;font-size:1.25rem}.npc-speech p{margin:0;color:#52657d}.question-input-values{padding:8px 11px;border-radius:7px;background:#fff2bd;color:#704c00;font:700 .85rem ui-monospace,monospace}.customer-line{align-self:stretch;display:flex;flex-direction:column;padding:18px;border-left:2px dashed #5782a7;background:#091b2db8}.customer-line h3,.customer-line p{margin:0 0 5px}.customer-line p{font-size:.7rem;color:#a9bed3}.queue-list{display:flex;flex-direction:column;justify-content:flex-end;gap:9px;flex:1}.queue-customer{position:relative;display:grid;grid-template-columns:28px 44px 1fr;grid-template-rows:30px 24px;align-items:end;padding:7px;border:1px solid #43698c;border-radius:9px;background:#102c47;transition:transform .25s,background .25s}.queue-customer.current{transform:translateX(-13px);background:#174162;box-shadow:0 0 0 2px #fff}.queue-customer .customer-number{grid-row:1/3;align-self:center;font-weight:900;color:#9fc7e8}.queue-customer .customer-head{grid-column:2;font-size:2rem}.queue-customer .customer-shirt{grid-column:2;width:32px;height:21px;margin-top:-4px;border-width:2px}.queue-customer strong{grid-column:3;grid-row:1/3;align-self:center;font-size:.7rem}.service-room .w2-feedback{bottom:18px;left:50%;max-width:55%;font-size:.88rem}.w2-feedback.correct{background:#16794a;color:#fff}.service-success .npc-speech{animation:service-success .5s}.robot-damage{animation:robot-damage .55s}.energy-empty{filter:grayscale(.2);opacity:.85}.w2-overlay{z-index:10}@keyframes service-success{50%{transform:translateY(-5px);box-shadow:0 0 35px #44f3a3}}@keyframes robot-damage{20%,60%{transform:translateX(-9px);filter:brightness(1.8) hue-rotate(300deg)}40%,80%{transform:translateX(9px)}}
@media(max-width:1100px){.service-room{grid-template-columns:150px minmax(380px,1fr) 200px;padding:22px;gap:14px}.npc-speech{padding:18px}.robot-emoji{font-size:4.2rem}.customer-line{padding:12px}}
@media(max-width:760px){.service-room{grid-template-columns:1fr;min-height:0;padding:15px}.robot-station{order:2;align-self:auto;padding:0}.question-station{order:1;grid-template-columns:64px 1fr}.customer-line{order:3;min-height:230px;border-left:0;border-top:2px dashed #5782a7}.npc-speech{min-height:330px}.npc-speech pre{font-size:.86rem}.robot-energy{font-size:1.1rem}.queue-list{display:grid;grid-template-columns:repeat(2,1fr)}.queue-customer.current{transform:none}.service-room .w2-feedback{position:fixed;bottom:12px;max-width:90%}}

/* Week 2 · Python Repair Shop arcade layer */
.arcade-scoreboard{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.arcade-scoreboard span{display:grid;padding:7px 9px;border:1px solid #31547c;border-radius:8px;background:#071523;color:#9ab1ce;font-size:.62rem}.arcade-scoreboard strong{color:#fff;font-size:1.05rem}.shop-sign{position:absolute;z-index:3;top:10px;left:24px;display:flex;gap:14px;align-items:center;color:#dff8ff}.shop-sign span{color:#ffd86a;font-size:.72rem}.shop-equipment{position:absolute;z-index:3;top:10px;right:24px;display:flex;gap:6px}.shop-equipment span{padding:5px 7px;border:1px solid #4e779d;border-radius:6px;background:#0a1c2f;color:#bfeaff;font-size:.58rem;font-weight:900}.service-room[data-day="5"]{background:linear-gradient(180deg,#29345d,#0b1d32)}.service-room[data-day="5"] .shop-sign strong{color:#ffe47d}.repair-device{position:absolute;top:58px;right:25px;font-size:1.55rem;filter:drop-shadow(0 0 6px #69dfff)}.service-timer{position:relative;min-width:150px;padding:6px 9px;overflow:hidden;border-radius:6px;background:#dde8f2;color:#27435d;font-size:.68rem;font-weight:900;text-align:center}.service-timer:before{content:"";position:absolute;z-index:0;inset:auto 0 0;width:var(--timer-progress,100%);height:3px;background:#20bd76}.service-timer.vip{background:#fff0b8;color:#744b00}.service-timer.vip:before{background:#e7a500}.service-timer.normal{background:#e7edf2;color:#566575}.customer-reaction{position:absolute;z-index:7;top:62px;left:24px;max-width:180px;padding:5px 8px;border-radius:7px;background:#071523cc;font-size:.72rem;font-weight:900}.w2-overlay-summary{white-space:pre-line}.w2-overlay p{white-space:pre-line;line-height:1.65}.overlay-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:12px}.overlay-actions .button{text-decoration:none}.service-success .robot-emoji{animation:repair-robot .65s ease}.service-success .repair-device{animation:repair-device .65s ease}.vip-arrival .vip-customer{animation:vip-cut .5s ease}.overdrive{box-shadow:inset 0 0 55px #102d5f,0 0 24px #50e6ff66}.overdrive .robot-emoji{filter:drop-shadow(0 0 10px #79f5ff)}.overdrive .shop-equipment span{box-shadow:0 0 8px #5aeaff88}.w2-feedback{pointer-events:none}.queue-list{overflow:hidden}.queue-customer{flex-shrink:0}
@keyframes repair-robot{35%{transform:rotate(-8deg) scale(1.08)}70%{transform:rotate(7deg)}}
@keyframes repair-device{40%{transform:scale(1.35);filter:brightness(2) drop-shadow(0 0 12px #57ffad)}}
@keyframes vip-cut{0%{transform:translateX(180px) scale(.7)}70%{transform:translateX(-8px) scale(1.08)}100%{transform:none}}
@media(max-width:1100px){.shop-equipment{position:static;grid-column:1/-1;justify-content:center;margin-top:8px}.service-room{padding-top:55px}.arcade-scoreboard{grid-template-columns:1fr}.customer-reaction{top:42px}}
@media(max-width:760px){.shop-sign{position:static;grid-column:1;justify-content:center;flex-wrap:wrap}.service-room{padding-top:15px}.shop-equipment{grid-column:1}.question-station{position:relative}.npc-speech header{flex-wrap:wrap}.service-timer{order:3;width:100%}.customer-reaction{position:static;grid-column:1;text-align:center;max-width:none}}

/* Week 2 · compact Python Repair Shop layout */
.week2-view{padding:10px 14px;background:radial-gradient(circle at 40% 20%,#3d3540 0,#1e2733 48%,#101722 100%)}
.w2-shell{max-width:1480px;grid-template-columns:minmax(0,1fr) 210px;gap:10px}
.w2-hud{grid-column:1/-1;display:grid;grid-template-columns:minmax(245px,1.8fr) repeat(2,minmax(100px,.65fr)) minmax(190px,1.25fr) minmax(170px,1fr);gap:8px;padding:9px 12px;border-color:#5a4a3b;background:#171d27;box-shadow:0 5px 18px #0005}
.hud-brand{min-width:0}.hud-brand h2{font-size:1.05rem;letter-spacing:.04em}.hud-brand>span:not(.w2-completed){color:#d8b88b;font-size:.66rem}.hud-brand .eyebrow{color:#ffcf79}.hud-card{display:grid;place-content:center;min-width:0;padding:7px 10px;text-align:center;border:1px solid #4a5564;border-radius:9px;background:#222b38}.hud-card small{color:#aeb9c8;font-size:.58rem;letter-spacing:.11em}.hud-card>strong{color:#fff;font-size:1.15rem;line-height:1.2}.hud-speed>strong{font-size:.72rem;color:#ffd96b}.hud-hp .robot-energy{min-height:0;font-size:1.15rem}.hud-hp>strong{font-size:.58rem;color:#b8c6d8}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.service-room{position:relative;display:grid;grid-template-columns:minmax(0,7fr) minmax(190px,3fr);align-items:stretch;gap:12px;height:clamp(470px,calc(100vh - 245px),620px);min-height:470px;padding:12px;border-color:#665342;background:linear-gradient(180deg,#2b3038 0 76%,#684d34 76% 79%,#3e3025 79%);box-shadow:inset 0 0 45px #090d13,0 8px 24px #0007}
.service-room[data-day="5"]{background:linear-gradient(180deg,#2b3038 0 76%,#684d34 76% 79%,#3e3025 79%)}
.service-room:before{background:linear-gradient(90deg,#ffffff05,#0000 45%),repeating-linear-gradient(90deg,transparent 0 89px,#e5c2930a 90px)}
.current-service{position:relative;z-index:2;display:grid;grid-template-rows:auto minmax(0,1fr) 72px;gap:8px;min-width:0}
.current-customer-header{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:9px;min-height:48px;padding:6px 10px;border:1px solid #596270;border-radius:10px;background:#151d27}.current-customer-header>div:nth-child(2){display:grid;gap:2px}.current-customer-header small{color:#aebac8}.customer-avatar{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#394655;font-size:1.8rem}.normal-service-clock{justify-self:end;display:grid;grid-template-columns:auto 140px;align-items:center;gap:8px;color:#ffd86e;font-size:.72rem}.service-timer{min-width:0;padding:6px 8px;background:#364454;color:#fff}.service-timer:before{height:4px}.question-layout{display:grid;min-height:0}.question-card{position:relative;min-width:0;overflow:auto;padding:13px 17px;border:3px solid #b8c4cb;border-radius:13px;background:#fff8e9;color:#202936;box-shadow:0 8px 18px #0005}.question-card>header{display:flex;align-items:center;gap:8px;color:#5b6470;font-size:.62rem;font-weight:900;letter-spacing:.08em}.question-card>header .question-category{margin-left:auto}.question-card pre{margin:10px 0;padding:15px;min-height:125px;max-height:190px;overflow:auto;border-radius:8px;background:#151c26;color:#f3f8ff;font:700 clamp(.9rem,1.15vw,1.12rem)/1.55 ui-monospace,SFMono-Regular,monospace;white-space:pre-wrap}.question-card h3{margin:9px 0 4px;font-size:clamp(1rem,1.35vw,1.25rem);line-height:1.4}.question-card p{margin:0;color:#596879;font-size:.72rem}.customer-device{position:absolute;top:44px;right:27px;font-size:1.2rem}.question-input-values{display:inline-block;padding:6px 9px;border-radius:6px;background:#ffecae;color:#624900;font:.72rem ui-monospace,monospace}.question-input-values[hidden]{display:none}.question-layout.vip-active{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px}.question-layout.vip-active .normal-question-card{border-color:#7f8994}.normal-question-card.secondary{filter:saturate(.72);box-shadow:none}.vip-event{display:grid;grid-template-rows:auto minmax(0,1fr);gap:5px;min-width:0}.vip-event[hidden]{display:none}.vip-event-banner{padding:5px 8px;border-radius:7px;background:#5b4215;color:#ffe7a1;font-size:.68rem;font-weight:900}.vip-event-banner small{display:block;color:#fff0c6;font-weight:500}.vip-question-card{border-color:#e7b83e;background:#fff8dd}.vip-question-card pre{min-height:100px;max-height:155px}.vip-avatar{position:absolute;right:18px;top:42px;font-size:1.25rem}.vip-badge{border:1px solid #d69e17}.shop-mascot{align-self:end;display:flex;align-items:end;justify-content:center;min-height:70px}.robot-visual{position:relative;z-index:2;margin-right:-28px;margin-bottom:17px;font-size:3.4rem;line-height:1;filter:drop-shadow(0 4px 3px #0007)}.workbench-visual{display:flex;align-items:center;justify-content:center;gap:8px;width:min(420px,75%);height:54px;border:3px solid #8a6546;border-radius:8px 8px 4px 4px;background:linear-gradient(#c18c59 0 20%,#795335 21%);box-shadow:0 8px 12px #0005;color:#fff0d3;font-size:.62rem;letter-spacing:.08em}.customer-line{position:relative;z-index:2;align-self:stretch;min-width:0;padding:12px;border:1px solid #536171;border-radius:10px;background:#161f2a}.customer-line h3{font-size:.88rem}.customer-line p{color:#9baabc}.queue-list{display:flex;flex-direction:column;justify-content:flex-start;gap:7px;margin-top:8px}.queue-customer{display:grid;grid-template-columns:25px 38px 1fr;grid-template-rows:25px 18px;padding:6px;background:#273342}.queue-customer .customer-number{grid-row:1/3}.queue-customer .customer-avatar{grid-column:2;width:30px;height:30px;font-size:1.25rem}.queue-customer .customer-shirt{grid-column:2;width:27px;height:15px;border-width:1px}.queue-customer strong{grid-column:3;grid-row:1/3;font-size:.65rem}.customer-reaction{top:auto;bottom:82px;left:14px;max-width:240px}.service-room .w2-feedback{bottom:82px;left:50%;max-width:62%}.w2-controls{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:end;padding:8px 10px;border-color:#5c4c3f;background:#191f29}.w2-controls label{grid-template-columns:auto minmax(220px,1fr) auto;align-items:center;gap:8px}.w2-controls label>strong{font-size:.72rem}.w2-controls label>small{color:#94a3b5;font-size:.58rem}.w2-controls input{min-width:0;padding:10px 12px;background:#fffaf0;color:#202936;border-color:#bc8e54}.w2-controls .button{padding:10px 15px}.w2-progress{grid-row:2/4}.w2-overlay{inset:12% 13%;background:#171e29f5}.answer-success input{animation:answer-ok .55s}.answer-error input{animation:answer-bad .55s}.question-error{animation:question-shake .5s}.service-success .robot-visual{animation:repair-robot .55s}.overdrive{box-shadow:inset 0 0 45px #102d5f,0 0 20px #54dfff66}.overdrive+.w2-controls,.overdrive~.w2-controls{border-color:#59ddec}.overdrive .question-card{box-shadow:0 8px 18px #0005}.vip-arrival .vip-event{animation:vip-cut .45s ease}
@keyframes answer-ok{50%{background:#d7ffe8;border-color:#23b86c;box-shadow:0 0 0 3px #23b86c55}}@keyframes answer-bad{20%,60%{transform:translateX(-4px);background:#ffe3e3;border-color:#d24b55}40%,80%{transform:translateX(4px)}}@keyframes question-shake{20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}
@media(max-width:1100px){.w2-shell{grid-template-columns:1fr}.w2-hud{grid-template-columns:minmax(220px,1.6fr) repeat(2,1fr) minmax(170px,1.2fr) minmax(155px,1fr)}.service-room{height:auto;min-height:520px}.w2-progress{grid-column:1;grid-row:auto}.w2-progress .progress-list{display:grid;grid-template-columns:repeat(5,1fr)}.w2-progress>div{justify-content:center}}
@media(max-width:760px){.week2-view{padding:7px}.w2-hud{grid-template-columns:1fr 1fr}.hud-brand{grid-column:1/-1}.hud-speed{grid-column:1/-1}.service-room{grid-template-columns:1fr;min-height:0;height:auto}.current-service{grid-template-rows:auto auto 65px}.current-customer-header{grid-template-columns:auto 1fr}.normal-service-clock{grid-column:1/-1;justify-self:stretch;grid-template-columns:1fr 130px}.question-layout.vip-active{grid-template-columns:1fr}.normal-question-card.secondary{max-height:260px}.customer-line{min-height:180px}.queue-list{display:grid;grid-template-columns:repeat(2,1fr)}.w2-controls{grid-template-columns:1fr auto}.w2-controls label{grid-column:1/-1;grid-template-columns:1fr}.w2-controls label>small{display:none}.w2-controls input{font-size:1rem}.w2-controls .fire-button{grid-column:2}.robot-visual{font-size:2.8rem}.question-card pre{font-size:.92rem;max-height:none}.service-room .w2-feedback{position:fixed;bottom:10px;max-width:92%}}
.current-customer-header .active-npc{align-self:auto;justify-items:center;padding:0}
.shop-mascot{min-height:112px}.robot-visual{width:min(520px,82%);margin:0;line-height:0}.robot-visual img{display:block;width:100%;height:112px;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 5px 5px #0008)}.workbench-visual{display:none}.service-result{position:absolute;z-index:9;top:50%;left:35%;display:grid;justify-items:center;gap:4px;min-width:240px;padding:18px 24px;border:3px solid #fff;border-radius:15px;background:#17202df2;color:#fff;box-shadow:0 12px 35px #0009;transform:translate(-50%,-50%);text-align:center}.service-result[hidden]{display:none}.service-result strong{font-size:1.25rem}.service-result span{font-size:1.7rem;font-weight:950}.service-result small{color:#c5d0dd}.service-result.success{border-color:#59e49a}.service-result.success span{color:#79f0ad}.service-result.failed{border-color:#ff7180}.service-result.failed span{color:#ff9aa4}
@media(max-width:760px){.robot-visual{width:min(430px,95%)}.service-result{position:fixed;top:50%;left:50%;min-width:min(280px,82vw)}}

/* Week 2 · large sprite, queue-selected customer, category-colored question card */
.current-service{grid-template-rows:minmax(0,1fr) 250px}
.shop-mascot{min-height:250px;overflow:visible}.robot-visual{width:min(600px,96%);max-width:none}.robot-visual img{width:100%;height:330px;object-fit:contain;object-position:center bottom}
.normal-question-card>header{display:grid;grid-template-columns:auto minmax(130px,1fr) 145px auto;align-items:center}.normal-question-card>header .question-category{margin-left:0;justify-self:start}.normal-question-card>header>[data-w2="serviceLabel"]{justify-self:end;color:#5e4a12;font-size:.7rem}.normal-question-card>header>[data-w2="customerProgress"]{color:#65717e}
.normal-question-card.category-memory{border-color:#36a86e;background:#eefaf2;color:#183c29}.normal-question-card.category-type{border-color:#9462cf;background:#f6efff;color:#35204f}.normal-question-card.category-result{border-color:#3d8ed8;background:#edf7ff;color:#163b5e}
.normal-question-card.category-memory>header{border-bottom:2px solid #a9dfc0}.normal-question-card.category-type>header{border-bottom:2px solid #d9c1f3}.normal-question-card.category-result>header{border-bottom:2px solid #b8dcf6}.normal-question-card>header{padding-bottom:7px}
.queue-customer.current{transform:translateX(-8px);border-color:#fff;background:#40546a;box-shadow:0 0 0 2px #ffd670,0 5px 12px #0005}.queue-customer.current:after{content:"กำลังให้บริการ";position:absolute;right:5px;bottom:3px;color:#ffe39b;font-size:.5rem;font-weight:900}
@media(max-width:1100px){.current-service{grid-template-rows:minmax(0,1fr) 220px}.shop-mascot{min-height:220px}.robot-visual img{height:290px}}
@media(max-width:760px){.current-service{grid-template-rows:auto 190px}.shop-mascot{min-height:190px}.robot-visual{width:min(520px,100%)}.robot-visual img{height:240px}.normal-question-card>header{grid-template-columns:auto 1fr}.normal-question-card>header>[data-w2="serviceLabel"]{justify-self:start}.normal-question-card>header .service-timer{width:auto;order:0}.normal-question-card>header>[data-w2="customerProgress"]{justify-self:end}}

/* Week 2 · illustrated customer ticket queue */
.customer-line{padding:11px;background:#E8D9C2;border:3px solid #6e5b45;color:#2f3027;box-shadow:inset 0 0 0 2px #f8efdf,0 8px 18px #0005}.customer-line h3{margin:0;color:#3f4434;font-size:1rem}.customer-line p{margin:2px 0 8px;color:#766852;font-weight:700}.customer-line>[data-w2="queueEmpty"]{color:#766852}.queue-list{gap:8px;margin-top:4px;overflow-y:auto;padding:2px 3px 5px}.queue-customer{--ticket-accent:#5B763F;position:relative;display:grid;grid-template-columns:40% 60%;grid-template-rows:1fr;aspect-ratio:3.3/1;min-height:0;padding:0;overflow:hidden;border:2px solid #4b4a3e;border-radius:11px;background:linear-gradient(100deg,#fff8e9,#ead9bc);color:#282b23;box-shadow:0 3px 7px #5d4b363d;transform:none;transition:transform .2s,box-shadow .2s,border-color .2s}.queue-customer.category-memory{--ticket-accent:#5B763F;background:linear-gradient(100deg,#f8efdf,#E8D9C2);color:#26351d}.queue-customer.category-result{--ticket-accent:#374E79;background:linear-gradient(100deg,#f8efdf,#E8D9C2);color:#263655}.queue-customer.category-type{--ticket-accent:#6B4C84;background:linear-gradient(100deg,#f8efdf,#E8D9C2);color:#49345a}.queue-customer-sprite{grid-column:1;grid-row:1;width:100%;height:100%;display:grid;place-items:center;overflow:hidden;border-radius:0;background:var(--ticket-accent);font-size:clamp(1.8rem,3.2vw,3.2rem)}.queue-customer-sprite:after{content:"";position:absolute;inset:0 60% 0 0;background:linear-gradient(130deg,#ffffff24,transparent 55%);pointer-events:none}.queue-customer-sprite>span{filter:drop-shadow(0 2px 1px #0005)}.queue-customer-sprite img{display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom}.queue-customer-info{grid-column:2;grid-row:1;display:grid;align-content:center;gap:4px;min-width:0;padding:8px 34px 8px 13px}.queue-customer-info strong{overflow:hidden;color:var(--ticket-accent);font-size:clamp(.7rem,1vw,.94rem);font-weight:950;white-space:nowrap;text-overflow:ellipsis}.queue-customer-info span{color:#3d392f;font-size:clamp(.62rem,.9vw,.82rem);font-weight:800}.queue-job-icon{position:absolute;right:8px;bottom:7px;font-size:clamp(1rem,1.6vw,1.45rem);filter:drop-shadow(0 1px 1px #fff)}.queue-customer.current{transform:translateX(-5px) scale(1.015);border-color:var(--ticket-accent);background:#fff8e9;box-shadow:0 0 0 3px color-mix(in srgb,var(--ticket-accent) 45%,transparent),0 6px 12px #58452f55}.queue-customer.current:after{content:none}.queue-customer.current .queue-customer-info span{color:var(--ticket-accent)}
@media(max-width:760px){.customer-line{max-height:390px}.customer-line .queue-list{display:grid;grid-template-columns:1fr}.queue-customer{min-height:74px}.queue-customer-sprite{font-size:2.5rem}}

/* Week 2 · simplified HUD, in-shop energy, and customer PNG sprites */
.w2-hud{grid-template-columns:minmax(220px,2fr) minmax(110px,.7fr) minmax(110px,.7fr)}.hud-brand{display:grid;align-content:center;gap:2px}.hud-brand>span:not(.w2-completed){font-size:.82rem;font-weight:900}.queue-customer-sprite img{width:100%;height:100%;object-fit:cover;object-position:center 30%}.vip-avatar{top:38px;right:14px;width:54px;height:70px;overflow:hidden;border:2px solid #d6a832;border-radius:8px;background:#241b0b}.vip-avatar img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 28%}.shop-energy{position:absolute;z-index:7;left:14px;bottom:14px;display:grid;gap:3px;padding:7px 10px;border:2px solid #8c7658;border-radius:10px;background:#1a2029e8;box-shadow:0 4px 12px #0007;color:#f5e8d4}.shop-energy strong{font-size:.65rem;letter-spacing:.06em}.shop-energy .robot-energy{min-height:0;justify-content:flex-start;font-size:1.25rem}
@media(max-width:1100px){.w2-hud{grid-template-columns:minmax(220px,2fr) repeat(2,minmax(105px,.7fr))}}
@media(max-width:760px){.w2-hud{grid-template-columns:1fr 1fr}.hud-brand{grid-column:1/-1}.shop-energy{left:9px;bottom:9px}.shop-energy .robot-energy{font-size:1.05rem}.vip-avatar{width:44px;height:58px}}

/* Queue card conflict reset: isolate the ticket layout from legacy queue styles. */
.customer-line .queue-list>.queue-customer{position:relative;display:grid;grid-template-columns:40% minmax(0,60%);grid-template-rows:minmax(0,1fr);align-items:stretch;width:100%;padding:0;overflow:hidden}
.customer-line .queue-customer>.queue-customer-sprite{position:relative;grid-column:1;grid-row:1;align-self:stretch;width:100%;height:100%;min-width:0;margin:0;border:0;border-radius:0;background:var(--ticket-accent)}
.customer-line .queue-customer>.queue-customer-sprite img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;object-position:center 24%}
.customer-line .queue-customer>.queue-customer-info{grid-column:2;grid-row:1;align-self:stretch;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:5px;min-width:0;padding:10px 38px 10px 14px;text-align:left}
.customer-line .queue-customer>.queue-customer-info strong{display:block;grid-column:auto;grid-row:auto;align-self:auto;width:100%;margin:0;overflow:hidden;color:var(--ticket-accent);font-size:clamp(.72rem,1.05vw,.96rem);font-weight:950;line-height:1.15;white-space:nowrap;text-overflow:ellipsis}
.customer-line .queue-customer>.queue-customer-info span{display:block;margin:0;color:#3d392f;font-size:clamp(.62rem,.9vw,.82rem);font-weight:800;line-height:1.2;white-space:nowrap}
.customer-line .queue-customer>.queue-job-icon{position:absolute;right:9px;bottom:8px;display:block;font-size:clamp(1.05rem,1.7vw,1.5rem);line-height:1}

/* Show more of each customer portrait; present the VIP as a large unframed sprite. */
.customer-line .queue-customer>.queue-customer-sprite img{width:66.666%;height:100%;margin:0 auto;object-fit:contain;object-position:center bottom;transform:none}
.vip-question-card{overflow:visible;padding-right:132px}.vip-avatar{z-index:2;top:24px;right:-8px;width:162px;height:210px;overflow:visible;border:0;border-radius:0;background:transparent;box-shadow:none;pointer-events:none}.vip-avatar img{width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 6px 6px #5b3c0955)}
@media(max-width:760px){.vip-question-card{padding-right:105px}.vip-avatar{top:30px;right:-5px;width:120px;height:165px}}
.w2-overlay .overlay-close{position:absolute;top:10px;right:12px;display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid #718097;border-radius:50%;background:#273343;color:#fff;font:800 1.35rem/1 sans-serif;cursor:pointer}.w2-overlay .overlay-close:hover,.w2-overlay .overlay-close:focus-visible{background:#b53e4d;border-color:#ff8b98;outline:3px solid #ffffff44}
.question-card pre .target-variable{display:inline;padding:0;border:0;background:transparent;color:#d4a72c;font:inherit;font-weight:900;box-shadow:none}

/* Keep the shop and normal question card identical across Days 1–5. */
.service-room{height:clamp(470px,calc(100vh - 245px),620px);max-height:620px;min-height:470px}.service-room>.current-service,.service-room>.customer-line{height:100%;min-height:0}.current-service{overflow:visible}.question-layout{height:100%;min-height:0;overflow:visible}.normal-question-card{height:100%;min-height:0;max-height:100%;box-sizing:border-box;overflow:auto}.customer-line{min-height:0;overflow:hidden}.customer-line .queue-list{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;align-content:start}.customer-line .queue-list>.queue-customer{flex:0 0 auto}
@media(max-width:1100px){.service-room{height:560px;max-height:560px;min-height:560px}}
@media(max-width:760px){.service-room{height:auto;max-height:none;min-height:0}.service-room>.current-service,.service-room>.customer-line{height:auto}.normal-question-card{height:auto;max-height:none}.customer-line{max-height:390px;overflow:hidden}}

/* Week 3 — Python Expression Circuit */
.week3-view{min-height:calc(100vh - 76px);padding:20px;background:radial-gradient(circle at 25% 10%,#263c60 0,#121b2c 46%,#0b111c 100%);color:#e9f2ff}
.w3-shell{width:min(1500px,100%);margin:auto;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(330px,.75fr) minmax(190px,.35fr);gap:16px;align-items:stretch}
.w3-workspace,.w3-editor-panel,.w3-progress-panel,.w3-submission{border:1px solid #405577;border-radius:16px;background:#131e30;box-shadow:0 14px 34px #0006}
.w3-workspace,.w3-editor-panel,.w3-progress-panel{min-height:620px}
.w3-workspace{display:flex;flex-direction:column;padding:20px;overflow:hidden}
.w3-mission-header,.w3-editor-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.w3-mission-header h2,.w3-editor-heading h2,.w3-progress-panel h2{margin:2px 0;color:#f4f8ff}.w3-badge{padding:7px 11px;border:1px solid #6b8dc3;border-radius:999px;background:#263a5c;color:#bdddff;font-size:.78rem;font-weight:900}
.w3-objective{margin:15px 0;padding:12px 14px;display:grid;grid-template-columns:auto 1fr;gap:4px 12px;border-left:4px solid #4ed8a2;border-radius:8px;background:#1b2a42}.w3-objective strong{color:#77e8ba}.w3-objective span{color:#d3def0}.w3-objective code{grid-column:2;color:#ffd36d;font-weight:800}
.w3-control-room{position:relative;flex:1;min-height:420px;border:2px solid #344a6c;border-radius:14px;background:linear-gradient(#18263b,#0e1725);overflow:hidden}.w3-control-room::before{content:"";position:absolute;inset:0;background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);background-size:28px 28px;pointer-events:none}
.w3-robot-zone{position:absolute;left:15px;bottom:10px;z-index:2;display:flex;align-items:flex-end;gap:4px;color:#87a3cc;font-size:.62rem;font-weight:900;letter-spacing:.08em;writing-mode:vertical-rl}.w3-robot-zone img{width:clamp(105px,14vw,175px);height:clamp(125px,18vw,220px);object-fit:contain;filter:drop-shadow(0 8px 10px #0008)}
.w3-circuit-board{position:relative;z-index:1;min-height:100%;margin-left:145px;padding:24px;display:grid;grid-template-columns:minmax(110px,.8fr) 28px minmax(220px,2fr) 28px 82px;align-items:center;gap:8px}.w3-source-bank h3{margin:0 0 9px;color:#8da9d3;font-size:.68rem;letter-spacing:.12em}.w3-inputs{display:grid;gap:7px}.w3-input-node{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;border:1px solid #54709e;border-radius:8px;background:#20324e}.w3-input-node code{color:#a9c8f4}.w3-input-node strong{color:#ffd36d;font-family:ui-monospace,monospace}.w3-flow-arrow{color:#4ed8a2;font-size:2.2rem;text-align:center;text-shadow:0 0 14px #4ed8a2}
.w3-trace{max-height:370px;display:grid;gap:7px;overflow:auto;padding:6px}.w3-empty-trace{margin:auto;padding:20px;text-align:center;color:#8294af}.w3-trace-node{position:relative;display:grid;grid-template-columns:46px 1fr auto auto;gap:8px;align-items:center;padding:9px 10px;border:1px solid #465b7a;border-radius:9px;background:#18253a;opacity:.35;transform:translateX(-8px);transition:opacity .22s,transform .22s,box-shadow .22s,border-color .22s}.w3-trace-node.powered{opacity:1;transform:none;border-color:#4ed8a2;box-shadow:0 0 15px #30c89133}.w3-trace-node small{color:#7188aa;font-size:.58rem}.w3-trace-node code{overflow:hidden;color:#dce9fb;font-size:.74rem;text-overflow:ellipsis;white-space:nowrap}.w3-trace-node .w3-operator{min-width:34px;padding:4px 7px;border-radius:6px;background:#315177;color:#fff;text-align:center;font-family:ui-monospace,monospace;font-weight:900}.w3-trace-node strong{color:#ffd36d;font-family:ui-monospace,monospace}.w3-trace-node em{position:absolute;right:7px;bottom:-6px;padding:0 4px;background:#18253a;color:#7891b4;font-size:.55rem;font-style:normal}.w3-trace-node.kind-comparison .w3-operator{background:#70532b}.w3-trace-node.kind-boolean .w3-operator{background:#654580}
.w3-power-target{display:grid;place-items:center;gap:7px;color:#8097b9;font-size:.65rem;font-weight:900}.w3-power-target strong{display:grid;place-items:center;width:62px;aspect-ratio:1;border:2px solid #6b7c95;border-radius:50%;background:#202a3b;font-size:2rem;filter:grayscale(1)}.w3-trace:has(.powered)+.w3-flow-arrow+.w3-power-target strong{border-color:#ffd36d;filter:none;box-shadow:0 0 22px #ffd36d66}
.w3-status{min-height:45px;margin-top:12px;padding:10px 13px;border-radius:9px;background:#22314a;color:#c4d2e8;white-space:pre-line}.w3-status.running{color:#ffe099}.w3-status.success{background:#153b31;color:#83efc1}.w3-status.error{background:#49252c;color:#ffb7be}
.w3-editor-panel{display:flex;flex-direction:column;padding:20px}.w3-editor-panel textarea{flex:1;min-height:250px;margin:14px 0;padding:16px;resize:none;border:1px solid #4a6184;border-radius:10px;background:#09111e;color:#eef5ff;font:500 .9rem/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:4}.w3-editor-actions{display:flex;align-items:center;gap:12px}.w3-editor-actions span{color:#8194b1;font-size:.72rem}.w3-native-operators{margin:13px 0;display:flex;flex-wrap:wrap;gap:5px}.w3-native-operators code{padding:4px 7px;border:1px solid #415a80;border-radius:6px;background:#1d2d47;color:#bcd5fa;font-size:.76rem}.w3-hints{margin-top:auto;padding:12px;border-radius:9px;background:#1b2a42;color:#cbd7e9}.w3-hints strong{color:#ffd36d}.w3-hints ul{margin:7px 0 0;padding-left:20px}.w3-hints li+li{margin-top:5px}
.w3-progress-panel{padding:18px;display:flex;flex-direction:column}.w3-progress-panel .progress-list{margin:10px 0}.w3-progress-panel .progress-list button{color:#cbd8eb;background:#1c2a40;border-color:#405675}.w3-progress-panel .progress-list button.current{color:#fff;background:#315177;border-color:#74a5e9}.w3-score{margin:10px 0;color:#ffd36d;font-size:1.1rem}.w3-progress-panel>[data-w3=submission-state]{margin-bottom:10px;color:#c7d4e8;font-size:.78rem}.w3-progress-panel .mission-nav{margin-top:auto;display:grid;grid-template-columns:1fr 1fr;gap:6px}.w3-progress-panel .mission-nav .button{padding:7px 5px;font-size:.62rem}
.w3-submission{grid-column:1/-1;padding:22px}.w3-submission form{display:grid;grid-template-columns:1fr 1.5fr 1fr auto;gap:10px;align-items:end}.w3-submission label{display:grid;gap:5px;color:#cbd8eb;font-size:.8rem;font-weight:800}.w3-submission input,.w3-submission select{padding:10px;border:1px solid #526888;border-radius:8px;background:#f8fbff;color:#172033;font:inherit}
@media(max-width:1180px){.w3-shell{grid-template-columns:minmax(0,1fr) minmax(320px,.7fr)}.w3-progress-panel{grid-column:1/-1;min-height:0}.w3-progress-panel .progress-list{display:grid;grid-template-columns:repeat(5,1fr)}.w3-progress-panel .mission-nav{margin-top:10px}.w3-workspace,.w3-editor-panel{min-height:600px}}
@media(max-width:820px){.week3-view{padding:10px}.w3-shell{grid-template-columns:1fr}.w3-workspace,.w3-editor-panel{min-height:0}.w3-circuit-board{margin-left:0;padding:18px 12px 145px;grid-template-columns:1fr}.w3-flow-arrow{transform:rotate(90deg)}.w3-robot-zone{left:10px}.w3-trace{max-height:none}.w3-progress-panel{grid-column:auto}.w3-progress-panel .progress-list{grid-template-columns:1fr}.w3-submission{grid-column:auto}.w3-submission form{grid-template-columns:1fr}.w3-control-room{min-height:680px}}
@media(prefers-reduced-motion:reduce){.w3-trace-node{transition:none}}

/* Week 3 precedence light bar: reveal Python's real evaluation order before the circuit result. */
.w3-precedence-bar{margin:0 0 14px;padding:11px 12px 13px;border:1px solid #496181;border-radius:11px;background:#0b1422;box-shadow:inset 0 0 20px #0007}
.w3-precedence-bar>header{display:flex;justify-content:space-between;align-items:end;gap:12px;margin-bottom:9px}.w3-precedence-bar small{color:#6e89ae;font-size:.56rem;font-weight:900;letter-spacing:.14em}.w3-precedence-bar h3{margin:1px 0 0;color:#dceaff;font-size:.88rem}.w3-precedence-bar>header>span{color:#768baa;font-size:.62rem}
.w3-precedence-lights{display:grid;grid-template-columns:.65fr .65fr 1.15fr .75fr 1.7fr .65fr .65fr .65fr;gap:6px}.w3-precedence-lights span{display:grid;place-items:center;min-height:35px;padding:6px 4px;border:1px solid #3d4f68;border-top:4px solid #50647e;border-radius:7px;background:#162235;color:#7185a3;text-align:center;font:900 .68rem ui-monospace,monospace;transition:color .2s,background .2s,border-color .2s,box-shadow .2s,transform .2s}.w3-precedence-lights span.active{color:#07150f;background:#66e6b2;border-color:#a4ffda;box-shadow:0 0 18px #66e6b288,inset 0 0 10px #fff6;transform:translateY(-2px)}
.w3-live-expression{display:grid;place-items:center;gap:6px;min-height:92px;margin-top:10px;padding:13px;border:1px solid #334967;border-radius:8px;background:#101b2b;text-align:center}.w3-live-expression code{color:#edf5ff;font:800 clamp(.85rem,1.4vw,1.08rem)/1.5 ui-monospace,monospace;white-space:pre-wrap}.w3-live-expression small{min-height:1.2em;color:#ffd36d;font:800 .72rem ui-monospace,monospace}.w3-live-expression.pulse{animation:w3-expression-pulse .35s ease-out}@keyframes w3-expression-pulse{50%{border-color:#66e6b2;box-shadow:0 0 18px #66e6b244}}
.w3-main-conduit{display:flex;align-items:center;justify-content:center;gap:0;min-width:220px;color:#7890b2}.w3-main-conduit strong{padding:10px 13px;border:2px solid #506784;border-radius:8px;background:#17263b;color:#9db4d4;font-size:.68rem;letter-spacing:.08em;text-align:center}.w3-conduit-line{flex:1;height:4px;background:#425a79;box-shadow:0 0 5px #32557b}.w3-conduit-dot{width:13px;aspect-ratio:1;border:3px solid #6381a8;border-radius:50%;background:#17263b}
@media(max-width:820px){.w3-precedence-bar>header{align-items:flex-start}.w3-precedence-bar>header>span{max-width:120px;text-align:right}.w3-precedence-lights{grid-template-columns:repeat(4,minmax(80px,1fr));overflow-x:auto}.w3-main-conduit{min-height:80px}.w3-control-room{min-height:560px}}
@media(prefers-reduced-motion:reduce){.w3-precedence-lights span{transition:none}.w3-precedence-lights span.active{transform:none}.w3-live-expression.pulse{animation:none}}

/* Week 3 — Python Bomb Defusal */
.w3-bomb-hud{display:grid;grid-template-columns:1.2fr repeat(4,1fr);gap:8px;margin:14px 0}.w3-bomb-hud>*{padding:9px;border:1px solid #566681;border-radius:7px;background:#0d1726;text-align:center;color:#aebed5;font-size:.72rem}.w3-bomb-hud strong{font-size:1rem}.w3-bomb-hud b{display:block;color:#ffd05c;font-size:.92rem}
.w3-bomb-room{position:relative;min-height:260px;display:grid;grid-template-columns:150px 1fr;align-items:center;gap:12px;padding:24px;border:2px solid #70434b;border-radius:16px;background:radial-gradient(circle,#44222a,#160e16 70%);box-shadow:inset 0 0 45px #000}.w3-bomb-room>img{width:145px;height:190px;object-fit:contain;filter:drop-shadow(0 8px 8px #000)}.w3-bomb-device{display:grid;place-items:center;gap:18px;min-height:175px;padding:22px;border:4px solid #4d555f;border-radius:13px;background:#111820;box-shadow:0 0 0 7px #242c35,0 0 25px #f04f5344}.w3-bomb-device>span{color:#e66d70;font-size:.65rem;font-weight:900;letter-spacing:.16em}.w3-bomb-device code{color:#f5f0df;font:900 clamp(.9rem,1.7vw,1.35rem)/1.7 ui-monospace,monospace;text-align:center;white-space:pre-wrap}.w3-bomb-device mark{padding:5px 7px;border:2px solid #65d9ff;border-radius:6px;background:#184a5c;color:#fff;box-shadow:0 0 15px #42cfff}.w3-bomb-device code.show-hint mark{animation:w3-hint .3s 3 alternate}.w3-bomb-device small{color:#79dfff;font:800 .75rem ui-monospace,monospace}
.w3-scanner-controls{display:flex;justify-content:center;gap:9px;margin:12px 0}.w3-scanner-controls button{min-width:58px;padding:9px;border:1px solid #52708f;border-radius:7px;background:#1a2c42;color:#fff;cursor:pointer}.w3-scanner-controls .button{min-width:190px}.w3-bomb-feedback{min-height:68px;padding:12px 15px;border-radius:9px;background:#202d40;color:#ccd8e9;white-space:pre-line}.w3-bomb-feedback.error{background:#54252e;color:#ffd6d9}.w3-bomb-feedback.success{background:#173c31;color:#9cf3c9}.w3-scan-history{max-height:95px;margin:10px 0 0;padding-left:28px;overflow:auto;color:#a9bdd8;font:700 .72rem/1.6 ui-monospace,monospace}
.w3-defuse-panel{gap:14px}.w3-defuse-panel>p{color:#aebed2}.w3-defuse-panel>label{display:grid;gap:7px;color:#d8e3f2;font-weight:800}.w3-defuse-panel input{padding:16px;border:2px solid #607797;border-radius:9px;background:#09111e;color:#fff;font:900 1.2rem ui-monospace,monospace}.w3-defuse-button{padding:16px;font-size:1.1rem;background:#b7333d}.w3-score-rules{margin-top:auto;padding:14px;border-radius:10px;background:#1b293e;color:#c2d0e3}.w3-score-rules strong{color:#ffd05c}.w3-score-rules ul{padding-left:20px;columns:2}.w3-score-rules p{color:#92a5c0;font-size:.72rem}
@keyframes w3-hint{to{background:#f0c541;color:#241b00;box-shadow:0 0 26px #ffd84f}}
@media(max-width:820px){.w3-bomb-hud{grid-template-columns:repeat(2,1fr)}.w3-bomb-room{grid-template-columns:85px 1fr;padding:12px}.w3-bomb-room>img{width:85px;height:130px}.w3-score-rules ul{columns:1}}
.w3-bomb-hud{grid-template-columns:1.2fr repeat(3,1fr)}.w3-bomb-hud>*{color:#d8e4f3}.w3-bomb-hud b,.w3-score-rules strong{color:#8fe8ff}.w3-start-screen{position:absolute;z-index:5;inset:0;display:grid;place-content:center;justify-items:center;gap:10px;background:#080c12eb;text-align:center}.w3-start-screen[hidden]{display:none}.w3-start-screen strong{color:#fff;font-size:1.5rem}.w3-start-screen p{margin:0;color:#c7d5e7}.w3-start-screen .button{min-width:180px;padding:13px}
.w3-shell{grid-template-columns:minmax(0,1fr) minmax(190px,.25fr)}.w3-workspace{min-width:0}.w3-bomb-hud{grid-template-columns:1.2fr 1fr 1fr}.w3-defuse-bar{display:grid;grid-template-columns:minmax(240px,1fr) auto auto;gap:9px;align-items:end;margin-bottom:12px}.w3-defuse-bar label{display:grid;gap:5px;color:#d8e4f3;font-size:.72rem;font-weight:800}.w3-defuse-bar input{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #607797;border-radius:8px;background:#09111e;color:#fff;font:900 1rem ui-monospace,monospace}.w3-bomb-room{display:block;min-height:210px;padding:24px}.w3-bomb-device{box-sizing:border-box;width:100%;min-height:160px;overflow-x:auto}.w3-bomb-device code{width:max-content;min-width:100%;color:#a9ead2;white-space:nowrap}.w3-bomb-device mark{color:#fff}.w3-solve-tree{margin-top:12px;padding:12px;border:1px solid #405577;border-radius:10px;background:#0d1726}.w3-solve-tree>strong{color:#bcd0e9;font-size:.72rem}.w3-solve-tree ol{margin:10px 0 0;padding:0;list-style:none}.w3-solve-tree li{position:relative;display:grid;grid-template-columns:80px minmax(0,1fr);gap:10px;padding:9px 10px 9px 24px;border:1px solid #405577;border-radius:8px;background:#172438}.w3-solve-tree li+li{margin-top:18px}.w3-solve-tree li+li::before{content:"";position:absolute;left:36px;bottom:100%;width:2px;height:19px;background:#66cfa7}.w3-solve-tree li::after{content:"";position:absolute;left:31px;top:50%;width:10px;height:10px;border-radius:50%;background:#66cfa7;transform:translateY(-50%)}.w3-solve-tree small{padding-left:20px;color:#8ba1be}.w3-solve-tree code{overflow-x:auto;color:#dbe9f7;font:800 .78rem ui-monospace,monospace;white-space:nowrap}
@media(max-width:820px){.w3-shell{grid-template-columns:1fr}.w3-defuse-bar{grid-template-columns:1fr 1fr}.w3-defuse-bar label{grid-column:1/-1}.w3-bomb-device{padding:15px}.w3-solve-tree li{grid-template-columns:1fr}.w3-solve-tree small{padding-left:20px}}
.w3-bomb-device mark{background:#164b48;color:#8fffd8;border-color:#58dcb1;box-shadow:0 0 15px #58dcb166}@keyframes w3-hint{to{background:#2b7065;color:#d7fff2;box-shadow:0 0 26px #58dcb1}}
.w3-bomb-device>code[data-w3="expression"]{padding:0;background:transparent;border-radius:0}
.w3-bomb-hud{grid-template-columns:1.2fr 1fr 1fr 1fr}
.w3-utility-grid{display:grid;grid-template-columns:minmax(330px,.8fr) minmax(380px,1.2fr);grid-template-rows:auto auto;gap:8px;margin:14px 0}.w3-utility-grid .w3-bomb-hud{grid-row:1/3;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}.w3-calculator,.w3-notes{min-width:0;padding:9px 11px;border:1px solid #566681;border-radius:8px;background:#0d1726;color:#d8e4f3}.w3-calculator>strong,.w3-notes>strong{font-size:.72rem}.w3-calculator>div{display:grid;grid-template-columns:minmax(150px,1fr) 36px minmax(80px,.45fr);gap:6px;margin-top:5px}.w3-calculator input,.w3-notes textarea{box-sizing:border-box;width:100%;border:1px solid #526984;border-radius:6px;background:#172438;color:#edf7ff;font:700 .78rem ui-monospace,monospace}.w3-calculator input{padding:7px}.w3-calculator button{border:0;border-radius:6px;background:#2b6c68;color:#fff;font-weight:900}.w3-calculator output{overflow:hidden;padding:7px;border-radius:6px;background:#09111e;color:#91f0d2;text-overflow:ellipsis;white-space:nowrap}.w3-notes{display:grid;grid-template-columns:80px minmax(0,1fr);align-items:center;gap:7px}.w3-notes textarea{height:42px;padding:7px;resize:vertical}
@media(max-width:900px){.w3-utility-grid{grid-template-columns:1fr}.w3-utility-grid .w3-bomb-hud{grid-row:auto}.w3-notes{grid-template-columns:70px 1fr}}
.w3-calculator{display:grid;grid-template-columns:95px minmax(130px,.55fr) minmax(260px,1fr);align-items:center;gap:8px}.w3-calculator>output{display:block;min-width:0;padding:8px 10px;overflow:hidden;border:1px solid #526984;border-radius:6px;background:#09111e;color:#91f0d2;font:800 .82rem ui-monospace,monospace;text-overflow:ellipsis;white-space:nowrap}.w3-calculator>.w3-calculator-keys{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:0}.w3-calculator-keys button{min-height:25px;padding:3px;border:1px solid #46617d;background:#20344c}.w3-calculator-keys .calculator-equals{grid-column:1/-1;background:#2b6c68}.w3-calculator-keys button:active{background:#3c806f;transform:translateY(1px)}
@media(max-width:900px){.w3-calculator{grid-template-columns:80px minmax(120px,.5fr) 1fr}}@media(max-width:600px){.w3-calculator{grid-template-columns:1fr}.w3-calculator>.w3-calculator-keys{grid-template-columns:repeat(5,1fr)}}
.w3-start-screen{background:#080c12}.w3-solve-tree code{padding:0;background:transparent;border-radius:0}
.w3-utility-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto 1fr}.w3-utility-grid .w3-bomb-hud{grid-column:1/-1;grid-row:1;grid-template-columns:1fr 1fr}.w3-calculator{grid-column:1;grid-row:2;display:grid;grid-template-columns:1fr;align-content:start}.w3-calculator>output{width:100%;box-sizing:border-box}.w3-calculator>.w3-calculator-keys{width:100%}.w3-notes{grid-column:2;grid-row:2;display:flex;flex-direction:column;align-items:stretch}.w3-notes textarea{flex:1;min-height:165px;resize:none}
.w3-utility-grid .w3-bomb-hud>span{position:relative;display:grid;place-items:center;min-height:46px;padding:8px 14px;overflow:hidden;border:1px solid #3b6278;border-radius:9px;background:linear-gradient(180deg,#101f2d,#07111c);font:700 clamp(1.25rem,2.1vw,1.75rem)/1 "DS Digital",ui-monospace,monospace;letter-spacing:.08em;text-shadow:0 0 8px currentColor;box-shadow:inset 0 0 18px #000b,0 4px 12px #0005}.w3-utility-grid .w3-bomb-hud>span::before{content:"";position:absolute;inset:3px;border:1px solid #ffffff0c;border-radius:6px;pointer-events:none}.w3-utility-grid .w3-bomb-hud>[data-w3="round"]{color:#8ff0bd;border-color:#397b63;box-shadow:inset 0 0 18px #000b,0 0 12px #39bd8050}.w3-utility-grid .w3-bomb-hud>[data-w3="timer"]{color:#8fe8ff;border-color:#376f87;box-shadow:inset 0 0 18px #000b,0 0 12px #3abde350}
@media(max-width:700px){.w3-utility-grid{grid-template-columns:1fr}.w3-utility-grid .w3-bomb-hud,.w3-calculator,.w3-notes{grid-column:1;grid-row:auto}.w3-notes textarea{min-height:120px}}
.w3-workspace{position:relative}.w3-bomb-device{padding-left:22px}.w3-bomb-feedback{position:relative;z-index:9}
@media(max-width:700px){.w3-bomb-device{padding-left:15px}}
.w3-bomb-art{position:absolute;z-index:8;left:14px;bottom:105px;width:390px;height:320px;pointer-events:none}.w3-bomb-art img{position:absolute;bottom:0;width:245px;height:300px;object-fit:contain;transform-origin:50% 100%;filter:drop-shadow(0 10px 10px #000a);will-change:transform,filter}.w3-bomb-art [data-w3="robot-sprite"]{left:0;z-index:2;animation:w3-robot-idle 3.2s ease-in-out infinite}.w3-bomb-art [data-w3="robot-sprite"][data-state="scanning"]{animation:w3-robot-scanning .75s ease-in-out infinite}.w3-bomb-art [data-w3="robot-sprite"][data-state="surprised"]{animation:w3-robot-surprised .45s ease-in-out 3}.w3-bomb-art [data-w3="robot-sprite"][data-state="happy"]{animation:w3-robot-happy .8s ease-in-out infinite}.w3-bomb-art [data-w3="robot-sprite"][data-state="fail"]{animation:w3-robot-fail 1.1s ease-out both}.w3-bomb-art [data-w3="bomb-sprite"]{left:155px;z-index:1;animation:w3-bomb-breathe 1.8s ease-in-out infinite}.w3-bomb-art [data-w3="bomb-sprite"][data-state="complete"]{animation:w3-bomb-complete .8s ease-in-out infinite}.w3-bomb-room .w3-bomb-device{position:relative;z-index:1;width:calc(100% - 260px);margin-left:260px}
@keyframes w3-robot-idle{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-5px) rotate(-1deg)}}
@keyframes w3-robot-scanning{0%,100%{transform:translateY(0) rotate(-1deg);filter:drop-shadow(0 10px 10px #000a) drop-shadow(0 0 4px #63eaff)}50%{transform:translateY(-7px) rotate(2deg);filter:drop-shadow(0 10px 10px #000a) drop-shadow(0 0 15px #63eaff)}}
@keyframes w3-robot-surprised{0%,100%{transform:translate(0,0) rotate(0)}25%{transform:translate(-7px,-9px) rotate(-3deg)}55%{transform:translate(8px,-5px) rotate(4deg)}75%{transform:translate(-4px,-2px) rotate(-2deg)}}
@keyframes w3-robot-happy{0%,100%{transform:translateY(0) rotate(-2deg)}45%{transform:translateY(-18px) rotate(4deg)}65%{transform:translateY(-14px) rotate(-3deg)}}
@keyframes w3-robot-fail{0%{transform:translateY(-8px) rotate(0);filter:drop-shadow(0 10px 10px #000a) brightness(1.25)}35%{transform:translate(-7px,0) rotate(-5deg)}65%{transform:translate(5px,3px) rotate(4deg)}100%{transform:translateY(9px) rotate(-3deg);filter:drop-shadow(0 6px 7px #000a) saturate(.7)}}
@keyframes w3-bomb-breathe{0%,100%{transform:scale(1);filter:drop-shadow(0 10px 10px #000a)}50%{transform:scale(1.035);filter:drop-shadow(0 10px 14px #ff654477)}}
@keyframes w3-bomb-complete{0%,100%{transform:translateY(0) scale(1);filter:drop-shadow(0 10px 10px #000a)}50%{transform:translateY(-7px) scale(1.04);filter:drop-shadow(0 10px 18px #55e8ff99)}}
.w3-bomb-device code.operation-solving mark{position:relative;display:inline-block;z-index:2;animation:w3-operation-charge .75s ease-in-out infinite}.w3-bomb-device code.operation-solving mark.operation-tree::before{content:attr(data-result);position:absolute;left:50%;bottom:calc(100% + 1.55em);min-width:2.1em;padding:.12em .35em;border:1px solid #9dffe0;border-radius:5px;background:#d8fff2;color:#08241b;box-shadow:0 0 20px #70f5c5;text-align:center;transform:translate(-50%,10px) scale(.75);opacity:0;animation:w3-tree-result .42s cubic-bezier(.2,.8,.25,1) forwards}.w3-bomb-device code.operation-solving mark.operation-tree::after{content:"↗      ↖";position:absolute;left:50%;bottom:calc(100% + .35em);width:max-content;color:#8fffd8;font-size:.9em;letter-spacing:.08em;text-shadow:0 0 9px #58dcb1;transform:translate(-50%,8px);opacity:0;animation:w3-tree-arrows .42s .08s ease-out forwards}.w3-bomb-device:has(code.operation-solving){border-color:#5cc9d8;box-shadow:0 0 0 7px #242c35,0 0 30px #4fe5ff66,inset 0 0 24px #3ad7ef1a}
@keyframes w3-operation-charge{0%,100%{box-shadow:0 0 12px #58dcb166}50%{box-shadow:0 0 28px #67efff}}
@keyframes w3-tree-result{to{transform:translate(-50%,0) scale(1);opacity:1}}
@keyframes w3-tree-arrows{to{transform:translate(-50%,0);opacity:1}}
@media(max-width:700px){.w3-bomb-art{left:10px;bottom:120px;width:270px;height:235px}.w3-bomb-art img{width:175px;height:220px}.w3-bomb-art [data-w3="bomb-sprite"]{left:105px}.w3-bomb-room .w3-bomb-device{width:calc(100% - 165px);margin-left:165px}}
@media(prefers-reduced-motion:reduce){.w3-bomb-art img{animation:none!important}}
.w3-scanner-controls button:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}
.w3-bomb-device>code[data-w3="expression"]{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.w3-bomb-art [data-w3="robot-sprite"][data-state="correct"]{animation:w3-robot-correct .7s ease-in-out infinite}.w3-bomb-art [data-w3="bomb-sprite"][data-state="correct"]{animation:w3-bomb-correct .8s ease-in-out infinite}.w3-bomb-art [data-w3="bomb-sprite"][data-state="failed"]{left:155px;z-index:12;animation:none;filter:drop-shadow(0 10px 22px #ff5333cc)}
.w3-robot-health{position:absolute;z-index:20;top:0;left:45px;width:155px;padding:4px 7px;border:1px solid #ffffff33;border-radius:999px;background:#09111ecc;box-shadow:0 4px 12px #0008;text-align:center;font-size:1.25rem;line-height:1;letter-spacing:.08em;filter:drop-shadow(0 0 4px #ff6f7f)}
@keyframes w3-robot-correct{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-9px) rotate(2deg);filter:drop-shadow(0 10px 10px #000a) drop-shadow(0 0 12px #68f5a5)}}
@keyframes w3-bomb-correct{0%,100%{transform:scale(1);filter:drop-shadow(0 10px 10px #000a) drop-shadow(0 0 9px #54f59a)}50%{transform:scale(1.045);filter:drop-shadow(0 10px 12px #000a) drop-shadow(0 0 25px #43ef8e)}}
.w3-workspace .w3-bomb-room{box-sizing:border-box;min-height:300px;flex:0 0 300px}.w3-workspace .w3-bomb-room .w3-bomb-device{min-height:238px}
@media(max-width:700px){.w3-bomb-art [data-w3="bomb-sprite"][data-state="failed"]{left:105px}.w3-workspace .w3-bomb-room{min-height:280px;flex-basis:280px}.w3-workspace .w3-bomb-room .w3-bomb-device{min-height:230px}}
.w3-bomb-feedback.checking{background:#18364b;color:#bfeeff;box-shadow:inset 4px 0 #51c9ef}
@media(max-width:700px){.w3-robot-health{top:-2px;left:25px;width:120px;font-size:1rem}}
.w3-score-dialog{position:fixed;z-index:50;inset:0;display:grid;place-items:center;padding:20px;background:#050912cc;backdrop-filter:blur(5px)}.w3-score-dialog[hidden]{display:none}.w3-score-card{position:relative;width:min(440px,calc(100vw - 36px));box-sizing:border-box;padding:28px;border:2px solid #65e2bb;border-radius:18px;background:linear-gradient(155deg,#172b35,#0c1623 70%);box-shadow:0 22px 65px #000b,0 0 35px #5ce9bb44;color:#eaf8f4;text-align:center}.w3-score-card h3{margin:5px 0 8px;font-size:1.4rem}.w3-score-card>span{display:block;color:#86a9ad;font-size:.62rem;font-weight:900;letter-spacing:.16em}.w3-score-total{display:block;color:#8ff0bd;font:700 3.4rem/1 "DS Digital",ui-monospace,monospace;text-shadow:0 0 14px #49e5ad}.w3-score-card ul{margin:20px 0;padding:0;border-top:1px solid #38545d;list-style:none;text-align:left}.w3-score-card li{display:flex;justify-content:space-between;gap:18px;padding:9px 3px;border-bottom:1px solid #2b414a;color:#bdced2;font-size:.82rem}.w3-score-card li strong{font-family:ui-monospace,monospace}.w3-score-card li .bonus{color:#8ff0bd}.w3-score-card li .penalty{color:#ff9ca8}.w3-score-card>.button{min-width:170px}.w3-score-close{position:absolute;top:10px;right:12px;width:34px;height:34px;border:1px solid #57717a;border-radius:50%;background:#172731;color:#dffaf2;font-size:1.4rem;line-height:1;cursor:pointer}.w3-score-close:hover{background:#29434a}
