/* =====================================================================
   Rocket Town Whitelist -- ธีม Ion (ตาม docs/ui-theme.md ของเซิร์ฟ)
   ฟ้าล้วน · สีอื่นใช้ได้เฉพาะสีบอกสถานะ (good / warn / danger)
   ===================================================================== */

@font-face { font-family: 'Kanit'; src: url('../fonts/Kanit-Medium.ttf') format('truetype'); font-weight: 400 500; font-display: swap; }
@font-face { font-family: 'Kanit'; src: url('../fonts/Kanit-Bold.ttf') format('truetype'); font-weight: 600 800; font-display: swap; }

:root {
  --shell-1: #0C131B;
  --shell-2: #1B2836;
  --shell-3: #080D13;
  --edge: #2F4557;
  --edge-lit: #4FC9F5;

  --acc-1: #7CE8FF;
  --acc-2: #2AA8EA;
  --acc-3: #1063AD;

  --text: #E9F6FF;
  --muted: #8AA5B9;
  --faint: #5D7689;

  --good: #6BE5A8;
  --warn: #FFC96B;
  --orange: #FF9F5A;
  --danger: #FF6B8A;

  --glow: rgba(79, 201, 245, .5);
  --glow-soft: rgba(79, 201, 245, .22);
  --glow-faint: rgba(79, 201, 245, .1);

  --bg: #05090E;
  --plate: linear-gradient(176deg, var(--shell-2), var(--shell-1) 46%, var(--shell-3));
  --panel-shadow: 0 1.2rem 2.4rem rgba(0, 0, 0, .45), inset 0 0 0 1px rgba(124, 232, 255, .04), inset 0 1px 0 rgba(124, 232, 255, .08);

  --radius: 14px;
  --radius-sm: 9px;
  --nav-h: 68px;
  --page: min(1180px, calc(100% - 32px));
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-h) + 16px); }

body {
  margin: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  font-family: 'Kanit', system-ui, sans-serif;
  font-weight: 400;
  font-size: clamp(15px, 1vw + 8px, 17px);
  line-height: 1.65;
  color: var(--text);
  background:
    radial-gradient(1200px 600px at 85% -10%, rgba(16, 99, 173, .28), transparent 60%),
    radial-gradient(900px 500px at -10% 30%, rgba(42, 168, 234, .12), transparent 60%),
    var(--bg);
  overflow-x: hidden;
}

/* ดาวจาง ๆ เต็มพื้นหลัง -- วาดด้วย gradient ไม่ต้องโหลดรูป */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: .55;
  background-image:
    radial-gradient(1px 1px at 12% 18%, #fff, transparent),
    radial-gradient(1px 1px at 72% 12%, #cdefff, transparent),
    radial-gradient(1.5px 1.5px at 40% 60%, #fff, transparent),
    radial-gradient(1px 1px at 88% 70%, #9fe3ff, transparent),
    radial-gradient(1px 1px at 22% 82%, #fff, transparent),
    radial-gradient(1px 1px at 58% 35%, #bfeaff, transparent),
    radial-gradient(1.5px 1.5px at 93% 40%, #fff, transparent);
  background-size: 640px 640px;
}

main { flex: 1; }

a { color: var(--acc-1); text-decoration: none; }
a:hover { color: #fff; }

h1, h2, h3, h4 { margin: 0; line-height: 1.2; font-weight: 700; }
p { margin: 0; }

.wrap { width: var(--page); margin-inline: auto; }

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--acc-1);
}
.eyebrow::before { content: ''; width: 28px; height: 2px; background: linear-gradient(90deg, var(--edge-lit), transparent); }

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

.icon { width: 1.15em; height: 1.15em; flex: none; }

/* =====================================================================
   ปุ่ม -- พื้นเข้มเสมอ ตัวหนังสืออ่อน ปุ่มเด่นต่างที่ขอบติดไฟกับแสงรอบปุ่ม
   ===================================================================== */
.btn {
  --tone: var(--edge);
  --tone-wash: transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 46px;
  padding: 0 22px;
  font: inherit;
  font-weight: 600;
  font-size: .98rem;
  color: var(--text);
  white-space: nowrap;
  border: 1px solid var(--tone);
  border-radius: var(--radius-sm);
  background: linear-gradient(180deg, var(--tone-wash), rgba(0, 0, 0, .25)), var(--plate);
  box-shadow: 0 0 14px var(--tone-wash);
  cursor: pointer;
  transition: border-color .18s, box-shadow .18s, transform .12s, color .18s;
}
.btn:hover { --tone: var(--edge-lit); color: #fff; }
.btn:active { transform: translateY(1px) scale(.985); }
.btn:focus-visible { outline: 2px solid var(--acc-1); outline-offset: 3px; }
.btn[disabled] { opacity: .5; cursor: not-allowed; transform: none; }

.btn--go { --tone: var(--edge-lit); --tone-wash: rgba(79, 201, 245, .2); }
.btn--go:hover { --tone-wash: rgba(79, 201, 245, .32); }
.btn--good { --tone: var(--good); --tone-wash: rgba(107, 229, 168, .16); }
.btn--danger { --tone: var(--danger); --tone-wash: rgba(255, 107, 138, .14); }
.btn--ghost { background: transparent; box-shadow: none; }
.btn--lg { min-height: 54px; padding: 0 28px; font-size: 1.05rem; }
.btn--sm { min-height: 38px; padding: 0 14px; font-size: .9rem; }
.btn--block { width: 100%; }

.btn.is-busy { pointer-events: none; color: transparent; position: relative; }
.btn.is-busy::after {
  content: '';
  position: absolute;
  inset: 0;
  margin: auto;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 2px solid var(--acc-1);
  border-right-color: transparent;
  animation: spin .7s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* =====================================================================
   แผง
   ===================================================================== */
.panel {
  position: relative;
  border: 1px solid var(--edge);
  border-radius: var(--radius);
  background: var(--plate);
  box-shadow: var(--panel-shadow);
}
.panel--lit { border-color: rgba(79, 201, 245, .55); box-shadow: var(--panel-shadow), 0 0 28px var(--glow-faint); }

.chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 2px 10px;
  font-size: .78rem;
  font-weight: 600;
  border-radius: 999px;
  border: 1px solid var(--edge);
  color: var(--muted);
  background: rgba(8, 13, 19, .6);
  white-space: nowrap;
}
.chip--lit { color: var(--acc-1); border-color: rgba(79, 201, 245, .45); background: rgba(79, 201, 245, .08); }
.chip--good { color: var(--good); border-color: rgba(107, 229, 168, .45); background: rgba(107, 229, 168, .08); }
.chip--warn { color: var(--warn); border-color: rgba(255, 201, 107, .45); background: rgba(255, 201, 107, .08); }
.chip--danger { color: var(--danger); border-color: rgba(255, 107, 138, .45); background: rgba(255, 107, 138, .08); }

.dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; box-shadow: 0 0 8px currentColor; }
.dot--pulse { animation: pulse 1.8s ease-in-out infinite; }
@keyframes pulse { 50% { opacity: .35; } }

/* =====================================================================
   แถบเมนูบน
   ===================================================================== */
.nav {
  position: sticky;
  top: 0;
  z-index: 50;
  height: var(--nav-h);
  border-bottom: 1px solid rgba(47, 69, 87, .7);
  background: rgba(6, 11, 17, .78);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.nav__inner { height: 100%; display: flex; align-items: center; gap: 28px; }

.brand { display: flex; align-items: center; gap: 12px; color: var(--text); }
.brand:hover { color: var(--text); }
.brand img { width: 44px; height: 44px; object-fit: contain; filter: drop-shadow(0 0 10px var(--glow-soft)); }
.brand__name { display: block; font-weight: 800; font-size: 1.05rem; letter-spacing: .06em; line-height: 1.1; }
.brand__sub { display: block; font-size: .7rem; letter-spacing: .3em; color: var(--acc-1); }

.nav__links { display: flex; gap: 6px; margin-left: auto; }
.nav__links a {
  padding: 8px 14px;
  border-radius: 8px;
  color: var(--muted);
  font-weight: 500;
  transition: color .18s, background .18s;
}
.nav__links a:hover { color: var(--text); background: rgba(79, 201, 245, .07); }
.nav__links a[aria-current='page'] { color: var(--acc-1); background: rgba(79, 201, 245, .1); }

.nav__user { display: flex; align-items: center; gap: 10px; }

.avatar {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1px solid var(--edge-lit);
  object-fit: cover;
  background: var(--shell-2);
  display: grid;
  place-items: center;
  font-weight: 700;
  color: var(--acc-1);
  flex: none;
}
.user-chip { display: flex; align-items: center; gap: 10px; padding: 4px 6px 4px 4px; border-radius: 999px; border: 1px solid var(--edge); background: rgba(8, 13, 19, .6); }
.user-chip__name { max-width: 140px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .92rem; }

.nav__toggle { display: none; margin-left: auto; }

@media (max-width: 860px) {
  .nav__toggle { display: inline-flex; }
  .nav__links, .nav__user { display: none; }
  .nav.is-open .nav__links,
  .nav.is-open .nav__user {
    display: flex;
    position: absolute;
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    margin: 0;
    padding: 12px 16px;
    background: rgba(6, 11, 17, .97);
    border-bottom: 1px solid var(--edge);
  }
  .nav.is-open .nav__links { top: var(--nav-h); }
  .nav.is-open .nav__user { top: calc(var(--nav-h) + 168px); }
  .nav.is-open .nav__links a { padding: 12px 14px; }
}

/* =====================================================================
   หน้าแรก
   ===================================================================== */
.hero {
  position: relative;
  min-height: calc(100vh - var(--nav-h));
  min-height: calc(100svh - var(--nav-h));
  display: flex;
  align-items: center;
  overflow: hidden;
  isolation: isolate;
}
.hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: -2;
}
.hero::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(90deg, rgba(5, 9, 14, .94) 0%, rgba(5, 9, 14, .72) 45%, rgba(5, 9, 14, .3) 100%),
    linear-gradient(0deg, var(--bg) 0%, transparent 30%);
}
.hero__inner { display: grid; grid-template-columns: 1.2fr .8fr; gap: 40px; align-items: center; padding: 64px 0 96px; }
.hero h1 { margin-top: 18px; font-size: clamp(2.4rem, 5.5vw, 4.4rem); font-weight: 800; letter-spacing: -.01em; }
.hero h1 .lit { color: var(--acc-1); text-shadow: 0 2px 8px rgba(0, 0, 0, .9), 0 0 22px var(--glow-soft); }
.hero__lead { margin-top: 18px; max-width: 34em; font-size: 1.08rem; color: #C6DCEB; }
.hero__actions { margin-top: 32px; display: flex; flex-wrap: wrap; gap: 14px; }
.hero__logo { width: min(100%, 400px); justify-self: center; filter: drop-shadow(0 18px 40px rgba(0, 0, 0, .6)) drop-shadow(0 0 30px var(--glow-faint)); animation: float 6s ease-in-out infinite; }
@keyframes float { 50% { transform: translateY(-14px); } }

.facts { margin-top: 40px; display: flex; flex-wrap: wrap; gap: 12px; }
.fact { padding: 12px 18px; min-width: 120px; }
.fact b { display: block; font-size: 1.5rem; font-weight: 800; color: var(--acc-1); font-variant-numeric: tabular-nums; line-height: 1.2; }
.fact span { font-size: .84rem; color: var(--muted); }

.section { padding: 96px 0; }
.section__head { max-width: 640px; margin-bottom: 44px; }
.section__head h2 { margin-top: 12px; font-size: clamp(1.8rem, 3.4vw, 2.6rem); }
.section__head p { margin-top: 12px; color: var(--muted); }

.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; counter-reset: step; }
.step { padding: 28px 26px 30px; overflow: hidden; }
.step__no {
  position: absolute;
  right: 18px;
  top: 6px;
  font-size: 4.6rem;
  font-weight: 800;
  line-height: 1;
  color: transparent;
  -webkit-text-stroke: 1px rgba(79, 201, 245, .28);
}
.step__icon {
  width: 52px;
  height: 52px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  border: 1px solid rgba(79, 201, 245, .45);
  background: linear-gradient(160deg, rgba(79, 201, 245, .18), rgba(16, 99, 173, .1));
  color: var(--acc-1);
  box-shadow: 0 0 18px var(--glow-faint);
}
.step__icon .icon { width: 26px; height: 26px; }
.step h3 { margin-top: 22px; font-size: 1.25rem; }
.step p { margin-top: 10px; color: var(--muted); font-size: .96rem; }
.step ul { margin: 14px 0 0; padding: 0; list-style: none; display: grid; gap: 6px; font-size: .92rem; color: #C6DCEB; }
.step li { display: flex; gap: 8px; }
.step li::before { content: '›'; color: var(--acc-1); font-weight: 700; }

.city { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.city-card { min-height: 280px; padding: 28px; display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden; }
.city-card__art { position: absolute; inset: 0; z-index: 0; opacity: .9; }
.city-card > :not(.city-card__art) { position: relative; z-index: 1; }
.city-card__tag { font-size: .74rem; letter-spacing: .26em; font-weight: 700; color: var(--acc-1); }
.city-card h3 { margin-top: 6px; font-size: 1.45rem; }
.city-card p { margin-top: 8px; color: var(--muted); font-size: .95rem; }

.cta-band { padding: 56px; display: flex; align-items: center; justify-content: space-between; gap: 28px; overflow: hidden; }
.cta-band::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(600px 240px at 0% 50%, rgba(79, 201, 245, .16), transparent 70%);
  pointer-events: none;
}
.cta-band h2 { font-size: clamp(1.6rem, 3vw, 2.2rem); position: relative; }
.cta-band p { margin-top: 10px; color: var(--muted); position: relative; }
.cta-band .hero__actions { margin-top: 0; position: relative; flex: none; }

@media (max-width: 960px) {
  .hero__inner { grid-template-columns: 1fr; text-align: left; padding-top: 40px; }
  .hero__logo { order: -1; width: min(60vw, 240px); justify-self: start; }
  .steps, .city { grid-template-columns: 1fr; }
  .cta-band { flex-direction: column; align-items: flex-start; padding: 32px 24px; }
}

/* =====================================================================
   ท้ายเว็บ
   ===================================================================== */
.footer { margin-top: 40px; border-top: 1px solid rgba(47, 69, 87, .7); background: rgba(6, 11, 17, .7); }
.footer__inner { padding: 28px 0; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; font-size: .9rem; color: var(--muted); }
.footer__links { display: flex; flex-wrap: wrap; gap: 20px; }
.footer__links a { color: var(--muted); }
.footer__links a:hover { color: var(--text); }

/* =====================================================================
   หัวหน้าย่อย (กฎ / สมัคร / ผลของฉัน)
   ===================================================================== */
.page-head { padding: 56px 0 32px; }
.page-head h1 { margin-top: 12px; font-size: clamp(2rem, 4vw, 3rem); font-weight: 800; }
.page-head p { margin-top: 10px; color: var(--muted); max-width: 40em; }

/* =====================================================================
   หน้ากฎ
   ===================================================================== */
.rules { display: grid; grid-template-columns: 290px 1fr; gap: 28px; align-items: start; padding-bottom: 60px; }

.rules-nav { position: sticky; top: calc(var(--nav-h) + 16px); padding: 14px; max-height: calc(100vh - var(--nav-h) - 32px); overflow-y: auto; }
.search { position: relative; margin-bottom: 12px; }
.search .icon { position: absolute; left: 12px; top: 0; bottom: 0; margin: auto; color: var(--faint); }
/* ต้องเจาะจงกว่า input[type='search'] ข้างล่าง ไม่งั้นช่องว่างซ้ายถูกทับ ไอคอนจะทับตัวหนังสือ */
.search input[type='search'] { padding-left: 38px; }

.rules-nav__title { margin: 6px 6px 8px; font-size: .74rem; letter-spacing: .2em; font-weight: 700; color: var(--faint); }
.rules-nav a {
  display: grid;
  grid-template-columns: 30px 1fr auto;
  align-items: center;
  gap: 8px;
  padding: 10px 10px;
  border-radius: 9px;
  color: var(--muted);
  border: 1px solid transparent;
  transition: background .18s, color .18s, border-color .18s;
}
.rules-nav a:hover { color: var(--text); background: rgba(79, 201, 245, .06); }
.rules-nav a.is-active { color: var(--text); border-color: rgba(79, 201, 245, .4); background: rgba(79, 201, 245, .09); }
.rules-nav__no { font-weight: 800; color: var(--acc-2); font-variant-numeric: tabular-nums; }
.rules-nav a.is-active .rules-nav__no { color: var(--acc-1); }
.rules-nav__count { font-size: .76rem; color: var(--faint); }

.legend { padding: 18px 20px; display: flex; flex-wrap: wrap; gap: 10px 24px; align-items: center; margin-bottom: 28px; }
.legend__title { font-weight: 700; margin-right: 6px; }
.legend__item { display: flex; align-items: center; gap: 8px; font-size: .9rem; color: var(--muted); }
.legend__item b { white-space: nowrap; color: var(--text); }
@media (max-width: 640px) {
  .legend { flex-direction: column; align-items: flex-start; }
  .legend__item { align-items: flex-start; }
  .legend__item .card-pen { margin-top: 5px; flex: none; }
}

.card-pen { display: inline-block; width: 12px; height: 16px; border-radius: 2px; transform: rotate(-8deg); box-shadow: 0 0 8px currentColor; background: currentColor; }
.pen--yellow { color: var(--warn); }
.pen--orange { color: var(--orange); }
.pen--red { color: var(--danger); }

.rule-cat { margin-bottom: 44px; }
.rule-cat__head { display: flex; align-items: flex-end; gap: 18px; padding-bottom: 16px; margin-bottom: 18px; border-bottom: 1px solid var(--edge); }
.rule-cat__no { font-size: 3.2rem; font-weight: 800; line-height: .9; color: transparent; -webkit-text-stroke: 1px var(--edge-lit); }
.rule-cat__head h2 { font-size: 1.6rem; }
.rule-cat__head p { color: var(--muted); font-size: .95rem; }

.rule { padding: 22px 24px; margin-bottom: 14px; }
.rule:target { border-color: var(--edge-lit); box-shadow: var(--panel-shadow), 0 0 0 3px var(--glow-faint); }
.rule__top { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.rule__code { font-weight: 800; color: var(--acc-1); font-variant-numeric: tabular-nums; min-width: 2.4em; }
.rule__pens { margin-left: auto; display: flex; gap: 6px; flex-wrap: wrap; }
.rule h3 { margin-top: 10px; font-size: 1.12rem; }
.rule__body { margin-top: 8px; color: #C6DCEB; }
.rule__ex { margin-top: 14px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.rule__ex > div { padding: 12px 14px; border-radius: 9px; font-size: .92rem; background: rgba(8, 13, 19, .55); border: 1px solid var(--edge); }
.rule__ex b { display: flex; align-items: center; gap: 6px; font-size: .82rem; margin-bottom: 4px; }
.rule__ex ul { margin: 0; padding-left: 18px; color: #C6DCEB; }
.rule__ex .ex-do b { color: var(--good); }
.rule__ex .ex-dont b { color: var(--danger); }

.empty { padding: 40px 24px; text-align: center; color: var(--muted); }

@media (max-width: 960px) {
  .rules { grid-template-columns: 1fr; }
  .rules-nav { position: static; max-height: none; }
  .rule__ex { grid-template-columns: 1fr; }
}

/* =====================================================================
   ฟอร์ม
   ===================================================================== */
.field { display: flex; flex-direction: column; gap: 6px; }
.field label, .field__label { font-size: .9rem; font-weight: 600; color: #C6DCEB; }
.field small { font-size: .8rem; color: var(--faint); }
.field .err { font-size: .82rem; color: var(--danger); min-height: 0; }

input[type='text'], input[type='number'], input[type='date'], input[type='search'] {
  width: 100%;
  min-height: 46px;
  padding: 0 14px;
  font: inherit;
  color: var(--text);
  border: 1px solid var(--edge);
  border-radius: var(--radius-sm);
  background: rgba(5, 9, 14, .75);
  outline: none;
  color-scheme: dark;
  transition: border-color .18s, box-shadow .18s;
}
input:focus { border-color: var(--edge-lit); box-shadow: 0 0 0 3px var(--glow-faint); }
.field.has-error input, .field.has-error .seg { border-color: var(--danger); }

.seg { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 6px; padding: 4px; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .75); }
.seg label { position: relative; }
.seg input { position: absolute; opacity: 0; pointer-events: none; }
.seg span { display: flex; align-items: center; justify-content: center; min-height: 38px; border-radius: 7px; cursor: pointer; color: var(--muted); font-weight: 500; border: 1px solid transparent; transition: background .18s, color .18s; }
.seg input:checked + span { color: var(--text); border-color: rgba(79, 201, 245, .5); background: rgba(79, 201, 245, .14); }
.seg input:focus-visible + span { outline: 2px solid var(--acc-1); }

.check { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .5); cursor: pointer; }
.check input { width: 20px; height: 20px; margin-top: 3px; accent-color: var(--acc-2); flex: none; }
.check.has-error { border-color: var(--danger); }

.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.form-grid .span-2 { grid-column: 1 / -1; }
.form-group-title { grid-column: 1 / -1; display: flex; align-items: center; gap: 10px; margin-top: 8px; font-size: .8rem; letter-spacing: .18em; font-weight: 700; color: var(--acc-1); }
.form-group-title::after { content: ''; flex: 1; height: 1px; background: var(--edge); }

@media (max-width: 640px) { .form-grid { grid-template-columns: 1fr; } }

/* =====================================================================
   หน้าสมัคร
   ===================================================================== */
.apply { width: min(820px, calc(100% - 32px)); margin: 0 auto; padding-bottom: 60px; }

.stepper { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 22px; }
.stepper__item { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-radius: 11px; border: 1px solid var(--edge); background: rgba(8, 13, 19, .6); color: var(--faint); font-size: .92rem; }
.stepper__no { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; flex: none; font-weight: 700; border: 1px solid currentColor; font-size: .85rem; }
.stepper__item.is-now { color: var(--text); border-color: rgba(79, 201, 245, .55); background: rgba(79, 201, 245, .08); }
.stepper__item.is-now .stepper__no { color: var(--acc-1); box-shadow: 0 0 12px var(--glow-soft); }
.stepper__item.is-done { color: var(--good); }
@media (max-width: 640px) { .stepper__label { display: none; } .stepper__item { justify-content: center; } }

.card { padding: 36px; }
.card--center { text-align: center; }
.card h2 { font-size: 1.6rem; }
.card__lead { margin-top: 10px; color: var(--muted); }
.card__actions { margin-top: 26px; display: flex; flex-wrap: wrap; gap: 12px; }
.card--center .card__actions { justify-content: center; }
@media (max-width: 640px) { .card { padding: 24px 20px; } }

.badge-icon {
  width: 76px;
  height: 76px;
  margin: 0 auto 20px;
  display: grid;
  place-items: center;
  border-radius: 22px;
  color: var(--acc-1);
  border: 1px solid rgba(79, 201, 245, .5);
  background: radial-gradient(circle at 50% 30%, rgba(79, 201, 245, .25), rgba(16, 99, 173, .08));
  box-shadow: 0 0 30px var(--glow-faint);
}
.badge-icon .icon { width: 36px; height: 36px; }
.badge-icon--good { color: var(--good); border-color: rgba(107, 229, 168, .5); background: radial-gradient(circle at 50% 30%, rgba(107, 229, 168, .22), rgba(107, 229, 168, .04)); }
.badge-icon--danger { color: var(--danger); border-color: rgba(255, 107, 138, .5); background: radial-gradient(circle at 50% 30%, rgba(255, 107, 138, .2), rgba(255, 107, 138, .04)); }
.badge-icon--warn { color: var(--warn); border-color: rgba(255, 201, 107, .5); background: radial-gradient(circle at 50% 30%, rgba(255, 201, 107, .2), rgba(255, 201, 107, .04)); }

.note { margin-top: 20px; padding: 14px 16px; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .5); color: var(--muted); font-size: .9rem; display: flex; gap: 10px; text-align: left; }
.note .icon { color: var(--acc-1); margin-top: 3px; }
.note--warn { border-color: rgba(255, 201, 107, .35); }
.note--warn .icon { color: var(--warn); }

.exam-rules { margin-top: 22px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.exam-rules > div { padding: 12px; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .5); text-align: center; }
.exam-rules b { display: block; font-size: 1.3rem; color: var(--acc-1); font-variant-numeric: tabular-nums; }
.exam-rules span { font-size: .8rem; color: var(--muted); }
@media (max-width: 640px) { .exam-rules { grid-template-columns: 1fr 1fr; } }

/* ---------------------------------------------------------------- ข้อสอบ */
.exam-bar {
  position: sticky;
  top: calc(var(--nav-h) + 10px);
  z-index: 10;
  padding: 14px 18px;
  margin-bottom: 16px;
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 18px;
}
.exam-bar__progress { display: flex; flex-direction: column; gap: 8px; }
.exam-bar__label { font-size: .88rem; color: var(--muted); }
.exam-bar__label b { color: var(--text); font-variant-numeric: tabular-nums; }
.track { height: 8px; border-radius: 99px; background: linear-gradient(180deg, var(--shell-3), var(--shell-1)); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .6); overflow: hidden; }
.track__fill { height: 100%; width: 0; border-radius: inherit; background: linear-gradient(90deg, var(--acc-3), var(--acc-2) 45%, var(--acc-1)); box-shadow: 0 0 10px var(--glow); transition: width .25s; }
.timer { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: 1.15rem; font-variant-numeric: tabular-nums; color: var(--acc-1); }
.timer.is-low { color: var(--warn); }
.timer.is-critical { color: var(--danger); animation: pulse 1s ease-in-out infinite; }
.saved { font-size: .82rem; color: var(--faint); display: flex; align-items: center; gap: 6px; min-width: 112px; justify-content: flex-end; }
.saved.is-ok { color: var(--good); }
.saved.is-err { color: var(--danger); }
@media (max-width: 640px) {
  .exam-bar { grid-template-columns: 1fr auto; }
  .saved { grid-column: 1 / -1; justify-content: flex-start; min-width: 0; }
}

.question { padding: 30px; }
.question__no { font-size: .8rem; letter-spacing: .2em; font-weight: 700; color: var(--acc-1); }
.question__text { margin-top: 10px; font-size: 1.22rem; font-weight: 600; line-height: 1.5; }
.choices { margin-top: 22px; display: grid; gap: 10px; }
.choice {
  display: grid;
  grid-template-columns: 34px 1fr;
  align-items: center;
  gap: 14px;
  width: 100%;
  padding: 14px 16px;
  text-align: left;
  font: inherit;
  color: #C6DCEB;
  border: 1px solid var(--edge);
  border-radius: 11px;
  background: rgba(5, 9, 14, .55);
  cursor: pointer;
  transition: border-color .15s, background .15s, color .15s, transform .1s;
}
.choice:hover { border-color: rgba(79, 201, 245, .5); color: var(--text); }
.choice:active { transform: scale(.995); }
.choice:focus-visible { outline: 2px solid var(--acc-1); outline-offset: 2px; }
.choice__key { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 9px; border: 1px solid var(--edge); font-weight: 700; color: var(--muted); }
.choice[aria-checked='true'] { color: var(--text); border-color: var(--edge-lit); background: linear-gradient(90deg, rgba(79, 201, 245, .16), rgba(79, 201, 245, .04)); box-shadow: 0 0 16px var(--glow-faint); }
.choice[aria-checked='true'] .choice__key { color: var(--acc-1); border-color: var(--edge-lit); background: rgba(79, 201, 245, .14); }

.exam-nav { margin-top: 16px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.qdots { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
.qdot { width: 36px; height: 36px; border-radius: 9px; border: 1px solid var(--edge); background: rgba(5, 9, 14, .6); color: var(--faint); font: inherit; font-size: .85rem; font-weight: 600; cursor: pointer; font-variant-numeric: tabular-nums; transition: border-color .15s, color .15s; }
.qdot:hover { border-color: rgba(79, 201, 245, .5); }
.qdot.is-answered { color: var(--acc-1); border-color: rgba(79, 201, 245, .35); background: rgba(79, 201, 245, .08); }
.qdot.is-current { color: var(--text); border-color: var(--edge-lit); box-shadow: 0 0 10px var(--glow-soft); }

/* ---------------------------------------------------------------- ผลสอบ */
.score { margin: 6px auto 0; display: flex; align-items: baseline; justify-content: center; gap: 6px; font-variant-numeric: tabular-nums; }
.score b { font-size: 4rem; font-weight: 800; line-height: 1; }
.score span { font-size: 1.4rem; color: var(--muted); }
.score--good b { color: var(--good); text-shadow: 0 0 24px rgba(107, 229, 168, .35); }
.score--danger b { color: var(--danger); }

.review-list { margin-top: 18px; display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }

.char-card { margin-top: 22px; padding: 16px 18px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; text-align: left; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .5); }
.char-card span { display: block; font-size: .78rem; color: var(--faint); }
@media (max-width: 640px) { .char-card { grid-template-columns: 1fr 1fr; } }

/* ---------------------------------------------------------------- ผลของฉัน */
.history { display: grid; gap: 10px; }
.history__row { padding: 16px 20px; display: grid; grid-template-columns: auto 1fr auto auto; align-items: center; gap: 18px; }
.history__score { font-weight: 800; font-size: 1.3rem; font-variant-numeric: tabular-nums; }
.history__when { color: var(--muted); font-size: .9rem; }
@media (max-width: 640px) { .history__row { grid-template-columns: 1fr auto; } }

/* =====================================================================
   หน้าต่างยืนยัน + ใบแจ้งเตือน
   ===================================================================== */
.modal { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 16px; background: rgba(2, 5, 9, .72); backdrop-filter: blur(4px); animation: fade .18s ease-out; }
.modal[hidden] { display: none; }
.modal__box { width: min(460px, 100%); padding: 30px; text-align: center; animation: pop .2s ease-out; }
.modal__box h3 { font-size: 1.3rem; }
.modal__box p { margin-top: 10px; color: var(--muted); }
.modal__actions { margin-top: 24px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
@keyframes fade { from { opacity: 0; } }
@keyframes pop { from { opacity: 0; transform: translateY(8px) scale(.98); } }

.toasts { position: fixed; right: 16px; bottom: 16px; z-index: 200; display: grid; gap: 10px; width: min(380px, calc(100% - 32px)); }
.toast { padding: 14px 16px; display: flex; gap: 10px; align-items: flex-start; font-size: .94rem; animation: pop .2s ease-out; }
.toast--error { border-color: rgba(255, 107, 138, .55); }
.toast--error .icon { color: var(--danger); }
.toast--ok { border-color: rgba(107, 229, 168, .5); }
.toast--ok .icon { color: var(--good); }

.loading { padding: 80px 0; display: grid; place-items: center; color: var(--muted); gap: 14px; }
.loading::before { content: ''; width: 34px; height: 34px; border-radius: 50%; border: 3px solid var(--edge); border-top-color: var(--edge-lit); animation: spin .8s linear infinite; }

.prose h2 { margin: 30px 0 10px; font-size: 1.25rem; color: var(--acc-1); }
.prose p, .prose li { color: #C6DCEB; }
.prose ul { padding-left: 20px; }

/* =====================================================================
   หน้าเติมเงิน
   ===================================================================== */
.topup-page { padding-bottom: 60px; }
.topup { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
@media (max-width: 900px) { .topup { grid-template-columns: 1fr; } }

.topup-who { display: flex; align-items: center; gap: 12px; padding: 14px 18px; margin-bottom: 16px; }
.topup-who .icon { color: var(--acc-1); }
.topup-who b { color: var(--acc-1); }
.topup-who--warn { border-color: rgba(255, 201, 107, .45); }
.topup-who--warn .icon, .topup-who--warn b { color: var(--warn); }

.topup__step { display: flex; align-items: center; gap: 12px; font-size: 1.2rem; font-weight: 700; margin-bottom: 18px; }
.topup__step .stepper__no { color: var(--acc-1); box-shadow: 0 0 12px var(--glow-soft); }

.amounts { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; }
@media (max-width: 520px) { .amounts { grid-template-columns: repeat(3, 1fr); } }
.amount {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 10px 4px;
  font: inherit;
  font-weight: 700;
  font-size: 1.05rem;
  color: var(--muted);
  border: 1px solid var(--edge);
  border-radius: var(--radius-sm);
  background: rgba(5, 9, 14, .55);
  cursor: pointer;
  font-variant-numeric: tabular-nums;
  transition: border-color .15s, color .15s, background .15s;
}
.amount small { font-size: .72rem; font-weight: 500; }
.amount:hover { border-color: rgba(79, 201, 245, .5); color: var(--text); }
.amount[aria-checked='true'] { color: var(--text); border-color: var(--edge-lit); background: rgba(79, 201, 245, .14); box-shadow: 0 0 14px var(--glow-faint); }

.topup__gain { margin-top: 14px; color: var(--muted); }
.topup__gain b { font-size: 1.5rem; color: var(--acc-1); font-variant-numeric: tabular-nums; }

/* คิวอาร์ต้องพื้นขาว ไม่งั้นแอปธนาคารบางตัวสแกนไม่ติด */
.qr { width: min(240px, 100%); aspect-ratio: 1; margin: 18px auto 0; padding: 10px; border-radius: 12px; background: #fff; display: grid; place-items: center; box-shadow: 0 0 24px var(--glow-faint); }
.qr svg { width: 100%; height: 100%; display: block; }
.qr__hint { margin-top: 8px; text-align: center; font-size: .85rem; color: var(--faint); }

.pay-rows { margin-top: 18px; display: grid; gap: 8px; }
.pay-row { display: grid; grid-template-columns: 90px 1fr auto; align-items: center; gap: 10px; padding: 8px 12px; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .5); }
.pay-row span { font-size: .85rem; color: var(--faint); }
.pay-row b { font-variant-numeric: tabular-nums; letter-spacing: .02em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pay-row:not(:has(button)) { grid-template-columns: 90px 1fr; }

.drop {
  display: grid;
  place-items: center;
  min-height: 300px;
  padding: 20px;
  border: 2px dashed rgba(79, 201, 245, .35);
  border-radius: var(--radius);
  background: rgba(5, 9, 14, .5);
  cursor: pointer;
  text-align: center;
  transition: border-color .18s, background .18s;
}
.drop:hover, .drop:focus-visible, .drop.is-over { border-color: var(--edge-lit); background: rgba(79, 201, 245, .06); outline: none; }
.drop.is-disabled { cursor: not-allowed; opacity: .5; }
.drop__empty { display: grid; justify-items: center; gap: 6px; color: var(--muted); }
.drop__empty .icon { width: 40px; height: 40px; color: var(--acc-1); margin-bottom: 6px; }
.drop__empty b { color: var(--text); font-size: 1.05rem; }
.drop__empty small { color: var(--faint); }
.drop__preview { max-width: 100%; max-height: 380px; border-radius: 10px; }
[hidden] { display: none !important; }

.slip-result { margin-top: 18px; padding: 22px; text-align: center; border-radius: var(--radius); border: 1px solid var(--edge); background: rgba(5, 9, 14, .5); }
.slip-result .badge-icon { width: 60px; height: 60px; margin-bottom: 12px; }
.slip-result h3 { font-size: 1.2rem; }
.slip-result p { margin-top: 8px; color: #C6DCEB; }
.slip-result--good { border-color: rgba(107, 229, 168, .45); }
.slip-result--warn { border-color: rgba(255, 201, 107, .45); }
.slip-result--danger { border-color: rgba(255, 107, 138, .45); }

.topup-history { margin-top: 40px; }
.topup-history h2 { font-size: 1.4rem; margin-bottom: 14px; }

/* =====================================================================
   แถวบัญชี (Discord · Steam · เซิร์ฟ) + การ์ดสรุปหลังสอบผ่าน
   ===================================================================== */
.acc-section { margin-top: 20px; }
.acc-section__title { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; font-weight: 700; font-size: .95rem; }

.acc-row { display: flex; align-items: center; gap: 14px; padding: 12px 14px; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .55); text-align: left; }
.acc-row--empty { border-style: dashed; }
.acc-row--chips { flex-wrap: wrap; gap: 8px; }
.acc-row__pic { width: 44px; height: 44px; flex: none; border-radius: 50%; object-fit: cover; display: grid; place-items: center; color: var(--acc-1); border: 1px solid rgba(79, 201, 245, .4); background: rgba(79, 201, 245, .08); }
.acc-row__pic .icon { width: 22px; height: 22px; }
.acc-row__text { min-width: 0; display: flex; flex-direction: column; }
.acc-row__text b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.acc-row__text b a { color: var(--text); }
.acc-row__text b a:hover { color: var(--acc-1); }
.acc-row__ext { color: var(--acc-1); font-size: .85em; }
.acc-row__text span { font-size: .8rem; color: var(--faint); font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.result-card { max-width: 560px; margin: 0 auto; overflow: hidden; }
.result-card__hero {
  position: relative;
  padding: 34px 24px 28px;
  text-align: center;
  border-bottom: 1px solid var(--edge);
  background:
    radial-gradient(420px 200px at 50% 0%, rgba(79, 201, 245, .25), transparent 70%),
    linear-gradient(180deg, rgba(16, 99, 173, .35), rgba(8, 13, 19, .2));
  isolation: isolate;
}
/* โลโก้จาง ๆ หลังหัวการ์ด แบบเดียวกับตัวอย่าง */
.result-card__hero::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: url('/media/logo.png') center 40% / 260px no-repeat;
  opacity: .06;
}
.result-card__hero .badge-icon { margin-bottom: 14px; }
.result-card__hero h2 { font-size: 1.9rem; }
.result-card__hero p { margin-top: 6px; color: #C6DCEB; }
.result-card__body { padding: 8px 28px 26px; }
.result-card__foot { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--edge); text-align: center; font-size: .85rem; color: var(--faint); }
@media (max-width: 640px) { .result-card__body { padding: 4px 16px 20px; } }

/* =====================================================================
   หน้าทีมงาน (/staff)
   ===================================================================== */
.staff-page { padding-bottom: 60px; }
.staff-back { font-size: .9rem; color: var(--muted); }
.staff-tools { display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; margin-bottom: 16px; }
.staff-tabs { display: flex; flex-wrap: wrap; gap: 6px; }
.staff-tabs .amount { flex-direction: row; padding: 8px 16px; font-size: .92rem; }
.staff-tools .search { margin: 0; width: min(360px, 100%); }

.staff-row { display: grid; grid-template-columns: auto 1fr auto auto; align-items: center; gap: 16px; padding: 12px 18px; color: var(--text); transition: border-color .15s; }
.staff-row:hover { color: var(--text); border-color: rgba(79, 201, 245, .55); }
.staff-row.is-current { border-color: var(--edge-lit); }
.staff-row > .acc-row__text:first-child { grid-column: 1 / 3; }
.staff-row__score { font-weight: 800; font-variant-numeric: tabular-nums; }
.staff-row__chips { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
@media (max-width: 640px) {
  .staff-row { grid-template-columns: auto 1fr auto; }
  .staff-row__chips { grid-column: 1 / -1; justify-content: flex-start; }
}

.staff-detail { display: grid; grid-template-columns: 1fr 1.2fr; gap: 20px; align-items: start; }
@media (max-width: 960px) { .staff-detail { grid-template-columns: 1fr; } }
/* ลูกของ grid กว้างได้ไม่เกินช่อง -- ไม่งั้นเลข Steam ยาว ๆ ดันการ์ดล้นจอมือถือ */
.staff-detail > *, .staff-row, .topup > * { min-width: 0; }
.staff-detail__status { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.staff-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; padding: 14px 16px; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .55); }
.staff-facts span { display: block; font-size: .78rem; color: var(--faint); }

.staff-answers { margin-top: 14px; display: grid; gap: 10px; }
.staff-answer { padding: 12px 14px; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .55); display: grid; gap: 6px; font-size: .92rem; }
.staff-answer .icon { vertical-align: -3px; }
.staff-answer--good { border-color: rgba(107, 229, 168, .4); }
.staff-answer--good > div:nth-child(2) .icon { color: var(--good); }
.staff-answer--bad { border-color: rgba(255, 107, 138, .4); }
.staff-answer--bad > div:nth-child(2) .icon { color: var(--danger); }
.staff-answer__q { color: var(--text); }

/* กล่องลิงก์ผลสาธารณะ */
.share { margin-top: 22px; padding: 14px 16px; text-align: left; border-radius: var(--radius-sm); border: 1px solid rgba(79, 201, 245, .45); background: rgba(79, 201, 245, .06); }
.share__title { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; font-weight: 700; font-size: .92rem; color: var(--acc-1); }
.share__title .muted { font-weight: 500; font-size: .82rem; }
.share__row { margin-top: 10px; display: flex; gap: 8px; }
.share__row input { flex: 1; min-width: 0; min-height: 38px; font-size: .85rem; font-variant-numeric: tabular-nums; }

/* ปุ่มเปลี่ยนบัญชีในหน้ากรอกตัวละคร */
.acc-switch { margin-top: 10px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: .88rem; }

/* ประวัติเปลี่ยนชื่อในหน้าทีมงาน */
.staff-renames { margin-top: 12px; display: grid; gap: 4px; font-size: .88rem; padding: 10px 14px; border-radius: var(--radius-sm); border: 1px dashed var(--edge); }

/* =====================================================================
   หน้ากิจกรรมแจกของ (/staff-events)
   ===================================================================== */
.staff-tabs-nav { display: flex; gap: 6px; margin-bottom: 18px; }
.staff-tabs-nav a { padding: 8px 16px; border-radius: 9px; border: 1px solid var(--edge); color: var(--muted); font-weight: 600; }
.staff-tabs-nav a[aria-current='page'] { color: var(--text); border-color: var(--edge-lit); background: rgba(79, 201, 245, .1); }

select, textarea {
  width: 100%;
  font: inherit;
  color: var(--text);
  border: 1px solid var(--edge);
  border-radius: var(--radius-sm);
  background: rgba(5, 9, 14, .75);
  outline: none;
  color-scheme: dark;
}
select { min-height: 46px; padding: 0 12px; }
textarea { padding: 10px 14px; resize: vertical; line-height: 1.5; }
select:focus, textarea:focus { border-color: var(--edge-lit); box-shadow: 0 0 0 3px var(--glow-faint); }
.field.has-error select, .field.has-error textarea { border-color: var(--danger); }

.ev-list { display: grid; gap: 14px; }
.ev-card { padding: 20px 22px; min-width: 0; }
.ev-card__head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 14px; }
.ev-card__head h3 { font-size: 1.2rem; }
.ev-card__meta { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 6px; }
.ev-card__counts { display: flex; gap: 8px; }
.ev-card__counts div { min-width: 82px; padding: 8px 10px; text-align: center; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .5); }
.ev-card__counts b { display: block; font-size: 1.3rem; color: var(--acc-1); font-variant-numeric: tabular-nums; }
.ev-card__counts b.is-warn { color: var(--warn); }
.ev-card__counts span { font-size: .75rem; color: var(--muted); }
.ev-card__rewards { margin-top: 12px; display: flex; gap: 8px; align-items: flex-start; color: #C6DCEB; }
.ev-card__rewards .icon { color: var(--acc-1); margin-top: 4px; }

.ev-subs { margin-top: 14px; display: grid; gap: 8px; }
.ev-subs__note { font-size: .85rem; }
.ev-sub { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; padding: 10px 12px; border-radius: var(--radius-sm); border: 1px solid var(--edge); background: rgba(5, 9, 14, .5); min-width: 0; }
.ev-sub .acc-row__text span { white-space: normal; word-break: break-all; }
.ev-sub__warn { color: var(--warn) !important; }

.ev-editor { width: min(720px, 100%); max-height: calc(100vh - 32px); overflow-y: auto; text-align: left; }
.ev-editor h3 { text-align: center; }
.ev-items { display: grid; gap: 8px; }
.ev-item { display: grid; grid-template-columns: 1fr 100px minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.ev-item__label { font-size: .85rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-item__label.is-bad { color: var(--danger); }
@media (max-width: 640px) { .ev-item { grid-template-columns: 1fr 80px auto; } .ev-item__label { display: none; } }
