/* 이벤트 · 팀 모집(#/events/… · web/shell/eventView.js · spec_shudpa §9 · 10-07 오너 승인 시안 + 피드백) — Framer 다크.
 *   캔버스 #090909 · 표면 surface-1/2 · 흰 알약 = 주 행동. 그라데이션(magenta · violet · orange)은 시그니처 프레임 · 자리 아바타 · 큰 제목
 *   한 구절에만 쓴다(DESIGN). 글꼴은 앱 변수(--font-heading = SUIT · --font-sans = Pretendard) — 새 글꼴 파일 없음.
 *   가로 넘침: 기울인 프레임이 390px 에서 삐져나오지 않게 페이지가 clip 한다(hidden 이 아니라 clip — 붙는 탭의 sticky 를 살린다). */
body.shell-v2 .ev-page { max-width: 1160px; margin: 0 auto; padding: 0 var(--page-gutter) var(--sp-section); overflow-x: clip; min-width: 0; word-break: keep-all; }
body.shell-v2 .ev-page--gate { padding-top: var(--sp-lg); }

/* ── 뼈대(첫 로딩) — 히어로와 같은 높이를 미리 잡아 그려질 때 뛰지 않는다 ── */
body.shell-v2 .ev-skel-page { display: grid; gap: 18px; padding: 56px 0 40px; min-height: 620px; align-content: start; }
body.shell-v2 .ev-skel { display: block; border-radius: var(--r-md); background: var(--surface-1); }
body.shell-v2 .ev-skel--eyebrow { width: 240px; height: 16px; }
body.shell-v2 .ev-skel--display { width: min(560px, 90%); height: 72px; }
body.shell-v2 .ev-skel--lead { width: min(620px, 95%); height: 48px; }
body.shell-v2 .ev-skel--strip { width: 100%; height: 72px; margin-top: 120px; border-radius: var(--r-lg); }
body.shell-v2 .ev-skel--w30 { width: 30%; height: 12px; } body.shell-v2 .ev-skel--w40 { width: 40%; height: 30px; margin-top: auto; }
body.shell-v2 .ev-skel--w60 { width: 60%; height: 22px; } body.shell-v2 .ev-skel--w80 { width: 80%; height: 12px; } body.shell-v2 .ev-skel--w90 { width: 90%; height: 12px; }
@media (prefers-reduced-motion: no-preference) {
  body.shell-v2 .ev-skel { animation: ev-pulse 1.4s ease-in-out infinite; }
  @keyframes ev-pulse { 50% { opacity: .55; } }
}

/* ── 히어로 ── */
body.shell-v2 .ev-hero { position: relative; isolation: isolate; display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: var(--sp-xxl); align-items: center; padding: 56px 0 40px; }
body.shell-v2 .ev-eyebrow { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
body.shell-v2 .ev-eyebrow-t { font-family: var(--font-heading); font-size: 12px; font-weight: 700; letter-spacing: var(--ls-footnote); text-transform: uppercase; color: var(--ink-48); }
body.shell-v2 .ev-dday { display: inline-flex; align-items: center; gap: 8px; padding: 4px 10px; border-radius: var(--r-pill); background: rgba(255,255,255,.06); color: var(--ink); font-size: 12px; font-weight: 600; white-space: nowrap; }
body.shell-v2 .ev-dday-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--ink-48); }
body.shell-v2 .ev-dday--live .ev-dday-dot { background: var(--positive); box-shadow: 0 0 0 4px rgba(34,197,94,.18); }
body.shell-v2 .ev-display { margin: 18px 0 20px; font-family: var(--font-heading); font-weight: 800; font-size: 70px; font-size: clamp(40px, 5.2vw, 70px); line-height: 1.02; letter-spacing: -0.045em; color: var(--ink); overflow-wrap: anywhere; }
body.shell-v2 .ev-display-line { display: block; }
body.shell-v2 .ev-display-em { background: linear-gradient(90deg, var(--g-magenta), var(--g-orange)); -webkit-background-clip: text; background-clip: text; color: transparent; }
body.shell-v2 .ev-lead { margin: 0 0 28px; max-width: 32em; font-size: 18px; line-height: 1.55; letter-spacing: -0.2px; color: var(--ink-80); white-space: pre-line; }

/* 세 갈래 — 같은 크기 · 같은 무게(흰 주 버튼 없음). 오너 피드백 10-07 */
body.shell-v2 .ev-choices { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
body.shell-v2 .ev-choice { position: relative; display: grid; gap: 4px; align-content: start; min-height: 84px; padding: 16px; border: 0; border-radius: var(--r-lg);
  background: var(--surface-1); box-shadow: inset 0 0 0 1px var(--hairline); color: var(--ink); font: inherit; text-align: left; cursor: pointer; transition: background .15s ease, box-shadow .15s ease, transform .15s ease; }
body.shell-v2 .ev-choice:hover { background: var(--surface-2); box-shadow: inset 0 0 0 1px var(--divider-soft); }
body.shell-v2 .ev-choice:active { transform: scale(.98); }
body.shell-v2 .ev-choice:focus-visible, body.shell-v2 .ev-opt:focus-visible, body.shell-v2 .ev-tab:focus-visible, body.shell-v2 .ev-text-btn:focus-visible { outline: none; box-shadow: var(--ring-focus); }
body.shell-v2 .ev-choice-t { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-family: var(--font-heading); font-size: 17px; font-weight: 700; letter-spacing: -0.02em; }
body.shell-v2 .ev-choice-s { font-size: var(--fs-fine); line-height: 1.4; color: var(--ink-48); }
body.shell-v2 .ev-choice-go { flex: none; color: var(--ink-48); font-size: 16px; font-weight: 400; }

/* 시그니처 — 세로 9:16 프레임 셋(나 · 팀원 · 빈 자리) — 안은 포스터(eventPoster.js · 아래 '포스터 · 크레딧') */
body.shell-v2 .ev-seats { position: relative; height: 460px; }
body.shell-v2 .ev-frame { position: absolute; width: min(190px, 30%); aspect-ratio: 9 / 16; border-radius: 22px; overflow: hidden;
  box-shadow: 0 30px 60px rgba(0,0,0,.5), inset 0 0 0 1px rgba(255,255,255,.08); color: #fff; }
body.shell-v2 .ev-frame > .ev-poster { position: absolute; inset: 0; border-radius: inherit; }
body.shell-v2 .ev-frame--me { left: 3%; top: 40px; transform: rotate(-6deg); }
body.shell-v2 .ev-frame--mate { left: 35%; top: 0; z-index: 2; }
body.shell-v2 .ev-frame--empty { left: 67%; top: 56px; transform: rotate(6deg); }
body.shell-v2 .ev-seats--solo .ev-frame--me { left: 30%; transform: rotate(-3deg); }
@media (prefers-reduced-motion: no-preference) {
  body.shell-v2 .ev-frame { animation: ev-rise .7s cubic-bezier(.2,.8,.2,1) backwards; }
  body.shell-v2 .ev-frame--mate { animation-delay: .08s; } body.shell-v2 .ev-frame--empty { animation-delay: .16s; }
  @keyframes ev-rise { from { opacity: 0; translate: 0 24px; } }
}

/* 크리에이티브 에셋 자리(eventAssets.js — 파일이 오기 전엔 노드가 없다) — 히어로 뒤 루프 + 글자 대비용 어두운 덮개 · 프레임 배경 · 빈 보드 그림 */
/* 사방 가장자리를 투명으로 녹인다(가로 · 세로 마스크의 교집합) — 각진 상자나 가로 이음매 없이 페이지 배경 위에 번지게 */
body.shell-v2 .ev-hero-bg { position: absolute; inset: -24px calc(-1 * var(--page-gutter)) -24px; z-index: -1; overflow: hidden; pointer-events: none;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 12%, #000 88%, transparent 100%), linear-gradient(180deg, transparent 0%, #000 14%, #000 72%, transparent 100%);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(90deg, transparent 0%, #000 12%, #000 88%, transparent 100%), linear-gradient(180deg, transparent 0%, #000 14%, #000 72%, transparent 100%);
  mask-composite: intersect; }
body.shell-v2 .ev-hero-media { width: 100%; height: 100%; object-fit: cover; opacity: .55; }
body.shell-v2 .ev-hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(9,9,9,.95) 0%, rgba(9,9,9,.85) 38%, rgba(9,9,9,.45) 70%, rgba(9,9,9,.3) 100%), linear-gradient(180deg, rgba(9,9,9,.4) 0%, transparent 25%, transparent 60%, var(--canvas) 100%); }
/* 프레임 장면도 사람 사진과 같은 듀오톤(흑백 + 타일 색 덮개 .ev-poster-tint) — CASTING 은 덮개가 없어 흑백만 */
body.shell-v2 .ev-poster-media { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.12) brightness(1.05); }
body.shell-v2 .ev-poster--casting .ev-poster-media { filter: grayscale(1) brightness(.8); }
/* 히어로 '나' · '팀원' 정지 그림은 느리게 당겨 움직임을 준다(10-08 — 루프 영상 대신). 움직임 줄이기면 그대로 */
@media (prefers-reduced-motion: no-preference) {
  body.shell-v2 :is(.ev-frame--me, .ev-frame--mate) img.ev-poster-media { animation: ev-frame-push 14s ease-in-out infinite alternate; transform-origin: 50% 40%; }
  body.shell-v2 .ev-frame--mate img.ev-poster-media { animation-delay: -7s; }
}
@keyframes ev-frame-push { from { transform: scale(1); } to { transform: scale(1.08); } }
body.shell-v2 .ev-rules-art { display: block; width: 100%; height: auto; aspect-ratio: 3 / 1; margin-top: 28px; object-fit: cover; object-position: center 37%; border-radius: var(--r-xl); filter: grayscale(.25); }
body.shell-v2 .ev-poster--media .ev-poster-sil, body.shell-v2 .ev-poster--media .ev-poster-initial { display: none; }
body.shell-v2 .ev-empty-art { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 60%; }
body.shell-v2 .ev-empty.ev-empty--art { position: relative; overflow: hidden; isolation: isolate; min-height: 360px; align-content: end; padding: 40px 24px 36px; background: #000; }
body.shell-v2 .ev-empty--art::after { content: ''; position: absolute; inset: 0; z-index: 0; background: linear-gradient(to top, rgba(0,0,0,.82) 0%, rgba(0,0,0,.35) 45%, rgba(0,0,0,0) 75%); pointer-events: none; }
body.shell-v2 .ev-empty--art > :not(.ev-empty-art) { position: relative; z-index: 1; }
body.shell-v2 .ev-empty--art .ev-empty-t { color: #fff; font-size: 17px; font-weight: 600; text-shadow: 0 1px 12px rgba(0,0,0,.6); }

/* ── 일정 ── */
body.shell-v2 .ev-timeline { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--hairline); }
body.shell-v2 .ev-tl { position: relative; padding: 18px 16px 18px 0; min-width: 0; }
body.shell-v2 .ev-tl::before { content: ""; position: absolute; top: -4px; left: 0; width: 7px; height: 7px; border-radius: 50%; background: #3a3a3a; }
body.shell-v2 .ev-tl--past::before { background: var(--ink-48); }
body.shell-v2 .ev-tl--now::before { background: var(--positive); box-shadow: 0 0 0 4px rgba(34,197,94,.2); }
body.shell-v2 .ev-tl b { display: block; font-family: var(--font-heading); font-size: 15px; font-weight: 700; letter-spacing: var(--ls-body); color: var(--ink); }
body.shell-v2 .ev-tl span { display: block; margin-top: 4px; font-size: var(--fs-fine); color: var(--ink-48); overflow-wrap: anywhere; }
body.shell-v2 .ev-tl--now span { color: var(--positive); }

/* ── 내 참여 띠 ── */
body.shell-v2 .ev-mine { display: flex; align-items: center; gap: 16px; margin-top: 28px; padding: 16px 18px; border-radius: var(--r-lg); background: var(--surface-1); box-shadow: inset 0 0 0 1px var(--hairline); }
body.shell-v2 .ev-mine-grow { flex: 1; min-width: 0; }
body.shell-v2 .ev-mine-t { font-weight: 600; color: var(--ink); overflow-wrap: anywhere; }
body.shell-v2 .ev-mine-s { margin-top: 2px; font-size: var(--fs-caption); color: var(--ink-48); }
body.shell-v2 .ev-mine-list { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 4px 0 0; padding: 0; list-style: none; font-size: var(--fs-caption); color: var(--ink-48); }
body.shell-v2 .ev-mine .btn { flex: none; }
body.shell-v2 .ev-mine { flex-wrap: wrap; }
body.shell-v2 .ev-mine-ws { flex: 1 0 100%; display: flex; align-items: center; gap: 12px; padding-top: 12px; border-top: 1px solid var(--hairline); }
body.shell-v2 .ev-mine-note { flex: 1; min-width: 0; margin: 0; font-size: var(--fs-caption); color: var(--ink-48); }

/* ── 붙는 탭 — 데스크톱은 화면 맨 위(상단바가 없다 — 내비는 왼쪽 레일), 모바일(≤810 · chrome-shell.css ②)은 56px 상단바 아래.
 *   게이트 화면은 상단바가 없어 어느 폭이든 맨 위 ── */
body.shell-v2 .ev-tabs-anchor { height: 0; scroll-margin-top: 0; }
body.shell-v2 .ev-tabs { position: sticky; top: 0; z-index: 5; display: flex; gap: 4px; margin-top: var(--sp-xxl); padding: 10px 0; background: transparent; border-bottom: 1px solid var(--hairline-soft); overflow-x: auto; transition: background-color .15s ease, border-color .15s ease; }
/* 헤어라인은 늘(시안) · 배경 · 블러는 붙었을 때만(eventView watchStuck) — 제자리에선 시안처럼 페이지 위에 그대로 놓인다 */
body.shell-v2 .ev-tabs--stuck { background: rgba(9,9,9,.82); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); }
body.shell-v2 .ev-tab { display: inline-flex; align-items: center; gap: 8px; min-height: 36px; padding: 0 14px; border: 0; border-radius: var(--r-pill); background: none; color: var(--ink-48); font: inherit; font-size: var(--fs-body); font-weight: 600; cursor: pointer; white-space: nowrap; }
body.shell-v2 .ev-tab:hover { color: var(--ink-80); }
body.shell-v2 .ev-tab[aria-selected="true"] { background: rgba(255,255,255,.08); color: var(--ink); }
body.shell-v2 .ev-tab-badge { display: inline-grid; place-items: center; min-width: 18px; height: 18px; padding: 0 5px; border-radius: var(--r-pill); background: var(--g-coral); color: #fff; font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums; }
body.shell-v2 .ev-notice { margin: var(--sp-lg) 0 0; padding: 12px 16px; border-radius: var(--r-md); background: var(--surface-1); color: var(--ink-80); font-size: var(--fs-caption); }

/* ── 보드 ── */
body.shell-v2 .ev-boardhead { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px; padding: 28px 0 16px; }
body.shell-v2 .ev-board-h { margin: 0; font-family: var(--font-heading); font-size: 32px; font-weight: 800; letter-spacing: -0.035em; color: var(--ink); }
body.shell-v2 .ev-board-n { margin-left: 8px; font-size: 32px; font-weight: 600; color: var(--ink-48); font-variant-numeric: tabular-nums; }
body.shell-v2 .ev-board-solo { padding-bottom: 6px; font-size: 14px; color: var(--ink-48); font-variant-numeric: tabular-nums; }
body.shell-v2 .ev-board-solo:empty { display: none; }
body.shell-v2 .ev-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-left: auto; }
body.shell-v2 .ev-chips .btn--chip.is-on, body.shell-v2 .ev-role-chips .btn--chip.is-on { background: #fff; color: #000; }
/* 선택된 칩 위에 마우스가 올라가도 선택 모양 그대로(살짝 밝게만) — 전역 .btn--chip.is-on:hover 의 파란 채움이 '안 눌린' 것처럼 보였다 */
body.shell-v2 :is(.ev-chips, .ev-role-chips) .btn--chip.is-on:hover:not(:disabled) { background: #ededed; border-color: transparent; color: #000; }
body.shell-v2 .ev-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--grid-gap); }
body.shell-v2 .ev-tcard { position: relative; display: flex; flex-direction: column; gap: 14px; min-height: 260px; min-width: 0; padding: 20px; border-radius: var(--r-xl); background: var(--surface-1); box-shadow: inset 0 0 0 1px var(--hairline); transition: box-shadow .15s ease, transform .15s ease; }
body.shell-v2 .ev-tcard:hover { box-shadow: inset 0 0 0 1px #3a3a3a; }
@media (prefers-reduced-motion: no-preference) { body.shell-v2 .ev-tcard:not(.ev-tcard--skel):hover { transform: translateY(-2px); } }
body.shell-v2 .ev-tcard--closed { opacity: .55; }
body.shell-v2 .ev-tcard--mine { box-shadow: inset 0 0 0 1px rgba(212,77,240,.45); }
body.shell-v2 .ev-tcard--skel { gap: 12px; }
body.shell-v2 .ev-tcard-name { margin: 0; font-family: var(--font-heading); font-size: 21px; font-weight: 750; line-height: 1.2; letter-spacing: -0.03em; color: var(--ink); overflow-wrap: anywhere; }
body.shell-v2 .ev-tcard-leader { margin-top: 2px; font-size: var(--fs-fine); color: var(--ink-48); }
body.shell-v2 .ev-tcard-intro { margin: 0; font-size: var(--fs-caption); line-height: 1.5; color: var(--ink-80); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
body.shell-v2 .ev-tags { display: flex; flex-wrap: wrap; gap: 6px; }
body.shell-v2 .ev-tag { padding: 4px 9px; border-radius: var(--r-pill); background: rgba(255,255,255,.06); color: var(--ink-80); font-size: 12px; }
body.shell-v2 .ev-tag--want { background: rgba(212,77,240,.14); color: #eaa5f7; }
body.shell-v2 .ev-tcard-foot { display: flex; align-items: center; gap: 10px; margin-top: auto; }
body.shell-v2 .ev-tcard-left { font-size: var(--fs-fine); color: var(--ink-48); white-space: nowrap; margin-left: 4px; }
body.shell-v2 .ev-tcard-foot .btn, body.shell-v2 .ev-tcard-status { margin-left: auto; }
body.shell-v2 .ev-tcard-status { font-size: var(--fs-fine); color: var(--ink-48); text-align: right; }
body.shell-v2 .ev-tcard-status--pending { color: #f5c26b; }
body.shell-v2 .ev-empty { grid-column: 1 / -1; display: grid; justify-items: center; gap: 14px; padding: 56px 16px; border-radius: var(--r-xl); background: var(--surface-1); text-align: center; }
body.shell-v2 .ev-empty-t { margin: 0; color: var(--ink-80); }
body.shell-v2 .ev-grid > .state-error { grid-column: 1 / -1; }

/* ── 자리 아바타 ── */
body.shell-v2 .ev-slots { display: flex; flex: none; }
body.shell-v2 .ev-av { display: grid; place-items: center; width: 30px; height: 30px; margin-right: -6px; border-radius: 50%; box-shadow: 0 0 0 2px var(--surface-1); color: #fff; font-size: 12px; font-weight: 700; flex: none; }
body.shell-v2 .ev-av--a { background: var(--g-magenta); } body.shell-v2 .ev-av--b { background: var(--g-violet); } body.shell-v2 .ev-av--c { background: var(--g-orange); }
body.shell-v2 .ev-av--d { background: #2f7d6b; } body.shell-v2 .ev-av--e { background: #3c5bd6; }
body.shell-v2 .ev-av-wrap { position: relative; display: flex; flex: none; }
body.shell-v2 .ev-av-wrap:hover { z-index: 3; }
body.shell-v2 .ev-av-wrap[data-name]::after { content: attr(data-name); position: absolute; left: 15px; bottom: calc(100% + 6px); z-index: 3; max-width: 140px; padding: 4px 8px; border-radius: 6px; background: #f5f5f5; color: #111; font-size: 12px; font-weight: 600; line-height: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; opacity: 0; transform: translate(-50%, 2px); transition: opacity .12s ease, transform .12s ease; }
body.shell-v2 .ev-av-wrap[data-name]:hover::after { opacity: 1; transform: translate(-50%, 0); }
/* 첫 칩은 왼쪽에 붙인다 — 지원 창(overflow:auto)에서 긴 이름이 왼쪽으로 잘렸다(검증 10-08). 15px = 칩(30px) 중심 · 감싸개는 -6px 겹침이라 24px */
body.shell-v2 .ev-av-wrap[data-name]:first-child::after { left: 0; transform: translate(0, 2px); }
body.shell-v2 .ev-av-wrap[data-name]:first-child:hover::after { transform: translate(0, 0); }
@media (prefers-reduced-motion: reduce) { body.shell-v2 .ev-av-wrap[data-name]::after { transition: none; } }
body.shell-v2 .ev-av--empty { background: transparent; box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.28), 0 0 0 2px var(--surface-1); color: rgba(255,255,255,.45); font-weight: 400; }
body.shell-v2 :is(.ev-app, .ev-mini) .ev-av { box-shadow: 0 0 0 2px var(--surface-2); }
body.shell-v2 :is(.ev-app, .ev-mini) .ev-av--empty { box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.28), 0 0 0 2px var(--surface-2); }

/* ── 내 팀 · 규칙 ── */
body.shell-v2 .ev-myteam { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 16px; padding-top: 28px; align-items: start; }
body.shell-v2 .ev-myteam--one { grid-template-columns: minmax(0, 1fr); }
body.shell-v2 .ev-box { min-width: 0; padding: 24px; border-radius: var(--r-xl); background: var(--surface-1); box-shadow: inset 0 0 0 1px var(--hairline); }
body.shell-v2 .ev-box--center { text-align: center; padding: 48px 24px; }
body.shell-v2 .ev-box-h { display: flex; align-items: center; gap: 8px; margin: 0 0 14px; font-family: var(--font-heading); font-size: 15px; font-weight: 700; letter-spacing: var(--ls-body); color: var(--ink-48); }
body.shell-v2 .ev-box-n { color: var(--ink); }
body.shell-v2 .ev-eyebrow-sm { font-family: var(--font-heading); font-size: 12px; font-weight: 700; letter-spacing: var(--ls-footnote); text-transform: uppercase; color: var(--ink-48); }
body.shell-v2 .ev-teamtitle { margin: 4px 0 8px; font-family: var(--font-heading); font-size: var(--fs-display-md); font-weight: 800; letter-spacing: -0.04em; color: var(--ink); overflow-wrap: anywhere; }
body.shell-v2 .ev-box--center .ev-teamtitle { font-size: var(--fs-title-1); }
body.shell-v2 .ev-teamintro, body.shell-v2 .ev-body { margin: 0 0 4px; line-height: 1.55; color: var(--ink-80); overflow-wrap: anywhere; }
body.shell-v2 .ev-box--center .ev-body { color: var(--ink-48); margin-bottom: 20px; }
body.shell-v2 .ev-side-t { margin: 0 0 6px; font-family: var(--font-heading); font-size: 20px; font-weight: 700; color: var(--ink); }
body.shell-v2 .ev-muted { margin: 0; padding: 6px 0 0; font-size: var(--fs-caption); line-height: 1.5; color: var(--ink-48); }
body.shell-v2 .ev-members { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 20px 0; }
body.shell-v2 .ev-members--c1 { grid-template-columns: minmax(0, 160px); } body.shell-v2 .ev-members--c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } body.shell-v2 .ev-members--c4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
body.shell-v2 .ev-mem { aspect-ratio: 9 / 13; min-width: 0; border-radius: 16px; }

/* ── 포스터 · 크레딧(10-07 오너 결정 · eventPoster.js) — 세로 숏드라마 포스터. 사진은 흑백 + 타일 색 덮개(mix-blend color)로 듀오톤,
 *   원본 색은 드러나지 않는다. 사진이 없으면 이니셜을 제목처럼 크게. 새 애니메이션 없음. ── */
body.shell-v2 .ev-poster { --tone: var(--g-magenta); --tone-deep: #3b1250; position: relative; overflow: hidden; container-type: size; display: flex; flex-direction: column; justify-content: space-between;
  padding: 14px; color: #fff; isolation: isolate; background: radial-gradient(120% 90% at 30% 0%, color-mix(in srgb, var(--tone) 70%, #fff), var(--tone) 42%, var(--tone-deep)); }
body.shell-v2 .ev-poster--a { --tone: var(--g-magenta); --tone-deep: #3b1250; }
body.shell-v2 .ev-poster--b { --tone: var(--g-violet); --tone-deep: #18113f; }
body.shell-v2 .ev-poster--c { --tone: var(--g-orange); --tone-deep: #4a1d08; }
body.shell-v2 .ev-poster--d { --tone: #2f7d6b; --tone-deep: #0f2b24; }
body.shell-v2 .ev-poster--e { --tone: #3c5bd6; --tone-deep: #121c45; }
body.shell-v2 .ev-poster.is-photo-loaded { color: #fff; }
/* 10-15 오너: 팀 프로필 사진은 컬러 틴트(흑백 + 타일 색 덮개) 없이 원본 색 그대로. 실루엣 포스터만 덮개 유지. */
body.shell-v2 .ev-poster > .avatar-photo { z-index: 0; border-radius: 0; }
body.shell-v2 .ev-poster-tint { position: absolute; inset: 0; z-index: 1; background: var(--tone); mix-blend-mode: color; pointer-events: none; }
body.shell-v2 .ev-poster:not(.ev-poster--sil) .ev-poster-tint { display: none; }
body.shell-v2 .ev-poster::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, rgba(0,0,0,.28) 0%, transparent 24%, transparent 40%, rgba(0,0,0,.55) 62%, rgba(0,0,0,.85) 100%); }
body.shell-v2 .ev-poster-initial { position: absolute; inset: 0; z-index: 0; display: grid; place-items: center; padding-bottom: 18%;
  font-family: var(--font-heading); font-weight: 800; font-size: 40cqh; line-height: 1; color: rgba(255,255,255,.28); }
body.shell-v2 .ev-poster.is-photo-loaded .ev-poster-initial { display: none; }
body.shell-v2 .ev-poster-top { position: relative; z-index: 2; font-family: var(--font-heading); font-size: 10px; font-weight: 700; letter-spacing: .26em; text-transform: uppercase; opacity: .82; }
body.shell-v2 .ev-poster-bottom { position: relative; z-index: 2; display: grid; gap: 3px; min-width: 0; }
body.shell-v2 .ev-poster-namerow { display: flex; align-items: center; gap: 7px; min-width: 0; }
body.shell-v2 .ev-poster-name { min-width: 0; font-family: var(--font-heading); font-size: 18px; font-weight: 800; letter-spacing: -0.03em; line-height: 1.15; overflow-wrap: anywhere; }
body.shell-v2 .ev-poster-role { font-size: 12px; line-height: 1.3; opacity: .86; }
body.shell-v2 .ev-poster-credit { margin-top: 5px; font-size: 9px; font-weight: 600; text-transform: uppercase; letter-spacing: .18em; line-height: 1.35; opacity: .55; overflow-wrap: anywhere; } /* 말줄임 없이 두 줄까지 */
/* 실루엣 · CASTING — 사람이 아직 없는 자리 */
body.shell-v2 .ev-poster-sil { position: absolute; left: 50%; top: 42%; z-index: 0; width: 64%; translate: -50% -50%; fill: rgba(255,255,255,.2); }
body.shell-v2 .ev-poster--casting { background: #101010 repeating-linear-gradient(135deg, rgba(255,255,255,.04) 0 10px, transparent 10px 20px); box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.2); }
body.shell-v2 .ev-poster--casting .ev-poster-sil { fill: rgba(255,255,255,.13); }
body.shell-v2 .ev-poster--casting::after { background: linear-gradient(180deg, transparent 50%, rgba(0,0,0,.55) 100%); }
body.shell-v2 .ev-poster--casting .ev-poster-name { color: var(--ink-80); }
/* [내보내기]는 이름 · 역할 아래 줄 — 위 모서리에 띄우면 좁은 타일에서 카드 머리와 겹친다(390 재검증) */
body.shell-v2 .ev-mem .ev-mem-kick { justify-self: start; margin-top: 6px; background: rgba(0,0,0,.35); color: #fff; }
body.shell-v2 .ev-mem .ev-mem-foot { display: block; height: 28px; margin-top: 6px; }
/* 마우스로 누른 뒤에는 대화상자 안 버튼에 링을 띄우지 않는다(키보드일 때만) */
body.shell-v2 dialog.ev-dialog[data-modality="pointer"] :is(.btn, button):focus-visible { box-shadow: none; }
body.shell-v2 .ev-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
body.shell-v2 .ev-box > .ev-row { margin-top: 16px; }
body.shell-v2 .ev-row--end { justify-content: flex-end; } body.shell-v2 .ev-row--center { justify-content: center; }
body.shell-v2 .ev-text-btn { margin-left: auto; padding: 8px; border: 0; border-radius: var(--r-sm); background: none; font: inherit; font-size: var(--fs-caption); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
body.shell-v2 .ev-danger { color: #ff8aa0; }
body.shell-v2 .ev-box--center .ev-to-choices { margin: 0 auto; color: var(--ink-80); }
body.shell-v2 .ev-guide { display: flex; align-items: center; gap: 12px; margin-top: 18px; padding: 14px 16px; border-radius: var(--r-md); background: rgba(0,153,255,.08); color: #9fd3ff; font-size: var(--fs-caption); line-height: 1.5; }
body.shell-v2 .ev-guide p { flex: 1; margin: 0; }
body.shell-v2 .ev-guide .btn { flex: none; }
body.shell-v2 .ev-apps { display: flex; flex-direction: column; gap: 10px; }
body.shell-v2 .ev-app { padding: 14px; border-radius: var(--r-lg); background: var(--surface-2); min-width: 0; }
body.shell-v2 .ev-app--rejected, body.shell-v2 .ev-app--withdrawn, body.shell-v2 .ev-app--cancelled { opacity: .6; }
body.shell-v2 .ev-app-h { display: flex; align-items: center; gap: 10px; min-width: 0; }
body.shell-v2 .ev-app-h b { font-weight: 650; color: var(--ink); overflow-wrap: anywhere; }
body.shell-v2 .ev-app-h small { margin-left: auto; font-size: 12px; color: var(--ink-48); white-space: nowrap; }
body.shell-v2 .ev-app-st--pending { color: #f5c26b; } body.shell-v2 .ev-app-st--accepted { color: var(--positive); }
body.shell-v2 .ev-app-msg { margin: 10px 0 12px; font-size: var(--fs-caption); line-height: 1.5; color: var(--ink-80); white-space: pre-line; overflow-wrap: anywhere; }
body.shell-v2 .ev-rules-art + .ev-rsched { padding-top: 20px; }
body.shell-v2 .ev-rsched, body.shell-v2 .ev-rprize { padding-top: 28px; }
body.shell-v2 .ev-rsec-h { margin: 0 0 12px; font-family: var(--font-heading); font-size: 15px; font-weight: 700; color: var(--ink-80); }
body.shell-v2 .ev-rsteps { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--hairline); }
body.shell-v2 .ev-rstep { position: relative; min-width: 0; padding: 18px 16px 4px 0; }
body.shell-v2 .ev-rstep::before { content: ""; position: absolute; top: -4px; left: 0; width: 7px; height: 7px; border-radius: 50%; background: #3a3a3a; }
body.shell-v2 .ev-rstep b { display: block; font-family: var(--font-heading); font-size: 20px; font-weight: 700; letter-spacing: -0.01em; color: var(--ink); font-variant-numeric: tabular-nums; white-space: nowrap; }
body.shell-v2 .ev-rstep span { display: block; margin-top: 6px; font-size: var(--fs-fine); color: var(--ink-48); overflow-wrap: anywhere; }
body.shell-v2 .ev-rstep--past b, body.shell-v2 .ev-rstep--past span { color: var(--ink-48); opacity: .7; }
body.shell-v2 .ev-rstep--now::before { background: var(--positive); box-shadow: 0 0 0 4px rgba(34,197,94,.2); }
body.shell-v2 .ev-rstep--now span { color: var(--positive); }
body.shell-v2 .ev-prizes { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; }
body.shell-v2 .ev-prize { display: grid; gap: 6px; align-content: start; padding: 20px; border-radius: var(--r-xl); background: var(--surface-1); border: 1px solid var(--hairline); min-width: 0; }
body.shell-v2 .ev-prize--top { background: linear-gradient(160deg, rgba(168, 85, 247, .22), rgba(236, 72, 153, .10) 60%, var(--surface-1)); border-color: rgba(192, 132, 252, .35); }
body.shell-v2 .ev-prize-name { font-size: var(--fs-fine); font-weight: 600; color: var(--ink-80); }
body.shell-v2 .ev-prize-amt { font-family: var(--font-heading); font-size: 20px; font-weight: 700; letter-spacing: -0.01em; color: var(--ink); font-variant-numeric: tabular-nums; }
body.shell-v2 .ev-prize--gift .ev-prize-amt { color: var(--ink-80); }
body.shell-v2 .ev-prize-by { font-size: var(--fs-fine); color: var(--ink-48); }
body.shell-v2 .ev-rules { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; padding-top: 28px; }
/* 칸 수가 홀수면 마지막 칸이 두 열을 차지한다 — 오른쪽 빈자리 없이 */
body.shell-v2 .ev-rules > .ev-rule:last-child:nth-child(odd) { grid-column: 1 / -1; }
body.shell-v2 .ev-rule-list { display: grid; gap: 6px; margin: 0 0 16px; padding: 0; list-style: none; line-height: 1.6; color: var(--ink-80); }
body.shell-v2 .ev-rule .ev-rule-list { margin: 0; }
body.shell-v2 .ev-rule-list li { overflow-wrap: anywhere; }

/* ── 모달(cm-dialog 위) ── */
/* 위 기준 정렬 — 가운데 정렬이면 안쪽 줄(역할 직접 입력)이 접히고 펴질 때 대화상자 전체가 다시 가운데로 움직여 누르던 칩이 빗나간다(독립 검증 D1) */
body.shell-v2 dialog.ev-dialog { width: min(520px, calc(100% - 32px)); margin: min(12vh, 96px) auto auto; max-height: calc(100dvh - min(12vh, 96px) - 16px); padding: 26px; gap: 0; border: 0; border-radius: 22px; background: #121212; box-shadow: inset 0 0 0 1px #2a2a2a, 0 40px 80px rgba(0,0,0,.6); word-break: keep-all; overflow-wrap: anywhere; }
body.shell-v2 .ev-dialog-h { margin: 0 0 6px; font-family: var(--font-heading); font-size: 24px; font-weight: 800; letter-spacing: -0.03em; color: var(--ink); }
body.shell-v2 .ev-dialog-sub { margin: 0 0 8px; font-size: var(--fs-caption); line-height: 1.5; color: var(--ink-48); }
body.shell-v2 .ev-dialog-foot { display: flex; justify-content: flex-end; gap: 8px; margin-top: 22px; }
body.shell-v2 .ev-form { display: grid; gap: 0; margin-top: 8px; }
body.shell-v2 .ev-label { display: block; margin: 16px 0 8px; font-size: var(--fs-fine); font-weight: 600; color: var(--ink-80); }
body.shell-v2 .ev-input { width: 100%; box-sizing: border-box; }
body.shell-v2 textarea.ev-input { min-height: 104px; resize: vertical; line-height: 1.5; }
body.shell-v2 .ev-count { margin-top: 6px; text-align: right; font-size: 12px; color: var(--ink-48); font-variant-numeric: tabular-nums; }
body.shell-v2 .ev-note { margin: 14px 0 0; font-size: var(--fs-caption); line-height: 1.5; color: var(--ink-48); }
body.shell-v2 .ev-note--solo { margin-top: 8px; color: var(--ink-80); }
body.shell-v2 .ev-form-error { margin: 12px 0 0; min-height: 0; font-size: var(--fs-caption); color: var(--danger); }
body.shell-v2 .ev-form-error:empty { display: none; }
body.shell-v2 .ev-mini { display: flex; align-items: center; gap: 14px; padding: 12px 14px; border-radius: var(--r-lg); background: var(--surface-2); min-width: 0; }
body.shell-v2 .ev-mini-t { min-width: 0; }
body.shell-v2 .ev-mini-t b { display: block; font-family: var(--font-heading); font-size: 16px; letter-spacing: -0.02em; color: var(--ink); overflow-wrap: anywhere; }
body.shell-v2 .ev-mini-t span { display: block; font-size: var(--fs-fine); color: var(--ink-48); }
body.shell-v2 .ev-opts { display: grid; gap: 10px; margin-top: 12px; }
body.shell-v2 .ev-opt { display: grid; gap: 2px; padding: 16px 18px; border: 0; border-radius: var(--r-lg); background: var(--surface-2); color: var(--ink); font: inherit; text-align: left; cursor: pointer; }
body.shell-v2 .ev-opt:hover { background: var(--surface-3); }
body.shell-v2 .ev-opt b { font-family: var(--font-heading); font-size: 17px; letter-spacing: -0.02em; }
body.shell-v2 .ev-opt span { font-size: var(--fs-fine); color: var(--ink-48); }
body.shell-v2 .ev-role-row { display: flex; gap: 8px; align-items: center; margin-top: 10px; }
body.shell-v2 .ev-role-row .ev-input { flex: 1; min-width: 0; height: 40px; box-sizing: border-box; }
body.shell-v2 .ev-role-row .ev-role-add-go { flex: none; height: 40px; min-height: 40px; }
/* 직접 넣은 태그 — 눌린 칩과 같은 흰 알약 하나 안에 글자 + × (× 는 24px 원 · 가운데 정렬) */
body.shell-v2 .ev-role-tag { display: inline-flex; align-items: center; gap: 2px; height: 28px; padding: 0 4px 0 12px; border-radius: var(--r-pill); background: #fff; color: #000; font-size: 13px; font-weight: 500; }
body.shell-v2 .ev-role-x { display: inline-grid; place-items: center; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: rgba(0,0,0,.6); font: inherit; font-size: 15px; line-height: 1; cursor: pointer; }
body.shell-v2 .ev-role-x:hover { background: rgba(0,0,0,.08); color: #000; }
body.shell-v2 .ev-role-x:focus-visible { outline: none; box-shadow: var(--ring-focus); }
body.shell-v2 .ev-role-hint { margin: 8px 0 0; font-size: var(--fs-fine); color: var(--ink-48); }
body.shell-v2 .ev-gate-actions { justify-content: center; margin-top: var(--sp-xl); }

/* ── 반응형 ── */
@media (max-width: 810px) {
  body.shell-v2 .ev-page:not(.ev-page--gate) .ev-tabs { top: var(--top-h); }
  body.shell-v2 .ev-page:not(.ev-page--gate) .ev-tabs-anchor { scroll-margin-top: var(--top-h); }
}
@media (max-width: 900px) {
  body.shell-v2 .ev-hero { grid-template-columns: minmax(0, 1fr); padding-top: 32px; }
  body.shell-v2 .ev-seats { height: 340px; }
  body.shell-v2 .ev-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.shell-v2 .ev-myteam, body.shell-v2 .ev-rules { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 600px) {
  body.shell-v2 .ev-rules-art { aspect-ratio: 2 / 1; }
  body.shell-v2 .ev-rsteps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.shell-v2 .ev-prizes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.shell-v2 .ev-empty.ev-empty--art { min-height: 280px; }
  body.shell-v2 .ev-page { padding-left: 16px; padding-right: 16px; }
  body.shell-v2 .ev-hero-bg { inset: -16px -16px -72px; } /* 기울인 프레임 아래까지 덮는다(이음매가 포스터를 가로지르지 않게) */
  body.shell-v2 .ev-lead { font-size: 16px; }
  body.shell-v2 .ev-choices { grid-template-columns: minmax(0, 1fr); }
  body.shell-v2 .ev-choice { min-height: 0; }
  body.shell-v2 .ev-seats { height: 260px; }
  body.shell-v2 .ev-frame { border-radius: 16px; }
  /* 작은 포스터 — 크레딧 블록은 빼고 이름 · 역할만(구성이 무너지지 않게) */
  body.shell-v2 .ev-poster { padding: 10px; }
  body.shell-v2 .ev-poster-credit { display: none; }
  body.shell-v2 .ev-poster-name { font-size: 15px; }
  body.shell-v2 .ev-poster-role { font-size: 11px; line-height: 1.25; }
  /* 좁은 화면의 내 팀 타일 — 더 세로로 세워 포스터 구성(위 STARRING · 아래 이름)이 겹치지 않게 */
  body.shell-v2 .ev-mem { aspect-ratio: 9 / 17; }
  body.shell-v2 .ev-mem .ev-poster-name { font-size: 13px; }
  body.shell-v2 .ev-mem .ev-poster-namerow { gap: 5px; }
  body.shell-v2 .ev-mem .ev-poster-top { font-size: 9px; letter-spacing: .18em; }
  body.shell-v2 .ev-timeline { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.shell-v2 .ev-mine { flex-wrap: wrap; }
  body.shell-v2 .ev-mine-grow { flex-basis: 100%; }
  body.shell-v2 .ev-mine .ev-slots + .ev-mine-grow { flex-basis: calc(100% - 90px); }
  body.shell-v2 .ev-mine > .btn { flex: 1 1 100%; justify-content: center; }
  body.shell-v2 .ev-mine-ws { flex-wrap: wrap; }
  body.shell-v2 .ev-mine-ws .btn { flex: 1 1 100%; justify-content: center; }
  body.shell-v2 .ev-board-h, body.shell-v2 .ev-board-n { font-size: 26px; }
  body.shell-v2 .ev-chips { margin-left: 0; }
  body.shell-v2 .ev-grid { grid-template-columns: minmax(0, 1fr); }
  body.shell-v2 .ev-tcard { min-height: 0; }
  body.shell-v2 .ev-tcard-foot { flex-wrap: wrap; }
  body.shell-v2 .ev-tcard-foot .btn, body.shell-v2 .ev-tcard-status { margin-left: 0; width: 100%; justify-content: center; text-align: left; }
  body.shell-v2 .ev-tcard-foot .btn { text-align: center; }
  body.shell-v2 .ev-box { padding: 20px; }
  body.shell-v2 .ev-teamtitle { font-size: var(--fs-title-1); }
  body.shell-v2 .ev-guide { flex-direction: column; align-items: flex-start; }
  body.shell-v2 dialog.ev-dialog { padding: 22px 18px; }
  body.shell-v2 .ev-dialog-foot .btn { flex: 1; justify-content: center; }
}
