/* ADR-004 Phase0陬應ｿｮ: Scoped stylesheet for portal/subpath hosting. */
:root {
  --color-bg: #f4f6fb;
  --color-surface: #ffffff;
  --color-surface-soft: #f3f6ff;
  --color-text: #1d2433;
  --color-text-sub: #5a6477;
  --color-primary: #3867ff;
  --color-primary-strong: #2f5ae2;
  --color-secondary: #ffb703;
  --color-accent: #ff6b9a;

  --stage-plus: #5bb7ff;
  --stage-minus: #34d399;
  --stage-multi: #a78bfa;
  --stage-divide: #f59e0b;
  --stage-mix: #fb7185;

  --radius-sm: 10px;
  --radius-md: 14px;
  --radius-lg: 18px;
  --radius-xl: 24px;
  --radius-pill: 999px;

  --shadow-1: 0 4px 10px rgba(29, 36, 51, 0.08);
  --shadow-2: 0 10px 24px rgba(29, 36, 51, 0.12);
  --shadow-3: 0 16px 36px rgba(29, 36, 51, 0.16);

  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;

  --font-hero: clamp(28px, 4vw, 40px);
  --font-h1: 28px;
  --font-h2: 22px;
  --font-body: 16px;
  --font-caption: 13px;
  --font-number-lg: clamp(32px, 5vw, 48px);

  --ground-art-height: 240px;
  --ground-surface-inset: 90px;

  --sel-border-w: 2px;
  --sel-border: color-mix(in srgb, var(--color-primary) 72%, #1f2f5a);
  --sel-ring: 0 0 0 3px color-mix(in srgb, var(--color-primary) 22%, transparent);
  --sel-shadow: 0 10px 20px color-mix(in srgb, var(--color-primary) 18%, transparent);
  --sel-bg: color-mix(in srgb, var(--color-primary) 14%, var(--color-surface));
  --sel-font-w: 800;
}
.calc-sprint * {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}.calc-sprint [hidden] {
  display: none !important;
}.calc-sprint {
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  background: var(--color-bg);
  color: var(--color-text);
  margin: 0;
  min-height: 100vh;
}.calc-sprint {
  /* ADR-004 Phase0補修: keep asset URLs relative so subpath hosting works (even if this legacy file is used). */
  --run-sky-image: linear-gradient(180deg, #7dbdff 0%, #9fd5ff 55%, #d6efff 100%);
  --run-cloud-image: url("../assets/bg-cloud.png");
  --run-ground-image: url("../assets/bg-ground.png");
  --run-air-image: none;
  --run-map-image: none;
  --z-runner: 4;
}.calc-sprint .app {
  width: 100vw;
  min-height: 100vh;
  margin: 0;
  padding: var(--space-4);
  display: flex;
  flex-direction: column;
  gap: var(--space-8);
}.calc-sprint .screen {
  display: none;
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  padding: var(--space-8);
  box-shadow: var(--shadow-2);
}.calc-sprint .screen.is-active {
  display: block;
}.calc-sprint .screen-header {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-bottom: var(--space-5);
}.calc-sprint .screen-kicker {
  font-size: var(--font-caption);
  font-weight: 700;
  color: var(--color-primary);
  letter-spacing: 0.08em;
}.calc-sprint .screen-main {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}.calc-sprint .screen-footer {
  margin-top: var(--space-5);
  display: flex;
  justify-content: center;
}.calc-sprint .screen-hint {
  font-size: calc(var(--font-body) - 2px);
  color: var(--color-text-sub);
}.calc-sprint .stage-card {
  background: linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 96%, transparent), color-mix(in srgb, var(--color-bg) 92%, transparent));
  border-radius: var(--radius-lg);
  padding: var(--space-5) var(--space-6);
  border: 1px solid color-mix(in srgb, var(--color-primary) 12%, transparent);
  box-shadow: var(--shadow-2);
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-4) + 2px);
}.calc-sprint .screen-title {
  position: relative;
  overflow: hidden;
}
.calc-sprint .screen-title::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.42;
  background:
    radial-gradient(circle at 15% 18%, color-mix(in srgb, var(--color-secondary) 24%, transparent) 0 16px, transparent 17px),
    radial-gradient(circle at 84% 24%, color-mix(in srgb, var(--color-accent) 18%, transparent) 0 12px, transparent 13px),
    radial-gradient(circle at 22% 78%, color-mix(in srgb, var(--color-primary) 16%, transparent) 0 10px, transparent 11px),
    radial-gradient(circle at 74% 76%, color-mix(in srgb, var(--stage-plus) 16%, transparent) 0 14px, transparent 15px);
}
.calc-sprint .screen-title .stage-card {
  align-items: center;
}
.calc-sprint .title-hero {
  position: relative;
  z-index: 1;
}
.calc-sprint .title-hero-card {
  position: relative;
  z-index: 1;
  background: linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 95%, transparent), color-mix(in srgb, var(--color-surface-soft) 88%, transparent));
}
.calc-sprint .screen-profile-select .stage-card {
  align-items: center;
}
.calc-sprint .profile-select-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(72px, 1fr));
  gap: 12px;
  width: min(100%, 420px);
}
.calc-sprint .profile-select-button {
  border: 2px solid color-mix(in srgb, var(--color-primary) 20%, transparent);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  font-size: 20px;
  font-weight: 700;
  padding: 14px 0;
  cursor: pointer;
  transition: transform 0.12s ease, box-shadow 0.12s ease, border-color 0.12s ease;
}
.calc-sprint .profile-select-button--character {
  position: relative;
  overflow: hidden;
  border-width: 2px;
  box-shadow: var(--shadow-1);
}
.calc-sprint .profile-select-button--character::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.75;
  background: linear-gradient(145deg, color-mix(in srgb, var(--stage-color, var(--color-primary)) 18%, transparent), color-mix(in srgb, var(--color-surface) 88%, transparent));
}
.calc-sprint .profile-select-button--character[data-profile-theme="plus"] { --stage-color: var(--stage-plus); }
.calc-sprint .profile-select-button--character[data-profile-theme="minus"] { --stage-color: var(--stage-minus); }
.calc-sprint .profile-select-button--character[data-profile-theme="multi"] { --stage-color: var(--stage-multi); }
.calc-sprint .profile-select-button--character[data-profile-theme="divide"] { --stage-color: var(--stage-divide); }
.calc-sprint .profile-select-button--character[data-profile-theme="mix"] { --stage-color: var(--stage-mix); }
.calc-sprint .profile-select-button:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-1);
}
.calc-sprint .profile-select-button.is-selected {
  border-color: color-mix(in srgb, var(--stage-color, var(--color-primary)) 75%, var(--color-primary));
  background: color-mix(in srgb, var(--stage-color, var(--color-primary)) 14%, var(--color-surface));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--stage-color, var(--color-primary)) 20%, transparent), var(--shadow-2);
}
.calc-sprint .profile-select-button.is-selected::after {
  content: "えらんだ！";
  position: absolute;
  right: 6px;
  top: 6px;
  font-size: 10px;
  font-weight: 700;
  color: var(--color-surface);
  background: color-mix(in srgb, var(--stage-color, var(--color-primary)) 70%, #253552);
  border-radius: var(--radius-pill);
  padding: 2px 6px;
}
.calc-sprint .profile-select-current {
  font-size: 14px;
  color: var(--color-text-sub);
  text-align: center;
  border-radius: var(--radius-md);
  padding: 10px 12px;
  background: color-mix(in srgb, var(--color-secondary) 18%, var(--color-surface));
  box-shadow: var(--shadow-1);
}
.calc-sprint .screen-stage .stage-card {

  gap: 16px;
}.calc-sprint .stage-worlds {
  display: flex;
  flex-direction: column;
  gap: 16px;
}.calc-sprint .stage-world {
  display: flex;
  flex-direction: column;
  gap: 12px;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-2);
}.calc-sprint .stage-world-header h3 {
  font-size: 18px;
  margin-bottom: 4px;
}.calc-sprint .stage-world-progress {
  font-size: var(--font-caption);
  font-weight: 600;
  color: #5a6477;
}.calc-sprint .stage-world-header p {
  font-size: 14px;
  color: #5a6477;
}.calc-sprint .stage-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px;
}.calc-sprint .stage-card-button {
  border: 1px solid rgba(56, 103, 255, 0.18);
  border-radius: var(--radius-md);
  background: #fff;
  padding: 12px 14px;
  text-align: left;
  cursor: pointer;
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}.calc-sprint .stage-card-button:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-1);
}.calc-sprint .stage-card-button:active {
  transform: translateY(1px);
  box-shadow: none;
}.calc-sprint .stage-card-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--space-2);
  margin-bottom: 6px;
}.calc-sprint .stage-card-title {
  font-size: 16px;
  font-weight: 700;
}.calc-sprint .stage-card-id {
  font-size: 12px;
  font-weight: 700;
  color: var(--color-primary);
  background: rgba(56, 103, 255, 0.12);
  padding: 2px 8px;
  border-radius: var(--radius-pill);
}.calc-sprint .stage-card-description {
  font-size: 14px;
  color: var(--color-text);
  margin-bottom: 6px;
}.calc-sprint .stage-card-detail {
  font-size: 12px;
  color: #5a6477;
}.calc-sprint .game-screen {
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  min-height: min(92vh, 860px);
  gap: 12px;
  position: relative;
  --boost-glow: 1;
  --boost-line: 1;
  --boost-bright: 1;
}.calc-sprint .game-screen::before {
  content: "";
  position: absolute;
  inset: 0 0 35%;
  background: linear-gradient(180deg, rgba(227, 235, 255, 0.65), rgba(244, 246, 251, 0));
  pointer-events: none;
  z-index: 0;
}.calc-sprint /* Stage theme hooks
 * - data-bg-theme is primarily consumed by .run-sky/.run-clouds/.run-ground (art layers).
 * - .game-screen/.run-world are the entry points for global tone (brightness/contrast/etc).
 * - Keep "default" + one sample theme ("theme1") as the placeholders to swap assets/colors.
 */
.calc-sprint .game-screen[data-bg-theme="theme1"]::before, .calc-sprint .game-screen[data-bg-theme="w1"]::before {
  background: linear-gradient(180deg, rgba(214, 235, 255, 0.7), rgba(244, 246, 251, 0));
}.calc-sprint .game-screen[data-bg-theme="bg_add"]::before {
  background: linear-gradient(180deg, rgba(219, 238, 255, 0.75), rgba(244, 250, 255, 0));
}.calc-sprint .game-screen[data-bg-theme="bg_sub"]::before {
  background: linear-gradient(180deg, rgba(230, 250, 242, 0.72), rgba(246, 255, 250, 0));
}.calc-sprint .game-screen[data-bg-theme="bg_mul"]::before {
  background: linear-gradient(180deg, rgba(243, 232, 255, 0.7), rgba(250, 245, 255, 0));
}.calc-sprint .game-screen[data-bg-theme="bg_div"]::before {
  background: linear-gradient(180deg, rgba(255, 244, 214, 0.7), rgba(255, 252, 240, 0));
}.calc-sprint .game-screen[data-bg-theme="bg_mix"]::before {
  background: linear-gradient(180deg, rgba(255, 230, 220, 0.72), rgba(255, 247, 243, 0));
}.calc-sprint .game-hud {
  padding: 28px 28px 12px;
  background: linear-gradient(180deg, rgba(236, 241, 255, 0.88), rgba(255, 255, 255, 0));
  border-bottom: 1px solid rgba(56, 103, 255, 0.04);
  backdrop-filter: blur(4px);
  position: relative;
  z-index: 2;
}.calc-sprint .game-hud.scale-lv-0 {
  box-shadow: none;
}.calc-sprint .game-hud.scale-lv-1 {
  border-bottom-color: rgba(56, 103, 255, 0.18);
  box-shadow: var(--shadow-1);
}.calc-sprint .game-hud.scale-lv-2 {
  border-bottom-color: rgba(56, 103, 255, 0.28);
  background: linear-gradient(180deg, rgba(220, 233, 255, 0.95), rgba(255, 255, 255, 0.02));
  box-shadow: 0 10px 22px rgba(56, 103, 255, 0.18);
}.calc-sprint .game-hud.scale-lv-3 {
  border-bottom-color: rgba(56, 103, 255, 0.38);
  background: linear-gradient(180deg, rgba(206, 226, 255, 0.98), rgba(255, 255, 255, 0.08));
  box-shadow:
    0 12px 28px rgba(56, 103, 255, 0.22),
    0 0 22px rgba(120, 162, 255, 0.28);
}.calc-sprint .time-progress {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
}.calc-sprint .time-progress__marker {
  font-size: 12px;
  font-weight: 700;
  color: #4a5568;
}.calc-sprint .time-progress__track {
  position: relative;
  height: 12px;
  border-radius: var(--radius-pill);
  background: rgba(56, 103, 255, 0.12);
  overflow: hidden;
  box-shadow: inset 0 1px 2px rgba(29, 36, 51, 0.12);
}.calc-sprint .time-progress__bar {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, rgba(56, 103, 255, 0.7), rgba(46, 204, 113, 0.85));
  transition: width 0.2s ease;
}.calc-sprint .time-progress__runner {
  position: absolute;
  top: 50%;
  left: 0%;
  transform: translate(-50%, -50%);
  font-size: 14px;
  transition: left 0.2s ease;
  pointer-events: none;
}.calc-sprint .game-hud.final-phase .time-progress__track {
  height: 14px;
  background: rgba(255, 208, 0, 0.25);
  box-shadow: 0 0 12px rgba(255, 208, 0, 0.35);
}.calc-sprint .game-hud.final-phase .time-progress__bar {
  background: linear-gradient(90deg, rgba(255, 168, 0, 0.85), rgba(255, 88, 88, 0.85));
}.calc-sprint .game-hud.final-phase .time-progress__runner {
  filter: drop-shadow(0 0 6px rgba(255, 140, 0, 0.6));
}.calc-sprint .status-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 12px;
  align-items: stretch;
}.calc-sprint .status-card {
  background: rgba(255, 255, 255, 0.8);
  border-radius: 12px;
  padding: 10px 12px;
  display: flex;
  align-items: baseline;
  gap: 6px;
  box-shadow: 0 8px 18px rgba(29, 36, 51, 0.08);
  border: 1px solid rgba(56, 103, 255, 0.05);
}.calc-sprint .status-label {
  font-size: 12px;
  color: #5a6477;
  font-weight: 600;
}.calc-sprint .status-value {
  font-size: 20px;
  font-weight: 700;
  color: var(--color-text);
}.calc-sprint .status-unit {
  font-size: 12px;
  color: #5a6477;
  font-weight: 600;
}.calc-sprint .status-review {
  align-self: center;
  font-weight: 700;
  color: var(--color-primary);
  background: rgba(56, 103, 255, 0.12);
  padding: 6px 12px;
  border-radius: var(--radius-pill);
}.calc-sprint .game-focus {
  padding: 8px 28px 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: -22px;
  position: relative;
  z-index: 2;
}.calc-sprint .run-layer {
  padding: 0 16px 18px;
  height: min(48vh, 420px);
  overflow: hidden;
  position: relative;
  z-index: 1;
  transform: translateY(-12px);
}.calc-sprint .screen__title {
  font-size: var(--font-h1);
  margin-bottom: 4px;
}.calc-sprint .screen__description {
  color: var(--color-text-sub);
  font-size: var(--font-body);
  line-height: 1.6;
}.calc-sprint .btn, .calc-sprint .primary-button, .calc-sprint .secondary-button {
  border: none;
  border-radius: var(--radius-pill);
  padding: 12px 24px;
  font-size: var(--font-body);
  font-weight: 700;
  line-height: 1.2;
  cursor: pointer;
  min-height: 44px;
  transition: transform 0.12s ease, box-shadow 0.12s ease, opacity 0.12s ease;
}

.calc-sprint .btn-primary, .calc-sprint .primary-button {
  background: var(--color-primary);
  color: var(--color-surface);
  box-shadow: 0 8px 16px color-mix(in srgb, var(--color-primary) 25%, transparent);
}

.calc-sprint .btn-secondary, .calc-sprint .secondary-button {
  background: color-mix(in srgb, var(--color-primary) 12%, var(--color-surface));
  color: color-mix(in srgb, var(--color-primary-strong) 85%, var(--color-text));
  box-shadow: 0 4px 10px color-mix(in srgb, var(--color-primary) 12%, transparent);
}

.calc-sprint .btn-ghost {
  background: transparent;
  color: var(--color-primary-strong);
  border: 1px solid color-mix(in srgb, var(--color-primary) 24%, transparent);
  box-shadow: none;
}

.calc-sprint .primary-button--xl {
  font-size: var(--font-h2);
  padding: 14px 28px;
}

.calc-sprint .btn:hover, .calc-sprint .primary-button:hover, .calc-sprint .secondary-button:hover {
  transform: translateY(-1px);
}

.calc-sprint .btn:active, .calc-sprint .primary-button:active, .calc-sprint .secondary-button:active {
  transform: translateY(1px);
  box-shadow: none;
}

.calc-sprint .btn:focus-visible, .calc-sprint .primary-button:focus-visible, .calc-sprint .secondary-button:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--color-primary) 38%, transparent);
  outline-offset: 2px;
}

.calc-sprint .btn-ghost:hover {
  opacity: 0.88;
}

.calc-sprint .card, .calc-sprint .stage-card {
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-2);
}

.calc-sprint .card--soft {
  background: var(--color-surface-soft);
  border: 1px solid color-mix(in srgb, var(--color-primary) 8%, transparent);
}

.calc-sprint .card--stat, .calc-sprint .screen-dash .dash-stat-card {
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-1);
}

.calc-sprint .badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 22px;
  padding: 2px 10px;
  border-radius: var(--radius-pill);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  background: color-mix(in srgb, var(--color-primary) 12%, var(--color-surface));
  color: var(--color-primary-strong);
}.calc-sprint .title-actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 100%;
}
.calc-sprint .title-actions .primary-button, .calc-sprint .title-actions .secondary-button {
  width: 100%;
}
.calc-sprint .title-actions--hero {
  gap: var(--space-3);
}
.calc-sprint .title-actions--sub {
  margin-top: 2px;
  gap: var(--space-2);
}
.calc-sprint .title-cta-main {
  min-height: 54px;
  box-shadow: 0 12px 24px color-mix(in srgb, var(--color-primary) 28%, transparent);
}
.calc-sprint .title-cta-sub {
  font-size: 15px;
  min-height: 42px;
  opacity: 0.9;
}
.calc-sprint .screen-stage-select {
  --world-accent: #3867ff;
  --world-map-bg: linear-gradient(180deg, rgba(245, 247, 255, 0.98), rgba(232, 238, 255, 0.9));
  --node-frame: rgba(56, 103, 255, 0.16);
  --node-bg: #fff;
  --node-text: #1d2433;
  --node-muted: #5a6477;
  --node-locked: #7a8396;
  --node-clear: #1f7a46;
  --node-next: #f59e0b;
  --node-next-bg: rgba(255, 247, 232, 0.95);
  --node-clear-bg: rgba(236, 255, 244, 0.9);
  --node-current-bg: rgba(37, 99, 235, 0.12);
  --map-line: #c7cfdd;
  --map-line-clear: #22c55e;
}.calc-sprint .screen-stage-select[data-world-id="w1"], .calc-sprint .screen-stage-select[data-theme-id="w1"] {
  --world-accent: #2563eb;
  --world-map-bg: linear-gradient(180deg, rgba(239, 246, 255, 0.98), rgba(219, 234, 254, 0.92));
  --node-frame: rgba(37, 99, 235, 0.2);
  --node-next: #f97316;
  --node-next-bg: rgba(255, 237, 213, 0.96);
}.calc-sprint .screen-stage-select .stage-card {
  background: var(--world-map-bg);
  border-color: var(--node-frame);
}.calc-sprint .stage-select-list {
  display: flex;
  flex-direction: column;
  gap: calc(var(--space-4) + 2px);
  width: 100%;
}.calc-sprint .stage-map {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 22px;
  padding: 6px 0 4px;
}.calc-sprint .stage-map-node {
  width: 100%;
  display: flex;
  justify-content: center;
  position: relative;
  padding-bottom: 24px;
}.calc-sprint .stage-map-node:last-child {
  padding-bottom: 0;
}.calc-sprint .stage-map-node:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: 100%;
  width: 6px;
  height: 22px;
  background: var(--map-line);
  border-radius: var(--radius-pill);
}.calc-sprint .stage-map-node.is-cleared:not(:last-child)::after {
  background: var(--map-line-clear);
  box-shadow: 0 0 10px rgba(34, 197, 94, 0.45);
}.calc-sprint .stage-select-button {
  width: min(100%, 520px);
  text-align: left;
  border-radius: 16px;
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: 96px;
  border: 2px solid transparent;
  background: var(--node-bg);
  box-shadow: 0 10px 18px rgba(29, 36, 51, 0.08);
}.calc-sprint .stage-select-button.is-locked {
  opacity: 0.6;
  cursor: not-allowed;
  box-shadow: none;
}.calc-sprint .stage-select-button.is-cleared {
  border: 2px solid color-mix(in srgb, var(--node-clear) 35%, transparent);
  background: var(--node-clear-bg);
}.calc-sprint .stage-select-button.is-next {
  border: 3px solid color-mix(in srgb, var(--node-next) 80%, transparent);
  background: var(--node-next-bg);
  box-shadow: 0 14px 24px color-mix(in srgb, var(--node-next) 20%, transparent),
    0 0 0 6px color-mix(in srgb, var(--node-next) 8%, transparent);
}.calc-sprint .stage-select-button.is-next .stage-select-label {
  color: color-mix(in srgb, var(--node-next) 70%, #000);
}.calc-sprint .stage-select-button.is-cleared .stage-select-label {
  color: var(--node-clear);
}.calc-sprint .stage-select-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--world-accent);
  letter-spacing: 0.08em;
}.calc-sprint .stage-select-title {
  font-size: 18px;
  font-weight: 700;
  color: var(--node-text);
}.calc-sprint .stage-select-description {
  font-size: 14px;
  color: var(--node-muted);
  line-height: 1.4;
}.calc-sprint .stage-select-current {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 700;
  color: var(--world-accent);
  background: var(--node-current-bg);
  padding: 2px 8px;
  border-radius: var(--radius-pill);
}.calc-sprint .stage-select-lock {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 700;
  color: var(--node-locked);
}.calc-sprint .stage-select-clear {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 700;
  color: var(--node-clear);
}.calc-sprint .stage-select-star {
  font-size: 11px;
  margin-left: 4px;
}.calc-sprint .stage-select-footer {
  display: flex;
  flex-direction: column;
  gap: 10px;
}.calc-sprint .stage-select-footer .secondary-button {
  width: 100%;
}

.calc-sprint #dash-stage-select-screen {
  --dash-select-card-bg: rgba(255, 255, 255, 0.9);
  --dash-select-card-border: rgba(56, 103, 255, 0.18);
  --dash-select-text: var(--color-text);
  --dash-select-muted: var(--color-text-sub);
}
.calc-sprint #dash-stage-select-screen .dash-stage-select-header {
  width: min(100%, 520px);
  margin: 0 auto 14px;
  padding-inline: clamp(2px, 0.75vw, 8px);
  display: grid;
  gap: 10px;
}
.calc-sprint #dash-stage-select-screen .dash-stage-select-header__title {
  margin: 0;
  font-size: clamp(24px, 3vw, 30px);
  line-height: 1.2;
  letter-spacing: 0.01em;
  text-wrap: balance;
}
.calc-sprint #dash-stage-select-screen .setting-note {
  margin: 0;
  max-width: 40ch;
  font-size: 14px;
  color: var(--dash-select-muted);
  line-height: 1.6;
}
.calc-sprint #dash-stage-select-screen .dash-selection-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.calc-sprint #dash-stage-select-screen .dash-selection-badge {
  font-size: 13px;
  line-height: 1.35;
}
@media (max-width: 640px) {
  .calc-sprint #dash-stage-select-screen .dash-stage-select-header {
    margin-bottom: 12px;
    gap: 8px;
  }
  .calc-sprint #dash-stage-select-screen .dash-stage-select-header__title {
    font-size: clamp(22px, 6.8vw, 27px);
    line-height: 1.24;
  }
}
.calc-sprint #dash-stage-select-screen .stage-select-list {
  gap: 10px;
}
.calc-sprint #dash-stage-select-screen .dash-stage-card-wrap {
  display: grid;
  gap: 8px;
}
.calc-sprint #dash-stage-select-screen .dash-stage-card {
  position: relative;
  width: 100%;
  min-height: 72px;
  padding: 14px 14px 14px 58px;
  border-radius: var(--radius-md);
  border: 1px solid var(--dash-select-card-border);
  background: linear-gradient(180deg, var(--dash-select-card-bg), color-mix(in srgb, var(--color-surface-soft) 72%, var(--color-surface)));
  display: grid;
  gap: 4px;
  justify-items: start;
  align-content: center;
  text-align: left;
  overflow: hidden;
}
.calc-sprint #dash-stage-select-screen .dash-stage-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 12px;
  background: var(--stage-color, var(--color-primary));
}
.calc-sprint #dash-stage-select-screen .dash-stage-card.stage-plus {
  --stage-color: var(--stage-plus);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card.stage-minus {
  --stage-color: var(--stage-minus);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card.stage-multi {
  --stage-color: var(--stage-multi);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card.stage-divide {
  --stage-color: var(--stage-divide);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card.stage-mix {
  --stage-color: var(--stage-mix);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card__badge {
  pointer-events: none;
  position: absolute;
  left: 20px;
  top: 50%;
  transform: translateY(-50%);
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 17px;
  font-weight: 900;
  color: color-mix(in srgb, var(--stage-color) 70%, #20293d);
  background: color-mix(in srgb, var(--stage-color) 18%, var(--color-surface));
  border: 1px solid color-mix(in srgb, var(--stage-color) 45%, transparent);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card__title {
  font-size: 18px;
  font-weight: 700;
  color: var(--dash-select-text);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card__description {
  font-size: 14px;
  color: var(--dash-select-muted);
  line-height: 1.45;
}
.calc-sprint #dash-stage-select-screen .dash-stage-card__selected {
  pointer-events: none;
  position: absolute;
  right: 10px;
  top: 10px;
  display: none;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: var(--radius-pill);
  font-size: 12px;
  font-weight: var(--sel-font-w);
  letter-spacing: 0.01em;
  color: var(--color-surface);
  border: 1px solid color-mix(in srgb, var(--stage-color) 60%, #1f2f5a);
  background: color-mix(in srgb, var(--stage-color) 68%, #243455);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card__selected::before {
  content: "✓";
  font-size: 11px;
  line-height: 1;
}
.calc-sprint #dash-stage-select-screen .dash-stage-card:is(.is-current, .is-selected) {
  border: var(--sel-border-w) solid color-mix(in srgb, var(--stage-color) 65%, var(--sel-border));
  box-shadow: var(--sel-ring), var(--sel-shadow);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card:is(.is-current, .is-selected) .dash-stage-card__title {
  font-weight: var(--sel-font-w);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card:is(.is-current, .is-selected) .dash-stage-card__badge {
  transform: translateY(-50%) scale(1.06);
  border-width: 2px;
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--stage-color) 28%, transparent);
}
.calc-sprint #dash-stage-select-screen .dash-stage-card:is(.is-current, .is-selected) .dash-stage-card__selected {
  display: inline-flex;
}
.calc-sprint #dash-stage-select-screen .stage-select-actions {
  width: 100%;
  display: grid;
  gap: 10px;
}
.calc-sprint #dash-stage-select-screen .stage-select-actions .secondary-button,
.calc-sprint #dash-stage-select-screen .dash-mode-select-list .secondary-button,
.calc-sprint #dash-stage-select-screen .dash-level-button,
.calc-sprint #dash-stage-select-screen [data-role="dash-start"],
.calc-sprint #dash-stage-select-screen [data-role="dash-close"] {
  min-height: 44px;
  padding-top: 12px;
  padding-bottom: 12px;
}

.calc-sprint #dash-stage-select-screen #dash-stage-select-close-button,
.calc-sprint #dash-stage-select-screen [data-role="dash-close"],
.calc-sprint #dash-stage-select-screen .dash-close-button {
  font-weight: 600;
  color: color-mix(in srgb, var(--color-text) 78%, var(--color-text-sub));
  background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));
  border: 1px solid color-mix(in srgb, var(--color-primary) 18%, transparent);
  box-shadow: 0 3px 8px color-mix(in srgb, var(--color-primary) 10%, transparent);
}

.calc-sprint #dash-stage-select-screen .dash-level-select-title,
.calc-sprint #dash-stage-select-screen [data-role="dash-level-title"] {
  font-size: 14px;
  line-height: 1.5;
  font-weight: 700;
}


.calc-sprint #dash-stage-select-screen .dash-stage-card__levels[hidden] {
  display: none;
}

.calc-sprint #dash-stage-select-screen .dash-level-select-list {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 640px) {
  .calc-sprint #dash-stage-select-screen .dash-level-select-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.calc-sprint #dash-stage-select-screen .dash-stage-card__levels,
.calc-sprint #dash-stage-select-screen .dash-level-select-list,
.calc-sprint #dash-stage-select-screen .dash-stage-card__actions,
.calc-sprint #dash-stage-select-screen .dash-stage-card__footer,
.calc-sprint #dash-stage-select-screen [data-role="dash-level-actions"] {
  pointer-events: auto;
  display: grid;
  gap: 10px;
  margin-top: 8px;
}
@media (max-width: 640px) {
  .calc-sprint #dash-stage-select-screen .dash-stage-card {
    min-height: 68px;
    padding: 12px 12px 12px 54px;
  }
  .calc-sprint #dash-stage-select-screen .dash-stage-card__title {
    font-size: 17px;
  }
  .calc-sprint #dash-stage-select-screen .setting-note {
    font-size: 13px;
  }
  .calc-sprint #dash-stage-select-screen .dash-stage-card__description {
    font-size: 13px;
  }
  .calc-sprint #dash-stage-select-screen .stage-select-actions {
    gap: 8px;
  }
}
.calc-sprint .stage-select-icon {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  display: inline-block;
}.calc-sprint .stage-select-icon--current path, .calc-sprint .stage-select-icon--lock rect {
  fill: currentColor;
}.calc-sprint .stage-select-icon--lock path, .calc-sprint .stage-select-icon--clear path {
  stroke: currentColor;
}

@media (prefers-reduced-motion: reduce) {.calc-sprint .stage-select-button, .calc-sprint .stage-map-node::after, .calc-sprint .stage-select-icon {
    transition: none;
    animation: none;
  }
}.calc-sprint .result-stage {
  width: 100%;
  background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));
  border-radius: 16px;
  padding: 14px 18px;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 4px;
}.calc-sprint .result-stage__label {
  font-size: 12px;
  font-weight: 700;
  color: var(--color-primary);
  letter-spacing: 0.08em;
}.calc-sprint .result-stage__name {
  font-size: 18px;
  font-weight: 700;
  margin: 0;
}.calc-sprint .result-stage__status {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0;
}.calc-sprint .result-stage__headline {
  font-size: 18px;
  font-weight: 800;
  color: var(--color-text);
  margin: 0;
}.calc-sprint .result-stage__message {
  font-size: 14px;
  font-weight: 600;
  color: #5a6477;
  margin: 0;
}.calc-sprint .result-stage__unlock {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-primary);
  margin: 0;
}.calc-sprint .mission-card {
  text-align: center;
  background: #fff;
  border-radius: 16px;
  padding: 16px 18px;
  border: 1px solid rgba(56, 103, 255, 0.15);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8);
}
.calc-sprint .mission-card--sticker {
  margin-top: var(--space-2);
  border-radius: var(--radius-xl);
  border: 1px solid color-mix(in srgb, var(--color-primary) 18%, transparent);
  box-shadow: var(--shadow-1);
  background:
    radial-gradient(circle at 12% 20%, color-mix(in srgb, var(--color-secondary) 24%, transparent) 0 7px, transparent 8px),
    radial-gradient(circle at 85% 72%, color-mix(in srgb, var(--color-accent) 20%, transparent) 0 6px, transparent 7px),
    linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 94%, transparent), color-mix(in srgb, var(--color-surface-soft) 90%, transparent));
}
.calc-sprint .mission-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--color-primary);
  letter-spacing: 0.08em;
  margin-bottom: 6px;
}.calc-sprint .mission-text {
  font-size: 18px;
  font-weight: 700;
}.calc-sprint .how-to {
  width: 100%;
  background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));
  border-radius: var(--radius-md);
  padding: 12px 16px;
  border: 1px solid color-mix(in srgb, var(--color-primary) 10%, transparent);
  box-shadow: var(--shadow-1);
}.calc-sprint .how-to__title {
  font-size: 14px;
  font-weight: 700;
  margin-bottom: 6px;
}.calc-sprint .how-to__list {
  padding-left: 18px;
  font-size: 14px;
  line-height: 1.6;
  color: #5a6477;
}.calc-sprint .settings-section {
  width: 100%;
  align-self: stretch;
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  border: 1px solid color-mix(in srgb, var(--color-primary) 12%, transparent);
  box-shadow: var(--shadow-1);
  display: flex;
  flex-direction: column;
  gap: 12px;
}.calc-sprint .settings-section--preset {
  opacity: 0.9;
}
.calc-sprint .screen-settings-unified .form-group select {
  width: 100%;
  min-height: 44px;
  border-radius: var(--radius-md);
  border: 1px solid color-mix(in srgb, var(--color-primary) 18%, transparent);
  background: color-mix(in srgb, var(--color-surface) 90%, var(--color-surface-soft));
  padding: 10px 12px;
  box-shadow: var(--shadow-1);
}
.calc-sprint .screen-settings-unified .settings-guide {
  background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));
  border: 1px solid color-mix(in srgb, var(--color-primary) 10%, transparent);
  border-radius: var(--radius-md);
  padding: 10px 12px;
}.calc-sprint .settings-preset-description {
  font-size: var(--font-caption);
  color: #6a7386;
  margin: 6px 2px 0;
  line-height: 1.6;
  display: flex;
  align-items: center;
  gap: var(--space-2);
}.calc-sprint .settings-preset-tag {
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: var(--radius-pill);
  background: rgba(56, 103, 255, 0.12);
  color: var(--color-primary);
  display: none;
}.calc-sprint .settings-preset-description.is-custom .settings-preset-tag {
  display: inline-flex;
}.calc-sprint .settings-guide {
  font-size: 14px;
  color: #5a6477;
  margin: -4px 4px 0;
  line-height: 1.6;
}.calc-sprint .settings-details {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 16px;
}.calc-sprint .settings-details__summary {
  list-style: none;
  cursor: pointer;
  background: #fff;
  border-radius: var(--radius-pill);
  border: 2px solid rgba(56, 103, 255, 0.25);
  padding: 12px 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 16px;
  font-weight: 700;
  color: var(--color-text);
  min-height: 52px;
  box-shadow: 0 6px 12px rgba(56, 103, 255, 0.12);
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}.calc-sprint .settings-details__summary::after {
  content: "▼";
  font-size: 14px;
  margin-left: 12px;
  color: var(--color-primary);
}.calc-sprint .settings-details[open] .settings-details__summary::after {
  content: "▲";
}.calc-sprint .settings-details__summary:hover {
  background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface));
}.calc-sprint .settings-details__summary:active {
  transform: translateY(1px);
  box-shadow: 0 4px 8px rgba(56, 103, 255, 0.12);
}.calc-sprint .settings-details__summary:focus-visible {
  outline: 3px solid rgba(56, 103, 255, 0.45);
  outline-offset: 3px;
}.calc-sprint .settings-details__summary::-webkit-details-marker {
  display: none;
}

@media (prefers-reduced-motion: reduce) {.calc-sprint .settings-details__summary {
    transition: none;
  }
  .calc-sprint .toggle-option input,
  .calc-sprint .toggle-option input::before {
    transition: none;
  }
}.calc-sprint .section-title {
  font-size: 16px;
  font-weight: 700;
}.calc-sprint .pill-group {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}.calc-sprint .settings-note {
  margin-top: 8px;
  font-size: var(--font-caption);
  line-height: 1.5;
  color: #5a6477;
}.calc-sprint .pill-option {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-pill);
  font-size: 15px;
  font-weight: 600;
  color: var(--color-text);
  cursor: pointer;
  min-height: 44px;
}.calc-sprint .pill-option input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}.calc-sprint .pill-option span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 14px;
  border-radius: var(--radius-pill);
  border: 2px solid color-mix(in srgb, var(--color-primary) 20%, transparent);
  background: color-mix(in srgb, var(--color-surface-soft) 85%, var(--color-surface));
  min-height: 44px;
  box-shadow: var(--shadow-1);
}.calc-sprint .pill-option input:checked + span {
  background: rgba(56, 103, 255, 0.15);
  border-color: rgba(56, 103, 255, 0.6);
}.calc-sprint .toggle-option {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 15px;
  font-weight: 600;
}.calc-sprint .toggle-option input {
  width: 44px;
  height: 26px;
  appearance: none;
  border-radius: var(--radius-pill);
  border: 2px solid color-mix(in srgb, var(--color-primary) 20%, transparent);
  background: color-mix(in srgb, var(--color-surface-soft) 84%, var(--color-surface));
  position: relative;
  transition: background-color .15s ease, border-color .15s ease;
}
.calc-sprint .toggle-option input::before {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--color-surface);
  box-shadow: 0 1px 3px rgba(0,0,0,.18);
  transition: transform .15s ease;
}
.calc-sprint .toggle-option input:checked {
  background: color-mix(in srgb, var(--color-primary) 35%, var(--color-surface));
  border-color: color-mix(in srgb, var(--color-primary) 60%, transparent);
}
.calc-sprint .toggle-option input:checked::before {
  transform: translateX(18px);
}.calc-sprint .screen-result .result-firstview {
  gap: 16px;
}.calc-sprint .screen-result .result-metric {
  border: 1px solid color-mix(in srgb, var(--color-primary) 12%, transparent);
  border-radius: 16px;
  padding: var(--space-4);
  background: #fff;
}.calc-sprint .screen-result .result-metric--title {
  border-style: dashed;
  border-color: rgba(56, 103, 255, 0.2);
}.calc-sprint .title-badge {
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  border-radius: var(--radius-pill);
  background: rgba(56, 103, 255, 0.12);
  color: #1f2a44;
  font-weight: 700;
  font-size: 16px;
  letter-spacing: 0.02em;
}.calc-sprint .title-badge::before {
  content: "🏅";
  margin-right: 6px;
}.calc-sprint .title-hint {
  margin-top: 6px;
  font-size: 12px;
  color: #7c879b;
}.calc-sprint .screen-result .metric-label {
  font-size: 14px;
  color: #5a6477;
}.calc-sprint .screen-result .metric-value {
  font-size: var(--font-h1);
  font-weight: 700;
}.calc-sprint .screen-result .result-details summary {
  font-weight: 700;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 0;
}.calc-sprint .screen-result .result-details summary::after {
  content: "+";
  font-weight: 700;
  color: var(--color-primary);
}.calc-sprint .screen-result .result-details summary:hover {
  color: var(--color-primary);
}.calc-sprint .screen-result .result-details[open] summary::after {
  content: "−";
}.calc-sprint .screen-result .result-details__content {
  border-top: 1px solid rgba(56, 103, 255, 0.12);
  padding-top: 16px;
}.calc-sprint .screen-result .result-list li {
  line-height: 1.7;
}.calc-sprint .button-row--menu {
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}.calc-sprint .result-actions .result-cta {
  min-height: 48px;
}.calc-sprint .result-actions .cta-primary {
  background: var(--world-accent);
  color: #fff;
  font-size: 18px;
  padding: 14px 30px;
  box-shadow: 0 12px 20px color-mix(in srgb, var(--world-accent) 28%, transparent);
}.calc-sprint .result-actions .cta-secondary {
  background: #e5e9f2;
  color: var(--color-text);
  box-shadow: 0 8px 16px rgba(29, 36, 51, 0.12);
}.calc-sprint .result-actions .cta-ghost {
  background: transparent;
  color: var(--world-accent);
  border: 2px solid color-mix(in srgb, var(--world-accent) 24%, transparent);
  box-shadow: none;
}.calc-sprint .screen-result[data-clear-state="clear"] .cta-primary {
  background: linear-gradient(135deg, color-mix(in srgb, var(--world-accent) 88%, #ffffff) 0%, var(--world-accent) 70%);
  box-shadow: 0 14px 24px color-mix(in srgb, var(--world-accent) 35%, transparent);
}

@media (prefers-reduced-motion: reduce) {.calc-sprint .primary-button, .calc-sprint .secondary-button {
    transition: none;
  }
}.calc-sprint .form-group {
  margin-bottom: 16px;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}.calc-sprint .form-label {
  font-weight: 600;
}.calc-sprint .screen-dash {
  position: relative;
  min-height: 100vh;
  overflow: hidden;
  background: transparent !important;
  background-image: none !important;
  background-color: transparent !important;
}.calc-sprint .screen-dash .stage-card {
  background: rgba(255, 255, 255, 0.88);
  border: 1px solid color-mix(in srgb, var(--color-primary) 12%, transparent);
}

.calc-sprint .screen-dash .run-viewport {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  border-radius: inherit;
  pointer-events: none;
}

.calc-sprint .screen-dash .run-host {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.calc-sprint .screen-dash .run-host .run-layer {
  position: absolute;
  inset: 0;
  height: 100%;
  width: 100%;
  padding: 0;
  transform: none;
}

.calc-sprint .screen-dash .dash-run-zone {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  z-index: 10;
  min-height: 0;
  height: 100%;
}

.calc-sprint .screen-dash .dash-run-zone .run-viewport {
  position: absolute;
  inset: 0;
  height: 100%;
  width: 100%;
  overflow: hidden;
}

.calc-sprint .screen-dash .dash-run-zone .run-host {
  position: absolute;
  inset: 0;
  height: 100%;
  width: 100%;
  pointer-events: none;
}
.calc-sprint .screen-dash .dash-goal-overlay {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  pointer-events: none;
  overflow: hidden;
  opacity: 0;
  z-index: 3;
}
.calc-sprint .screen-dash .dash-goal-overlay__image {
  position: absolute;
  inset: 50% auto auto 50%;
  width: min(92%, 960px);
  max-height: 92%;
  object-fit: contain;
  transform: translate(-50%, -50%);
  filter: saturate(1.1) brightness(1.04);
}
.calc-sprint .screen-dash .dash-goal-overlay__text {
  position: relative;
  margin: 0;
  padding: 0.16em 0.5em;
  font-size: clamp(42px, 13vw, 100px);
  font-weight: 900;
  letter-spacing: 0.08em;
  color: #fffef8;
  text-shadow: 0 6px 22px rgba(28, 20, 8, 0.5);
}
.calc-sprint .screen-dash .dash-goal-overlay.is-goal-clear-active {
  animation: dash-goal-overlay-fade 1000ms ease-out forwards;
}
.calc-sprint .screen-dash .dash-goal-overlay.is-goal-clear-active .dash-goal-overlay__text {
  animation: dash-goal-text-pop 1000ms ease-out forwards;
}
.calc-sprint .screen-dash.is-goal-shake .dash-run-zone {
  animation: dash-goal-shake 320ms ease-out 0s 2;
}
@keyframes dash-goal-overlay-fade {
  0% { opacity: 0; }
  15% { opacity: 1; }
  70% { opacity: 1; }
  100% { opacity: 0; }
}
@keyframes dash-goal-text-pop {
  0% { transform: scale(0.74); opacity: 0; }
  22% { transform: scale(1.08); opacity: 1; }
  70% { transform: scale(1.02); opacity: 1; }
  100% { transform: scale(0.96); opacity: 0; }
}
@keyframes dash-goal-shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  50% { transform: translateX(4px); }
  75% { transform: translateX(-2px); }
}
@media (prefers-reduced-motion: reduce) {
  .calc-sprint .screen-dash .dash-goal-overlay.is-goal-clear-active,
  .calc-sprint .screen-dash .dash-goal-overlay.is-goal-clear-active .dash-goal-overlay__text {
    animation-duration: 1ms;
  }
  .calc-sprint .screen-dash.is-goal-shake .dash-run-zone {
    animation: none;
  }
}
.calc-sprint .screen-dash > .screen-header,
.calc-sprint .screen-dash > .screen-main,
.calc-sprint .screen-dash > .screen-footer {
  position: relative;
  z-index: 1;
}

.calc-sprint .screen-dash > .screen-main {
  padding-bottom: 0;
}

.calc-sprint .screen-dash .dash-header {
  gap: 16px;
}.calc-sprint .screen-dash .dash-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
  align-items: stretch;
}.calc-sprint .screen-dash .dash-next-area {
  margin: 0 auto;
  font-size: 14px;
  font-weight: 600;
  color: #3d4658;
  background: rgba(255, 255, 255, 0.78);
  border: 1px solid color-mix(in srgb, var(--color-primary) 12%, transparent);
  border-radius: var(--radius-pill);
  padding: 6px 14px;
  text-align: center;
}.calc-sprint .screen-dash .dash-rules-hint {
  margin: 0 auto;
  font-size: 12px;
  font-weight: 600;
  color: #6b7383;
  text-align: center;
}.calc-sprint .screen-dash .dash-stat-card {
  display: grid;
  grid-template-columns: auto auto;
  align-items: baseline;
  gap: 6px 10px;
  padding: 12px 16px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.9);
  box-shadow: 0 8px 18px rgba(29, 36, 51, 0.12);
  min-width: 150px;
}.calc-sprint .screen-dash .dash-stat-label {
  grid-column: 1 / -1;
  font-size: 14px;
  font-weight: 600;
  color: #556076;
}.calc-sprint .screen-dash .dash-stat-value {
  font-size: var(--font-h1);
  font-weight: 700;
  color: var(--color-text);
}.calc-sprint .screen-dash .dash-stat-unit {
  font-size: 16px;
  color: #556076;
}.calc-sprint .screen-dash .dash-time-note {
  grid-column: 1 / -1;
  min-height: 16px;
  font-size: 12px;
  font-weight: 600;
  color: #7a4a3a;
}.calc-sprint .screen-dash .dash-stat-card[data-state="low"] {
  border: 1px solid rgba(224, 107, 95, 0.35);
  background: rgba(255, 243, 233, 0.95);
}.calc-sprint .screen-dash .dash-stat-card[data-state="low"] .dash-stat-label {
  color: #7a4a3a;
}.calc-sprint .screen-dash .dash-stat-card[data-state="low"] .dash-stat-value {
  color: #b5563f;
}.calc-sprint .screen-dash .dash-streak-cue {
  grid-column: 1 / -1;
  min-height: 18px;
  font-size: 14px;
  font-weight: 600;
  color: #2d3648;
  opacity: 0;
  transition: opacity 0.2s ease;
}.calc-sprint .screen-dash .dash-streak-cue.is-visible {
  opacity: 1;
}.calc-sprint .screen-dash .dash-footer {
  display: flex;
  flex-direction: column;
  gap: 16px;
}.calc-sprint .screen-dash .dash-proximity {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: 12px 16px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.9);
  box-shadow: 0 8px 18px rgba(29, 36, 51, 0.12);
  min-width: min(320px, 80vw);
}.calc-sprint .screen-dash .dash-proximity-bar {
  width: 100%;
  height: 12px;
  border-radius: var(--radius-pill);
  background: rgba(29, 36, 51, 0.12);
  overflow: hidden;
}.calc-sprint .screen-dash .dash-proximity-fill {
  height: 100%;
  width: 0%;
  border-radius: inherit;
  background: #5fb97a;
  transition: width 0.2s ease, background-color 0.2s ease;
}.calc-sprint .screen-dash .dash-proximity-text {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-text);
}.calc-sprint .screen-dash .dash-proximity[data-state="caution"] .dash-proximity-fill {
  background: #e0a23b;
}.calc-sprint .screen-dash .dash-proximity[data-state="danger"] .dash-proximity-fill {
  background: #e06b5f;
}

/* Dash Run: layout density + playfield focus (Dash-scoped overrides) */
.calc-sprint #dash-game-screen {
  --dash-cloud-image: url("../assets/bg-cloud.png");
  --run-air-image: none;
  --run-map-image: none;
  padding: 0;
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr minmax(72px, 96px);
  height: 100%;
  max-height: 100%;
  /* Dash: ground Y is driven by this CSS var (JS reads it). */
  --ground-surface-inset: 48px;
}
.calc-sprint #dash-game-screen .screen__title {
  font-size: 24px;
  margin-bottom: 2px;
}
.calc-sprint #dash-game-screen .screen__description {
  font-size: 14px;
  line-height: 1.45;
}
.calc-sprint #dash-game-screen .dash-stats {
  gap: 10px;
}
.calc-sprint #dash-game-screen .dash-stats--header .dash-stat-card {
  padding: 10px 12px;
  min-width: 120px;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.2);
  box-shadow: 0 8px 18px rgba(29, 36, 51, 0.1);
}
.calc-sprint #dash-game-screen .dash-stats--header .dash-stat-label {
  font-size: 12px;
  opacity: 0.75;
}
.calc-sprint #dash-game-screen .dash-stats--header .dash-stat-value {
  font-size: 22px;
}
.calc-sprint #dash-game-screen .dash-stats--header .dash-stat-unit {
  font-size: var(--font-caption);
}
.calc-sprint #dash-game-screen .dash-top-hud,
.calc-sprint #dash-game-screen .dash-bottom-hud {
  position: relative;
  z-index: 30;
  /* Reduce vertical density a bit */
  padding: clamp(4px, 0.9vh, 8px) clamp(10px, 2vw, 16px);
  min-height: 0;
}

.calc-sprint #dash-game-screen .dash-run-zone {
  grid-row: 2;
  position: relative;
  z-index: 2;
  height: 100%;
  overflow: hidden;
  isolation: isolate;
}

.calc-sprint #dash-game-screen .run-ground {
  bottom: var(--ground-surface-inset, 0px);
  transform: translateY(78px);
  display: block;
  visibility: visible;
  opacity: 1;
  z-index: 2;
}

.calc-sprint #dash-game-screen .dash-top-hud {
  grid-row: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: clamp(4px, 0.8vh, 8px);
  padding: clamp(6px, 1.1vh, 12px) clamp(8px, 1.6vw, 12px) clamp(4px, 0.8vh, 8px);
  overflow: visible;
  background: transparent !important;
}


.calc-sprint #dash-game-screen .dash-top-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}

.calc-sprint #dash-game-screen .dash-top-side {
  width: 100%;
  max-width: 980px;
  align-self: stretch;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: clamp(8px, 1.4vw, 14px);
  pointer-events: auto;
}

.calc-sprint #dash-game-screen .dash-top-side .dash-proximity {
  min-width: min(220px, 60vw);
  max-width: 320px;
  padding: 8px 10px;
  gap: 6px;
  background: rgba(255, 255, 255, 0.18);
}


.calc-sprint #dash-game-screen .dash-top-side #dash-game-back-button {
  min-height: 44px;
  padding: 0 14px;
  border-radius: var(--radius-pill);
  border: 1px solid rgba(255, 255, 255, 0.35);
  background: rgba(29, 36, 51, 0.56);
  color: #fff;
}

.calc-sprint #dash-game-screen .dash-top-controls {
  display: grid;
  align-items: start;
  justify-content: center;
  gap: clamp(8px, 1.4vw, 14px);
  width: 100%;
  max-width: 980px;
  margin: 0 auto;
  background: transparent;
}


.calc-sprint #dash-game-screen .dash-top-controls .dash-top-cluster {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 360px);
  align-items: start;
  justify-content: center;
  gap: clamp(10px, 1.8vw, 16px);
  width: 100%;
  max-width: 980px;
}

.calc-sprint #dash-game-screen .dash-top-controls .dash-problem-grid {
  min-width: 0;
  max-width: 560px;
}

.calc-sprint #dash-game-screen .dash-top-controls .dash-keypad-stack {
  width: min(360px, 100%);
  gap: var(--space-2);
}

.calc-sprint #dash-game-screen #dash-game-enemy,
.calc-sprint #dash-game-screen #dash-game-next-area {
  display: none !important;
}

.calc-sprint #dash-game-screen .dash-top-controls .dash-keypad-actions {
  margin-top: 4px;
}

.calc-sprint #dash-game-screen .dash-top-controls .dash-top-cluster,
.calc-sprint #dash-game-screen .dash-run-zone,
.calc-sprint #dash-game-screen .dash-bottom-hud,
.calc-sprint #dash-game-screen .dash-problem-main {
  background-color: transparent !important;
}

.calc-sprint #dash-game-screen .dash-top-controls .dash-submit-button {
  width: min(380px, 100%);
  height: 52px;
  min-height: 52px;
  padding: 0 20px;
  border-radius: var(--radius-pill);
  font-size: 18px;
}

.calc-sprint #dash-game-screen .dash-bottom-hud {
  grid-row: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  align-self: stretch;
  pointer-events: none;
  gap: clamp(4px, 0.7vh, 8px);
  padding: clamp(6px, 1vh, 10px) clamp(10px, 1.6vw, 14px);
  /* Show dash background (run-sky) behind bottom HUD too */
  background: transparent !important;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  overflow: visible;
}

/* Show dash background behind TOP/MIDDLE/BOTTOM (remove "white panel" feel) */
.calc-sprint #dash-game-screen > header.dash-header,
.calc-sprint #dash-game-screen > .screen-main.dash-playfield,
.calc-sprint #dash-game-screen > .screen-footer {
  background: transparent !important;
}

/* Ensure the run viewport (sky/ground) is the base layer everywhere */
.calc-sprint #dash-game-screen .dash-run-zone {
  background: transparent !important;
}

.calc-sprint #dash-game-screen .dash-bottom-hud #dash-game-time-wrap,
.calc-sprint #dash-game-screen .dash-bottom-hud .dash-time-hud,
.calc-sprint #dash-game-screen .dash-bottom-hud .dash-bottom-stats,
.calc-sprint #dash-game-screen .dash-bottom-hud .dash-bottom-side,
.calc-sprint #dash-game-screen .dash-bottom-hud .dash-stats--footer,
.calc-sprint #dash-game-screen .dash-bottom-hud .title-actions,
.calc-sprint #dash-game-screen .dash-bottom-hud #dash-game-enemy {
  position: static;
  transform: none;
  margin-top: 0;
  top: auto;
  right: auto;
  bottom: auto;
  left: auto;
}

.calc-sprint #dash-game-screen .dash-bottom-stats {
  /* Parent row for bottom 4 HUD cards */
  --dash-stat-card-min-h: clamp(74px, 9vh, 94px);
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr)) auto;
  align-items: stretch;
  gap: clamp(6px, 1vw, 10px);
  width: min(920px, 100%);
  max-width: 100%;
  overflow: hidden;
}


.calc-sprint #dash-game-screen .dash-bottom-hud > #dash-game-time-wrap {
  width: min(920px, 100%);
  max-width: 100%;
  margin: 0;
  align-self: center;
}

.calc-sprint #dash-game-screen .dash-bottom-hud > #dash-game-time-wrap .dash-timevalue {
  margin-left: auto;
}

.calc-sprint #dash-game-screen .dash-bottom-hud > #dash-game-time-wrap {
  width: min(920px, 100%);
  margin: 0;
  align-self: center;
}

.calc-sprint #dash-game-screen .dash-bottom-hud > #dash-game-time-wrap .dash-timevalue {
  margin-left: auto;
}


.calc-sprint #dash-game-screen .dash-bottom-stats .dash-exit-card {
  align-self: stretch;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: auto;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-exit-card #dash-game-back-button {
  min-height: 40px;
  padding: 0 12px;
  border-radius: var(--radius-pill);
  font-size: var(--font-caption);
  white-space: nowrap;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card {
  /* Item cards: keep all four cards top-aligned and equal-height */
  align-self: stretch;
  height: 100%;
  min-height: var(--dash-stat-card-min-h);
  min-width: 0;
  padding: clamp(2px, 0.5vh, 4px) clamp(6px, 1vw, 10px);
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card .dash-streak-cue {
  min-height: 0;
  line-height: 1.2;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-value {
  font-size: 18px;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-label,
.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-unit {
  font-size: 11px;
}

.calc-sprint #dash-game-screen > .screen-main.dash-playfield {
  max-width: 980px;
  margin: 0 auto;
  padding: 0;
  background: transparent;
  border: none;
  box-shadow: none;
  position: relative;
  min-height: 0;
  height: 100%;
}
.calc-sprint #dash-game-screen > .screen-main {
  margin-bottom: 0;
}
.calc-sprint #dash-game-screen .dash-hud {
  position: relative;
  padding: 0;
  display: flex;
  justify-content: center;
  align-items: flex-end;
  flex: 0 0 auto;
  z-index: 3;
  position: absolute;
  left: 50%;
  right: auto;
  transform: translateX(-50%);
  /* lift keypad so it never covers the runner/ground axis */
  bottom: clamp(140px, 18vh, 230px);
}
.calc-sprint #dash-game-screen .dash-hud::before {
  display: none;
}
.calc-sprint #dash-game-screen .dash-lane {
  width: min(520px, 44vw);
  display: flex;
  flex-direction: column;
  gap: clamp(8px, 1.6vh, 12px);
  align-items: stretch;
  position: relative;
  z-index: 1;
}

/* Desktop (Dash Run / PC):
+   - Problem/answer: LEFT
+   - Keypad/submit: CENTER
+   - Runner axis (bottom lane): NO UI overlaps
+   - Time bar: RIGHT-TOP independent
+*/
@media (min-width: 901px) {
  /* 0) Keep everything within one viewport (no page scroll). */
  .calc-sprint #dash-game-screen {
    --hud-top: clamp(20px, 4vh, 56px);
    --hud-gap: clamp(12px, 2vh, 20px);
    --keypad-w: min(520px, 40vw);
    --keypad-right: clamp(16px, 3vw, 40px);
    --timebar-h: clamp(14px, 2vh, 18px);
    height: calc(100vh - 32px);
    max-height: calc(100vh - 32px);
    overflow: hidden;
  }

  /* Hide stat boxes to widen the top UI area. */
  .calc-sprint #dash-game-screen > header.dash-header .dash-stats--header,
  .calc-sprint #dash-game-screen > header.dash-header .dash-next-area,
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud .dash-stats--footer {
    display: none !important;
  }

  /* Step1: take Dash screen out of document flow (no page scroll). */
  .calc-sprint #dash-game-screen.is-active {
    position: fixed;
    inset: 16px;
    width: auto;
    height: auto;
    max-height: none;
    margin: 0;
    overflow: hidden;
  }

  /* Reuse header container as a full-screen anchor for the exit button only. */
  .calc-sprint #dash-game-screen > header.dash-header {
    inset: 0;
    padding: 0;
    pointer-events: none;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud {
    position: absolute;
    inset: auto;
    right: clamp(12px, 2vw, 24px);
    bottom: clamp(12px, 2vh, 24px);
    top: auto;
    left: auto;
    width: auto;
    max-width: min(360px, 32vw);
    transform: none;
    pointer-events: auto;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud .title-actions {
    margin: 0;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud #dash-game-back-button {
    width: auto;
    max-width: none;
    padding: 10px 14px;
    min-height: 44px;
    font-size: 14px;
    white-space: nowrap;
  }

  /* 1) Use the playfield as the absolute positioning root. */
  .calc-sprint #dash-game-screen > .screen-main.dash-playfield {
    max-width: none;
    width: 100%;
    margin: 0;
    height: 100%;
  }

  /* 2) Full-screen overlay container for the "control island" layout. */
  .calc-sprint #dash-game-screen .dash-hud {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 55%;
    transform: none;
    display: block;
    pointer-events: none;
  }
  .calc-sprint #dash-game-screen .dash-lane {
    width: 100%;
    height: 100%;
    display: block;
    pointer-events: none;
  }
  .calc-sprint #dash-game-screen .game-focus {
    position: static;
  }

  /* 3) Place elements on a fixed grid: problem above runner (bottom-left), keypad top-center. */
  /* Step2: increase specificity so desktop grid wins later rules. */
  .calc-sprint #dash-game-screen .dash-hud .dash-problem-grid {
    position: absolute;
    inset: 0;
    display: block;
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 var(--keypad-right);
    pointer-events: none;
  }

  /* keypad: top-center */
  .calc-sprint #dash-game-screen .dash-hud .dash-keypad-stack {
    position: absolute;
    top: var(--hud-top);
    right: var(--keypad-right);
    width: var(--keypad-w);
    display: flex;
    flex-direction: column;
    gap: clamp(10px, 1.8vh, 16px);
    pointer-events: auto;
  }
  .calc-sprint #dash-game-screen .dash-hud #dash-game-keypad {
    width: 100%;
    max-width: none;
  }
  .calc-sprint #dash-game-screen .dash-hud #dash-game-keypad.game-keypad {
    grid-template-columns: repeat(3, minmax(60px, 1fr));
    gap: 10px;
  }
  .calc-sprint #dash-game-screen .dash-hud #dash-game-keypad .keypad-button {
    font-size: 18px;
    padding: 8px 0;
  }
  .calc-sprint #dash-game-screen .dash-hud #dash-game-keypad[hidden] {
    display: grid !important;
  }
  .calc-sprint #dash-game-screen .dash-hud .dash-keypad-actions {
    width: 100%;
    max-width: none;
  }

  /* problem: above runner (bottom-left) */
  .calc-sprint #dash-game-screen .dash-hud .dash-problem-main {
    position: absolute;
    top: calc(var(--hud-top) + var(--timebar-h) + var(--hud-gap));
    left: 50%;
    right: auto;
    width: min(720px, calc(100% - (var(--keypad-right) * 2)));
    max-width: calc(100vw - (var(--keypad-right) + var(--keypad-w) + var(--hud-gap) + 32px));
    transform: translateX(-50%);
    pointer-events: auto;
    margin-bottom: 0;
    padding: clamp(6px, 1.2vh, 10px) clamp(8px, 1.6vw, 14px);
    border-radius: 16px;
    background: transparent;
    border: none;
    box-shadow: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    z-index: 2;
    transition: transform 0.18s ease, opacity 0.18s ease;
    will-change: transform, opacity;
  }

  /* Hook for future lightweight transitions on problem swaps. */
  .calc-sprint #dash-game-screen .dash-hud .dash-problem-main.is-transitioning {
    transform: translateX(-50%) translateY(-6px);
    opacity: 0.88;
  }

  /* Independent time HUD anchored at the top without overlapping the keypad. */
  .calc-sprint #dash-game-screen .dash-hud .dash-time-hud {
    position: absolute;
    top: var(--hud-top);
    left: var(--keypad-right);
    right: calc(var(--keypad-right) + var(--keypad-w) + var(--hud-gap));
    width: min(720px, calc(100% - var(--keypad-w) - var(--hud-gap) - (var(--keypad-right) * 2)));
    pointer-events: auto;
  }
}

/* Step4: keep top-right HUD inside viewport (no overflow). */
@media (min-width: 901px) {
  /* Force top HUD to be truly top-right and never overflow. */
  .calc-sprint #dash-game-screen > header.dash-header .dash-stats--header,
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud,
  .calc-sprint #dash-game-screen > header.dash-header .dash-next-area {
    right: clamp(12px, 2vw, 24px);
    left: auto;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-stats--header {
    top: clamp(10px, 2vh, 18px);
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud {
    top: calc(clamp(10px, 2vh, 18px) + 56px);
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-next-area {
    top: calc(clamp(10px, 2vh, 18px) + 6px);
    opacity: 0.72;
    text-align: right;
  }

  .calc-sprint #dash-game-screen > header.dash-header .dash-stats--header,
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud,
  .calc-sprint #dash-game-screen > header.dash-header .dash-next-area {
    max-width: min(340px, 34vw);
    box-sizing: border-box;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-next-area {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud .dash-proximity-text {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
}


.calc-sprint #dash-game-screen .game-focus {
  padding: 0;
  margin-bottom: 0;
  gap: 6px;
}
.calc-sprint #dash-game-screen {
  --timebar-h: clamp(14px, 2vh, 18px);
}
.calc-sprint #dash-game-screen .dash-problem-grid {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: clamp(6px, 1.2vh, 10px);
  width: 100%;
  z-index: 2;
}
.calc-sprint #dash-game-screen .dash-time-hud {
  margin-bottom: 0;
}
.calc-sprint #dash-game-screen .dash-keypad-stack {
  display: flex;
  flex-direction: column;
  gap: clamp(10px, 1.8vh, 16px);
  position: relative;
  z-index: 6;
}
.calc-sprint #dash-game-screen .dash-problem-main {
  display: grid;
  gap: clamp(10px, 2vh, 14px);
  align-items: start;
  background: transparent;
  border: 0;
  box-shadow: none;
}

/* Keep the problem card visually "clean" when we detach it from the lane on wide screens. */
.calc-sprint #dash-game-screen .dash-problem-main .question-area {
  transform: none;
  background: transparent;
  border-color: rgba(255, 255, 255, 0.32);
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

.calc-sprint #dash-game-screen .problem-frame {
  background: transparent;
  box-shadow: none;
  border-color: rgba(255, 255, 255, 0.34);
}

.calc-sprint #dash-game-screen .dash-problem-panel {
  display: grid;
  place-items: center;
  min-height: clamp(58px, 8vh, 76px);
  margin-bottom: clamp(6px, 0.9vh, 10px);
  padding: clamp(8px, 1.2vh, 12px) clamp(12px, 2vw, 18px);
  border-radius: 16px;
  border: 1px solid rgba(190, 211, 255, 0.22);
  background: rgba(10, 18, 28, 0.86);
  box-shadow: 0 10px 22px rgba(4, 8, 14, 0.35);
}

.calc-sprint #dash-game-screen .dash-problem-panel #dash-game-question {
  color: #ffffff;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}

.calc-sprint #dash-game-screen .problem-frame::before,
.calc-sprint #dash-game-screen .problem-frame::after {
  opacity: 0;
  box-shadow: none;
}
.calc-sprint #dash-game-screen .game-actions {
  margin-top: 0;
}
.calc-sprint #dash-game-screen .game-action-row {
  justify-content: center;
}
.calc-sprint #dash-game-screen .question-area {
  transform: none;
}

/* Dash: primary time (danger gauge) */
.calc-sprint #dash-game-screen .dash-time {
  width: min(520px, 100%);
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: clamp(6px, 1.4vh, 10px) clamp(10px, 2vw, 16px);
  align-items: center;
  justify-content: space-between;
}
.calc-sprint #dash-game-screen .dash-timebar {
  flex: 1 1 280px;
  height: var(--timebar-h);
  border-radius: var(--radius-pill);
  background: rgba(243, 247, 255, 0.88);
  border: 1px solid rgba(29, 36, 51, 0.15);
  overflow: hidden;
  box-shadow: inset 0 1px 2px rgba(29, 36, 51, 0.1);
}
.calc-sprint #dash-game-screen .dash-timebar__fill {
  height: 100%;
  width: 100%;
  border-radius: inherit;
  background: #32c97d;
  transition: width 0.12s linear, background-color 0.12s ease;
  box-shadow: 0 0 8px rgba(50, 201, 125, 0.35);
}
.calc-sprint #dash-game-screen #dash-game-time-wrap[data-state="caution"] .dash-timebar__fill {
  background: #f0b24a;
  box-shadow: 0 0 8px rgba(240, 178, 74, 0.35);
}
.calc-sprint #dash-game-screen #dash-game-time-wrap[data-state="danger"] .dash-timebar__fill {
  background: #e84f43;
  box-shadow: 0 0 8px rgba(232, 79, 67, 0.35);
}
.calc-sprint #dash-game-screen .dash-timevalue {
  flex: 0 0 auto;
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-weight: 900;
  color: rgba(29, 36, 51, 0.96);
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
}
.calc-sprint #dash-game-screen .dash-time-seconds {
  font-size: clamp(22px, 3.2vw, 30px);
  letter-spacing: 0.02em;
  font-variant-numeric: tabular-nums;
}
.calc-sprint #dash-game-screen .dash-time-unit {
  font-size: clamp(14px, 2.2vw, 18px);
  font-weight: 800;
  opacity: 0.75;
}
.calc-sprint #dash-game-screen .dash-time-note {
  width: 100%;
  min-height: 16px;
  font-size: 12px;
  font-weight: 800;
  color: rgba(29, 36, 51, 0.6);
}
.calc-sprint #dash-game-screen #dash-game-time-wrap[data-state="danger"] .dash-time-note {
  color: rgba(224, 107, 95, 0.95);
}
.calc-sprint #dash-game-screen .dash-problem-main .question-area:not(.problem-frame) {
  background: transparent;
  border: none;
  box-shadow: none;
}
.calc-sprint #dash-game-screen .dash-problem-main .question-area:not(.problem-frame)::after {
  opacity: 0;
}
.calc-sprint #dash-game-screen .question-area:not(.problem-frame) {
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
.calc-sprint #dash-game-screen .question-area:not(.problem-frame)::after {
  opacity: 0.2;
}
.calc-sprint #dash-game-screen .dash-stat-card,
.calc-sprint #dash-game-screen .dash-proximity {
  background: rgba(255, 255, 255, 0.16);
  border: 1px solid rgba(255, 255, 255, 0.24);
  box-shadow: 0 10px 22px rgba(29, 36, 51, 0.12);
}
.calc-sprint #dash-game-screen .dash-next-area {
  background: rgba(255, 255, 255, 0.14);
  border-color: rgba(255, 255, 255, 0.22);
}
.calc-sprint #dash-game-screen .dash-rules-hint {
  color: rgba(29, 36, 51, 0.58);
  display: none;
}
.calc-sprint #dash-game-screen .dash-sidehud {
  opacity: 0.72;
}
.calc-sprint #dash-game-screen .dash-sidehud .dash-stat-card,
.calc-sprint #dash-game-screen .dash-sidehud .dash-proximity {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid transparent;
  box-shadow: none;
}
.calc-sprint #dash-game-screen .dash-sidehud .dash-stat-label {
  font-size: 12px;
  opacity: 0.72;
}
.calc-sprint #dash-game-screen[data-enemy-state="caution"] .dash-sidehud {
  opacity: 0.86;
}
.calc-sprint #dash-game-screen[data-enemy-state="danger"] .dash-sidehud {
  opacity: 1;
}
.calc-sprint #dash-game-screen[data-enemy-state="danger"] .dash-sidehud .dash-stat-card {
  opacity: 0.55;
}
.calc-sprint #dash-game-screen[data-enemy-state="danger"] .dash-sidehud .dash-proximity {
  opacity: 1;
}
.calc-sprint #dash-game-screen .question-text {
  font-size: clamp(28px, 4.2vw, 38px);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
  letter-spacing: 0.03em;
  word-spacing: 0.14em;
  white-space: nowrap;
}
.calc-sprint #dash-game-screen .answer-input {
  pointer-events: none;
  caret-color: transparent;
  color: var(--color-text);
  background: #eef2ff;
  border-color: rgba(29, 36, 51, 0.2);
  box-shadow: none;
  font-weight: 700;
  -moz-appearance: textfield;
  appearance: textfield;
  height: clamp(46px, 6vh, 56px);
  font-size: clamp(20px, 3.4vw, 26px);
  text-align: center;
  border-radius: 12px;
}
.calc-sprint #dash-game-screen .answer-input::-webkit-outer-spin-button,
.calc-sprint #dash-game-screen .answer-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.calc-sprint #dash-game-screen .answer-input:focus {
  border-color: rgba(56, 103, 255, 0.18);
  box-shadow: none;
}
.calc-sprint #dash-game-screen .dash-keypad-actions {
  display: flex;
  justify-content: center;
  width: 100%;
  margin-top: clamp(2px, 0.6vh, 6px);
  position: relative;
  z-index: 6;
}

.calc-sprint #dash-game-screen .dash-problem-grid,
.calc-sprint #dash-game-screen .dash-keypad-stack,
.calc-sprint #dash-game-screen #dash-game-keypad {
  background: transparent;
  box-shadow: none;
  border: 0;
}
.calc-sprint #dash-game-screen .dash-submit-button {
  width: min(380px, 100%);
  height: 52px;
  min-height: 52px;
  font-size: 18px;
  opacity: 0.95;
  box-shadow: none;
}
.calc-sprint #dash-game-screen .primary-button {
  background: #3d5afe;
  border: 1px solid rgba(255, 255, 255, 0.35);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
.calc-sprint #dash-game-screen .secondary-button {
  background: rgba(255, 255, 255, 0.14);
  border: 1px solid rgba(255, 255, 255, 0.22);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}
.calc-sprint #dash-game-screen .game-keypad .keypad-button {
  background: #ffffff;
  border: 1px solid rgba(29, 36, 51, 0.18);
  box-shadow: 0 12px 24px rgba(29, 36, 51, 0.16);
  color: var(--color-text);
  font-size: clamp(18px, 3.1vw, 22px);
  padding: clamp(10px, 1.5vh, 14px) 0;
  transition: transform 0.06s ease, box-shadow 0.06s ease, background-color 0.06s ease, color 0.06s ease;
}
.calc-sprint #dash-game-screen .game-keypad .keypad-button:active {
  transform: translateY(1px);
  box-shadow: 0 4px 10px rgba(29, 36, 51, 0.16);
  background: rgba(56, 103, 255, 0.92);
  border-color: rgba(56, 103, 255, 0.9);
  color: #ffffff;
}
.calc-sprint #dash-game-screen .game-keypad .keypad-button--action:active {
  background: rgba(29, 36, 51, 0.88);
  border-color: rgba(29, 36, 51, 0.9);
}
.calc-sprint #dash-game-screen #dash-game-back-button {
  display: inline-flex;
}
.calc-sprint #dash-game-screen .feedback {
  min-height: 26px;
}

@keyframes calc-sprint-dash-attack-pop {
  0% {
    transform: translateY(0) scale(1);
    filter: brightness(1);
  }
  35% {
    transform: translateY(-1px) scale(1.02);
    filter: brightness(1.08);
  }
  100% {
    transform: translateY(0) scale(1);
    filter: brightness(1);
  }
}

@keyframes calc-sprint-dash-hit-shake {
  0% {
    transform: translateX(0);
  }
  25% {
    transform: translateX(-2px);
  }
  55% {
    transform: translateX(2px);
  }
  100% {
    transform: translateX(0);
  }
}

.calc-sprint #dash-game-screen .dash-problem-main.is-attack .question-area {
  animation: calc-sprint-dash-attack-pop 0.16s ease-out 1;
  box-shadow: 0 18px 40px rgba(56, 103, 255, 0.18);
}
.calc-sprint #dash-game-screen .dash-problem-main.is-hit .question-area {
  animation: calc-sprint-dash-hit-shake 0.16s ease-out 1;
  border-color: rgba(224, 107, 95, 0.55);
  box-shadow: 0 18px 40px rgba(224, 107, 95, 0.18);
}
.calc-sprint #dash-game-screen .game-keypad {
  width: 100%;
  margin: 0;
  grid-template-columns: repeat(3, minmax(72px, 1fr));
  gap: clamp(6px, 1.1vh, 10px);
}
.calc-sprint #dash-game-screen > .screen-footer {
  margin-top: 8px;
}
.calc-sprint #dash-game-screen .dash-footer {
  gap: 10px;
}
.calc-sprint #dash-game-screen .dash-stats--footer {
  flex-wrap: nowrap;
  gap: 10px;
  justify-content: center;
  align-items: stretch;
}
.calc-sprint #dash-game-screen .dash-stats--footer .dash-stat-card {
  min-width: 120px;
  padding: 10px 12px;
}
.calc-sprint #dash-game-screen .dash-stats--footer .dash-proximity {
  min-width: 260px;
}
.calc-sprint #dash-game-screen .title-actions {
  gap: 10px;
}
.calc-sprint #dash-game-screen .dash-sidehud .dash-proximity {
  order: -1;
}

@media (min-width: 901px) {
  .calc-sprint #dash-game-screen #dash-game-keypad-toggle {
    display: none;
  }
  /* Always show keypad on wide screens (even if DOM keeps [hidden]). */
  .calc-sprint #dash-game-screen #dash-game-keypad[hidden] {
    display: grid !important;
  }
}

@media (max-width: 900px) {
  .calc-sprint #dash-game-screen .dash-problem-grid {
    display: flex;
    flex-direction: column;
    gap: clamp(8px, 1.6vh, 12px);
    width: 100%;
  }
  .calc-sprint #dash-game-screen .dash-top-controls {
    justify-content: stretch;
  }
  .calc-sprint #dash-game-screen .dash-top-controls .dash-top-cluster {
    grid-template-columns: 1fr;
  }
  .calc-sprint #dash-game-screen .dash-top-controls .dash-keypad-stack {
    width: 100%;
  }
  .calc-sprint #dash-game-screen .dash-top-controls .dash-problem-grid {
    max-width: none;
  }
}

/* Dash Run: wide layout (PC) - HUD positioning */
@media (min-width: 901px) {
  /* Unify top-right HUD as a single readable column (no overlaps). */
  .calc-sprint #dash-game-screen > header.dash-header {
    inset: auto;
    left: auto;
    right: clamp(12px, 2vw, 24px);
    top: clamp(10px, 2vh, 18px);
    width: min(340px, 34vw);
    padding: 0;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-2);
    pointer-events: none;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-next-area,
  .calc-sprint #dash-game-screen > header.dash-header .dash-stats--header,
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud {
    position: static;
    top: auto;
    right: auto;
    left: auto;
    width: 100%;
    max-width: none;
    margin: 0;
    transform: none;
    pointer-events: auto;
    box-sizing: border-box;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-next-area {
    text-align: right;
    opacity: 0.9;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud {
    gap: var(--space-2);
    opacity: 0.9;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud .dash-stats--footer {
    justify-content: flex-start;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-stat-label,
  .calc-sprint #dash-game-screen > header.dash-header .dash-proximity-text,
  .calc-sprint #dash-game-screen > header.dash-header .dash-next-area {
    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.35), 0 10px 26px rgba(29, 36, 51, 0.18);
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud .dash-stat-card,
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud .dash-proximity {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid transparent;
    box-shadow: none;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud .dash-stat-label {
    font-size: 12px;
    opacity: 0.72;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud .dash-stat-value {
    font-size: 20px;
  }
  .calc-sprint #dash-game-screen > header.dash-header .dash-sidehud .dash-proximity-text {
    font-size: 12px;
  }
  .calc-sprint #dash-game-screen[data-enemy-state="safe"] .dash-sidehud {
    opacity: 0.6;
  }
  .calc-sprint #dash-game-screen[data-enemy-state="caution"] .dash-sidehud {
    opacity: 0.75;
  }
  .calc-sprint #dash-game-screen[data-enemy-state="danger"] .dash-sidehud .dash-proximity {
    border-color: rgba(224, 107, 95, 0.7);
    background: rgba(224, 107, 95, 0.16);
    box-shadow: 0 12px 24px rgba(224, 107, 95, 0.18);
    opacity: 1;
  }
  .calc-sprint #dash-game-screen[data-enemy-state="danger"] .dash-sidehud .dash-stat-card {
    opacity: 0.55;
  }
  .calc-sprint #dash-game-screen[data-enemy-state="danger"] .dash-sidehud {
    opacity: 1;
  }
}

@media (max-width: 900px) {
  .calc-sprint #dash-game-screen > header.dash-header {
    display: block;
  }
}

@keyframes calc-sprint-dash-chase-shake {
  0% {
    transform: translate(0, 0);
  }
  20% {
    transform: translate(0.5px, -0.5px);
  }
  45% {
    transform: translate(-0.8px, 0.4px);
  }
  70% {
    transform: translate(0.6px, 0.6px);
  }
  100% {
    transform: translate(0, 0);
  }
}

@keyframes calc-sprint-dash-playfield-drift {
  0% {
    background-position: 0% 0%;
  }
  100% {
    background-position: 120px 0%;
  }
}

.calc-sprint #dash-game-screen::before {
  content: "";
  position: absolute;
  inset: 0;
  /* ① 背景色を追加して run-world の背景色を再現 */
  background-color: var(--dash-bg-color, transparent);
  pointer-events: none;
  z-index: 0;
  background: transparent;
}

.calc-sprint .screen-dash[data-enemy-state="caution"] .run-world::after {
  opacity: 0.12;
}
.calc-sprint .screen-dash[data-enemy-state="danger"] .run-world::after {
  opacity: 0.22;
}
.calc-sprint .screen-dash[data-enemy-state="danger"] .run-world {
  animation: calc-sprint-dash-chase-shake 0.22s linear infinite;
}

.calc-sprint .screen-dash-result .dash-result-header {
  gap: 12px;
}
.calc-sprint .screen-dash-result .dash-result-main {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-5);
}
.calc-sprint .screen-dash-result .dash-result-message {
  font-size: 18px;
  font-weight: 600;
  color: #3d4658;
  background: rgba(255, 255, 255, 0.85);
  padding: 14px 20px;
  border-radius: 12px;
  border: 1px solid color-mix(in srgb, var(--color-primary) 12%, transparent);
}
.calc-sprint .screen-dash-result .dash-result-record {
  width: min(920px, 92vw);
  position: relative;
}
.calc-sprint .screen-dash-result .dash-result-reward {
  text-align: center;
  margin-bottom: var(--space-3);
  padding: 14px 16px;
  border-radius: var(--radius-lg);
  border: 1px solid color-mix(in srgb, var(--color-secondary) 30%, transparent);
  background:
    radial-gradient(circle at 16% 22%, color-mix(in srgb, var(--color-secondary) 26%, transparent) 0 8px, transparent 9px),
    radial-gradient(circle at 84% 78%, color-mix(in srgb, var(--color-accent) 24%, transparent) 0 7px, transparent 8px),
    linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 95%, transparent), color-mix(in srgb, var(--color-surface-soft) 90%, transparent));
  box-shadow: var(--shadow-1);
}
.calc-sprint .screen-dash-result .dash-result-reward__kicker {
  font-size: var(--font-caption);
  letter-spacing: .08em;
  font-weight: 700;
  color: color-mix(in srgb, var(--color-primary) 85%, var(--color-text));
}
.calc-sprint .screen-dash-result .dash-result-reward__title {
  margin-top: 4px;
  font-size: clamp(24px, 4vw, 32px);
  font-weight: 800;
  color: color-mix(in srgb, var(--color-primary-strong) 80%, var(--color-text));
}
.calc-sprint .screen-dash-result .dash-result-reward__sub {
  margin-top: 4px;
  font-size: 14px;
  color: var(--color-text-sub);
}
.calc-sprint .screen-dash-result .dash-result-confetti {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 3;
  overflow: hidden;
}
.calc-sprint .screen-dash-result .dash-result-confetti__piece {
  position: absolute;
  top: -10px;
  left: var(--piece-x);
  width: 8px;
  height: 14px;
  border-radius: 2px;
  opacity: 0;
  background: hsl(var(--piece-hue) 95% 62%);
  transform: translate3d(-50%, -6px, 0) rotate(var(--piece-rot));
  animation: dash-result-confetti-fall 820ms ease-out var(--piece-delay) forwards;
}
@keyframes dash-result-confetti-fall {
  0% {
    opacity: 0;
    transform: translate3d(-50%, -6px, 0) rotate(var(--piece-rot));
  }
  15% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translate3d(calc(-50% + 10px), 180px, 0) rotate(calc(var(--piece-rot) * 3));
  }
}
.calc-sprint .screen-dash-result .dash-result-stage {
  font-size: 15px;
  font-weight: 600;
  color: #4a5570;
  text-align: center;
  margin-bottom: 6px;
}
.calc-sprint .screen-dash-result .dash-result-reason {
  margin-top: var(--space-3);
  font-size: 14px;
  font-weight: 500;
  color: var(--color-text-sub);
  text-align: center;
  margin-bottom: 0;
}
.calc-sprint .screen-dash-result .dash-result-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 16px;
  justify-items: stretch;
}
.calc-sprint .screen-dash-result .dash-result-footer {
  margin-top: 8px;
}
.calc-sprint .screen-dash-result .dash-result-replay-main {
  min-height: 56px;
  font-size: clamp(20px, 3vw, 24px);
  box-shadow: 0 14px 28px color-mix(in srgb, var(--color-primary) 34%, transparent);
}
.calc-sprint .screen-dash-result .dash-result-replay-main:hover {
  transform: translateY(-2px);
}
.calc-sprint .screen-dash-result .dash-stat-card {
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.calc-sprint .screen-dash-result .dash-stat-card:hover {
  box-shadow: 0 10px 20px rgba(29, 36, 51, 0.16);
  transform: translateY(-1px);
}

@media (max-width: 640px) {
  .calc-sprint .screen-dash .dash-stat-card {
    min-width: 120px;
  }
  .calc-sprint .screen-dash .dash-stat-value {
    font-size: 24px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .calc-sprint .btn,
  .calc-sprint .btn-primary,
  .calc-sprint .btn-secondary,
  .calc-sprint .btn-ghost,
  .calc-sprint .primary-button,
  .calc-sprint .secondary-button,
  .calc-sprint .card,
  .calc-sprint .card--stat,
  .calc-sprint .badge {
    transition: none;
    animation: none;
  }

  .calc-sprint .btn:hover,
  .calc-sprint .primary-button:hover,
  .calc-sprint .secondary-button:hover,
  .calc-sprint .screen-dash-result .dash-stat-card:hover {
    transform: none;
  }

  .calc-sprint .screen-dash .dash-proximity-fill {
    transition: none;
  }
  .calc-sprint .screen-dash .dash-streak-cue {
    transition: none;
  }
  .calc-sprint .screen-dash[data-enemy-state="danger"] .run-world {
    animation: none;
  }
  .calc-sprint #dash-game-screen::before {
    animation: none;
  }
  .calc-sprint #dash-game-screen .dash-timebar__fill {
    transition: none;
  }
  .calc-sprint #dash-game-screen .game-keypad .keypad-button {
    transition: none;
  }
  .calc-sprint .screen-dash-result .dash-stat-card {
    transition: none;
  }
  .calc-sprint .screen-dash-result .dash-stat-card:hover {
    transform: none;
  }
  .calc-sprint .screen-dash-result .dash-result-confetti,
  .calc-sprint .screen-dash-result .dash-result-confetti__piece {
    animation: none;
    display: none;
  }
}.calc-sprint .question-area {
  display: flex;
  flex-direction: column;
  gap: 14px;
  align-items: center;
  position: relative;
  margin-bottom: 6px;
  z-index: 2;
}
.calc-sprint .problem-frame {
  --problem-frame-accent: 96 168 255;
  position: relative;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  width: fit-content;
  padding: clamp(14px, 2.2vh, 18px) clamp(16px, 2.4vw, 24px);
  border-radius: var(--radius-lg);
  border: 2px solid rgba(var(--problem-frame-accent), 0.75);
  background: linear-gradient(180deg, rgba(8, 16, 32, 0.7), rgba(10, 18, 38, 0.5));
  box-shadow:
    0 0 0 1px rgba(var(--problem-frame-accent), 0.18),
    0 0 6px rgba(var(--problem-frame-accent), 0.24),
    0 0 16px rgba(var(--problem-frame-accent), 0.18),
    0 12px 24px rgba(4, 8, 20, 0.3);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  isolation: isolate;
}
.calc-sprint .problem-frame::before {
  content: "";
  position: absolute;
  inset: 3px;
  border-radius: var(--radius-md);
  border: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: inset 0 0 8px rgba(var(--problem-frame-accent), 0.16);
  pointer-events: none;
}
.calc-sprint .problem-frame--caution {
  --problem-frame-accent: 255 196 92;
}
.calc-sprint .problem-frame--danger {
  --problem-frame-accent: 255 107 107;
}
.calc-sprint .question-text,
.calc-sprint .problem-frame__text {
  font-size: clamp(30px, 3vw, 36px);
  font-weight: 700;
  color: #f7fbff;
  text-shadow: 0 2px 8px rgba(8, 12, 24, 0.6);
}
.calc-sprint .answer-input,
.calc-sprint .problem-frame__input {
  font-size: 24px;
  padding: 10px 16px;
  width: min(240px, 80vw);
  text-align: center;
  border-radius: var(--radius-pill);
  border: 2px solid rgba(var(--problem-frame-accent), 0.55);
  background: rgba(6, 12, 24, 0.75);
  color: #f7fbff;
  outline: none;
  box-shadow: inset 0 0 12px rgba(0, 0, 0, 0.35), 0 0 12px rgba(var(--problem-frame-accent), 0.2);
  transition: border 0.2s ease, box-shadow 0.2s ease;
  -moz-appearance: textfield;
  appearance: textfield;
}
.calc-sprint .answer-input::-webkit-outer-spin-button,
.calc-sprint .answer-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.calc-sprint .answer-input:focus {
  border-color: rgba(var(--problem-frame-accent), 0.85);
  box-shadow: 0 0 0 3px rgba(var(--problem-frame-accent), 0.35),
    0 0 20px rgba(var(--problem-frame-accent), 0.5);
}
.calc-sprint .feedback {
  min-height: 32px;
  text-align: center;
  font-size: 24px;
  font-weight: 700;
}.calc-sprint .feedback.is-correct {
  color: #2ecc71;
}.calc-sprint .feedback.is-wrong {
  color: #e74c3c;
}.calc-sprint .game-actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
  align-items: center;
  margin-top: 8px;
  position: relative;
  z-index: 6;
}.calc-sprint .game-action-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
}.calc-sprint .game-keypad {
  display: grid;
  grid-template-columns: repeat(3, minmax(72px, 1fr));
  gap: 10px;
  width: min(320px, 90vw);
  margin: 0 auto;
  position: relative;
  z-index: 6;
}.calc-sprint .game-keypad .keypad-button {
  font-size: 20px;
  padding: 10px 0;
  border-radius: 12px;
  border: 1px solid rgba(56, 103, 255, 0.2);
  background: #ffffff;
  color: #1a1a1a;
  box-shadow: 0 8px 16px rgba(29, 36, 51, 0.12);
}.calc-sprint .game-keypad .keypad-button:disabled {
  opacity: 0.55;
  box-shadow: none;
}.calc-sprint .game-keypad .keypad-button--wide {
  grid-column: span 2;
}.calc-sprint .game-keypad .keypad-button--action {
  background: #f4f6ff;
}.calc-sprint {
  --calc-sprint-ground-inset: 150px;
  --calc-sprint-runner-foot-offset: 0px;
}

.calc-sprint .run-world {
  position: relative;
  height: 100%;
  overflow: hidden;
  --run-seam-fix: 0px;
  border-radius: 16px;
  background: #e9eef8;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.6), 0 16px 30px rgba(29, 36, 51, 0.15);
  --world-contrast: 1;
  --world-brightness: 1;
  --world-clarity: 1;
}

@keyframes dash-shake {
  0% { transform: translate3d(0, 0, 0); }
  25% { transform: translate3d(calc(var(--dash-hit-shake-px, 3px) * -1), 0, 0); }
  50% { transform: translate3d(var(--dash-hit-shake-px, 3px), 0, 0); }
  75% { transform: translate3d(calc(var(--dash-hit-shake-px, 3px) * -0.66), 0, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

.calc-sprint #dash-game-screen .run-world.is-shake {
  animation: dash-shake 160ms ease-out 1;
}

/* --- Defeat effects: slash, shake, flash --- */

@keyframes dash-defeat-shake {
  0% { transform: translate3d(0, 0, 0); }
  20% { transform: translate3d(-2px, 1px, 0); }
  40% { transform: translate3d(2px, -1px, 0); }
  60% { transform: translate3d(-1px, 0, 0); }
  80% { transform: translate3d(1px, 0, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

.calc-sprint #dash-game-screen .run-world.is-defeat-shake {
  animation: dash-defeat-shake 120ms ease-out 1;
}

.calc-sprint #dash-game-screen .run-world.is-defeat-flash::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 60% 70%, rgba(255, 220, 100, 0.35), transparent 60%);
  pointer-events: none;
  z-index: 50;
  animation: dash-defeat-flash-fade 200ms ease-out 1 forwards;
}

@keyframes dash-defeat-flash-fade {
  0% { opacity: 1; }
  100% { opacity: 0; }
}

/* --- Slash effect on enemy defeat --- */

.calc-sprint .slash-effect {
  position: absolute;
  left: 0;
  top: 0;
  pointer-events: none;
  z-index: 10;
}

@keyframes slash-cut {
  0% {
    transform: rotate(-45deg) scaleY(0.2) scaleX(0.5);
    opacity: 1;
  }
  40% {
    transform: rotate(-45deg) scaleY(1) scaleX(1);
    opacity: 1;
  }
  100% {
    transform: rotate(-45deg) scaleY(1.2) scaleX(1.6);
    opacity: 0;
  }
}

.calc-sprint .slash-effect__slash {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 120%;
  height: 6px;
  margin-left: -60%;
  margin-top: -3px;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.95) 30%, rgba(255, 240, 180, 1) 50%, rgba(255, 255, 255, 0.95) 70%, transparent);
  border-radius: 3px;
  box-shadow: 0 0 12px 4px rgba(255, 220, 100, 0.6), 0 0 24px 8px rgba(255, 180, 60, 0.3);
  animation: slash-cut 280ms cubic-bezier(0.22, 1, 0.36, 1) 1 forwards;
  transform-origin: center center;
}

@keyframes slash-particle-burst {
  0% {
    transform: translate(0, 0) scale(1);
    opacity: 1;
  }
  100% {
    transform: translate(var(--p-tx, 20px), var(--p-ty, -20px)) scale(0.2);
    opacity: 0;
  }
}

.calc-sprint .slash-effect__particle {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 5px;
  height: 5px;
  margin-left: -2.5px;
  margin-top: -2.5px;
  border-radius: 50%;
  background: rgba(255, 230, 140, 0.9);
  box-shadow: 0 0 6px 2px rgba(255, 200, 60, 0.5);
  animation: slash-particle-burst 320ms cubic-bezier(0.16, 1, 0.3, 1) var(--p-delay, 0ms) 1 forwards;
  pointer-events: none;
}

/* Enhanced enemy defeat animation */
.calc-sprint .enemy-wrap.is-defeated {
  filter: none;
  animation: enemy-defeat-pop 360ms ease-out 1 forwards;
}

/* --- Boss enemy styles --- */

.calc-sprint .enemy-wrap.is-boss {
  z-index: 3;
  filter: drop-shadow(0 0 8px rgba(220, 60, 60, 0.5));
}

.calc-sprint .enemy-wrap.is-boss .enemy-label {
  background: rgba(120, 20, 20, 0.85);
  border: 1px solid rgba(255, 100, 100, 0.4);
  box-shadow: 0 2px 8px rgba(200, 40, 40, 0.3);
}

.calc-sprint .enemy-wrap.is-boss .enemy-name {
  font-size: 13px;
  color: #ffd866;
}

.calc-sprint .enemy-wrap.is-boss .enemy-hp {
  height: 9px;
}

.calc-sprint .enemy-wrap.is-boss .enemy-hp__fill {
  background: linear-gradient(90deg, #ff6b6b 0%, #ff2d2d 100%);
}

.calc-sprint .enemy-wrap.is-boss .enemy-sprite {
  width: 120px;
  height: 120px;
}

.calc-sprint .enemy-wrap.is-boss-hit {
  animation: boss-hit-flash 200ms ease-out 1;
}

@keyframes boss-hit-flash {
  0% { filter: drop-shadow(0 0 8px rgba(220, 60, 60, 0.5)) brightness(1.8); }
  100% { filter: drop-shadow(0 0 8px rgba(220, 60, 60, 0.5)) brightness(1); }
}

.calc-sprint .enemy-wrap.is-boss.is-defeated {
  animation: boss-defeat-pop 500ms ease-out 1 forwards;
}

@keyframes boss-defeat-pop {
  0% {
    opacity: 1;
    transform: translate3d(var(--enemy-x, 0), var(--enemy-y, 0), 0) scale(1);
    filter: drop-shadow(0 0 8px rgba(220, 60, 60, 0.5));
  }
  20% {
    opacity: 1;
    transform: translate3d(var(--enemy-x, 0), var(--enemy-y, 0), 0) scale(1.15);
    filter: drop-shadow(0 0 20px rgba(255, 200, 60, 0.8)) brightness(1.5);
  }
  100% {
    opacity: 0;
    transform: translate3d(var(--enemy-x, 0), calc(var(--enemy-y, 0) - 30px), 0) scale(0.5);
    filter: drop-shadow(0 0 4px rgba(255, 200, 60, 0.2)) brightness(2);
  }
}

@keyframes enemy-defeat-pop {
  0% {
    opacity: 1;
    transform: translate3d(var(--enemy-x, 0), var(--enemy-y, 0), 0) scale(1);
  }
  30% {
    opacity: 0.9;
    transform: translate3d(var(--enemy-x, 0), var(--enemy-y, 0), 0) scale(1.1);
  }
  100% {
    opacity: 0;
    transform: translate3d(var(--enemy-x, 0), calc(var(--enemy-y, 0) - 20px), 0) scale(0.6);
  }
}

.calc-sprint .run-world::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--run-air-image);
  background-repeat: repeat-x;
  background-size: auto 100%;
  background-position: center top;
  pointer-events: none;
  z-index: 0;
}.calc-sprint .run-world[data-bg-theme="default"] {
  /* ADR-004 Phase0補修: keep asset URLs relative so subpath hosting works (even if this legacy file is used). */
  --run-sky-image: linear-gradient(180deg, #7dbdff 0%, #9fd5ff 55%, #d6efff 100%);
  --run-cloud-image: url("../assets/bg-cloud.png");
  --run-ground-image: url("../assets/bg-ground.png");
  --run-air-image: none;
  --run-map-image: none;
}.calc-sprint .run-world[data-bg-theme="theme1"], .calc-sprint .run-world[data-bg-theme="w1"] {
  background: #e2ecff;
  /* ADR-004 Phase0補修: keep asset URLs relative so subpath hosting works (even if this legacy file is used). */
  --run-sky-image: linear-gradient(180deg, #7dbdff 0%, #9fd5ff 55%, #d6efff 100%);
  --run-cloud-image: url("../assets/bg-cloud.png");
  --run-ground-image: url("../assets/bg-ground.png");
  --run-air-image: none;
  --run-map-image: none;
}.calc-sprint .run-world[data-bg-theme="bg_add"],
.calc-sprint .run-world[data-bg-theme="bg_plus"] {
  --run-sky-image: url("../assets/plus/bg-sky.png"), url("../assets/bg-sky.png");
  --run-ground-image: url("../assets/plus/bg-ground.png"), url("../assets/bg-ground.png");
}
.calc-sprint .run-world[data-bg-theme="bg_add"],
.calc-sprint .run-world[data-bg-theme="bg_plus"] {
  background: #e7f1ff;
  --run-cloud-image: url("../assets/bg-cloud.png");
  --run-air-image: linear-gradient(180deg, rgba(120, 170, 255, 0.2), transparent);
  --run-map-image: none;
}.calc-sprint .run-world[data-bg-theme="bg_sub"],
.calc-sprint .run-world[data-bg-theme="bg_minus"] {
  --run-sky-image: url("../assets/minus/bg-sky.png"), url("../assets/bg-sky.png");
  --run-ground-image: url("../assets/minus/bg-ground.png"), url("../assets/bg-ground.png");
}
.calc-sprint .run-world[data-bg-theme="bg_sub"],
.calc-sprint .run-world[data-bg-theme="bg_minus"] {
  background: #e7f8f0;
  --run-cloud-image: url("../assets/bg-cloud.png");
  --run-air-image: linear-gradient(180deg, rgba(120, 220, 180, 0.2), transparent);
  --run-map-image: none;
}.calc-sprint .run-world[data-bg-theme="bg_mul"],
.calc-sprint .run-world[data-bg-theme="bg_multi"] {
  --run-sky-image: url("../assets/multi/bg-sky.png"), url("../assets/bg-sky.png");
  --run-ground-image: url("../assets/multi/bg-ground.png"), url("../assets/bg-ground.png");
}
.calc-sprint .run-world[data-bg-theme="bg_mul"],
.calc-sprint .run-world[data-bg-theme="bg_multi"] {
  background: #f0e8ff;
  --run-cloud-image: url("../assets/bg-cloud.png");
  --run-air-image: linear-gradient(180deg, rgba(180, 140, 255, 0.2), transparent);
  --run-map-image: none;
}.calc-sprint .run-world[data-bg-theme="bg_div"],
.calc-sprint .run-world[data-bg-theme="bg_divide"] {
  --run-sky-image: url("../assets/divide/bg-sky.png"), url("../assets/bg-sky.png");
  --run-ground-image: url("../assets/divide/bg-ground.png"), url("../assets/bg-ground.png");
}
.calc-sprint .run-world[data-bg-theme="bg_div"],
.calc-sprint .run-world[data-bg-theme="bg_divide"] {
  background: #fff2d9;
  --run-cloud-image: url("../assets/bg-cloud.png");
  --run-air-image: linear-gradient(180deg, rgba(255, 200, 120, 0.25), transparent);
  --run-map-image: none;
}.calc-sprint .run-world[data-bg-theme="bg_mix"] {
  --run-sky-image: url("../assets/mix/bg-sky.png"), url("../assets/bg-sky.png");
  --run-ground-image: url("../assets/mix/bg-ground.png"), url("../assets/bg-ground.png");
}
.calc-sprint .run-world[data-bg-theme="bg_mix"] {
  background: #ffe9e1;
  --run-cloud-image: url("../assets/bg-cloud.png");
  --run-air-image: linear-gradient(180deg, rgba(255, 160, 150, 0.22), transparent);
  --run-map-image: none;
}

.calc-sprint #dash-game-screen[data-bg-theme="bg_add"],
.calc-sprint #dash-game-screen[data-bg-theme="bg_plus"] {
  --dash-sky-image: url("../assets/plus/bg-sky.png");
  --dash-bg-image: var(--dash-sky-image);
  --dash-ground-image: url("../assets/plus/bg-ground.png");
  --run-sky-fallback: #7fb8f2;
}

.calc-sprint #dash-game-screen[data-bg-theme="bg_sub"],
.calc-sprint #dash-game-screen[data-bg-theme="bg_minus"] {
  --dash-sky-image: url("../assets/minus/bg-sky.png");
  --dash-bg-image: var(--dash-sky-image);
  --dash-ground-image: url("../assets/minus/bg-ground.png");
  --run-sky-fallback: #8eb8cf;
}

.calc-sprint #dash-game-screen[data-bg-theme="bg_mul"],
.calc-sprint #dash-game-screen[data-bg-theme="bg_multi"] {
  --dash-sky-image: url("../assets/multi/bg-sky.png");
  --dash-bg-image: var(--dash-sky-image);
  --dash-ground-image: url("../assets/multi/bg-ground.png");
  --run-sky-fallback: #b9b2ea;
}

.calc-sprint #dash-game-screen[data-bg-theme="bg_div"],
.calc-sprint #dash-game-screen[data-bg-theme="bg_divide"] {
  --dash-sky-image: url("../assets/divide/bg-sky.png");
  --dash-bg-image: var(--dash-sky-image);
  --dash-ground-image: url("../assets/divide/bg-ground.png");
  --run-sky-fallback: #66b2db;
  --dash-bg-color: transparent;
  --dash-air-image: linear-gradient(180deg, rgba(255, 200, 120, 0.25), transparent);
  --dash-air-opacity: 1;
}

.calc-sprint #dash-game-screen[data-bg-theme="bg_mix"] {
  --dash-sky-image: url("../assets/mix/bg-sky.png");
  --dash-bg-image: var(--dash-sky-image);
  --dash-ground-image: url("../assets/mix/bg-ground.png");
  --run-sky-fallback: #f3ad8e;
  --dash-bg-color: #ffe9e1; /* run-world の background を復元 */
  --dash-air-image: linear-gradient(180deg, rgba(255, 160, 150, 0.22), transparent);
  --dash-air-opacity: 1;
}
.calc-sprint .run-world::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(231, 76, 60, 0.18);
  opacity: 0;
  transition: opacity 0.2s ease;
  pointer-events: none;
}.calc-sprint .run-world.miss-flash::after {
  opacity: 1;
}.calc-sprint .run-bg {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}:root {
  --debug-sky-solid: 0;
  --debug-sky-flat: 0;
}.calc-sprint .run-sky {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image:
    linear-gradient(
      rgba(120, 183, 255, var(--debug-sky-flat)),
      rgba(120, 183, 255, var(--debug-sky-flat))
    ),
    var(--run-sky-image, url("../assets/bg-sky.png"));
  background-repeat: repeat-x;
  background-position: center top;
  background-size: auto 100%;
  background-color: transparent;
  will-change: background-position;
  transition: filter 0.2s ease;
  filter: saturate(var(--world-clarity)) brightness(var(--world-brightness))
    contrast(var(--world-contrast));
  pointer-events: none;
}:root[style*="--debug-sky-solid: 1"] .calc-sprint .run-sky,
:root[style*="--debug-sky-solid:1"] .calc-sprint .run-sky {
  background-image: none !important;
  background-color: #7dbdff;
}.calc-sprint .run-clouds {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 1;
}.calc-sprint .run-cloud {
  position: absolute;
  top: 0;
  left: 0;
  width: auto;
  height: auto;
  max-width: none;
  will-change: transform;
  opacity: 0.85;
  filter: brightness(var(--world-brightness)) contrast(var(--world-contrast));
}.calc-sprint .run-enemies {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
  overflow: visible;
}.calc-sprint .enemy-wrap {
  position: absolute;
  left: 0;
  top: 0;
  width: 88px;
  height: 88px;
  pointer-events: none;
  will-change: transform;
  z-index: 1;
  --enemy-hit-pull: 0px;
  --enemy-hit-scale: 1;
  opacity: 1;
  transition: opacity 160ms linear;
}.calc-sprint .enemy-wrap.is-collision-resolved {
  filter: saturate(0.75) brightness(1.08);
}.calc-sprint .enemy-wrap.is-defeated .enemy-label {
  opacity: 0;
  transition: opacity 120ms ease-out;
}.calc-sprint .enemy-label {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 8px);
  transform: translateX(-50%);
  min-width: 72px;
  max-width: 110px;
  padding: 5px 8px 6px;
  border-radius: 8px;
  background: rgba(9, 14, 34, 0.78);
  color: #fff;
  text-align: center;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
  pointer-events: none;
}.calc-sprint .enemy-name {
  font-size: 12px;
  line-height: 1.2;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin-bottom: 3px;
  white-space: nowrap;
}.calc-sprint .enemy-hp {
  width: 100%;
  height: 7px;
  border-radius: var(--radius-pill);
  background: rgba(255, 255, 255, 0.28);
  overflow: hidden;
}.calc-sprint .enemy-hp__fill {
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, #ff9f68 0%, #ff4d4f 100%);
  transform-origin: left center;
  transform: scaleX(1);
}.calc-sprint .enemy-sprite {
  position: absolute;
  left: 0;
  top: 0;
  width: 88px;
  height: 88px;
  object-fit: contain;
  pointer-events: none;
}.calc-sprint .run-world.stumble-freeze .run-sky {
  background-position-x: var(--stumble-freeze-x, 0px);
  transition: none;
}.calc-sprint .run-world.is-fast .run-sky {
  filter: saturate(calc(var(--world-clarity) * 1.1))
    brightness(calc(var(--world-brightness) * 1.05))
    contrast(var(--world-contrast));
}.calc-sprint .run-world.is-rapid .run-sky {
  filter: saturate(calc(var(--world-clarity) * 1.2))
    brightness(calc(var(--world-brightness) * 1.1))
    contrast(var(--world-contrast));
}.calc-sprint .run-ground {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: calc(var(--ground-art-height, 240px) + var(--run-seam-fix, 0px));
  overflow: hidden;
  box-shadow: inset 0 -12px 14px rgba(0, 0, 0, 0.2);
  z-index: 2;
  pointer-events: none;
  filter: brightness(var(--world-brightness)) contrast(var(--world-contrast));
  opacity: calc(0.94 + (var(--world-clarity) - 1) * 0.25);
}.calc-sprint .run-ground__tile {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  background-image: var(--run-ground-image, url("../assets/bg-ground.png"));
  background-repeat: repeat-x;
  background-size: auto 100%;
  background-position: left calc(100% + var(--run-seam-fix, 0px));
  will-change: transform;
  pointer-events: none;
}.calc-sprint .run-ground__tile--a {
  left: 0;
}.calc-sprint .run-ground__tile--b {
  left: 0;
}.calc-sprint .speed-lines {
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    -20deg,
    rgba(255, 255, 255, 0.35) 0px,
    rgba(255, 255, 255, 0.35) 4px,
    rgba(255, 255, 255, 0) 6px,
    rgba(255, 255, 255, 0) 16px
  );
  opacity: 0;
  transition: opacity 0.1s ease;
  pointer-events: none;
  z-index: 3;
}.calc-sprint .speed-lines.boost-lines {
  filter: drop-shadow(0 0 calc(6px * var(--boost-line)) rgba(255, 255, 255, 0.6));
}.calc-sprint .speed-lines.is-fast {
  background-size: 18px 18px;
}.calc-sprint .speed-lines.is-rapid {
  background-size: 12px 12px;
}

@property --calc-sprint-runner-bob-offset {
  syntax: "<length>";
  inherits: true;
  initial-value: 0px;
}

@property --calc-sprint-runner-bob-x {
  syntax: "<length>";
  inherits: true;
  initial-value: 0px;
}

@keyframes calc-sprint-runner-bob {
  0%,
  100% {
    --calc-sprint-runner-bob-offset: 0px;
    --calc-sprint-runner-bob-x: 0px;
  }
  50% {
    --calc-sprint-runner-bob-offset: -4px;
    --calc-sprint-runner-bob-x: 1px;
  }
}

@keyframes calc-sprint-runner-stumble {
  0% {
    transform: translate(
        var(--calc-sprint-runner-bob-x, 0px),
        var(--calc-sprint-runner-bob-offset, 0px)
      )
      rotate(0deg)
      scale(1);
  }
  24% {
    transform: translate(
        calc(var(--calc-sprint-runner-bob-x, 0px) + 3px),
        calc(var(--calc-sprint-runner-bob-offset, 0px) + 3px)
      )
      rotate(-14deg)
      scale(1.01, 0.99);
  }
  48% {
    transform: translate(
        calc(var(--calc-sprint-runner-bob-x, 0px) - 2px),
        calc(var(--calc-sprint-runner-bob-offset, 0px) + 10px)
      )
      rotate(18deg)
      scale(0.95, 1.06);
  }
  74% {
    transform: translate(
        calc(var(--calc-sprint-runner-bob-x, 0px) + 1px),
        calc(var(--calc-sprint-runner-bob-offset, 0px) + 2px)
      )
      rotate(-7deg)
      scale(1.01);
  }
  100% {
    transform: translate(
        var(--calc-sprint-runner-bob-x, 0px),
        var(--calc-sprint-runner-bob-offset, 0px)
      )
      rotate(0deg)
      scale(1);
  }
}

@keyframes calc-sprint-runner-kick {
  0% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  }
  55% {
    transform: translate3d(var(--kick-lunge-px), -10px, 0) rotate(-18deg) scale(1.05);
  }
  100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1);
  }
}

@keyframes runnerBlink {
  0%,
  100% {
    opacity: 0;
  }
  50% {
    opacity: 0.42;
  }
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) :is(.runner-wrap, #runner-wrap).is-runner-invincible::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.46);
  opacity: 0;
  pointer-events: none;
  z-index: 2;
  animation: runnerBlink 0.12s steps(2, end) infinite;
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) :is(.runner-wrap, #runner-wrap).is-runner-invincible {
  opacity: 1;
}

.calc-sprint .runner-wrap {
  position: fixed;
  left: 64px;
  bottom: calc(
    var(--calc-sprint-ground-inset) - var(--calc-sprint-runner-foot-offset)
  );
  width: 80px;
  height: 80px;
  --kick-lunge-px: 0px;
  --kick-raise-px: 0px;
  --kick-rot-deg: 0deg;
  z-index: var(--z-runner, 4);
  transform: translateX(0);
  will-change: transform;
  pointer-events: none;
}.calc-sprint .runner-wrap.is-kicking {
  animation: calc-sprint-runner-kick 300ms ease-out 1;
}.calc-sprint .runner-shadow {
  position: absolute;
  left: 6px;
  right: 6px;
  bottom: -12px;
  height: 16px;
  background: radial-gradient(closest-side, rgba(0, 0, 0, 0.55), rgba(0, 0, 0, 0));
  filter: blur(2px);
  opacity: 0.7;
  transform: scale(1.05);
  transition: opacity 0.2s ease, transform 0.2s ease;
  z-index: 0;
}.calc-sprint .runner-missing .runner-wrap::before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: #0b0f18;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.35);
}.calc-sprint #runner-sprite {
  width: 100%;
  height: 100%;
  object-fit: contain;
  transform: translate(
    var(--calc-sprint-runner-bob-x, 0px),
    var(--calc-sprint-runner-bob-offset, 0px)
  );
  transition: transform 0.2s ease, filter 0.2s ease;
  filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.35));
  position: relative;
  z-index: 1;
}.calc-sprint .run-layer #runner-sprite.runner-bob {
  animation: calc-sprint-runner-bob var(--runner-bob-duration, 0.32s) ease-in-out infinite;
}.calc-sprint #runner-sprite.runner-speed-low {
  --runner-bob-duration: 0.42s;
}.calc-sprint #runner-sprite.runner-speed-mid {
  --runner-bob-duration: 0.34s;
}.calc-sprint #runner-sprite.runner-speed-high {
  --runner-bob-duration: 0.26s;
}.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) :is(.runner-wrap, #runner-wrap).is-runner-hit #runner-sprite {
  animation:
    calc-sprint-runner-bob var(--runner-bob-duration, 0.32s) ease-in-out infinite,
    calc-sprint-runner-stumble 0.52s cubic-bezier(0.18, 0.9, 0.2, 1) 1;
  opacity: 1 !important;
  filter: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.42));
}.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) :is(.runner-wrap, #runner-wrap).is-runner-hit .runner-shadow {
  transform: scale(1.28, 0.76);
  opacity: 0.9;
}.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) :is(.runner-wrap, #runner-wrap).is-debug-stumble #runner-sprite {
  outline: 2px solid rgba(255, 0, 0, 0.4);
  outline-offset: 2px;
}.calc-sprint #runner-sprite.boost {
  transform: translate(
      var(--calc-sprint-runner-bob-x, 0px),
      calc(var(--calc-sprint-runner-bob-offset, 0px) - 2px)
    )
    scale(1.06);
  filter: drop-shadow(0 6px 10px rgba(0, 0, 0, 0.45)) brightness(calc(1.1 * var(--boost-bright)));
}.calc-sprint #runner-sprite.speed-glow {
  filter: drop-shadow(0 8px 14px rgba(0, 0, 0, 0.45)) blur(0.2px) brightness(1.12);
}.calc-sprint .runner-wrap.is-fast .runner-shadow {
  opacity: 0.9;
  transform: scale(1.12);
}.calc-sprint #runner-sprite.hit {
  transform: translate(
    var(--calc-sprint-runner-bob-x, 0px),
    calc(var(--calc-sprint-runner-bob-offset, 0px) + 4px)
  );
}.calc-sprint .runner-wrap.is-kicking #runner-sprite.hit {
  transform: translate(
    var(--calc-sprint-runner-bob-x, 0px),
    var(--calc-sprint-runner-bob-offset, 0px)
  );
}



@keyframes dash-runner-hitflash-overlay {
  0%,
  100% {
    opacity: 0;
  }
  35% {
    opacity: 0.55;
  }
  70% {
    opacity: 0.25;
  }
}

.calc-sprint #dash-game-screen .runner-wrap.is-hitflash::before {
  content: "";
  position: absolute;
  inset: 2px;
  border-radius: 50%;
  pointer-events: none;
  z-index: 2;
  background: rgba(255, 44, 44, 0.6);
  box-shadow: 0 0 10px rgba(255, 0, 0, 0.7);
  animation: dash-runner-hitflash-overlay 160ms steps(2, end) 1;
}

.calc-sprint #dash-game-screen .runner-wrap.is-hitflash #runner-sprite {
  filter: saturate(1.4) brightness(0.95) drop-shadow(0 0 10px rgba(255, 0, 0, 0.7));
}

@media (prefers-reduced-motion: reduce) {.calc-sprint .run-layer #runner-sprite.runner-bob {
    animation: none;
  }.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) :is(.runner-wrap, #runner-wrap).is-runner-hit #runner-sprite {
    animation: calc-sprint-runner-stumble 0.16s linear 1;
  }.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) :is(.runner-wrap, #runner-wrap).is-runner-hit .runner-shadow {
    transform: scale(1.12, 0.9);
  }
}.calc-sprint #game-speed.glow {
  text-shadow:
    0 0 calc(10px * var(--boost-glow)) rgba(56, 103, 255, calc(0.75 * var(--boost-glow))),
    0 0 calc(18px * var(--boost-glow)) rgba(56, 103, 255, calc(0.55 * var(--boost-glow)));
}

@media (prefers-reduced-motion: reduce) {.calc-sprint .time-progress__bar, .calc-sprint .time-progress__runner {
    transition: none;
  }.calc-sprint .game-hud.final-phase .time-progress__track {
    box-shadow: inset 0 1px 2px rgba(29, 36, 51, 0.12);
  }
}.calc-sprint .result-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-bottom: 24px;
}.calc-sprint .screen-result {
  --world-accent: #3867ff;
  --world-frame: color-mix(in srgb, var(--world-accent) 22%, transparent);
  --world-soft: color-mix(in srgb, var(--world-accent) 6%, #ffffff);
  --world-bg: linear-gradient(180deg, color-mix(in srgb, var(--world-accent) 8%, #ffffff), #ffffff 65%);
  background: var(--world-bg);
}.calc-sprint .screen-result[data-world-id="w1"], .calc-sprint .screen-result[data-theme-id="w1"] {
  --world-accent: #2563eb;
}.calc-sprint .screen-result .screen-kicker {
  color: var(--world-accent);
}.calc-sprint .screen-result .stage-card {
  border-color: var(--world-frame);
  background: linear-gradient(180deg, var(--world-soft), #ffffff 70%);
}.calc-sprint .screen-result .result-stage {
  border: 1px solid var(--world-frame);
  background: color-mix(in srgb, var(--world-accent) 6%, #ffffff);
}.calc-sprint .screen-result .result-stage__label, .calc-sprint .screen-result .rank-message {
  color: var(--world-accent);
}.calc-sprint .screen-result .result-details {
  border: 1px solid color-mix(in srgb, var(--world-accent) 18%, transparent);
  background: color-mix(in srgb, var(--world-accent) 4%, #f8fafc);
}.calc-sprint .screen-result .result-metric {
  border: 1px solid color-mix(in srgb, var(--world-accent) 10%, transparent);
}.calc-sprint .screen-result .result-metric--distance {
  border: 1px solid color-mix(in srgb, var(--world-accent) 25%, transparent);
  background: linear-gradient(135deg, color-mix(in srgb, var(--world-accent) 15%, #ffffff) 0%, #ffffff 60%);
}.calc-sprint .screen-result[data-clear-state="clear"] .result-stage {
  border-width: 2px;
  box-shadow: 0 10px 18px color-mix(in srgb, var(--world-accent) 20%, transparent);
}.calc-sprint .screen-result[data-clear-state="clear"] .result-stage__headline {
  color: var(--world-accent);
}.calc-sprint .result-screen {
  position: relative;
}.calc-sprint .result-hero {
  position: relative;
  margin-bottom: 16px;
}.calc-sprint .best-toast {
  background: #fff3bf;
  color: #7a5200;
  font-weight: 700;
  text-align: center;
  padding: 10px 16px;
  border-radius: var(--radius-pill);
  margin-bottom: 16px;
}.calc-sprint .best-toast--hero {
  font-size: 20px;
  letter-spacing: 0.04em;
  padding: 14px 18px;
  box-shadow: 0 12px 30px rgba(255, 196, 0, 0.25);
}.calc-sprint .result-confetti {
  pointer-events: none;
  position: absolute;
  inset: -40px 0 auto 0;
  height: 160px;
  opacity: 0;
  overflow: hidden;
}.calc-sprint .result-confetti span {
  position: absolute;
  width: 10px;
  height: 18px;
  border-radius: 3px;
  opacity: 0;
  transform: translateY(-30px) rotate(0deg);
}.calc-sprint .result-screen.is-confetti .result-confetti {
  opacity: 1;
}.calc-sprint .result-screen.is-confetti .result-confetti span {
  animation: calc-sprint-confetti-fall 1.2s ease-out forwards;
}.calc-sprint .result-confetti span:nth-child(1) { left: 8%; background: #ff6b6b; animation-delay: 0.05s; }.calc-sprint .result-confetti span:nth-child(2) { left: 18%; background: #ffd93d; animation-delay: 0.12s; }.calc-sprint .result-confetti span:nth-child(3) { left: 28%; background: #6bcB77; animation-delay: 0.18s; }.calc-sprint .result-confetti span:nth-child(4) { left: 38%; background: #4d96ff; animation-delay: 0.06s; }.calc-sprint .result-confetti span:nth-child(5) { left: 48%; background: #845ec2; animation-delay: 0.22s; }.calc-sprint .result-confetti span:nth-child(6) { left: 58%; background: #ff9f1c; animation-delay: 0.1s; }.calc-sprint .result-confetti span:nth-child(7) { left: 68%; background: #00c2a8; animation-delay: 0.16s; }.calc-sprint .result-confetti span:nth-child(8) { left: 78%; background: #f72585; animation-delay: 0.2s; }.calc-sprint .result-confetti span:nth-child(9) { left: 88%; background: #4cc9f0; animation-delay: 0.08s; }.calc-sprint .result-confetti span:nth-child(10) { left: 24%; background: #ff8fab; animation-delay: 0.14s; }.calc-sprint .result-confetti span:nth-child(11) { left: 52%; background: #aacc00; animation-delay: 0.03s; }.calc-sprint .result-confetti span:nth-child(12) { left: 72%; background: #ffcad4; animation-delay: 0.19s; }

@keyframes calc-sprint-confetti-fall {
  0% {
    opacity: 0;
    transform: translateY(-30px) rotate(0deg);
  }
  10% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translateY(140px) rotate(220deg);
  }
}.calc-sprint .result-firstview {
  display: grid;
  gap: 16px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-bottom: var(--space-5);
}.calc-sprint .result-metric {
  background: #ffffff;
  border-radius: var(--radius-lg);
  padding: 18px 20px;
  box-shadow: 0 12px 30px rgba(15, 23, 42, 0.08);
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: 140px;
}.calc-sprint .result-metric--distance {
  background: linear-gradient(135deg, #e0f2ff 0%, #ffffff 60%);
  border: 1px solid rgba(56, 103, 255, 0.2);
}.calc-sprint .metric-label {
  font-size: 14px;
  font-weight: 700;
  color: #52607a;
}.calc-sprint .metric-value {
  font-size: 36px;
  font-weight: 800;
  color: #1f2a44;
  margin: 4px 0;
}.calc-sprint .metric-unit {
  font-size: 18px;
  font-weight: 700;
  margin-left: 4px;
  color: #4b5563;
}.calc-sprint .metric-sub {
  font-size: var(--font-caption);
  color: #65708a;
}.calc-sprint .distance-note {
  font-size: 12px;
  color: #7c879b;
  margin-top: 4px;
}.calc-sprint .result-metric--rank h3 {
  font-size: 16px;
  margin: 0;
}.calc-sprint .rank-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}.calc-sprint .rank-message {
  font-size: 12px;
  font-weight: 700;
  color: var(--color-primary);
}.calc-sprint .rank-list {
  list-style: none;
  padding: 0;
  margin: 8px 0 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-weight: 700;
  color: #1f2a44;
}.calc-sprint .result-details {
  background: #f8fafc;
  border-radius: 16px;
  padding: 8px 12px;
  margin-bottom: var(--space-5);
  border: 1px solid rgba(148, 163, 184, 0.3);
}.calc-sprint .result-details summary {
  cursor: pointer;
  font-weight: 700;
  color: #1f2a44;
  padding: 8px 4px;
  list-style: none;
}.calc-sprint .result-details summary::-webkit-details-marker {
  display: none;
}.calc-sprint .result-details summary::after {
  content: '＋';
  float: right;
  font-weight: 700;
}.calc-sprint .result-details[open] summary::after {
  content: '－';
}.calc-sprint .result-details__content {
  padding: 12px 4px 4px;
}.calc-sprint .button-row {
  display: flex;
  gap: 12px;
  flex-wrap: nowrap;
}.calc-sprint .daily-history table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 8px;
}.calc-sprint .daily-history th, .calc-sprint .daily-history td {
  padding: 6px 8px;
  text-align: center;
}.calc-sprint .daily-history tr.is-best {
  font-weight: 700;
}.calc-sprint .daily-history tr.is-best-distance {
  outline: 2px solid rgba(56, 103, 255, 0.35);
  background: rgba(56, 103, 255, 0.06);
}.calc-sprint #daily-history-sum {
  color: #5a6477;
  font-weight: 600;
}

@media (max-width: 768px) {.calc-sprint .screen {
    padding: 20px;
  }.calc-sprint .game-hud {
    padding: 20px 20px 10px;
  }.calc-sprint .game-focus {
    padding: 0 20px;
    margin-bottom: -12px;
  }.calc-sprint .status-grid {
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  }.calc-sprint .question-text {
    font-size: var(--font-h1);
  }.calc-sprint .question-area {
    transform: translateY(18px);
    padding: 16px 20px;
  }.calc-sprint .answer-input {
    font-size: 22px;
    width: min(280px, 90vw);
  }.calc-sprint .run-layer {
    height: min(34vh, 260px);
    transform: translateY(-6px);
  }.calc-sprint .result-firstview {
    grid-template-columns: 1fr;
  }.calc-sprint .button-row {
    flex-direction: column;
  }
}

/* Dash UI fix 2nd: pseudo-element sky/cloud background layers */
.calc-sprint #dash-game-screen::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-color: var(--dash-bg-color, transparent);
  background-image: var(--dash-bg-image, var(--dash-sky-image, var(--run-sky-image, url("../assets/bg-sky.png"))));
  background-size: cover;
  background-position: center top;
  background-repeat: no-repeat;
}

.calc-sprint #dash-game-screen::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1; /* ::before の上、UIの下 */
    pointer-events: none;
    background-image: none;
    background-repeat: no-repeat;
    background-size: cover;
    opacity: 0;
  }

.calc-sprint #dash-game-screen {
  --dash-ground-y: 90px;
  --dash-ground-mask-cut: 58%;
  --dash-bg-image: var(--dash-sky-image, var(--run-sky-image, url("../assets/bg-sky.png")));
  --run-seam-fix-safe: clamp(0px, var(--run-seam-fix, 0px), 2px);
  --ground-surface-inset: var(--dash-ground-y);
  --run-sky-fallback: #7dbdff;
  grid-template-rows: auto 1fr minmax(116px, 156px);
  position: relative;
  isolation: isolate;
  background: transparent !important;
  background-image: none !important;
  background-color: transparent !important;
}

.calc-sprint #dash-game-screen[data-bg-theme="bg_mix"] {
    --dash-ground-mask-cut: 20%;
  }
  

.calc-sprint #dash-game-screen > .dash-top-hud,
.calc-sprint #dash-game-screen > .dash-run-zone,
.calc-sprint #dash-game-screen > .dash-bottom-hud,
.calc-sprint #dash-game-screen .run-viewport,
.calc-sprint #dash-game-screen .run-host,
.calc-sprint #dash-game-screen .run-layer,
.calc-sprint #dash-game-screen .run-world,
.calc-sprint #dash-game-screen .run-zone {
  background: transparent !important;
  background-image: none !important;
  background-color: transparent !important;
}

.calc-sprint #dash-game-screen .run-world {
  background: transparent !important;
  background-image: none !important;
  background-color: transparent !important;
  border-radius: 0;
  box-shadow: none !important;
  border-color: transparent !important;
  outline: 0 !important;
}

.calc-sprint #dash-game-screen .run-world::before {
  background-image: none !important;
}

.calc-sprint #dash-game-screen > .dash-run-zone {
  position: relative;
  z-index: 2;
}
.calc-sprint #dash-game-screen .run-sky {
  background: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  border: 0 !important;
  outline: 0 !important;
  filter: none !important;
}

.calc-sprint #dash-game-screen .run-clouds {
  display: none !important;
}

.calc-sprint #dash-game-screen .run-ground {
  bottom: 0;
  height: calc(var(--ground-art-height, 240px) + var(--run-seam-fix-safe));
  transform: none;
  box-shadow: inset 0 -12px 14px rgba(0, 0, 0, 0.18);
  opacity: 1;
  mix-blend-mode: normal;
  border: 0 !important;
  outline: 0 !important;
  filter: none !important;
}

.calc-sprint #dash-game-screen .run-bg {
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  border: 0 !important;
  outline: 0 !important;
  filter: none !important;
}

.calc-sprint #dash-game-screen .run-world,
.calc-sprint #dash-game-screen .run-bg,
.calc-sprint #dash-game-screen .run-sky,
.calc-sprint #dash-game-screen .run-ground {
  border: 0 !important;
  outline: 0 !important;
}

.calc-sprint #dash-game-screen .run-ground__tile {
  background-image: var(--dash-ground-image, var(--run-ground-image, url("../assets/bg-ground.png")));
  background-position: left calc(100% + var(--run-seam-fix-safe));
  background-repeat: repeat-x;
  -webkit-clip-path: inset(var(--dash-ground-mask-cut) 0 0 0);
  clip-path: inset(var(--dash-ground-mask-cut) 0 0 0);
  opacity: 1;
  mix-blend-mode: normal;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  filter: none !important;
}

.calc-sprint #dash-game-screen .dash-top-controls,
.calc-sprint #dash-game-screen .dash-top-controls > *,
.calc-sprint #dash-game-screen .dash-top-controls [class*="dash-"] {
  background: transparent !important;
  background-image: none !important;
}

.calc-sprint #dash-game-screen .dash-top-controls .dash-problem-main {
  width: min(360px, 100%);
  margin-inline: auto;
}

.calc-sprint #dash-game-screen .dash-top-controls .question-area.problem-frame {
  width: min(300px, 100%);
  align-items: stretch;
}

.calc-sprint #dash-game-screen .dash-top-controls .dash-problem-panel,
.calc-sprint #dash-game-screen .dash-top-controls .answer-input {
  width: 100%;
}

.calc-sprint #dash-game-screen .dash-bottom-hud {
  justify-content: flex-start;
  gap: clamp(2px, 0.5vh, 6px);
  padding-top: clamp(2px, 0.4vh, 6px);
  margin-top: clamp(-92px, -14vh, -80px);
}

.calc-sprint #dash-game-screen .dash-bottom-hud > #dash-game-time-wrap {
  margin-bottom: 0;
  transform: translateY(6px);
}

.calc-sprint #dash-game-screen .dash-timebar {
  background: transparent;
  border-color: rgba(255, 255, 255, 0.32);
  box-shadow: none;
}

.calc-sprint .screen-dash .speed-lines,
.calc-sprint .screen-dash .speed-lines.is-fast,
.calc-sprint .screen-dash .speed-lines.is-rapid,
.calc-sprint .screen-dash .speed-lines.boost-lines,
.calc-sprint .screen-dash [class*="speed-lines"],
.calc-sprint #dash-game-screen .speed-lines,
.calc-sprint #dash-game-screen .speed-lines.is-fast,
.calc-sprint #dash-game-screen .speed-lines.is-rapid,
.calc-sprint #dash-game-screen .speed-lines.boost-lines,
.calc-sprint #dash-game-screen [class*="speed-lines"] {
  background: none !important;
  background-image: none !important;
  opacity: 0 !important;
  filter: none !important;
}

.calc-sprint #dash-game-screen {
  --dash-hud-border: rgba(224, 237, 255, 0.92);
  --dash-hud-outline: rgba(120, 172, 246, 0.42);
  --dash-hud-surface: rgba(186, 213, 255, 0.2);
  --dash-hud-surface-strong: rgba(164, 200, 255, 0.26);
  --dash-hud-text-main: rgba(16, 28, 48, 0.98);
  --dash-hud-text-sub: rgba(20, 35, 56, 0.88);
  --dash-problem-bg: linear-gradient(180deg, rgba(10, 36, 94, 0.96) 0%, rgba(7, 28, 78, 0.96) 100%);
  --dash-problem-fg: #ffffff;
  --dash-problem-border: rgba(154, 194, 255, 0.5);
  --dash-confirm-bg: linear-gradient(180deg, #2a7dff 0%, #1463f5 100%);
  --dash-confirm-bg-hover: linear-gradient(180deg, #2473ef 0%, #0f57de 100%);
  --dash-confirm-bg-active: linear-gradient(180deg, #1f66d7 0%, #0d4ec4 100%);
  --dash-elev-shadow: 0 8px 18px rgba(7, 24, 66, 0.34);
  --dash-focus-ring: 0 0 0 3px rgba(176, 212, 255, 0.95), 0 0 0 6px rgba(14, 88, 219, 0.42);
}

.calc-sprint #dash-game-screen .dash-bottom-hud {
  max-height: none;
  min-height: clamp(126px, 17vh, 176px);
  gap: clamp(4px, 0.7vh, 8px);
  padding-top: clamp(2px, 0.4vh, 5px);
  padding-bottom: calc(clamp(10px, 2vh, 18px) + env(safe-area-inset-bottom));
  margin-top: 0;
  transform: translateY(clamp(-40px, -5.8vh, -20px));
  overflow: visible;
  background: linear-gradient(180deg, rgba(10, 24, 60, 0.62) 0%, rgba(10, 24, 60, 0.46) 100%) !important;
  border: none !important;
  border-radius: var(--radius-lg);
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.18) !important;
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}

.calc-sprint #dash-game-screen #dash-game-time-wrap {
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.3) !important;
  border-radius: var(--radius-md);
  padding: clamp(6px, 0.9vh, 10px) clamp(8px, 1.5vw, 13px);
  box-shadow: none !important;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

.calc-sprint #dash-game-screen .dash-timebar {
  min-height: clamp(13px, 1.9vh, 18px);
  border-radius: var(--radius-pill);
  background: linear-gradient(180deg, rgba(13, 34, 79, 0.92) 0%, rgba(8, 23, 58, 0.84) 100%) !important;
  border: 2px solid rgba(255, 255, 255, 0.34) !important;
  box-shadow: 0 0 0 1px rgba(129, 178, 255, 0.24), 0 0 14px rgba(67, 224, 140, 0.26), inset 0 1px 2px rgba(255, 255, 255, 0.14), inset 0 1px 4px rgba(0, 0, 0, 0.3) !important;
}

.calc-sprint #dash-game-screen .dash-timebar__fill {
  box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.36), 0 0 8px rgba(50, 201, 125, 0.36);
}

.calc-sprint #dash-game-screen .dash-bottom-stats {
  gap: clamp(5px, 0.7vw, 8px);
  padding-bottom: clamp(10px, 2vh, 18px);
  overflow: visible;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card {
  min-width: 0;
  padding: clamp(5px, 0.8vh, 8px) clamp(7px, 1.1vw, 10px);
  border-radius: var(--radius-md);
  position: relative;
  padding-left: clamp(10px, 1.3vw, 14px);
  border: none !important;
  background: linear-gradient(180deg, rgba(7, 18, 46, 0.64) 0%, rgba(8, 20, 50, 0.5) 100%) !important;
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.2) !important;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card::before,
.calc-sprint #dash-game-screen .dash-bottom-stats .dash-exit-card::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 6px;
  border-radius: 14px 0 0 14px;
  background: var(--dash-accent, rgba(120, 200, 255, 0.9));
  box-shadow: 0 0 14px color-mix(in srgb, var(--dash-accent) 40%, transparent);
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card:nth-child(1) {
  --dash-accent: rgba(120, 200, 255, 0.95);
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card:nth-child(2) {
  --dash-accent: rgba(90, 220, 140, 0.95);
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card:nth-child(3) {
  --dash-accent: rgba(255, 170, 80, 0.95);
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card:nth-child(4) {
  --dash-accent: rgba(190, 140, 255, 0.95);
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-exit-card {
  position: relative;
  min-width: 0;
  min-height: var(--dash-stat-card-min-h);
  border-radius: var(--radius-md);
  padding: 0;
  overflow: hidden;
  border: none !important;
  background: linear-gradient(180deg, rgba(7, 18, 46, 0.64) 0%, rgba(8, 20, 50, 0.5) 100%) !important;
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.2) !important;
  --dash-accent: rgba(255, 120, 120, 0.95);
}

.calc-sprint #dash-game-screen .dash-stat-value {
  font-size: clamp(20px, 2.8vw, 26px);
  font-weight: 800;
  line-height: 1.1;
  color: rgba(255, 255, 255, 0.95) !important;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
}

.calc-sprint #dash-game-screen .dash-stat-value,
.calc-sprint #dash-game-screen .dash-stat-value * {
  color: rgba(255, 255, 255, 0.95) !important;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
}

.calc-sprint #dash-game-screen .dash-stat-value .dash-stat-unit,
.calc-sprint #dash-game-screen .dash-stat-value .dash-unit,
.calc-sprint #dash-game-screen .dash-stat-value [class*="unit"] {
  color: rgba(255, 255, 255, 0.75) !important;
}

.calc-sprint #dash-game-screen .dash-timevalue {
  font-weight: 900;
  color: rgba(255, 255, 255, 0.95);
  text-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
}

.calc-sprint #dash-game-screen .dash-time-seconds {
  font-size: clamp(24px, 3.3vw, 32px);
  color: rgba(255, 255, 255, 0.95);
  background: rgba(0, 0, 0, 0.32);
  border: 1px solid rgba(255, 255, 255, 0.22);
  border-radius: var(--radius-pill);
  padding: 6px 12px;
  text-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
}

.calc-sprint #dash-game-screen .dash-stat-label {
  font-size: clamp(11px, 1.6vw, 12px);
  font-weight: 700;
  color: rgba(255, 255, 255, 0.78);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.calc-sprint #dash-game-screen .dash-stat-unit {
  color: rgba(255, 255, 255, 0.75);
  font-weight: 700;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.calc-sprint #dash-game-screen .dash-problem-main .question-area,
.calc-sprint #dash-game-screen .dash-problem-panel {
  background: var(--dash-problem-bg) !important;
  border-color: var(--dash-problem-border) !important;
  box-shadow: var(--dash-elev-shadow) !important;
}

.calc-sprint #dash-game-screen .dash-problem-panel #dash-game-question,
.calc-sprint #dash-game-screen .question-text {
  color: var(--dash-problem-fg) !important;
  font-weight: 800;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.45);
}

.calc-sprint #dash-game-screen #dash-game-submit-button.dash-submit-button {
  background: var(--dash-confirm-bg) !important;
  color: #fff;
  border: 1px solid rgba(224, 239, 255, 0.78);
  box-shadow: 0 10px 18px rgba(15, 80, 198, 0.36), inset 0 1px 0 rgba(255, 255, 255, 0.22);
  transform: translateY(0);
  transition: background 0.16s ease, transform 0.08s ease, box-shadow 0.16s ease, filter 0.16s ease;
}

.calc-sprint #dash-game-screen #dash-game-submit-button.dash-submit-button:hover:not(:disabled) {
  background: var(--dash-confirm-bg-hover) !important;
  box-shadow: 0 12px 20px rgba(13, 69, 175, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.24);
}

.calc-sprint #dash-game-screen #dash-game-submit-button.dash-submit-button:active:not(:disabled) {
  background: var(--dash-confirm-bg-active) !important;
  transform: translateY(1px);
  box-shadow: 0 6px 12px rgba(10, 54, 144, 0.38), inset 0 2px 4px rgba(0, 0, 0, 0.2);
}

.calc-sprint #dash-game-screen #dash-game-submit-button.dash-submit-button:focus-visible {
  outline: none;
  box-shadow: var(--dash-focus-ring), 0 10px 18px rgba(13, 69, 175, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.22);
}

.calc-sprint #dash-game-screen #dash-game-submit-button.dash-submit-button:disabled {
  background: linear-gradient(180deg, rgba(96, 148, 230, 0.84) 0%, rgba(79, 130, 212, 0.84) 100%) !important;
  color: rgba(255, 255, 255, 0.92);
  border-color: rgba(205, 228, 255, 0.72);
  box-shadow: 0 6px 12px rgba(21, 53, 106, 0.22);
  filter: saturate(0.74);
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-exit-card #dash-game-back-button {
  width: 100%;
  height: 100%;
  border-radius: var(--radius-md);
  background: linear-gradient(180deg, rgba(7, 18, 46, 0.64) 0%, rgba(8, 20, 50, 0.5) 100%) !important;
  border: none !important;
  color: rgba(255, 255, 255, 0.96);
  box-shadow: none !important;
  transition: transform 0.15s ease, box-shadow 0.15s ease, filter 0.15s ease;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-exit-card #dash-game-back-button:hover {
  transform: translateY(-2px);
  box-shadow: none !important;
  filter: brightness(1.05);
}

@media (max-width: 900px) {
  .calc-sprint #dash-game-screen {
    grid-template-rows: auto 1fr minmax(128px, 180px);
  }

  .calc-sprint #dash-game-screen .dash-bottom-hud {
    transform: translateY(clamp(-30px, -5.2vh, -14px));
  }

  .calc-sprint #dash-game-screen .dash-bottom-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card {
    min-width: min(100%, 138px);
  }
}

@media (max-width: 640px) {
  .calc-sprint #dash-game-screen .dash-bottom-hud {
    width: min(100%, 100vw - 12px);
    max-height: none;
    min-height: clamp(138px, 24vh, 198px);
    padding-bottom: calc(clamp(10px, 2vh, 18px) + env(safe-area-inset-bottom));
    transform: translateY(clamp(-22px, -4.4vh, -10px));
    gap: 4px;
  }

  .calc-sprint #dash-game-screen #dash-game-time-wrap {
    width: 100%;
    padding-inline: clamp(8px, 3.2vw, 12px);
  }

  .calc-sprint #dash-game-screen .dash-bottom-stats {
    grid-template-columns: repeat(2, minmax(112px, 1fr));
    gap: 4px 6px;
    width: 100%;
  }

  .calc-sprint #dash-game-screen .dash-stat-value,
  .calc-sprint #dash-game-screen .dash-stat-label,
  .calc-sprint #dash-game-screen .dash-stat-unit {
    overflow-wrap: anywhere;
    word-break: break-word;
  }
}

/* =========================================
   Enemy Ground Contact Adjustment
   ミックス以外の接地ズレ補正
========================================= */

/* たし算（草） */
.calc-sprint .stage-add .enemy {
  bottom: -6px;
}

/* ひき算（氷） */
.calc-sprint .stage-sub .enemy {
  bottom: -4px;
}

/* かけ算（森） */
.calc-sprint .stage-mul .enemy {
  bottom: -5px;
}

/* わり算（海） */
.calc-sprint .stage-div .enemy {
  bottom: -5px;
}

/* Dash bottom HUD final overrides (high-specificity / end-of-file) */
.calc-sprint #dash-game-screen .dash-bottom-hud,
.calc-sprint #dash-game-screen > .dash-bottom-hud,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap {
  border: none !important;
  outline: none !important;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.18) !important;
  background-color: rgba(8, 18, 44, 0.74) !important;
  background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.08), transparent 22%), linear-gradient(180deg, rgba(8, 18, 44, 0.74), rgba(8, 18, 44, 0.62)) !important;
  filter: saturate(1.08) !important;
}

.calc-sprint #dash-game-screen .dash-bottom-hud::before,
.calc-sprint #dash-game-screen .dash-bottom-hud::after,
.calc-sprint #dash-game-screen > .dash-bottom-hud::before,
.calc-sprint #dash-game-screen > .dash-bottom-hud::after,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap::before,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap::after {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-card {
  position: relative !important;
  overflow: hidden !important;
  border: none !important;
  background: linear-gradient(180deg, rgba(8, 18, 44, 0.78), rgba(8, 18, 44, 0.66)) !important;
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.2) !important;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card::before,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-card::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 6px;
  border-radius: 14px 0 0 14px;
  background: var(--dash-accent, rgba(120, 200, 255, 0.95)) !important;
  box-shadow: 0 0 14px color-mix(in srgb, var(--dash-accent) 35%, transparent) !important;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card:nth-child(1),
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-card:nth-child(1) { --dash-accent: rgba(120, 200, 255, 0.95); }
.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card:nth-child(2),
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-card:nth-child(2) { --dash-accent: rgba(90, 220, 140, 0.95); }
.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card:nth-child(3),
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-card:nth-child(3) { --dash-accent: rgba(255, 170, 80, 0.95); }
.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-card:nth-child(4),
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-card:nth-child(4) { --dash-accent: rgba(190, 140, 255, 0.95); }

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-value,
.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-value *,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-value,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-value * {
  color: rgba(255, 255, 255, 0.95) !important;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.35) !important;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-label,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-label {
  color: rgba(255, 255, 255, 0.78) !important;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.28) !important;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-unit,
.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-value .dash-stat-unit,
.calc-sprint #dash-game-screen .dash-bottom-stats .dash-stat-value [class*="unit"],
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-unit,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-stat-value [class*="unit"] {
  color: rgba(255, 255, 255, 0.75) !important;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-exit-card,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-exit-card {
  position: relative !important;
  overflow: hidden !important;
  min-height: var(--dash-stat-card-min-h) !important;
  border-radius: 14px !important;
  border: none !important;
  background: linear-gradient(180deg, rgba(8, 18, 44, 0.78), rgba(8, 18, 44, 0.66)) !important;
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.2) !important;
  --dash-accent: rgba(255, 120, 120, 0.95);
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-exit-card::before,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-exit-card::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 6px;
  border-radius: 14px 0 0 14px;
  background: var(--dash-accent) !important;
  box-shadow: 0 0 14px color-mix(in srgb, var(--dash-accent) 35%, transparent) !important;
}

.calc-sprint #dash-game-screen .dash-bottom-stats .dash-exit-card #dash-game-back-button,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap .dash-bottom-stats .dash-exit-card #dash-game-back-button {
  width: 100% !important;
  height: 100% !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 14px !important;
  border: none !important;
  background: transparent !important;
  color: rgba(255, 255, 255, 0.95) !important;
  box-shadow: none !important;
}

/* Dash bottom HUD wrapper/frame removal overrides (latest) */
.calc-sprint #dash-game-screen .dash-bottom-hud,
.calc-sprint #dash-game-screen > .dash-bottom-hud,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap,
.calc-sprint #dash-game-screen .dash-bottom-wrap,
.calc-sprint #dash-game-screen .dash-bottom-panel,
.calc-sprint #dash-game-screen .dash-hud {
  background: transparent !important;
  background-image: none !important;
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  filter: none !important;
}

.calc-sprint #dash-game-screen .dash-bottom-hud::before,
.calc-sprint #dash-game-screen .dash-bottom-hud::after,
.calc-sprint #dash-game-screen > .dash-bottom-hud::before,
.calc-sprint #dash-game-screen > .dash-bottom-hud::after,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap::before,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap::after,
.calc-sprint #dash-game-screen .dash-bottom-wrap::before,
.calc-sprint #dash-game-screen .dash-bottom-wrap::after,
.calc-sprint #dash-game-screen .dash-bottom-panel::before,
.calc-sprint #dash-game-screen .dash-bottom-panel::after {
  background: transparent !important;
  background-image: none !important;
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

.calc-sprint #dash-game-screen #dash-game-time-wrap,
.calc-sprint #dash-game-screen .dash-bottom-hud #dash-game-time-wrap,
.calc-sprint #dash-game-screen #dash-game-bottom-wrap #dash-game-time-wrap,
.calc-sprint #dash-game-screen .dash-timebar__wrap,
.calc-sprint #dash-game-screen .dash-timebar__track {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

.calc-sprint #dash-game-screen .dash-timebar {
  border: none !important;
  box-shadow: none !important;
  background: rgba(0, 0, 0, 0.18) !important;
}

.calc-sprint .screen-dash .dash-debug-toast { position: fixed; top: 16px; right: 16px; z-index: 2147483647; padding: 8px 12px; border-radius: 10px; background: rgba(13,20,36,.9); color:#fff; font-weight:800; letter-spacing:.02em; box-shadow:0 10px 24px rgba(0,0,0,.35); pointer-events:none; }

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) .dash-overlay-root,
body > .dash-overlay-root {
  position: fixed;
  inset: 0;
  z-index: 2147483647;
  pointer-events: none;
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) .dash-build-badge,
body > .dash-overlay-root .dash-build-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  padding: 6px 10px;
  border-radius: 8px;
  background: rgba(13, 20, 36, 0.92);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.35);
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) .dash-debug-hud,
body > .dash-overlay-root .dash-debug-hud {
  position: absolute;
  top: 40px;
  right: 12px;
  padding: 6px 10px;
  border-radius: 8px;
  background: rgba(13, 20, 36, 0.88);
  color: #dff6ff;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.35;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: 0.02em;
  white-space: pre;
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.3);
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) .dash-loop-monitor-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid rgba(158, 255, 189, 0.32);
  background: rgba(10, 18, 30, 0.92);
  color: #dff6ff;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.35;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: 0.02em;
  white-space: pre;
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.35);
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) .dash-loop-monitor-badge[data-status='stopped'] {
  border-color: rgba(255, 144, 144, 0.45);
  color: #ffd7d7;
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) .dash-diagnostics-hud {
  position: absolute;
  top: 12px;
  right: 12px;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid rgba(160, 225, 255, 0.28);
  background: rgba(7, 12, 24, 0.9);
  color: #dff6ff;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.35;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: 0.02em;
  white-space: pre;
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.35);
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) :is(.dash-hitbox-player, .dash-hitbox-enemy) {
  position: fixed;
  pointer-events: none;
  box-sizing: border-box;
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) .dash-hitbox-player {
  border: 2px solid rgba(64, 245, 130, 0.9);
  background: rgba(64, 245, 130, 0.15);
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) .dash-hitbox-enemy {
  border: 2px solid rgba(255, 80, 80, 0.92);
  background: rgba(255, 80, 80, 0.16);
}

.calc-sprint :is(#dash-game-screen, .screen-dash, #dash-game) .dash-runner-debug-outline,
body > .dash-overlay-root .dash-runner-debug-outline {
  position: fixed;
  border: 2px solid rgba(255, 42, 42, 0.95);
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.55) inset;
  pointer-events: none;
}


.calc-sprint .dash-settings-card,
.calc-sprint .dash-stats-card {
  width: min(960px, 92vw);
  display: flex;
  flex-direction: column;
  gap: 12px;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-2);
}
.calc-sprint .dash-setting-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 18px;
  padding: 12px 14px;
  border-radius: var(--radius-md);
  background: color-mix(in srgb, var(--color-surface) 86%, var(--color-surface-soft));
  border: 1px solid color-mix(in srgb, var(--color-primary) 18%, transparent);
  box-shadow: var(--shadow-1);
}
.calc-sprint .dash-setting-row--select select {
  min-width: 120px;
  border-radius: 8px;
  padding: 6px 8px;
}
.calc-sprint .dash-stats-total {
  font-size: 20px;
  font-weight: 700;
  text-align: center;
  border-radius: var(--radius-md);
  padding: 10px 12px;
  background: color-mix(in srgb, var(--color-secondary) 18%, var(--color-surface));
  box-shadow: var(--shadow-1);
}
.calc-sprint .dash-stats-table-wrap {
  width: 100%;
  overflow-x: auto;
}
.calc-sprint .dash-stats-table {
  width: 100%;
  min-width: 520px;
  border-collapse: collapse;
  background: color-mix(in srgb, var(--color-surface) 86%, var(--color-surface-soft));
  border-radius: var(--radius-md);
  overflow: hidden;
}
.calc-sprint .dash-stats-table th,
.calc-sprint .dash-stats-table td {
  padding: 8px 10px;
  border-bottom: 1px solid rgba(56, 103, 255, 0.16);
  text-align: left;
}


.calc-sprint .dash-stats-row th[scope="row"] {
  position: relative;
  padding-left: 18px;
}
.calc-sprint .dash-stats-row th[scope="row"]::before {
  content: "";
  position: absolute;
  left: 4px;
  top: 50%;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  transform: translateY(-50%);
  background: var(--stage-dot, var(--color-primary));
}
.calc-sprint .dash-stats-row.stage-plus { --stage-dot: var(--stage-plus); }
.calc-sprint .dash-stats-row.stage-minus { --stage-dot: var(--stage-minus); }
.calc-sprint .dash-stats-row.stage-multi { --stage-dot: var(--stage-multi); }
.calc-sprint .dash-stats-row.stage-divide { --stage-dot: var(--stage-divide); }
.calc-sprint .dash-stats-row.stage-mix { --stage-dot: var(--stage-mix); }
.calc-sprint .dash-badge-new {
  margin-left: 6px;
  font-size: 10px;
  color: var(--color-surface);
  background: color-mix(in srgb, var(--color-accent) 72%, #243455);
}

.calc-sprint .dash-goal-progress {
  margin-top: 6px;
  display: grid;
  gap: 4px;
}

.calc-sprint .dash-goal-progress__track {
  width: 100%;
  height: 8px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.25);
  overflow: hidden;
}

.calc-sprint .dash-goal-progress__fill {
  height: 100%;
  width: 0;
  background: linear-gradient(90deg, #42d392, #20a4f3);
  transition: width 120ms linear;
}

.calc-sprint .dash-goal-progress__text {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.calc-sprint .dash-result-mode-summary {
  margin: 10px 0;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(17, 24, 39, 0.72);
  border: 1px solid rgba(148, 163, 184, 0.35);
}

.calc-sprint .dash-result-mode-summary__title {
  margin: 0;
  font-size: 0.72rem;
  opacity: 0.8;
}

.calc-sprint .dash-result-mode-summary__status {
  margin: 2px 0 4px;
  font-size: 1.1rem;
  font-weight: 900;
}

.calc-sprint .dash-result-mode-summary__status[data-cleared='1'] {
  color: #34d399;
}

.calc-sprint .dash-result-mode-summary__status[data-cleared='0'] {
  color: #f87171;
}

.calc-sprint .dash-result-mode-summary__detail {
  margin: 2px 0;
  font-size: 0.82rem;
}

.calc-sprint .dash-mode-select-list,
.calc-sprint .dash-stats-mode-filters {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  width: 100%;
}

.calc-sprint .dash-mode-select-list .secondary-button,
.calc-sprint .dash-stats-mode-filters .secondary-button,
.calc-sprint .dash-level-button {
  min-height: 44px;
  font-size: 0.86rem;
  text-align: center;
  border: 1px solid transparent;
  position: relative;
}

.calc-sprint .dash-mode-select-list .secondary-button:is(.is-current, .is-selected),
.calc-sprint .dash-stats-mode-filters .secondary-button:is(.is-current, .is-selected),
.calc-sprint .dash-level-button:is(.is-current, .is-selected) {
  border: var(--sel-border-w) solid var(--sel-border);
  background: linear-gradient(180deg, var(--sel-bg), color-mix(in srgb, var(--color-surface) 90%, var(--sel-bg)));
  box-shadow: var(--sel-ring), var(--sel-shadow);
  font-weight: var(--sel-font-w);
}

.calc-sprint .dash-mode-select-list .secondary-button:is(.is-current, .is-selected)::before,
.calc-sprint .dash-level-button:is(.is-current, .is-selected)::before {
  content: "✓";
  position: absolute;
  top: 6px;
  left: 10px;
  font-size: 12px;
  line-height: 1;
}

.calc-sprint .dash-level-button:active {
  transform: translateY(1px);
}

.calc-sprint .dash-level-button__level {
  display: block;
  font-weight: 700;
  line-height: 1.2;
}

.calc-sprint .dash-level-button__hint {
  display: block;
  margin-top: 2px;
  font-size: 0.72rem;
  line-height: 1.25;
  white-space: normal;
}

.calc-sprint #dash-stage-select-start-button.is-cta,
.calc-sprint [data-role="dash-start"].is-cta {
  border: var(--sel-border-w) solid var(--sel-border);
  background: linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 24%, var(--color-surface)), color-mix(in srgb, var(--color-primary) 14%, var(--color-surface-soft)));
  box-shadow: var(--sel-ring), 0 12px 24px color-mix(in srgb, var(--color-primary) 22%, transparent);
  font-weight: var(--sel-font-w);
}

.calc-sprint #dash-stage-select-start-button.is-cta::after,
.calc-sprint [data-role="dash-start"].is-cta::after {
  content: "→";
  margin-left: 0.45em;
}

.calc-sprint .dash-world-level-toggle,
.calc-sprint [data-role="dash-world-level-toggle"] {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  font-size: 0.95rem;
  line-height: 1.45;
}

.calc-sprint .dash-world-level-toggle input,
.calc-sprint [data-role="dash-world-level-toggle"] input {
  width: 20px;
  height: 20px;
}

@media (max-width: 640px) {
  .calc-sprint .dash-mode-select-list,
  .calc-sprint .dash-stats-mode-filters {
    grid-template-columns: 1fr;
  }
}
