:root {
  --ink: #152238;
  --muted: #667085;
  --paper: #f8f5ef;
  --cream: #fffdf8;
  --gold: #c29450;
  --gold-soft: #e8d7b8;
  --blue: #2f5275;
  --line: rgba(21, 34, 56, .14);
  --shadow: 0 24px 70px rgba(20, 31, 48, .12);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-width: 320px; color: var(--ink); background: var(--paper); font-family: Pretendard, "Noto Sans KR", "Apple SD Gothic Neo", Arial, sans-serif; line-height: 1.65; overflow-x: hidden; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
.page-glow { position: fixed; z-index: -1; border-radius: 999px; filter: blur(90px); opacity: .25; }
.glow-one { width: 380px; height: 380px; top: -150px; right: -130px; background: #d9b77e; }
.glow-two { width: 330px; height: 330px; top: 650px; left: -180px; background: #7d9fbd; }
.invite-hero { min-height: 100svh; padding: 72px 24px 48px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; color: #fff; background: radial-gradient(circle at 20% 12%, rgba(222,191,134,.25), transparent 28%), linear-gradient(145deg, #101b2d 0%, #1d3550 58%, #304f68 100%); position: relative; overflow: hidden; }
.invite-hero::before, .invite-hero::after { content: ""; position: absolute; border: 1px solid rgba(255,255,255,.12); border-radius: 50%; }
.invite-hero::before { width: 420px; height: 420px; top: -230px; left: -180px; }
.invite-hero::after { width: 520px; height: 520px; right: -330px; bottom: -220px; }
.hero-badge { padding: 7px 14px; border: 1px solid rgba(255,255,255,.35); border-radius: 999px; font-size: 11px; letter-spacing: .18em; }
.organizer { margin: 30px 0 8px; font-size: 15px; color: rgba(255,255,255,.76); }
.invite-hero h1 { max-width: 700px; margin: 0; font-family: Georgia, "Times New Roman", serif; font-size: clamp(42px, 10vw, 76px); font-weight: 500; line-height: 1.12; letter-spacing: -.04em; }
.hero-subtitle { margin: 20px 0 0; font-size: clamp(17px, 4vw, 23px); color: #efd9b3; }
.hero-line { width: 1px; height: 52px; margin: 32px auto; background: linear-gradient(transparent, rgba(255,255,255,.8), transparent); }
.event-summary { width: min(620px, 100%); display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.event-summary div { padding: 18px 14px; border-top: 1px solid rgba(255,255,255,.25); border-bottom: 1px solid rgba(255,255,255,.25); }
.event-summary span { display: block; font-size: 10px; letter-spacing: .2em; color: #efd9b3; }
.event-summary strong { display: block; margin-top: 6px; font-size: 14px; font-weight: 600; }
.primary-cta { margin-top: 34px; display: inline-flex; align-items: center; justify-content: center; min-width: 190px; padding: 15px 24px; color: var(--ink); background: #f5e4c5; border-radius: 999px; text-decoration: none; font-weight: 800; box-shadow: 0 12px 32px rgba(0,0,0,.18); }
main { width: min(760px, 100%); margin: 0 auto; }
.invite-section { padding: 82px 24px; }
.section-kicker { margin: 0 0 15px; color: var(--gold); font-size: 11px; font-weight: 900; letter-spacing: .2em; }
.intro-section { text-align: center; }
.intro-section h2, .section-heading h2 { margin: 0; font-family: Georgia, "Times New Roman", serif; font-size: clamp(31px, 7vw, 46px); font-weight: 500; line-height: 1.35; letter-spacing: -.03em; }
.greeting { max-width: 540px; margin: 26px auto 0; color: var(--muted); white-space: pre-line; }
.info-section { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; padding-top: 0; }
.info-card { padding: 27px 20px; background: rgba(255,255,255,.66); border: 1px solid rgba(255,255,255,.9); box-shadow: 0 12px 38px rgba(29, 45, 66, .07); border-radius: 24px; }
.info-card > span { color: var(--gold); font-family: Georgia, serif; font-size: 26px; }
.info-card h3 { margin: 22px 0 8px; font-size: 16px; }
.info-card p { margin: 0; color: var(--muted); font-size: 14px; }
.application-section { margin: 10px 16px 74px; padding: 58px 26px; background: var(--cream); border: 1px solid rgba(194,148,80,.22); border-radius: 34px; box-shadow: var(--shadow); }
.section-heading { margin-bottom: 30px; }
.section-heading > p:last-child { color: var(--muted); }
.centered { text-align: center; }
.registration-status { margin-bottom: 24px; padding: 14px 16px; border-radius: 16px; font-size: 14px; font-weight: 700; }
.registration-status.loading { background: #eef2f6; color: #53657a; }
.registration-status.open { background: #ecf7ef; color: #236237; }
.registration-status.closed { background: #fff0ee; color: #a03a30; }
.application-form { display: grid; gap: 18px; }
.application-form label > span { display: block; margin-bottom: 8px; font-size: 14px; font-weight: 800; }
.application-form b { color: #b54a3f; }
.application-form input:not([type="checkbox"]), .application-form select, .application-form textarea { width: 100%; border: 1px solid #d9d6cf; border-radius: 16px; background: #fff; padding: 15px 16px; color: var(--ink); outline: none; transition: .2s; }
.application-form input:focus, .application-form select:focus, .application-form textarea:focus { border-color: var(--gold); box-shadow: 0 0 0 4px rgba(194,148,80,.12); }
.consent-row { display: grid; grid-template-columns: 22px 1fr; align-items: start; gap: 9px; color: #4d5968; font-size: 13px; }
.consent-row input { width: 19px; height: 19px; margin-top: 2px; accent-color: var(--blue); }
.consent-row span { margin: 0 !important; font-weight: 500 !important; }
.privacy-note { margin: -7px 0 0; color: #8b9098; font-size: 12px; }
.submit-button, .outline-button, .text-button { border: 0; cursor: pointer; }
.submit-button { width: 100%; padding: 17px 20px; border-radius: 16px; color: #fff; background: linear-gradient(135deg, #16253a, #355873); font-weight: 900; box-shadow: 0 14px 32px rgba(25, 44, 64, .2); }
.submit-button:disabled { opacity: .5; cursor: not-allowed; }
.honeypot { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

.lookup-section { margin: 0 16px 74px; padding: 52px 26px; background: rgba(255,255,255,.72); border: 1px solid rgba(255,255,255,.9); border-radius: 34px; box-shadow: 0 18px 50px rgba(29,45,66,.08); }
.lookup-form { grid-template-columns: 1fr 1fr; align-items: end; }
.lookup-form .outline-button { grid-column: 1 / -1; }
.lookup-help { margin: 14px 0 0; color: #8b9098; font-size: 12px; text-align: center; }
.remembered-ticket-notice { margin-bottom: 22px; padding: 16px; display: flex; align-items: center; justify-content: space-between; gap: 14px; border-radius: 18px; background: #eef5f8; border: 1px solid #dce9ef; }
.remembered-ticket-notice strong { display: block; color: #294b5d; font-size: 14px; }
.remembered-ticket-notice p { margin: 4px 0 0; color: #6b7f8a; font-size: 12px; }
.compact-button { flex: 0 0 auto; padding: 10px 13px; border: 0; border-radius: 12px; color: #fff; background: #294b5d; font-weight: 800; cursor: pointer; }
.danger-text { color: #a3453c; }

.ticket-section { padding-top: 20px; }
.mobile-ticket { position: relative; max-width: 420px; margin: 0 auto; padding: 27px; color: #fff; background: radial-gradient(circle at 16% 12%, rgba(224,191,132,.28), transparent 30%), linear-gradient(145deg, #112033 0%, #24435d 72%, #3c6276 100%); border-radius: 30px; box-shadow: 0 30px 80px rgba(19, 36, 54, .3); overflow: hidden; }
.mobile-ticket::after { content: "20"; position: absolute; right: -18px; bottom: -80px; font: 230px/1 Georgia, serif; color: rgba(255,255,255,.035); pointer-events: none; }
.ticket-topline { display: flex; justify-content: space-between; gap: 12px; font-size: 10px; letter-spacing: .12em; color: #ead1a5; }
.ticket-title { margin-top: 42px; }
.ticket-title p { margin: 0 0 5px; color: rgba(255,255,255,.68); font-size: 12px; }
.ticket-title h3 { margin: 0; font-family: Georgia, serif; font-size: 28px; font-weight: 500; line-height: 1.25; }
.ticket-person { margin-top: 38px; }
.ticket-person span { display: block; color: #ead1a5; font-size: 9px; letter-spacing: .16em; }
.ticket-person strong { display: block; margin-top: 4px; font-size: 23px; }
.ticket-qr { width: 216px; height: 216px; margin: 0 auto; padding: 12px; display: grid; place-items: center; background: #fff; border-radius: 20px; }
.ticket-qr canvas, .ticket-qr img { width: 192px !important; height: 192px !important; }
.ticket-guide { margin: 18px 0 0; text-align: center; font-size: 12px; color: rgba(255,255,255,.75); }
.ticket-event-meta { margin-top: 28px; padding-top: 18px; border-top: 1px solid rgba(255,255,255,.15); text-align: center; }
.ticket-event-meta p { margin: 2px 0; font-size: 12px; color: rgba(255,255,255,.76); }
.ticket-actions { max-width: 420px; margin: 26px auto 0; display: grid; gap: 10px; }
.outline-button { width: 100%; padding: 15px 18px; border-radius: 16px; border: 1px solid var(--ink); color: var(--ink); background: transparent; font-weight: 800; }
.text-button { display: block; width: 100%; padding: 9px; color: #667085; background: transparent; text-align: center; text-decoration: underline; font-size: 13px; }
.setup-warning { margin: 24px; background: #fff1ef; border-radius: 20px; color: #8b352e; }
.setup-warning h2 { margin-top: 0; font-size: 20px; }
.setup-warning code { padding: 2px 5px; background: rgba(255,255,255,.6); border-radius: 5px; }
footer { padding: 30px 20px 48px; text-align: center; color: #8a919a; font-size: 12px; }
.toast { position: fixed; z-index: 100; left: 50%; bottom: max(24px, env(safe-area-inset-bottom)); transform: translateX(-50%); width: min(90%, 440px); padding: 14px 18px; color: #fff; background: rgba(16,29,45,.94); border-radius: 14px; text-align: center; box-shadow: 0 14px 40px rgba(0,0,0,.22); }
.loading-overlay { position: fixed; z-index: 110; inset: 0; display: grid; place-content: center; justify-items: center; color: #fff; background: rgba(12,22,35,.72); backdrop-filter: blur(8px); }
.spinner { width: 42px; height: 42px; border: 4px solid rgba(255,255,255,.25); border-top-color: #fff; border-radius: 50%; animation: spin .8s linear infinite; }
.loading-overlay p { margin: 14px 0 0; }
.hidden { display: none !important; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (max-width: 650px) {
  .invite-hero { padding-left: 20px; padding-right: 20px; }
  .event-summary { grid-template-columns: 1fr; gap: 0; }
  .event-summary div:first-child { border-bottom: 0; }
  .info-section { grid-template-columns: 1fr; }
  .invite-section { padding-left: 20px; padding-right: 20px; }
  .application-section, .lookup-section { margin-left: 10px; margin-right: 10px; padding: 48px 20px; }
  .lookup-form { grid-template-columns: 1fr; }
  .remembered-ticket-notice { align-items: stretch; flex-direction: column; }
  .compact-button { width: 100%; }
}


/* 운영본 개인정보 동의 UI */
.field-help{display:block;margin-top:7px;color:#7a838f;font-size:12px;line-height:1.55}
.inline-privacy-button{display:inline;padding:0;border:0;background:transparent;color:#1e4f86;font:inherit;font-weight:800;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.inline-privacy-button:hover{color:#15395f}
.consent-row input:disabled{opacity:.5;cursor:not-allowed}
.privacy-modal-backdrop{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:rgba(8,17,30,.68);backdrop-filter:blur(5px)}
.privacy-modal-backdrop.hidden{display:none}
.privacy-modal{width:min(760px,100%);max-height:min(90vh,920px);display:flex;flex-direction:column;background:#fff;border-radius:24px;box-shadow:0 28px 90px rgba(0,0,0,.35);overflow:hidden}
.privacy-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:25px 28px 19px;border-bottom:1px solid #e8e7e3}
.privacy-modal-header h2{margin:4px 0 0;font-size:1.55rem;color:#17263a}
.privacy-modal-close{width:40px;height:40px;border:0;border-radius:50%;background:#f0f2f5;color:#344257;font-size:28px;line-height:1;cursor:pointer}
.privacy-modal-body{padding:24px 28px;overflow:auto;color:#374151;line-height:1.7}
.privacy-lead{margin:0 0 20px;padding:16px 18px;border-radius:16px;background:#f5f7fa;color:#334155}
.privacy-clause{padding:18px 0;border-bottom:1px solid #eceae6}
.privacy-clause:last-of-type{border-bottom:0}
.privacy-clause h3{margin:0 0 10px;color:#172554;font-size:1rem}
.privacy-clause p{margin:0}.privacy-clause ul{margin:0;padding-left:20px}.privacy-clause li+li{margin-top:5px}
.privacy-data-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.privacy-data-grid>div{padding:14px;border:1px solid #e1e5ea;border-radius:14px;background:#fafbfc}.privacy-data-grid strong{color:#172554}.privacy-data-grid p{margin-top:5px;font-size:13px}
.privacy-caution{margin-top:12px!important;padding:12px 14px;border-radius:12px;background:#fff7ed;color:#9a4d12;font-size:13px}
.law-reference a{display:inline-block;margin-top:10px;color:#1e4f86;font-weight:800}
.privacy-confirm-box{margin-top:20px;padding:16px 18px;border-radius:15px;background:#eef5ff;color:#274567}.privacy-confirm-box p{margin:5px 0 0;font-size:13px}
.privacy-modal-actions{padding:16px 28px 24px;background:#fff;border-top:1px solid #eceae6}.privacy-modal-actions .submit-button{width:100%}
body.modal-open{overflow:hidden}
.ticket-party-info{margin:8px 0 0;color:rgba(255,255,255,.72);font-size:13px;font-weight:600}
@media(max-width:640px){.privacy-modal-backdrop{padding:8px}.privacy-modal{max-height:94vh;border-radius:18px}.privacy-modal-header,.privacy-modal-body{padding-left:18px;padding-right:18px}.privacy-modal-actions{padding:14px 18px 18px}.privacy-data-grid{grid-template-columns:1fr}}

.privacy-scroll-guide{margin:0 0 10px;text-align:center;color:#667085;font-size:.8rem;line-height:1.45}.privacy-modal-actions .submit-button:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.2)}


/* v1.3 intro / wheelchair / live seat map */
.wheelchair-request-row>span{display:block;margin-bottom:8px;font-size:14px;font-weight:800}.wheelchair-request-box{padding:14px 15px;border:1px solid #dbeafe;border-radius:16px;background:#f0f8ff}.wheelchair-request-box .consent-row{margin:0}.wheelchair-request-box small{display:block;margin-top:7px;color:#64748b;line-height:1.55}.sensitive-consent-row{padding:13px;border-radius:14px;background:#eef8ff;border:1px solid #bae6fd}.sensitive-consent-row.hidden{display:none}
.intro-overlay{position:fixed;inset:0;z-index:9999;background:#05070b;display:grid;place-items:center;overflow:hidden}.intro-overlay.hidden{display:none}.intro-overlay.intro-leaving{opacity:0;transition:opacity .4s}.intro-video{width:100%;height:100%;object-fit:cover}.intro-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.38))}.intro-controls{position:absolute;left:18px;right:18px;bottom:max(20px,env(safe-area-inset-bottom));display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;color:#fff}.intro-controls button{border:1px solid rgba(255,255,255,.3);border-radius:999px;background:rgba(0,0,0,.42);color:#fff;padding:9px 13px;font-weight:800}.intro-progress{height:4px;background:rgba(255,255,255,.25);border-radius:8px;overflow:hidden}.intro-progress i{display:block;width:0;height:100%;background:#fff}body.intro-playing{overflow:hidden}
.ticket-seat-box{margin:18px auto 22px;padding:15px 16px;border-radius:18px;background:rgba(234,209,165,.12);border:1px solid rgba(234,209,165,.28);text-align:center}.ticket-seat-box span{display:block;color:#ead1a5;font-size:11px;font-weight:900;letter-spacing:.13em}.ticket-seat-box strong{display:block;margin-top:6px;color:#fff;font-size:20px;line-height:1.4}.ticket-seat-box p{margin:6px 0 0;color:rgba(255,255,255,.62);font-size:11px}
.public-seat-guide{margin-top:26px;padding:22px 8px;border-radius:24px;background:#fff;border:1px solid #e6e8ec;overflow-x:auto}.compact-heading{margin-bottom:14px}.public-stage{width:min(720px,80%);margin:0 auto 8px;padding:15px;text-align:center;border-radius:18px 18px 55% 55%;background:#172554;color:#fff;font-weight:900}.public-runway-head{width:52px;margin:0 auto -1px;padding:6px 3px;text-align:center;background:#d9c59e;color:#6d5530;font-size:9px;font-weight:900}.public-runway-map{display:grid;gap:3px;min-width:610px}.public-runway-row{display:grid;grid-template-columns:1fr 52px 1fr;gap:4px;align-items:center}.public-side{display:flex;justify-content:center;gap:2px}.public-runway-spine{align-self:stretch;display:grid;place-items:center;min-height:19px;background:#eadfc9;color:#806841;font-size:8px;font-weight:900}.public-seat-dot{width:15px;height:15px;border-radius:4px;background:#e5e7eb;border:1px solid #d1d5db}.public-seat-dot.public-vip{background:#fff0b8;border-color:#e2bf51}.public-seat-dot.public-wheelchair{outline:2px dashed #38bdf8}.public-seat-dot.my-seat{background:#2563eb!important;border:3px solid #facc15!important;box-shadow:0 0 0 2px #1e3a8a;transform:scale(1.22)}.public-extra-label{text-align:center;margin:13px 0 5px;color:#6b7280;font-size:11px;font-weight:800}.public-extra-map{padding-top:6px;border-top:1px dashed #d1d5db}@media(max-width:600px){.intro-controls{grid-template-columns:auto 1fr auto}.intro-controls #introSoundButton{display:none}}

/* v1.5 trailer + venue */
.hero-address{display:block;margin-top:4px;color:rgba(255,255,255,.62);font-size:11px;font-weight:500}
.trailer-section{margin:0 16px 74px;padding:58px 26px;border-radius:34px;background:linear-gradient(160deg,#0b1728,#1d3348);box-shadow:0 24px 70px rgba(17,34,51,.18);color:#fff}
.trailer-section .section-kicker{color:#e8c98f}.trailer-section .section-heading>p:last-child{color:rgba(255,255,255,.68)}
.trailer-frame{position:relative;width:min(100%,920px);margin:0 auto;aspect-ratio:16/9;overflow:hidden;border-radius:26px;background:#02060b;border:1px solid rgba(255,255,255,.12);box-shadow:0 24px 65px rgba(0,0,0,.35)}
.trailer-frame video{display:block;width:100%;height:100%;object-fit:contain;background:#000}.trailer-fallback{position:absolute;inset:0;display:grid;place-content:center;text-align:center;padding:30px;background:radial-gradient(circle at 50% 20%,#243f59,#08111e)}.trailer-fallback.hidden{display:none}.trailer-fallback strong{font-family:Georgia,"Noto Sans KR",serif;font-size:30px}.trailer-fallback p{margin:12px 0 0;color:rgba(255,255,255,.68);font-size:13px}.trailer-fallback code{color:#f2d5a0}.trailer-caption{text-align:center;margin:15px 0 0;color:rgba(255,255,255,.58);font-size:12px}
.location-section{margin:0 16px 74px;padding:58px 26px;border-radius:34px;background:#f7f5ef;border:1px solid rgba(194,148,80,.22);box-shadow:0 18px 55px rgba(29,45,66,.08)}
.venue-map-card{display:block;max-width:920px;margin:0 auto;text-decoration:none;color:inherit;border-radius:28px;overflow:hidden;background:#e9eee9;border:1px solid #d7ded8;box-shadow:0 18px 46px rgba(35,51,49,.11);transition:.2s}.venue-map-card:hover{transform:translateY(-2px);box-shadow:0 23px 55px rgba(35,51,49,.16)}
.map-schematic{position:relative;min-height:360px;overflow:hidden;background:linear-gradient(90deg,transparent 49%,rgba(255,255,255,.48) 49%,rgba(255,255,255,.48) 51%,transparent 51%),linear-gradient(#e7eee8,#eef2ec)}
.map-road{position:absolute;background:#fff;border:1px solid #d4ddd5;box-shadow:0 2px 10px rgba(63,78,66,.06)}.map-road span{position:absolute;color:#6c796f;font-size:12px;font-weight:800;white-space:nowrap}
.road-main{left:-6%;right:-5%;top:66%;height:58px;transform:rotate(-6deg)}.road-main:after{content:"";position:absolute;left:0;right:0;top:27px;border-top:2px dashed #dfcf97}.road-main span{left:12%;top:8px}
.road-entry{width:42%;height:42px;right:15%;top:37%;transform:rotate(67deg)}.road-entry:after{content:"";position:absolute;left:0;right:0;top:19px;border-top:1px dashed #d8c995}.road-entry span{right:16px;top:6px}
.map-block{position:absolute;border:1px solid #d7ddd6;background:#f8faf7;border-radius:12px;box-shadow:0 7px 16px rgba(61,76,64,.05)}.block-one{left:10%;top:15%;width:21%;height:22%}.block-two{right:8%;bottom:10%;width:18%;height:20%}
.map-tree{position:absolute;color:#9fc4a3;font-size:42px;text-shadow:34px 21px #afd0b2,68px -5px #95bc99}.tree-one{left:5%;bottom:15%}.tree-two{right:24%;top:9%}
.venue-pin{position:absolute;left:48%;top:40%;display:flex;align-items:center;gap:10px;transform:translate(-12%,-50%);z-index:4}.venue-pin i{position:relative;width:38px;height:38px;border-radius:50% 50% 50% 0;background:#7a203c;transform:rotate(-45deg);box-shadow:0 8px 18px rgba(122,32,60,.28)}.venue-pin i:after{content:"20";position:absolute;inset:6px;display:grid;place-items:center;border-radius:50%;background:#fff;color:#7a203c;font-style:normal;font-size:9px;font-weight:950;transform:rotate(45deg)}
.venue-pin div{padding:10px 13px;border-radius:13px;background:rgba(255,255,255,.94);box-shadow:0 8px 22px rgba(54,67,57,.15)}.venue-pin strong,.venue-pin span{display:block}.venue-pin strong{font-size:13px}.venue-pin span{margin-top:2px;color:#7a203c;font-size:10px;font-weight:900}
.map-compass{position:absolute;right:17px;top:17px;width:46px;height:46px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.9);box-shadow:0 5px 16px rgba(0,0,0,.08)}.map-compass b{position:absolute;top:5px;color:#7a203c;font-size:9px}.map-compass span{font-size:22px;color:#425349}
.map-open-hint{padding:13px 16px;text-align:center;background:#fff;color:#536459;font-size:12px;font-weight:800}
.venue-detail-card{max-width:920px;margin:16px auto 0;padding:22px;display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;border:1px solid #e1ddd3;border-radius:24px;background:#fff}.venue-icon{width:58px;height:58px;display:grid;place-items:center;border-radius:18px;background:#172554;color:#ead1a5;font-family:Georgia,serif;font-size:25px;font-weight:900}.venue-label{color:#b68847;font-size:10px;font-weight:950;letter-spacing:.15em}.venue-copy h3{margin:4px 0 5px;font-size:20px}.venue-copy p{margin:0;color:#667085;font-size:13px}
.venue-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.venue-map-button,.venue-copy-button{display:inline-flex;align-items:center;justify-content:center;min-height:43px;padding:0 14px;border-radius:13px;font-size:12px;font-weight:900;text-decoration:none;cursor:pointer}.venue-map-button{background:#03c75a;color:#fff}.venue-copy-button{border:1px solid #d8dce2;background:#fff;color:#344054}
@media(max-width:700px){.trailer-section,.location-section{padding:42px 17px}.trailer-frame{border-radius:19px}.map-schematic{min-height:290px}.venue-pin{left:38%;top:38%;transform:none}.venue-detail-card{grid-template-columns:auto 1fr}.venue-actions{grid-column:1/-1;justify-content:stretch}.venue-map-button,.venue-copy-button{flex:1}}


/* v1.6 uploaded venue map image */
.custom-map-card{background:#fff}
.venue-map-image{display:block;width:100%;height:auto}


/* v2.0 public 450-seat compact map */
.public-runway-map{
  min-width:0!important;
  width:100%!important;
}
.public-runway-row{
  grid-template-columns:minmax(0,1fr) 34px minmax(0,1fr)!important;
  gap:2px!important;
}
.public-side{
  display:grid!important;
  grid-template-columns:repeat(6,minmax(0,1fr))!important;
  gap:1px!important;
}
.public-seat-dot{
  width:100%!important;
  aspect-ratio:1/1!important;
  height:auto!important;
  min-width:0!important;
}
.public-extra-label,.public-extra-map{display:none!important}


/* v2.1 site-entry intro */
.intro-overlay{
  position:fixed;
  inset:0;
  z-index:99999;
  display:grid;
  place-items:center;
  background:#000;
  opacity:1;
  transition:opacity .52s ease;
}
.intro-overlay.hidden{display:none!important}
.intro-overlay.intro-leaving{
  opacity:0;
  pointer-events:none;
}
.intro-video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  background:#000;
}
.intro-start-panel{
  position:absolute;
  inset:0;
  z-index:6;
  display:grid;
  place-items:center;
  padding:24px;
  background:rgba(3,8,16,.66);
  backdrop-filter:blur(8px);
}
.intro-start-panel.hidden{display:none}
.intro-start-card{
  width:min(420px,92vw);
  padding:32px 25px;
  border:1px solid rgba(255,255,255,.18);
  border-radius:26px;
  background:rgba(12,25,42,.86);
  color:#fff;
  text-align:center;
  box-shadow:0 24px 70px rgba(0,0,0,.4);
}
.intro-start-card span{
  display:block;
  color:#ead1a5;
  font-size:11px;
  font-weight:900;
  letter-spacing:.17em;
}
.intro-start-card strong{
  display:block;
  margin-top:10px;
  font-size:24px;
}
.intro-start-card p{
  margin:10px 0 22px;
  color:rgba(255,255,255,.72);
  font-size:13px;
}
.intro-start-card button{
  width:100%;
  min-height:50px;
  border:0;
  border-radius:16px;
  background:#fff;
  color:#14243a;
  font-weight:900;
  cursor:pointer;
}
body.intro-playing{
  overflow:hidden!important;
}


/* v2.2 responsive intro video */
.intro-video{
  object-fit:cover;
  object-position:center center;
}
@media (max-width:820px) and (orientation:portrait){
  .intro-video{
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center center;
  }
  .intro-controls{
    left:12px;
    right:12px;
    bottom:max(14px,env(safe-area-inset-bottom));
    grid-template-columns:auto 1fr auto;
    gap:7px;
  }
  .intro-controls #introSoundButton{
    display:none;
  }
  .intro-controls button{
    padding:8px 11px;
    font-size:12px;
  }
}
@media (min-width:821px), (orientation:landscape){
  .intro-video{
    object-fit:cover;
  }
}


/* v2.3 full intro player controls */
.intro-player-shell{
  position:absolute;
  left:18px;
  right:18px;
  bottom:max(18px,env(safe-area-inset-bottom));
  z-index:10;
  padding:12px;
  border:1px solid rgba(255,255,255,.18);
  border-radius:18px;
  background:rgba(4,10,18,.62);
  backdrop-filter:blur(12px);
  box-shadow:0 12px 34px rgba(0,0,0,.28);
}
.intro-seek-row{
  display:grid;
  grid-template-columns:48px minmax(0,1fr) 48px;
  align-items:center;
  gap:9px;
}
.intro-time-code{
  color:#fff;
  font-size:11px;
  font-variant-numeric:tabular-nums;
  font-weight:800;
  text-align:center;
}
.intro-seek-bar{
  width:100%;
  min-width:0;
  height:20px;
  margin:0;
  cursor:pointer;
  accent-color:#ead1a5;
  touch-action:pan-x;
}
.intro-player-buttons{
  display:flex;
  align-items:center;
  justify-content:center;
  flex-wrap:wrap;
  gap:7px;
  margin-top:8px;
}
.intro-player-button{
  min-height:39px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  padding:0 12px;
  border:1px solid rgba(255,255,255,.2);
  border-radius:12px;
  background:rgba(0,0,0,.38);
  color:#fff;
  font-size:12px;
  font-weight:850;
  cursor:pointer;
}
.intro-player-button:hover{
  background:rgba(255,255,255,.14);
}
.intro-player-button.primary{
  min-width:108px;
  background:rgba(255,255,255,.94);
  color:#172554;
}
.intro-player-button.skip{
  margin-left:auto;
  border-color:rgba(234,209,165,.42);
  color:#f7ddb0;
}
.intro-controls{
  display:none!important;
}

/* v1.9에서 모바일 소리 버튼을 숨기던 규칙을 무효화 */
.intro-player-shell #introSoundButton{
  display:inline-flex!important;
}

@media(max-width:820px) and (orientation:portrait){
  .intro-player-shell{
    left:8px;
    right:8px;
    bottom:max(8px,env(safe-area-inset-bottom));
    padding:9px 8px;
    border-radius:15px;
  }
  .intro-seek-row{
    grid-template-columns:42px minmax(0,1fr) 42px;
    gap:5px;
  }
  .intro-time-code{
    font-size:10px;
  }
  .intro-seek-bar{
    height:26px;
  }
  .intro-player-buttons{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:5px;
    margin-top:5px;
  }
  .intro-player-button{
    width:100%;
    min-width:0;
    min-height:40px;
    padding:0 5px;
    border-radius:10px;
    font-size:11px;
  }
  .intro-player-button.primary{
    min-width:0;
  }
  .intro-player-button.skip{
    grid-column:1/-1;
    margin-left:0;
    min-height:36px;
  }
  .intro-player-button span{
    white-space:nowrap;
  }
}

@media(max-width:390px) and (orientation:portrait){
  .intro-player-button{
    font-size:10px;
  }
  .intro-player-button span{
    display:none;
  }
  .intro-player-button.skip span{
    display:inline;
  }
}

.wheelchair-count-box{display:grid;gap:8px}.wheelchair-number-line{display:flex;align-items:center;gap:9px}.wheelchair-number-line input{width:110px;min-height:48px;border:1px solid #cbd5e1;border-radius:13px;padding:0 14px;font-size:18px;font-weight:900}.wheelchair-number-line strong{font-size:15px}

.optional-field-mark{
  color:#64748b;
  font-size:.78em;
  font-style:normal;
  font-weight:700;
}
.integrated-privacy-grid{
  grid-template-columns:1fr 1fr;
}
@media(max-width:700px){
  .integrated-privacy-grid{grid-template-columns:1fr}
}


/* v2.4 individual application */
.individual-application-form{gap:16px}
.personal-option-card,
.personal-check-card,
.note-field{
  border:1px solid #e1e7ee;
  border-radius:18px;
  background:#fff;
}
.personal-option-card{padding:15px}
.choice-line,
.personal-check-card{
  display:flex!important;
  align-items:flex-start;
  gap:11px;
  cursor:pointer;
}
.choice-line input,
.personal-check-card input{
  width:20px!important;
  height:20px;
  margin-top:2px;
  flex:0 0 auto;
}
.choice-line strong,
.personal-check-card strong{display:block}
.choice-line small,
.personal-check-card small{
  display:block;
  margin-top:4px;
  color:#667085;
  font-weight:500;
  line-height:1.5;
}
.conditional-field{
  margin-top:14px;
  padding-top:14px;
  border-top:1px dashed #d8dee7;
}
.personal-check-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.personal-check-card{padding:15px}
.note-field{padding:15px}
.note-field textarea{
  width:100%;
  min-height:110px;
  resize:vertical;
  border:1px solid #cbd5e1;
  border-radius:13px;
  padding:12px 13px;
  font:inherit;
}
.qr-save-notice{
  max-width:920px;
  margin:0 auto 20px;
  display:flex;
  gap:14px;
  align-items:flex-start;
  padding:17px 18px;
  border:1px solid #e5c76c;
  border-radius:20px;
  background:#fff9df;
  color:#594400;
  box-shadow:0 10px 30px rgba(111,82,0,.08);
}
.qr-save-icon{
  width:46px;
  height:46px;
  flex:0 0 auto;
  display:grid;
  place-items:center;
  border-radius:13px;
  background:#172554;
  color:#fff;
  font-weight:950;
  letter-spacing:.04em;
}
.qr-save-notice strong{display:block;font-size:16px}
.qr-save-notice p{margin:5px 0 0;font-size:13px;line-height:1.65}
@media(max-width:700px){
  .personal-check-grid{grid-template-columns:1fr}
  .qr-save-notice{margin-left:0;margin-right:0}
}

/* v2.5 operation clean */
.qr-security-note{
  margin-top:6px!important;
  color:#7c5c00;
  font-size:12px!important;
}
.privacy-data-grid>div{
  min-width:0;
}


/* =====================================================================
   v2.6 — Invitation Gate
   QR 진입 → 검은 화면/편지 애니메이션 → '초대장 열기 🔊' → 소리+인트로
   ===================================================================== */

.invitation-experience{
  background:#020407!important;
  isolation:isolate;
}

.intro-movie-stage{
  position:absolute;
  inset:0;
  z-index:1;
  opacity:0;
  pointer-events:none;
  transition:opacity .9s ease;
  background:#000;
}
.intro-movie-stage.active{
  opacity:1;
  pointer-events:auto;
}

.invitation-gate{
  position:absolute;
  inset:0;
  z-index:20;
  display:grid;
  grid-template-rows:auto minmax(230px,1fr) auto;
  align-items:center;
  justify-items:center;
  overflow:hidden;
  padding:max(30px,env(safe-area-inset-top)) 22px max(28px,env(safe-area-inset-bottom));
  color:#fff;
  background:
    radial-gradient(circle at 50% 42%,rgba(53,174,166,.13),transparent 28%),
    radial-gradient(circle at 78% 18%,rgba(155,43,158,.1),transparent 24%),
    linear-gradient(180deg,#010203 0%,#05090c 54%,#010203 100%);
  transition:opacity .72s ease,visibility .72s ease;
}
.invitation-gate.gate-hidden{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}

.gate-ambient{
  position:absolute;
  width:44vw;
  height:44vw;
  border-radius:50%;
  filter:blur(80px);
  opacity:.11;
  pointer-events:none;
}
.gate-ambient-one{
  left:-20vw;
  top:18vh;
  background:#42b0a6;
}
.gate-ambient-two{
  right:-22vw;
  top:-18vw;
  background:#92299a;
}

.gate-stars{
  position:absolute;
  inset:0;
  pointer-events:none;
}
.gate-stars i{
  position:absolute;
  width:4px;
  height:4px;
  border-radius:50%;
  background:#fff;
  box-shadow:0 0 14px rgba(255,255,255,.85);
  animation:gateTwinkle 2.6s ease-in-out infinite;
}
.gate-stars i:nth-child(1){left:12%;top:18%;animation-delay:.2s}
.gate-stars i:nth-child(2){left:28%;top:31%;width:2px;height:2px;animation-delay:1.2s}
.gate-stars i:nth-child(3){right:18%;top:24%;animation-delay:.7s}
.gate-stars i:nth-child(4){right:10%;top:54%;width:3px;height:3px;animation-delay:1.7s}
.gate-stars i:nth-child(5){left:17%;bottom:20%;width:3px;height:3px;animation-delay:2s}
.gate-stars i:nth-child(6){right:31%;bottom:17%;width:2px;height:2px;animation-delay:.4s}
@keyframes gateTwinkle{
  0%,100%{opacity:.18;transform:scale(.65)}
  45%{opacity:1;transform:scale(1.5)}
}

.gate-brand{
  z-index:3;
  width:min(920px,82vw);
  min-height:72px;
  display:flex;
  justify-content:center;
  align-items:center;
  opacity:0;
  transform:translateY(-10px);
  animation:gateBrandIn .9s .55s ease forwards;
}
.gate-signature-logo{
  display:block;
  width:100%;
  max-height:118px;
  object-fit:contain;
  filter:drop-shadow(0 10px 26px rgba(0,0,0,.45));
}
@keyframes gateBrandIn{
  to{opacity:1;transform:none}
}

.gate-envelope-area{
  position:relative;
  z-index:4;
  display:grid;
  place-items:center;
  width:100%;
  min-height:260px;
  perspective:1100px;
}
.invitation-envelope-button{
  border:0;
  padding:0;
  background:transparent;
  cursor:pointer;
  color:inherit;
  -webkit-tap-highlight-color:transparent;
}
.invitation-envelope-button:focus-visible{
  outline:2px solid rgba(255,255,255,.9);
  outline-offset:12px;
  border-radius:24px;
}
.mail-flight{
  position:relative;
  display:block;
  width:340px;
  height:220px;
  opacity:0;
  transform:translate(75vw,-35vh) rotate(18deg) scale(.55);
  animation:mailArrival 1.35s .15s cubic-bezier(.16,.86,.22,1.04) forwards;
}
@keyframes mailArrival{
  0%{opacity:0;transform:translate(75vw,-35vh) rotate(18deg) scale(.55)}
  52%{opacity:1;transform:translate(-28px,12px) rotate(-4deg) scale(1.035)}
  76%{transform:translate(10px,-7px) rotate(1.5deg) scale(.99)}
  100%{opacity:1;transform:none}
}
.mail-envelope{
  position:absolute;
  inset:0;
  border-radius:17px;
  filter:drop-shadow(0 22px 35px rgba(0,0,0,.52));
  transform-style:preserve-3d;
}
.mail-back{
  position:absolute;
  inset:0;
  border-radius:17px;
  background:linear-gradient(145deg,#f3e8ce,#d9c49f);
  border:1px solid rgba(255,255,255,.44);
}
.mail-card{
  position:absolute;
  left:24px;
  right:24px;
  top:24px;
  height:178px;
  z-index:2;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:3px;
  border-radius:13px;
  background:linear-gradient(180deg,#fff,#f5f1e7);
  box-shadow:0 5px 20px rgba(0,0,0,.13);
  transform:translateY(24px);
  transition:transform 1s cubic-bezier(.18,.8,.2,1);
}
.mail-card img{
  width:92px;
  height:76px;
  object-fit:contain;
}
.mail-card b{
  color:#238b84;
  font-size:11px;
  letter-spacing:.18em;
}
.mail-card small{
  color:#6f7c82;
  font-size:8px;
  font-weight:800;
  letter-spacing:.12em;
}
.mail-front-left,.mail-front-right,.mail-front-bottom{
  position:absolute;
  z-index:4;
  pointer-events:none;
}
.mail-front-left{
  inset:0;
  clip-path:polygon(0 0,52% 52%,0 100%);
  background:linear-gradient(135deg,#ead8b8,#d7bf96);
  border-radius:17px 0 0 17px;
}
.mail-front-right{
  inset:0;
  clip-path:polygon(100% 0,48% 52%,100% 100%);
  background:linear-gradient(225deg,#efdfc3,#d5bc92);
  border-radius:0 17px 17px 0;
}
.mail-front-bottom{
  inset:0;
  clip-path:polygon(0 100%,50% 49%,100% 100%);
  background:linear-gradient(180deg,#e7d2ad,#cdb184);
  border-radius:0 0 17px 17px;
}
.mail-flap{
  position:absolute;
  inset:0;
  z-index:6;
  clip-path:polygon(0 0,100% 0,50% 58%);
  border-radius:17px 17px 0 0;
  background:linear-gradient(180deg,#f7ecd7,#d9c49f);
  transform-origin:50% 0%;
  transform:rotateX(0deg);
  transition:transform .75s cubic-bezier(.3,.7,.2,1);
  backface-visibility:hidden;
}
.mail-seal{
  position:absolute;
  z-index:7;
  left:50%;
  top:49%;
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:linear-gradient(145deg,#8d2492,#631d68);
  border:2px solid rgba(255,255,255,.23);
  color:#fff;
  font-family:Georgia,serif;
  font-weight:900;
  font-size:14px;
  box-shadow:0 5px 14px rgba(0,0,0,.27);
  transition:opacity .35s ease,transform .55s ease;
}
.invitation-envelope-button:hover .mail-card{
  transform:translateY(8px);
}

.gate-actions{
  position:relative;
  z-index:8;
  width:min(620px,94vw);
  text-align:center;
  opacity:0;
  transform:translateY(12px);
  animation:gateActionsIn .75s 1.2s ease forwards;
}
@keyframes gateActionsIn{to{opacity:1;transform:none}}
.gate-kicker{
  margin:0;
  color:#a8d5ce;
  font-size:10px;
  font-weight:900;
  letter-spacing:.25em;
}
.gate-actions h1{
  margin:10px 0 0;
  color:#fff;
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(28px,4.5vw,46px);
  font-weight:500;
  line-height:1.27;
  letter-spacing:-.035em;
}
.gate-description{
  margin:11px auto 18px;
  color:rgba(255,255,255,.65);
  font-size:13px;
  line-height:1.65;
}
.invitation-open-button{
  min-width:230px;
  min-height:56px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  border:1px solid rgba(255,255,255,.3);
  border-radius:999px;
  background:linear-gradient(135deg,#fff,#f0f1e8);
  color:#12222b;
  font-size:16px;
  font-weight:950;
  box-shadow:0 12px 34px rgba(0,0,0,.33),0 0 0 0 rgba(70,176,166,.3);
  cursor:pointer;
  animation:openButtonPulse 2.6s 2s ease-in-out infinite;
}
.invitation-open-button b{
  font-size:17px;
}
@keyframes openButtonPulse{
  0%,100%{box-shadow:0 12px 34px rgba(0,0,0,.33),0 0 0 0 rgba(70,176,166,0)}
  50%{box-shadow:0 12px 34px rgba(0,0,0,.33),0 0 0 12px rgba(70,176,166,.07)}
}
.invitation-skip-button{
  display:block;
  margin:10px auto 0;
  border:0;
  background:transparent;
  color:rgba(255,255,255,.52);
  font-size:11px;
  text-decoration:underline;
  text-underline-offset:3px;
  cursor:pointer;
}
.gate-audio-note{
  display:block;
  margin-top:8px;
  color:rgba(255,255,255,.38);
  font-size:10px;
  line-height:1.5;
}

/* 초대장 열기 클릭 애니메이션 */
.invitation-gate.gate-opening .mail-flap{
  transform:rotateX(178deg);
  z-index:1;
}
.invitation-gate.gate-opening .mail-seal{
  opacity:0;
  transform:translate(-50%,-50%) scale(.6);
}
.invitation-gate.gate-opening .mail-card{
  transform:translateY(-112px) scale(1.08);
}
.invitation-gate.gate-opening .gate-brand{
  filter:brightness(1.18);
}
.invitation-gate.gate-opening .gate-actions{
  opacity:0;
  transform:translateY(18px);
  transition:opacity .38s ease,transform .38s ease;
}
.invitation-gate.gate-opening .mail-flight{
  animation:none;
  opacity:1;
  transform:scale(1.03);
  transition:transform .65s ease;
}

/* 영상 컨트롤은 초대장을 연 뒤에만 표시 */
.intro-movie-stage .intro-player-shell{
  opacity:0;
  transform:translateY(12px);
  pointer-events:none;
  transition:opacity .5s .65s ease,transform .5s .65s ease;
}
.intro-movie-stage.active .intro-player-shell{
  opacity:1;
  transform:none;
  pointer-events:auto;
}

@media(max-width:820px) and (orientation:portrait){
  .invitation-gate{
    grid-template-rows:auto minmax(235px,1fr) auto;
    padding:max(24px,env(safe-area-inset-top)) 14px max(24px,env(safe-area-inset-bottom));
  }
  .gate-brand{
    width:min(92vw,630px);
    min-height:58px;
  }
  .gate-signature-logo{
    max-height:82px;
  }
  .mail-flight{
    width:282px;
    height:184px;
  }
  .mail-card{
    left:20px;
    right:20px;
    top:20px;
    height:148px;
  }
  .mail-card img{
    width:76px;
    height:62px;
  }
  .mail-seal{
    width:36px;
    height:36px;
    font-size:12px;
  }
  .gate-envelope-area{
    min-height:215px;
  }
  .gate-actions{
    width:min(94vw,500px);
  }
  .gate-actions h1{
    font-size:30px;
  }
  .gate-description{
    margin-bottom:15px;
    font-size:12px;
  }
  .invitation-open-button{
    min-width:218px;
    min-height:54px;
  }
  .gate-audio-note{
    padding:0 12px;
  }
  .invitation-gate.gate-opening .mail-card{
    transform:translateY(-82px) scale(1.04);
  }
}

@media(max-height:690px){
  .gate-signature-logo{max-height:70px}
  .mail-flight{transform-origin:center center}
  .gate-description{display:none}
  .gate-audio-note{display:none}
}


/* v2.7 신청서 피드백 반영 */
.application-title-row{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:11px;
  flex-wrap:wrap;
}
.application-personal-badge{
  display:inline-flex;
  align-items:center;
  min-height:32px;
  padding:5px 11px;
  border-radius:999px;
  background:#edf3ff;
  border:1px solid #cbd9f6;
  color:#214a9c;
  font-size:12px;
  font-weight:900;
}
.application-important-copy{
  max-width:720px;
  margin-left:auto!important;
  margin-right:auto!important;
  padding:12px 15px;
  border-radius:14px;
  background:#fff8df;
  border:1px solid #ead38a;
  color:#654f08!important;
}
.accessibility-application-card{
  padding:17px;
  border:1px solid #d9e1ed;
  border-radius:20px;
  background:#fbfcfe;
}
.accessibility-application-intro{
  margin-bottom:14px;
}
.accessibility-application-intro strong{
  display:block;
  color:#172554;
  font-size:14px;
  line-height:1.55;
}
.accessibility-application-intro p{
  margin:5px 0 0;
  color:#667085;
  font-size:12px;
  line-height:1.55;
}
.disabled-person-check{
  margin:0;
}
.accessibility-details{
  display:grid;
  gap:12px;
  margin-top:14px;
  padding-top:14px;
  border-top:1px dashed #d8e0ec;
}
.binary-choice-group{
  min-width:0;
  margin:0;
  padding:0;
  border:0;
}
.binary-choice-group legend{
  margin-bottom:8px;
  color:#172554;
  font-size:13px;
  font-weight:900;
}
.binary-choice-buttons{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
.binary-choice-buttons label{
  position:relative;
  cursor:pointer;
}
.binary-choice-buttons input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.binary-choice-buttons span{
  min-height:46px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:9px 12px;
  border:1px solid #cfd8e6;
  border-radius:13px;
  background:#fff;
  color:#475467;
  font-size:13px;
  font-weight:850;
  transition:.18s ease;
}
.binary-choice-buttons input:checked+span{
  border-color:#366bd6;
  background:#edf3ff;
  color:#173e91;
  box-shadow:0 0 0 2px rgba(54,107,214,.08);
}
.binary-choice-buttons input:focus-visible+span{
  outline:2px solid #366bd6;
  outline-offset:2px;
}
@media(max-width:560px){
  .application-title-row{
    align-items:flex-start;
    justify-content:flex-start;
  }
}


/* =====================================================================
   v2.7.1 — 모바일 초대장 1페이지 폰트 피드백
   ===================================================================== */

/* '남양주시장애인복지관'을 '스무번의 계절...'과 비슷한 시각 크기로 */
.invite-hero .organizer{
  margin-top:30px;
  margin-bottom:9px;
  font-size:clamp(17px,4vw,23px);
  line-height:1.35;
  font-weight:650;
  color:rgba(255,255,255,.84);
}

/* DATE / PLACE 영역 전체를 기존보다 한 단계 크게 */
.invite-hero .event-summary{
  width:min(680px,100%);
  gap:16px;
}

.invite-hero .event-summary div{
  padding:21px 15px 22px;
}

.invite-hero .event-summary span{
  font-size:clamp(12px,2.8vw,15px);
  line-height:1.25;
  letter-spacing:.19em;
  font-weight:800;
}

.invite-hero .event-summary strong{
  margin-top:8px;
  font-size:clamp(17px,3.8vw,21px);
  line-height:1.4;
  font-weight:750;
}

.invite-hero .hero-address{
  margin-top:6px;
  font-size:clamp(12px,3vw,15px);
  line-height:1.45;
  font-weight:550;
  color:rgba(255,255,255,.68);
}

@media(max-width:520px){
  .invite-hero .event-summary{
    gap:10px;
  }
  .invite-hero .event-summary div{
    padding:18px 8px 19px;
  }
}

/* v2.7.2 공개 좌석도 장애인 우선석 */
.public-seat-dot.public-disabled-priority{
  background:#ffedd5;
  border-color:#fb923c;
}
.public-seat-dot.public-wheelchair{
  background:#bae6fd;
  border-color:#0ea5e9;
  outline:2px dashed #0ea5e9;
}

/* v2.7.3 공개 좌석도 */
.public-seat-dot.public-disabled-priority{background:#bae6fd!important;border-color:#0284c7!important;outline:none!important}

/* v2.7.3 한글 글자 밀림 / 폰트 폴백 수정 */
.invite-hero h1,
.intro-section h2,
.section-heading h2,
.gate-actions h1,
.ticket-title h3,
.trailer-fallback strong{
  font-family:"Pretendard","Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic","맑은 고딕",sans-serif!important;
  font-kerning:normal;
  font-variant-ligatures:none;
  word-break:keep-all;
  overflow-wrap:normal;
  text-rendering:optimizeLegibility;
}
.invite-hero h1{font-weight:800!important;letter-spacing:-.018em!important;line-height:1.18!important}
.intro-section h2,.section-heading h2{font-weight:750!important;letter-spacing:-.012em!important;line-height:1.38!important}
.gate-actions h1{font-weight:650!important;letter-spacing:-.012em!important;line-height:1.35!important}
.invite-hero .organizer,
.invite-hero .hero-subtitle,
.invite-hero .event-summary strong,
.invite-hero .hero-address{
  font-family:"Pretendard","Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic","맑은 고딕",sans-serif!important;
  letter-spacing:-.005em;
  word-break:keep-all;
  overflow-wrap:normal;
}
.invite-hero .event-summary span{width:100%;text-align:center;white-space:nowrap}
@media(max-width:520px){.invite-hero h1{letter-spacing:-.012em!important}}


/* v2.7.4 타이틀 정리 + 개인정보 동의 단일화 */
.invite-hero .organizer{display:none!important;}

.invite-hero h1{
  max-width:780px!important;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
}

.invite-hero .event-name-org,
.invite-hero .event-name-main{
  display:block;
  width:100%;
  text-align:center;
  word-break:keep-all;
}

.invite-hero .event-name-org{
  font-size:clamp(24px,5.2vw,40px);
  font-weight:750;
  line-height:1.25;
  letter-spacing:-.02em;
}

.invite-hero .event-name-main{
  font-size:clamp(42px,10vw,76px);
  font-weight:800;
  line-height:1.12;
  letter-spacing:-.03em;
}

.consent-row-unified{
  padding:14px 16px;
  border:1px solid #d7e3f4;
  border-radius:16px;
  background:#f8fbff;
}

.consent-row-unified span{
  display:flex;
  align-items:center;
  gap:6px;
  min-height:22px;
}

.consent-row-unified .inline-privacy-button{
  font-weight:800;
}

@media (max-width:520px){
  .invite-hero h1{gap:6px;}
  .invite-hero .event-name-org{font-size:clamp(22px,4.8vw,30px);}
}


/* =====================================================================
   v2.7.6 — 공개 초대장 중복 문구 정리 / 상세 좌석 보기
   ===================================================================== */
.application-important-copy{
  line-height:1.65;
}
.optional-field-mark{
  white-space:normal;
  line-height:1.45;
}
.ticket-seat-detail-button{
  margin-top:12px;
  min-height:42px;
  padding:0 17px;
  border:1px solid rgba(234,209,165,.48);
  border-radius:999px;
  background:rgba(255,255,255,.08);
  color:#fff;
  font:inherit;
  font-size:12px;
  font-weight:900;
  cursor:pointer;
}
.ticket-seat-detail-button:hover{
  background:rgba(255,255,255,.14);
}

/* 상세 좌석도 */
.seat-detail-backdrop{
  position:fixed;
  inset:0;
  z-index:1200;
  display:grid;
  place-items:center;
  padding:14px;
  background:rgba(8,17,30,.78);
  backdrop-filter:blur(6px);
}
.seat-detail-backdrop.hidden{display:none}
.seat-detail-modal{
  width:min(1500px,100%);
  height:min(94vh,980px);
  display:grid;
  grid-template-rows:auto auto auto 1fr auto;
  background:#f8fafc;
  border-radius:24px;
  overflow:hidden;
  box-shadow:0 30px 100px rgba(0,0,0,.42);
}
.seat-detail-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  padding:20px 24px 15px;
  background:#fff;
  border-bottom:1px solid #e5e7eb;
}
.seat-detail-header h2{
  margin:3px 0 5px;
  color:#172554;
  font-size:clamp(24px,4vw,34px);
}
.seat-detail-header p:last-child{
  margin:0;
  color:#64748b;
  font-size:14px;
}
.seat-detail-close{
  width:42px;
  height:42px;
  flex:0 0 auto;
  border:0;
  border-radius:50%;
  background:#eef2f7;
  color:#334155;
  font-size:28px;
  cursor:pointer;
}
.seat-detail-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:11px 24px;
  background:#fff;
  border-bottom:1px solid #eef1f5;
}
.seat-detail-status{
  display:flex;
  align-items:center;
  gap:8px;
  min-width:0;
  color:#475569;
  font-size:12px;
}
.seat-detail-status strong{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.seat-detail-connection-dot{
  width:9px;
  height:9px;
  flex:0 0 auto;
  border-radius:50%;
  background:#22c55e;
}
.seat-detail-connection-dot.offline{background:#f59e0b}
.seat-detail-zoom-controls{
  display:flex;
  gap:6px;
  flex:0 0 auto;
}
.seat-detail-zoom-controls button{
  min-width:40px;
  height:36px;
  border:1px solid #d8dee8;
  border-radius:10px;
  background:#fff;
  color:#334155;
  font-weight:900;
  cursor:pointer;
}
.seat-detail-zoom-controls #seatZoomResetButton{min-width:62px}
.seat-detail-legend{
  display:flex;
  justify-content:center;
  gap:14px;
  flex-wrap:wrap;
  padding:10px 18px;
  background:#f8fafc;
  border-bottom:1px solid #e8edf4;
  color:#475569;
  font-size:12px;
  font-weight:800;
}
.seat-detail-legend span{
  display:flex;
  align-items:center;
  gap:6px;
}
.seat-legend-dot{
  width:16px;
  height:16px;
  border-radius:5px;
  border:1px solid #cbd5e1;
  background:#fff;
}
.seat-legend-dot.vip{background:#fff0b8;border-color:#d6aa2f}
.seat-legend-dot.accessible{background:#bae6fd;border-color:#0284c7}
.seat-legend-dot.general{background:#f8fafc;border-color:#cbd5e1}
.seat-legend-dot.mine{
  background:#2563eb;
  border:3px solid #facc15;
}
.seat-detail-viewport{
  overflow:auto;
  padding:20px;
  background:#eef2f7;
  overscroll-behavior:contain;
}
.seat-detail-canvas{
  --seat-detail-zoom:1;
  width:1180px;
  min-height:650px;
  margin:0 auto;
  padding:18px 20px 24px;
  border-radius:20px;
  background:#fff;
  transform:scale(var(--seat-detail-zoom));
  transform-origin:top center;
  transition:transform .16s ease;
  box-shadow:0 10px 35px rgba(15,23,42,.08);
}
.seat-detail-stage{
  width:640px;
  margin:0 auto 9px;
  padding:19px;
  border-radius:15px 15px 46% 46%;
  background:#172554;
  color:#fff;
  text-align:center;
  font-size:22px;
  font-weight:900;
}
.seat-detail-runway-label{
  width:86px;
  margin:0 auto -1px;
  padding:7px 4px;
  background:#e8dbc0;
  color:#755d35;
  text-align:center;
  font-size:10px;
  font-weight:950;
  letter-spacing:.1em;
}
.seat-detail-map{
  display:grid;
  gap:4px;
}
.seat-detail-row{
  display:grid;
  grid-template-columns:36px 1fr 86px 1fr 36px;
  gap:5px;
  align-items:center;
}
.seat-detail-row-label{
  color:#172554;
  font-size:11px;
  text-align:center;
}
.seat-detail-side{
  display:grid;
  grid-template-columns:repeat(6,1fr);
  gap:3px;
}
.seat-detail-runway-cell{
  min-height:31px;
  display:grid;
  place-items:center;
  background:#efe5d2;
  color:#775e37;
  font-size:10px;
  font-weight:900;
}
.seat-detail-cell{
  position:relative;
  min-width:0;
  height:31px;
  display:grid;
  place-items:center;
  border:1px solid #cbd5e1;
  border-radius:6px;
  background:#f8fafc;
  color:#475569;
  font-size:9px;
}
.seat-detail-cell.vip{
  background:#fff0b8;
  border-color:#d6aa2f;
  color:#7c5b00;
}
.seat-detail-cell.accessible{
  background:#dff4ff;
  border-color:#38a9db;
  color:#075985;
}
.seat-detail-cell.mine{
  z-index:2;
  background:#2563eb!important;
  color:#fff!important;
  border:3px solid #facc15!important;
  box-shadow:0 0 0 2px #1e3a8a,0 4px 10px rgba(30,58,138,.28);
  transform:scale(1.12);
}
.seat-detail-footer{
  display:grid;
  grid-template-columns:1fr auto;
  align-items:center;
  gap:18px;
  padding:14px 24px 18px;
  background:#fff;
  border-top:1px solid #e5e7eb;
}
.seat-detail-footer p{
  margin:0;
  color:#64748b;
  font-size:12px;
  line-height:1.55;
}
.seat-detail-footer .submit-button{
  min-width:130px;
  margin:0;
}
@media(max-width:720px){
  .seat-detail-backdrop{padding:0}
  .seat-detail-modal{
    width:100%;
    height:100dvh;
    border-radius:0;
  }
  .seat-detail-header{padding:16px 16px 12px}
  .seat-detail-toolbar{padding:9px 14px}
  .seat-detail-status strong{max-width:210px}
  .seat-detail-viewport{padding:12px}
  .seat-detail-footer{
    grid-template-columns:1fr;
    gap:10px;
    padding:12px 16px max(16px,env(safe-area-inset-bottom));
  }
  .seat-detail-footer .submit-button{width:100%}
}

/* v2.8 300석 상세 좌석도 */
.seat-detail-canvas{width:980px}
.seat-detail-stage{width:540px}
.seat-detail-side{grid-template-columns:repeat(10,1fr)}


/* =====================================================================
   v2.8.1 — 공개 좌석도 10+10 강제 정합성
   ===================================================================== */
.public-side{
  grid-template-columns:repeat(6,minmax(0,1fr))!important;
}
.seat-detail-side{
  grid-template-columns:repeat(6,minmax(0,1fr))!important;
}
.public-runway-map{
  max-width:760px;
  margin-left:auto;
  margin-right:auto;
}


/* v2.8.2 참가 취소/참여불가 상태 */
.cancelled-ticket-section{padding-top:34px;padding-bottom:34px}
.cancelled-ticket-card{
  width:min(620px,100%);margin:0 auto;padding:34px 28px;
  border:1px solid #e5e7eb;border-radius:24px;background:#fff;
  text-align:center;box-shadow:0 18px 50px rgba(15,23,42,.08)
}
.cancelled-ticket-icon{
  width:64px;height:64px;display:grid;place-items:center;margin:0 auto 15px;
  border-radius:50%;background:#f1f5f9;color:#64748b;font-size:34px;font-weight:800
}
.cancelled-ticket-card h2{
  margin:5px 0 11px;color:#1e293b;font-size:clamp(25px,5vw,34px);line-height:1.25
}
.cancelled-ticket-card>p:not(.section-kicker){
  margin:0 auto 21px;color:#64748b;line-height:1.65
}
.cancelled-new-application{
  display:inline-flex;justify-content:center;width:auto;min-width:180px
}

/* v3.0 다중 참가자 QR */
.device-ticket-wallet-list{width:min(680px,100%);margin:0 auto;display:grid;gap:10px}
.device-wallet-ticket{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 17px;border:1px solid #dce5ef;border-radius:16px;background:#fff;color:#1e293b;text-align:left;cursor:pointer}
.device-wallet-ticket span{display:grid;gap:3px}.device-wallet-ticket small{color:#64748b}.device-wallet-ticket b{color:#1d4ed8;white-space:nowrap}.wallet-loading{text-align:center;color:#64748b}

/* v3.1 180석 + 특수 다중신청 */
.public-side{grid-template-columns:repeat(6,minmax(0,1fr))!important}.seat-detail-side{grid-template-columns:repeat(6,minmax(0,1fr))!important}.seat-detail-canvas{width:760px!important}.public-runway-map{max-width:620px!important}.special-group-application{margin-top:18px;border:1px solid #d8e1ec;border-radius:20px;background:#f8fafc;overflow:hidden}.special-group-application summary{display:flex;justify-content:space-between;gap:12px;padding:18px 20px;cursor:pointer;list-style:none}.special-group-application summary::-webkit-details-marker{display:none}.special-group-application summary span{color:#64748b;font-size:.82rem}.special-group-body{padding:0 20px 20px}.special-group-guide{margin:0 0 16px;padding:14px 15px;border-radius:14px;background:#eef6ff;color:#334155;line-height:1.65}.group-member-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:18px 0 10px}.group-member-heading p{margin:4px 0 0;color:#64748b;font-size:.82rem}.group-member-list{display:grid;gap:10px}.group-member-card{padding:14px;border:1px solid #dce5ef;border-radius:15px;background:#fff}.group-member-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.group-member-remove{border:0;background:transparent;color:#b91c1c;font-weight:800;cursor:pointer}.group-member-checks{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:10px}.group-member-checks label{display:flex;align-items:center;gap:6px;font-size:.82rem}.group-application-summary{margin:14px 0;padding:11px 13px;border-radius:12px;background:#0f274a;color:#fff;font-weight:800}.wheelchair-user-check small{display:block;margin-top:3px;color:#64748b;font-weight:500}

/* v3.2 모바일 식순 */
.schedule-modal{width:min(760px,94vw)!important}.schedule-guide{color:#64748b}.mobile-schedule-image{display:block;width:100%;max-width:640px;max-height:68vh;object-fit:contain;margin:16px auto;border-radius:18px;border:1px solid #e2e8f0;background:#f8fafc}

/* v3.3 25행 좌석 상세보기 */
.seat-detail-canvas{
  max-height:72vh;
  overflow:auto;
}


/* v3.4 — 행사 세부내용 / 신청 단계형 공개 */
.hero-program-button{border:0;cursor:pointer}

.program-section{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at 92% 8%,rgba(193,73,169,.14),transparent 26%),
    linear-gradient(145deg,#fff 0%,#fbf8fd 55%,#f4f0fa 100%);
}
.program-section::after{
  content:"20";
  position:absolute;
  right:-28px;
  bottom:-70px;
  font-size:240px;
  line-height:1;
  font-weight:900;
  color:rgba(54,25,86,.035);
  pointer-events:none;
}
.program-visual-head{
  display:grid;
  grid-template-columns:1fr;
  gap:22px;
  align-items:start;
  position:relative;
  z-index:1;
}
.program-visual-head h2{margin-bottom:10px}
.program-visual-head>div:first-child>p:last-child{
  margin:0;
  color:#625b6c;
  line-height:1.75;
}
.program-20-mark{
  display:grid;
  place-items:center;
  width:88px;height:88px;
  border-radius:28px;
  background:linear-gradient(145deg,#2a1550,#a93e9e);
  color:#fff;
  font-size:38px;
  font-weight:900;
  box-shadow:0 14px 30px rgba(61,24,82,.18);
}
.program-timeline{
  position:relative;
  z-index:1;
  display:grid;
  gap:0;
  margin-top:28px;
  border-top:1px solid #e7deea;
}
.program-timeline-item{
  display:grid;
  grid-template-columns:105px minmax(0,1fr);
  gap:15px;
  padding:18px 0;
  border-bottom:1px solid #e7deea;
  align-items:start;
}
.program-number{
  color:#b38a34;
  font-size:11px;
  font-weight:900;
  letter-spacing:1px;
  padding-top:4px;
}
.program-time{
  color:#4a2b65;
  font-size:13px;
  font-weight:900;
  padding-top:2px;
}
.program-copy h3{
  margin:0;
  color:#241337;
  font-size:17px;
  letter-spacing:-.5px;
}
.program-copy p{
  margin:5px 0 0;
  color:#736c78;
  font-size:13px;
  line-height:1.65;
}
.program-change-note{
  position:relative;
  z-index:1;
  margin:18px 0 0;
  color:#8c8390;
  font-size:11px;
}

.application-gateway-section{
  padding-top:10px;
  padding-bottom:26px;
}
.application-gateway-card{
  position:relative;
  overflow:hidden;
  padding:28px 24px;
  border-radius:24px;
  color:#fff;
  background:
    radial-gradient(circle at 90% 10%,rgba(225,95,189,.32),transparent 28%),
    linear-gradient(120deg,#211040,#3b1b60 58%,#722b73);
  box-shadow:0 18px 38px rgba(34,18,55,.2);
}
.application-gateway-card::after{
  content:"20";
  position:absolute;
  right:-20px;top:-18px;
  font-size:150px;font-weight:900;
  color:rgba(255,255,255,.06);
}
.application-gateway-card .section-kicker{color:#e7c76d}
.application-gateway-card h2{position:relative;z-index:1;margin:8px 0 8px}
.application-gateway-card p{position:relative;z-index:1;color:rgba(255,255,255,.72);line-height:1.65}
.application-reveal-button{
  position:relative;z-index:1;
  width:100%;
  margin-top:16px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  border:1px solid rgba(255,255,255,.16);
  border-radius:15px;
  padding:16px 18px;
  background:linear-gradient(100deg,#fff,#f6e9fa);
  color:#31164d;
  font-weight:900;
  cursor:pointer;
}
.application-reveal-button b{transition:transform .2s}
.application-reveal-button.opened b{transform:rotate(180deg)}
.application-section{padding-top:0}
.application-reveal-body.hidden{display:none!important}
.application-reveal-body{animation:applicationReveal .26s ease both}
@keyframes applicationReveal{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

.ticket-seat-private strong{font-size:1.02rem!important}
.ticket-seat-private p{margin:6px 0 0;color:#64748b;line-height:1.55}

@media(max-width:620px){
  .program-visual-head{grid-template-columns:1fr}
  .program-20-mark{width:62px;height:62px;border-radius:20px;font-size:28px}
  .program-timeline-item{grid-template-columns:82px minmax(0,1fr);gap:9px;padding:15px 0}
  .program-time{font-size:11px}
  .program-copy h3{font-size:15px}
}


/* v3.5.4 — CTA 동작 및 상세내용 → 신청 흐름 */
#program,
#application{
  scroll-margin-top:22px;
}
.program-highlight-once{
  animation:programFocusPulse .9s ease;
}
@keyframes programFocusPulse{
  0%{box-shadow:0 0 0 0 rgba(183,66,161,0)}
  35%{box-shadow:0 0 0 5px rgba(183,66,161,.16)}
  100%{box-shadow:0 0 0 0 rgba(183,66,161,0)}
}
.program-apply-button{
  position:relative;
  z-index:2;
  width:100%;
  margin-top:22px;
  padding:17px 18px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border:0;
  border-radius:16px;
  cursor:pointer;
  color:#fff;
  background:linear-gradient(105deg,#29134f,#6d2d7e 58%,#bc3da2);
  box-shadow:0 12px 26px rgba(58,24,76,.20);
}
.program-apply-button span{
  font-size:12px;
  color:rgba(255,255,255,.68);
  text-align:left;
}
.program-apply-button strong{
  font-size:15px;
  white-space:nowrap;
}

.program-20-mark,.program-number{display:none!important;}
