/* ================================================================
   DESIGN TOKENS
   ================================================================ */
:root {
  color-scheme: light;

  /* Colors */
  --ink:        #0b1220;
  --ink-soft:   #2d3a4e;
  --muted:      #56606f;
  --muted-2:    #8896a8;
  --line:       rgba(15, 23, 42, 0.09);

  --blue:       #155eef;
  --blue-soft:  #e8f1ff;
  --green:      #0f9f6e;
  --green-soft: #dcfce7;
  --orange:     #f97316;
  --orange-soft:#ffedd5;
  --red:        #e11d48;
  --red-soft:   #ffe4e6;
  --navy:       #0f2d5c;

  --shadow:      0 16px 40px rgba(31, 65, 114, 0.11);
  --shadow-soft: 0 4px 16px rgba(31, 65, 114, 0.07);

  --radius-xl: 22px;
  --radius-lg: 16px;
  --radius-md: 12px;

  --transition: 200ms cubic-bezier(0.2, 0.8, 0.2, 1);

  /* ── Type scale ─────────────────────────────────────────── */
  --text-xs:   11px;   /* 배지·칩·uppercase 라벨 */
  --text-sm:   12px;   /* 캡션·메타·날짜 */
  --text-base: 14px;   /* 기본 본문 */
  --text-md:   15px;   /* 약간 강조된 본문 (이름 등) */
  --text-lg:   17px;   /* 카드 제목·소제목 */
  --text-xl:   20px;   /* 단계 요약 제목 */
  --text-h2:   clamp(22px, 5.6vw, 26px);  /* 섹션 heading */
  --text-h1:   clamp(30px, 9vw, 48px);    /* 히어로 */

  /* ── Font weight (표준값만 사용) ─────────────────────────── */
  --w-normal:  400;
  --w-medium:  500;
  --w-semi:    600;
  --w-bold:    700;
  --w-xbold:   800;
  --w-black:   900;
}

/* ================================================================
   BASE
   ================================================================ */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  min-width: 320px;
  margin: 0;
  font-family: "Pretendard Variable", Pretendard,
               "Apple SD Gothic Neo", "Malgun Gothic",
               -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: var(--text-base);
  font-weight: var(--w-medium);
  line-height: 1.6;
  color: var(--ink);
  background:
    radial-gradient(circle at 10% 0%, rgba(21, 94, 239, 0.13), transparent 32%),
    linear-gradient(180deg, #f4f8ff 0%, #edf3ff 52%, #f2f6fb 100%);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

button, input  { font: inherit; color: inherit; }
button         { cursor: pointer; }
a              { color: inherit; text-decoration: none; }
h1, h2, h3, h4,
p, ul, ol, dl, dd { margin: 0; }

/* ================================================================
   SHELL
   ================================================================ */
.app-shell {
  width: min(680px, calc(100% - 24px));
  margin: 0 auto;
  padding: 16px 0 100px;
}

/* ================================================================
   SKIP LINK
   ================================================================ */
.skip-link {
  position: fixed;
  left: 16px; top: 12px;
  z-index: 100;
  transform: translateY(-140%);
  padding: 10px 16px;
  border-radius: 999px;
  color: #fff;
  background: #111827;
  font-size: var(--text-base);
  font-weight: var(--w-bold);
  transition: transform var(--transition);
}
.skip-link:focus { transform: translateY(0); }

/* ================================================================
   HERO
   ================================================================ */
.hero-card {
  position: relative;
  overflow: hidden;
  padding: 24px 20px 26px;
  border: 1px solid rgba(255, 255, 255, 0.9);
  border-radius: var(--radius-xl);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, 0.97), rgba(228, 240, 255, 0.86)),
    radial-gradient(circle at 84% 16%, rgba(21, 94, 239, 0.18), transparent 40%);
  box-shadow: var(--shadow), inset 0 1px 0 rgba(255, 255, 255, 0.95);
}
.hero-card::before { display: none; }
.hero-card::after {
  position: absolute;
  right: -120px; bottom: -130px;
  width: 300px; height: 300px;
  border-radius: 50%;
  content: "";
  background: radial-gradient(circle, rgba(21, 94, 239, 0.15), transparent 66%);
  pointer-events: none;
}

.hero-subtitle {
  position: relative;
  z-index: 1;
  margin: 0 0 6px;
  font-size: var(--text-base);
  font-weight: var(--w-medium);
  color: #4b6a9b;
  letter-spacing: 0.02em;
}
.hero-handbook {
  font-size: calc(1em + 3px);
}
.hero-year {
  font-size: clamp(22px, 6vw, 30px);
  font-weight: var(--w-bold);
  letter-spacing: -0.03em;
}

h1 {
  position: relative;
  z-index: 1;
  margin-top: 0;
  font-size: var(--text-h1);
  font-weight: var(--w-black);
  line-height: 1.08;
  letter-spacing: -0.05em;
  background: linear-gradient(112deg, #030712 0%, #0f2d5c 48%, #155eef 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 6px 14px rgba(21, 94, 239, 0.10));
}

.hero-cta {
  display: grid;
  gap: 8px;
  margin-top: 18px;
}

/* 사용하지 않는 히어로 요소 */
.hero-description, .hero-meta,
.status-card, .status-mini-grid,
.live-dot, .eyebrow { display: none; }

/* ================================================================
   BUTTONS
   ================================================================ */
.weather-button,
.primary-button,
.ghost-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 50px;
  padding: 0 18px;
  border: 0;
  border-radius: var(--radius-md);
  font-size: var(--text-md);
  font-weight: var(--w-bold);
  transition: transform var(--transition), opacity var(--transition);
  -webkit-tap-highlight-color: transparent;
}
.weather-button:hover,
.primary-button:hover   { transform: translateY(-1px); }
.weather-button:active,
.primary-button:active,
.ghost-button:active    { opacity: 0.84; transform: translateY(0); }

.weather-button {
  gap: 8px;
  min-height: 38px;
  background: linear-gradient(135deg, rgba(7,17,31,0.78) 0%, rgba(15,45,92,0.75) 42%, rgba(21,94,239,0.75) 100%);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.14);
  box-shadow: 0 6px 16px rgba(21,94,239,0.14), inset 0 1px 0 rgba(255,255,255,0.18);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.primary-button {
  background: linear-gradient(135deg, #1d6bf5 0%, #4f46e5 100%);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.22);
  box-shadow: 0 10px 26px rgba(21,94,239,0.20), inset 0 1px 0 rgba(255,255,255,0.28);
}
.ghost-button {
  background: linear-gradient(135deg, rgba(255,255,255,0.88), rgba(228,240,255,0.78));
  border: 1px solid rgba(21,94,239,0.18);
  color: var(--navy);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.95), 0 2px 8px rgba(21,94,239,0.06);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

/* ================================================================
   PANELS (공통)
   ================================================================ */
main { display: grid; gap: 12px; margin-top: 12px; }

.danger-panel .section-heading h2,
.timeline-panel .section-heading h2,
.contact-panel .section-heading h2 {
  font-size: clamp(15px, 4.6vw, 19px);
}

.section-divider {
  text-align: left;
  font-size: clamp(20px, 5.4vw, 24px);
  font-weight: var(--w-xbold);
  padding: 10px 0 4px;
  letter-spacing: -0.02em;
  background: linear-gradient(112deg, #030712 0%, #0f2d5c 50%, #1a3a6e 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.collapsible-toggle { cursor: pointer; user-select: none; }
.collapsible-title-row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.expand-chip {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 0 10px;
  border-radius: 999px;
  background: linear-gradient(135deg, #2270f7 0%, #3b5bdb 100%);
  border: 1px solid rgba(255,255,255,0.24);
  color: #fff;
  font-size: var(--text-xs);
  font-weight: var(--w-bold);
  white-space: nowrap;
  flex-shrink: 0;
  box-shadow: 0 2px 8px rgba(21,94,239,0.28), inset 0 1px 0 rgba(255,255,255,0.28);
  transition: background 0.15s, box-shadow 0.15s;
}
.expand-chip::after { content: "펼치기  ▾"; }
.collapsible:not(.is-collapsed) .expand-chip {
  background: linear-gradient(135deg, #7c8fa6, #64748b);
  box-shadow: 0 2px 8px rgba(0,0,0,0.12), inset 0 1px 0 rgba(255,255,255,0.2);
}
.collapsible:not(.is-collapsed) .expand-chip::after { content: "접기  ▴"; }
.collapsible .collapsible-body { margin-top: 4px; }
.collapsible.is-collapsed .collapsible-body { display: none; }

.hero-card,
.basis-panel,
.stage-panel,
.worker-panel,
.content-panel,
.contact-panel {
  border: 1px solid rgba(255, 255, 255, 0.9);
  background: linear-gradient(180deg, rgba(255,255,255,0.97), rgba(244,249,255,0.93));
  box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,0.95);
}

.stage-panel,
.worker-panel,
.content-panel,
.contact-panel {
  padding: 16px;
  border-radius: var(--radius-xl);
}

.section-heading {
  display: grid;
  gap: 4px;
  margin-bottom: 14px;
}
.section-heading h2 {
  font-size: var(--text-h2);
  font-weight: var(--w-xbold);
  line-height: 1.22;
  letter-spacing: -0.04em;
  color: var(--ink);
}
.section-heading p {
  font-size: var(--text-sm);
  font-weight: var(--w-medium);
  color: var(--muted);
  line-height: 1.5;
}

/* ================================================================
   BASIS PANEL
   ================================================================ */
.basis-panel {
  padding: 16px;
  border-radius: var(--radius-xl);
}
.basis-grid { display: grid; gap: 8px; }

.basis-card {
  position: relative;
  overflow: hidden;
  padding: 12px 14px 12px 17px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: var(--radius-lg);
  background: #fff;
  box-shadow: var(--shadow-soft);
}
.basis-card::before {
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
  content: "";
  background: linear-gradient(180deg, #155eef, #38bdf8);
}
.basis-card.note  { background: linear-gradient(180deg, #fff, #eff6ff); }
.basis-card.alert::before { background: linear-gradient(180deg, var(--red), var(--orange)); }
.basis-card strong {
  display: block;
  font-size: var(--text-base);
  font-weight: var(--w-bold);
  color: var(--navy);
}
.basis-card p,
.basis-card ul {
  margin: 6px 0 0;
  font-size: var(--text-base);
  font-weight: var(--w-medium);
  color: var(--ink-soft);
  line-height: 1.55;
}
.basis-card ul {
  display: grid;
  gap: 4px;
  padding-left: 17px;
}
.basis-panel .basis-card strong { font-size: 17px; }
.basis-panel .basis-card p,
.basis-panel .basis-card ul { font-size: 17px; }
.report-panel .basis-card strong { font-size: 17px; }
.report-panel .basis-card p,
.report-panel .basis-card ul { font-size: 17px; }

/* ================================================================
   STAGE TABS
   ================================================================ */
.stage-tabs {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 5px;
  padding: 5px;
  border: 1px solid rgba(21, 94, 239, 0.12);
  border-radius: 18px;
  background: rgba(228, 240, 255, 0.70);
}
.stage-tab {
  min-height: 44px;
  border: 0;
  border-radius: 13px;
  background: transparent;
  font-size: var(--text-base);
  font-weight: var(--w-bold);
  color: var(--muted);
  transition: background var(--transition), color var(--transition),
              box-shadow var(--transition);
  -webkit-tap-highlight-color: transparent;
}
.stage-tab.is-active {
  color: #fff;
  background: linear-gradient(
    135deg,
    var(--stage-color, var(--blue)),
    color-mix(in srgb, var(--stage-color, var(--blue)) 72%, #8b5cf6)
  );
  border: 1px solid rgba(255,255,255,0.22);
  box-shadow: 0 6px 16px color-mix(in srgb, var(--stage-color, var(--blue)) 28%, transparent),
              inset 0 1px 0 rgba(255,255,255,0.28);
}

/* ================================================================
   STAGE DETAIL
   ================================================================ */
.stage-detail {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}
.stage-summary {
  padding: 14px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-top: 5px solid var(--stage-color, var(--blue));
  border-radius: var(--radius-lg);
  background: #fff;
  box-shadow: var(--shadow-soft);
}
.stage-summary.is-hidden { display: none; }

.stage-badge {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: var(--text-xs);
  font-weight: var(--w-bold);
  color: #fff;
  background: var(--stage-color, var(--blue));
}
.stage-summary h3 {
  margin-top: 10px;
  font-size: var(--text-xl);
  font-weight: var(--w-xbold);
  letter-spacing: -0.04em;
  color: var(--navy);
}
.stage-summary > p {
  margin-top: 8px;
  font-size: var(--text-base);
  font-weight: var(--w-medium);
  color: var(--muted);
  line-height: 1.55;
}

.weather-minor {
  display: block;
  font-size: calc(1em - 4px);
  font-weight: var(--w-medium);
  opacity: 0.68;
}

.stage-meta {
  display: grid;
  margin-top: 10px;
}
.stage-meta span {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 9px 0;
  border-top: 1px solid var(--line);
  font-size: var(--text-base);
  font-weight: var(--w-medium);
  color: var(--muted);
}
.stage-meta b {
  flex: 0 0 auto;
  min-width: 44px;
  font-weight: var(--w-bold);
  color: var(--navy);
}

/* ================================================================
   DUTY MATRIX
   ================================================================ */
.stage-duty-block {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: var(--radius-lg);
  background: rgba(246, 250, 255, 0.92);
  box-shadow: var(--shadow-soft);
}
.stage-duty-block > h3 {
  font-size: var(--text-base);
  font-weight: var(--w-bold);
  color: var(--navy);
}
.duty-list { display: grid; gap: 10px; }

.duty-card {
  position: relative;
  overflow: hidden;
  padding: 13px 13px 13px 17px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: var(--radius-lg);
  background: #fff;
  box-shadow: var(--shadow-soft);
}
.duty-card::before {
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  content: "";
  background: var(--blue);
}
.duty-card.stage-주의::before   { background: var(--green); }
.duty-card.stage-경계::before   { background: var(--orange); }
.duty-card.stage-심각::before   { background: var(--red); }
.duty-card.stage-상황종료::before { background: #64748b; }

.duty-card-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.duty-card-head span {
  padding: 4px 9px;
  border-radius: 999px;
  font-size: var(--text-xs);
  font-weight: var(--w-bold);
  color: #fff;
  background: var(--navy);
}
.duty-card.stage-주의  .duty-card-head span { background: var(--green); }
.duty-card.stage-경계  .duty-card-head span { background: var(--orange); }
.duty-card.stage-심각  .duty-card-head span { background: var(--red); }
.duty-card.stage-상황종료 .duty-card-head span { background: #64748b; }

.duty-card-head strong {
  font-size: var(--text-lg);
  font-weight: var(--w-bold);
  letter-spacing: -0.03em;
  color: var(--ink);
}

.duty-columns { display: grid; gap: 8px; }
.duty-columns section {
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: #f6f9ff;
}
.duty-columns h3,
.duty-columns h4 {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  margin: 0 0 8px;
  padding: 0 9px;
  border-radius: 999px;
  font-size: var(--text-xs);
  font-weight: var(--w-bold);
  background: var(--blue-soft);
  color: var(--navy);
}
.duty-columns ul {
  display: grid;
  gap: 5px;
  margin: 0;
  padding-left: 16px;
}
.duty-columns li {
  font-size: var(--text-base);
  font-weight: var(--w-medium);
  color: var(--ink-soft);
  line-height: 1.5;
}

/* danger-panel 내부 폰트 +3px */
.danger-panel .duty-card-head span   { font-size: 14px; }
.danger-panel .duty-card-head strong { font-size: 20px; }
.danger-panel .duty-columns h3,
.danger-panel .duty-columns h4       { font-size: 14px; }
.danger-panel .duty-columns li       { font-size: 17px; }

/* stage-panel 내부 폰트 +3px */
.stage-panel .stage-badge              { font-size: 14px; }
.stage-panel .stage-summary h3         { font-size: 23px; }
.stage-panel .stage-summary > p        { font-size: 17px; }
.stage-panel .stage-meta span          { font-size: 17px; }
.stage-panel .stage-duty-block > h3    { font-size: 17px; }
.stage-panel .duty-card-head span      { font-size: 14px; }
.stage-panel .duty-card-head strong    { font-size: 20px; }
.stage-panel .duty-columns h3,
.stage-panel .duty-columns h4          { font-size: 14px; }
.stage-panel .duty-columns li          { font-size: 17px; }

/* ================================================================
   WORKER PANEL
   ================================================================ */
.worker-heading {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 14px;
}
p.worker-date {
  width: 100%;
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.82);
  font-size: 20px;
  font-weight: var(--w-bold);
  color: var(--ink-soft);
  text-align: center;
}
.worker-title-row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.mini-action-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  padding: 0 14px;
  border: 1px solid rgba(255,255,255,0.24);
  border-radius: 999px;
  background: linear-gradient(135deg, #2270f7 0%, #3b5bdb 100%);
  font-size: var(--text-sm);
  font-weight: var(--w-bold);
  color: #fff;
  text-decoration: none;
  box-shadow: 0 4px 12px rgba(21,94,239,0.28), inset 0 1px 0 rgba(255,255,255,0.30);
  transition: opacity var(--transition), transform var(--transition);
  -webkit-tap-highlight-color: transparent;
}
.mini-action-button:hover  { opacity: 0.88; transform: translateY(-1px); }
.mini-action-button:active { opacity: 0.76; transform: translateY(0); }
.mini-action-button.sm { min-height: 26px; padding: 0 10px; font-size: var(--text-xs); }

.pdf-open-wrap {
  display: flex;
  justify-content: center;
  padding: 12px 0 4px;
}
.pdf-open-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 42px;
  padding: 0 28px;
  border: 1px solid rgba(255,255,255,0.24);
  border-radius: 999px;
  background: linear-gradient(135deg, #2270f7 0%, #3b5bdb 100%);
  font-size: var(--text-base);
  font-weight: var(--w-bold);
  color: #fff;
  box-shadow: 0 4px 14px rgba(21,94,239,0.28), inset 0 1px 0 rgba(255,255,255,0.30);
  transition: opacity var(--transition), transform var(--transition);
  -webkit-tap-highlight-color: transparent;
  cursor: pointer;
}
.pdf-open-button:hover  { opacity: 0.88; transform: translateY(-1px); }
.pdf-open-button:active { opacity: 0.76; transform: translateY(0); }

.swipe-hint  { display: none; }
.worker-grid { display: block; width: 100%; }

/* ================================================================
   ROSTER TABLE
   ================================================================ */
.roster-table {
  display: grid;
  grid-template-columns: auto 1fr 1fr;
  width: 100%;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: #fff;
  box-shadow: var(--shadow-soft);
}

.rt-h-role,
.rt-h-time {
  padding: 11px 12px;
  background: linear-gradient(135deg, #0b1220, #0f2d5c);
  font-size: 12px;
  font-weight: var(--w-bold);
  letter-spacing: 0.04em;
  line-height: 1.4;
  color: #c8dcff;
}
.rt-h-time { border-left: 1px solid rgba(255,255,255,0.10); }

.rt-sh {
  grid-column: 1 / -1;
  padding: 6px 12px;
  font-size: 17px;
  font-weight: var(--w-bold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.rt-sh.rt-s-watch   { background: #deeaff; color: #1148c2; }
.rt-sh.rt-s-caution { background: #d2f6e9; color: #0a7a54; }
.rt-sh.rt-s-alert   { background: #fde8d4; color: #b43606; }
.rt-sh.rt-s-serious { background: #fdd8df; color: #a51030; }

.rt-sh-toggle {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 6px;
  width: 100%;
  border: 0;
  font: inherit;
  font-size: 17px;
  text-align: left;
  transition: filter var(--transition);
  -webkit-tap-highlight-color: transparent;
}
.rt-sh-toggle:hover  { filter: brightness(0.93); }
.rt-sh-toggle:active { filter: brightness(0.87); }

.rt-toggle-chip {
  padding: 3px 9px;
  border-radius: 999px;
  font-size: var(--text-xs);
  font-weight: var(--w-bold);
  line-height: 1.6;
  white-space: nowrap;
}
.rt-sh.rt-s-alert   .rt-toggle-chip {
  background: linear-gradient(135deg, #d4520f, #b43606);
  border: 1px solid rgba(255,255,255,0.18);
  color: #fff;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.22);
}
.rt-sh.rt-s-serious .rt-toggle-chip {
  background: linear-gradient(135deg, #c01a3e, #a51030);
  border: 1px solid rgba(255,255,255,0.18);
  color: #fff;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.22);
}

.rt-group-wrap  { display: contents; }
.rt-collapsible { display: none; }
.rt-collapsible.is-open { display: contents; }

.rt-role {
  display: flex;
  align-items: center;
  padding: 10px 10px 10px 12px;
  border-bottom: 1px solid rgba(15, 23, 42, 0.055);
  border-left: 3px solid transparent;
  font-size: 17px;
  font-weight: var(--w-semi);
  color: var(--muted);
  white-space: nowrap;
  line-height: 1;
}
.rt-role.rt-s-watch   { border-left-color: #155eef; }
.rt-role.rt-s-caution { border-left-color: #0f9f6e; }
.rt-role.rt-s-alert   { border-left-color: var(--orange); }
.rt-role.rt-s-serious { border-left-color: var(--red); }

.rt-name {
  display: flex;
  align-items: center;
  padding: 10px 12px;
  border-bottom: 1px solid rgba(15, 23, 42, 0.055);
  border-left: 1px solid rgba(15, 23, 42, 0.06);
  font-size: 17px;
  font-weight: var(--w-bold);
  letter-spacing: -0.02em;
  color: var(--ink);
}
.rt-name.rt-empty {
  font-size: 17px;
  font-weight: var(--w-normal);
  color: #b8c5d0;
}

.roster-empty {
  padding: 24px 0;
  font-size: var(--text-base);
  font-weight: var(--w-medium);
  color: var(--muted);
  text-align: center;
}

/* ================================================================
   TIMELINE
   ================================================================ */
.timeline { display: grid; gap: 10px; }

.timeline-item {
  padding: 14px 13px 14px 17px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-left: 5px solid #155eef;
  border-radius: var(--radius-lg);
  background: #fff;
  box-shadow: var(--shadow-soft);
}
.timeline-item time {
  display: inline-flex;
  place-items: center;
  min-width: 64px;
  min-height: 28px;
  padding: 0 10px;
  border-radius: 999px;
  font-size: var(--text-sm);
  font-weight: var(--w-bold);
  color: var(--navy);
  background: var(--blue-soft);
}
.timeline-item h3 {
  margin-top: 10px;
  font-size: var(--text-lg);
  font-weight: var(--w-bold);
  letter-spacing: -0.03em;
  color: var(--ink);
}
.timeline-item ul {
  display: grid;
  gap: 6px;
  margin: 9px 0 0;
  padding-left: 16px;
  font-size: var(--text-base);
  font-weight: var(--w-medium);
  color: var(--muted);
  line-height: 1.5;
}

/* ================================================================
   REPORT TEMPLATE
   ================================================================ */
.report-card {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: var(--radius-lg);
  background: #fff;
  box-shadow: var(--shadow-soft);
}
.report-card pre {
  overflow: auto;
  margin: 0;
  max-height: 260px;
  padding: 14px;
  border-radius: var(--radius-md);
  background: linear-gradient(180deg, #0b1220, #111827);
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco,
               Consolas, "Liberation Mono", monospace;
  font-size: 12.5px;
  font-weight: var(--w-medium);
  line-height: 1.65;
  color: #ccdeff;
  white-space: pre-wrap;
}
.copy-button {
  justify-self: start;
  min-height: 46px;
  padding: 0 20px;
  border: 0;
  border-radius: 999px;
  font-size: var(--text-base);
  font-weight: var(--w-bold);
  color: #fff;
  background: linear-gradient(135deg, #155eef, var(--navy));
  box-shadow: 0 8px 20px rgba(21, 94, 239, 0.18);
  transition: transform var(--transition), opacity var(--transition);
  -webkit-tap-highlight-color: transparent;
}
.copy-button:hover  { transform: translateY(-1px); }
.copy-button:active { opacity: 0.84; transform: translateY(0); }

.copy-feedback {
  min-height: 18px;
  font-size: var(--text-sm);
  font-weight: var(--w-semi);
  color: var(--green);
}

/* ================================================================
   CONTACTS
   ================================================================ */
.contact-panel {
  background: linear-gradient(135deg,
    rgba(255,255,255,0.97), rgba(228,240,255,0.84));
}
.contact-grid { display: grid; gap: 10px; }

.contact-card {
  padding: 13px 13px 13px 17px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-left: 5px solid var(--navy);
  border-radius: var(--radius-lg);
  background: #fff;
  box-shadow: var(--shadow-soft);
}
.contact-card > span {
  display: block;
  font-size: var(--text-xs);
  font-weight: var(--w-bold);
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--blue);
}
.contact-card strong {
  display: block;
  margin-top: 6px;
  font-size: var(--text-lg);
  font-weight: var(--w-bold);
  letter-spacing: -0.03em;
  color: var(--ink);
}
.contact-card p {
  margin-top: 5px;
  font-size: var(--text-base);
  font-weight: var(--w-medium);
  color: var(--muted);
  line-height: 1.5;
}
.contact-card a {
  display: inline-flex;
  align-items: center;
  margin-top: 10px;
  min-height: 42px;
  padding: 0 15px;
  border-radius: 999px;
  font-size: var(--text-base);
  font-weight: var(--w-bold);
  color: #fff;
  background: linear-gradient(135deg, #0b1220, var(--navy));
  transition: opacity var(--transition);
  -webkit-tap-highlight-color: transparent;
}
.contact-card a:hover  { opacity: 0.84; }
.contact-card a:active { opacity: 0.72; }

/* ================================================================
   FOOTER
   ================================================================ */
.site-footer {
  padding: 14px 0 0;
  font-size: var(--text-sm);
  font-weight: var(--w-medium);
  color: var(--muted-2);
  text-align: center;
}

/* ================================================================
   BOTTOM NAV
   ================================================================ */
.bottom-nav {
  position: fixed;
  right: 50%;
  bottom: 12px;
  z-index: 20;
  display: flex;
  transform: translateX(50%);
  width: min(380px, calc(100% - 24px));
  padding: 5px;
  border: 1px solid rgba(255,255,255,0.95);
  border-radius: 999px;
  background: rgba(255,255,255,0.92);
  box-shadow: 0 10px 32px rgba(31,65,114,0.14);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}
.bottom-nav a {
  flex: 1;
  min-height: 44px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  font-size: var(--text-base);
  font-weight: var(--w-bold);
  color: var(--muted);
  transition: background var(--transition), color var(--transition);
  -webkit-tap-highlight-color: transparent;
}
.bottom-nav a:hover  { background: var(--blue-soft); color: var(--blue); }
.bottom-nav a:active { background: #d0e4ff; }

/* ================================================================
   RESPONSIVE
   ================================================================ */
@media (max-width: 400px) {
  .stage-tabs { gap: 4px; padding: 4px; }
  .stage-tab  { min-height: 40px; font-size: 13px; }
  .rt-name    { font-size: 17px; }
}

@media (min-width: 520px) {
  .checklist { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
