:root {
  --bg: #f6f0e8;
  --paper: #fffaf2;
  --ink: #1f1b16;
  --muted: #6f6458;
  --line: #e3d5c6;
  --brand: #b33f2f;
  --brand-dark: #7f241c;
  --accent: #1f6650;
  --accent-2: #315a8b;
  --warning: #b46b00;
  --danger: #b3261e;
  --ok: #24784f;
  --shadow: 0 18px 45px rgba(58, 41, 27, 0.12);
  --radius-lg: 24px;
  --radius-md: 16px;
  --radius-sm: 10px;
  --focus: 0 0 0 4px rgba(179, 63, 47, 0.18);
}

/* v140: 마스타관리자 후원자 관리 및 안전한 전체 초기화 */
.donor-management-card,
.donor-reset-card {
  display: grid;
  gap: 16px;
}

.donor-management-table-wrap table {
  min-width: 940px;
}

.donor-reset-card {
  border-color: rgba(179, 38, 30, .28);
  background: linear-gradient(135deg, rgba(179, 38, 30, .055), rgba(255, 250, 242, .96));
}

.donor-reset-warning {
  border: 1px solid rgba(179, 38, 30, .24);
  border-radius: 14px;
  padding: 14px 16px;
  background: rgba(255, 255, 255, .76);
  color: var(--ink);
}

.donor-reset-warning strong {
  display: inline-block;
  margin-bottom: 5px;
  color: var(--danger);
}

.donor-reset-warning p {
  margin: 0;
  color: var(--muted);
  line-height: 1.65;
}

.btn:disabled {
  cursor: not-allowed;
  opacity: .48;
  transform: none !important;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  min-height: 100vh;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans KR", "Apple SD Gothic Neo", sans-serif;
  color: var(--ink);
  background:
    radial-gradient(circle at top left, rgba(179, 63, 47, 0.12), transparent 30rem),
    radial-gradient(circle at bottom right, rgba(31, 102, 80, 0.12), transparent 28rem),
    var(--bg);
}

a { color: inherit; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button:disabled { cursor: not-allowed; opacity: 0.58; }

.app-shell {
  width: min(1180px, calc(100% - 32px));
  margin: 0 auto;
  padding: 22px 0 60px;
}

.header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 0 20px;
}

.logo {
  display: flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
}
.logo-mark {
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  border-radius: 15px;
  background: var(--ink);
  color: var(--paper);
  font-weight: 900;
  letter-spacing: -0.05em;
  box-shadow: 0 10px 25px rgba(0,0,0,.12);
  overflow: hidden;
}
.logo-mark img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}
.logo-title { font-weight: 900; letter-spacing: -0.04em; line-height: 1.1; }
.logo-sub { color: var(--muted); font-size: 13px; margin-top: 3px; }

.nav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}
.nav a, .nav button, .chip-link {
  border: 1px solid var(--line);
  background: rgba(255,250,242,.78);
  color: var(--ink);
  border-radius: 999px;
  padding: 10px 13px;
  text-decoration: none;
  font-weight: 750;
  box-shadow: 0 6px 14px rgba(58, 41, 27, 0.06);
}
.nav a:hover, .nav button:hover, .chip-link:hover { transform: translateY(-1px); }
.nav .primary-link { background: var(--ink); color: var(--paper); border-color: var(--ink); }

.hero {
  position: relative;
  overflow: hidden;
  padding: clamp(28px, 5vw, 62px);
  border-radius: 34px;
  background:
    linear-gradient(135deg, rgba(31,27,22,0.92), rgba(83,45,37,0.89)),
    linear-gradient(120deg, var(--brand), var(--accent));
  color: var(--paper);
  box-shadow: var(--shadow);
}
.hero::after {
  content: "";
  position: absolute;
  right: -10%; top: -20%;
  width: 420px; height: 420px;
  border-radius: 50%;
  border: 45px solid rgba(255,255,255,.08);
}
.hero-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
  align-items: center;
}
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-radius: 999px;
  background: rgba(255,255,255,.12);
  color: rgba(255,255,255,.9);
  font-size: 14px;
  font-weight: 800;
}
.hero h1 {
  margin: 18px 0 14px;
  font-size: clamp(34px, 6vw, 68px);
  line-height: .98;
  letter-spacing: -0.07em;
}
.hero p {
  max-width: 680px;
  color: rgba(255,250,242,.82);
  font-size: clamp(16px, 2vw, 19px);
  line-height: 1.7;
  margin: 0 0 28px;
}
.cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding: 12px 18px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-weight: 850;
  text-decoration: none;
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.btn:hover { transform: translateY(-1px); box-shadow: 0 10px 18px rgba(0,0,0,.12); }
.btn:focus-visible, input:focus, select:focus, textarea:focus { outline: none; box-shadow: var(--focus); }
.btn-primary { background: var(--brand); color: #fff; }
.btn-dark { background: var(--ink); color: var(--paper); }
.btn-light { background: var(--paper); color: var(--ink); border-color: rgba(255,255,255,.5); }
.btn-ghost { background: transparent; border-color: rgba(255,255,255,.35); color: var(--paper); }
.btn-outline { background: var(--paper); color: var(--ink); border-color: var(--line); }
.btn-danger { background: var(--danger); color: #fff; }
.btn-small { min-height: 34px; padding: 7px 11px; font-size: 13px; }

.hero-card {
  background: rgba(255,250,242,.1);
  border: 1px solid rgba(255,255,255,.15);
  border-radius: 28px;
  padding: 20px;
  backdrop-filter: blur(12px);
}
.hero-stat {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 16px;
  align-items: center;
  padding: 14px 0;
  border-bottom: 1px solid rgba(255,255,255,.12);
}
.hero-stat:last-child { border-bottom: 0; }
.hero-stat strong { display: block; font-size: 30px; letter-spacing: -0.04em; }
.hero-stat span { color: rgba(255,250,242,.72); line-height: 1.45; }
.icon-badge {
  width: 60px; height: 60px;
  display: grid; place-items: center;
  border-radius: 20px;
  background: rgba(255,255,255,.13);
  font-size: 28px;
}

.section { margin-top: 30px; }
.section-title {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-end;
  margin: 0 0 14px;
}
.section-title h2, .section-title h3 { margin: 0; letter-spacing: -0.05em; }
.section-title p { margin: 5px 0 0; color: var(--muted); line-height: 1.5; }

.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.card {
  background: rgba(255,250,242,.9);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  padding: 20px;
}
.card.compact { padding: 14px; border-radius: var(--radius-md); box-shadow: 0 10px 25px rgba(58,41,27,.08); }
.card h3 { margin: 0 0 10px; letter-spacing: -0.04em; }
.card p { color: var(--muted); line-height: 1.65; margin: 0; }


.sponsor-callout, .support-strip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 22px;
  border: 1px solid rgba(179,63,47,.22);
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, rgba(179,63,47,.1), rgba(255,250,242,.92));
  box-shadow: 0 14px 32px rgba(58,41,27,.09);
}
.sponsor-callout h2 { margin: 10px 0 8px; letter-spacing: -0.05em; }
.sponsor-callout p, .support-strip p { color: #51463c; line-height: 1.65; margin: 0; }
.eyebrow.dark { background: rgba(31,27,22,.08); color: var(--brand-dark); }
.support-strip { margin: 14px 0 20px; background: rgba(255,250,242,.86); }
.support-strip p { font-weight: 700; }

.filters {
  display: grid;
  grid-template-columns: minmax(220px, 1.4fr) repeat(4, minmax(140px, .8fr));
  gap: 10px;
  margin: 18px 0;
}
.input, .select, .textarea {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fffdf8;
  color: var(--ink);
  padding: 12px 13px;
}
.textarea { min-height: 96px; resize: vertical; }
.label {
  display: block;
  font-weight: 850;
  font-size: 13px;
  margin: 0 0 7px;
  color: #43392f;
}
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }
.form-grid .full { grid-column: 1 / -1; }
.inline-copy-field { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; }
.inline-copy-field .input { min-width: 0; }
@media (max-width: 640px) {
  .inline-copy-field { grid-template-columns: 1fr; }
}
.form-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 16px; }
.help { color: var(--muted); font-size: 13px; line-height: 1.45; }
.required { color: var(--brand); }

.screening-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 16px; }
.screening-card {
  display: flex;
  flex-direction: column;
  min-height: 300px;
  background: #fffaf2;
  border: 1px solid var(--line);
  border-radius: 26px;
  overflow: hidden;
  box-shadow: 0 14px 35px rgba(58,41,27,.1);
}
.screening-top {
  padding: 18px 18px 14px;
  background: linear-gradient(135deg, rgba(179,63,47,.1), rgba(31,102,80,.1));
  border-bottom: 1px solid var(--line);
}
.badges { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 12px; }
.badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 9px;
  border-radius: 999px;
  background: rgba(31,27,22,.06);
  color: #4e443a;
  font-size: 12px;
  font-weight: 850;
}
.badge.ok { background: rgba(36,120,79,.12); color: var(--ok); }
.badge.warn { background: rgba(180,107,0,.13); color: #8a5100; }
.badge.danger { background: rgba(179,38,30,.12); color: var(--danger); }
.badge.blue { background: rgba(49,90,139,.12); color: var(--accent-2); }
.screening-title { margin: 0; font-size: 22px; letter-spacing: -0.05em; line-height: 1.15; }
.screening-meta { margin: 10px 0 0; color: var(--muted); line-height: 1.55; font-size: 14px; }
.screening-body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 14px; flex: 1; }
.progress-wrap { display: grid; gap: 7px; }
.progress-label { display: flex; justify-content: space-between; gap: 8px; font-size: 13px; color: var(--muted); font-weight: 800; }
.progress {
  width: 100%;
  height: 11px;
  border-radius: 999px;
  background: #eaded2;
  overflow: hidden;
}
.progress > span { display: block; height: 100%; width: 0%; border-radius: inherit; background: var(--accent); transition: width .25s ease; }
.progress > span.warn { background: var(--warning); }
.progress > span.danger { background: var(--danger); }
.info-list { display: grid; gap: 8px; font-size: 14px; color: var(--muted); }
.info-row { display: flex; justify-content: space-between; gap: 12px; border-bottom: 1px dashed rgba(111,100,88,.22); padding-bottom: 8px; }
.info-row strong { color: var(--ink); text-align: right; }
.screening-card .btn { margin-top: auto; }

.admin-layout { display: grid; grid-template-columns: 250px 1fr; gap: 18px; align-items: start; }
.admin-sidebar { position: sticky; top: 12px; display: grid; gap: 9px; }
.admin-tab {
  text-align: left;
  border: 1px solid var(--line);
  background: rgba(255,250,242,.88);
  padding: 12px 14px;
  border-radius: 14px;
  font-weight: 850;
  color: var(--ink);
}
.admin-tab.active { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.admin-panel { display: grid; gap: 16px; }
.metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; }
.metric-card {
  background: #fffaf2;
  border: 1px solid var(--line);
  border-radius: 20px;
  padding: 16px;
  box-shadow: 0 12px 28px rgba(58,41,27,.08);
}
.metric-label { color: var(--muted); font-size: 13px; font-weight: 850; }
.metric-value { margin-top: 7px; font-size: 34px; font-weight: 950; letter-spacing: -0.05em; }
.metric-note { color: var(--muted); font-size: 12px; margin-top: 5px; }

.table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 18px; background: #fffaf2; }
table { width: 100%; border-collapse: collapse; min-width: 850px; }
.reservation-table { min-width: 1120px; }
.print-column { display: none; }
.print-checkbox {
  display: inline-block;
  width: 18px;
  height: 18px;
  border: 2px solid #1f1b16;
  border-radius: 3px;
}
.print-blank {
  display: inline-block;
  min-width: 72px;
  height: 18px;
  border-bottom: 1px solid #1f1b16;
}
th, td { padding: 12px 13px; text-align: left; border-bottom: 1px solid var(--line); vertical-align: top; }
th { background: #f2e7dc; font-size: 13px; color: #453a31; white-space: nowrap; }
td { font-size: 14px; line-height: 1.45; }
tr:last-child td { border-bottom: 0; }
.row-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.table-note { max-width: 280px; color: var(--muted); }

.chart-list { display: grid; gap: 12px; }
.chart-row { display: grid; grid-template-columns: 190px 1fr 80px; gap: 12px; align-items: center; }
.chart-name { font-weight: 850; line-height: 1.35; }
.chart-track { height: 14px; background: #eaded2; border-radius: 999px; overflow: hidden; }
.chart-track span { display: block; height: 100%; background: var(--accent-2); border-radius: inherit; }
.attended-track { height: 10px; margin-top: 5px; background: rgba(179,63,47,.15); }
.attended-track span { background: var(--brand); }
.chart-value { text-align: right; color: var(--muted); font-size: 13px; font-weight: 850; }

.roster-list { display: grid; gap: 10px; }
.roster-item { border: 1px solid var(--line); border-radius: 16px; padding: 12px; background: #fffdf8; }
.roster-item strong { display: block; margin-bottom: 4px; }
.roster-item span { color: var(--muted); font-size: 13px; }

.modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(31,27,22,.5);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
  z-index: 40;
}
.modal-backdrop.open { display: flex; }
.modal {
  width: min(720px, 100%);
  max-height: 90vh;
  overflow: auto;
  background: var(--paper);
  border-radius: 26px;
  box-shadow: 0 28px 70px rgba(0,0,0,.28);
  border: 1px solid var(--line);
}
.modal.wide-modal { width: min(1080px, 100%); }
.support-complete {
  display: grid;
  grid-template-columns: 64px 1fr;
  gap: 14px;
  align-items: center;
  margin-bottom: 16px;
}
.support-complete h3 { margin: 0 0 4px; letter-spacing: -0.04em; }
.donation-box {
  padding: 16px;
  border-radius: 18px;
  background: rgba(179,63,47,.09);
  border: 1px solid rgba(179,63,47,.18);
}
.donation-box h3 { margin: 0 0 8px; letter-spacing: -0.04em; }
.donation-box p { margin: 0; color: #51463c; line-height: 1.65; }

.reservation-number-box {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 18px;
  margin: 14px 0 16px;
  border-radius: 18px;
  background: #fffdf8;
  border: 1px dashed var(--brand);
}
.reservation-number-box span {
  color: var(--muted);
  font-weight: 850;
}
.reservation-number-box strong {
  font-size: clamp(22px, 4vw, 34px);
  letter-spacing: -0.04em;
}
.reservation-result-modal .donation-box { margin-top: 0; }
.result-actions { justify-content: flex-end; margin-top: 18px; }
.result-actions .btn { min-width: 118px; }
.modal-header { display: flex; justify-content: space-between; gap: 12px; padding: 18px 20px; border-bottom: 1px solid var(--line); }
.modal-header h3 { margin: 0; letter-spacing: -0.04em; }
.modal-body { padding: 20px; }
.close-btn { width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line); background: #fffdf8; font-weight: 900; }

.empty {
  padding: 24px;
  text-align: center;
  color: var(--muted);
  border: 1px dashed var(--line);
  border-radius: 18px;
  background: rgba(255,250,242,.72);
}
.toast {
  position: fixed;
  right: 18px;
  bottom: 18px;
  max-width: min(420px, calc(100% - 36px));
  z-index: 80;
  display: none;
  padding: 13px 15px;
  border-radius: 16px;
  background: var(--ink);
  color: var(--paper);
  box-shadow: 0 18px 45px rgba(0,0,0,.22);
  line-height: 1.45;
  font-weight: 750;
}
.toast.show { display: block; animation: pop .18s ease-out; }
@keyframes pop { from { transform: translateY(8px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }

.admin-login {
  width: min(500px, 100%);
  margin: 50px auto;
}
.login-card {
  padding: 26px;
  border-radius: 28px;
  background: rgba(255,250,242,.94);
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
}
.login-card h1 { margin: 0 0 10px; letter-spacing: -0.06em; }
.login-card p { margin: 0 0 20px; color: var(--muted); line-height: 1.6; }

.print-only { display: none; }

@media (max-width: 980px) {
  .hero-grid, .grid-3, .grid-2, .screening-grid, .admin-layout, .metric-grid { grid-template-columns: 1fr; }
  .filters { grid-template-columns: 1fr 1fr; }
  .admin-sidebar { position: static; grid-template-columns: repeat(2, 1fr); }
  .chart-row { grid-template-columns: 1fr; gap: 6px; }
  .chart-value { text-align: left; }
}

@media (max-width: 640px) {
  .app-shell { width: min(100% - 22px, 1180px); padding-top: 12px; }
  .header { align-items: flex-start; flex-direction: column; }
  .nav { justify-content: flex-start; }
  .hero { border-radius: 24px; padding: 26px; }
  .filters, .form-grid { grid-template-columns: 1fr; }
  .section-title { align-items: flex-start; flex-direction: column; }
  .cta-row .btn { width: 100%; }
  .admin-sidebar { grid-template-columns: 1fr; }
  .metric-value { font-size: 28px; }
  .support-strip, .sponsor-callout { align-items: stretch; flex-direction: column; }
  .support-strip .btn, .sponsor-callout .btn { width: 100%; }
}

/* v177 관객 본인 예약 확인·취소 */
.reservation-manage-page { padding: 30px 0 54px; }
.reservation-manage-shell {
  width: min(100% - 28px, 820px);
  margin: 0 auto;
  padding: clamp(22px, 4vw, 38px);
  border: 1px solid #cfc8ef;
  border-radius: 22px;
  background: linear-gradient(145deg, rgba(255,255,255,.98), rgba(239,236,255,.92));
  box-shadow: 0 18px 45px rgba(44,40,107,.12);
}
.reservation-manage-title { margin-bottom: 22px; }
.reservation-manage-title h1 { margin: 4px 0 8px; font-size: clamp(30px, 5vw, 46px); word-break: keep-all; }
.reservation-manage-title p { margin: 0; color: #5b5680; font-size: 17px; line-height: 1.6; word-break: keep-all; }
.reservation-manage-form { display: grid; gap: 16px; max-width: 560px; }
.reservation-manage-form .field span { font-size: 18px; font-weight: 800; }
.reservation-manage-phone, .reservation-manage-code { min-height: 58px; font-size: 20px; }
.reservation-manage-code { max-width: 260px; font-size: 28px; font-weight: 900; letter-spacing: .18em; text-align: center; }
.reservation-manage-primary { min-height: 58px; padding-inline: 28px; font-size: 19px; }
.reservation-manage-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.reservation-manage-sent { margin: 0; font-size: 18px; line-height: 1.55; }
.reservation-manage-message { margin: 0 0 18px; padding: 13px 16px; border-radius: 10px; background: #e9e5ff; color: #302b72; font-weight: 800; line-height: 1.45; }
.reservation-manage-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 16px; }
.reservation-manage-toolbar p { margin: 0; font-weight: 700; color: #4e496f; }
.reservation-manage-list { display: grid; gap: 12px; }
.reservation-manage-card { padding: 18px; border: 1px solid #ccc5e9; border-radius: 14px; background: #fff; }
.reservation-manage-card.is-canceled { opacity: .72; background: #f2f0f7; }
.reservation-manage-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.reservation-manage-number { margin-left: 7px; color: #625d7b; font-size: 14px; font-weight: 700; }
.reservation-manage-card h3 { margin: 12px 0 10px; font-size: 24px; line-height: 1.25; }
.reservation-manage-card dl { display: grid; gap: 5px; margin: 0 0 14px; }
.reservation-manage-card dl div { display: grid; grid-template-columns: 48px 1fr; gap: 8px; }
.reservation-manage-card dt { color: #716b89; font-weight: 800; }
.reservation-manage-card dd { margin: 0; font-weight: 700; }
.reservation-cancel-button { min-height: 50px; width: 100%; font-size: 17px; }
.reservation-canceled-note { margin: 10px 0 0; color: #756f87; line-height: 1.5; }
.reservation-seat-editor {
  margin: 14px 0 12px;
  padding: 14px;
  border-radius: 16px;
  background: linear-gradient(145deg, #f4f2ff, #eef3ff);
  box-shadow: inset 0 0 0 1px rgba(95,85,220,.12);
}
.reservation-seat-editor-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
  color: #292466;
}
.reservation-seat-editor-head strong { font-size: 17px; font-weight: 1000; }
.reservation-seat-editor-head span { color: #5b5680; font-size: 14px; font-weight: 900; }
.reservation-seat-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
  gap: 9px;
}
.reservation-seat-option {
  min-height: 48px;
  border: 1px solid #cfc8ee;
  border-radius: 14px;
  background: #fff;
  color: #292466;
  font-size: 17px;
  font-weight: 1000;
  cursor: pointer;
}
.reservation-seat-option:hover:not(:disabled) {
  transform: translateY(-1px);
  box-shadow: 0 8px 18px rgba(44,40,107,.14);
}
.reservation-seat-option.is-active {
  background: #2c286b;
  color: #fff;
  border-color: #2c286b;
}
.reservation-seat-option:disabled { cursor: default; opacity: .75; }
.reservation-manage-help { margin-top: 22px; padding: 17px 18px; border-radius: 12px; background: #f6f4ff; color: #514b76; }
.reservation-manage-help strong { color: #292466; font-size: 18px; }
.reservation-manage-help p { margin: 7px 0 0; line-height: 1.6; word-break: keep-all; }

/* v221 현장 QR 참석 체크 */
.checkin-page { padding: 28px 0 56px; }
.checkin-shell {
  width: min(100% - 24px, 760px);
  margin: 0 auto;
  padding: clamp(22px, 4vw, 36px);
  border-radius: 24px;
  background: rgba(255,255,255,.9);
  box-shadow: 0 18px 44px rgba(37,33,88,.13);
}
.checkin-title h1 { margin: 4px 0 8px; font-size: clamp(32px, 6vw, 54px); letter-spacing: -.04em; word-break: keep-all; }
.checkin-title p { margin: 0; color: #5b5680; font-size: clamp(17px, 2.8vw, 22px); line-height: 1.55; word-break: keep-all; }
.checkin-form { display: grid; gap: 18px; margin-top: 18px; }
.checkin-form .field span { font-size: 20px; font-weight: 900; }
.checkin-last4-input {
  min-height: 76px;
  border-radius: 20px;
  font-size: 38px;
  font-weight: 1000;
  letter-spacing: .22em;
  text-align: center;
}
.checkin-primary {
  min-height: 86px;
  border-radius: 22px;
  font-size: 29px;
  font-weight: 1000;
  letter-spacing: -.02em;
  background: linear-gradient(135deg, #252160 0%, #4f46c8 100%);
  color: #fff;
  box-shadow: 0 18px 34px rgba(44,40,107,.28), inset 0 1px 0 rgba(255,255,255,.22);
}
.checkin-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 22px 42px rgba(44,40,107,.34), inset 0 1px 0 rgba(255,255,255,.28);
}
.checkin-empty {
  display: grid;
  gap: 12px;
  padding: 22px;
  border-radius: 20px;
  background: #f7f6ff;
  color: #292466;
}
.checkin-empty strong { font-size: 26px; }
.checkin-empty p { margin: 0; color: #625d7b; font-size: 18px; line-height: 1.55; }
.checkin-result-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}
.checkin-result-head p { margin: 0; font-size: 18px; font-weight: 800; color: #4e496f; }
.checkin-list { display: grid; gap: 12px; }
.checkin-list-item {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 6px 12px;
  width: 100%;
  padding: 18px;
  border: 1px solid #d7d1ef;
  border-radius: 18px;
  background: #fff;
  color: var(--ink);
  text-align: left;
  box-shadow: 0 10px 24px rgba(37,33,88,.08);
}
.checkin-list-name { grid-row: span 2; min-width: 74px; font-size: 24px; font-weight: 1000; color: #292466; }
.checkin-list-movie { font-size: 22px; font-weight: 1000; }
.checkin-list-meta { color: #625d7b; font-size: 16px; font-weight: 700; }
.checkin-card {
  padding: 22px;
  border-radius: 22px;
  background: linear-gradient(145deg, #ffffff, #f5f7ff);
  box-shadow: 0 16px 36px rgba(37,33,88,.13);
}
.checkin-card.is-attended { background: #f4f8f2; }
.checkin-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.checkin-card h2 { margin: 18px 0 4px; font-size: clamp(34px, 8vw, 58px); color: #292466; letter-spacing: -.04em; }
.checkin-name-line {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 16px;
  line-height: 1.05;
}
.checkin-name-reservation-number {
  color: #5f55dc;
  font: inherit;
  letter-spacing: 0;
}
.checkin-card h3 { margin: 0 0 16px; font-size: clamp(24px, 5.5vw, 36px); line-height: 1.25; }
.checkin-card dl { display: grid; gap: 8px; margin: 0 0 18px; }
.checkin-card dl div { display: grid; grid-template-columns: 58px 1fr; gap: 10px; }
.checkin-card dt { font-weight: 900; color: #716b89; }
.checkin-card dd { margin: 0; font-weight: 900; color: #292466; }
.checkin-attendance-box {
  padding: 22px;
  border-radius: 22px;
  background: linear-gradient(145deg, #efedf9 0%, #e2e8ff 100%);
  box-shadow: inset 0 0 0 1px rgba(95,85,220,.12);
}
.checkin-attendance-box p { margin: 0 0 14px; font-size: 22px; font-weight: 1000; color: #292466; }
.checkin-attendance-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; }
.checkin-attend-btn {
  min-height: 88px;
  border-radius: 22px;
  font-size: 30px;
  font-weight: 1000;
  letter-spacing: -.02em;
  background: linear-gradient(135deg, #252160 0%, #5f55dc 100%);
  color: #fff;
  box-shadow: 0 14px 28px rgba(44,40,107,.24);
}
.checkin-attend-btn:hover {
  transform: translateY(-2px) scale(1.01);
  box-shadow: 0 18px 34px rgba(44,40,107,.3);
}
.checkin-person-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-bottom: 16px; }
.checkin-person-option,
.checkin-submit-option {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 82px;
  padding: 14px;
  border: 2px solid #cfc8ef;
  border-radius: 20px;
  background: #fff;
  color: #292466;
  font-size: 26px;
  font-weight: 1000;
  text-align: center;
  box-shadow: 0 10px 22px rgba(37,33,88,.08);
}
.checkin-person-option {
  border-color: #cfc8ef;
  background: #fff;
  color: #292466;
}
.checkin-submit-option {
  border-color: #24784f;
  background: linear-gradient(135deg, #24784f 0%, #3f986b 100%);
  color: #fff;
  cursor: pointer;
  box-shadow: 0 14px 28px rgba(36,120,79,.22);
}
.checkin-person-option input { position: absolute; opacity: 0; pointer-events: none; }
.checkin-person-option span { position: relative; z-index: 1; }
.checkin-person-option:has(input:checked), .checkin-person-option.is-selected {
  border-color: #252160;
  background: #292466;
  color: #fff;
  box-shadow: 0 16px 30px rgba(37,33,88,.22);
}
.checkin-submit-option:hover {
  transform: translateY(-2px);
  box-shadow: 0 18px 34px rgba(36,120,79,.28);
}
.checkin-person-option:has(input:disabled) { opacity: .95; }
.checkin-complete-card { background: #f4f8f2; }
.checkin-complete-reservation-number {
  margin: 8px 0 14px;
  padding: 18px 16px;
  border-radius: 20px;
  background: #292466;
  color: #fff;
  font-size: clamp(46px, 12vw, 84px);
  font-weight: 1000;
  line-height: 1;
  text-align: center;
  letter-spacing: 0;
  box-shadow: 0 18px 34px rgba(37,33,88,.22);
}
.checkin-save-notice {
  margin: 18px 0;
  padding: 18px;
  border-radius: 18px;
  background: #e6f1de;
  color: #24784f;
  font-size: 22px;
  font-weight: 1000;
  line-height: 1.45;
  word-break: keep-all;
}
.checkin-result-actions { display: grid; gap: 10px; }
.checkin-save-image-button {
  min-height: 140px;
  border-radius: 30px;
  font-size: 44px;
  font-weight: 1000;
  letter-spacing: -.02em;
  background: linear-gradient(135deg, #252160 0%, #5f55dc 100%);
  color: #fff;
  box-shadow: 0 24px 48px rgba(44,40,107,.32);
}
.checkin-save-image-button:hover {
  transform: translateY(-2px);
  box-shadow: 0 24px 48px rgba(44,40,107,.34);
}
.checkin-done { margin: 16px 0 0; padding: 16px; border-radius: 16px; background: #e6f1de; color: #385a25; font-size: 18px; font-weight: 900; }
.checkin-back-btn, .checkin-reset-row .btn { margin-top: 14px; }
.checkin-reset-row { display: flex; justify-content: center; }
.checkin-qr-modal { width: min(96vw, 980px); }
.checkin-qr-view {
  display: grid;
  grid-template-columns: minmax(260px, 420px) 1fr;
  gap: 22px;
  align-items: center;
}
.checkin-qr-preview {
  padding: 14px;
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 12px 32px rgba(37,33,88,.14);
}
.checkin-qr-preview img { display: block; width: 100%; height: auto; border-radius: 10px; }
.checkin-qr-info h4 { margin: 0 0 10px; font-size: 28px; color: #292466; letter-spacing: -.04em; }
.checkin-qr-info p { margin: 0 0 16px; color: #5b5680; line-height: 1.6; word-break: keep-all; }
.checkin-qr-info .input { font-size: 15px; }
.checkin-qr-actions { align-items: stretch; gap: 9px; margin-top: 12px; }
.checkin-qr-actions .btn { min-height: 48px; }

@media (max-width: 640px) {
  .reservation-manage-page { padding-top: 14px; }
  .reservation-manage-shell { width: min(100% - 18px, 820px); padding: 20px 15px; border-radius: 16px; }
  .reservation-manage-toolbar { align-items: stretch; flex-direction: column; }
  .reservation-manage-toolbar .btn { width: 100%; }
  .reservation-manage-actions .btn { width: 100%; min-height: 52px; }
  .reservation-manage-code { max-width: none; }
  .reservation-seat-options { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .reservation-seat-option { min-height: 56px; font-size: 19px; }
  .checkin-shell { width: min(100% - 16px, 760px); padding: 18px 14px; border-radius: 18px; }
  .checkin-result-head { align-items: stretch; flex-direction: column; }
  .checkin-result-head .btn { width: 100%; }
  .checkin-list-item { grid-template-columns: 1fr auto; padding: 16px; }
  .checkin-list-name { grid-row: auto; min-width: 0; }
  .checkin-list-movie, .checkin-list-meta { grid-column: 1 / -1; }
  .checkin-card { padding: 18px 14px; }
  .checkin-card-head { align-items: flex-start; flex-direction: column; }
  .checkin-attendance-buttons { grid-template-columns: 1fr; }
  .checkin-primary { min-height: 90px; font-size: 31px; }
  .checkin-attendance-box { padding: 20px 16px; }
  .checkin-attendance-box p { font-size: 23px; }
  .checkin-attend-btn { min-height: 94px; font-size: 31px; }
  .checkin-person-grid { grid-template-columns: 1fr; }
  .checkin-person-option, .checkin-submit-option { min-height: 88px; font-size: 30px; }
  .checkin-save-image-button { min-height: 142px; font-size: 42px; }
  .checkin-qr-view { grid-template-columns: 1fr; }
  .checkin-qr-actions .btn { width: 100%; }
}

/* v128 최고관리자 설문 문항 편집 */
.survey-question-table th:last-child,
.survey-question-table td:last-child { min-width: 210px; }
.survey-question-actions { flex-wrap: wrap; gap: 6px; }
.survey-question-actions .btn { min-width: 42px; min-height: 38px; padding: 8px 10px; }
#surveyQuestionsForm .form-actions { flex-wrap: wrap; }

/* v129 관리자 대시보드 사각 버튼·영화 행 선택 */
.admin-top-actions .btn,
.admin-layout .btn,
.admin-sidebar .admin-tab {
  border-radius: 9px;
}
.admin-layout .btn-small { border-radius: 7px; }
.screening-status-heading,
.screening-status-cell { width: 112px; min-width: 112px; text-align: center; }
.seat-status-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 40px;
  padding: 8px 9px;
  border: 1px solid transparent;
  border-radius: 7px;
  font: inherit;
  font-size: 12px;
  font-weight: 900;
  line-height: 1.25;
  white-space: nowrap;
  cursor: pointer;
}
.seat-status-button.ok { background: rgba(36,120,79,.14); border-color: rgba(36,120,79,.28); color: var(--ok); }
.seat-status-button.warn { background: rgba(180,107,0,.14); border-color: rgba(180,107,0,.3); color: #7a4800; }
.seat-status-button.danger { background: rgba(179,38,30,.13); border-color: rgba(179,38,30,.28); color: var(--danger); }
.seat-status-button:hover { filter: brightness(.97); box-shadow: 0 4px 10px rgba(31,27,22,.1); }
.seat-status-button:focus-visible,
.screening-roster-row:focus-visible { outline: 3px solid rgba(31,102,80,.45); outline-offset: -2px; }
.screening-phase-badge {
  width: 100%;
  justify-content: center;
  margin-top: 6px;
  border-radius: 7px;
  white-space: normal;
  text-align: center;
}
.screening-roster-row { cursor: pointer; }
.screening-roster-row td { transition: background-color .15s ease; }
.screening-roster-row:hover td { background: rgba(31,102,80,.09) !important; }

@media (max-width: 760px) {
  .survey-question-table-wrap { overflow-x: auto; }
  .survey-question-table { min-width: 1080px; }
}

@media print {
  body { background: #fff; }
  .nav, .admin-sidebar, .btn, .filters, .toast, .modal-backdrop, .screen-only { display: none !important; }
  .app-shell { width: 100%; padding: 0; }
  .card, .metric-card, .table-wrap { box-shadow: none; }
  .table-wrap { overflow: visible; }
  table, .reservation-table { min-width: 0; }
  th, td { padding: 7px 6px; font-size: 11px; }
  .print-only { display: block; }
  .print-column { display: table-cell !important; }
  .support-strip, .sponsor-callout { display: none !important; }
  .metric-grid { grid-template-columns: repeat(2, 1fr); }
}

/* 최신 반영: 후원 강조, 참석 체크, 인쇄 명단 */
.metric-grid { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.donation-card {
  display: grid;
  gap: 14px;
  align-content: center;
}
.donation-card h2 {
  margin: 0;
  font-size: clamp(24px, 3vw, 34px);
  line-height: 1.15;
  letter-spacing: -0.05em;
}
.donation-card p {
  margin: 0;
  color: rgba(255,250,242,.8);
  line-height: 1.65;
}
.donation-card .btn { width: fit-content; }
.donation-strip {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  margin: 16px 0 18px;
  padding: 18px 20px;
  border: 1px solid rgba(179,63,47,.22);
  border-radius: 22px;
  background: linear-gradient(135deg, rgba(179,63,47,.1), rgba(255,250,242,.92));
  box-shadow: 0 10px 24px rgba(58,41,27,.07);
}
.donation-strip strong {
  display: block;
  margin-bottom: 5px;
  letter-spacing: -0.03em;
}
.donation-strip p { margin: 0; color: var(--muted); line-height: 1.55; }
.donation-mini {
  display: grid;
  gap: 4px;
  padding: 13px 14px;
  border: 1px solid rgba(179,63,47,.2);
  border-radius: 16px;
  background: rgba(179,63,47,.08);
  color: var(--ink);
}
.donation-mini span { color: var(--muted); font-size: 13px; line-height: 1.45; }
.reservation-filters { grid-template-columns: 1.2fr 1.15fr .75fr .85fr auto; }
.attendance-cell { min-width: 124px; }
.attendance-cell .badge { margin-bottom: 6px; }
.attendance-cell .btn { width: 100%; }
.attended-row { background: rgba(36,120,79,.045); }
.print-heading {
  margin: 12px 0 14px;
  padding-bottom: 10px;
  border-bottom: 2px solid #222;
}
.print-heading h2 { margin: 0 0 4px; }
.print-heading p { margin: 0; color: #333; }
.print-check {
  align-items: center;
  gap: 8px;
  font-weight: 800;
  white-space: nowrap;
}
.check-box {
  width: 22px;
  height: 22px;
  display: inline-grid;
  place-items: center;
  border: 2px solid #111;
  border-radius: 3px;
  font-weight: 900;
}

@media (max-width: 980px) {
  .reservation-filters { grid-template-columns: 1fr 1fr; }
  .donation-strip { align-items: flex-start; flex-direction: column; }
}

@media (max-width: 640px) {
  .donation-strip .btn, .donation-card .btn { width: 100%; }
}

@media print {
  .screen-only { display: none !important; }
  .print-only { display: block !important; }
  .print-check { display: flex !important; }
  .print-heading { display: block !important; }
  .table-wrap { overflow: visible; border-radius: 0; }
  table, .reservation-table { min-width: 0; }
  .reservation-table th, .reservation-table td { border: 1px solid #bbb; }
  th, td { padding: 6px 7px; }
  .attendance-cell { min-width: 92px; }
  .card { border-radius: 0; padding: 10px; }
}

/* v5: 개막작 사전신청 티켓팅 */
.opening-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr);
  gap: 18px;
  align-items: stretch;
  margin-bottom: 18px;
}
.opening-hero-main,
.opening-status-card {
  border: 1px solid rgba(179,63,47,.24);
  border-radius: 30px;
  box-shadow: var(--shadow);
  padding: clamp(22px, 4vw, 38px);
}
.opening-hero-main {
  background:
    radial-gradient(circle at top right, rgba(255,255,255,.16), transparent 18rem),
    linear-gradient(135deg, rgba(31,27,22,.94), rgba(127,36,28,.88));
  color: var(--paper);
}
.opening-hero-main h1 {
  margin: 16px 0 14px;
  font-size: clamp(36px, 7vw, 74px);
  line-height: .98;
  letter-spacing: -0.08em;
}
.opening-hero-main h1 span { color: rgba(255,250,242,.72); }
.opening-hero-main p {
  max-width: 760px;
  margin: 0 0 24px;
  color: rgba(255,250,242,.82);
  line-height: 1.72;
  font-size: 17px;
}
.opening-status-card {
  display: grid;
  align-content: center;
  gap: 16px;
  background: rgba(255,250,242,.92);
}
.opening-status-card h2 { margin: 0; letter-spacing: -0.05em; }
.opening-status-card p { margin: 0; color: var(--muted); line-height: 1.6; }
.opening-status-big {
  display: inline-flex;
  width: fit-content;
  padding: 12px 15px;
  border-radius: 999px;
  font-size: 20px;
  font-weight: 950;
  letter-spacing: -0.04em;
  background: rgba(49,90,139,.12);
  color: var(--accent-2);
}
.opening-status-big.ok { background: rgba(36,120,79,.12); color: var(--ok); }
.opening-status-big.warn { background: rgba(180,107,0,.13); color: #8a5100; }
.opening-status-big.danger { background: rgba(179,38,30,.12); color: var(--danger); }
.opening-general-notice {
  display: grid;
  gap: 8px;
  margin: 18px 0 6px;
  padding: 20px 22px;
  border-radius: 22px;
  background: rgba(255,255,255,.92);
  border: 1px solid rgba(99,86,194,.22);
  color: var(--ink);
  box-shadow: 0 18px 46px rgba(48,44,115,.14);
}
.opening-general-notice strong {
  font-size: clamp(24px, 3.2vw, 42px);
  line-height: 1.14;
  letter-spacing: -0.06em;
  font-weight: 950;
}
.opening-general-notice span {
  color: var(--muted);
  font-size: clamp(15px, 1.5vw, 18px);
  line-height: 1.55;
  font-weight: 800;
}
.global-reservation-lock {
  margin: 16px 0;
  border-color: rgba(99,86,194,.24);
  background: linear-gradient(135deg, rgba(235,238,255,.94), rgba(248,248,252,.96));
  color: var(--ink);
}
.global-reservation-lock strong {
  display: block;
  margin-bottom: 6px;
  font-size: clamp(21px, 2.6vw, 34px);
  line-height: 1.18;
  letter-spacing: -0.05em;
  font-weight: 950;
}
.global-reservation-lock p {
  margin: 0;
  color: var(--muted);
  font-weight: 800;
  line-height: 1.55;
}
.opening-member-book-btn {
  min-height: 62px;
  padding: 17px 30px;
  border-radius: 22px;
  font-size: clamp(19px, 2.4vw, 29px);
  font-weight: 950;
  letter-spacing: -0.04em;
}
.opening-mini-grid,
.opening-summary-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 10px;
}
.opening-mini-grid div {
  padding: 13px;
  border-radius: 16px;
  background: rgba(31,27,22,.045);
  border: 1px solid rgba(31,27,22,.07);
}
.opening-mini-grid span { display: block; color: var(--muted); font-size: 12px; font-weight: 800; }
.opening-mini-grid strong { display: block; margin-top: 4px; font-size: 23px; letter-spacing: -0.04em; }
.opening-flow-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 14px;
  margin: 18px 0;
}
.opening-flow-card {
  display: grid;
  align-content: start;
  gap: 10px;
}
.opening-flow-card h2 { margin: 0; letter-spacing: -0.05em; }
.opening-flow-card p { margin: 0; color: var(--muted); line-height: 1.55; }
.donation-tier-list {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 6px;
}
.donation-tier-list span {
  padding: 7px 10px;
  border-radius: 999px;
  background: rgba(179,63,47,.1);
  color: var(--brand-dark);
  font-size: 12px;
  font-weight: 900;
}
.opening-summary-grid {
  grid-template-columns: repeat(4, minmax(0,1fr));
}
.opening-card .screening-top {
  background: linear-gradient(135deg, rgba(179,63,47,.18), rgba(180,107,0,.12));
}
.opening-card-mini,
.opening-booking-intro,
.free-seat-note {
  display: grid;
  gap: 5px;
  padding: 13px 14px;
  border: 1px solid rgba(179,63,47,.2);
  border-radius: 16px;
  background: rgba(179,63,47,.07);
}
.opening-card-mini span,
.opening-card-mini small,
.free-seat-note span { color: var(--muted); }
.opening-card-mini strong { letter-spacing: -0.03em; }
.opening-booking-intro { margin-bottom: 14px; }
.opening-booking-intro h3 { margin: 0; letter-spacing: -0.04em; }
.opening-booking-intro p { margin: 0; color: var(--muted); line-height: 1.55; }
.opening-booking-intro.general { border-color: rgba(49,90,139,.2); background: rgba(49,90,139,.07); }
.free-seat-note { grid-template-columns: auto 1fr; align-items: center; }
.ticket-seat-cell { min-width: 140px; }
.full-width { width: 100%; }
.metric-value.small-value { font-size: clamp(22px, 3vw, 34px); }
.metric-value.text-value { font-size: clamp(18px, 2.2vw, 28px); line-height: 1.15; }
.seat-result-box {
  background: rgba(31,102,80,.08);
  border-color: rgba(31,102,80,.2);
}
.seat-result-box em {
  display: block;
  margin-top: 6px;
  color: var(--muted);
  font-style: normal;
  font-weight: 800;
}

@media (max-width: 980px) {
  .opening-hero,
  .opening-flow-grid,
  .opening-summary-grid { grid-template-columns: 1fr; }
}

@media print {
  .opening-hero,
  .opening-flow-grid,
  .opening-admin-card,
  .opening-metrics { display: none !important; }
  .ticket-seat-cell { min-width: 90px; }
}

/* v5: 개막작 사전신청/일반석 티켓팅 */
.opening-hero {
  display: grid;
  grid-template-columns: 1.35fr .65fr;
  gap: 18px;
  align-items: stretch;
  margin-top: 10px;
}
.opening-hero-main {
  position: relative;
  overflow: hidden;
  padding: clamp(28px, 5vw, 56px);
  border-radius: 32px;
  color: var(--paper);
  background:
    radial-gradient(circle at 85% 15%, rgba(255,255,255,.15), transparent 18rem),
    linear-gradient(135deg, rgba(31,27,22,.96), rgba(127,36,28,.91));
  box-shadow: var(--shadow);
}
.opening-hero-main h1 {
  margin: 18px 0 14px;
  font-size: clamp(36px, 6vw, 72px);
  line-height: .98;
  letter-spacing: -0.07em;
}
.opening-hero-main h1 span { color: #ffe3bc; }
.opening-hero-main p {
  max-width: 780px;
  color: rgba(255,250,242,.84);
  line-height: 1.75;
  font-size: clamp(15px, 2vw, 18px);
}
.opening-status-card {
  display: grid;
  align-content: start;
  gap: 14px;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 28px;
  background: rgba(255,250,242,.92);
  box-shadow: var(--shadow);
}
.opening-status-card h2 { margin: 0; letter-spacing: -0.05em; }
.opening-status-card p { margin: 0; color: var(--muted); line-height: 1.6; }
.opening-status-big {
  padding: 14px 16px;
  border-radius: 18px;
  font-weight: 950;
  letter-spacing: -0.04em;
  background: rgba(49,90,139,.12);
  color: var(--accent-2);
}
.opening-status-big.ok { background: rgba(36,120,79,.13); color: var(--ok); }
.opening-status-big.warn { background: rgba(180,107,0,.14); color: #8a5100; }
.opening-status-big.danger { background: rgba(179,38,30,.13); color: var(--danger); }
.opening-mini-grid,
.opening-summary-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 10px;
}
.opening-mini-grid div {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fffdf8;
}
.opening-mini-grid span,
.opening-schedule span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
  margin-bottom: 4px;
}
.opening-mini-grid strong,
.opening-schedule strong { font-size: 18px; letter-spacing: -0.04em; }
.opening-flow-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 14px;
  margin-top: 18px;
}
.opening-flow-card .icon-badge {
  background: rgba(179,63,47,.11);
  color: var(--brand-dark);
  font-weight: 950;
}
.opening-flow-card h2 { margin: 12px 0 8px; letter-spacing: -0.05em; }
.donation-tier-list {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 12px;
}
.donation-tier-list span {
  padding: 7px 10px;
  border-radius: 999px;
  background: rgba(179,63,47,.1);
  color: var(--brand-dark);
  font-size: 12px;
  font-weight: 900;
}
.opening-inline-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin: 16px 0 18px;
  padding: 20px;
  border: 1px solid rgba(179,63,47,.24);
  border-radius: 24px;
  background:
    linear-gradient(135deg, rgba(31,27,22,.93), rgba(127,36,28,.86));
  color: var(--paper);
  box-shadow: var(--shadow);
}
.opening-inline-card h2 { margin: 8px 0 6px; letter-spacing: -0.05em; }
.opening-inline-card p { margin: 0; color: rgba(255,250,242,.78); line-height: 1.6; }
.opening-inline-card .btn-outline { background: rgba(255,250,242,.94); }
.opening-card .screening-top {
  background: linear-gradient(135deg, rgba(127,36,28,.18), rgba(49,90,139,.12));
}
.opening-card-mini {
  display: grid;
  gap: 3px;
  padding: 12px 13px;
  border: 1px dashed rgba(179,63,47,.32);
  border-radius: 16px;
  background: rgba(179,63,47,.07);
}
.opening-card-mini span,
.opening-card-mini small { color: var(--muted); }
.opening-card-mini strong { letter-spacing: -0.03em; }
.opening-admin-card { border-color: rgba(179,63,47,.25); }
.opening-metrics .text-value { font-size: 23px; line-height: 1.15; }
.metric-value.small-value { font-size: clamp(22px, 3vw, 30px); }
.opening-booking-intro {
  display: grid;
  gap: 8px;
  margin-bottom: 16px;
  padding: 16px;
  border-radius: 18px;
  border: 1px solid rgba(179,63,47,.2);
  background: rgba(179,63,47,.08);
}
.opening-booking-intro.general {
  border-color: rgba(31,102,80,.2);
  background: rgba(31,102,80,.08);
}
.opening-booking-intro h3 { margin: 0; letter-spacing: -0.04em; }
.opening-booking-intro p { margin: 0; color: var(--muted); line-height: 1.55; }
.seat-result-box { align-items: flex-start; }
.seat-result-box em {
  display: block;
  margin-top: 6px;
  color: var(--muted);
  font-style: normal;
  font-weight: 850;
}
.ticket-seat-cell { min-width: 160px; }
.reservation-table { min-width: 1280px; }

@media (max-width: 980px) {
  .opening-hero,
  .opening-flow-grid { grid-template-columns: 1fr; }
  .opening-inline-card { align-items: flex-start; flex-direction: column; }
  .opening-summary-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

@media (max-width: 640px) {
  .opening-mini-grid,
  .opening-summary-grid { grid-template-columns: 1fr; }
  .opening-hero-main { border-radius: 24px; padding: 26px; }
  .opening-inline-card .cta-row,
  .opening-inline-card .btn { width: 100%; }
}

@media print {
  .opening-hero,
  .opening-flow-grid,
  .opening-inline-card { display: none !important; }
  .reservation-table { min-width: 0; }
  .ticket-seat-cell { min-width: 0; }
}

/* v6: 메인 화면 개막식 포스터·소개영상 노출 */
.opening-home-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(280px, .75fr);
  gap: 22px;
  align-items: stretch;
  margin-top: 8px;
  padding: clamp(18px, 3vw, 28px);
  border-radius: 34px;
  background:
    radial-gradient(circle at 75% 18%, rgba(255,255,255,.16), transparent 22rem),
    linear-gradient(135deg, #18130f, #6f211b 58%, #1c4668);
  color: var(--paper);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.opening-home-copy {
  display: grid;
  align-content: center;
  gap: 18px;
  padding: clamp(10px, 2.6vw, 28px);
}
.opening-home-copy h1 {
  margin: 0;
  font-size: clamp(46px, 9vw, 104px);
  line-height: .9;
  letter-spacing: -0.09em;
}
.opening-home-copy h1 span { color: #ffe3bc; }
.opening-home-copy p {
  max-width: 820px;
  margin: 0;
  color: rgba(255,250,242,.82);
  line-height: 1.72;
  font-size: clamp(15px, 2vw, 18px);
}
.opening-home-copy .opening-home-lead {
  color: #fff8ea;
  font-weight: 900;
  font-size: clamp(18px, 2.4vw, 24px);
  line-height: 1.45;
}
.opening-home-facts {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 10px;
}
.opening-home-facts div {
  padding: 13px;
  border: 1px solid rgba(255,255,255,.15);
  border-radius: 16px;
  background: rgba(255,255,255,.09);
  backdrop-filter: blur(10px);
}
.opening-home-facts span {
  display: block;
  margin-bottom: 4px;
  color: rgba(255,250,242,.64);
  font-size: 12px;
  font-weight: 850;
}
.opening-home-facts strong {
  display: block;
  color: #fffaf2;
  letter-spacing: -0.04em;
}
.opening-home-note {
  font-size: 13px !important;
  color: rgba(255,250,242,.72) !important;
  font-weight: 800;
}
.opening-poster-hero {
  position: relative;
  margin: 0;
  min-height: 500px;
  border-radius: 28px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.18);
  box-shadow: 0 24px 60px rgba(0,0,0,.32);
  background: rgba(0,0,0,.25);
}
.opening-poster-hero img,
.opening-poster-card img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.opening-poster-hero figcaption,
.opening-poster-card figcaption {
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: 14px;
  padding: 10px 12px;
  border-radius: 14px;
  background: rgba(0,0,0,.56);
  color: #fff;
  font-size: 13px;
  font-weight: 900;
  backdrop-filter: blur(8px);
}
.opening-media-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(260px, .75fr);
  gap: 16px;
  margin: 18px 0;
  align-items: stretch;
}
.opening-detail-media {
  grid-template-columns: minmax(260px, .45fr) minmax(0, 1fr);
}
.opening-media-card,
.opening-ticket-card {
  display: grid;
  align-content: start;
  gap: 14px;
}
.opening-ticket-card h2 { margin: 0; letter-spacing: -0.05em; }
.opening-ticket-card p { margin: 0; color: var(--muted); line-height: 1.6; }
.compact-title { align-items: center; margin-bottom: 0; }
.video-frame {
  position: relative;
  width: 100%;
  overflow: hidden;
  border-radius: 22px;
  background: #000;
  aspect-ratio: 16 / 9;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.video-frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.opening-poster-card {
  position: relative;
  min-height: 420px;
  padding: 0;
  overflow: hidden;
}
.opening-poster-card figcaption { left: 12px; right: 12px; bottom: 12px; }

@media (max-width: 980px) {
  .opening-home-hero,
  .opening-media-grid,
  .opening-detail-media { grid-template-columns: 1fr; }
  .opening-home-facts { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .opening-poster-hero { min-height: 680px; }
  .opening-poster-card { min-height: 620px; }
}

@media (max-width: 640px) {
  .opening-home-hero { border-radius: 24px; padding: 16px; }
  .opening-home-facts { grid-template-columns: 1fr 1fr; }
  .opening-poster-hero { min-height: 520px; border-radius: 22px; }
  .opening-poster-card { min-height: 520px; }
  .opening-media-card .section-title { align-items: flex-start; }
}

@media print {
  .opening-home-hero,
  .opening-media-grid,
  .video-frame { display: none !important; }
}

/* v7: 개막식 헤드라인, 금액 입력 삭제, 영상 임베드 보강 */
.opening-star-line {
  display: inline-flex;
  width: fit-content;
  max-width: 100%;
  margin: 0;
  padding: 10px 14px;
  border-radius: 999px;
  background: rgba(255,227,188,.16);
  color: #ffe3bc !important;
  border: 1px solid rgba(255,227,188,.34);
  font-size: clamp(20px, 3vw, 34px) !important;
  line-height: 1.15 !important;
  font-weight: 950;
  letter-spacing: -0.06em;
  box-shadow: 0 14px 34px rgba(0,0,0,.16);
}
.opening-hero-main .opening-star-line {
  margin-bottom: 4px;
}
.opening-card-copy {
  padding: 12px 13px;
  border-radius: 16px;
  background: rgba(31,27,22,.045);
  border: 1px solid rgba(31,27,22,.08);
  font-weight: 750;
}
.opening-summary-grid {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}
.video-frame {
  min-height: 230px;
}
@media (max-width: 640px) {
  .opening-star-line {
    width: 100%;
    border-radius: 18px;
  }
  .video-frame { min-height: 190px; }
}


.video-fallback {
  margin: 2px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}
.video-fallback a {
  color: var(--brand-dark);
  font-weight: 900;
}

/* v7 보강: 긴 개막식 헤드라인 줄바꿈 안정화 */
.opening-home-copy h1,
.opening-hero-main h1 {
  word-break: keep-all;
}

/* v8: 개막식 메인 타이틀 줄바꿈 정리 + 유튜브 오류 153 대응형 영상 카드 */
.opening-home-hero {
  grid-template-columns: minmax(0, 1fr) minmax(280px, .68fr);
}
.opening-home-copy h1.opening-title-stack,
.opening-hero-main h1.opening-title-stack {
  display: grid;
  gap: clamp(3px, .45vw, 8px);
  max-width: 720px;
  margin: 0;
  font-size: clamp(42px, 6.1vw, 84px);
  line-height: 1.04;
  letter-spacing: -0.07em;
  word-break: keep-all;
  overflow-wrap: normal;
}
.opening-title-stack .headline-line {
  display: block;
  white-space: nowrap;
}
.opening-title-stack .headline-accent {
  color: #ffe3bc;
}
.opening-title-stack .opening-title-sub {
  display: block;
  margin-top: clamp(8px, 1.2vw, 14px);
  color: #ffe3bc;
  font-size: clamp(20px, 2.2vw, 32px);
  line-height: 1.25;
  letter-spacing: -0.045em;
}
.video-frame-preview {
  min-height: 260px;
  isolation: isolate;
}
.video-cover {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  padding: 0;
  background: #181818;
  color: #fff;
  cursor: pointer;
  overflow: hidden;
  font: inherit;
  text-align: center;
}
.video-cover img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.03);
  filter: brightness(.66) contrast(1.02) saturate(.92);
}
.video-cover-shade {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 46%, rgba(0,0,0,.08), rgba(0,0,0,.6) 70%),
    linear-gradient(180deg, rgba(0,0,0,.15), rgba(0,0,0,.72));
}
.video-cover-content {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 10px;
  height: 100%;
  padding: 26px;
}
.video-play-mark {
  display: grid;
  place-items: center;
  width: clamp(64px, 9vw, 94px);
  height: clamp(64px, 9vw, 94px);
  border-radius: 50%;
  background: rgba(255,255,255,.92);
  color: #1f1b16;
  font-size: clamp(26px, 3.6vw, 42px);
  box-shadow: 0 20px 48px rgba(0,0,0,.28);
  transform: translateX(2px);
}
.video-cover-content strong {
  display: block;
  color: #fffaf2;
  font-size: clamp(23px, 3.1vw, 40px);
  letter-spacing: -0.055em;
}
.video-cover-content small {
  color: rgba(255,250,242,.82);
  font-weight: 800;
}
.video-cover:hover .video-play-mark,
.video-cover:focus-visible .video-play-mark {
  transform: translateX(2px) scale(1.06);
}
.video-cover:focus-visible {
  outline: 4px solid rgba(255,227,188,.9);
  outline-offset: -8px;
}

@media (max-width: 980px) {
  .opening-home-copy h1.opening-title-stack,
  .opening-hero-main h1.opening-title-stack {
    font-size: clamp(40px, 9vw, 74px);
  }
}

/* v176 상단 시스템명 및 후원 페이지 문단 정렬 */
.logo-title {
  font-size: clamp(18px, 1.75vw, 23px);
  line-height: 1.18;
  text-wrap: balance;
  word-break: keep-all;
}

.donation-page-hero {
  display: grid;
  justify-items: center;
  text-align: center;
}
.donation-page-hero h1 {
  width: 100%;
  margin: 14px auto 24px;
  text-align: center;
  text-wrap: balance;
  word-break: keep-all;
}
.donation-story {
  display: grid;
  gap: 11px;
  width: min(100%, 960px);
  max-width: 960px;
  margin: 0 auto;
  text-align: center;
}
.donation-story > p {
  margin: 0;
  color: inherit;
  font-size: inherit;
  line-height: 1.72;
  letter-spacing: -.012em;
  text-align: center;
  text-wrap: pretty;
  word-break: keep-all;
  overflow-wrap: break-word;
}
.donation-form-card .compact-title,
.donation-participation-heading {
  width: 100%;
  text-align: center;
}
.donation-participation-heading h2,
.donation-participation-heading > p {
  text-align: center;
  text-wrap: balance;
  word-break: keep-all;
}
.donation-account-summary span {
  justify-content: center;
  text-align: center;
  word-break: keep-all;
}

@media (max-width: 640px) {
  .logo-title {
    max-width: 310px;
    font-size: 19px;
  }
  .donation-page-hero h1 {
    margin-bottom: 20px;
    font-size: clamp(32px, 10vw, 42px);
    line-height: 1.14;
  }
  .donation-story { gap: 12px; }
  .donation-story > p {
    font-size: 15px;
    line-height: 1.75;
  }
}

/* v173-final 공통 신청자 표 열 너비 최종 우선순위 */
html body .reservation-table {
  min-width: 820px !important;
  table-layout: fixed !important;
}
html body .reservation-table th,
html body .reservation-table td { padding-left: 2px !important; padding-right: 2px !important; }
html body .reservation-table:not(.reservation-table-sms) th:nth-child(1),
html body .reservation-table:not(.reservation-table-sms) td:nth-child(1) { width: 10% !important; }
html body .reservation-table:not(.reservation-table-sms) th:nth-child(2),
html body .reservation-table:not(.reservation-table-sms) td:nth-child(2) { width: 20% !important; }
html body .reservation-table:not(.reservation-table-sms) th:nth-child(3),
html body .reservation-table:not(.reservation-table-sms) td:nth-child(3) { width: 15% !important; }
html body .reservation-table:not(.reservation-table-sms) th:nth-child(4),
html body .reservation-table:not(.reservation-table-sms) td:nth-child(4) { width: 8% !important; }
html body .reservation-table:not(.reservation-table-sms) th:nth-child(5),
html body .reservation-table:not(.reservation-table-sms) td:nth-child(5) { width: 5% !important; text-align: center !important; }
html body .reservation-table:not(.reservation-table-sms) th:nth-child(6),
html body .reservation-table:not(.reservation-table-sms) td:nth-child(6) { width: 10% !important; }
html body .reservation-table:not(.reservation-table-sms) th:nth-child(7),
html body .reservation-table:not(.reservation-table-sms) td:nth-child(7) { width: 14% !important; }
html body .reservation-table:not(.reservation-table-sms) th:nth-child(8),
html body .reservation-table:not(.reservation-table-sms) td:nth-child(8) { width: 18% !important; }
html body .reservation-table-sms th:nth-child(1),
html body .reservation-table-sms td:nth-child(1) { width: 3% !important; }
html body .reservation-table-sms th:nth-child(2),
html body .reservation-table-sms td:nth-child(2) { width: 9% !important; }
html body .reservation-table-sms th:nth-child(3),
html body .reservation-table-sms td:nth-child(3) { width: 18% !important; }
html body .reservation-table-sms th:nth-child(4),
html body .reservation-table-sms td:nth-child(4) { width: 14% !important; }
html body .reservation-table-sms th:nth-child(5),
html body .reservation-table-sms td:nth-child(5) { width: 8% !important; }
html body .reservation-table-sms th:nth-child(6),
html body .reservation-table-sms td:nth-child(6) { width: 5% !important; text-align: center !important; }
html body .reservation-table-sms th:nth-child(7),
html body .reservation-table-sms td:nth-child(7) { width: 10% !important; }
html body .reservation-table-sms th:nth-child(8),
html body .reservation-table-sms td:nth-child(8) { width: 13% !important; }
html body .reservation-table-sms th:nth-child(9),
html body .reservation-table-sms td:nth-child(9) { width: 20% !important; }

@media (max-width: 760px) {
  html body .reservation-table { min-width: 610px !important; }
  html body .reservation-table th,
  html body .reservation-table td { padding-left: 1px !important; padding-right: 1px !important; }
  html body .reservation-table:not(.reservation-table-sms) th:nth-child(1),
  html body .reservation-table:not(.reservation-table-sms) td:nth-child(1) { width: 14% !important; }
  html body .reservation-table:not(.reservation-table-sms) th:nth-child(2),
  html body .reservation-table:not(.reservation-table-sms) td:nth-child(2) { width: 24% !important; }
  html body .reservation-table:not(.reservation-table-sms) th:nth-child(3),
  html body .reservation-table:not(.reservation-table-sms) td:nth-child(3) { width: 23% !important; }
  html body .reservation-table:not(.reservation-table-sms) th:nth-child(5),
  html body .reservation-table:not(.reservation-table-sms) td:nth-child(5) { width: 7% !important; }
  html body .reservation-table:not(.reservation-table-sms) th:nth-child(8),
  html body .reservation-table:not(.reservation-table-sms) td:nth-child(8) { width: 32% !important; }
  html body .reservation-table-sms th:nth-child(1),
  html body .reservation-table-sms td:nth-child(1) { width: 5% !important; }
  html body .reservation-table-sms th:nth-child(2),
  html body .reservation-table-sms td:nth-child(2) { width: 13% !important; }
  html body .reservation-table-sms th:nth-child(3),
  html body .reservation-table-sms td:nth-child(3) { width: 23% !important; }
  html body .reservation-table-sms th:nth-child(4),
  html body .reservation-table-sms td:nth-child(4) { width: 22% !important; }
  html body .reservation-table-sms th:nth-child(6),
  html body .reservation-table-sms td:nth-child(6) { width: 7% !important; }
  html body .reservation-table-sms th:nth-child(9),
  html body .reservation-table-sms td:nth-child(9) { width: 30% !important; }
}

/* v173 신청자 명단 압축 열·문자 선택 및 전송내역 */
.reservation-section-title { display: block; }
.reservation-title-line {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 7px;
}
.reservation-title-line h2 { margin-right: 3px; }
.reservation-title-action {
  min-height: 38px;
  padding: 8px 13px;
  border-radius: 8px;
  font-size: 14px;
}

.bulk-sms-panel {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 10px !important;
  padding: 13px !important;
}
.bulk-sms-guide { display: flex; align-items: baseline; flex-wrap: wrap; gap: 5px 10px; }
.bulk-sms-guide p { flex-basis: 100%; margin: 0; }
.bulk-sms-selected-count {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 3px 9px;
  border-radius: 6px;
  background: #fff;
  border: 1px solid var(--line);
  font-size: 13px;
  font-weight: 950;
}
.bulk-sms-send-row {
  display: flex !important;
  flex-wrap: wrap;
  gap: 8px !important;
  width: 100%;
}
.bulk-sms-send-button {
  min-width: 210px;
  min-height: 50px;
  padding: 11px 18px;
  border-radius: 8px;
  font-size: 17px;
  font-weight: 950;
}

.reservation-table {
  min-width: 820px !important;
}
.reservation-table th,
.reservation-table td {
  padding: 4px 2px !important;
  letter-spacing: -.025em;
}
.reservation-table .sms-check-col { width: 3% !important; padding-left: 1px !important; padding-right: 1px !important; text-align: center !important; }
.reservation-table .col-venue { width: 10% !important; }
.reservation-table .col-screening { width: 20% !important; }
.reservation-table .col-applicant { width: 15% !important; }
.reservation-table .col-reservation-no { width: 8% !important; }
.reservation-table .col-seats { width: 5% !important; text-align: center !important; }
.reservation-table .col-created { width: 10% !important; }
.reservation-table .col-note { width: 14% !important; }
.reservation-table .col-manage { width: 18% !important; }
.reservation-table-sms .col-venue { width: 9% !important; }
.reservation-table-sms .col-screening { width: 18% !important; }
.reservation-table-sms .col-applicant { width: 14% !important; }
.reservation-table-sms .col-reservation-no { width: 8% !important; }
.reservation-table-sms .col-seats { width: 5% !important; }
.reservation-table-sms .col-created { width: 10% !important; }
.reservation-table-sms .col-note { width: 13% !important; }
.reservation-table-sms .col-manage { width: 20% !important; }
.reservation-table .applicant-cell { overflow-wrap: anywhere; }
.reservation-table .applicant-name-line { gap: 2px !important; }
.reservation-table .reservation-check-all,
.reservation-table .reservation-sms-check {
  width: 19px;
  height: 19px;
  margin: 0;
  cursor: pointer;
  accent-color: var(--primary);
}

.sms-history-panel {
  margin: 12px 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fffdfa;
}
.sms-history-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  margin-bottom: 9px;
}
.sms-history-heading h3 { margin: 0 0 2px; font-size: 20px; }
.sms-history-heading p { margin: 0; color: var(--muted); font-size: 13px; }
.sms-history-heading > strong { white-space: nowrap; font-size: 16px; }
.sms-history-table { min-width: 900px; table-layout: fixed; }
.sms-history-table th,
.sms-history-table td { padding: 6px 4px; font-size: 13px; vertical-align: middle; }
.sms-history-table th:nth-child(1) { width: 13%; }
.sms-history-table th:nth-child(2) { width: 8%; }
.sms-history-table th:nth-child(3) { width: 12%; }
.sms-history-table th:nth-child(4) { width: 18%; }
.sms-history-table th:nth-child(5) { width: 11%; }
.sms-history-table th:nth-child(6) { width: 22%; }
.sms-history-table th:nth-child(7) { width: 16%; }
.sms-history-message { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sms-history-status { font-weight: 900; }
.sms-history-status.is-success { color: #157453; }
.sms-history-status.is-failed { color: #a23b2e; }
.sms-history-actions { display: flex; gap: 3px; }
.sms-history-actions .btn { min-height: 34px !important; padding: 5px 7px !important; border-radius: 6px; font-size: 12px !important; }

@media (max-width: 760px) {
  .reservation-title-line { gap: 5px; }
  .reservation-title-action { min-height: 34px; padding: 6px 9px; font-size: 12px; }
  .bulk-sms-send-button { flex: 1 1 180px; min-width: 0; min-height: 46px; font-size: 15px; }
  .reservation-table { min-width: 610px !important; }
  .reservation-table th,
  .reservation-table td { padding-left: 1px !important; padding-right: 1px !important; }
  .reservation-table .col-venue { width: 14% !important; }
  .reservation-table .col-screening { width: 24% !important; }
  .reservation-table .col-applicant { width: 23% !important; }
  .reservation-table .col-seats { width: 7% !important; }
  .reservation-table .col-manage { width: 32% !important; }
  .reservation-table-sms .sms-check-col { width: 5% !important; }
  .reservation-table-sms .col-venue { width: 13% !important; }
  .reservation-table-sms .col-screening { width: 23% !important; }
  .reservation-table-sms .col-applicant { width: 22% !important; }
  .reservation-table-sms .col-seats { width: 7% !important; }
  .reservation-table-sms .col-manage { width: 30% !important; }
  .sms-history-panel { padding: 8px; }
}
@media (max-width: 640px) {
  .opening-home-copy h1.opening-title-stack,
  .opening-hero-main h1.opening-title-stack {
    font-size: clamp(34px, 12vw, 56px);
    letter-spacing: -0.06em;
  }
  .opening-title-stack .headline-line {
    white-space: normal;
  }
  .video-frame-preview {
    min-height: 210px;
  }
}
.opening-title-stack .headline-line { color: #fffaf2; }
.opening-title-stack .headline-accent,
.opening-title-stack .opening-title-sub { color: #ffe3bc; }

/* v8: 메인 헤드라인 겹침 방지 및 영상 카드 안정화 */
.opening-home-hero {
  grid-template-columns: minmax(0, 1.28fr) minmax(280px, .72fr);
}
.opening-home-copy,
.opening-hero-main,
.opening-poster-hero {
  min-width: 0;
}
.opening-home-copy h1.opening-title-stack,
.opening-hero-main h1.opening-title-stack {
  display: grid;
  gap: clamp(4px, .55vw, 9px);
  max-width: 680px;
  margin: 0;
  font-size: clamp(38px, 5.35vw, 78px);
  line-height: 1.04;
  letter-spacing: -0.065em;
  word-break: keep-all;
  overflow-wrap: normal;
}
.opening-title-stack .headline-line {
  display: block;
  width: fit-content;
  max-width: 100%;
  white-space: nowrap;
  color: #fffaf2;
}
.opening-title-stack .headline-accent {
  color: #ffe3bc;
}
.opening-title-stack .opening-title-sub {
  display: block;
  margin-top: clamp(8px, 1.2vw, 14px);
  color: #ffe3bc;
  font-size: clamp(18px, 2vw, 28px);
  line-height: 1.28;
  letter-spacing: -0.045em;
}
.video-frame-preview {
  min-height: clamp(230px, 38vw, 430px);
  background: #161616;
}
.video-frame-preview iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.video-cover-content {
  background: linear-gradient(180deg, rgba(0,0,0,0), rgba(0,0,0,.18));
}
.video-fallback {
  padding: 10px 12px;
  border-radius: 14px;
  background: rgba(31,27,22,.045);
}

@media (max-width: 1100px) {
  .opening-home-hero {
    grid-template-columns: 1fr;
  }
  .opening-home-copy h1.opening-title-stack,
  .opening-hero-main h1.opening-title-stack {
    font-size: clamp(42px, 8.2vw, 76px);
  }
  .opening-poster-hero {
    min-height: 620px;
  }
}

@media (max-width: 640px) {
  .opening-home-copy h1.opening-title-stack,
  .opening-hero-main h1.opening-title-stack {
    font-size: clamp(34px, 11vw, 56px);
    letter-spacing: -0.055em;
  }
  .opening-title-stack .headline-line {
    white-space: normal;
  }
  .opening-poster-hero {
    min-height: 500px;
  }
  .video-frame-preview {
    min-height: 210px;
  }
}

/* v9: 메인페이지 소개영상 iframe 즉시 표시 및 자동재생 */
.video-frame-autoplay {
  min-height: clamp(230px, 38vw, 430px);
  background: #000;
}
.video-frame-autoplay iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
@media (max-width: 640px) {
  .video-frame-autoplay {
    min-height: 210px;
  }
}

/* v9: 소개영상 메인 화면 자동재생 iframe */
.video-frame-autoplay {
  min-height: clamp(230px, 38vw, 430px);
  background: #000;
}
.video-frame-autoplay iframe {
  display: block;
  background: #000;
}
.opening-media-card .chip-link {
  white-space: nowrap;
}


/* v10: 메인 소개영상 자동 반복재생 iframe */
.video-frame-autoplay {
  aspect-ratio: 1496 / 672;
  min-height: clamp(230px, 38vw, 430px);
  background: #000;
}
.video-frame-autoplay iframe {
  display: block;
  width: 100%;
  height: 100%;
  background: #000;
}
@media (max-width: 640px) {
  .video-frame-autoplay {
    aspect-ratio: 16 / 9;
    min-height: 210px;
  }
}

/* v10: YouTube iframe 자동 반복재생 보강 */
.video-frame-autoplay iframe {
  width: 100%;
  height: 100%;
}

/* v11: 후원 전/후 문구 구분, 확인 메시지 복사 박스 */
.pre-donation-callout {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 16px;
  border-radius: 18px;
  border: 1px solid rgba(179,63,47,.22);
  background: rgba(179,63,47,.08);
}
.pre-donation-callout strong {
  display: block;
  margin-bottom: 4px;
  font-size: 18px;
  letter-spacing: -0.04em;
}
.pre-donation-callout span {
  display: block;
  color: var(--muted);
  line-height: 1.5;
  font-size: 13px;
}
.pre-donation-callout .btn {
  flex: 0 0 auto;
  min-width: 120px;
}
.confirmation-message-box {
  display: grid;
  gap: 10px;
  padding: 16px;
  margin: 0 0 16px;
  border-radius: 18px;
  border: 1px solid rgba(31,102,80,.2);
  background: rgba(31,102,80,.07);
}
.confirmation-message-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.confirmation-message-head strong {
  letter-spacing: -0.04em;
}
.confirmation-message-box p {
  margin: 0;
  color: #51463c;
  line-height: 1.62;
  word-break: keep-all;
}
@media (max-width: 640px) {
  .pre-donation-callout,
  .confirmation-message-head {
    align-items: stretch;
    flex-direction: column;
  }
  .pre-donation-callout .btn,
  .confirmation-message-head .btn {
    width: 100%;
  }
}

/* v11: 예약 확인 메시지 버튼 확장 */
.confirmation-message-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
@media (max-width: 640px) {
  .confirmation-message-actions .btn {
    width: 100%;
  }
}

/* v12: 예약 확인 문자 자동발송 안내 */
.checkbox-line {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  border-radius: 14px;
  background: rgba(31,102,80,.06);
  border: 1px solid rgba(31,102,80,.14);
  color: #51463c;
  line-height: 1.45;
}
.checkbox-line input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--green);
}
.sms-auto-box {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px dashed rgba(31,102,80,.32);
  background: rgba(255,255,255,.58);
}
.sms-auto-box span,
.sms-status-cell {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}
.sms-status-badge {
  margin-top: 5px;
}
@media (max-width: 640px) {
  .sms-auto-box {
    align-items: stretch;
    flex-direction: column;
  }
  .sms-auto-box .btn {
    width: 100%;
  }
}

/* v13 담당 스태프 신청자 관리 */
.screening-card-actions { display:grid; gap:.65rem; }
.screening-card-actions .btn { width:100%; text-align:center; }
.staff-link { color:var(--brand-dark); font-weight:800; }
.staff-login .login-card { border-top:5px solid var(--brand); }
.staff-portal-title .eyebrow { margin-bottom:.55rem; }
.staff-stats { margin-bottom:1.25rem; }

.staff-screening-heading { min-width: 0; }
.staff-screening-titleline {
  font-size: clamp(1.8rem, 3.2vw, 2.75rem);
  line-height: 1.18;
  font-weight: 900;
  letter-spacing: -0.045em;
  color: var(--ink);
  margin: 0 0 .55rem;
  word-break: keep-all;
}
.staff-screening-status { margin-bottom: .55rem; }
.staff-screening-status .badge { font-size: .95rem; padding: .45rem .7rem; }
@media (max-width: 720px) {
  .staff-screening-titleline { font-size: 1.65rem; line-height: 1.22; }
  .staff-screening-status .badge { font-size: .85rem; }
}

.staff-screening-card { margin-bottom:1.25rem; }
.staff-screening-card .section-title { align-items:flex-start; }
.staff-capacity { min-width:120px; padding:.8rem 1rem; border-radius:14px; background:var(--surface-soft); text-align:center; }
.staff-capacity strong { display:block; font-size:1.15rem; }
.staff-capacity span { display:block; margin-top:.25rem; color:var(--muted); font-size:.8rem; }
@media (max-width:720px) {
  .staff-screening-card .section-title { display:block; }
  .staff-capacity { margin-top:.8rem; }
  .staff-screening-card .reservation-table-wrap { margin-left:-.5rem; margin-right:-.5rem; }
}

/* v14 스태프 권한, 비밀번호 변경, 상영관별 명단 및 인쇄 최적화 */
.staff-password-card { margin-bottom: 1.25rem; }
.staff-password-card > div { margin-bottom: 1rem; }
.staff-password-card h2 { margin: 0 0 .35rem; }
.staff-password-card p { margin: 0; color: var(--muted); }
.staff-pin-form { display: grid; grid-template-columns: 140px minmax(130px,1fr) 140px minmax(130px,1fr) 160px minmax(130px,1fr) auto; gap: .65rem; align-items: end; }
.staff-pin-form .label { margin: 0; }
.reservation-table th, .reservation-table td { vertical-align: middle; }
.reservation-table td:nth-child(4) { min-width: 155px; }

@media (max-width: 980px) {
  .staff-pin-form { grid-template-columns: 1fr 1fr; }
  .staff-pin-form .btn { grid-column: 1 / -1; }
}

@media print {
  @page { size: A4 landscape; margin: 8mm; }
  body { font-size: 9px; }
  .header, .footer, .staff-portal-title, .staff-stats, .staff-password-card { display: none !important; }
  .staff-screening-card { page-break-after: always; break-after: page; margin: 0; padding: 0; border: 0; }
  .staff-screening-card:last-child { page-break-after: auto; break-after: auto; }
  .staff-screening-card > .section-title { display: flex !important; flex-direction: row !important; margin: 0 0 5px; }
  .staff-screening-card h2 { margin: 2px 0; font-size: 14px; }
  .staff-screening-titleline { font-size: 18px !important; margin: 0 0 3px !important; letter-spacing: -0.02em !important; }
  .staff-screening-status { margin: 0 0 2px !important; }

  .staff-screening-card p { margin: 0; font-size: 9px; }
  .staff-capacity { padding: 4px 7px; min-width: 80px; }
  .reservation-table { width: 100%; table-layout: fixed; border-collapse: collapse; }
  .reservation-table th, .reservation-table td { padding: 3px 4px !important; font-size: 8px !important; line-height: 1.15; overflow: hidden; text-overflow: ellipsis; }
  .reservation-table th { white-space: nowrap; }
  .reservation-table td { white-space: nowrap; }
  .reservation-table th:nth-child(1), .reservation-table td:nth-child(1) { width: 5%; }
  .reservation-table th:nth-child(2), .reservation-table td:nth-child(2) { width: 10%; }
  .reservation-table th:nth-child(3), .reservation-table td:nth-child(3) { width: 5%; text-align: center; }
  .reservation-table th:nth-child(4), .reservation-table td:nth-child(4) { width: 15%; min-width: 0; }
  .reservation-table th:nth-child(5), .reservation-table td:nth-child(5) { width: 22%; }
  .reservation-table th:nth-child(6), .reservation-table td:nth-child(6) { width: 15%; }
  .reservation-table th:nth-child(7), .reservation-table td:nth-child(7) { width: 5%; text-align: center; }
  .reservation-table th:nth-child(8), .reservation-table td:nth-child(8) { width: 11%; }
  .reservation-table th:nth-child(9), .reservation-table td:nth-child(9) { width: 12%; }
  .reservation-table .help { display: inline; font-size: 7px; white-space: nowrap; }
  .print-check { justify-content: center; }
  .check-box { width: 15px; height: 15px; border-width: 1px; }
  .table-note { max-width: none; }
}

/* v15: venue-first roster and statistics */
.venue-stats-table .total-row td { font-weight: 800; background: #f4efe7; }
.venue-stats-table th:first-child,
.venue-stats-table td:first-child { min-width: 130px; }
@media print {
  .reservation-table th, .reservation-table td { white-space: nowrap !important; overflow: hidden; text-overflow: ellipsis; }
  .reservation-table th:nth-child(1), .reservation-table td:nth-child(1) { width: 12% !important; }
  .reservation-table th:nth-child(2), .reservation-table td:nth-child(2) { width: 18% !important; }
  .reservation-table th:nth-child(3), .reservation-table td:nth-child(3) { width: 6% !important; }
  .reservation-table th:nth-child(4), .reservation-table td:nth-child(4) { width: 7% !important; }
  .reservation-table th:nth-child(5), .reservation-table td:nth-child(5) { width: 16% !important; min-width: 0 !important; }
  .reservation-table th:nth-child(6), .reservation-table td:nth-child(6) { width: 11% !important; }
  .reservation-table th:nth-child(7), .reservation-table td:nth-child(7) { width: 11% !important; }
  .reservation-table th:nth-child(8), .reservation-table td:nth-child(8) { width: 5% !important; text-align: center; }
  .reservation-table th:nth-child(9), .reservation-table td:nth-child(9) { width: 8% !important; }
  .reservation-table th:nth-child(10), .reservation-table td:nth-child(10) { width: 6% !important; }
  .venue-stats-table { width: 100%; table-layout: fixed; }
  .venue-stats-table th, .venue-stats-table td { font-size: 8px !important; padding: 3px !important; white-space: nowrap; }
}

/* v16: compact mobile navigation, reservation stats and screening cards */
.opening-mini-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 5px;
}
.opening-mini-grid div {
  min-height: 42px;
  padding: 5px 6px;
  border-radius: 8px;
}
.opening-mini-grid span {
  margin: 0 0 1px;
  font-size: 9px;
  line-height: 1.1;
}
.opening-mini-grid strong {
  margin: 0;
  font-size: 13px;
  line-height: 1.1;
}

.compact-screening-card {
  min-height: 0;
  border-radius: 18px;
}
.compact-screening-card .screening-top {
  padding: 12px 13px 10px;
}
.compact-screening-card .compact-badges {
  gap: 5px;
  margin-bottom: 8px;
}
.compact-screening-card .badge {
  padding: 4px 7px;
  font-size: 10px;
}
.compact-screening-card .screening-title {
  font-size: 18px;
}
.compact-screening-card .screening-meta {
  margin-top: 6px;
  font-size: 12px;
  line-height: 1.4;
}
.compact-screening-body {
  padding: 9px 12px 11px;
  gap: 0;
}
.screening-card-actions.compact-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}
.screening-card-actions.compact-actions .btn {
  width: auto;
  margin: 0;
  text-align: center;
}
.compact-book-btn {
  flex: 1 1 auto;
  min-height: 38px;
  padding: 8px 12px;
  border-radius: 12px;
}
.compact-staff-btn {
  flex: 0 0 auto;
  min-height: 28px;
  padding: 5px 7px !important;
  border-radius: 9px !important;
  font-size: 9px !important;
  font-weight: 750 !important;
  box-shadow: none !important;
}

@media (max-width: 640px) {
  .header {
    position: relative;
    gap: 8px;
  }
  .nav {
    width: 100%;
    gap: 5px;
  }
  .nav .staff-link {
    display: none;
  }
  .nav .primary-link {
    margin-left: auto;
    padding: 3px 6px;
    border: 0;
    background: transparent;
    color: var(--muted);
    font-size: 9px;
    font-weight: 650;
    box-shadow: none;
    opacity: .72;
  }
  .nav a:not(.primary-link), .nav button {
    padding: 7px 9px;
    font-size: 11px;
  }
  .opening-mini-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 4px;
  }
  .opening-mini-grid div {
    min-width: 0;
    padding: 4px;
  }
  .opening-mini-grid span { font-size: 8px; }
  .opening-mini-grid strong { font-size: 11px; }
  .screening-grid {
    gap: 10px;
  }
  .compact-screening-card .screening-top {
    padding: 10px 11px 8px;
  }
  .compact-screening-card .screening-title {
    font-size: 17px;
  }
  .compact-screening-body {
    padding: 7px 10px 9px;
  }
  .compact-staff-btn {
    font-size: 8px !important;
    padding: 4px 5px !important;
  }
}


/* v19: 관리자 명단·상세 통계 화면 정밀 압축 및 반응형 정렬 */
.admin-layout {
  grid-template-columns: minmax(180px, 220px) minmax(0, 1fr);
}
.admin-panel,
.admin-panel > *,
.grid-2 > * {
  min-width: 0;
}
.admin-panel .card {
  padding: clamp(14px, 1.5vw, 20px);
}

/* 신청자 명단: 화면 안에 더 많은 정보를 안정적으로 배치 */
.reservation-filters {
  grid-template-columns: minmax(180px, 1.35fr) repeat(4, minmax(125px, .8fr));
  gap: 8px;
}
.reservation-filters .btn {
  min-height: 40px;
  padding: 8px 12px;
}
.reservation-table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
}
.reservation-table {
  width: 100%;
  min-width: 1060px;
  table-layout: fixed;
}
.reservation-table th,
.reservation-table td {
  padding: 7px 6px;
  font-size: 12px;
  line-height: 1.28;
  overflow-wrap: anywhere;
}
.reservation-table th { font-size: 11px; }
.reservation-table .help { font-size: 10px; line-height: 1.25; }
.reservation-table .badge { padding: 5px 7px; font-size: 10px; }
.reservation-table .btn-small { padding: 6px 8px; font-size: 10px; min-height: 30px; }
.reservation-table .row-actions { gap: 4px; }
.reservation-table th:nth-child(1), .reservation-table td:nth-child(1) { width: 8%; }
.reservation-table th:nth-child(2), .reservation-table td:nth-child(2) { width: 13%; }
.reservation-table th:nth-child(3), .reservation-table td:nth-child(3) { width: 5%; }
.reservation-table th:nth-child(4), .reservation-table td:nth-child(4) { width: 9%; min-width: 0; }
.reservation-table th:nth-child(5), .reservation-table td:nth-child(5) { width: 15%; }
.reservation-table th:nth-child(6), .reservation-table td:nth-child(6) { width: 8%; }
.reservation-table th:nth-child(7), .reservation-table td:nth-child(7) { width: 11%; min-width: 0; }
.reservation-table th:nth-child(8), .reservation-table td:nth-child(8) { width: 4%; text-align: center; }
.reservation-table th:nth-child(9), .reservation-table td:nth-child(9) { width: 8%; }
.reservation-table th:nth-child(10), .reservation-table td:nth-child(10) { width: 9%; }
.reservation-table th:nth-child(11), .reservation-table td:nth-child(11) { width: 10%; }

/* 상세 통계: 고정 레이아웃과 좁은 간격으로 카드 밖 이탈 방지 */
.stats-table-wrap,
.venue-stats-table { width: 100%; max-width: 100%; }
.stats-table,
.venue-stats-table {
  width: 100%;
  min-width: 0;
  table-layout: fixed;
}
.stats-table th,
.stats-table td,
.venue-stats-table th,
.venue-stats-table td {
  padding: 8px 6px;
  font-size: 12px;
  line-height: 1.25;
  text-align: center;
  overflow-wrap: anywhere;
}
.stats-table th:first-child,
.stats-table td:first-child,
.venue-stats-table th:first-child,
.venue-stats-table td:first-child {
  width: 24%;
  min-width: 0;
  text-align: left;
}
.stats-table th:not(:first-child),
.stats-table td:not(:first-child) { width: 10.85%; }
.venue-stats-table th:not(:first-child),
.venue-stats-table td:not(:first-child) { width: 10.85%; }
.admin-panel .grid-2 { gap: 12px; }
.admin-panel .chart-row {
  grid-template-columns: minmax(120px, 1.15fr) minmax(100px, 1fr) 74px;
  gap: 8px;
}
.admin-panel .chart-name,
.admin-panel .chart-value { font-size: 12px; }

@media (max-width: 1180px) {
  .admin-layout { grid-template-columns: 190px minmax(0, 1fr); gap: 12px; }
  .reservation-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .reservation-table { min-width: 980px; }
  .admin-panel .grid-2 { grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
  .admin-layout { grid-template-columns: 1fr; }
  .reservation-filters { grid-template-columns: 1fr; }
  .reservation-table { min-width: 920px; }
  .stats-table,
  .venue-stats-table { min-width: 680px; }
  .stats-table-wrap,
  .venue-stats-table { overflow-x: auto; }
}

/* v20: 신청자 명단 초밀도 정렬 + 상태/참석 통합 */
.roster-link {
  appearance: none;
  border: 0;
  padding: 0;
  margin: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: rgba(179,63,47,.35);
  text-underline-offset: 3px;
}
.roster-link:hover { color: var(--accent); }
.reservation-table { min-width: 930px; }
.reservation-table th,
.reservation-table td {
  padding: 4px 4px;
  font-size: 11px;
  line-height: 1.18;
  vertical-align: middle;
}
.reservation-table th { font-size: 10px; }
.reservation-table .help { font-size: 9px; line-height: 1.12; }
.reservation-table .badge { padding: 3px 6px; font-size: 9px; }
.reservation-table .btn-small { padding: 4px 6px; font-size: 9px; min-height: 25px; border-radius: 10px; }
.reservation-table .row-actions { gap: 3px; }
.reservation-table th:nth-child(1), .reservation-table td:nth-child(1) { width: 8%; }
.reservation-table th:nth-child(2), .reservation-table td:nth-child(2) { width: 14%; }
.reservation-table th:nth-child(3), .reservation-table td:nth-child(3) { width: 9%; }
.reservation-table th:nth-child(4), .reservation-table td:nth-child(4) { width: 15%; }
.reservation-table th:nth-child(5), .reservation-table td:nth-child(5) { width: 8%; }
.reservation-table th:nth-child(6), .reservation-table td:nth-child(6) { width: 11%; }
.reservation-table th:nth-child(7), .reservation-table td:nth-child(7) { width: 4%; text-align:center; }
.reservation-table th:nth-child(8), .reservation-table td:nth-child(8) { width: 9%; }
.reservation-table th:nth-child(9), .reservation-table td:nth-child(9) { width: 9%; }
.reservation-table th:nth-child(10), .reservation-table td:nth-child(10) { width: 13%; }
.status-attendance-stack { display: grid; gap: 3px; justify-items: stretch; }
.status-attendance-stack .badge { width: 100%; text-align: center; }
.attendance-toggle {
  border: 1px solid rgba(58,41,27,.18);
  border-radius: 999px;
  padding: 4px 5px;
  background: #f5ead8;
  color: #8a5200;
  font: inherit;
  font-size: 9px;
  font-weight: 800;
  cursor: pointer;
  white-space: nowrap;
}
.attendance-toggle.is-attended { background: #e5f0e7; color: #24784f; }
.attendance-toggle:disabled { opacity: .45; cursor: not-allowed; }
#rosterModal .modal { width: min(1180px, calc(100vw - 24px)); }
#rosterModal .modal-body { padding: 12px; }

@media (max-width: 1180px) {
  .reservation-table { min-width: 880px; }
}
@media (max-width: 760px) {
  .reservation-table { min-width: 840px; }
}


/* v21: 상태·참석 전용 열 제거, 신청자 이름 옆 상태 색인 */
.reservation-table { min-width: 850px; }
.reservation-table th:nth-child(1), .reservation-table td:nth-child(1) { width: 9%; }
.reservation-table th:nth-child(2), .reservation-table td:nth-child(2) { width: 16%; }
.reservation-table th:nth-child(3), .reservation-table td:nth-child(3) { width: 20%; }
.reservation-table th:nth-child(4), .reservation-table td:nth-child(4) { width: 9%; }
.reservation-table th:nth-child(5), .reservation-table td:nth-child(5) { width: 12%; }
.reservation-table th:nth-child(6), .reservation-table td:nth-child(6) { width: 5%; text-align:center; }
.reservation-table th:nth-child(7), .reservation-table td:nth-child(7) { width: 10%; }
.reservation-table th:nth-child(8), .reservation-table td:nth-child(8) { width: 8%; }
.reservation-table th:nth-child(9), .reservation-table td:nth-child(9) { width: 11%; }
.applicant-name-line { display:flex; align-items:center; gap:5px; flex-wrap:wrap; margin-bottom:2px; }
.applicant-name-line strong { line-height:1.1; }
.status-index { display:inline-flex; align-items:center; min-height:18px; padding:2px 5px !important; font-size:8px !important; line-height:1; white-space:nowrap; }
.compact-attendance { display:inline-flex; width:auto; margin-top:3px; padding:2px 6px; min-height:20px; font-size:8px; }
.print-attendance-text { display:block; margin-top:2px; font-size:8pt; }
@media (max-width: 1180px) { .reservation-table { min-width: 800px; } }
@media (max-width: 760px) { .reservation-table { min-width: 760px; } }


/* v23: 모바일 신청 카드 2열, 전체 영화 즉시 노출, 모바일 후원자 사전예약 카드 숨김 */
@media (max-width: 640px) {
  .opening-media-grid {
    grid-template-columns: 1fr;
  }
  .opening-media-grid > .opening-ticket-card {
    display: none;
  }
  .section .screening-grid,
  #screeningList.screening-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }
  .compact-screening-card {
    min-width: 0;
    border-radius: 14px;
  }
  .compact-screening-card .screening-top {
    padding: 8px 8px 7px;
  }
  .compact-screening-card .compact-badges {
    gap: 3px;
    margin-bottom: 6px;
  }
  .compact-screening-card .badge {
    padding: 3px 5px;
    font-size: 8px;
    line-height: 1.15;
  }
  .compact-screening-card .screening-title {
    font-size: 14px;
    line-height: 1.22;
  }
  .compact-screening-card .screening-meta {
    margin-top: 4px;
    font-size: 10px;
    line-height: 1.35;
  }
  .compact-screening-body {
    padding: 6px 7px 7px;
  }
  .screening-card-actions.compact-actions {
    gap: 4px;
  }
  .compact-book-btn {
    min-height: 32px;
    padding: 6px 7px;
    border-radius: 10px;
    font-size: 10px;
  }
  .compact-staff-btn {
    min-height: 24px;
    padding: 3px 4px !important;
    border-radius: 7px !important;
    font-size: 7px !important;
    white-space: nowrap;
  }
}

/* v24: 개막식 사전신청과 후원 신청 분리 */
.donation-page-hero {
  padding: clamp(28px, 5vw, 64px);
  border-radius: 32px;
  background: linear-gradient(135deg, #211d19, #49392f);
  color: #fff;
  margin-bottom: 22px;
}
.donation-page-hero h1 { margin: 10px 0 18px; font-size: clamp(34px, 6vw, 64px); letter-spacing: -.06em; }
.donation-story { max-width: 920px; font-size: clamp(16px, 2vw, 21px); line-height: 1.85; color: #f8eee6; }
.donation-form-card { max-width: 900px; margin: 0 auto; }
.donation-form { margin-top: 16px; }
.donation-agreement { display: flex; gap: 10px; flex-direction: column; padding: 16px; border-radius: 18px; background: #f4eee7; color: var(--muted); line-height: 1.55; }
.donation-agreement strong { color: var(--ink); }
.donation-result { padding: 20px; border-radius: 20px; background: #edf6ee; }
@media (max-width: 720px) {
  .donation-page-hero { border-radius: 22px; padding: 25px 20px; }
  .donation-story { font-size: 15px; line-height: 1.72; }
}

/* v25 donation transfer */
.transfer-hero p { max-width: 760px; }
.donation-transfer-card { max-width: 760px; margin: 20px auto 48px; }
.transfer-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-bottom:16px; }
.transfer-summary > div, .bank-account-box > div { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:14px 16px; border:1px solid var(--line); border-radius:16px; background:var(--surface-2); }
.transfer-summary span, .bank-account-box span { color:var(--muted); font-size:.9rem; }
.transfer-summary strong { font-size:1.25rem; }
.bank-account-box { display:grid; gap:10px; padding:16px; border:1px solid var(--line); border-radius:20px; background:#fff; }
.bank-account-box strong { text-align:right; word-break:break-all; }
.bank-account-box.is-placeholder { opacity:.75; }
.transfer-actions { margin-top:16px; }
.transfer-help { margin-top:18px; padding:16px; border-radius:18px; background:var(--surface-2); }
.transfer-help p { margin:6px 0 0; color:var(--muted); }
.notice-warn { margin-top:16px; padding:14px 16px; border-radius:16px; background:#fff3df; color:#785117; }
@media (max-width: 640px) { .transfer-summary { grid-template-columns:1fr; } .bank-account-box > div { align-items:flex-start; } }


/* v27: 개막식 카드 안 후원 안내 */
.opening-donation-mini {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  margin-top:2px; padding:14px; border:1px solid var(--line); border-radius:18px;
  background:linear-gradient(135deg,#fff6ef,#f3e8df);
}
.opening-donation-mini > div { min-width:0; display:grid; gap:3px; }
.opening-donation-kicker { color:#9c3024; font-size:11px; font-weight:900; }
.opening-donation-mini strong { font-size:15px; line-height:1.3; letter-spacing:-.03em; }
.opening-donation-mini p { margin:0 !important; font-size:11px; line-height:1.4 !important; }
.opening-donation-btn { flex:0 0 auto; min-height:38px; padding:8px 13px; white-space:nowrap; }
@media (max-width:640px) {
  .opening-media-grid > .opening-ticket-card { display:grid; }
  .opening-donation-mini { align-items:stretch; flex-direction:column; padding:12px; }
  .opening-donation-btn { width:100%; }
}


/* v29: 신청자 관리 버튼 정리 및 참석 인원 제한 해제 */
.reservation-manage-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px !important;
  width: 100%;
  min-width: 92px;
}
.reservation-manage-grid .btn {
  width: 100%;
  min-width: 0;
  padding: 5px 4px;
  line-height: 1;
  white-space: nowrap;
}
.reservation-manage-grid .attendance-manage.is-attended {
  background: #e5f0e7;
  border-color: #b8d6c0;
  color: #24784f;
}


/* v33: 관리자·스태프 신청자 명단 신청자/인원 열 초밀도 조정 */
.reservation-table {
  min-width: 800px;
  table-layout: fixed;
}
.reservation-table th,
.reservation-table td {
  padding: 5px 3px;
  font-size: 12px;
  line-height: 1.22;
}
.reservation-table th {
  padding-top: 5px;
  padding-bottom: 5px;
  font-size: 11px;
}
.reservation-table .help {
  font-size: 10.5px;
  line-height: 1.22;
}
.reservation-table th:nth-child(1), .reservation-table td:nth-child(1) { width: 9%; }
.reservation-table th:nth-child(2), .reservation-table td:nth-child(2) { width: 17%; }
.reservation-table th:nth-child(3), .reservation-table td:nth-child(3) { width: 17%; padding-left: 4px; padding-right: 2px; }
.reservation-table th:nth-child(4), .reservation-table td:nth-child(4) { width: 9%; }
.reservation-table th:nth-child(5), .reservation-table td:nth-child(5) { width: 11%; }
.reservation-table th:nth-child(6), .reservation-table td:nth-child(6) { width: 4%; padding-left: 1px; padding-right: 1px; text-align: center; white-space: nowrap; }
.reservation-table th:nth-child(7), .reservation-table td:nth-child(7) { width: 10%; }
.reservation-table th:nth-child(8), .reservation-table td:nth-child(8) { width: 8%; }
.reservation-table th:nth-child(9), .reservation-table td:nth-child(9) { width: 15%; }
.applicant-cell { min-width: 0; }
.applicant-name-line {
  gap: 4px;
  margin-bottom: 1px;
  flex-wrap: nowrap;
}
.applicant-name-line strong {
  font-size: 13px;
  white-space: nowrap;
}
.applicant-phone,
.applicant-email {
  display: block;
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.applicant-email {
  margin-top: 1px;
  font-size: 9.5px !important;
}
.status-index {
  flex: 0 0 auto;
  min-height: 17px;
  padding: 2px 4px !important;
  font-size: 8px !important;
}
.reservation-table td:nth-child(6) {
  font-size: 13px;
  font-weight: 800;
}
.reservation-table .reservation-manage-grid {
  min-width: 84px;
  gap: 3px !important;
}
.reservation-table .reservation-manage-grid .btn {
  padding: 4px 3px;
  min-height: 24px;
  font-size: 9px;
}
#rosterModal .reservation-table-wrap { margin-left: 0; margin-right: 0; }
@media (max-width: 1180px) {
  .reservation-table { min-width: 780px; }
}
@media (max-width: 760px) {
  .reservation-table { min-width: 750px; }
  .reservation-table th,
  .reservation-table td { font-size: 11.5px; }
  .applicant-name-line strong { font-size: 12.5px; }
}


/* v35: 신청자 명단 열 간격 추가 압축 */
.reservation-table { min-width: 720px; table-layout: fixed; }
.reservation-table th,
.reservation-table td { padding-left: 2px; padding-right: 2px; }
.reservation-table th:nth-child(1), .reservation-table td:nth-child(1) { width: 9%; }
.reservation-table th:nth-child(2), .reservation-table td:nth-child(2) { width: 13%; }
.reservation-table th:nth-child(3), .reservation-table td:nth-child(3) { width: 12%; padding-left: 2px; padding-right: 1px; }
.reservation-table th:nth-child(4), .reservation-table td:nth-child(4) { width: 8%; padding-left: 1px; padding-right: 1px; }
.reservation-table th:nth-child(5), .reservation-table td:nth-child(5) { width: 8%; padding-left: 1px; padding-right: 1px; }
.reservation-table th:nth-child(6), .reservation-table td:nth-child(6) { width: 4%; padding-left: 0; padding-right: 0; text-align: center; }
.reservation-table th:nth-child(7), .reservation-table td:nth-child(7) { width: 10%; }
.reservation-table th:nth-child(8), .reservation-table td:nth-child(8) { width: 12%; }
.reservation-table th:nth-child(9), .reservation-table td:nth-child(9) { width: 24%; }
.reservation-table .reservation-manage-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); min-width: 132px; }
.reservation-table .reservation-manage-grid .btn { font-size: 9px; padding: 4px 2px; }
@media (max-width: 1180px) { .reservation-table { min-width: 700px; } }
@media (max-width: 760px) { .reservation-table { min-width: 680px; } }


/* v36: main menu cleanup - compact STAFF / ADMIN links */
.nav .utility-link {
  padding: 4px 7px !important;
  min-height: 0;
  border: 0 !important;
  background: transparent !important;
  color: var(--muted) !important;
  font-size: 10px !important;
  line-height: 1;
  font-weight: 800 !important;
  letter-spacing: .08em;
  box-shadow: none !important;
  opacity: .82;
}
.nav .utility-link:hover { opacity: 1; transform: none; }
.nav .primary-link.utility-link { margin-left: 2px; }
@media (max-width: 640px) {
  .nav .staff-link.utility-link { display: inline-flex; }
  .nav .primary-link.utility-link { margin-left: 0; }
}

/* v37: STAFF status and password management */
.staff-admin-card .section-title { margin-bottom: 1rem; }
.staff-admin-table th:nth-child(1), .staff-admin-table td:nth-child(1) { width: 42%; }
.staff-admin-table th:nth-child(2), .staff-admin-table td:nth-child(2) { width: 18%; white-space: nowrap; }
.staff-admin-table th:nth-child(3), .staff-admin-table td:nth-child(3) { width: 40%; }
.staff-pin-admin-row { display: flex; gap: .45rem; align-items: center; flex-wrap: wrap; }
.staff-pin-admin-row .input { max-width: 180px; height: 36px; padding: .45rem .6rem; }
.badge.muted { background: rgba(120, 107, 92, .12); color: var(--muted); border-color: rgba(120, 107, 92, .22); }
@media (max-width: 720px) {
  .staff-pin-admin-row { align-items: stretch; }
  .staff-pin-admin-row .input { max-width: none; flex: 1 1 100%; }
}

/* v38: 메인 진행상황 그래프와 후원 안내 */
.festival-progress-card {
  min-height: 100%;
  gap: 16px;
  background: linear-gradient(145deg, rgba(255,250,242,.98), rgba(247,238,225,.96));
}
.d-day-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 92px;
  padding: 10px 14px;
  border-radius: 999px;
  background: var(--ink);
  color: var(--paper);
  font-weight: 950;
  letter-spacing: -0.04em;
  box-shadow: 0 12px 24px rgba(58,41,27,.16);
}
.festival-progress-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.festival-progress-metric {
  padding: 14px;
  border-radius: 18px;
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(111,100,88,.15);
}
.festival-progress-metric span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}
.festival-progress-metric strong {
  display: block;
  margin-top: 4px;
  font-size: clamp(28px, 4.3vw, 44px);
  line-height: 1;
  font-weight: 950;
  letter-spacing: -0.07em;
}
.festival-progress-metric small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 750;
}
.festival-progress-chart {
  display: grid;
  gap: 10px;
  padding: 4px 0;
}
.festival-progress-row {
  display: grid;
  grid-template-columns: minmax(82px, 1fr) minmax(92px, 1.35fr) minmax(62px, auto);
  gap: 9px;
  align-items: center;
}
.festival-progress-name {
  font-size: 12px;
  font-weight: 900;
  line-height: 1.25;
  color: var(--ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.festival-progress-track {
  height: 16px;
  border-radius: 999px;
  background: rgba(58,41,27,.12);
  overflow: hidden;
  box-shadow: inset 0 1px 2px rgba(0,0,0,.08);
}
.festival-progress-track span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--accent), var(--accent-2));
}
.festival-progress-count {
  text-align: right;
  white-space: nowrap;
}
.festival-progress-count strong {
  font-size: 18px;
  font-weight: 950;
  letter-spacing: -0.04em;
}
.festival-progress-count small {
  display: block;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}
.progress-donation-callout {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 12px;
  align-items: center;
  margin-top: auto;
  padding: 14px;
  border-radius: 20px;
  background: rgba(190,65,49,.1);
  border: 1px solid rgba(190,65,49,.18);
}
.progress-donation-callout strong {
  display: block;
  font-size: 15px;
  font-weight: 950;
  letter-spacing: -0.04em;
}
.progress-donation-callout p {
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}
.progress-donation-callout .btn {
  white-space: nowrap;
}
@media (max-width: 980px) {
  .festival-progress-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .festival-progress-metrics { grid-template-columns: 1fr; }
  .festival-progress-row { grid-template-columns: 1fr; gap: 5px; }
  .festival-progress-count { text-align: left; }
  .progress-donation-callout { grid-template-columns: 1fr; }
}

/* v42: 메인 포스터 축소 및 소개영상 카드 정리 */
.opening-home-hero {
  grid-template-columns: 1fr !important;
}
.opening-home-copy {
  max-width: 980px;
}
.opening-video-poster-card {
  padding: 14px;
}
.opening-video-poster-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.7fr) minmax(150px, .55fr);
  gap: 14px;
  align-items: stretch;
}
.opening-video-poster-grid .video-frame,
.opening-video-poster-grid .video-frame-autoplay {
  min-height: clamp(190px, 26vw, 330px);
  height: 100%;
}
.opening-poster-mini {
  position: relative;
  margin: 0;
  min-height: clamp(190px, 26vw, 330px);
  border-radius: 20px;
  overflow: hidden;
  background: #1f1b16;
  box-shadow: inset 0 0 0 1px rgba(31,27,22,.09);
}
.opening-poster-mini img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.opening-video-only {
  padding: 14px;
}
.opening-video-only .video-frame,
.opening-video-only .video-frame-autoplay {
  margin: 0;
}
@media (max-width: 820px) {
  .opening-video-poster-grid {
    grid-template-columns: 1fr;
  }
  .opening-poster-mini {
    max-height: 420px;
  }
}

/* v43: 메인 원래 포스터 영역 안에서 소개영상 재생 + 진행순서 정리 */
.opening-home-hero {
  grid-template-columns: minmax(0, 1.02fr) minmax(320px, .82fr) !important;
  align-items: stretch;
}
.opening-home-copy {
  max-width: none;
}
.opening-poster-video {
  position: relative;
  display: grid;
  place-items: center;
  min-height: clamp(460px, 48vw, 720px);
  margin: 0;
  border-radius: 30px;
  overflow: hidden;
  background: #120d0b;
  border: 1px solid rgba(255,255,255,.18);
  box-shadow: 0 28px 70px rgba(0,0,0,.34);
  isolation: isolate;
}
.opening-poster-video-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transform: scale(1.04);
  filter: saturate(.9) contrast(1.04) brightness(.86);
  z-index: 0;
}
.opening-poster-video-shade {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    radial-gradient(circle at 50% 42%, rgba(0,0,0,.05), rgba(0,0,0,.38) 72%),
    linear-gradient(180deg, rgba(0,0,0,.08), rgba(0,0,0,.46));
  pointer-events: none;
}
.opening-poster-video-player {
  position: relative;
  z-index: 2;
  width: min(86%, 560px);
  aspect-ratio: 16 / 9;
  border-radius: 22px;
  overflow: hidden;
  background: #000;
  border: 2px solid rgba(255,250,242,.78);
  box-shadow:
    0 24px 70px rgba(0,0,0,.5),
    0 0 0 999px rgba(15,12,10,.12);
}
.opening-poster-video-player iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: #000;
}
.opening-poster-video figcaption {
  position: absolute;
  z-index: 3;
  left: 18px;
  right: 18px;
  bottom: 18px;
  padding: 11px 14px;
  border-radius: 16px;
  background: rgba(0,0,0,.55);
  color: #fffaf2;
  font-size: 13px;
  font-weight: 950;
  letter-spacing: -0.035em;
  text-align: center;
  backdrop-filter: blur(10px);
}
.opening-progress-section {
  margin: 18px 0;
}
.opening-progress-section .festival-progress-card {
  max-width: none;
}
@media (max-width: 1100px) {
  .opening-home-hero {
    grid-template-columns: 1fr !important;
  }
  .opening-poster-video {
    min-height: clamp(420px, 72vw, 680px);
  }
  .opening-poster-video-player {
    width: min(88%, 640px);
  }
}
@media (max-width: 640px) {
  .opening-poster-video {
    min-height: 430px;
    border-radius: 22px;
  }
  .opening-poster-video-player {
    width: 90%;
    border-radius: 16px;
  }
  .opening-poster-video figcaption {
    left: 12px;
    right: 12px;
    bottom: 12px;
    font-size: 12px;
  }
}

/* v44: 포스터 안 영상 위치를 위쪽으로 이동 + 진행상황 2단 구성 */
.opening-poster-video {
  place-items: start center;
  padding: clamp(22px, 5.2vw, 74px) clamp(14px, 3vw, 30px) clamp(62px, 7vw, 92px);
  box-sizing: border-box;
}
.opening-poster-video-player {
  width: min(82%, 560px);
  margin-top: 0;
}
@media (max-width: 640px) {
  .opening-poster-video {
    padding-top: 24px;
    padding-bottom: 62px;
  }
  .opening-poster-video-player {
    width: 92%;
  }
}

.festival-progress-split {
  display: grid;
  grid-template-columns: minmax(0, .96fr) minmax(0, 1.04fr);
  gap: 16px;
  align-items: stretch;
}
.festival-progress-donation-panel,
.festival-progress-chart-panel {
  min-width: 0;
  border-radius: 24px;
  border: 1px solid rgba(111,100,88,.14);
  background: rgba(255,255,255,.66);
  padding: clamp(16px, 2.2vw, 22px);
}
.festival-progress-donation-panel {
  display: flex;
  flex-direction: column;
  gap: 13px;
  background:
    radial-gradient(circle at 0% 0%, rgba(190,65,49,.13), transparent 34%),
    rgba(255,255,255,.7);
}
.donation-panel-kicker {
  width: fit-content;
  padding: 7px 10px;
  border-radius: 999px;
  background: rgba(190,65,49,.11);
  color: var(--danger);
  font-size: 12px;
  font-weight: 950;
  letter-spacing: -0.035em;
}
.festival-progress-donation-panel h3 {
  margin: 0;
  font-size: clamp(22px, 3vw, 34px);
  line-height: 1.08;
  letter-spacing: -0.075em;
}
.festival-progress-donation-panel p {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.58;
  font-weight: 700;
}
.festival-progress-metrics.compact {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: auto;
}
.festival-progress-metrics.compact .festival-progress-metric {
  padding: 12px;
}
.festival-progress-metrics.compact .festival-progress-metric strong {
  font-size: clamp(25px, 3.2vw, 38px);
}
.donation-panel-btn {
  align-self: flex-start;
  margin-top: 2px;
}
.festival-progress-chart-panel {
  display: flex;
  flex-direction: column;
  gap: 13px;
}
.chart-panel-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 10px;
  border-bottom: 1px solid rgba(111,100,88,.13);
  padding-bottom: 10px;
}
.chart-panel-heading strong {
  font-size: 18px;
  font-weight: 950;
  letter-spacing: -0.05em;
}
.chart-panel-heading span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
  white-space: nowrap;
}
.festival-progress-chart-panel .festival-progress-chart {
  gap: 12px;
}
.festival-progress-chart-panel .festival-progress-row {
  grid-template-columns: minmax(130px, .9fr) minmax(140px, 1.35fr) minmax(68px, auto);
}
@media (max-width: 980px) {
  .festival-progress-split {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 720px) {
  .festival-progress-metrics.compact {
    grid-template-columns: 1fr;
  }
  .festival-progress-chart-panel .festival-progress-row {
    grid-template-columns: 1fr;
  }
  .chart-panel-heading {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* v46: 포스터 안 소개영상 위치/크기 재조정 */
.opening-poster-video {
  padding: clamp(10px, 1.8vw, 22px) clamp(10px, 2vw, 24px) clamp(58px, 6vw, 86px) !important;
  align-items: start !important;
}
.opening-poster-video-player {
  width: min(96%, 820px) !important;
  max-width: calc(100% - 4px);
  margin-top: 0 !important;
  border-radius: clamp(14px, 2vw, 22px);
}
@media (max-width: 1100px) {
  .opening-poster-video-player {
    width: 96% !important;
    max-width: 820px;
  }
}
@media (max-width: 640px) {
  .opening-poster-video {
    padding-top: 10px !important;
    padding-left: 8px !important;
    padding-right: 8px !important;
    padding-bottom: 58px !important;
  }
  .opening-poster-video-player {
    width: 98% !important;
    border-radius: 14px;
  }
}

/* v47: 진행상황 제목을 오른쪽 그래프 영역으로 이동하고 설명문 제거 */
.festival-progress-card > .section-title.compact-title {
  display: none !important;
}
.progress-heading-right {
  align-items: center;
}
.progress-heading-right > div {
  min-width: 0;
}
.progress-heading-right h2 {
  margin: 0 0 5px;
  font-size: clamp(22px, 2.8vw, 32px);
  line-height: 1.05;
  font-weight: 950;
  letter-spacing: -0.075em;
}
.progress-heading-right strong {
  display: block;
  font-size: 15px;
  font-weight: 950;
  letter-spacing: -0.045em;
}
.progress-heading-right .d-day-badge {
  flex: 0 0 auto;
}
@media (max-width: 720px) {
  .progress-heading-right {
    align-items: flex-start;
  }
}

/* v50: 신청자 명단 문자 일괄발송과 날짜 필터 */
.bulk-sms-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  margin: 14px 0 16px;
  padding: 16px;
  border: 1px solid rgba(184, 62, 47, 0.22);
  border-radius: 20px;
  background: rgba(184, 62, 47, 0.08);
}
.bulk-sms-panel p {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.45;
}
.bulk-sms-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}
.bulk-sms-panel .help {
  grid-column: 1 / -1;
  font-weight: 800;
  color: var(--brand-red);
}
.sms-check-col {
  width: 42px !important;
  min-width: 42px !important;
  text-align: center !important;
}
.reservation-sms-check,
.sms-check-col input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--brand-red);
}
@media (max-width: 760px) {
  .bulk-sms-panel {
    grid-template-columns: 1fr;
  }
  .bulk-sms-actions {
    justify-content: flex-start;
  }
}

/* v51: 신청자 목록 클릭형 관리 패널 */
.reservation-click-row {
  cursor: pointer;
  transition: background 0.16s ease, box-shadow 0.16s ease;
}
.reservation-click-row:hover,
.reservation-click-row:focus-visible {
  background: rgba(184, 62, 47, 0.055);
  outline: none;
}
.reservation-click-row.is-selected {
  background: rgba(184, 62, 47, 0.09);
  box-shadow: inset 4px 0 0 var(--brand-red);
}
.reservation-manage-compact {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: center;
}
.reservation-action-row td {
  padding: 0 12px 12px !important;
  background: rgba(184, 62, 47, 0.045);
}
.reservation-action-panel {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 14px;
  border: 1px solid rgba(184, 62, 47, 0.18);
  border-radius: 18px;
  background: rgba(255, 251, 246, 0.95);
}
.reservation-action-panel p {
  margin: 5px 0 0;
}
.reservation-action-buttons {
  justify-content: flex-end;
  gap: 7px;
}
@media (max-width: 820px) {
  .reservation-action-panel {
    grid-template-columns: 1fr;
  }
  .reservation-action-buttons {
    justify-content: flex-start;
  }
}

/* v54: 신청자 명단 관리 칸 축소 + 상영관/영화 글자 강조 */
.inline-admin-pin-form { display: grid; gap: 8px; }
.admin-pin-actions { align-items: stretch; }
.admin-pin-actions .input { max-width: 240px; }
.reservation-table {
  min-width: 790px !important;
  table-layout: fixed !important;
}
.reservation-table th,
.reservation-table td {
  padding: 4px 5px !important;
}
.reservation-table th:nth-child(1), .reservation-table td:nth-child(1) { width: 13% !important; }
.reservation-table th:nth-child(2), .reservation-table td:nth-child(2) { width: 20% !important; }
.reservation-table th:nth-child(3), .reservation-table td:nth-child(3) { width: 17% !important; }
.reservation-table th:nth-child(4), .reservation-table td:nth-child(4) { width: 10% !important; }
.reservation-table th:nth-child(5), .reservation-table td:nth-child(5) { width: 12% !important; }
.reservation-table th:nth-child(6), .reservation-table td:nth-child(6) { width: 5% !important; text-align: center; }
.reservation-table th:nth-child(7), .reservation-table td:nth-child(7) { width: 9% !important; }
.reservation-table th:nth-child(8), .reservation-table td:nth-child(8) { width: 7% !important; }
.reservation-table th:nth-child(9), .reservation-table td:nth-child(9) { width: 7% !important; }
.reservation-table:not(.reservation-table-sms) td:nth-child(1) strong,
.reservation-table:not(.reservation-table-sms) td:nth-child(2) strong {
  font-size: 12.5px !important;
  line-height: 1.2;
}
.reservation-table-sms th:nth-child(1), .reservation-table-sms td:nth-child(1) { width: 4% !important; }
.reservation-table-sms th:nth-child(2), .reservation-table-sms td:nth-child(2) { width: 12% !important; }
.reservation-table-sms th:nth-child(3), .reservation-table-sms td:nth-child(3) { width: 19% !important; }
.reservation-table-sms th:nth-child(4), .reservation-table-sms td:nth-child(4) { width: 16% !important; }
.reservation-table-sms th:nth-child(5), .reservation-table-sms td:nth-child(5) { width: 9% !important; }
.reservation-table-sms th:nth-child(6), .reservation-table-sms td:nth-child(6) { width: 12% !important; }
.reservation-table-sms th:nth-child(7), .reservation-table-sms td:nth-child(7) { width: 5% !important; text-align: center; }
.reservation-table-sms th:nth-child(8), .reservation-table-sms td:nth-child(8) { width: 8% !important; }
.reservation-table-sms th:nth-child(9), .reservation-table-sms td:nth-child(9) { width: 7% !important; }
.reservation-table-sms th:nth-child(10), .reservation-table-sms td:nth-child(10) { width: 8% !important; }
.reservation-table-sms td:nth-child(2) strong,
.reservation-table-sms td:nth-child(3) strong {
  font-size: 12.5px !important;
  line-height: 1.2;
}
.reservation-table .reservation-manage-compact {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 3px !important;
  justify-items: stretch;
}
.reservation-table .reservation-manage-compact .btn-small {
  width: 100%;
  min-height: 23px !important;
  padding: 3px 4px !important;
  font-size: 9px !important;
}
@media (max-width: 760px) {
  .reservation-table { min-width: 760px !important; }
  .reservation-table th,
  .reservation-table td { font-size: 10px !important; }
}

/* v55 Google Drive auto sync controls */
.drive-sync-status {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 10px 0 12px;
}
.badge.badge-ok {
  background: rgba(36, 120, 79, .12);
  color: var(--ok);
  border-color: rgba(36, 120, 79, .25);
}

.drive-sync-form {
  display: grid;
  gap: 10px;
  margin: 12px 0;
}
.drive-sync-form .input {
  width: 100%;
}

/* v67: mobile admin hard navigation and compact 3-column controls */
.admin-tab {
  cursor: pointer;
  font: inherit;
  text-decoration: none;
  display: flex;
  align-items: center;
  min-height: 46px;
}
.admin-backup-emergency-card {
  border: 2px solid rgba(179,63,47,.28);
  background: linear-gradient(135deg, rgba(179,63,47,.08), rgba(255,250,242,.96));
}
.admin-backup-direct {
  text-decoration: none;
}

@media (max-width: 760px) {
  .section-title > .cta-row {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
  }
  .section-title > .cta-row .btn,
  .section-title > .cta-row a.btn {
    width: 100% !important;
    min-width: 0;
    min-height: 44px;
    padding: 9px 6px;
    font-size: 13px;
    line-height: 1.2;
    white-space: normal;
    text-align: center;
    justify-content: center;
  }

  .admin-sidebar {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px !important;
    width: 100%;
  }
  .admin-tab {
    min-height: 48px;
    padding: 9px 7px !important;
    border-radius: 15px;
    font-size: 13px;
    line-height: 1.18;
    text-align: center;
    justify-content: center;
    word-break: keep-all;
  }

  .reservation-filters {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px !important;
    align-items: stretch;
  }
  .reservation-filters .input,
  .reservation-filters .select,
  .reservation-filters .btn {
    width: 100% !important;
    min-width: 0;
    height: 44px;
    min-height: 44px;
    padding: 8px 7px;
    border-radius: 14px;
    font-size: 13px;
    line-height: 1.15;
  }
  .reservation-filters .btn { white-space: normal; }

  .opening-summary-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px !important;
  }
  .opening-summary-grid .metric-card {
    padding: 11px 8px;
    border-radius: 16px;
  }
  .opening-summary-grid .metric-label,
  .opening-summary-grid .metric-note {
    font-size: 11px;
    line-height: 1.2;
  }
  .opening-summary-grid .metric-value {
    font-size: 24px;
    margin-top: 4px;
  }

  .staff-admin-table-wrap { overflow-x: hidden; }
  .staff-admin-table {
    min-width: 0 !important;
    width: 100% !important;
    table-layout: fixed !important;
  }
  .staff-admin-table th,
  .staff-admin-table td {
    padding: 7px 5px !important;
    font-size: 11px !important;
    line-height: 1.22 !important;
    overflow-wrap: anywhere;
    word-break: keep-all;
  }
  .staff-admin-table th:nth-child(1), .staff-admin-table td:nth-child(1) { width: 39% !important; }
  .staff-admin-table th:nth-child(2), .staff-admin-table td:nth-child(2) { width: 23% !important; white-space: normal !important; }
  .staff-admin-table th:nth-child(3), .staff-admin-table td:nth-child(3) { width: 38% !important; }
  .staff-pin-admin-row {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 5px;
    align-items: stretch;
  }
  .staff-pin-admin-row .input {
    grid-column: 1 / -1;
    max-width: none !important;
    width: 100% !important;
    height: 34px;
    padding: 5px 6px;
    font-size: 11px;
  }
  .staff-pin-admin-row .btn {
    width: 100% !important;
    min-width: 0;
    min-height: 32px;
    padding: 5px 4px;
    font-size: 10px;
  }
}

@media (max-width: 390px) {
  .admin-tab,
  .reservation-filters .input,
  .reservation-filters .select,
  .reservation-filters .btn,
  .section-title > .cta-row .btn,
  .section-title > .cta-row a.btn {
    font-size: 12px;
    padding-left: 4px;
    padding-right: 4px;
  }
}

/* v68: always-visible backup/sync panel so users do not depend on admin tab navigation */
.admin-backup-fixed-panel {
  border: 2px solid rgba(179,63,47,.32);
  background: linear-gradient(135deg, rgba(179,63,47,.08), rgba(255,250,242,.98));
}
.admin-backup-fixed-title { margin-bottom: 12px; }
.admin-backup-fixed-form { display: grid; gap: 10px; }
.admin-backup-fixed-actions {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
}
.admin-backup-fixed-actions .btn { width: 100%; min-width: 0; white-space: normal; justify-content: center; text-align: center; }
@media (max-width: 760px) {
  .admin-backup-fixed-panel { padding: 14px; }
  .admin-backup-fixed-title { gap: 8px; }
  .admin-backup-fixed-actions {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .admin-backup-fixed-actions .btn {
    min-height: 44px;
    padding: 9px 6px;
    font-size: 12.5px;
    line-height: 1.18;
  }
}


/* v77 Satisfaction survey admin */
.survey-metric-grid { margin-top: 1rem; }
.check-card { display: flex; gap: .75rem; align-items: flex-start; padding: 1rem; border: 1px solid var(--line); border-radius: 16px; background: #fff; }
.check-card input { margin-top: .2rem; }
.check-card span { display: block; color: var(--muted); font-size: .88rem; margin-top: .2rem; }
.check-inline { display: flex; align-items: center; gap: .5rem; padding-top: 1.8rem; }
.survey-question-table input[type="checkbox"] { width: 18px; height: 18px; }
.compact-input { min-width: 64px; max-width: 80px; }
.compact-select { min-width: 96px; }
.survey-question-table td { vertical-align: middle; }
@media (max-width: 720px) {
  .survey-question-table-wrap table { min-width: 760px; }
  .check-inline { padding-top: .5rem; }
}

/* v78: 신청자/스태프 출석체크 간소화 및 티켓/좌석 표시 제거 */
.reservation-table {
  min-width: 700px !important;
  table-layout: fixed !important;
}
.reservation-table th,
.reservation-table td {
  padding: 5px 6px !important;
}
.reservation-table:not(.reservation-table-sms) th:nth-child(1),
.reservation-table:not(.reservation-table-sms) td:nth-child(1) { width: 13% !important; }
.reservation-table:not(.reservation-table-sms) th:nth-child(2),
.reservation-table:not(.reservation-table-sms) td:nth-child(2) { width: 22% !important; }
.reservation-table:not(.reservation-table-sms) th:nth-child(3),
.reservation-table:not(.reservation-table-sms) td:nth-child(3) { width: 19% !important; }
.reservation-table:not(.reservation-table-sms) th:nth-child(4),
.reservation-table:not(.reservation-table-sms) td:nth-child(4) { width: 12% !important; }
.reservation-table:not(.reservation-table-sms) th:nth-child(5),
.reservation-table:not(.reservation-table-sms) td:nth-child(5) { width: 6% !important; text-align: center; }
.reservation-table:not(.reservation-table-sms) th:nth-child(6),
.reservation-table:not(.reservation-table-sms) td:nth-child(6) { width: 10% !important; }
.reservation-table:not(.reservation-table-sms) th:nth-child(7),
.reservation-table:not(.reservation-table-sms) td:nth-child(7) { width: 8% !important; }
.reservation-table:not(.reservation-table-sms) th:nth-child(8),
.reservation-table:not(.reservation-table-sms) td:nth-child(8) { width: 10% !important; }
.reservation-table-sms th:nth-child(1), .reservation-table-sms td:nth-child(1) { width: 4% !important; }
.reservation-table-sms th:nth-child(2), .reservation-table-sms td:nth-child(2) { width: 12% !important; }
.reservation-table-sms th:nth-child(3), .reservation-table-sms td:nth-child(3) { width: 21% !important; }
.reservation-table-sms th:nth-child(4), .reservation-table-sms td:nth-child(4) { width: 18% !important; }
.reservation-table-sms th:nth-child(5), .reservation-table-sms td:nth-child(5) { width: 11% !important; }
.reservation-table-sms th:nth-child(6), .reservation-table-sms td:nth-child(6) { width: 5% !important; text-align: center; }
.reservation-table-sms th:nth-child(7), .reservation-table-sms td:nth-child(7) { width: 9% !important; }
.reservation-table-sms th:nth-child(8), .reservation-table-sms td:nth-child(8) { width: 8% !important; }
.reservation-table-sms th:nth-child(9), .reservation-table-sms td:nth-child(9) { width: 12% !important; }
.status-index.blue {
  background: rgba(49, 90, 139, 0.12);
  color: #315a8b;
  border-color: rgba(49, 90, 139, 0.28);
}
.status-index.warn {
  background: rgba(180, 107, 0, 0.12);
  color: #945900;
  border-color: rgba(180, 107, 0, 0.28);
}
.reservation-table .reservation-manage-compact {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 4px !important;
  justify-items: stretch;
}
.reservation-table .reservation-manage-compact .btn-small {
  width: 100%;
  min-height: 28px !important;
  padding: 4px 3px !important;
  font-size: 10px !important;
}
.reservation-action-panel-buttons-only {
  display: block !important;
  padding: 14px !important;
}
.reservation-action-buttons-large {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px !important;
  justify-content: center !important;
  align-items: stretch;
  width: min(760px, 100%);
  margin: 0 auto;
}
.reservation-action-buttons-large .btn {
  min-height: 46px;
  width: 100%;
  justify-content: center;
  font-size: 14px;
  padding: 10px 8px;
}
@media (max-width: 760px) {
  .reservation-table { min-width: 680px !important; }
  .reservation-action-buttons-large { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px !important; }
  .reservation-action-buttons-large .btn { min-height: 44px; font-size: 13px; }
}

/* v79: 일반 홈 후원 안내 카드 제거 후 히어로 높이 축소 */
.hero .hero-grid > div { max-width: 820px; }
.hero { padding-top: clamp(24px, 4vw, 46px); padding-bottom: clamp(24px, 4vw, 46px); }

/* v81: 모바일 개막작 노출 설정 적용 + ADMIN/STAFF 신청자 명단 모바일 최적화 */
@media (max-width: 760px) {
  .reservation-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    border-radius: 14px;
  }
  .reservation-table {
    min-width: 560px !important;
    table-layout: fixed !important;
  }
  .reservation-table th,
  .reservation-table td {
    padding: 5px 3px !important;
    font-size: 10.5px !important;
    line-height: 1.18 !important;
    vertical-align: middle !important;
  }
  .reservation-table .col-reservation-no,
  .reservation-table .col-created,
  .reservation-table .col-note {
    display: none !important;
  }
  .reservation-table .col-venue { width: 16% !important; }
  .reservation-table .col-screening { width: 25% !important; }
  .reservation-table .col-applicant { width: 23% !important; }
  .reservation-table .col-seats { width: 8% !important; text-align: center !important; }
  .reservation-table .col-manage { width: 28% !important; }
  .reservation-table .col-venue strong,
  .reservation-table .col-screening strong,
  .reservation-table .applicant-name-line strong {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .reservation-table .help,
  .reservation-table .applicant-phone,
  .reservation-table .applicant-email {
    font-size: 9px !important;
    line-height: 1.15 !important;
  }
  .reservation-table .applicant-name-line {
    gap: 3px !important;
    flex-wrap: wrap !important;
    margin-bottom: 1px !important;
  }
  .reservation-table .status-index {
    min-height: 16px !important;
    padding: 2px 4px !important;
    font-size: 8px !important;
  }
  .reservation-table .reservation-manage-compact {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 4px !important;
    width: 100% !important;
  }
  .reservation-table .reservation-manage-compact .btn {
    width: 100% !important;
    min-height: 32px !important;
    padding: 6px 2px !important;
    font-size: 10px !important;
    border-radius: 10px !important;
  }
  .reservation-action-row .reservation-action-buttons-large {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 8px !important;
    justify-content: center !important;
  }
  .reservation-action-row .reservation-action-buttons-large .btn {
    min-height: 42px !important;
    font-size: 13px !important;
    padding: 10px 6px !important;
  }
  .staff-screening-card,
  .admin-panel .card {
    padding-left: 10px;
    padding-right: 10px;
  }
}

@media (max-width: 420px) {
  .reservation-table {
    min-width: 520px !important;
  }
  .reservation-table th,
  .reservation-table td {
    font-size: 10px !important;
  }
  .reservation-table .col-venue { width: 14% !important; }
  .reservation-table .col-screening { width: 24% !important; }
  .reservation-table .col-applicant { width: 24% !important; }
  .reservation-table .col-seats { width: 8% !important; }
  .reservation-table .col-manage { width: 30% !important; }
}

/* v192: 개막 화면 겹침 방지 + 신청자 인구통계 체크형 선택 */
.opening-home-hero {
  grid-template-columns: minmax(0, 1.05fr) minmax(300px, .72fr) !important;
  gap: clamp(20px, 2.6vw, 38px) !important;
  align-items: stretch;
}
.opening-home-copy {
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}
.opening-home-copy h1.opening-title-stack,
.opening-hero-main h1.opening-title-stack {
  width: 100%;
  max-width: 100%;
  font-size: clamp(38px, 4.25vw, 66px) !important;
  line-height: 1.06 !important;
  letter-spacing: -.06em !important;
}
.opening-title-stack .headline-line {
  width: auto !important;
  max-width: 100%;
  white-space: normal !important;
  word-break: keep-all;
  overflow-wrap: break-word;
}
.opening-home-facts {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}
.opening-home-facts div,
.opening-home-facts strong {
  min-width: 0;
  overflow-wrap: anywhere;
}
.opening-poster-video {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

.booking-choice-field {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
.booking-choice-field legend {
  margin: 0 0 8px;
  padding: 0;
  color: var(--ink);
  font-size: 14px;
  font-weight: 900;
}
.booking-choice-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.booking-check-choice {
  position: relative;
  min-width: 0;
  cursor: pointer;
}
.booking-check-choice input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
}
.booking-check-choice span {
  display: flex;
  align-items: center;
  min-height: 48px;
  padding: 9px 11px;
  border: 1.5px solid #d8d3ef;
  border-radius: 11px;
  background: #fff;
  color: #343061;
  font-size: 14px;
  font-weight: 850;
  line-height: 1.25;
  word-break: keep-all;
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
.booking-check-choice span::before {
  content: "";
  flex: 0 0 20px;
  width: 20px;
  height: 20px;
  margin-right: 8px;
  border: 2px solid #aaa3d5;
  border-radius: 5px;
  box-sizing: border-box;
  background: #fff;
  color: #fff;
  text-align: center;
  font-size: 14px;
  line-height: 16px;
}
.booking-check-choice input:checked + span {
  border-color: #594cc0;
  background: #eeebff;
  color: #2c286b;
  box-shadow: 0 0 0 2px rgba(89, 76, 192, .12);
}
.booking-check-choice input:checked + span::before {
  content: "✓";
  border-color: #594cc0;
  background: #594cc0;
}
.booking-check-choice input:focus-visible + span {
  outline: 3px solid rgba(89, 76, 192, .24);
  outline-offset: 2px;
}
.booking-seat-choice-grid {
  grid-template-columns: repeat(2, minmax(0, 150px));
}
.booking-seat-choice span {
  justify-content: center;
  min-height: 56px;
  font-size: 18px;
}
.booking-seat-choice span::before {
  display: none;
}
.companion-name-field[hidden] {
  display: none !important;
}

.phone-split-input {
  display: grid;
  grid-template-columns: auto minmax(90px, 1fr) auto;
  align-items: center;
  gap: 8px;
  min-height: 50px;
  padding: 6px 10px;
  border: 1.5px solid #d8d3ef;
  border-radius: 14px;
  background: #fff;
  color: #282452;
  font-weight: 900;
}
.phone-split-input .input {
  min-height: 38px;
  padding: 6px 8px;
  border-radius: 10px;
  text-align: center;
  font-size: 18px;
  font-weight: 900;
}
.companion-name-field .textarea {
  min-height: 70px;
}

@media (max-width: 1100px) {
  .opening-home-hero {
    grid-template-columns: 1fr !important;
  }
  .opening-poster-video {
    min-height: clamp(410px, 70vw, 650px) !important;
  }
}

@media (max-width: 680px) {
  .opening-home-copy h1.opening-title-stack,
  .opening-hero-main h1.opening-title-stack {
    font-size: clamp(34px, 10.5vw, 52px) !important;
  }
  .opening-home-facts,
  .booking-choice-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .booking-check-choice span {
    min-height: 45px;
    padding: 8px;
    font-size: 13px;
  }
}

/* v191: 출석부 명단 가독성 + 파스텔 모던 상영카드 */
.participant-stats-table {
  min-width: 820px;
  table-layout: fixed;
}
.participant-stats-table th:nth-child(1),
.participant-stats-table td:nth-child(1) { width: 18%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.participant-stats-table th:nth-child(2),
.participant-stats-table td:nth-child(2) { width: 17%; }
.participant-stats-table th:nth-child(3),
.participant-stats-table td:nth-child(3),
.participant-stats-table th:nth-child(4),
.participant-stats-table td:nth-child(4),
.participant-stats-table th:nth-child(5),
.participant-stats-table td:nth-child(5) { width: 9%; text-align: center; }
.participant-stats-table th:nth-child(6),
.participant-stats-table td:nth-child(6) { width: 38%; }

.classic-schedule-day-group {
  border: 0 !important;
  border-radius: 6px !important;
  background: var(--schedule-card-bg, #f1efff) !important;
  box-shadow: 0 12px 30px rgba(44, 40, 107, .10);
}
.classic-schedule-time-group,
.classic-schedule-time-group.is-conflict-group,
.classic-schedule-time-group.is-forced-group,
.classic-schedule-time-group.has-schedule-fillers {
  border: 0 !important;
  border-radius: 5px !important;
  background: rgba(255, 255, 255, .38) !important;
  box-shadow: none !important;
}
.classic-schedule-group-choice {
  border: 0 !important;
  border-radius: 3px !important;
  background: rgba(255, 255, 255, .56) !important;
}
.classic-schedule-card,
.screening-card.compact-screening-card {
  border: 0 !important;
  border-radius: 3px !important;
  background: #fdfcff !important;
  box-shadow: 0 8px 20px rgba(44, 40, 107, .16) !important;
}
.classic-schedule-card .screening-top,
.screening-card.compact-screening-card .screening-top {
  border: 0 !important;
  background: linear-gradient(135deg, var(--category-grad-a, #f3f0ff), var(--category-grad-b, #e3defb)) !important;
}
.classic-schedule-card .screening-body,
.screening-card.compact-screening-card .screening-body {
  border: 0 !important;
  background: rgba(255,255,255,.9) !important;
}
.classic-schedule-card .btn,
.screening-card.compact-screening-card .btn { border-radius: 3px !important; }

@media (max-width: 760px) {
  .participant-stats-table { min-width: 690px; }
  .participant-stats-table th:nth-child(1),
  .participant-stats-table td:nth-child(1) { width: 20%; }
  .participant-stats-table th:nth-child(6),
  .participant-stats-table td:nth-child(6) { width: 34%; }
}

/* v82: 상태 체계 3종 통일 + 표/버튼 초압축 레이아웃 */
.table-wrap {
  border-radius: 12px;
}
table {
  min-width: 0;
}
th, td {
  padding: 7px 6px;
  font-size: 12px;
  line-height: 1.24;
}
.btn-small {
  min-height: 28px;
  padding: 5px 8px;
  font-size: 11px;
}
.row-actions,
.reservation-manage-compact,
.reservation-action-buttons {
  gap: 4px;
}
.reservation-table,
.stats-table,
.venue-stats-table {
  width: 100%;
  table-layout: fixed;
}
.reservation-table {
  min-width: 680px;
}
.reservation-table th,
.reservation-table td {
  padding: 4px 3px !important;
  font-size: 11px !important;
  line-height: 1.16;
}
.reservation-table .help {
  font-size: 9px !important;
  line-height: 1.12;
}
.reservation-table .badge {
  padding: 2px 5px !important;
  font-size: 8px !important;
}
.reservation-table .btn-small {
  min-height: 24px;
  padding: 3px 5px;
  font-size: 9px;
  border-radius: 9px;
}
.reservation-table .col-venue { width: 11%; }
.reservation-table .col-screening { width: 18%; }
.reservation-table .col-applicant { width: 23%; }
.reservation-table .col-reservation-no { width: 10%; }
.reservation-table .col-seats { width: 6%; text-align: center; }
.reservation-table .col-created { width: 10%; }
.reservation-table .col-note { width: 10%; }
.reservation-table .col-manage { width: 12%; }
.applicant-name-line {
  gap: 3px;
  flex-wrap: wrap;
}
.stats-table,
.venue-stats-table {
  min-width: 0 !important;
}
.stats-table th,
.stats-table td,
.venue-stats-table th,
.venue-stats-table td {
  padding: 5px 3px !important;
  font-size: 11px !important;
  line-height: 1.15;
}
.stats-table th:first-child,
.stats-table td:first-child,
.venue-stats-table th:first-child,
.venue-stats-table td:first-child {
  width: 22%;
}
.reservation-action-row td {
  padding: 4px !important;
}
.reservation-action-panel {
  padding: 8px;
  border-radius: 12px;
}
.reservation-action-buttons-large .btn,
.reservation-action-buttons .btn {
  min-height: 34px;
  padding: 7px 9px;
  font-size: 12px;
}
@media (max-width: 760px) {
  .table-wrap,
  .reservation-table-wrap {
    overflow-x: visible;
  }
  table,
  .reservation-table,
  .stats-table,
  .venue-stats-table {
    min-width: 0 !important;
    width: 100% !important;
    table-layout: fixed;
  }
  th, td {
    padding: 4px 2px !important;
    font-size: 9.5px !important;
    line-height: 1.12 !important;
  }
  .btn,
  .btn-small {
    min-height: 28px;
    padding: 5px 7px;
    font-size: 10px;
    border-radius: 10px;
  }
  .reservation-table .col-reservation-no,
  .reservation-table .col-created,
  .reservation-table .col-note {
    display: none;
  }
  .reservation-table .col-venue { width: 15% !important; }
  .reservation-table .col-screening { width: 25% !important; }
  .reservation-table .col-applicant { width: 30% !important; }
  .reservation-table .col-seats { width: 8% !important; }
  .reservation-table .col-manage { width: 22% !important; }
  .reservation-table th,
  .reservation-table td {
    padding: 3px 2px !important;
    font-size: 9.5px !important;
    white-space: normal !important;
    overflow: hidden;
  }
  .reservation-table .help,
  .reservation-table .applicant-phone,
  .reservation-table .applicant-email {
    font-size: 8px !important;
    line-height: 1.05;
  }
  .reservation-table .btn-small,
  .reservation-manage-compact .btn {
    min-height: 23px;
    padding: 3px 3px;
    font-size: 8px;
  }
  .reservation-manage-compact {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2px;
  }
  .status-index {
    min-height: 14px;
    padding: 1px 3px !important;
    font-size: 7px !important;
  }
  .stats-table th,
  .stats-table td,
  .venue-stats-table th,
  .venue-stats-table td {
    padding: 3px 2px !important;
    font-size: 8.5px !important;
    line-height: 1.08;
  }
  .stats-table th:first-child,
  .stats-table td:first-child,
  .venue-stats-table th:first-child,
  .venue-stats-table td:first-child {
    width: 24% !important;
  }
  .reservation-action-buttons-large,
  .reservation-action-buttons {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 5px;
    width: 100%;
  }
  .reservation-action-buttons-large .btn,
  .reservation-action-buttons .btn {
    width: 100%;
    min-height: 34px;
    padding: 6px 4px;
    font-size: 10px;
  }
}

/* v190 모바일 신청자 명단: 영화·상영관 반복을 제거한 압축 목록 */
.mobile-reservation-list { display: none; }

@media screen and (max-width: 760px) {
  .reservation-table-wrap { display: none !important; }
  .mobile-reservation-list {
    display: block;
    width: 100%;
    min-width: 0;
    overflow: hidden;
    border: 1px solid #d8d3ef;
    border-radius: 13px;
    background: #fdfcff;
  }
  .mobile-reservation-select-all {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 38px;
    padding: 7px 10px;
    border: 0;
    border-bottom: 1px solid #d8d3ef;
    border-radius: 0;
    background: #f7f5ff;
    color: #332d75;
    font-size: 12px;
    font-weight: 900;
  }
  .mobile-reservation-select-all input,
  .mobile-reservation-sms-check input {
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: var(--primary);
  }
  .mobile-reservation-list-head {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(76px, .9fr) minmax(40px, .5fr) minmax(88px, 1.15fr) minmax(66px, 1.1fr) minmax(104px, 1.45fr);
    align-items: center;
    min-height: 34px;
    padding: 0 8px;
    border-bottom: 1px solid #d8d3ef;
    background: #e8e4f8;
    color: #332e72;
    font-size: 11px;
    font-weight: 950;
    text-align: center;
  }
  .mobile-reservation-card {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(76px, .9fr) minmax(40px, .5fr) minmax(88px, 1.15fr) minmax(66px, 1.1fr) minmax(104px, 1.45fr);
    align-items: center;
    gap: 0;
    width: 100%;
    min-width: 0;
    padding: 7px 8px;
    border: 0;
    border-bottom: 1px solid #ded9f1;
    border-radius: 0;
    background: #fdfcff;
    box-shadow: none;
  }
  .mobile-reservation-card:last-child { border-bottom: 0; }
  .mobile-reservation-card.is-selected {
    background: #f4f1ff;
    box-shadow: inset 3px 0 #7669ce;
  }
  .mobile-reservation-card.attended-row { background: #fbfceb; }
  .mobile-reservation-card > div:not(.mobile-reservation-actions) {
    display: grid;
    gap: 2px;
    min-width: 0;
    padding: 2px 5px;
    text-align: center;
  }
  .mobile-reservation-card > div:not(.mobile-reservation-actions) > span:first-child,
  .mobile-reservation-attendance > span {
    display: none;
  }
  .mobile-reservation-applicant .applicant-name-line > strong,
  .mobile-reservation-number > strong,
  .mobile-reservation-seat > strong,
  .mobile-reservation-created > strong,
  .mobile-reservation-note > strong {
    color: #24205d;
    font-size: 12px;
    line-height: 1.25;
    word-break: keep-all;
    overflow-wrap: anywhere;
  }
  .mobile-reservation-applicant { text-align: left !important; }
  .mobile-reservation-applicant .applicant-name-line > strong { font-size: 14px; }
  .mobile-reservation-number > strong,
  .mobile-reservation-seat > strong { white-space: nowrap; }
  .mobile-reservation-created > strong { font-size: 11px; }
  .mobile-reservation-note > strong {
    display: -webkit-box;
    overflow: hidden;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }
  .mobile-reservation-sms-check {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 7px;
    min-height: 28px;
    margin-top: 5px;
    padding: 4px 5px 0;
    border-top: 1px dashed #e2def1;
    color: #4e4770;
    font-size: 11px;
    font-weight: 850;
  }
  .mobile-reservation-applicant small {
    display: block;
    max-width: 100%;
    color: #686287;
    font-size: 11px;
    line-height: 1.2;
    overflow-wrap: anywhere;
  }
  .mobile-reservation-applicant .applicant-name-line {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 3px;
  }
  .mobile-reservation-applicant .participant-history-badge {
    justify-self: start;
    margin-top: 1px;
    padding: 2px 4px;
    font-size: 9px;
    white-space: nowrap;
  }
  .mobile-reservation-attendance {
    display: block !important;
  }
  .mobile-reservation-attendance > div,
  .mobile-reservation-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 4px;
    width: 100%;
    min-width: 0;
  }
  .mobile-reservation-attendance .btn,
  .mobile-reservation-actions .btn {
    width: 100%;
    min-width: 0;
    min-height: 31px;
    padding: 5px 2px;
    border-radius: 7px;
    font-size: 10px;
    line-height: 1.2;
    white-space: nowrap;
  }
  .mobile-reservation-actions {
    grid-column: 1 / -1;
    margin-top: 6px;
    padding: 7px 4px 1px;
    border-top: 1px dashed #d8d3ef;
  }
  .mobile-reservation-actions .btn { min-height: 34px; font-size: 11px; }
  .staff-screening-card .mobile-reservation-list { margin-top: 8px; }
}

@media screen and (max-width: 520px) {
  .mobile-reservation-list-head { display: none; }
  .mobile-reservation-card {
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: 5px 4px;
    padding: 8px 7px;
  }
  .mobile-reservation-card > div:not(.mobile-reservation-actions) {
    align-self: stretch;
    padding: 3px 4px;
    border-left: 1px solid #eeeaf9;
  }
  .mobile-reservation-card > div:not(.mobile-reservation-actions):first-child { border-left: 0; }
  .mobile-reservation-card > div:not(.mobile-reservation-actions) > span:first-child,
  .mobile-reservation-attendance > span {
    display: block;
    color: #77708f;
    font-size: 9px;
    font-weight: 900;
    line-height: 1.15;
  }
  .mobile-reservation-applicant { grid-column: span 6; }
  .mobile-reservation-number { grid-column: span 4; }
  .mobile-reservation-seat { grid-column: span 2; }
  .mobile-reservation-created { grid-column: span 4; border-left: 0 !important; }
  .mobile-reservation-note { grid-column: span 4; }
  .mobile-reservation-attendance { grid-column: span 4; }
  .mobile-reservation-created > strong,
  .mobile-reservation-note > strong { font-size: 10px; line-height: 1.25; }
  .mobile-reservation-attendance .btn { min-height: 29px; font-size: 9.5px; }
}

/* v86: 후원 카드 단일 CTA, 모바일 관람신청/신청완료 버튼 확대 */
.hero-donate-only {
  justify-content: flex-start;
}
.hero-donate-btn {
  min-width: 132px;
  min-height: 48px;
  padding: 13px 24px;
}
.screening-card[data-screening-card] {
  cursor: pointer;
}
.screening-card[data-screening-card]:active {
  transform: translateY(1px);
}
.booking-submit-btn {
  min-width: 150px;
  min-height: 52px;
  padding: 14px 24px;
  font-size: 16px;
  border-radius: 16px;
}
@media (max-width: 640px) {
  .hero-donate-only .hero-donate-btn {
    width: 100%;
    min-height: 58px;
    font-size: 18px;
    border-radius: 18px;
  }
  .screening-card-actions.compact-actions {
    align-items: stretch;
  }
  .compact-book-btn {
    min-height: 46px !important;
    padding: 10px 8px !important;
    border-radius: 13px !important;
    font-size: 13px !important;
    font-weight: 950 !important;
  }
  .compact-staff-btn {
    min-height: 38px !important;
    align-self: center;
  }
  #bookingModal .form-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
  }
  #bookingModal .form-actions .btn {
    width: 100%;
  }
  #bookingModal .booking-submit-btn {
    min-height: 58px;
    font-size: 18px;
    border-radius: 18px;
  }
  #bookingModal .modal-body {
    padding: 18px 16px 20px;
  }
}

/* v88: 관리자 출력/PDF 및 상단 도구 정리 */
.admin-top-actions { justify-content: flex-end; }
.admin-report-tools { border-style: dashed; }
.report-action-row { justify-content: flex-end; gap: 8px; }
.report-action-row .btn { min-height: 38px; }

@media print {
  @page { size: A4 landscape; margin: 7mm; }
  html, body { width: auto !important; min-width: 0 !important; background: #fff !important; color: #111 !important; }
  body.admin-print-mode { background: #fff !important; }
  body.admin-print-mode .app-shell,
  body.admin-print-mode main,
  body.admin-print-mode .container,
  body.admin-print-mode #app { width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; }
  body.admin-print-mode .site-header,
  body.admin-print-mode .hero,
  body.admin-print-mode .site-footer,
  body.admin-print-mode .admin-sidebar,
  body.admin-print-mode .cta-row,
  body.admin-print-mode .form-actions,
  body.admin-print-mode .filters,
  body.admin-print-mode .screen-only,
  body.admin-print-mode .btn,
  body.admin-print-mode .toast,
  body.admin-print-mode .modal-backdrop,
  body.admin-print-mode .admin-report-tools { display: none !important; }
  body.admin-print-mode .admin-layout { display: block !important; grid-template-columns: none !important; gap: 0 !important; }
  body.admin-print-mode .admin-panel { width: 100% !important; max-width: none !important; }
  body.admin-print-mode .section-title { margin: 0 0 5mm !important; padding: 0 !important; gap: 2mm !important; }
  body.admin-print-mode h1 { font-size: 18px !important; margin: 0 0 2mm !important; }
  body.admin-print-mode h2 { font-size: 14px !important; margin: 0 0 1mm !important; }
  body.admin-print-mode h3 { font-size: 12px !important; margin: 0 0 1mm !important; }
  body.admin-print-mode p,
  body.admin-print-mode .help,
  body.admin-print-mode .metric-note,
  body.admin-print-mode .metric-label { font-size: 9px !important; line-height: 1.25 !important; }
  body.admin-print-mode .card,
  body.admin-print-mode .metric-card { box-shadow: none !important; border: 1px solid #ddd !important; border-radius: 0 !important; background: #fff !important; padding: 4mm !important; margin: 0 0 4mm !important; break-inside: avoid; page-break-inside: avoid; }
  body.admin-print-mode .metric-grid,
  body.admin-print-mode .opening-summary-grid,
  body.admin-print-mode .opening-metrics { display: grid !important; grid-template-columns: repeat(5, minmax(0, 1fr)) !important; gap: 2mm !important; margin-bottom: 4mm !important; }
  body.admin-print-mode .metric-value { font-size: 18px !important; line-height: 1.05 !important; }
  body.admin-print-mode .metric-value.text-value { font-size: 12px !important; }
  body.admin-print-mode .table-wrap,
  body.admin-print-mode .reservation-table-wrap,
  body.admin-print-mode .stats-table-wrap { overflow: visible !important; border: 0 !important; border-radius: 0 !important; width: 100% !important; max-width: none !important; }
  body.admin-print-mode table,
  body.admin-print-mode .reservation-table,
  body.admin-print-mode .venue-stats-table { width: 100% !important; min-width: 0 !important; max-width: 100% !important; table-layout: fixed !important; border-collapse: collapse !important; }
  body.admin-print-mode th,
  body.admin-print-mode td,
  body.admin-print-mode .reservation-table th,
  body.admin-print-mode .reservation-table td,
  body.admin-print-mode .venue-stats-table th,
  body.admin-print-mode .venue-stats-table td { border: 1px solid #aaa !important; padding: 2px 3px !important; font-size: 7.5px !important; line-height: 1.15 !important; white-space: normal !important; overflow-wrap: anywhere !important; word-break: keep-all !important; background: #fff !important; color: #111 !important; }
  body.admin-print-mode th,
  body.admin-print-mode .reservation-table th,
  body.admin-print-mode .venue-stats-table th { font-weight: 800 !important; background: #eee !important; text-align: center !important; }
  body.admin-print-mode .badge { padding: 1px 3px !important; font-size: 7px !important; border: 1px solid #999 !important; background: #fff !important; color: #111 !important; }
  body.admin-print-mode .table-note { max-width: none !important; }
  body.admin-print-mode .print-only { display: block !important; }
  body.admin-print-mode .print-column { display: table-cell !important; }
  body.admin-print-mode .reservation-table .col-venue { width: 10% !important; }
  body.admin-print-mode .reservation-table .col-screening { width: 21% !important; }
  body.admin-print-mode .reservation-table .col-applicant { width: 17% !important; }
  body.admin-print-mode .reservation-table .col-reservation-no { width: 10% !important; }
  body.admin-print-mode .reservation-table .col-seats { width: 5% !important; text-align: center !important; }
  body.admin-print-mode .reservation-table .col-created { width: 11% !important; }
  body.admin-print-mode .reservation-table .col-note { width: 18% !important; }
  body.admin-print-mode .reservation-table .col-manage { display: none !important; }
}

/* v89: 관리자 공통 저장/출력 버튼 한 줄 정렬 */
.admin-top-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: nowrap;
}
.admin-top-actions .btn {
  min-height: 40px;
  padding: 10px 15px;
  font-size: 14px;
  white-space: nowrap;
}
@media (max-width: 720px) {
  .admin-top-actions {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
  }
  .admin-top-actions .btn {
    width: 100%;
    min-height: 38px;
    padding: 8px 7px;
    font-size: 12px;
  }
  .section-title:has(.admin-top-actions) {
    align-items: stretch;
  }
}
@media (min-width: 721px) {
  .admin-top-actions .btn-danger { margin-left: 6px; }
}

/* v90: 신청자명단 필터 한 줄 압축 및 전체 보기 동작 보강 */
.reservation-filters {
  display: grid !important;
  grid-template-columns: 80px minmax(135px, 155px) 100px 94px 120px 78px !important;
  gap: 5px !important;
  justify-content: start !important;
  align-items: center !important;
  margin: 10px 0 12px !important;
}
.reservation-filters .input,
.reservation-filters .select,
.reservation-filters .btn {
  width: 100% !important;
  min-width: 0 !important;
  min-height: 36px !important;
  height: 36px !important;
  padding: 6px 8px !important;
  border-radius: 11px !important;
  font-size: 12px !important;
  line-height: 1.1 !important;
  white-space: nowrap !important;
}
.reservation-filters .btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-weight: 850 !important;
}
@media (max-width: 720px) {
  .reservation-filters {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    justify-content: stretch !important;
  }
}
@media (max-width: 560px) {
  .reservation-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 5px !important;
  }
  .reservation-filters .input,
  .reservation-filters .select,
  .reservation-filters .btn {
    height: 34px !important;
    min-height: 34px !important;
    padding: 5px 6px !important;
    border-radius: 10px !important;
    font-size: 11px !important;
  }
}

/* v91: 모바일 영화 카드 가독성 강화 */
@media (max-width: 640px) {
  .section .screening-grid,
  #screeningList.screening-grid {
    gap: 10px;
  }
  .compact-screening-card .screening-top {
    padding: 11px 10px 9px;
  }
  .compact-screening-card .screening-title {
    font-size: 17px !important;
    line-height: 1.22 !important;
    letter-spacing: -0.055em;
    font-weight: 950;
  }
  .compact-screening-card .screening-meta {
    margin-top: 6px !important;
    font-size: 12px !important;
    line-height: 1.42 !important;
    font-weight: 750;
  }
  .compact-screening-card .badge {
    font-size: 9px !important;
    padding: 4px 6px !important;
  }
  .compact-screening-body {
    padding: 8px 9px 9px !important;
  }
}

@media (max-width: 390px) {
  .compact-screening-card .screening-title {
    font-size: 16px !important;
  }
  .compact-screening-card .screening-meta {
    font-size: 11.5px !important;
  }
}

/* v93 만족도조사 테스트 도구 */
.survey-test-card {
  border-color: #bae6fd;
  background: linear-gradient(180deg, #ffffff 0%, #f0f9ff 100%);
}
.survey-test-panel {
  display: grid;
  grid-template-columns: minmax(240px, 1.4fr) minmax(180px, .8fr) auto;
  gap: 12px;
  align-items: end;
}
.survey-test-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
}
.survey-test-panel .help {
  grid-column: 1 / -1;
  margin-top: 2px;
}
.notice-box {
  border: 1px dashed #93c5fd;
  background: #eff6ff;
  color: #1e3a8a;
  border-radius: 16px;
  padding: 14px 16px;
  line-height: 1.6;
}
@media (max-width: 820px) {
  .survey-test-panel {
    grid-template-columns: 1fr;
  }
  .survey-test-actions {
    justify-content: stretch;
  }
  .survey-test-actions .btn {
    flex: 1 1 160px;
    min-height: 48px;
  }
}

/* v94 만족도조사 상세통계 */
.survey-detail-stats-card { margin-top: 18px; }
.survey-score-grid,
.survey-question-stat-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin: 16px 0 18px;
}
.survey-score-card {
  border: 1px solid rgba(96, 70, 50, 0.14);
  border-radius: 18px;
  background: #fffaf2;
  padding: 16px;
  box-shadow: 0 10px 22px rgba(55, 39, 24, 0.06);
}
.survey-score-card h3 { margin: 0 0 10px; font-size: 1.02rem; }
.survey-big-score {
  font-size: 2.4rem;
  line-height: 1;
  font-weight: 900;
  color: #b33f2f;
  margin-bottom: 12px;
}
.survey-rating-bars,
.survey-choice-bars { display: grid; gap: 8px; }
.survey-rating-row,
.survey-choice-row {
  display: grid;
  grid-template-columns: 44px 1fr 42px;
  gap: 8px;
  align-items: center;
  font-size: .86rem;
}
.survey-choice-row { grid-template-columns: minmax(86px, .8fr) 1fr 42px; }
.survey-rating-label { color: #6d6259; font-weight: 700; }
.survey-rating-track {
  display: block;
  min-height: 12px;
  background: #efe1d2;
  border-radius: 999px;
  overflow: hidden;
}
.survey-rating-fill {
  display: block;
  height: 12px;
  border-radius: 999px;
  background: linear-gradient(90deg, #b33f2f, #e4a33c);
}
.compact-section-title { margin-top: 18px; }
.survey-comment-table td { vertical-align: top; line-height: 1.45; }
.survey-comment-table th:nth-child(1), .survey-comment-table td:nth-child(1) { width: 18%; }
.survey-comment-table th:nth-child(2), .survey-comment-table td:nth-child(2) { width: 10%; }
.survey-comment-table th:nth-child(5), .survey-comment-table td:nth-child(5) { width: 14%; }
.compact-empty { padding: 10px; font-size: .9rem; }
@media (max-width: 720px) {
  .survey-score-grid,
  .survey-question-stat-grid { grid-template-columns: 1fr; }
  .survey-score-card { padding: 14px; }
  .survey-big-score { font-size: 2rem; }
  .survey-choice-row { grid-template-columns: 1fr; gap: 4px; }
  .survey-rating-row { grid-template-columns: 42px 1fr 38px; }
}
@media print {
  .survey-score-grid,
  .survey-question-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .survey-score-card { box-shadow: none; padding: 8px; break-inside: avoid; }
  .survey-big-score { font-size: 1.5rem; }
  .survey-rating-row, .survey-choice-row { font-size: 8px; gap: 4px; }
  .survey-rating-track, .survey-rating-fill { min-height: 8px; height: 8px; }
}
.stats-table tfoot td,
.stats-table .total-row td {
  font-weight: 800;
  background: #f4efe7;
  border-top: 2px solid #2b221d;
}
.donation-stats-card .metric-value.text-value { font-size: clamp(1.2rem, 2vw, 1.8rem); }
/* v120 개인정보·초상권 동의 및 일반관리자 계정 관리 */
.privacy-consent-box {
  border: 1px solid rgba(179, 63, 47, .24);
  border-radius: 18px;
  background: #fff8f1;
  padding: 16px;
}
.privacy-consent-box h4 { margin: 0 0 8px; font-size: 16px; }
.privacy-consent-box p { margin: 0 0 12px; color: var(--muted); font-size: 13px; line-height: 1.65; white-space: normal; }
.privacy-consent-check { margin: 0; font-weight: 800; color: var(--ink); }
.general-admin-list { display: grid; gap: 10px; margin: 14px 0; }
.general-admin-edit-form,
.general-admin-add-form { display: grid; grid-template-columns: minmax(110px, 1fr) minmax(140px, 1fr) auto auto; gap: 8px; align-items: end; }
.general-admin-add-form { grid-template-columns: minmax(110px, 1fr) minmax(140px, 1fr) auto; padding-top: 14px; border-top: 1px solid var(--line); }
.general-admin-add-form .label { grid-column: 1 / -1; margin: 0; }
@media (max-width: 720px) {
  .general-admin-edit-form,
  .general-admin-add-form { grid-template-columns: 1fr 1fr; }
  .general-admin-add-form .label { grid-column: 1 / -1; }
}

/* v121 화면 전반의 글자 크기·여백·표 가독성 정돈 */
body {
  font-size: 16px;
  line-height: 1.58;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

.section { margin-top: clamp(24px, 3vw, 34px); }
.section-title { gap: 18px; margin-bottom: 18px; }
.section-title h1,
.section-title h2,
.section-title h3 {
  line-height: 1.25;
  word-break: keep-all;
}
.section-title h1 { margin: 0; font-size: clamp(28px, 3.2vw, 42px); letter-spacing: -.055em; }
.section-title h2 { font-size: clamp(23px, 2.3vw, 30px); }
.section-title h3 { font-size: clamp(19px, 1.8vw, 24px); }
.section-title p,
.card p,
.help { line-height: 1.65; }
.section-title p { font-size: 15px; }
.help { font-size: 13px; }

.card { padding: clamp(20px, 2.2vw, 28px); }
.card h2 { line-height: 1.3; letter-spacing: -.045em; }
.card h3 { line-height: 1.35; }
.input,
.select,
.textarea { min-height: 46px; padding: 12px 14px; line-height: 1.45; }
.label { margin-bottom: 8px; font-size: 14px; line-height: 1.4; }
.btn { line-height: 1.25; }

/* 안내문과 동의 문구 */
.notice,
.notice-box,
.privacy-consent-box,
.donation-agreement,
.transfer-help {
  font-size: 14px;
  line-height: 1.7;
  word-break: keep-all;
}
.privacy-consent-box { padding: 18px 20px; }
.privacy-consent-box h4 { margin-bottom: 10px; font-size: 17px; line-height: 1.4; }
.privacy-consent-box p { font-size: 14px; line-height: 1.72; }
.checkbox-line { padding: 13px 15px; line-height: 1.55; }

/* 후원 안내와 신청 영역 */
.donation-page-hero { padding: clamp(30px, 5vw, 58px); }
.donation-page-hero h1 { line-height: 1.08; }
.donation-story {
  max-width: 850px;
  font-size: clamp(16px, 1.55vw, 18px);
  line-height: 1.9;
  letter-spacing: -.012em;
  word-break: keep-all;
}
.donation-form-card { padding: clamp(22px, 3vw, 32px); }
.donation-form { display: grid; gap: 2px; }

/* 스태프 요약: 항목이 한 줄로 붙지 않도록 카드화 */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(165px, 1fr));
  gap: 12px;
}
.stat-card {
  display: grid;
  align-content: start;
  gap: 6px;
  min-width: 0;
  padding: 17px 18px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(255, 250, 242, .92);
  box-shadow: 0 10px 24px rgba(58, 41, 27, .07);
}
.stat-card span { color: var(--muted); font-size: 13px; font-weight: 800; }
.stat-card strong {
  overflow-wrap: anywhere;
  font-size: clamp(24px, 2.6vw, 34px);
  line-height: 1.18;
  letter-spacing: -.045em;
}
.stat-card:first-child strong { font-size: clamp(17px, 1.65vw, 22px); line-height: 1.35; }
.stat-card small { color: var(--muted); font-size: 12px; line-height: 1.4; }
.staff-password-card { padding: clamp(20px, 2.2vw, 26px); }
.staff-screening-card { padding: clamp(20px, 2.3vw, 28px); }
.staff-screening-titleline { font-size: clamp(25px, 2.7vw, 36px); line-height: 1.25; }
.staff-capacity { background: #f3eadf; }

/* 관리자·스태프 목록과 통계표 */
.admin-layout { gap: 20px; }
.admin-sidebar { gap: 10px; }
.admin-tab { min-height: 46px; padding: 12px 15px; line-height: 1.35; }
.admin-panel { gap: 20px; }
.admin-panel .card { padding: clamp(20px, 2vw, 26px); }
.metric-grid { gap: 14px; }
.metric-card { padding: 18px; }
.metric-label { font-size: 14px; line-height: 1.35; }
.metric-note { font-size: 13px; line-height: 1.45; }

.table-wrap { border-radius: 16px; }
table { font-variant-numeric: tabular-nums; }
th,
td {
  padding: 11px 12px;
  vertical-align: middle;
}
th { font-size: 13px; line-height: 1.35; letter-spacing: -.01em; }
td { font-size: 14px; line-height: 1.5; }
tbody tr:nth-child(even) td { background: rgba(242, 231, 220, .24); }
tbody tr:hover td { background: rgba(31, 102, 80, .055); }

.reservation-table { min-width: 980px; }
.reservation-table th,
.reservation-table td {
  padding: 8px 9px;
  font-size: 13px;
  line-height: 1.4;
  overflow-wrap: normal;
}
.reservation-table th { font-size: 12px; }
.reservation-table .help { font-size: 11px; line-height: 1.35; }
.reservation-table .badge { padding: 5px 7px; font-size: 10px; }
.reservation-table .btn-small { min-height: 32px; padding: 6px 8px; font-size: 11px; }
.status-index { min-height: 20px; padding: 3px 6px !important; font-size: 9px !important; }
.compact-attendance { min-height: 24px; padding: 3px 7px; font-size: 9px; }

.stats-table,
.venue-stats-table { min-width: 760px; }
.stats-table th,
.stats-table td,
.venue-stats-table th,
.venue-stats-table td {
  padding: 11px 9px;
  font-size: 13px;
  line-height: 1.4;
  overflow-wrap: normal;
}
.stats-table th,
.venue-stats-table th { font-size: 12px; }
.venue-stats-table th:first-child,
.venue-stats-table td:first-child { width: 25%; }

@media (max-width: 760px) {
  body { font-size: 15px; }
  .card { padding: 18px 16px; }
  .section-title { gap: 12px; margin-bottom: 15px; }
  .section-title h1 { font-size: 27px; }
  .section-title h2 { font-size: 22px; }
  .section-title p { font-size: 14px; }
  .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
  .stat-card { padding: 14px; }
  .stat-card strong { font-size: 25px; }
  .stat-card:first-child { grid-column: 1 / -1; }
  .stat-card:first-child strong { font-size: 18px; }
  .staff-pin-form { gap: 10px; }
  .staff-screening-titleline { font-size: 24px; }
  .reservation-table { min-width: 900px; }
  .stats-table,
  .venue-stats-table { min-width: 720px; }
  .stats-table th,
  .stats-table td,
  .venue-stats-table th,
  .venue-stats-table td { padding: 9px 8px; font-size: 12px; }
  .donation-page-hero { padding: 27px 21px; }
  .donation-story { font-size: 15px; line-height: 1.82; }
}

@media print {
  .stat-card { padding: 5px; box-shadow: none; }
  .reservation-table th,
  .reservation-table td { padding: 3px 4px; font-size: 8px; line-height: 1.15; }
  .venue-stats-table { min-width: 0; }
  .venue-stats-table th,
  .venue-stats-table td { padding: 3px; font-size: 8px; }
}

/* v122 메인 후원 소개 문구 배치 */
.hero .hero-grid > div { width: 100%; }
.hero h1 {
  max-width: 820px;
  font-size: clamp(32px, 4.8vw, 52px);
  line-height: 1.08;
}
.hero .hero-grid > div > p {
  width: 100%;
  max-width: none;
  margin-bottom: 26px;
  font-size: clamp(16px, 1.65vw, 18px);
  line-height: 1.8;
  letter-spacing: -.012em;
  word-break: keep-all;
}

@media (max-width: 640px) {
  .hero h1 { font-size: clamp(30px, 9vw, 40px); }
  .hero .hero-grid > div > p {
    font-size: 15px;
    line-height: 1.72;
  }
}

/* v124 후원 안내·참여 카드 동일 너비 및 계좌 안내 */
.donation-page-hero,
.donation-form-card { width: 100%; }
.donation-form-card {
  max-width: none;
  margin: 0;
}
.donation-participation-heading { width: 100%; }
.donation-participation-heading h2 {
  margin-bottom: 8px;
  font-size: clamp(23px, 2.6vw, 32px);
}
.donation-participation-option {
  margin: 0 0 16px !important;
  color: var(--ink) !important;
  font-size: clamp(16px, 1.6vw, 19px);
  line-height: 1.55 !important;
}
.donation-account-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 0 0 14px;
}
.donation-account-summary span {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 48px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #f4eee7;
  color: #4f443a;
  line-height: 1.45;
}
.donation-account-summary strong { color: var(--brand-dark); white-space: nowrap; }

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

/* v126 영화 신청 페이지 참여 안내 */
.apply-participation-notice {
  margin: 0 0 20px;
  padding: clamp(20px, 2.8vw, 30px);
  border: 1px solid rgba(31, 102, 80, .22);
  border-radius: 22px;
  background: linear-gradient(135deg, rgba(31, 102, 80, .08), rgba(255, 250, 242, .94));
  box-shadow: 0 12px 28px rgba(58, 41, 27, .07);
}
.apply-participation-notice h2 {
  margin: 0 0 13px;
  color: var(--accent);
  font-size: clamp(21px, 2.2vw, 28px);
  line-height: 1.3;
  letter-spacing: -.04em;
}
.apply-participation-notice p {
  margin: 0 0 10px;
  color: #4f443a;
  font-size: 15px;
  line-height: 1.75;
  word-break: keep-all;
}
.apply-participation-notice p:last-child {
  margin-bottom: 0;
  color: var(--brand-dark);
  font-weight: 800;
}

@media (max-width: 640px) {
  .apply-participation-notice {
    margin-bottom: 16px;
    padding: 18px 16px;
    border-radius: 18px;
  }
  .apply-participation-notice p {
    font-size: 14px;
    line-height: 1.68;
  }
}

/* v137 관리자 현황 카드: 스크롤 없는 자동 맞춤 배치 */
.fixed-row-metrics {
  width: 100%;
  grid-template-columns: repeat(auto-fit, minmax(118px, 1fr)) !important;
  gap: 10px;
  overflow: visible;
  padding-bottom: 0;
}
.overview-metrics {
  grid-template-columns: repeat(auto-fit, minmax(118px, 1fr)) !important;
}
.opening-metrics,
.survey-metric-grid,
.donation-metrics {
  grid-template-columns: repeat(auto-fit, minmax(118px, 1fr)) !important;
}
.fixed-row-metrics .metric-card {
  min-width: 0;
  padding: 13px 11px;
  border-radius: 15px;
}
.fixed-row-metrics .metric-label { font-size: 12px; line-height: 1.3; }
.fixed-row-metrics .metric-value { margin-top: 5px; font-size: 30px; line-height: 1.05; }
.fixed-row-metrics .metric-note { margin-top: 4px; font-size: 11px; line-height: 1.35; overflow-wrap: anywhere; }
.survey-toggle-card {
  appearance: none;
  width: 100%;
  min-width: 0;
  color: var(--ink);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, transform .16s ease;
}
.survey-toggle-card:hover { transform: translateY(-2px); }
.survey-toggle-card:focus-visible {
  outline: 3px solid #d99b2b;
  outline-offset: 3px;
}
.survey-toggle-card.is-on {
  border-color: rgba(193, 45, 34, .52);
  background: #fff4f1;
}
.survey-toggle-card.is-on .metric-value { color: #c12d22; }
.survey-toggle-card.is-off {
  border-color: rgba(30, 25, 21, .34);
  background: #fffaf2;
}
.survey-toggle-card.is-off .metric-value { color: #1e1915; }
.survey-toggle-card .metric-label,
.survey-toggle-card .metric-value,
.survey-toggle-card .metric-note { display: block; }
.survey-toggle-help { margin-bottom: 16px; }

@media (max-width: 640px) {
  .fixed-row-metrics,
  .overview-metrics { grid-template-columns: repeat(auto-fit, minmax(108px, 1fr)) !important; }
  .opening-metrics,
  .survey-metric-grid,
  .donation-metrics { grid-template-columns: repeat(auto-fit, minmax(108px, 1fr)) !important; }
  .fixed-row-metrics .metric-card { padding: 11px 9px; }
  .fixed-row-metrics .metric-label { font-size: 11px; }
  .fixed-row-metrics .metric-value { font-size: 26px; }
  .fixed-row-metrics .metric-note { font-size: 10px; }
}

/* v131 상영시간표·신청마감·신청자별 참여통계 */
.screening-schedule-section {
  margin: 0 0 22px;
  padding: clamp(20px, 2.8vw, 30px);
  border: 1px solid rgba(31, 102, 80, .22);
  border-radius: 24px;
  background: #fffaf2;
  box-shadow: 0 14px 32px rgba(58, 41, 27, .08);
}
.screening-schedule-days {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  align-items: start;
}
.schedule-day-card {
  --schedule-card-bg: #f2f7f5;
  --schedule-card-hover: #e8f2ee;
  --schedule-card-border: rgba(31, 102, 80, .22);
  --schedule-card-accent: #1f6650;
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 7px 18px rgba(58, 41, 27, .055);
}
.schedule-day-color-1 { --schedule-card-bg: #eef7f2; --schedule-card-hover: #e4f1ea; --schedule-card-border: rgba(31, 102, 80, .25); --schedule-card-accent: #1f6650; }
.schedule-day-color-2 { --schedule-card-bg: #fff7e8; --schedule-card-hover: #fcefd8; --schedule-card-border: rgba(181, 126, 33, .25); --schedule-card-accent: #a46a14; }
.schedule-day-color-3 { --schedule-card-bg: #eef6fb; --schedule-card-hover: #e3f0f8; --schedule-card-border: rgba(49, 106, 143, .24); --schedule-card-accent: #316a8f; }
.schedule-day-color-4 { --schedule-card-bg: #fff1eb; --schedule-card-hover: #fbe5dc; --schedule-card-border: rgba(179, 89, 63, .23); --schedule-card-accent: #a6533d; }
.schedule-day-color-5 { --schedule-card-bg: #f5f0fa; --schedule-card-hover: #ede5f5; --schedule-card-border: rgba(112, 79, 143, .23); --schedule-card-accent: #704f8f; }
.schedule-day-card h3 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 2px 9px;
  color: #211d19;
  font-size: 19px;
  line-height: 1.2;
}
.schedule-day-card h3::after { content: ""; flex: 1; height: 3px; border-radius: 99px; background: var(--schedule-card-accent); opacity: .32; }
.schedule-day-list { display: grid; gap: 8px; }
.schedule-movie-slot {
  appearance: none;
  display: grid;
  gap: 8px;
  width: 100%;
  min-height: 0;
  padding: 13px 14px 12px;
  border: 1px solid var(--schedule-card-border);
  border-radius: 14px;
  background: var(--schedule-card-bg);
  color: var(--ink);
  font: inherit;
  text-align: left;
  cursor: pointer;
  box-shadow: inset 4px 0 0 var(--schedule-card-accent), 0 5px 12px rgba(58, 41, 27, .055);
  transition: transform .16s ease, box-shadow .16s ease, background .16s ease, border-color .16s ease;
}
.schedule-movie-slot:hover { transform: translateY(-1px); border-color: var(--schedule-card-accent); background: var(--schedule-card-hover); box-shadow: inset 4px 0 0 var(--schedule-card-accent), 0 8px 17px rgba(58, 41, 27, .09); }
.schedule-movie-slot:focus-visible { outline: 3px solid #d99b2b; outline-offset: 2px; }
.schedule-movie-slot.is-full { border-color: rgba(179, 63, 47, .38); background: var(--schedule-card-bg); }
.schedule-movie-title {
  display: block;
  padding: 1px 3px 2px;
  background: transparent;
  color: #111;
  font-size: clamp(23px, 2vw, 28px);
  line-height: 1.25;
  text-align: center;
  overflow-wrap: anywhere;
}
.schedule-main-row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
  padding: 2px 2px 6px;
}
.schedule-time { color: var(--schedule-card-accent); font-size: 26px; font-weight: 950; line-height: 1; font-variant-numeric: tabular-nums; }
.schedule-movie-slot .badge { max-width: 138px; padding: 7px 9px; border-radius: 8px; font-size: 12px; line-height: 1.25; text-align: center; white-space: normal; }
.schedule-credit-row {
  display: grid;
  gap: 2px;
  padding: 7px 3px 0;
  border-top: 1px solid var(--schedule-card-border);
  background: transparent;
  color: #211d19;
  font-size: 13.5px;
  font-weight: 720;
  line-height: 1.4;
}
.schedule-credit-row span { display: block; min-width: 0; overflow-wrap: anywhere; }
.schedule-credit-row b { display: inline-block; min-width: 68px; color: var(--schedule-card-accent); margin-right: 3px; }

@media (max-width: 1000px) {
  .screening-schedule-days { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.movie-booking-intro {
  margin-bottom: 16px;
  padding: 20px;
  border: 1px solid rgba(31, 102, 80, .24);
  border-radius: 20px;
  background: linear-gradient(135deg, rgba(31, 102, 80, .08), #fffaf2);
}
.movie-booking-intro.is-full { border-color: rgba(179, 63, 47, .32); background: linear-gradient(135deg, rgba(179, 63, 47, .08), #fffaf2); }
.movie-booking-intro h3 { margin: 12px 0 8px; font-size: clamp(23px, 3vw, 31px); line-height: 1.25; }
.movie-booking-time { margin: 0 0 10px; color: var(--accent); }
.movie-booking-description {
  display: grid;
  gap: 5px;
  margin: 0 0 14px;
  padding: 13px 14px;
  border-left: 4px solid var(--accent);
  border-radius: 10px;
  background: rgba(255, 255, 255, .72);
  color: #4f443a;
  line-height: 1.7;
}
.movie-booking-description > strong { color: var(--brand-dark); font-size: 14px; font-weight: 950; }
.movie-booking-description > p { margin: 0; white-space: normal; overflow-wrap: anywhere; }
.movie-booking-event-row {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.movie-booking-event-label {
  display: inline-block;
  flex: 0 0 auto;
  width: fit-content;
  margin: 2px 0 1px;
  padding: 4px 9px;
  border-radius: 7px;
  background: #e8ed82;
  color: #37390b;
  font-size: 12px;
  font-weight: 950;
  line-height: 1.2;
}
.movie-booking-event-text {
  min-width: 0;
  color: var(--brand-dark);
  font-size: 13px;
  font-weight: 900;
  overflow-wrap: anywhere;
}
.movie-booking-description.has-event > p {
  padding-top: 7px;
  border-top: 1px solid rgba(44, 40, 107, .16);
}
.movie-booking-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; }
.movie-booking-facts div { padding: 10px 12px; border-radius: 12px; background: rgba(255, 255, 255, .72); }
.movie-booking-facts dt { color: var(--muted); font-size: 12px; font-weight: 800; }
.movie-booking-facts dd { margin: 3px 0 0; font-weight: 850; }
.closed-booking-notice { display: grid; gap: 4px; margin-top: 14px; padding: 14px 16px; border-radius: 14px; background: #b33f2f; color: #fff; }
.closed-booking-notice strong { font-size: 16px; }

.participant-metrics { grid-template-columns: repeat(auto-fit, minmax(118px, 1fr)) !important; margin-bottom: 16px; }
.participant-stats-table { min-width: 900px; }
.participant-history-badge {
  display: block;
  width: fit-content;
  margin-top: 5px;
  padding: 3px 7px;
  border-radius: 8px;
  background: rgba(49, 90, 139, .1);
  color: #315a8b;
  font-size: 10px;
  font-weight: 850;
  line-height: 1.35;
}

@media (max-width: 640px) {
  .screening-schedule-section { padding: 18px 14px; border-radius: 18px; }
  .screening-schedule-days { grid-template-columns: minmax(0, 1fr); }
  .schedule-day-card { padding: 11px 10px; }
  .schedule-movie-slot { min-height: 0; padding: 12px 12px 11px; }
  .schedule-movie-title { font-size: 24px; }
  .schedule-main-row { gap: 10px; }
  .schedule-time { font-size: 24px; }
  .schedule-movie-slot .badge { max-width: 118px; padding: 7px 9px; border-radius: 7px; font-size: 12px; }
  .schedule-credit-row { gap: 2px; padding: 7px 3px 0; font-size: 13px; }
  .schedule-credit-row b { min-width: 66px; }
  .movie-booking-intro { padding: 17px 15px; }
  .movie-booking-facts { grid-template-columns: 1fr 1fr; }
  .participant-metrics { grid-template-columns: repeat(auto-fit, minmax(108px, 1fr)) !important; }
}

/* v141: 기존 카드형 상영시간표 + 전체상영 목록형 보기 */
.classic-schedule-day-groups {
  display: grid;
  gap: 9px;
}

.classic-schedule-day-group {
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--schedule-card-border, rgba(31, 102, 80, .22));
  border-radius: 18px;
  background: var(--schedule-card-bg, #f2f7f5);
}

.classic-schedule-day-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  margin-bottom: 5px;
  padding: 0 1px;
}

.classic-schedule-day-heading h3 {
  margin: 0;
  color: var(--schedule-card-accent, var(--brand-dark));
  font-size: clamp(22px, 2.4vw, 29px);
  line-height: 1.2;
}

.classic-schedule-day-heading h3 span {
  font-size: .78em;
}

.classic-schedule-day-heading strong {
  flex: 0 0 auto;
  padding: 5px 8px;
  border-radius: 10px;
  background: rgba(255, 255, 255, .74);
  color: var(--schedule-card-accent, var(--brand-dark));
  font-size: 13px;
}

.classic-schedule-time-groups {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  align-items: start;
}

.classic-schedule-time-group {
  display: grid;
  gap: 4px;
}

.classic-schedule-time-group + .classic-schedule-time-group {
  padding-top: 0;
  border-top: 0;
}

.classic-schedule-time-heading {
  display: flex;
  align-items: center;
  gap: 9px;
  min-height: 32px;
}

.classic-schedule-group-choice {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  margin: 0;
  padding: 0 1px 4px;
  border-bottom: 1px solid var(--schedule-card-border, rgba(31, 102, 80, .3));
}

.classic-schedule-group-choice strong {
  color: var(--schedule-card-accent, var(--brand-dark));
  font-size: clamp(17px, 1.8vw, 21px);
  font-weight: 950;
  line-height: 1.25;
}

.classic-schedule-group-choice span {
  color: #65594e;
  font-size: 12px;
  font-weight: 800;
  text-align: left;
}

.classic-schedule-group-choice.is-placeholder {
  visibility: hidden;
}

.classic-schedule-time-heading > span {
  color: var(--schedule-card-accent, var(--brand-dark));
  font-size: 20px;
  font-weight: 950;
  letter-spacing: -.02em;
}

.classic-schedule-time-heading strong {
  padding: 5px 9px;
  border-radius: 8px;
  background: var(--schedule-card-accent, var(--brand-dark));
  color: #fff;
  font-size: 11px;
  font-weight: 900;
}

.classic-schedule-time-group.is-conflict-group {
  padding: 4px;
  border: 2px solid var(--schedule-card-accent, rgba(31, 102, 80, .55));
  border-radius: 16px;
  background: rgba(255, 255, 255, .42);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .6);
}

.classic-schedule-time-group:not(.is-conflict-group) {
  padding: 4px;
  border: 2px solid transparent;
}

.classic-schedule-time-group .classic-schedule-grid {
  grid-template-columns: minmax(0, 1fr);
  gap: 5px;
}

.classic-schedule-time-group.is-conflict-group .classic-schedule-card {
  width: 100%;
}

.layout-preview-card {
  border-style: dashed;
}

.layout-preview-card .compact-book-btn:disabled {
  opacity: .72;
}

.classic-schedule-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.classic-schedule-card {
  min-height: 0;
}

.classic-schedule-card .screening-top {
  position: relative;
  min-height: 136px;
  padding: 13px 14px 11px;
}

.classic-schedule-card .compact-badges {
  padding-right: 112px;
}

.classic-schedule-card .screening-title {
  padding-right: 74px;
  font-size: clamp(21px, 2vw, 27px);
  line-height: 1.28;
}

.classic-schedule-card .screening-meta {
  font-size: 14px;
  line-height: 1.55;
}

.classic-screening-meta {
  display: grid;
  gap: 2px;
}

.screening-card-time {
  color: #1e1915;
  font-family: "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", sans-serif;
  font-size: 22px;
  font-weight: 950;
  line-height: 1.15;
  letter-spacing: -.03em;
}

.classic-screening-meta > span {
  color: var(--muted);
  font-size: 14px;
  font-weight: 750;
}

.classic-schedule-card .compact-screening-body {
  padding: 9px 12px 10px;
}

.classic-schedule-card .compact-book-btn {
  min-height: 44px;
  border-radius: 14px;
  font-size: 17px;
  font-weight: 900;
}

.classic-schedule-card .compact-staff-btn {
  min-height: 34px;
  padding: 8px 10px !important;
  border-radius: 12px !important;
  font-size: 11px !important;
}

.screening-corner-date {
  position: absolute;
  top: 10px;
  right: 10px;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 58px;
  min-height: 62px;
  padding: 7px 12px 8px;
  border: 1px solid rgba(58, 41, 27, .14);
  border-radius: 11px;
  background: rgba(255, 250, 242, .92);
  color: var(--brand-dark);
  line-height: 1;
  box-shadow: 0 5px 12px rgba(58, 41, 27, .07);
}

.screening-corner-date strong {
  font-size: 21px;
  font-weight: 950;
  line-height: 1.05;
}

.screening-corner-date small {
  margin-top: 4px;
  font-size: 13px;
  font-weight: 900;
  line-height: 1;
}

.all-screenings-section {
  margin-top: 24px;
  padding: clamp(18px, 2.4vw, 26px);
  border: 1px solid var(--line);
  border-radius: 24px;
  background: rgba(255, 250, 242, .84);
  box-shadow: 0 12px 28px rgba(58, 41, 27, .07);
}

.all-screening-filters {
  grid-template-columns: minmax(210px, 1.35fr) repeat(3, minmax(135px, .8fr));
  margin: 14px 0 16px;
}

.all-screening-list {
  display: grid;
  gap: 8px;
}

.all-screening-list-head,
.all-screening-row {
  display: grid;
  grid-template-columns: minmax(105px, .8fr) 82px minmax(210px, 1.8fr) minmax(130px, 1fr) minmax(145px, 1.1fr) 104px;
  gap: 10px;
  align-items: center;
}

.all-screening-list-head {
  padding: 9px 14px;
  border-radius: 11px;
  background: #2b221d;
  color: #fff;
  font-size: 12px;
  font-weight: 850;
}

.all-screening-row {
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fffdf8;
  box-shadow: 0 5px 12px rgba(58, 41, 27, .045);
  cursor: pointer;
  transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}

.all-screening-row:hover {
  transform: translateY(-1px);
  border-color: rgba(31, 102, 80, .42);
  box-shadow: 0 8px 17px rgba(58, 41, 27, .08);
}

.all-screening-row:focus-visible {
  outline: 3px solid #d99b2b;
  outline-offset: 2px;
}

.all-screening-row.is-full {
  background: #fff9f6;
  border-color: rgba(179, 38, 30, .22);
}

.all-screening-date,
.all-screening-title {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.all-screening-date strong { font-size: 14px; }
.all-screening-date span,
.all-screening-title span { color: var(--muted); font-size: 11px; line-height: 1.35; }
.all-screening-time { color: var(--accent); font-size: 16px; font-weight: 900; font-variant-numeric: tabular-nums; }
.all-screening-title strong { font-size: 16px; line-height: 1.3; overflow-wrap: anywhere; }
.all-screening-venue { font-size: 13px; font-weight: 750; line-height: 1.4; }
.all-screening-status .badge { border-radius: 8px; line-height: 1.25; text-align: center; white-space: normal; }
.all-screening-book { min-height: 38px; padding: 8px 10px; border-radius: 10px; font-size: 12px; }

@media (max-width: 1000px) {
  .classic-schedule-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .classic-schedule-time-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .all-screening-list-head { display: none; }
  .all-screening-row {
    grid-template-columns: 96px 82px minmax(180px, 1fr) minmax(120px, .8fr) 130px;
  }
  .all-screening-row .all-screening-book { grid-column: 1 / -1; width: 100%; }
}

@media (max-width: 640px) {
  .classic-schedule-day-groups { gap: 8px; }
  .classic-schedule-day-group { padding: 7px; border-radius: 14px; }
  .classic-schedule-day-heading { margin-bottom: 5px; }
  .classic-schedule-day-heading h3 { font-size: 21px; }
  .classic-schedule-day-heading strong { padding: 6px 9px; font-size: 11px; }
  .classic-schedule-time-groups { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .classic-schedule-time-group + .classic-schedule-time-group { padding-top: 0; }
  .classic-schedule-time-group.is-conflict-group { padding: 4px; border-radius: 12px; }
  .classic-schedule-time-group:not(.is-conflict-group) { padding: 4px; }
  .classic-schedule-time-group.is-conflict-group .classic-schedule-card { width: 100%; }
  .classic-schedule-group-choice { padding-bottom: 4px; }
  .classic-schedule-group-choice strong { font-size: 17px; }
  .classic-schedule-group-choice span { font-size: 11px; text-align: left; }
  .classic-schedule-grid { grid-template-columns: minmax(0, 1fr); gap: 7px; }
  .classic-schedule-card .screening-top { min-height: 132px; padding: 12px 12px 10px; }
  .classic-schedule-card .compact-badges { padding-right: 100px; }
  .classic-schedule-card .screening-title { font-size: 22px; }
  .classic-schedule-card .screening-meta { font-size: 13px; }
  .screening-card-time { font-size: 21px; }
  .screening-corner-date { top: 9px; right: 9px; min-width: 54px; min-height: 58px; padding: 7px 10px; }
  .screening-corner-date strong { font-size: 20px; }
  .screening-corner-date small { font-size: 12px; }
  .classic-schedule-card .compact-screening-body { padding: 8px 10px 9px; }
  .classic-schedule-card .compact-book-btn { min-height: 43px; font-size: 16px; }
  .classic-schedule-card .compact-staff-btn { min-height: 36px; font-size: 10px !important; }
  .all-screenings-section { padding: 17px 13px; border-radius: 18px; }
  .all-screening-filters { grid-template-columns: 1fr 1fr; gap: 8px; }
  .all-screening-filters #searchInput { grid-column: 1 / -1; }
  .all-screening-row {
    grid-template-columns: 82px minmax(0, 1fr);
    gap: 6px 10px;
    padding: 12px;
  }
  .all-screening-date { grid-column: 1; grid-row: 1 / span 2; align-self: start; }
  .all-screening-time { grid-column: 1; grid-row: 3; font-size: 14px; }
  .all-screening-title { grid-column: 2; grid-row: 1; }
  .all-screening-title strong { font-size: 15px; }
  .all-screening-venue { grid-column: 2; grid-row: 2; }
  .all-screening-status { grid-column: 2; grid-row: 3; }
  .all-screening-book { grid-column: 1 / -1 !important; grid-row: 4; width: 100%; margin-top: 4px; }
}

/* v156 최고관리자 설문 문항 편집표 압축·가독성 개선 */
.survey-question-table-wrap {
  border-radius: 12px;
}

.survey-question-table {
  width: 100%;
  min-width: 860px;
  table-layout: fixed;
}

.survey-question-table th,
.survey-question-table td {
  padding: 6px 7px;
  vertical-align: middle;
}

.survey-question-table th {
  font-size: 12px;
  line-height: 1.25;
  text-align: center;
}

.survey-question-table td {
  font-size: 13px;
  line-height: 1.3;
}

.survey-question-table th:nth-child(1),
.survey-question-table td:nth-child(1) { width: 42px; text-align: center; }
.survey-question-table th:nth-child(2),
.survey-question-table td:nth-child(2) { width: 58px; }
.survey-question-table th:nth-child(3),
.survey-question-table td:nth-child(3) { width: 84px; }
.survey-question-table th:nth-child(4),
.survey-question-table td:nth-child(4) { width: 245px; }
.survey-question-table th:nth-child(5),
.survey-question-table td:nth-child(5) { width: 220px; }
.survey-question-table th:nth-child(6),
.survey-question-table td:nth-child(6) { width: 42px; text-align: center; }
.survey-question-table th:nth-child(7),
.survey-question-table td:nth-child(7) { width: 169px; min-width: 0; }

.survey-question-table .input {
  height: 38px;
  min-height: 38px;
  padding: 7px 9px;
  border-radius: 9px;
  font-size: 13px;
  line-height: 1.2;
  white-space: nowrap;
}

.survey-question-table .compact-input,
.survey-question-table .compact-select {
  width: 100%;
  min-width: 0;
  max-width: none;
}

.survey-question-table input[type="checkbox"] {
  width: 20px;
  height: 20px;
  margin: 0;
}

.survey-question-actions {
  display: flex;
  flex-wrap: nowrap;
  justify-content: center;
  gap: 4px;
}

.survey-question-actions .btn {
  min-width: 34px;
  min-height: 34px;
  padding: 6px 8px;
  border-radius: 7px;
  font-size: 11px;
  line-height: 1;
  white-space: nowrap;
}

#surveyQuestionsForm > .form-actions {
  margin-top: 10px;
  gap: 8px;
}

#surveyQuestionsForm > .form-actions .btn {
  min-height: 42px;
  padding: 9px 14px;
}

@media (max-width: 760px) {
  .survey-question-table { min-width: 860px; }
  .survey-question-table th:nth-child(4),
  .survey-question-table td:nth-child(4) { width: 245px; }
  .survey-question-table th:nth-child(5),
  .survey-question-table td:nth-child(5) { width: 220px; }
  .survey-question-table th:nth-child(7),
  .survey-question-table td:nth-child(7) { width: 169px; }
}

/* v157 상영작 분류별 카드 그라데이션 */
.screening-category-color-1 { --category-accent: #176b55; --category-badge-bg: #d7eee5; --category-badge-ink: #125440; --category-border: rgba(23, 107, 85, .32); --category-grad-a: #edf8f3; --category-grad-b: #dceee7; }
.screening-category-color-2 { --category-accent: #9a6214; --category-badge-bg: #f7e7c7; --category-badge-ink: #77480c; --category-border: rgba(154, 98, 20, .3); --category-grad-a: #fff8e9; --category-grad-b: #f6ead2; }
.screening-category-color-3 { --category-accent: #2b628d; --category-badge-bg: #dbeaf5; --category-badge-ink: #204d70; --category-border: rgba(43, 98, 141, .3); --category-grad-a: #eff7fc; --category-grad-b: #dfeef7; }
.screening-category-color-4 { --category-accent: #a54f3d; --category-badge-bg: #f5ded7; --category-badge-ink: #7f382b; --category-border: rgba(165, 79, 61, .3); --category-grad-a: #fff2ed; --category-grad-b: #f5e1da; }
.screening-category-color-5 { --category-accent: #6c4f91; --category-badge-bg: #e9dff3; --category-badge-ink: #51366f; --category-border: rgba(108, 79, 145, .3); --category-grad-a: #f8f2fc; --category-grad-b: #e9e0f3; }
.screening-category-color-6 { --category-accent: #82612e; --category-badge-bg: #eee2ca; --category-badge-ink: #65481f; --category-border: rgba(130, 97, 46, .3); --category-grad-a: #faf6eb; --category-grad-b: #eee6d4; }

.screening-card[class*="screening-category-color-"] {
  border-color: var(--category-border);
}

.screening-card[class*="screening-category-color-"] .screening-top {
  background: linear-gradient(135deg, var(--category-grad-a) 0%, var(--category-grad-b) 100%);
  border-bottom-color: var(--category-border);
}

.category-badge {
  background: #eee6dc;
  color: #4f4338;
  border: 1px solid rgba(79, 67, 56, .12);
  font-weight: 900;
}

.screening-card[class*="screening-category-color-"] .category-badge {
  background: var(--category-badge-bg);
  color: var(--category-badge-ink);
  border-color: var(--category-border);
}

.screening-card[class*="screening-category-color-"] .screening-card-time {
  color: var(--category-accent);
}

/* v158 시간표 카드 좌석상황·관람연령 표시 */
.classic-screening-meta .screening-card-venue-line {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  color: var(--muted);
  font-size: 14px;
  font-weight: 750;
}

.classic-screening-meta .age-rating-badge,
.classic-screening-meta .runtime-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  padding: 3px 7px;
  border: 1px solid rgba(58, 41, 27, .13);
  border-radius: 7px;
  background: rgba(255, 255, 255, .72);
  color: #51463d;
  font-size: 10px;
  font-weight: 900;
  line-height: 1.2;
  white-space: nowrap;
}

.classic-screening-meta .runtime-badge {
  background: rgba(58, 41, 27, .07);
  color: #42382f;
}

/* v161 상영시간 옆 감독 배지 */
.classic-screening-meta .screening-card-time-line {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
}

.classic-screening-meta .director-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  padding: 3px 7px;
  border: 1px solid var(--category-border, rgba(58, 41, 27, .14));
  border-radius: 7px;
  background: var(--category-badge-bg, rgba(255, 255, 255, .72));
  color: var(--category-badge-ink, #51463d);
  font-size: 10px;
  font-weight: 900;
  line-height: 1.2;
  white-space: nowrap;
}

/* v162 관리자가 지정하는 강제 예약 그룹 */
.classic-schedule-time-group.is-forced-group {
  padding: 5px;
  border: 3px solid #6d4aa5;
  border-radius: 17px;
  background: linear-gradient(145deg, rgba(244, 238, 252, .96), rgba(235, 225, 248, .76));
  box-shadow: 0 9px 20px rgba(82, 53, 125, .12), inset 0 0 0 1px rgba(255, 255, 255, .72);
}

.classic-schedule-time-group.is-forced-group .classic-schedule-group-choice {
  background: #6d4aa5;
  color: #fff;
}

.classic-schedule-time-group.is-forced-group .classic-schedule-group-choice span {
  color: rgba(255, 255, 255, .86);
}

.classic-schedule-time-group.is-forced-group .classic-schedule-card {
  width: 100%;
}

.forced-booking-group-badge {
  background: #ebe0f7;
  color: #573681;
  border-color: rgba(109, 74, 165, .25);
}

.forced-booking-notice {
  display: grid;
  gap: 3px;
  margin: 9px 0;
  padding: 9px 11px;
  border: 1px solid rgba(109, 74, 165, .28);
  border-radius: 10px;
  background: #f5effb;
  color: #4f326f;
}

.forced-booking-notice strong { font-size: 13px; }
.forced-booking-notice span { font-size: 12px; line-height: 1.4; }

/* v164 모든 예약 제한 그룹은 한 열에 최대 3개씩 배치 */
.classic-schedule-time-group.booking-group-columns-2 { grid-column: span 2; }
.classic-schedule-time-group.booking-group-columns-3 { grid-column: span 3; }

.classic-schedule-time-group .classic-schedule-grid {
  display: grid;
  grid-template-columns: repeat(var(--booking-group-columns), minmax(0, 1fr));
  grid-template-rows: repeat(var(--booking-group-rows), auto);
  grid-auto-flow: column;
  gap: 5px;
}

.classic-schedule-card .compact-badges {
  flex-wrap: nowrap;
  gap: 3px;
  padding-right: 70px;
}

.classic-schedule-card .compact-badges .badge {
  flex: 0 1 auto;
  min-width: 0;
  padding: 3px 5px;
  font-size: 9px;
  line-height: 1.15;
  white-space: nowrap;
}

.classic-schedule-card .compact-badges .category-badge {
  overflow: hidden;
  text-overflow: ellipsis;
}

@media (max-width: 1000px) {
  .classic-schedule-time-group.booking-group-columns-3 { grid-column: span 2; }
}

@media (max-width: 640px) {
  .classic-schedule-time-group {
    grid-column: span 1 !important;
  }

  .classic-schedule-time-group .classic-schedule-grid {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
    grid-auto-flow: row;
  }

  .classic-schedule-card .compact-badges { padding-right: 66px; }
}

/* v165 그룹의 빈 슬롯에 다음 단독 상영작을 채우고 그룹 구성원을 구분 */
.classic-schedule-time-group.has-schedule-fillers {
  padding: 0;
  border-color: transparent;
  background: transparent;
  box-shadow: none;
}

.classic-schedule-time-group.has-schedule-fillers .classic-schedule-group-choice {
  padding: 6px 8px;
  border: 2px solid var(--schedule-card-accent, #2d6d96);
  border-radius: 13px;
  background: color-mix(in srgb, var(--schedule-card-accent, #2d6d96) 13%, #fff);
}

.classic-schedule-time-group.has-schedule-fillers.is-forced-group .classic-schedule-group-choice {
  border-color: #6d4aa5;
  background: #6d4aa5;
}

.classic-schedule-time-group.has-schedule-fillers .schedule-group-member-card {
  outline: 2px solid var(--schedule-card-accent, #2d6d96);
  outline-offset: -1px;
}

.classic-schedule-time-group.has-schedule-fillers.is-forced-group .schedule-group-member-card {
  outline-color: #6d4aa5;
}

.classic-schedule-time-group.has-schedule-fillers .schedule-group-filler-card {
  outline: 0;
  box-shadow: var(--shadow-soft);
}

.admin-group-release {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  min-height: 100%;
  padding: 12px 13px;
  border: 2px solid #d9c7b4;
  border-radius: 12px;
  background: #fffaf3;
  cursor: pointer;
}

.admin-group-release input {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  margin-top: 1px;
  accent-color: #b84332;
}

.admin-group-release span { display: grid; gap: 4px; }
.admin-group-release strong { font-size: 14px; }
.admin-group-release small { color: var(--muted); font-size: 11px; line-height: 1.45; }
.admin-group-release:has(input:checked) { border-color: #b84332; background: #fff0ed; }

.group-release-badge {
  border-color: rgba(184, 67, 50, .28);
  background: #fff0ed;
  color: #9f3023;
}

/* v166 전체 시간표와 강제 그룹 표기 정리 */
.classic-schedule-time-group.is-forced-group .classic-schedule-group-choice strong {
  color: #ffe36a;
}

.schedule-full-view-btn {
  flex: 0 0 auto;
  min-height: 42px;
  padding: 10px 15px;
  border-color: rgba(38, 91, 117, .35);
  background: #fffdf8;
  color: #234f68;
  font-size: 13px;
}

.full-schedule-page {
  padding: 26px 22px 34px;
  border: 1px solid #e3d7c9;
  border-radius: 24px;
  background: linear-gradient(150deg, #fffdf8 0%, #f7f1e8 58%, #edf5f4 100%);
  box-shadow: 0 24px 55px rgba(53, 43, 33, .1);
}

.full-schedule-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 16px;
}

.full-schedule-heading h1 {
  margin: 7px 0 5px;
  color: #1f4f59;
  font-size: clamp(28px, 4vw, 46px);
  line-height: 1.08;
  letter-spacing: -.05em;
}

.full-schedule-heading .eyebrow {
  color: #171515 !important;
}

.full-schedule-heading p { margin: 0; color: #665c52; line-height: 1.55; }

.timeline-legend {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 12px;
  padding: 10px 13px;
  border: 1px solid #ded2c3;
  border-radius: 12px;
  background: rgba(255, 255, 255, .78);
  color: #5f554c;
  font-size: 12px;
}

.timeline-legend span { display: inline-flex; align-items: center; gap: 6px; }
.timeline-legend strong { margin-left: auto; color: #1f6656; }
.legend-dot { width: 10px; height: 10px; border-radius: 50%; background: #27846a; }
.legend-dot.is-full { background: #b94a3b; }

.festival-timeline-scroll {
  overflow-x: auto;
  border: 1px solid #c9bcad;
  border-radius: 17px;
  background: #fff;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.8);
}

.festival-timeline {
  display: grid;
  grid-template-columns: 82px repeat(var(--timeline-days), minmax(230px, 1fr));
  align-items: start;
}

.timeline-time-heading,
.timeline-day-heading {
  position: sticky;
  top: 0;
  z-index: 5;
  min-height: 64px;
  padding: 11px 10px;
  border-right: 1px solid #c9bcad;
  border-bottom: 2px solid #756658;
  background: rgba(252, 249, 243, .96);
  backdrop-filter: blur(9px);
}

.timeline-time-heading {
  display: grid;
  place-items: center;
  color: #544a42;
  font-size: 12px;
  font-weight: 900;
}

.timeline-day-heading {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 5px;
  color: #173e48;
}

.timeline-day-heading strong { font-size: 20px; }
.timeline-day-heading span { font-size: 15px; font-weight: 900; }
.timeline-day-heading small {
  margin-left: 3px;
  padding: 3px 6px;
  border-radius: 7px;
  background: #edf1ee;
  color: #6e635a;
  font-size: 9px;
}

.timeline-time-axis {
  position: relative;
  border-right: 1px solid #c9bcad;
  background: #faf7f1;
}

.timeline-time-axis span {
  position: absolute;
  right: 10px;
  z-index: 2;
  color: #4f4640;
  font-size: 12px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
  transform: translateY(-50%);
}

.timeline-time-axis span:first-child { transform: translateY(7px); }

.timeline-day-column {
  position: relative;
  overflow: hidden;
  border-right: 1px solid #d8cfc3;
  background-color: #fffdf9;
  background-image: repeating-linear-gradient(to bottom, transparent 0, transparent 26px, rgba(109, 94, 79, .1) 27px);
}

.timeline-day-tone-1 { background-color: #f1f8f5; }
.timeline-day-tone-2 { background-color: #f5f8fc; }
.timeline-day-tone-3 { background-color: #fff8e7; }
.timeline-day-tone-4 { background-color: #f7f2fb; }
.timeline-day-tone-5 { background-color: #fff2ec; }

.timeline-hour-line {
  position: absolute;
  left: 0;
  right: 0;
  height: 1px;
  border-top: 1px dotted rgba(80, 67, 55, .42);
}

.timeline-movie {
  position: absolute;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 3px;
  overflow: hidden;
  padding: 8px 8px 7px;
  border: 1px solid var(--category-border, rgba(45, 89, 76, .28));
  border-left: 5px solid var(--category-accent, #2b745d);
  border-radius: 11px;
  background: linear-gradient(145deg, var(--category-grad-a, #f0f8f4), var(--category-grad-b, #dfefe7));
  color: #241f1b;
  font: inherit;
  text-align: left;
  box-shadow: 0 5px 14px rgba(57, 48, 39, .12);
  cursor: pointer;
  transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
}

.timeline-movie:hover {
  z-index: 4;
  transform: translateY(-2px) scale(1.015);
  filter: saturate(1.05);
  box-shadow: 0 10px 22px rgba(57, 48, 39, .2);
}

.timeline-movie:focus-visible { z-index: 5; outline: 4px solid #f0b429; outline-offset: 2px; }
.timeline-movie.is-full { filter: grayscale(.28); opacity: .78; }
.timeline-movie strong { overflow: hidden; font-size: 13px; line-height: 1.25; overflow-wrap: anywhere; }
.timeline-movie span { color: var(--category-accent, #2b745d); font-size: 10px; font-weight: 900; line-height: 1.25; }
.timeline-movie small { overflow: hidden; color: #6c6259; font-size: 9px; line-height: 1.2; white-space: nowrap; text-overflow: ellipsis; }

.timeline-footnote {
  margin: 12px 2px 0;
  color: #655a50;
  font-size: 12px;
  text-align: right;
}

@media (max-width: 700px) {
  .schedule-full-view-btn { width: 100%; margin-top: 8px; }
  .full-schedule-page { padding: 18px 10px 24px; border-radius: 17px; }
  .full-schedule-heading { align-items: stretch; flex-direction: column; }
  .full-schedule-heading .btn { width: 100%; }
  .timeline-legend { flex-wrap: wrap; gap: 8px 12px; }
  .timeline-legend strong { width: 100%; margin-left: 0; }
  .festival-timeline { grid-template-columns: 72px repeat(var(--timeline-days), minmax(210px, 1fr)); }
  .timeline-time-heading { font-size: 10px; }
}

/* v167 전체 시간표 가로 폭과 여백 압축 */
.schedule-title-action-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.schedule-title-action-row h2 { margin: 0; }

.schedule-title-action-row .schedule-full-view-btn {
  width: auto;
  min-height: 46px;
  margin: 0;
  padding: 10px 17px;
  border-width: 2px;
  font-size: 16px;
  font-weight: 950;
}

.full-schedule-page { padding: 18px 12px 24px; }
.full-schedule-heading { gap: 12px; margin-bottom: 10px; }
.timeline-legend { gap: 10px; margin-bottom: 7px; padding: 7px 9px; }

.festival-timeline {
  width: 100%;
  grid-template-columns: 56px repeat(var(--timeline-days), minmax(0, 1fr));
}

.timeline-time-heading,
.timeline-day-heading {
  min-height: 52px;
  padding: 7px 4px;
}

.timeline-time-heading { font-size: 10px; }
.timeline-day-heading { gap: 3px; }
.timeline-day-heading strong { font-size: 17px; }
.timeline-day-heading span { font-size: 13px; }
.timeline-day-heading small { margin-left: 1px; padding: 2px 4px; font-size: 8px; }

.timeline-time-axis span { right: 5px; font-size: 10px; }

.timeline-movie {
  gap: 2px;
  padding: 5px 5px 4px;
  border-left-width: 4px;
  border-radius: 8px;
  box-shadow: 0 3px 9px rgba(57, 48, 39, .1);
}

.timeline-movie strong { font-size: 14px; line-height: 1.2; }
.timeline-movie span { font-size: 9px; line-height: 1.18; }
.timeline-movie small { font-size: 8px; }

@media (max-width: 700px) {
  .schedule-title-action-row { align-items: flex-start; flex-direction: column; }
  .schedule-title-action-row .schedule-full-view-btn { width: auto; }
  .festival-timeline { grid-template-columns: 54px repeat(var(--timeline-days), minmax(150px, 1fr)); }
}

/* v168 최고관리자 시간표 드래그 편집 + 전체시간표 가독성 개선 */
.schedule-order-editor {
  border: 2px solid #2d6557;
  background: linear-gradient(150deg, #fffdf8, #eef7f3);
}

.schedule-order-editor-heading { align-items: flex-start; }
.schedule-order-editor-heading h2 { margin: 3px 0 5px; font-size: 26px; }
.schedule-order-editor-heading p { max-width: 760px; margin: 0; font-size: 14px; line-height: 1.6; }

.schedule-order-days { display: grid; gap: 13px; }
.schedule-order-day { overflow: hidden; border: 1px solid #d8c9b8; border-radius: 15px; background: #fffaf2; }
.schedule-order-day-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 9px 12px;
  border-bottom: 1px solid #dccfc0;
  background: rgba(255, 255, 255, .58);
}
.schedule-order-day-title h3 { margin: 0; color: #543f2d; font-size: 20px; }
.schedule-order-day-title h3 span { font-size: 15px; }
.schedule-order-day-title strong { color: #2d6557; font-size: 13px; }

.schedule-order-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  min-height: 92px;
  padding: 9px;
  transition: background .15s ease, box-shadow .15s ease;
}
.schedule-order-grid.is-drag-over { background: rgba(255, 224, 120, .2); box-shadow: inset 0 0 0 3px rgba(207, 139, 20, .28); }

.schedule-order-card {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 2px 8px;
  min-width: 0;
  padding: 9px 10px 8px;
  border: 2px solid var(--category-border, #bfd8cf);
  border-left: 6px solid var(--category-accent, #2d6557);
  border-radius: 11px;
  background: linear-gradient(145deg, var(--category-grad-a, #f4faf7), var(--category-grad-b, #e4f1eb));
  box-shadow: 0 3px 8px rgba(61, 48, 35, .1);
  cursor: grab;
  user-select: none;
}
.schedule-order-card:active { cursor: grabbing; }
.schedule-order-card.is-dragging { opacity: .38; transform: scale(.97); }
.schedule-order-card.is-drop-target { outline: 4px solid #efb52e; outline-offset: 2px; }
.schedule-order-card-index {
  grid-row: 2 / span 3;
  align-self: center;
  display: grid;
  place-items: center;
  width: 29px;
  height: 29px;
  border-radius: 8px;
  background: #211c18;
  color: #fff;
  font-size: 13px;
  font-weight: 950;
}
.schedule-drag-handle {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--category-accent, #2d6557);
  font-size: 18px;
  font-weight: 950;
  letter-spacing: 1px;
}
.schedule-drag-handle span { font-size: 11px; letter-spacing: 0; }
.schedule-order-card > strong { min-width: 0; font-size: 16px; line-height: 1.25; overflow-wrap: anywhere; }
.schedule-order-card > span { color: #3d352d; font-size: 12px; font-weight: 850; }
.schedule-order-card > small { color: #6c5f52; font-size: 10px; font-weight: 750; }
.schedule-order-card-actions { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 5px; margin-top: 5px; }
.schedule-order-card-actions button {
  min-height: 30px;
  border: 1px solid #cdbdab;
  border-radius: 7px;
  background: #fffdf9;
  color: #302821;
  font: inherit;
  font-size: 11px;
  font-weight: 900;
  cursor: pointer;
}
.schedule-order-card-actions button:disabled { opacity: .35; cursor: default; }

.timeline-day-heading strong { font-size: 19px; letter-spacing: -.35px; }
.timeline-day-heading span { font-size: 14px; font-weight: 900; }
.timeline-day-heading small { font-size: 9px; }
.timeline-time-axis span { font-size: 11px; font-weight: 900; }
.timeline-movie {
  gap: 3px;
  padding: 6px 7px 5px;
  border-width: 2px;
  border-left-width: 5px;
  box-shadow: 0 4px 11px rgba(57, 48, 39, .14);
}
.timeline-movie strong { font-size: 16px; font-weight: 950; line-height: 1.16; letter-spacing: -.25px; }
.timeline-movie span { font-size: 11.5px; font-weight: 950; line-height: 1.2; }
.timeline-movie small { color: #574d44; font-size: 10px; font-weight: 800; line-height: 1.2; }
.timeline-movie.is-narrow { padding-right: 4px; padding-left: 5px; }
.timeline-movie.is-narrow strong { font-size: 13px; }
.timeline-movie.is-narrow span { font-size: 9.5px; }
.timeline-movie.is-narrow small { font-size: 8.5px; }

@media (max-width: 900px) {
  .schedule-order-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 620px) {
  .schedule-order-grid { grid-template-columns: 1fr; }
  .schedule-order-editor-heading .btn { width: 100%; }
}

/* v169 달력형 텍스트 중심 전체 상영시간표 */
.festival-text-schedule {
  display: grid;
  grid-template-columns: repeat(var(--schedule-days), minmax(0, 1fr));
  overflow: hidden;
  border: 1px solid #bbb5ad;
  border-radius: 10px;
  background: #fff;
}

.festival-text-day {
  min-width: 0;
  border-right: 1px solid #cbc6bf;
  background-image: none;
}
.festival-text-day:last-child { border-right: 0; }

.festival-text-day-heading {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 5px;
  min-height: 48px;
  padding: 10px 5px 8px;
  border-bottom: 2px solid #8c867e;
  background: rgba(248, 247, 245, .92);
  color: #161616;
  text-align: center;
}
.festival-text-day-heading strong { font-size: 19px; line-height: 1; }
.festival-text-day-heading span { font-size: 14px; font-weight: 950; }
.festival-text-day-heading small {
  padding: 2px 4px;
  border-radius: 4px;
  background: #eceae6;
  color: #655f57;
  font-size: 9px;
  font-weight: 850;
}

.festival-text-movie-list { display: flex; flex-direction: column; }

.festival-text-movie {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 3px;
  min-width: 0;
  padding: 11px 9px 10px;
  border: 0;
  border-bottom: 1px solid #d8d4cd;
  background: transparent;
  color: #171717;
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: background .15s ease, box-shadow .15s ease;
}
.festival-text-movie:last-child { border-bottom: 0; }
.festival-text-movie:hover { background: rgba(255, 255, 255, .82); box-shadow: inset 4px 0 0 #0878ed; }
.festival-text-movie:focus-visible { outline: 3px solid #f0aa1c; outline-offset: -3px; }
.festival-text-movie.is-full { background: rgba(248, 242, 239, .72); }

.festival-text-movie-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 5px;
  min-width: 0;
}
.festival-text-movie-topline b {
  color: #006ee6;
  font-size: 17px;
  font-weight: 950;
  line-height: 1.05;
  font-variant-numeric: tabular-nums;
}
.festival-text-movie-topline em {
  flex: 0 0 auto;
  padding: 2px 4px;
  border-radius: 3px;
  background: #248360;
  color: #fff;
  font-size: 8px;
  font-style: normal;
  font-weight: 900;
}
.festival-text-movie-topline em.warn { background: #d17a10; }
.festival-text-movie-topline em.danger { background: #bd4335; }

.festival-text-movie > strong {
  min-width: 0;
  font-size: 15px;
  font-weight: 950;
  line-height: 1.25;
  letter-spacing: -.2px;
  overflow-wrap: anywhere;
}
.festival-text-venue {
  color: #3d3a36;
  font-size: 11px;
  font-weight: 750;
  line-height: 1.3;
  overflow-wrap: anywhere;
}
.festival-text-meta { display: flex; flex-wrap: wrap; gap: 3px; }
.festival-text-meta i {
  padding: 1px 4px;
  border-radius: 3px;
  background: #e8edf3;
  color: #3d4854;
  font-size: 9px;
  font-style: normal;
  font-weight: 850;
  line-height: 1.35;
}
.festival-text-movie > small {
  color: #8e5a0e;
  font-size: 9px;
  font-weight: 850;
  line-height: 1.3;
}

@media (max-width: 900px) {
  .festival-text-schedule { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .festival-text-day { border-bottom: 1px solid #bbb5ad; }
}

@media (max-width: 560px) {
  .festival-text-schedule { grid-template-columns: 1fr; }
  .festival-text-day { border-right: 0; }
  .festival-text-movie { padding: 12px 11px; }
  .festival-text-movie > strong { font-size: 16px; }
}

/* v170 동일 영화·장소의 반복 회차를 하나의 연속상영으로 표시 */
.continuous-series-card { width: 100%; max-width: none; }
.continuous-series-card .screening-top { min-height: 0; }
.continuous-series-meta { display: grid; gap: 4px; margin-top: 5px; }
.continuous-series-time {
  color: var(--category-accent, #1e6d57);
  font-size: clamp(24px, 3vw, 34px);
  font-weight: 950;
  line-height: 1;
  letter-spacing: -.5px;
  font-variant-numeric: tabular-nums;
}
.continuous-series-meta > strong { color: #624516; font-size: 14px; }
.continuous-series-meta > span { color: #50473f; font-size: 12px; font-weight: 800; }
.continuous-series-card .compact-book-btn { font-size: 14px; }

.festival-text-series {
  background: rgba(255, 249, 225, .78);
  box-shadow: inset 4px 0 0 #d0931f;
}
.festival-text-series .festival-text-movie-topline b { font-size: 18px; }
.festival-text-series-interval {
  color: #9a6410;
  font-size: 10px;
  font-weight: 950;
}

.continuous-series-booking-intro {
  display: grid;
  gap: 5px;
  margin-bottom: 14px;
  padding: 16px;
  border: 2px solid #d5a343;
  border-radius: 14px;
  background: linear-gradient(145deg, #fffaf0, #f8efd9);
}
.continuous-series-booking-intro h3 { margin: 2px 0; font-size: 25px; }
.continuous-series-booking-intro .eyebrow { color: #171515 !important; }
.continuous-series-booking-intro p { margin: 0; color: #53493f; line-height: 1.5; }

.continuous-series-time-options {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.continuous-series-time-option {
  display: grid;
  gap: 3px;
  min-height: 88px;
  padding: 12px 9px;
  border: 2px solid #b9d5ca;
  border-radius: 11px;
  background: #f0f8f4;
  color: #1d2522;
  font: inherit;
  text-align: center;
  cursor: pointer;
}
.continuous-series-time-option:hover { border-color: #26775f; background: #e2f2eb; }
.continuous-series-time-option:focus-visible { outline: 4px solid #efb52e; outline-offset: 2px; }
.continuous-series-time-option strong { color: #12694f; font-size: 24px; font-variant-numeric: tabular-nums; }
.continuous-series-time-option span { font-size: 11px; font-weight: 900; }
.continuous-series-time-option small { color: #675e55; font-size: 9px; }
.continuous-series-time-option.is-full { border-color: #e0b8b1; background: #fff0ed; }
.continuous-series-time-option.is-full strong { color: #a43f31; }
.continuous-series-time-option:disabled { opacity: .45; cursor: default; }

@media (max-width: 600px) {
  .continuous-series-time-options { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* v171 실제 관객 화면과 동일한 최고관리자 카드 배치 편집 */
.schedule-arrange-days { gap: 10px; }
.schedule-arrange-day {
  transition: background-color .15s ease, box-shadow .15s ease;
}
.schedule-arrange-day.is-drag-over {
  background-color: rgba(255, 235, 164, .46);
  box-shadow: inset 0 0 0 4px rgba(217, 155, 43, .32);
}
.schedule-arrange-card {
  position: relative;
  cursor: grab;
  user-select: none;
  transition: opacity .15s ease, transform .15s ease, outline-color .15s ease;
}
.schedule-arrange-card:active { cursor: grabbing; }
.schedule-arrange-card.is-dragging { opacity: .34; transform: scale(.97); }
.schedule-arrange-card.is-drop-target {
  outline: 5px solid #efb52e;
  outline-offset: 2px;
}
.schedule-edit-drag-handle {
  position: absolute;
  z-index: 5;
  top: 7px;
  left: 8px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-height: 25px;
  padding: 3px 7px;
  border: 1px solid rgba(34, 28, 24, .22);
  border-radius: 7px;
  background: rgba(33, 28, 24, .9);
  color: #fff;
  font-size: 14px;
  font-weight: 950;
  line-height: 1;
  box-shadow: 0 3px 8px rgba(38, 30, 24, .18);
  pointer-events: none;
}
.schedule-edit-drag-handle span { font-size: 9px; letter-spacing: 0; }
.schedule-arrange-card .screening-top { padding-top: 40px; }
.schedule-arrange-card .compact-book-btn:disabled { opacity: 1; }

.schedule-empty-slot {
  display: grid;
  place-content: center;
  gap: 6px;
  min-width: 0;
  min-height: 214px;
  padding: 14px;
  border: 3px dashed rgba(45, 101, 87, .42);
  border-radius: 15px;
  background: rgba(255, 255, 255, .48);
  color: #2d6557;
  font: inherit;
  text-align: center;
  cursor: default;
  transition: background .15s ease, border-color .15s ease, transform .15s ease;
}
.schedule-empty-slot strong { font-size: 18px; font-weight: 950; }
.schedule-empty-slot span { font-size: 11px; font-weight: 850; }
.schedule-empty-slot.is-drop-target {
  border-color: #d38b13;
  background: #fff0b7;
  color: #6d4200;
  transform: scale(.985);
}
.schedule-day-empty-slot { min-height: 230px; align-self: stretch; }

@media (max-width: 640px) {
  .schedule-arrange-card .screening-top { padding-top: 39px; }
  .schedule-empty-slot { min-height: 145px; }
}

/* v182 날짜별 자유 그리드·그룹 단위 배치 */
.schedule-layout-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-rows: repeat(var(--schedule-layout-rows, 1), auto);
  grid-auto-flow: row;
  gap: 7px;
  align-items: start;
}
.schedule-layout-block {
  min-width: 0;
  align-self: start;
}
.schedule-layout-block .classic-schedule-grid {
  grid-template-columns: repeat(var(--booking-group-columns, 1), minmax(0, 1fr));
  gap: 5px;
}
.schedule-layout-vertical .classic-schedule-grid {
  grid-template-columns: minmax(0, 1fr);
}
.schedule-layout-edit-block {
  position: relative;
  padding: 5px !important;
  border-color: rgba(75, 63, 167, .38) !important;
  background: rgba(248, 247, 255, .78) !important;
  cursor: grab;
  user-select: none;
  transition: opacity .15s ease, transform .15s ease, outline-color .15s ease;
}
.schedule-layout-edit-block:active { cursor: grabbing; }
.schedule-layout-edit-block.is-dragging { opacity: .34; transform: scale(.98); }
.schedule-layout-edit-block.is-drop-target {
  outline: 5px solid #efb52e;
  outline-offset: 2px;
}
.schedule-layout-block-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  min-height: 36px;
  margin-bottom: 4px;
  padding: 4px 5px;
  border-radius: 8px;
  background: #2c286b;
  color: #fff;
}
.schedule-layout-block-drag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  font-size: 13px;
  font-weight: 900;
  white-space: nowrap;
}
.schedule-layout-direction-buttons {
  display: flex;
  flex: 0 0 auto;
  gap: 3px;
}
.schedule-layout-direction-buttons button {
  min-height: 27px;
  padding: 3px 7px;
  border: 1px solid rgba(255, 255, 255, .7);
  border-radius: 5px;
  background: #fff;
  color: #2c286b;
  font: inherit;
  font-size: 11px;
  font-weight: 950;
  cursor: pointer;
}
.schedule-layout-direction-buttons button:disabled {
  border-color: #d6dc58;
  background: #e8ed82;
  color: #343707;
  opacity: 1;
  cursor: default;
}
.schedule-layout-edit-block .schedule-arrange-card { cursor: inherit; }
.schedule-layout-edit-block .schedule-arrange-card .screening-top { padding-top: 12px; }
.schedule-layout-edit-block .schedule-edit-drag-handle { display: none; }
.schedule-layout-edit-block .classic-schedule-group-choice.is-placeholder { display: none; }
.schedule-grid-empty-slot {
  z-index: 0;
  min-height: 118px;
  align-self: stretch;
  padding: 8px;
  border-width: 2px;
}
.schedule-grid-empty-slot strong { font-size: 15px; }
.schedule-grid-empty-slot span { font-size: 10px; }

@media (max-width: 640px) {
  .schedule-layout-grid { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
  .schedule-layout-block,
  .schedule-grid-empty-slot { grid-column: 1 !important; grid-row: auto !important; }
  .schedule-layout-block .classic-schedule-grid { grid-template-columns: minmax(0, 1fr); }
  .schedule-layout-block-toolbar { flex-wrap: wrap; }
  .schedule-grid-empty-slot { min-height: 82px; }
}

/* v172 공개 로그인 비밀번호 안내 제거 + 신청자 명단 큰 글씨·최소 열 여백 */
.reservation-table {
  min-width: 900px !important;
  table-layout: fixed !important;
}
.reservation-table th,
.reservation-table td {
  padding: 5px 3px !important;
  font-size: 15px !important;
  line-height: 1.28 !important;
  vertical-align: middle !important;
}
.reservation-table th {
  font-size: 14px !important;
  letter-spacing: -.025em;
  white-space: nowrap;
}
.reservation-table .help,
.reservation-table .applicant-phone,
.reservation-table .applicant-email {
  font-size: 12px !important;
  line-height: 1.2 !important;
}
.reservation-table .participant-history-badge {
  margin-top: 3px;
  padding: 2px 4px;
  font-size: 11px;
}
.reservation-table .badge,
.reservation-table .status-index {
  padding: 3px 4px !important;
  font-size: 10px !important;
}
.reservation-table .reservation-manage-compact {
  gap: 2px !important;
}
.reservation-table .reservation-manage-compact .btn,
.reservation-table .btn-small {
  min-height: 29px !important;
  padding: 4px 2px !important;
  font-size: 11px !important;
}

@media (max-width: 760px) {
  .reservation-table-wrap {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
  }
  .reservation-table {
    min-width: 650px !important;
  }
  .reservation-table th,
  .reservation-table td {
    padding: 4px 2px !important;
    font-size: 13px !important;
    line-height: 1.2 !important;
  }
  .reservation-table th { font-size: 12px !important; }
  .reservation-table .help,
  .reservation-table .applicant-phone,
  .reservation-table .applicant-email {
    font-size: 10.5px !important;
    line-height: 1.12 !important;
  }
  .reservation-table .participant-history-badge {
    padding: 2px 3px;
    font-size: 9.5px;
  }
  .reservation-table .reservation-manage-compact .btn,
  .reservation-table .btn-small {
    min-height: 27px !important;
    font-size: 10px !important;
  }
}

/* v173 적용 우선순위: 모든 신청자 명단의 열 간격 최종값 */
html body .reservation-table { min-width: 820px !important; table-layout: fixed !important; }
html body .reservation-table th,
html body .reservation-table td { padding-left: 2px !important; padding-right: 2px !important; }
html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(1) { width: 10% !important; }
html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(2) { width: 20% !important; }
html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(3) { width: 15% !important; }
html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(4) { width: 8% !important; }
html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(5) { width: 5% !important; text-align: center !important; }
html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(6) { width: 10% !important; }
html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(7) { width: 14% !important; }
html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(8) { width: 18% !important; }
html body .reservation-table-sms :is(th, td):nth-child(1) { width: 3% !important; }
html body .reservation-table-sms :is(th, td):nth-child(2) { width: 9% !important; }
html body .reservation-table-sms :is(th, td):nth-child(3) { width: 18% !important; }
html body .reservation-table-sms :is(th, td):nth-child(4) { width: 14% !important; }
html body .reservation-table-sms :is(th, td):nth-child(5) { width: 8% !important; }
html body .reservation-table-sms :is(th, td):nth-child(6) { width: 5% !important; text-align: center !important; }
html body .reservation-table-sms :is(th, td):nth-child(7) { width: 10% !important; }
html body .reservation-table-sms :is(th, td):nth-child(8) { width: 13% !important; }
html body .reservation-table-sms :is(th, td):nth-child(9) { width: 20% !important; }

@media (max-width: 760px) {
  html body .reservation-table { min-width: 610px !important; }
  html body .reservation-table th,
  html body .reservation-table td { padding-left: 1px !important; padding-right: 1px !important; }
  html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(1) { width: 14% !important; }
  html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(2) { width: 24% !important; }
  html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(3) { width: 23% !important; }
  html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(5) { width: 7% !important; }
  html body .reservation-table:not(.reservation-table-sms) :is(th, td):nth-child(8) { width: 32% !important; }
  html body .reservation-table-sms :is(th, td):nth-child(1) { width: 5% !important; }
  html body .reservation-table-sms :is(th, td):nth-child(2) { width: 13% !important; }
  html body .reservation-table-sms :is(th, td):nth-child(3) { width: 23% !important; }
  html body .reservation-table-sms :is(th, td):nth-child(4) { width: 22% !important; }
  html body .reservation-table-sms :is(th, td):nth-child(6) { width: 7% !important; }
  html body .reservation-table-sms :is(th, td):nth-child(9) { width: 30% !important; }
}

/* v174 확정 포스터 기반 파스텔 보라 디자인 시스템 */
:root {
  color-scheme: light;
  --bg: #f1f0ff;
  --paper: #fdfcff;
  --ink: #24205d;
  --muted: #686287;
  --line: #d8d3ef;
  --brand: #594cc0;
  --brand-dark: #2c286b;
  --brand-red: #594cc0;
  --primary: #594cc0;
  --accent: #7669ce;
  --accent-2: #4137a5;
  --warning: #838b18;
  --danger: #a9475c;
  --ok: #55752d;
  --poster-lime: #d4df32;
  --poster-lime-soft: #f0f4bd;
  --pastel-lavender: #e9e5ff;
  --pastel-periwinkle: #e2e5ff;
  --pastel-violet: #ddd8fa;
  --surface-2: #f5f3ff;
  --surface-soft: #ece9fb;
  --surface: #fdfcff;
  --green: #687e34;
  --shadow: 0 18px 44px rgba(44, 40, 107, .12);
  --shadow-soft: 0 10px 26px rgba(44, 40, 107, .08);
  --focus: 0 0 0 4px rgba(89, 76, 192, .22);
}

body {
  background:
    radial-gradient(circle at 7% 2%, rgba(118, 105, 206, .21), transparent 28rem),
    radial-gradient(circle at 94% 12%, rgba(212, 223, 50, .15), transparent 20rem),
    radial-gradient(circle at 78% 88%, rgba(65, 55, 165, .12), transparent 30rem),
    linear-gradient(180deg, #f6f4ff 0%, #efedff 100%);
}

.logo-mark { background: linear-gradient(145deg, #2c286b, #594cc0); color: #fff; }
.logo-sub { color: var(--muted); }
.nav a,
.nav button,
.chip-link {
  border-color: #d9d4f0;
  background: rgba(253, 252, 255, .86);
  box-shadow: 0 6px 16px rgba(44, 40, 107, .07);
}
.nav .primary-link { background: #2c286b; color: #fff; border-color: #2c286b; }

.hero,
.opening-home-hero,
.opening-hero-main,
.donation-page-hero,
.opening-inline-card {
  border-color: rgba(147, 137, 220, .34);
  background:
    radial-gradient(circle at 82% 16%, rgba(212, 223, 50, .14), transparent 18rem),
    radial-gradient(circle at 8% 92%, rgba(118, 105, 206, .42), transparent 22rem),
    linear-gradient(135deg, #201d57 0%, #332d7c 48%, #594cc0 100%);
  color: #fff;
  box-shadow: 0 24px 56px rgba(35, 30, 92, .2);
}
.hero::after { border-color: rgba(212, 223, 50, .13); }
.hero p,
.opening-home-copy p,
.opening-hero-main p,
.opening-inline-card p,
.donation-story { color: rgba(255, 255, 255, .84); }
.opening-home-copy h1 span,
.opening-hero-main h1 span,
.opening-title-stack .opening-title-sub,
.opening-title-stack .opening-title-inline,
.opening-title-stack .opening-title-date { color: #e8ed73 !important; }
.eyebrow { background: rgba(233, 229, 255, .16); color: #fff; }
.eyebrow.dark { background: #e7e2fb; color: #39318c; }
.survey-card .eyebrow,
.card > .eyebrow { background: #e7e2fb; color: #39318c; }
.hero .eyebrow,
.opening-home-hero .eyebrow,
.opening-hero-main .eyebrow,
.donation-page-hero .eyebrow,
.opening-inline-card .eyebrow { background: rgba(233, 229, 255, .16); color: #fff; }

.card,
.metric-card,
.stat-card,
.login-card,
.opening-status-card,
.opening-ticket-card,
.opening-flow-card,
.opening-poster-card,
.survey-score-card,
.survey-toggle-card {
  border-color: var(--line);
  background: rgba(253, 252, 255, .91);
  box-shadow: 0 14px 34px rgba(44, 40, 107, .085);
}
.survey-big-score { color: #594cc0; }
.survey-rating-label { color: #625d83; }
.survey-rating-track { background: #e3dff3; }
.survey-rating-fill { background: linear-gradient(90deg, #594cc0, #9287dc); }
.support-strip,
.donation-strip,
.sponsor-callout {
  border-color: #d8d1f0;
  background: linear-gradient(135deg, rgba(233, 229, 255, .94), rgba(245, 247, 207, .74));
}
.sponsor-callout p,
.support-strip p { color: #524d76; }

.btn-primary { background: #594cc0; color: #fff; }
.btn-dark { background: #2c286b; color: #fff; }
.btn-light,
.btn-outline { background: #fdfcff; color: #2c286b; border-color: #d4ceec; }
.btn-ghost { border-color: rgba(233, 229, 255, .46); color: #fff; }
.btn:hover { box-shadow: 0 10px 20px rgba(44, 40, 107, .17); }
.schedule-full-view-btn { background: #d4df32; color: #24205d; border-color: #b9c426; }

.input,
.select,
.textarea,
.check-card {
  border-color: #d8d3ef;
  background: #fefeff;
  color: #24205d;
}
.input::placeholder,
.textarea::placeholder { color: #9892b4; }
input[type="checkbox"],
input[type="radio"] { accent-color: #594cc0; }
.checkbox-line,
.privacy-consent-box,
.donation-agreement,
.transfer-help { border-color: #d9d4ef; background: #f4f2ff; }

.admin-tab { border-color: #d7d2ec; background: rgba(253, 252, 255, .87); color: #302b70; }
.admin-tab.active { background: #2c286b; color: #fff; border-color: #2c286b; }
.admin-sidebar { border-color: #ddd8f1; }
.metric-card:nth-child(4n+1) { background: linear-gradient(145deg, #fdfcff, #ebe7ff); }
.metric-card:nth-child(4n+2) { background: linear-gradient(145deg, #fdfcff, #e7ebff); }
.metric-card:nth-child(4n+3) { background: linear-gradient(145deg, #fdfcff, #f1f4c8); }
.metric-card:nth-child(4n+4) { background: linear-gradient(145deg, #fdfcff, #e5def8); }

.table-wrap { border-color: #d8d3ef; background: #fefeff; }
th { background: #e8e4f8; color: #332e72; }
tbody tr:nth-child(even) td { background: rgba(233, 229, 255, .32); }
tbody tr:hover td,
.screening-roster-row:hover td { background: rgba(212, 223, 50, .12) !important; }
.attended-row { background: rgba(221, 231, 150, .17); }

.badge { background: #ebe8f8; color: #464078; }
.badge.blue { background: #e1e5ff; color: #4137a5; }
.badge.ok { background: #edf2c5; color: #566620; }
.badge.warn { background: #f3efd0; color: #746b18; }
.badge.danger { background: #f7e2e8; color: #934054; }
.progress,
.chart-track { background: #ded9f1; }
.progress > span,
.chart-track span { background: #6658c6; }
.attended-track { background: #edf1c4; }
.attended-track span { background: #9ba82b; }

.screening-card,
.classic-schedule-card,
.schedule-movie-slot,
.roster-item { border-color: #d5cfeb; background: #fdfcff; }
.screening-top { background: linear-gradient(135deg, #f4f1ff, #e9e5ff); border-bottom-color: #d5cfeb; }
.movie-booking-intro { border-color: #d5cfeb; background: linear-gradient(135deg, #f0edff, #fdfcff); }
.movie-booking-intro.is-full { border-color: #d8c5db; background: linear-gradient(135deg, #f6e8ef, #fdfcff); }
.movie-booking-description { color: #585276; }
.closed-booking-notice { background: #4f43ae; color: #fff; }
.screening-category-color-1 { --category-accent:#594cc0; --category-badge-bg:#ded8fa; --category-badge-ink:#332b83; --category-border:rgba(89,76,192,.3); --category-grad-a:#f3f0ff; --category-grad-b:#e3defb; }
.screening-category-color-2 { --category-accent:#4137a5; --category-badge-bg:#dde2ff; --category-badge-ink:#30277f; --category-border:rgba(65,55,165,.28); --category-grad-a:#f2f4ff; --category-grad-b:#e1e5ff; }
.screening-category-color-3 { --category-accent:#737b1b; --category-badge-bg:#edf1b4; --category-badge-ink:#545c12; --category-border:rgba(131,139,24,.3); --category-grad-a:#fafbe8; --category-grad-b:#f0f3c2; }
.screening-category-color-4 { --category-accent:#7661a7; --category-badge-bg:#e8def6; --category-badge-ink:#58447f; --category-border:rgba(118,97,167,.28); --category-grad-a:#faf5ff; --category-grad-b:#eadff7; }
.screening-category-color-5 { --category-accent:#5364a8; --category-badge-bg:#dfe8fa; --category-badge-ink:#3d4b87; --category-border:rgba(83,100,168,.27); --category-grad-a:#f4f7ff; --category-grad-b:#e2e9fa; }
.screening-category-color-6 { --category-accent:#6a608f; --category-badge-bg:#e8e4f1; --category-badge-ink:#4d456e; --category-border:rgba(106,96,143,.26); --category-grad-a:#faf9ff; --category-grad-b:#eae7f2; }

.schedule-day-color-1 { --schedule-card-bg:#f1efff; --schedule-card-hover:#e7e3fb; --schedule-card-border:rgba(89,76,192,.25); --schedule-card-accent:#594cc0; }
.schedule-day-color-2 { --schedule-card-bg:#edf0ff; --schedule-card-hover:#e1e5fb; --schedule-card-border:rgba(65,55,165,.23); --schedule-card-accent:#4137a5; }
.schedule-day-color-3 { --schedule-card-bg:#f7f8df; --schedule-card-hover:#eff2c8; --schedule-card-border:rgba(131,139,24,.24); --schedule-card-accent:#737b1b; }
.schedule-day-color-4 { --schedule-card-bg:#f3edfb; --schedule-card-hover:#e9e1f4; --schedule-card-border:rgba(118,97,167,.23); --schedule-card-accent:#7661a7; }
.schedule-day-color-5 { --schedule-card-bg:#eef2fc; --schedule-card-hover:#e3e9f8; --schedule-card-border:rgba(83,100,168,.22); --schedule-card-accent:#5364a8; }
.timeline-day-tone-1 { background-color:#f0edff; }
.timeline-day-tone-2 { background-color:#e9edff; }
.timeline-day-tone-3 { background-color:#f6f7d8; }
.timeline-day-tone-4 { background-color:#eee8f7; }
.timeline-day-tone-5 { background-color:#e9edf8; }

.classic-schedule-day-group,
.full-schedule-page,
.schedule-order-day,
.schedule-order-card,
.schedule-empty-slot { border-color: #d5cfeb; background: rgba(253, 252, 255, .88); }
.classic-schedule-time-group.is-conflict-group { background: rgba(233, 229, 255, .44); }
.forced-booking-group-badge,
.classic-schedule-group-choice strong { color: #4d42b4; }
.schedule-edit-drag-handle,
.schedule-drag-handle { background: rgba(44, 40, 107, .94); }

.bulk-sms-panel,
.sms-history-panel {
  border-color: #d5cfeb;
  background: linear-gradient(135deg, rgba(233, 229, 255, .7), rgba(253, 252, 255, .96));
}
.bulk-sms-selected-count { border-color: #d7d1ed; background: #fff; color: #332d75; }
.modal-backdrop { background: rgba(28, 24, 74, .58); }
.modal-card { border-color: #d8d2ef; background: #fdfcff; }
.toast { background: #2c286b; color: #fff; }

@media (max-width: 760px) {
  body {
    background:
      radial-gradient(circle at 10% 0%, rgba(118,105,206,.18), transparent 18rem),
      linear-gradient(180deg, #f6f4ff, #efedff);
  }
}

/* v195: 밝은 그룹 배경에서 연속상영 안내 문구 대비 고정 */
.classic-schedule-time-group.is-forced-group .classic-schedule-group-choice,
.classic-schedule-time-group.is-forced-group .classic-schedule-group-choice strong,
.classic-schedule-time-group.is-forced-group .classic-schedule-group-choice span {
  color: #17191f !important;
}

/* v196: 예약 그룹 영역을 개별 카드보다 진한 면으로 명확히 구분 */
.classic-schedule-time-group.is-conflict-group {
  padding: 8px;
  border: 1px solid #c2cada;
  border-radius: 15px;
  background: linear-gradient(145deg, #dfe4ee, #d8e0ec);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .48), 0 8px 18px rgba(51, 61, 89, .07);
}
.classic-schedule-time-group.is-forced-group {
  padding: 8px;
  border: 2px solid #8177ad;
  border-radius: 16px;
  background: linear-gradient(145deg, #ded9eb, #d7e1ed);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .5), 0 9px 20px rgba(61, 58, 103, .10);
}
.classic-schedule-time-group.is-conflict-group .classic-schedule-group-choice,
.classic-schedule-time-group.is-forced-group .classic-schedule-group-choice {
  margin-bottom: 5px;
  padding: 7px 9px;
  border: 0;
  border-radius: 10px;
  background: rgba(255, 255, 255, .48);
}

/* v175 메인 후원 안내의 의미 단위 줄바꿈·가운데 정렬 */
.hero .hero-grid {
  justify-items: center;
  text-align: center;
}
.hero .hero-grid > div {
  width: 100%;
  max-width: 1040px;
  margin: 0 auto;
}
.hero .hero-main-title {
  width: 100%;
  max-width: 1040px;
  margin: 20px auto 22px;
  text-align: center;
  text-wrap: balance;
  word-break: keep-all;
  overflow-wrap: normal;
}
.hero .hero-main-title > span {
  display: block;
}
.hero-donation-copy {
  display: grid;
  gap: 10px;
  width: min(100%, 960px);
  margin: 0 auto 28px;
  text-align: center;
}
.hero .hero-donation-copy > p {
  width: 100%;
  max-width: none;
  margin: 0;
  color: rgba(255,255,255,.86);
  font-size: clamp(16px, 1.55vw, 18px);
  line-height: 1.72;
  letter-spacing: -.012em;
  text-align: center;
  text-wrap: pretty;
  word-break: keep-all;
  overflow-wrap: break-word;
}
.hero .hero-donate-only { justify-content: center; }

@media (max-width: 640px) {
  .hero .hero-main-title {
    margin-top: 18px;
    font-size: clamp(29px, 8.5vw, 38px);
    line-height: 1.16;
  }
  .hero .hero-main-title > span { text-wrap: balance; }
  .hero-donation-copy { gap: 12px; margin-bottom: 24px; }
  .hero .hero-donation-copy > p {
    font-size: 15px;
    line-height: 1.75;
  }
}

/* v178 관리자·스태프 모바일 표 카드화 */
@media (max-width: 760px) {
  .admin-panel .card {
    padding: 16px 12px;
    overflow: hidden;
  }

  .admin-panel .section-title h2,
  .admin-panel .reservation-title-line h2 {
    font-size: clamp(25px, 7vw, 32px);
    line-height: 1.12;
    word-break: keep-all;
  }

  .screening-admin-table-wrap {
    overflow: visible !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }
  .screening-admin-table {
    display: block;
    width: 100% !important;
    min-width: 0 !important;
    table-layout: auto !important;
    border: 0 !important;
  }
  .screening-admin-table thead { display: none; }
  .screening-admin-table tbody {
    display: grid;
    gap: 10px;
  }
  .screening-admin-table tbody tr {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0;
    min-width: 0;
    padding: 12px;
    border: 1px solid #d8d3ef;
    border-radius: 14px;
    background: #fdfcff;
    box-shadow: 0 6px 18px rgba(44, 40, 107, .06);
  }
  .screening-admin-table tbody td {
    display: grid;
    grid-template-columns: minmax(68px, auto) minmax(0, 1fr);
    align-items: start;
    gap: 6px;
    width: auto !important;
    min-width: 0 !important;
    padding: 7px 4px !important;
    border: 0 !important;
    border-top: 1px solid #eeeaf9 !important;
    font-size: 14px !important;
    line-height: 1.35 !important;
    text-align: left !important;
    white-space: normal !important;
    overflow-wrap: anywhere;
  }
  .screening-admin-table tbody td::before {
    content: attr(data-label);
    color: #686287;
    font-size: 11px;
    font-weight: 900;
    line-height: 1.5;
    white-space: nowrap;
  }
  .screening-admin-table tbody td:first-child {
    display: block;
    grid-column: 1 / -1;
    padding: 2px 4px 10px !important;
    border-top: 0 !important;
    font-size: 17px !important;
    line-height: 1.3 !important;
  }
  .screening-admin-table tbody td:first-child::before { display: none; }
  .screening-admin-table tbody td:first-child > strong,
  .screening-admin-table tbody td:first-child .roster-link strong {
    display: inline-block;
    margin-top: 6px;
    font-size: 18px;
    line-height: 1.28;
    word-break: keep-all;
  }
  .screening-admin-table tbody td:nth-child(2),
  .screening-admin-table tbody td:nth-child(3),
  .screening-admin-table tbody td:nth-child(4),
  .screening-admin-table tbody td:nth-child(9),
  .screening-admin-table tbody td:nth-child(10) {
    grid-column: 1 / -1;
  }
  .screening-admin-table tbody td:nth-child(10) .help { white-space: nowrap; }
  .screening-admin-table .screening-status-cell {
    display: grid !important;
    grid-template-columns: minmax(68px, auto) minmax(0, 1fr) !important;
    justify-items: start !important;
  }
  .screening-admin-table .seat-status-button {
    width: auto !important;
    max-width: 100%;
    min-height: 36px;
    padding: 7px 10px;
    white-space: normal;
  }
  .screening-admin-table td[data-label="관리"] {
    grid-column: 1 / -1;
  }
  .screening-admin-table td[data-label="관리"] .row-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    width: 100%;
  }
  .screening-admin-table td[data-label="관리"] .btn {
    width: 100%;
    min-height: 40px;
  }

  .reservation-table-wrap {
    overflow: visible !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }
  html body .reservation-table,
  html body .reservation-table.reservation-table-sms {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    table-layout: auto !important;
    border: 0 !important;
  }
  .reservation-table thead { display: none !important; }
  .reservation-table tbody {
    display: grid !important;
    gap: 10px !important;
  }
  .reservation-table .reservation-click-row {
    position: relative;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto !important;
    gap: 0 10px !important;
    width: 100% !important;
    min-width: 0 !important;
    padding: 12px !important;
    border: 1px solid #d8d3ef !important;
    border-radius: 14px !important;
    background: #fdfcff !important;
    box-shadow: 0 5px 16px rgba(44, 40, 107, .055);
  }
  .reservation-table .reservation-click-row > td {
    display: block !important;
    width: auto !important;
    min-width: 0 !important;
    padding: 5px 0 !important;
    border: 0 !important;
    font-size: 14px !important;
    line-height: 1.32 !important;
    white-space: normal !important;
    overflow-wrap: anywhere;
  }
  .reservation-table .reservation-click-row > td::before {
    display: block;
    margin-bottom: 2px;
    content: attr(data-label);
    color: #77708f;
    font-size: 10px;
    font-weight: 900;
    line-height: 1.2;
  }
  .reservation-table .reservation-click-row .col-venue,
  .reservation-table .reservation-click-row .col-screening,
  .reservation-table .reservation-click-row .col-manage {
    grid-column: 1 / -1 !important;
  }
  .reservation-table .reservation-click-row .col-venue {
    padding-right: 44px !important;
    color: #594cc0;
  }
  .reservation-table .reservation-click-row .col-screening strong,
  .reservation-table .reservation-click-row .applicant-name-line strong {
    display: inline !important;
    max-width: none !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: normal !important;
    word-break: keep-all;
  }
  .reservation-table .reservation-click-row .col-applicant {
    grid-column: 1;
  }
  .reservation-table .reservation-click-row .col-seats {
    grid-column: 2;
    min-width: 54px !important;
    text-align: right !important;
  }
  .reservation-table .reservation-click-row .sms-check-col {
    position: absolute;
    top: 11px;
    right: 11px;
    display: block !important;
    width: 28px !important;
    padding: 0 !important;
  }
  .reservation-table .reservation-click-row .sms-check-col::before { display: none; }
  .reservation-table .reservation-click-row .col-reservation-no,
  .reservation-table .reservation-click-row .col-created,
  .reservation-table .reservation-click-row .col-note {
    display: none !important;
  }
  .reservation-table .reservation-click-row .col-manage {
    padding-top: 8px !important;
    border-top: 1px solid #eeeaf9 !important;
  }
  .reservation-table .reservation-manage-compact {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 7px !important;
    width: 100% !important;
  }
  .reservation-table .reservation-manage-compact .btn {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 38px !important;
    padding: 7px 4px !important;
    font-size: 13px !important;
    border-radius: 9px !important;
  }
  .reservation-table .reservation-action-row {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    margin-top: -10px;
  }
  .reservation-table .reservation-action-row > td {
    display: block !important;
    width: 100% !important;
    padding: 10px !important;
    border: 1px solid #d8d3ef !important;
    border-top: 0 !important;
    border-radius: 0 0 14px 14px !important;
    background: #f7f5ff;
  }
  .reservation-action-panel,
  .reservation-action-panel-buttons-only {
    width: 100% !important;
    min-width: 0 !important;
    padding: 0 !important;
  }
  .reservation-action-row .reservation-action-buttons-large {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 7px !important;
    width: 100% !important;
  }
  .reservation-action-row .reservation-action-buttons-large .btn {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 40px !important;
    padding: 8px 4px !important;
    font-size: 12px !important;
    line-height: 1.2 !important;
    white-space: normal !important;
    overflow-wrap: anywhere;
  }
  .reservation-title-line {
    align-items: center;
    gap: 6px;
  }
  .reservation-title-action {
    min-height: 36px;
    padding: 7px 9px;
    font-size: 12px;
  }
  .reservation-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 7px !important;
  }
  .reservation-filters > * {
    width: 100% !important;
    min-width: 0 !important;
  }
}

@media (max-width: 420px) {
  .screening-admin-table tbody tr,
  .reservation-table .reservation-click-row { padding: 10px !important; }
  .screening-admin-table tbody td {
    grid-column: 1 / -1;
    grid-template-columns: 78px minmax(0, 1fr);
  }
  .reservation-action-row .reservation-action-buttons-large .btn {
    font-size: 11.5px !important;
  }
}

/* v193: 보라·블루·회색 중심의 절제된 파스텔 디자인 시스템 */
:root {
  --bg: #eef1f7;
  --paper: #fcfdff;
  --ink: #202942;
  --muted: #687187;
  --line: #d8deea;
  --brand: #6257a3;
  --brand-dark: #34345f;
  --brand-red: #6257a3;
  --primary: #6257a3;
  --accent: #7487b7;
  --accent-2: #506d9a;
  --warning: #6f7890;
  --danger: #9a596c;
  --ok: #526f94;
  --poster-lime: #9eadd0;
  --poster-lime-soft: #e5eaf5;
  --pastel-lavender: #ebe9f5;
  --pastel-periwinkle: #e6ebf7;
  --pastel-violet: #e4e1f0;
  --surface-2: #f4f6fa;
  --surface-soft: #e9edf4;
  --surface: #fcfdff;
  --green: #607493;
  --shadow: 0 18px 42px rgba(47, 56, 83, .10);
  --shadow-soft: 0 9px 24px rgba(47, 56, 83, .07);
  --focus: 0 0 0 4px rgba(98, 87, 163, .18);
}

body {
  background:
    radial-gradient(circle at 8% 3%, rgba(121, 112, 177, .13), transparent 28rem),
    radial-gradient(circle at 92% 12%, rgba(112, 139, 181, .12), transparent 26rem),
    linear-gradient(180deg, #f5f6fa 0%, #e9edf4 100%);
}

.hero,
.opening-home-hero,
.opening-hero-main,
.donation-page-hero,
.opening-inline-card {
  border-color: rgba(151, 158, 187, .32);
  background:
    radial-gradient(circle at 88% 14%, rgba(150, 166, 205, .18), transparent 20rem),
    linear-gradient(135deg, #292b50 0%, #3b3c70 50%, #526b98 100%);
  box-shadow: 0 24px 54px rgba(36, 42, 69, .18);
}
.hero::after { border-color: rgba(174, 185, 214, .14); }
.opening-home-copy h1 span,
.opening-hero-main h1 span,
.opening-title-stack .opening-title-sub,
.opening-title-stack .opening-title-inline,
.opening-title-stack .opening-title-date { color: #e7eafa !important; }

.nav a,
.nav button,
.chip-link {
  border-color: #d9deea;
  background: rgba(252, 253, 255, .9);
  box-shadow: 0 5px 14px rgba(47, 56, 83, .06);
}
.nav .primary-link { background: #34345f; border-color: #34345f; }

.card,
.metric-card,
.stat-card,
.login-card,
.opening-status-card,
.opening-ticket-card,
.opening-flow-card,
.opening-poster-card,
.survey-score-card,
.survey-toggle-card {
  border-color: #d9deea;
  background: rgba(252, 253, 255, .94);
  box-shadow: 0 13px 30px rgba(47, 56, 83, .07);
}
.metric-card:nth-child(4n+1) { background: linear-gradient(145deg, #fcfdff, #eeedf7); }
.metric-card:nth-child(4n+2) { background: linear-gradient(145deg, #fcfdff, #e9eef7); }
.metric-card:nth-child(4n+3) { background: linear-gradient(145deg, #fcfdff, #edf1f6); }
.metric-card:nth-child(4n+4) { background: linear-gradient(145deg, #fcfdff, #e8eaf2); }

.support-strip,
.donation-strip,
.sponsor-callout {
  border-color: #d5dbe8;
  background: linear-gradient(135deg, rgba(236, 234, 247, .94), rgba(231, 237, 247, .92));
}
.schedule-full-view-btn { background: #596f9f; color: #fff; border-color: #596f9f; }

.badge { background: #e9ecf2; color: #4f596f; }
.badge.blue { background: #e2e9f5; color: #405f8a; }
.badge.ok { background: #e3e9f3; color: #4b6689; }
.badge.warn { background: #e9e9f0; color: #666980; }
.badge.danger { background: #f0e4e9; color: #8b5061; }
.progress,
.chart-track { background: #dce1eb; }
.progress > span,
.chart-track span { background: #6678a7; }
.attended-track { background: #e0e5ee; }
.attended-track span { background: #7086a7; }

.table-wrap { border-color: #d8deea; background: #fcfdff; }
th { background: #e7eaf2; color: #37415e; }
tbody tr:nth-child(even) td { background: rgba(231, 235, 243, .46); }
tbody tr:hover td,
.screening-roster-row:hover td { background: rgba(222, 229, 242, .72) !important; }
.attended-row { background: rgba(222, 229, 239, .46); }

.screening-schedule-section {
  border-color: #d7dde9;
  background: rgba(247, 248, 251, .92);
  box-shadow: 0 14px 32px rgba(47, 56, 83, .07);
}
.apply-participation-notice {
  border-color: #d7dde8;
  background: linear-gradient(135deg, rgba(235, 239, 246, .94), rgba(248, 249, 252, .96));
  box-shadow: 0 12px 28px rgba(47, 56, 83, .065);
}
.apply-participation-notice h2 { color: #566f98; }
.screening-card,
.classic-schedule-card,
.schedule-movie-slot,
.roster-item {
  border-color: #d5dce8;
  background: #fcfdff;
  box-shadow: 0 12px 28px rgba(47, 56, 83, .105);
}
.screening-card,
.classic-schedule-card {
  position: relative;
  box-shadow: 0 14px 32px rgba(47, 56, 83, .12), 0 3px 10px rgba(47, 56, 83, .055);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease, filter .18s ease;
}
.screening-card::after,
.classic-schedule-card::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0;
  background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,.55) 44%, rgba(255,255,255,.18) 54%, transparent 68%);
  transform: translateX(-60%);
  transition: opacity .18s ease, transform .45s ease;
}
.screening-card:hover,
.classic-schedule-card:hover {
  transform: translateY(-5px);
  border-color: rgba(98, 87, 163, .34);
  box-shadow: 0 22px 48px rgba(47, 56, 83, .18), 0 8px 18px rgba(47, 56, 83, .10);
  filter: saturate(1.03);
}
.screening-card:hover::after,
.classic-schedule-card:hover::after {
  opacity: 1;
  transform: translateX(64%);
}
.screening-top { background: linear-gradient(135deg, #f1f2f7, #e8ebf2); border-bottom-color: #d8deea; }

.screening-category-color-1 { --category-accent:#6257a3; --category-badge-bg:#e5e1f2; --category-badge-ink:#514582; --category-border:rgba(98,87,163,.24); --category-grad-a:#f5f3fa; --category-grad-b:#e9e5f2; }
.screening-category-color-2 { --category-accent:#526b98; --category-badge-bg:#e1e8f3; --category-badge-ink:#405b84; --category-border:rgba(82,107,152,.23); --category-grad-a:#f2f5f9; --category-grad-b:#e4eaf2; }
.screening-category-color-3 { --category-accent:#697a9b; --category-badge-bg:#e5eaf1; --category-badge-ink:#53637e; --category-border:rgba(105,122,155,.23); --category-grad-a:#f5f7fa; --category-grad-b:#e7ebf1; }
.screening-category-color-4 { --category-accent:#766b98; --category-badge-bg:#e8e4ef; --category-badge-ink:#5d527e; --category-border:rgba(118,107,152,.23); --category-grad-a:#f6f4f9; --category-grad-b:#e9e6ef; }
.screening-category-color-5 { --category-accent:#5879a1; --category-badge-bg:#e0e9f2; --category-badge-ink:#466484; --category-border:rgba(88,121,161,.22); --category-grad-a:#f2f6fa; --category-grad-b:#e3eaf1; }
.screening-category-color-6 { --category-accent:#6b7283; --category-badge-bg:#e8eaf0; --category-badge-ink:#555c6d; --category-border:rgba(107,114,131,.22); --category-grad-a:#f6f7f9; --category-grad-b:#e9ebef; }

.schedule-day-color-1 { --schedule-card-bg:#f0eef7; --schedule-card-hover:#e8e4f2; --schedule-card-border:rgba(98,87,163,.22); --schedule-card-accent:#6257a3; }
.schedule-day-color-2 { --schedule-card-bg:#edf2f8; --schedule-card-hover:#e3eaf4; --schedule-card-border:rgba(82,107,152,.22); --schedule-card-accent:#526b98; }
.schedule-day-color-3 { --schedule-card-bg:#f1f3f7; --schedule-card-hover:#e7eaf0; --schedule-card-border:rgba(105,122,155,.21); --schedule-card-accent:#697a9b; }
.schedule-day-color-4 { --schedule-card-bg:#f1eff5; --schedule-card-hover:#e8e4ef; --schedule-card-border:rgba(118,107,152,.21); --schedule-card-accent:#766b98; }
.schedule-day-color-5 { --schedule-card-bg:#edf2f7; --schedule-card-hover:#e2e9f1; --schedule-card-border:rgba(88,121,161,.21); --schedule-card-accent:#5879a1; }

.timeline-day-tone-1 { background-color:#f0eef7; }
.timeline-day-tone-2 { background-color:#edf2f8; }
.timeline-day-tone-3 { background-color:#f1f3f7; }
.timeline-day-tone-4 { background-color:#f1eff5; }
.timeline-day-tone-5 { background-color:#edf2f7; }

.classic-schedule-day-group {
  border-color: var(--schedule-card-border, #d7dde9);
  background: var(--schedule-card-bg, #f3f5f8);
  box-shadow: 0 10px 26px rgba(47, 56, 83, .055);
}
.classic-schedule-time-group.is-conflict-group { background: rgba(226, 230, 240, .7); }
.classic-schedule-group-choice { border-bottom-color: rgba(112, 124, 151, .25); }
.classic-schedule-group-choice span { color: #687187; }
.forced-booking-group-badge,
.classic-schedule-group-choice strong { color: var(--schedule-card-accent, #526b98); }

.donor-sms-panel {
  margin: 18px 0;
  padding: 16px;
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(239,242,248,.92), rgba(250,251,255,.96));
  border: 1px solid rgba(98,87,163,.16);
}
.donor-sms-form { margin-top: 10px; }
.donor-management-table-wrap input[type="checkbox"] {
  width: 20px;
  height: 20px;
  accent-color: #6257a3;
}

.movie-booking-intro { border-color: #d5dce8; background: linear-gradient(135deg, #eef1f7, #fcfdff); }
.movie-booking-intro.is-full { border-color: #d9ced7; background: linear-gradient(135deg, #f2e9ed, #fcfdff); }
.privacy-consent-box,
.checkbox-line,
.donation-agreement,
.transfer-help { border-color: #d9deea; background: #f1f3f8; }

@media (max-width: 760px) {
  body {
    background:
      radial-gradient(circle at 10% 0%, rgba(121,112,177,.11), transparent 18rem),
      linear-gradient(180deg, #f5f6fa, #e9edf4);
  }
}

/* v196 final: 최종 테마 뒤에서 그룹 면 대비를 확실히 유지 */
html body .classic-schedule-time-group.is-conflict-group {
  padding: 8px;
  border: 1px solid #aebbd1 !important;
  border-radius: 15px;
  background: linear-gradient(145deg, #dce3ee, #d3ddeb) !important;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .46), 0 8px 18px rgba(51, 61, 89, .08);
}
html body .classic-schedule-time-group.is-forced-group {
  padding: 8px;
  border: 2px solid #8177ad !important;
  border-radius: 16px;
  background: linear-gradient(145deg, #dcd6e9, #d3dfec) !important;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .48), 0 9px 20px rgba(61, 58, 103, .11);
}
html body .classic-schedule-time-group.is-conflict-group .classic-schedule-group-choice,
html body .classic-schedule-time-group.is-forced-group .classic-schedule-group-choice {
  margin-bottom: 5px;
  padding: 7px 9px;
  border: 0;
  border-radius: 10px;
  background: rgba(255, 255, 255, .5) !important;
}

/* QR 체크인 최종 저장 버튼은 뒤쪽 공통 버튼 규칙보다 우선합니다. */
html body .checkin-result-actions .checkin-save-image-button {
  width: 100% !important;
  min-height: 78px !important;
  padding: 14px 16px !important;
  border-radius: 22px !important;
  font-size: clamp(30px, 7.4vw, 40px) !important;
  font-weight: 1000 !important;
  line-height: 1.12 !important;
  text-align: center !important;
}

/* 메인 공지사항 대문 */
.home-notice-hero {
  display: grid;
  min-height: min(620px, calc(100vh - 170px));
  align-items: center;
  margin-top: 8px;
  padding: clamp(24px, 5vw, 64px);
  border: 1px solid rgba(98, 87, 163, .22);
  border-radius: 28px;
  background:
    linear-gradient(135deg, rgba(252,253,255,.96), rgba(232,237,247,.94)),
    url("assets/munae-horse-logo.png") right clamp(18px, 6vw, 72px) bottom clamp(18px, 5vw, 58px) / min(32vw, 260px) auto no-repeat;
  box-shadow: 0 22px 52px rgba(47, 56, 83, .12);
  overflow: hidden;
}
.home-notice-copy {
  display: grid;
  gap: 22px;
  max-width: 900px;
}
.home-notice-copy h1 {
  margin: 0;
  color: var(--ink);
  font-size: clamp(42px, 8vw, 86px);
  line-height: 1.04;
  font-weight: 1000;
  letter-spacing: 0;
  word-break: keep-all;
}
.home-notice-body {
  max-width: 780px;
  color: #465066;
  font-size: clamp(18px, 2.8vw, 26px);
  font-weight: 760;
  line-height: 1.55;
  word-break: keep-all;
}
.home-notice-primary {
  min-height: 58px;
  padding-inline: 26px;
  font-size: 17px;
}
.admin-home-notice-settings {
  display: grid;
  gap: 14px;
  padding: 18px;
  border: 1px solid #d8deea;
  border-radius: 18px;
  background: #f6f8fc;
}

@media (max-width: 760px) {
  .home-notice-hero {
    min-height: 520px;
    padding: 24px 18px;
    border-radius: 22px;
    background:
      linear-gradient(135deg, rgba(252,253,255,.97), rgba(232,237,247,.96)),
      url("assets/munae-horse-logo.png") right 16px bottom 16px / 138px auto no-repeat;
  }
  .home-notice-copy h1 {
    font-size: clamp(34px, 10vw, 52px);
  }
  .home-notice-body {
    padding-right: 10px;
    font-size: clamp(17px, 5vw, 22px);
  }
  .home-notice-hero .cta-row,
  .home-notice-hero .btn {
    width: 100%;
  }
}

/* 상세통계: 영화별 연령대/주거지역 분포 그래프 */
.movie-demographic-chart-list {
  display: grid;
  gap: 14px;
}
.movie-combined-demographic-list {
  display: grid;
  gap: 12px;
}
.movie-combined-demographic-card {
  display: grid;
  gap: 12px;
  padding: 14px;
  border: 1px solid #d8deea;
  border-radius: 12px;
  background: #fcfdff;
}
.movie-combined-demographic-card h3 {
  margin: 0;
  color: var(--ink);
  font-size: 18px;
  line-height: 1.25;
  word-break: keep-all;
}
.movie-combined-demographic-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.movie-demographic-mini {
  display: grid;
  align-content: start;
  gap: 8px;
  min-width: 0;
  padding: 12px;
  border: 1px solid #e1e6ef;
  border-radius: 10px;
  background: #f7f9fc;
}
.movie-demographic-mini-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}
.movie-demographic-mini-title strong {
  color: #37415e;
  font-size: 14px;
  font-weight: 950;
}
.movie-demographic-mini-title span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}
.movie-demographic-chart-row {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid #d8deea;
  border-radius: 12px;
  background: #fcfdff;
}
.movie-demographic-chart-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}
.movie-demographic-chart-title strong {
  color: var(--ink);
  font-size: 17px;
  line-height: 1.25;
  word-break: keep-all;
}
.movie-demographic-chart-title span {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}
.movie-demographic-stacked-bar {
  display: flex;
  width: 100%;
  min-height: 34px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7ebf2;
}
.movie-demographic-segment {
  display: grid;
  min-width: 2%;
  place-items: center;
  color: #fff;
  font-size: 11px;
  font-weight: 950;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
}
.movie-demographic-segment b {
  display: block;
  max-width: 100%;
  overflow: hidden;
  padding: 0 7px;
  text-overflow: ellipsis;
}
.movie-demographic-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.movie-demographic-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 28px;
  padding: 5px 8px;
  border: 1px solid #dce2ed;
  border-radius: 999px;
  background: #f6f8fc;
  color: #3f475c;
  font-size: 12px;
  font-weight: 820;
}
.compact-empty {
  min-height: 34px;
  padding: 8px;
  font-size: 12px;
}
.movie-demographic-legend i {
  width: 10px;
  height: 10px;
  border-radius: 999px;
}
.movie-demographic-legend strong {
  color: var(--ink);
}
.movie-demographic-legend em {
  color: var(--muted);
  font-style: normal;
}
.movie-demographic-segment.tone-1,
.movie-demographic-legend i.tone-1 { background: #6257a3; }
.movie-demographic-segment.tone-2,
.movie-demographic-legend i.tone-2 { background: #526b98; }
.movie-demographic-segment.tone-3,
.movie-demographic-legend i.tone-3 { background: #607493; }
.movie-demographic-segment.tone-4,
.movie-demographic-legend i.tone-4 { background: #8b5f7a; }
.movie-demographic-segment.tone-5,
.movie-demographic-legend i.tone-5 { background: #4f7f83; }
.movie-demographic-segment.tone-6,
.movie-demographic-legend i.tone-6 { background: #8a6f4f; }
.movie-demographic-segment.tone-7,
.movie-demographic-legend i.tone-7 { background: #6b7283; }
.movie-demographic-segment.tone-8,
.movie-demographic-legend i.tone-8 { background: #9a596c; }

@media (max-width: 760px) {
  .movie-combined-demographic-card {
    padding: 12px;
  }
  .movie-combined-demographic-grid {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .movie-demographic-mini {
    padding: 10px;
  }
  .movie-demographic-chart-row {
    padding: 12px;
  }
  .movie-demographic-chart-title {
    display: grid;
    gap: 4px;
  }
  .movie-demographic-chart-title span {
    flex: initial;
  }
  .movie-demographic-stacked-bar {
    min-height: 30px;
  }
  .movie-demographic-segment {
    font-size: 10px;
  }
  .movie-demographic-legend span {
    font-size: 11px;
  }
}
