/*
 * SNAP HUB — 촬영관리 / SNAPROOM 정적 UI 시안
 * - 기존 마이페이지 레이아웃과 fig-* 공통 컴포넌트를 우선 재사용합니다.
 * - 실제 DB/API 계약 확정 전까지 촬영 데이터는 JSP 정적 샘플이며, 이 파일은 화면 구조와 반응형만 담당합니다.
 */

/* 촬영관리 2차 내비게이션은 업무 기능만 전환하고 마이페이지 1차 탭과 책임을 분리합니다. */
.shoot-subnav {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-top: 18px;
	padding: 6px;
	border: 1px solid var(--line);
	border-radius: 999px;
	background: #fff;
}

.shoot-subnav a {
	display: inline-flex;
	min-width: 0;
	min-height: 38px;
	align-items: center;
	justify-content: center;
	padding: 0 18px;
	border-radius: 999px;
	color: var(--text-secondary);
	font-size: 13px;
	font-weight: 600;
	line-height: 20px;
	text-decoration: none;
	white-space: nowrap;
}

.shoot-subnav a.is-active {
	background: var(--primary);
	color: #fff;
}

.shooting-form-shell .shoot-subnav + .fig-form-panel {
	margin-top: 20px;
}

.shooting-hero {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 36px;
	background: linear-gradient(135deg,#fff 0%,#fff 62%,var(--primary-surface) 100%);
}

.shooting-hero__copy {
	min-width: 0;
}

.shooting-hero__copy h2 {
	margin-top: 12px;
	font-size: 26px;
	font-weight: 700;
	line-height: 36px;
	letter-spacing: -.4px;
}

.shooting-hero__copy p {
	max-width: 720px;
	margin-top: 7px;
	color: var(--text-secondary);
	font-size: 14px;
	line-height: 22px;
}

.shooting-kpi-grid {
	display: grid;
	grid-template-columns: repeat(5,minmax(0,1fr));
	gap: 12px;
	margin-top: 20px;
}

.shooting-kpi-grid article {
	display: grid;
	min-height: 126px;
	align-content: center;
	padding: 20px;
	border: 1px solid var(--line);
	border-radius: 12px;
	background: #fff;
}

.shooting-kpi-grid span {
	color: var(--text-secondary);
	font-size: 13px;
	font-weight: 600;
	line-height: 20px;
}

.shooting-kpi-grid strong {
	margin-top: 3px;
	color: var(--ink);
	font: 700 30px/38px var(--font-inter);
}

.shooting-kpi-grid small {
	margin-top: 3px;
	color: var(--text-tertiary);
	font-size: 12px;
	line-height: 18px;
}

.shooting-status-filter {
	display: inline-flex;
	gap: 4px;
	padding: 4px;
	border-radius: 999px;
	background: #f6f6f6;
}

.shooting-status-filter button {
	min-width: 54px;
	height: 32px;
	padding: 0 12px;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: var(--text-secondary);
	font: 600 12px/18px var(--font-body);
}

.shooting-status-filter button.is-active {
	background: #fff;
	color: var(--primary);
	box-shadow: 0 2px 8px rgba(0,0,0,.06);
}

/* 목록/달력 전환과 상태 필터는 역할이 다르므로 별도 컨트롤로 유지합니다. */
.shooting-board-controls {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
	flex-wrap: wrap;
}

.shooting-display-switch {
	display: inline-flex;
	gap: 4px;
	padding: 4px;
	border: 1px solid var(--line);
	border-radius: 999px;
	background: #fff;
}

.shooting-display-switch button {
	display: inline-flex;
	height: 32px;
	align-items: center;
	gap: 6px;
	padding: 0 13px;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: var(--text-secondary);
	font: 600 12px/18px var(--font-body);
	white-space: nowrap;
}

.shooting-display-switch button.is-active {
	background: var(--ink);
	color: #fff;
}

.shooting-project-list {
	display: grid;
	gap: 12px;
}

.shooting-project-card {
	display: grid;
	grid-template-columns: 92px minmax(0,1fr) auto;
	align-items: center;
	gap: 22px;
	min-height: 122px;
	padding: 16px 18px;
	/* 달력 경계는 스냅허브의 연한 핑크 라인으로 분리해 폼 위에 뜬 레이어임을 명확히 합니다. */
	border: 1px solid var(--primary-border);
	border-radius: 14px;
	background: #fff;
	transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.shooting-project-card.is-today {
	position: relative;
	border-color: rgba(255,85,85,.42);
	border-left: 4px solid var(--primary);
	background: #fff;
	box-shadow: 0 5px 18px rgba(255,85,85,.06);
}

.shooting-project-card[hidden] {
	display: none;
}

.shooting-project-card__date {
	display: grid;
	align-content: center;
	justify-items: center;
	min-height: 88px;
	border-right: 1px solid var(--line);
	font-style: normal;
}

.shooting-project-card__date strong {
	font: 700 27px/32px var(--font-inter);
}

.shooting-project-card__date span {
	color: var(--ink);
	font: 700 12px/18px var(--font-body);
	letter-spacing: -.1px;
}

.shooting-project-card__date strong {
	margin-top: 1px;
}

.shooting-project-card__date em {
	margin-top: 5px;
	color: var(--primary);
	font: 700 11px/17px var(--font-body);
	font-style: normal;
	white-space: nowrap;
}

.shooting-project-card__body {
	min-width: 0;
}

.shooting-project-card__top {
	display: flex;
	align-items: center;
	gap: 9px;
}

.shooting-project-card__source {
	color: var(--text-tertiary);
	font-size: 11px;
	line-height: 17px;
}

.shooting-project-card__studio {
	min-width: 0;
	overflow: hidden;
	color: var(--text-tertiary);
	font-size: 11px;
	font-weight: 600;
	line-height: 17px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.shooting-project-card h3 {
	margin-top: 9px;
	font-size: 17px;
	font-weight: 700;
	line-height: 25px;
}

.shooting-project-card__body > p {
	margin-top: 3px;
	color: var(--text-secondary);
	font-size: 13px;
	line-height: 20px;
}

.shooting-project-card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 5px 16px;
	margin-top: 7px;
	color: var(--text-tertiary);
	font-size: 12px;
	line-height: 18px;
}

.shooting-project-card__meta span {
	display: inline-flex;
	align-items: center;
	gap: 5px;
}

.shooting-project-card__actions {
	display: flex;
	align-items: center;
	gap: 8px;
}

.shooting-calendar-view[hidden] { display: none; }

/* 촬영관리의 월 이동 도구는 목록/달력/OPEN DATE에서 동일한 간격과 터치영역을 사용합니다. */
.shooting-calendar-toolbar,
.open-date-toolbar {
	display: grid;
	grid-template-columns: 40px minmax(0,1fr) 40px;
	align-items: center;
	width: 100%;
	max-width: 360px;
	margin-inline: auto;
}

.shooting-calendar-toolbar { margin-bottom: 18px; }

.shooting-calendar-toolbar strong,
.open-date-toolbar strong {
	text-align: center;
	font-size: 18px;
	line-height: 26px;
	white-space: nowrap;
}

.shooting-calendar-toolbar button,
.open-date-toolbar button {
	display: grid;
	width: 40px;
	height: 40px;
	place-items: center;
	border: 1px solid var(--line);
	border-radius: 50%;
	background: #fff;
	color: var(--ink);
}

.shooting-calendar {
	width: 100%;
	margin: 0;
}

.shooting-calendar__week,
.shooting-calendar__days {
	display: grid;
	grid-template-columns: repeat(7,minmax(0,1fr));
}

.shooting-calendar__week {
	padding-bottom: 8px;
	color: var(--text-tertiary);
	font-size: 11px;
	font-weight: 600;
	text-align: center;
}

.shooting-calendar__days { gap: 6px; }

.shooting-calendar__days button {
	display: grid;
	min-height: 78px;
	align-content: space-between;
	justify-items: start;
	padding: 10px;
	border: 1px solid var(--line);
	border-radius: 10px;
	background: #fff;
	color: var(--ink);
	text-align: left;
}

.shooting-calendar__days button > span {
	font: 700 12px/18px var(--font-inter);
}

.shooting-calendar__days button small {
	max-width: 100%;
	overflow: hidden;
	color: var(--primary);
	font-size: 10px;
	font-weight: 700;
	line-height: 15px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.shooting-calendar__days button.is-muted {
	opacity: .34;
}

.shooting-calendar__days button.has-event {
	border-color: rgba(255,85,85,.28);
	background: var(--primary-surface);
}

.shooting-calendar__days button.is-selected {
	border-color: var(--primary);
	box-shadow: 0 0 0 2px rgba(255,85,85,.1);
}

.shooting-calendar__days button.is-filtered-out {
	border-color: var(--line);
	background: #fff;
}

.shooting-calendar__days button.is-filtered-out small {
	display: none;
}

.shooting-calendar-agenda {
	display: grid;
	gap: 0;
	width: 100%;
	margin: 18px 0 0;
	border: 1px solid var(--line);
	border-radius: 12px;
	overflow: hidden;
}

.shooting-calendar-agenda > strong {
	padding: 14px 16px;
	background: #fafafa;
	font-size: 13px;
	line-height: 20px;
}

.shooting-calendar-agenda > div {
	display: grid;
	grid-template-columns: 62px minmax(0,1fr) auto;
	align-items: center;
	gap: 12px;
	padding: 14px 16px;
	border-top: 1px solid var(--line);
}

.shooting-calendar-agenda > div > span {
	color: var(--primary);
	font: 700 12px/18px var(--font-inter);
}

.shooting-calendar-agenda p b,
.shooting-calendar-agenda p small { display: block; }
.shooting-calendar-agenda p b { font-size: 13px; line-height: 20px; }
.shooting-calendar-agenda p small { margin-top: 2px; color: var(--text-tertiary); font-size: 11px; line-height: 17px; }
.shooting-calendar-agenda a { color: var(--primary); font-size: 12px; font-weight: 700; text-decoration: none; }

/* 회원이 여러 Studio를 관리할 수 있으므로 촬영 기능의 기준 Studio를 화면 상단에서 명시합니다. */
.shooting-studio-context {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}

.shooting-studio-context__copy {
	display: flex;
	min-width: 0;
	align-items: center;
	gap: 12px;
}

.shooting-studio-context__icon {
	display: grid;
	width: 42px;
	height: 42px;
	flex: 0 0 auto;
	place-items: center;
	border-radius: 50%;
	background: var(--primary-surface);
	color: var(--primary);
}

.shooting-studio-context__copy strong {
	display: block;
	font-size: 14px;
	line-height: 21px;
}

.shooting-studio-context__copy p {
	margin-top: 2px;
	color: var(--text-secondary);
	font-size: 12px;
	line-height: 18px;
}

.shooting-studio-context__control {
	display: grid;
	width: min(100%, 430px);
	gap: 4px;
}

.shooting-studio-context__control small {
	color: var(--text-tertiary);
	font-size: 11px;
	line-height: 17px;
}

.shooting-studio-context__empty {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--text-secondary);
	font-size: 12px;
	line-height: 18px;
}

/* 등록 폼은 입력 주체가 달라져도 촬영 프로젝트 필드를 재사용할 수 있도록 일반 필드 구조로 둡니다. */
.shoot-form-grid {
	display: grid;
	grid-template-columns: repeat(2,minmax(0,1fr));
	gap: 18px 20px;
}

.shoot-form-grid__wide {
	grid-column: 1 / -1;
}

.shoot-form-stack {
	display: grid;
	gap: 18px;
}

.shoot-textarea {
	box-sizing: border-box;
	width: 100%;
	padding: 13px 16px;
	border: 1px solid #c5c6ca;
	border-radius: 10px;
	background: #fff;
	color: #222;
	font: 400 15px/23px var(--font-body);
	resize: vertical;
	outline: 0;
}

.shoot-textarea:focus {
	border-color: var(--primary);
}

.shoot-form-actions {
	display: flex;
	justify-content: flex-end;
	gap: 10px;
	padding: 20px 24px 0;
}

/* 촬영 등록은 Studio 등록 화면의 48px select 규칙과 동일한 입력 감각을 사용합니다. */
.page-mypage--shooting .shoot-register-select {
	box-sizing: border-box;
	width: 100%;
	height: 48px;
	min-width: 0;
	padding: 0 40px 0 16px;
	border: 1px solid #c5c6ca;
	border-radius: 10px;
	background-color: #fff;
	background-image: url("../svg/register/select-chevron.svg");
	background-position: calc(100% - 16px) center;
	background-size: 12px 8px;
	background-repeat: no-repeat;
	outline: 0;
	color: #222;
	font: 400 15px/24px var(--font-body);
	appearance: none;
	-webkit-appearance: none;
}

.page-mypage--shooting .shoot-register-select:focus,
.shoot-register-form .inputDatePicker:focus { border-color: var(--primary); }

.shoot-field-label-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
}

.shoot-field-action {
	color: var(--primary);
	font-size: 11px;
	font-weight: 700;
	line-height: 18px;
	text-decoration: none;
	white-space: nowrap;
}

.shoot-party-grid {
	display: grid;
	grid-template-columns: repeat(2,minmax(0,1fr));
	gap: 20px;
}

.shoot-location-block {
	display: grid;
	gap: 12px;
}

.shoot-location-summary {
	display: grid;
	grid-template-columns: 42px minmax(0,1fr);
	gap: 12px;
	align-items: center;
	padding: 15px 16px;
	border: 1px solid var(--line);
	border-radius: 12px;
	background: #fafafa;
}

.shoot-location-summary__icon {
	display: grid;
	width: 42px;
	height: 42px;
	place-items: center;
	border-radius: 50%;
	background: var(--primary-surface);
	color: var(--primary);
}

.shoot-location-summary strong { display: block; font-size: 14px; line-height: 21px; }
.shoot-location-summary p { margin-top: 2px; color: var(--text-secondary); font-size: 13px; line-height: 20px; }
.shoot-location-summary small { display: block; margin-top: 3px; color: var(--text-tertiary); font-size: 11px; line-height: 17px; }

.shoot-location-change { width: fit-content; }
.shoot-location-override { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; padding: 14px; border: 1px solid var(--primary-border); border-radius: 12px; background: var(--primary-surface); }
.shoot-location-override[hidden],
.shoot-location-activity-guide[hidden] { display: none; }
.shoot-location-activity-guide { padding: 14px 16px; border-radius: 12px; background: #f7f7f7; }
.shoot-location-activity-guide p { margin-top: 6px; color: var(--text-secondary); font-size: 12px; line-height: 19px; }

/* 촬영별 주차 안내는 Studio 기본값과 일정별 override를 한 화면에서 구분합니다. */
.shoot-parking-block { display: grid; gap: 12px; }
.shoot-parking-summary {
	display: grid;
	grid-template-columns: 42px minmax(0,1fr);
	gap: 12px;
	align-items: center;
	padding: 15px 16px;
	border: 1px solid var(--line);
	border-radius: 12px;
	background: #fafafa;
}
.shoot-parking-summary__icon {
	display: grid;
	width: 42px;
	height: 42px;
	place-items: center;
	border-radius: 50%;
	background: var(--primary-surface);
	color: var(--primary);
}
.shoot-parking-summary strong { display: block; font-size: 14px; line-height: 21px; }
.shoot-parking-summary p { margin-top: 2px; color: var(--text-secondary); font-size: 13px; line-height: 20px; }
.shoot-parking-summary small { display: block; margin-top: 3px; color: var(--text-tertiary); font-size: 11px; line-height: 17px; }
.shoot-parking-change { width: fit-content; }
.shoot-parking-override { display: grid; grid-template-columns: minmax(180px,.4fr) minmax(0,1fr); gap: 12px; padding: 14px; border: 1px solid var(--primary-border); border-radius: 12px; background: var(--primary-surface); }
.shoot-parking-override[hidden] { display: none; }

.shoot-prep-field {
	display: grid;
	grid-template-columns: minmax(240px,320px) minmax(0,1fr);
	gap: 10px;
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.shoot-prep-field legend {
	grid-column: 1 / -1;
	font-size: 13px;
	font-weight: 600;
	line-height: 20px;
}

.shoot-prep-field legend em {
	margin-left: 5px;
	color: var(--text-tertiary);
	font-size: 11px;
	font-style: normal;
	font-weight: 400;
}

.shoot-prep-list {
	display: flex;
	min-width: 0;
	align-items: flex-start;
	gap: 8px;
	flex-wrap: wrap;
}

.shoot-prep-list > span {
	display: inline-flex;
	max-width: 100%;
	min-height: 48px;
	align-items: center;
	gap: 8px;
	padding: 0 12px;
	border: 1px solid var(--primary-border);
	border-radius: 10px;
	background: var(--primary-surface);
	color: var(--ink);
	font-size: 13px;
	line-height: 20px;
}

.shoot-prep-list > span > i { flex: 0 0 auto; color: var(--primary); }
.shoot-prep-list > span > span { min-width: 0; overflow-wrap: anywhere; }
.shoot-prep-list button { display: grid; flex: 0 0 auto; width: 24px; height: 24px; place-items: center; border: 0; background: transparent; color: var(--text-tertiary); }

/*
 * 촬영일 Flatpickr
 * - 날짜 그리드와 월 이동 계산은 vendor flatpickr.css가 전담합니다.
 * - SnapHub는 외곽, 월/연도 조작부, 날짜 상태만 시각적으로 보강해 라이브러리 구조와 책임을 분리합니다.
 * - 오늘/선택/이전·다음달 상태를 명확히 나눠 작은 모바일 화면에서도 날짜 판단이 빠르도록 합니다.
 */
.page-mypage--shooting .flatpickr-calendar {
	width: 326px;
	max-width: calc(100vw - 12px);
	box-sizing: border-box;
	border: 1px solid rgba(255,85,85,.28);
	border-radius: 16px;
	background: #fff;
	box-shadow: 0 18px 42px rgba(20,20,24,.12);
	font-family: var(--font-body);
	overflow: hidden;
}

/*
 * Flatpickr가 입력창의 바로 아래/위에 붙여 배치하면 캘린더의 최상단 border가 입력창 경계와 겹쳐 보일 수 있습니다.
 * popup 자체에 정상 간격을 부여해 실제 border와 rounded corner가 가려지지 않도록 하며, 별도 가상선으로 외곽을 덧그리지 않습니다.
 */
.page-mypage--shooting .flatpickr-calendar.arrowTop {
	margin-top: 6px;
}

.page-mypage--shooting .flatpickr-calendar.arrowBottom {
	margin-top: -6px;
}

/*
 * 월 선택 헤더는 상·하 8px 여백을 동일하게 확보합니다.
 * 달력 외곽은 실제 border가 담당하고 헤더 배경은 안쪽 곡률에 맞춰 잘라 상단 코너 라인이 선명하게 유지됩니다.
 */
.page-mypage--shooting .flatpickr-months {
	border-radius: 15px 15px 0 0;
	border-bottom: 1px solid rgba(255,85,85,.08);
	background: rgba(255,248,249,.96);
}

.page-mypage--shooting .flatpickr-months .flatpickr-month {
	height: 50px;
	padding: 8px 0;
}

.page-mypage--shooting .flatpickr-current-month {
	top: 8px;
	height: 34px;
	padding: 0;
}

/* 마지막 주와 외곽선이 붙어 보이지 않도록 날짜 그리드 아래에 breathing space만 추가합니다. */
.page-mypage--shooting .flatpickr-innerContainer {
	justify-content: center;
	padding-bottom: 12px;
}

/* 월/연도는 같은 높이의 독립 컨트롤로 유지하되 상단의 연한 브랜드 면 위에 떠 보이도록 정돈합니다. */
.page-mypage--shooting .flatpickr-current-month .flatpickr-monthDropdown-months {
	box-sizing: border-box;
	width: 76px;
	height: 34px;
	margin-right: 6px;
	padding: 0 8px;
	border: 1px solid rgba(255,85,85,.18);
	border-radius: 9px;
	background-color: #fff;
	color: var(--ink);
	font-family: var(--font-body);
	font-size: 14px;
	font-weight: 700;
	line-height: 32px;
	box-shadow: 0 1px 3px rgba(20,20,24,.04);
	cursor: pointer;
	transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}

.page-mypage--shooting .flatpickr-current-month .numInputWrapper {
	box-sizing: border-box;
	width: 78px;
	height: 34px;
	border: 1px solid rgba(255,85,85,.18);
	border-radius: 9px;
	background: #fff;
	box-shadow: 0 1px 3px rgba(20,20,24,.04);
	transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}

.page-mypage--shooting .flatpickr-current-month input.cur-year {
	box-sizing: border-box;
	height: 32px;
	padding: 0 22px 0 10px;
	border: 0;
	background: transparent;
	color: var(--ink);
	font-family: var(--font-inter);
	font-size: 14px;
	font-weight: 700;
	line-height: 32px;
	box-shadow: none;
}

.page-mypage--shooting .flatpickr-current-month .flatpickr-monthDropdown-months:hover,
.page-mypage--shooting .flatpickr-current-month .numInputWrapper:hover {
	border-color: rgba(255,85,85,.36);
	background: #fff;
}

.page-mypage--shooting .flatpickr-current-month .flatpickr-monthDropdown-months:focus,
.page-mypage--shooting .flatpickr-current-month .numInputWrapper:focus-within {
	border-color: var(--primary);
	outline: 0;
	box-shadow: 0 0 0 3px rgba(255,85,85,.10);
}

/*
 * 이전/다음 달 이동 아이콘은 촬영 등록 Select와 동일한 select-chevron.svg를 재사용합니다.
 * 별도 아이콘 자산을 만들지 않고 방향만 회전해 스냅허브 Form UI의 화살표 형태를 통일합니다.
 */
.page-mypage--shooting .flatpickr-prev-month,
.page-mypage--shooting .flatpickr-next-month {
	top: 8px;
	display: grid;
	width: 34px;
	height: 34px;
	padding: 0;
	place-items: center;
	border-radius: 50%;
	transition: background-color .16s ease;
}

.page-mypage--shooting .flatpickr-prev-month:hover,
.page-mypage--shooting .flatpickr-next-month:hover {
	background: rgba(255,85,85,.08);
}

.page-mypage--shooting .flatpickr-prev-month svg,
.page-mypage--shooting .flatpickr-next-month svg {
	display: none;
}

.page-mypage--shooting .flatpickr-prev-month::before,
.page-mypage--shooting .flatpickr-next-month::before {
	content: "";
	display: block;
	width: 12px;
	height: 8px;
	background: url("../svg/register/select-chevron.svg") center / 12px 8px no-repeat;
}

.page-mypage--shooting .flatpickr-prev-month::before {
	transform: rotate(90deg);
}

.page-mypage--shooting .flatpickr-next-month::before {
	transform: rotate(-90deg);
}

/* 요일은 본문 날짜보다 한 단계 약하게 두고 일요일만 브랜드 포인트로 빠르게 구분합니다. */
.page-mypage--shooting .flatpickr-weekday {
	color: var(--text-secondary);
	font-size: 12px;
	font-weight: 700;
}

.page-mypage--shooting .flatpickr-weekdaycontainer .flatpickr-weekday:first-child {
	color: var(--primary);
}

/* 이전/다음 달 날짜는 현재 월보다 확실히 낮은 대비로 표현합니다. */
.page-mypage--shooting .flatpickr-day.prevMonthDay:not(.selected),
.page-mypage--shooting .flatpickr-day.nextMonthDay:not(.selected) {
	color: var(--text-tertiary);
}

/* 모든 날짜 상호작용을 원형으로 통일해 오늘/선택 상태가 사각형으로 되돌아가지 않도록 합니다. */
.page-mypage--shooting .flatpickr-day {
	border-radius: 50%;
	transition: border-color .14s ease, background-color .14s ease, color .14s ease, box-shadow .14s ease;
}

.page-mypage--shooting .flatpickr-day:nth-child(7n + 1):not(.selected):not(.prevMonthDay):not(.nextMonthDay) {
	color: #e95f69;
}

/* 오늘은 outline, 선택일은 solid fill로 역할을 분리합니다. */
.page-mypage--shooting .flatpickr-day.today:not(.selected) {
	border-color: rgba(255,85,85,.72);
	background: #fff;
	color: var(--primary);
	font-weight: 700;
}

.page-mypage--shooting .flatpickr-day:hover,
.page-mypage--shooting .flatpickr-day:focus {
	border-color: rgba(255,85,85,.16);
	background: var(--primary-surface);
	color: var(--ink);
}

.page-mypage--shooting .flatpickr-day.selected,
.page-mypage--shooting .flatpickr-day.startRange,
.page-mypage--shooting .flatpickr-day.endRange {
	border-color: var(--primary);
	border-radius: 50%;
	background: var(--primary);
	color: #fff;
	font-weight: 700;
	box-shadow: 0 5px 12px rgba(255,85,85,.20);
}

.page-mypage--shooting .flatpickr-day.today.selected {
	box-shadow: 0 0 0 3px rgba(255,85,85,.12), 0 5px 12px rgba(255,85,85,.20);
}

/* SNAPROOM 관리 화면: 촬영 확정정보와 진행상태를 동시에 보되 모바일에서는 한 줄 흐름으로 전환합니다. */
.snaproom-admin-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 30px;
}

.snaproom-admin-head__labels {
	display: flex;
	gap: 7px;
}

.snaproom-admin-head h2 {
	margin-top: 10px;
	font-size: 24px;
	font-weight: 700;
	line-height: 34px;
}

.snaproom-admin-head p {
	margin-top: 4px;
	color: var(--text-secondary);
	font-size: 14px;
	line-height: 22px;
}

.snaproom-admin-head__actions {
	display: flex;
	gap: 8px;
}

.snaproom-admin-layout {
	display: grid;
	grid-template-columns: minmax(0,1.55fr) minmax(320px,.75fr);
	gap: 20px;
}

.snaproom-admin-layout > .fig-form-panel {
	width: 100%;
}

.snaproom-info-list {
	border-top: 1px solid var(--line);
}

.snaproom-info-list > div {
	display: grid;
	grid-template-columns: 110px minmax(0,1fr);
	gap: 20px;
	padding: 15px 2px;
	border-bottom: 1px solid var(--line);
}

.snaproom-info-list dt {
	color: var(--text-tertiary);
	font-size: 13px;
	font-weight: 600;
	line-height: 21px;
}

.snaproom-info-list dd {
	color: var(--ink);
	font-size: 14px;
	line-height: 21px;
}

.shoot-status-stepper {
	display: grid;
	gap: 0;
	margin: 2px 0 20px;
}

.shoot-status-stepper li {
	position: relative;
	display: grid;
	grid-template-columns: 34px minmax(0,1fr);
	gap: 12px;
	min-height: 58px;
	list-style: none;
}

.shoot-status-stepper li::after {
	content: "";
	position: absolute;
	top: 28px;
	bottom: -4px;
	left: 14px;
	width: 1px;
	background: var(--line);
}

.shoot-status-stepper li:last-child::after {
	display: none;
}

.shoot-status-stepper li > span {
	display: grid;
	width: 28px;
	height: 28px;
	place-items: center;
	border: 1px solid var(--line-strong);
	border-radius: 50%;
	background: #fff;
	color: var(--text-tertiary);
	font: 700 11px/1 var(--font-inter);
	z-index: 1;
}

.shoot-status-stepper li.is-done > span,
.shoot-status-stepper li.is-current > span {
	border-color: var(--primary);
	background: var(--primary);
	color: #fff;
}

.shoot-status-stepper li.is-current strong {
	color: var(--primary);
}

.shoot-status-stepper strong,
.shoot-status-stepper small {
	display: block;
}

.shoot-status-stepper strong {
	font-size: 14px;
	line-height: 20px;
}

.shoot-status-stepper small {
	margin-top: 2px;
	color: var(--text-tertiary);
	font-size: 11px;
	line-height: 17px;
}

.snaproom-status-panel__button {
	width: 100%;
}

.snaproom-note-grid {
	display: grid;
	grid-template-columns: repeat(2,minmax(0,1fr));
	gap: 12px;
}

.snaproom-note-grid article {
	display: grid;
	grid-template-columns: 42px minmax(0,1fr);
	gap: 13px;
	padding: 18px;
	border: 1px solid var(--line);
	border-radius: 12px;
}

.snaproom-note-grid__icon {
	display: grid;
	width: 42px;
	height: 42px;
	place-items: center;
	border-radius: 50%;
	background: var(--primary-surface);
	color: var(--primary);
}

.snaproom-note-grid strong {
	font-size: 14px;
	line-height: 21px;
}

.snaproom-note-grid p {
	margin-top: 4px;
	color: var(--text-secondary);
	font-size: 13px;
	line-height: 20px;
}

.snaproom-reference-grid {
	display: grid;
	grid-template-columns: repeat(3,minmax(0,1fr));
	gap: 10px;
}

.snaproom-reference-grid img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	border-radius: 10px;
	object-fit: cover;
}

/* OPEN DATE는 예약 캘린더가 아니라 가능/문의/마감 세 상태만 빠르게 공개하는 기능으로 제한합니다. */
.open-date-head,
.open-date-share {
	align-items: center;
}

.open-date-share {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.open-date-toolbar { margin-top: 8px; margin-bottom: 20px; }

/* OPEN DATE는 fig-form-panel의 실제 가용폭을 그대로 사용해 월간 일정 밀도를 확보합니다. */
.open-date-calendar {
	width: 100%;
	max-width: none;
	margin: 0;
}

.open-date-calendar__week,
.open-date-calendar__days {
	display: grid;
	grid-template-columns: repeat(7,minmax(0,1fr));
}

.open-date-calendar__week {
	padding-bottom: 8px;
	color: var(--text-tertiary);
	font-size: 12px;
	font-weight: 600;
	text-align: center;
}

.open-date-calendar__days {
	gap: 6px;
}

.open-date-calendar__days button {
	display: grid;
	min-height: 96px;
	align-content: space-between;
	justify-items: start;
	padding: 12px;
	border: 1px solid var(--line);
	border-radius: 10px;
	background: #fff;
	color: var(--ink);
	text-align: left;
}

.open-date-calendar__days button span {
	font: 700 13px/18px var(--font-inter);
}

.open-date-calendar__days button small {
	font-size: 11px;
	font-weight: 600;
	line-height: 17px;
}

.open-date-calendar__days button.is-open small { color: var(--primary); }
.open-date-calendar__days button.is-inquiry { background: #fafafa; }
.open-date-calendar__days button.is-inquiry small { color: var(--ink); }
.open-date-calendar__days button.is-closed { background: #f6f6f6; color: #aaa; }
.open-date-calendar__days button.is-muted { opacity: .36; }
.open-date-calendar__days button.is-selected { border-color: var(--primary); box-shadow: 0 0 0 2px rgba(255,85,85,.1); }

.open-date-legend {
	display: flex;
	justify-content: center;
	gap: 18px;
	margin-top: 16px;
	color: var(--text-secondary);
	font-size: 12px;
	line-height: 18px;
}

.open-date-legend span {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.open-date-legend i {
	display: block;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--line-strong);
}

.open-date-legend i.is-open { background: var(--primary); }
.open-date-legend i.is-inquiry { background: var(--ink); }
.open-date-legend i.is-closed { background: #ccc; }

.open-date-status-buttons {
	display: grid;
	grid-template-columns: repeat(3,minmax(0,1fr));
	gap: 8px;
	max-width: 520px;
}

.open-date-status-buttons button {
	height: 44px;
	border: 1px solid var(--line-strong);
	border-radius: 10px;
	background: #fff;
	color: var(--text-secondary);
	font: 600 13px/20px var(--font-body);
}

.open-date-status-buttons button.is-active {
	border-color: var(--primary);
	background: var(--primary-surface);
	color: var(--primary);
}

/* 고객 SNAPROOM은 공유 링크로 바로 열리는 모바일 우선 공개 화면입니다. */
.snaproom-public {
	min-height: 100vh;
	padding: 42px 16px 80px;
	background: #f6f6f6;
}

.snaproom-public__canvas {
	width: min(100%,680px);
	margin-inline: auto;
	overflow: hidden;
	border-radius: 20px;
	background: #fff;
	box-shadow: 0 14px 50px rgba(0,0,0,.08);
}

.snaproom-public__hero {
	padding: 34px 30px 30px;
	border-bottom: 1px solid var(--line);
	background: #fff;
}

.snaproom-public__brand {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 34px;
}

.snaproom-public__brand-identity {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
}

.snaproom-public__brand img {
	display: block;
	width: 104px;
	height: auto;
}

.snaproom-public__brand-identity > span {
	padding-left: 10px;
	border-left: 1px solid rgba(0,0,0,.12);
	color: var(--text-tertiary);
	font: 700 10px/16px var(--font-inter);
	letter-spacing: .08em;
}

.snaproom-public__brand-link,
.open-date-public__brand-link {
	display: grid;
	flex: 0 0 auto;
	width: 38px;
	height: 38px;
	place-items: center;
	border: 1px solid var(--line);
	border-radius: 50%;
	background: #fff;
	color: var(--ink);
	font: 700 19px/1 var(--font-inter);
	text-decoration: none;
	transition: border-color .16s ease, color .16s ease, background-color .16s ease;
}

.snaproom-public__hero h1 {
	margin-top: 12px;
	font-size: 32px;
	font-weight: 700;
	line-height: 43px;
	letter-spacing: -.6px;
}

.snaproom-public__hero > p {
	margin-top: 8px;
	color: var(--text-secondary);
	font-size: 14px;
	line-height: 22px;
}

/* 전화번호는 촬영 당일 즉시 필요한 정보이므로 별도 액션 버튼 대신 일정 상단에서 직접 통화할 수 있게 제공합니다. */
.snaproom-public__phone {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin-top: 16px;
	padding: 10px 13px;
	border: 1px solid var(--line);
	border-radius: 12px;
	background: #fafafa;
	color: var(--ink);
	text-decoration: none;
}

.snaproom-public__phone-icon {
	display: grid;
	width: 34px;
	height: 34px;
	place-items: center;
	border-radius: 50%;
	background: var(--primary-surface);
	color: var(--primary);
	font-size: 13px;
}

.snaproom-public__phone > span:last-child {
	display: grid;
	gap: 1px;
}

.snaproom-public__phone small {
	color: var(--text-secondary);
	font-size: 10px;
	font-weight: 600;
	line-height: 15px;
}

.snaproom-public__phone strong {
	font-size: 13px;
	line-height: 19px;
}

.snaproom-public__quick {
	display: grid;
	grid-template-columns: repeat(3,minmax(0,1fr));
	border-bottom: 1px solid var(--line);
}

.snaproom-public__quick > div {
	display: grid;
	justify-items: center;
	gap: 4px;
	padding: 20px 10px;
	text-align: center;
}

.snaproom-public__quick > div + div {
	border-left: 1px solid var(--line);
}

.snaproom-public__quick span {
	color: var(--primary);
	font-size: 15px;
}

.snaproom-public__quick strong {
	font-size: 15px;
	line-height: 22px;
}

.snaproom-public__quick small {
	color: var(--text-tertiary);
	font-size: 10px;
	line-height: 16px;
}

.snaproom-public__section {
	padding: 28px 30px;
	border-bottom: 1px solid var(--line);
}

.snaproom-public__section-head {
	display: grid;
	grid-template-columns: 5px minmax(0,1fr);
	align-items: start;
	gap: 10px;
	margin-bottom: 16px;
}

/* 번호 대신 실험실 Title Mark 자산을 독립적으로 재사용해 공개 SNAPROOM의 섹션 리듬을 브랜드 톤으로 통일합니다. */
.snaproom-public__title-mark {
	display: block;
	width: 5px;
	height: 20px;
	background: url("../svg/tools/title-container.svg") left center / 282px 20px no-repeat;
}

.snaproom-public__section-head h2 {
	font-size: 17px;
	font-weight: 700;
	line-height: 24px;
}

.snaproom-public__section-head p {
	margin-top: 2px;
	color: var(--text-tertiary);
	font-size: 12px;
	line-height: 18px;
}

.snaproom-public__map-placeholder {
	display: grid;
	position: relative;
	min-height: 150px;
	place-content: center;
	justify-items: center;
	padding: 18px 62px 18px 18px;
	border-radius: 12px;
	background: #f3f3f3;
	color: var(--text-secondary);
	text-align: center;
}

.snaproom-public__map-placeholder > i {
	margin-bottom: 8px;
	color: var(--primary);
	font-size: 22px;
}

.snaproom-public__map-placeholder strong {
	font-size: 12px;
	line-height: 18px;
}

.snaproom-public__map-placeholder small {
	margin-top: 3px;
	color: var(--text-tertiary);
	font-size: 10px;
	line-height: 16px;
}

/* 길찾기는 지도 정보와 같은 맥락에서 바로 실행하도록 지도 카드 안에 단일 액션으로 배치합니다. */
.snaproom-public__map-directions {
	display: grid;
	position: absolute;
	right: 12px;
	bottom: 12px;
	width: 42px;
	height: 42px;
	place-items: center;
	border: 1px solid var(--primary-border);
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 6px 18px rgba(0,0,0,.08);
	color: var(--primary);
	font-size: 15px;
	text-decoration: none;
	transition: transform .16s ease, border-color .16s ease, background-color .16s ease;
}

/* 주차 안내는 버튼만 존재하는 장식 기능이 아니라 Studio 운영정보를 고객에게 바로 전달하는 정보 카드로 제공합니다. */
.snaproom-public__parking-guide {
	display: grid;
	grid-template-columns: 36px minmax(0,1fr);
	gap: 11px;
	margin-top: 12px;
	padding: 14px 15px;
	border: 1px solid var(--line);
	border-radius: 12px;
	background: #fafafa;
	scroll-margin-top: 16px;
}
.snaproom-public__parking-guide > span {
	display: grid;
	width: 36px;
	height: 36px;
	place-items: center;
	border-radius: 50%;
	background: var(--primary-surface);
	color: var(--primary);
	font-size: 16px;
}
.snaproom-public__parking-guide strong {
	display: block;
	color: var(--ink);
	font-size: 13px;
	line-height: 20px;
}
.snaproom-public__parking-guide p {
	margin-top: 3px;
	color: var(--text-secondary);
	font-size: 12px;
	line-height: 19px;
}

.snaproom-public__checklist {
	display: grid;
	gap: 10px;
	padding-left: 20px;
}

.snaproom-public__checklist li {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	list-style: none;
	color: var(--text-secondary);
	font-size: 13px;
	line-height: 21px;
}

.snaproom-public__checklist i {
	margin-top: 3px;
	color: var(--primary);
}

.snaproom-public__request {
	margin-left: 20px;
	padding: 16px;
	border-radius: 12px;
	background: #f8f8f8;
	color: var(--text-secondary);
	font-size: 13px;
	line-height: 21px;
}

.snaproom-public__gallery {
	display: grid;
	grid-template-columns: repeat(3,minmax(0,1fr));
	gap: 7px;
	margin-left: 20px;
}

.snaproom-public__gallery img {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	border-radius: 10px;
	object-fit: cover;
}

/* SNAPROOM 포트폴리오는 고객이 공유 링크 진입 직후 촬영 분위기를 확인하는 핵심 영역으로 상단에서 더 크게 보여줍니다. */
.snaproom-public__portfolio { background: #fff; }
.snaproom-public__gallery--featured {
	grid-template-columns: minmax(0,1.45fr) minmax(0,1fr);
	grid-template-rows: repeat(2,112px);
	margin-left: 20px;
}
.snaproom-public__gallery--featured img { aspect-ratio: auto; height: 100%; }
.snaproom-public__gallery--featured img:first-child { grid-row: 1 / 3; }
.shooting-toast {
	position: fixed;
	left: 50%;
	bottom: 28px;
	z-index: 1200;
	padding: 11px 16px;
	border-radius: 999px;
	background: #111;
	color: #fff;
	font-size: 12px;
	line-height: 18px;
	transform: translate(-50%,12px);
	opacity: 0;
	pointer-events: none;
	transition: opacity .18s ease, transform .18s ease;
}

.shooting-toast.is-visible {
	transform: translate(-50%,0);
	opacity: 1;
}

@media (hover: hover) and (pointer: fine) {
	.shoot-subnav a:hover { color: var(--primary); }
	.shoot-subnav a.is-active:hover { color: #fff; }
	.shooting-project-card:hover { border-color: rgba(255,85,85,.28); box-shadow: 0 8px 24px rgba(0,0,0,.05); transform: translateY(-1px); }
	.open-date-calendar__days button[data-open-date]:hover { border-color: rgba(255,85,85,.45); }
	.snaproom-public__brand-link:hover,
	.open-date-public__brand-link:hover { border-color: var(--primary-border); background: var(--primary-surface); color: var(--primary); }
	.snaproom-public__map-directions:hover { border-color: var(--primary); background: var(--primary-surface); transform: translateY(-1px); }
	.open-date-public__days > button:not(:disabled):hover { border-color: var(--primary-border); background: var(--primary-surface); }
}

@media (prefers-reduced-motion: reduce) {
	.shooting-project-card,
	.shooting-toast { transition: none; }
}

@media (max-width: 1024px) {
	.shoot-subnav {
		gap: 4px;
		margin: 0;
		padding: 10px 14px;
		border: 0;
		border-bottom: 1px solid var(--line);
		border-radius: 0;
		overflow-x: auto;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	.shoot-subnav::-webkit-scrollbar { display: none; }
	.shoot-subnav a { min-height: 36px; padding-inline: 14px; flex: 0 0 auto; }
	.shooting-form-shell .shoot-subnav + .fig-form-panel { margin-top: 0; }

	.shooting-hero {
		align-items: stretch;
		flex-direction: column;
		gap: 18px;
		padding-top: 22px;
		background: linear-gradient(160deg,#fff 0,var(--primary-surface) 100%);
	}

	.shooting-hero__copy h2 { margin-top: 10px; font-size: 22px; line-height: 31px; }
	.shooting-hero__copy p { font-size: 13px; line-height: 20px; }
	.shooting-hero > .fig-ui-button { width: 100%; }

	.shooting-kpi-grid {
		grid-template-columns: repeat(5,108px);
		gap: 8px;
		margin: 0;
		padding: 14px;
		overflow-x: auto;
		background: var(--primary-surface);
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}

	.shooting-kpi-grid::-webkit-scrollbar { display: none; }
	.shooting-kpi-grid article { min-height: 104px; padding: 14px; border-radius: 10px; }
	.shooting-kpi-grid strong { font-size: 25px; line-height: 32px; }

	.shooting-section-head { gap: 12px; }
	.shooting-board-controls { width: 100%; justify-content: stretch; }
	.shooting-studio-context { align-items: stretch; flex-direction: column; gap: 14px; }
	.shooting-studio-context__control { width: 100%; }
	.shooting-studio-context__empty { align-items: stretch; flex-direction: column; }
	.shooting-studio-context__empty .fig-ui-button { width: 100%; }
	.shooting-display-switch { width: 100%; }
	.shooting-display-switch button { flex: 1 1 50%; justify-content: center; }
	.shooting-status-filter { width: 100%; overflow-x: auto; scrollbar-width: none; }
	.shooting-status-filter::-webkit-scrollbar { display: none; }
	.shooting-status-filter button { flex: 1 0 auto; }

	.shooting-project-card {
		grid-template-columns: 64px minmax(0,1fr);
		gap: 14px;
		min-height: 0;
		padding: 14px;
		border-radius: 12px;
	}

	.shooting-project-card__date { min-height: 78px; }
	.shooting-project-card__date strong { font-size: 23px; line-height: 28px; }
	.shooting-project-card__top { min-width: 0; }
	.shooting-project-card__studio { flex: 1 1 auto; }
	.shooting-project-card h3 { font-size: 15px; line-height: 22px; }
	.shooting-project-card__body > p { font-size: 12px; line-height: 19px; }
	.shooting-project-card__meta { display: grid; gap: 3px; }
	.shooting-project-card__actions { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
	.shooting-project-card__actions .fig-ui-button { width: 100%; min-width: 0; }

	.shoot-form-grid { grid-template-columns: minmax(0,1fr); gap: 16px; }
	.shoot-form-grid__wide { grid-column: auto; }
	.shoot-party-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
	.shoot-location-summary { grid-template-columns: 36px minmax(0,1fr); padding: 13px; }
	.shoot-location-summary__icon { width: 36px; height: 36px; }
	.shoot-location-change { width: 100%; }
	.shoot-location-override { grid-template-columns: minmax(0,1fr); }
	.shoot-parking-override { grid-template-columns: minmax(0,1fr); }
	.shoot-prep-field { grid-template-columns: minmax(0,1fr); }
	.shoot-prep-field legend { grid-column: auto; }
	.shoot-prep-list { gap: 6px; }
	.shoot-prep-list > span { width: 100%; min-height: 44px; }
	.shoot-form-actions { display: grid; grid-template-columns: minmax(0,1fr); gap: 8px; padding: 16px 14px 0; }
	.shoot-form-actions .fig-ui-button { width: 100%; min-width: 0; }

	.shooting-calendar-toolbar { margin-bottom: 14px; }
	.shooting-calendar__days { gap: 3px; }
	.shooting-calendar__days button { min-height: 54px; padding: 6px; border-radius: 8px; }
	.shooting-calendar__days button small { font-size: 8px; line-height: 12px; }
	.shooting-calendar-agenda > div { grid-template-columns: 50px minmax(0,1fr) auto; gap: 8px; padding: 12px; }

	.snaproom-admin-head { align-items: stretch; flex-direction: column; gap: 16px; }
	.snaproom-admin-head h2 { font-size: 21px; line-height: 30px; }
	.snaproom-admin-head__actions { display: grid; grid-template-columns: minmax(0,1fr); }
	.snaproom-admin-head__actions .fig-ui-button { width: 100%; min-width: 0; }
	.snaproom-admin-layout { grid-template-columns: minmax(0,1fr); gap: 0; }
	.snaproom-admin-layout > .fig-form-panel + .fig-form-panel { border-top: 4px solid var(--primary-surface); }
	.snaproom-info-list > div { grid-template-columns: 76px minmax(0,1fr); gap: 10px; }
	.snaproom-note-grid { grid-template-columns: minmax(0,1fr); }
	.snaproom-reference-grid { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 6px; }

	.open-date-share { width: 100%; justify-content: space-between; }
	.open-date-calendar__days { gap: 3px; }
	.open-date-calendar__days button { min-height: 58px; padding: 7px; border-radius: 8px; }
	.open-date-calendar__days button small { font-size: 9px; line-height: 14px; }
	.open-date-status-buttons { max-width: none; }

	.snaproom-public__hero { padding: 26px 20px 24px; }
	.snaproom-public__brand { margin-bottom: 28px; }
	.snaproom-public__hero h1 { font-size: 27px; line-height: 37px; }
	.snaproom-public__quick > div { padding: 17px 5px; }
	.snaproom-public__section { padding: 24px 20px; }
	.snaproom-public__checklist,
	.snaproom-public__request,
	.snaproom-public__gallery { margin-left: 0; padding-left: 0; }
}

@media (max-width: 360px) {
	.shooting-project-card { grid-template-columns: 58px minmax(0,1fr); gap: 10px; padding-inline: 12px; }
	.open-date-calendar__days button { min-height: 52px; padding: 5px; }
	.open-date-calendar__days button span { font-size: 11px; }
	.open-date-status-buttons { grid-template-columns: minmax(0,1fr); }
	.snaproom-public__quick small { display: none; }
}

/* OPEN DATE 고객 공개 시안. 실제 예약 기능과 분리해 날짜 상태 확인과 문의 진입만 제공합니다. */
.open-date-public {
	min-height: 100vh;
	padding: 42px 16px 80px;
	background: #f6f6f6;
}

.open-date-public__canvas {
	width: min(100%,680px);
	margin-inline: auto;
	overflow: hidden;
	border-radius: 20px;
	background: #fff;
	box-shadow: 0 14px 50px rgba(0,0,0,.08);
}

.open-date-public__head {
	padding: 34px 30px 28px;
	border-bottom: 1px solid var(--line);
	background: #fff;
}

.open-date-public__brand {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 20px;
}

.open-date-public__brand-identity {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
}

.open-date-public__brand img { display: block; width: 104px; height: auto; }
.open-date-public__brand-identity > span { padding-left: 10px; border-left: 1px solid rgba(0,0,0,.12); color: var(--text-tertiary); font: 700 10px/16px var(--font-inter); letter-spacing: .08em; }
.open-date-public__head h1 { margin-top: 0; color: var(--ink); font-size: 32px; font-weight: 700; line-height: 43px; letter-spacing: -.5px; }
.open-date-public__head p { max-width: 520px; margin-top: 8px; color: var(--text-secondary); font-size: 14px; line-height: 22px; }
.open-date-public__head p strong { color: var(--ink); font-weight: 700; }

.open-date-public__calendar { padding: 30px; border-bottom: 1px solid var(--line); }
.open-date-public__week,
.open-date-public__days { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); }
.open-date-public__week { padding-bottom: 10px; color: var(--text-secondary); font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; }
.open-date-public__days { gap: 5px; }
.open-date-public__days > span,
.open-date-public__days > button { display: grid; min-height: 68px; align-content: space-between; padding: 8px; border: 1px solid var(--line); border-radius: 10px; background: #fff; color: var(--ink); text-align: left; }
.open-date-public__days > button { cursor: pointer; transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease; }
.open-date-public__days > span { border-color: transparent; color: #b9bbc0; }
.open-date-public__days strong { font: 700 13px/20px var(--font-inter); }
.open-date-public__days small { font-size: 10px; font-weight: 700; line-height: 15px; }
.open-date-public__days .is-open small { color: var(--primary); }
.open-date-public__days .is-inquiry { background: #fafafa; }
.open-date-public__days .is-inquiry small { color: var(--ink); }
.open-date-public__days .is-closed { background: #f5f5f5; color: #9a9ca1; cursor: default; }
.open-date-public__days > button.is-selected { border-color: var(--primary); background: var(--primary-surface); box-shadow: 0 0 0 2px rgba(255,85,85,.09); }
.open-date-public__legend { display: flex; justify-content: center; gap: 14px; margin-top: 17px; color: var(--text-secondary); font-size: 11px; line-height: 17px; }
.open-date-public__legend span { display: inline-flex; align-items: center; gap: 5px; }
.open-date-public__legend i { width: 7px; height: 7px; border-radius: 50%; background: #ccc; }
.open-date-public__legend i.is-open { background: var(--primary); }
.open-date-public__legend i.is-inquiry { background: var(--ink); }
.open-date-public__legend i.is-closed { background: #ccc; }
.open-date-public__guide { display: grid; justify-items: center; padding: 30px 30px 34px; text-align: center; }
.open-date-public__guide strong { color: var(--ink); font-size: 18px; line-height: 26px; }
.open-date-public__guide p { max-width: 430px; margin-top: 7px; color: var(--text-secondary); font-size: 13px; line-height: 21px; }
.open-date-public__guide .fig-ui-button { margin-top: 18px; }
.open-date-public__guide .fig-ui-button:disabled { opacity: .45; cursor: default; }

@media (max-width: 1024px) {
	.open-date-public__head { padding: 26px 20px 24px; }
	.open-date-public__head h1 { font-size: 27px; line-height: 37px; }
	.open-date-public__calendar { padding: 24px 14px; }
	.open-date-public__days { gap: 3px; }
	.open-date-public__days > span,
	.open-date-public__days > button { min-height: 55px; padding: 6px; border-radius: 8px; }
	.open-date-public__guide { padding: 26px 20px 30px; }
	.open-date-public__guide .fig-ui-button { width: 100%; }
}


/* --------------------------------------------------------------------------
 * 촬영관리 1차 사용성 보강
 * ----------------------------------------------------------------------- */
/* 촬영관리와 고객 공유 화면의 보조문구 대비를 높여 작은 글자도 흰 배경에서 충분히 읽히게 합니다. */
.page-mypage--shooting,
.snaproom-public,
.open-date-public {
	--text-secondary: #5f6166;
	--text-tertiary: #777a80;
}

/* 공통 Studio Context 아이콘은 Font Awesome 기본 building glyph를 사용해 브라우저별 누락 가능성을 줄입니다. */
.shooting-studio-context__icon i { font-size: 16px; line-height: 1; }

/* 촬영 장소 변경 주소는 기존 Studio 주소검색 UX와 동일하게 입력창과 검색 버튼을 한 행에 둡니다. */
.shoot-address-search-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px; }
.shoot-address-search-row .fig-ui-button { min-width: 78px; height: 48px; align-self: stretch; }

/* fieldset 기본 테두리를 제거하고 입력/태그 자체의 계층만으로 준비사항을 구분합니다. */
.shoot-prep-field > .fig-ui-input { background: #fafafa; }
.shoot-prep-list > span { min-height: 42px; border-color: rgba(255,85,85,.24); background: #fff7f7; }

/* 달력 보기는 카드 내부 가용폭을 모두 사용해 PC에서 불필요한 좌우 빈 공간이 생기지 않게 합니다. */
.shooting-calendar-view { width: 100%; }

/* SNAPROOM / OPEN DATE가 동일한 브랜드 Footer를 사용합니다. */
.snaphub-micro-footer {
	display: grid;
	justify-items: center;
	gap: 5px;
	padding: 24px 20px 28px;
	border-top: 1px solid var(--line);
	background: #fff;
	text-align: center;
}
.snaphub-micro-footer strong { color: var(--ink); font: 700 12px/18px var(--font-inter); letter-spacing: .06em; }
.snaphub-micro-footer__domain { color: var(--text-secondary); font: 600 12px/18px var(--font-inter); text-decoration: none; }

/* 촬영 프로젝트 전용 주소 검색 레이어. Studio 등록 화면과 같은 동작 원칙을 가지되 이 화면의 CSS에 독립시킵니다. */
.shoot-address-layer {
	display: grid;
	position: fixed;
	inset: 0;
	z-index: 1400;
	place-items: center;
	padding: 24px;
	background: rgba(17,17,17,.46);
}
.shoot-address-layer[hidden] { display: none; }
.shoot-address-layer__panel { display: grid; width: min(100%,520px); height: min(680px,calc(100vh - 48px)); grid-template-rows: auto minmax(0,1fr); overflow: hidden; border-radius: 16px; background: #fff; box-shadow: 0 22px 70px rgba(0,0,0,.18); }
.shoot-address-layer__head { display: flex; align-items: center; justify-content: space-between; min-height: 58px; padding: 0 18px; border-bottom: 1px solid var(--line); }
.shoot-address-layer__head h2 { font-size: 17px; line-height: 24px; }
.shoot-address-layer__head button { display: grid; width: 38px; height: 38px; place-items: center; border: 0; border-radius: 50%; background: transparent; color: var(--ink); font-size: 24px; }
.shoot-address-layer__postcode { min-height: 0; }
html.is-shoot-address-layer-open,
body.is-shoot-address-layer-open { overflow: hidden; }

@media (max-width: 1024px) {
	.shoot-address-layer { padding: 0; align-items: end; }
	.shoot-address-layer__panel { width: min(100%,430px); height: min(82vh,720px); border-radius: 18px 18px 0 0; }
}
@media (max-width: 430px) {
	.shoot-address-search-row { grid-template-columns: minmax(0,1fr) 74px; }
	.shoot-address-search-row .fig-ui-button { padding-inline: 10px; }
	.shooting-calendar__days { gap: 4px; }
	.shooting-calendar__days button { min-height: 64px; padding: 7px; }
}


/* --------------------------------------------------------------------------
 * 촬영관리 v19 - OPEN DATE 공개상태 / SNAPROOM 다건 / 공개 월 탐색
 * ----------------------------------------------------------------------- */
.open-date-publish-toggle {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 34px;
	cursor: pointer;
}
.open-date-publish-toggle__copy {
	min-width: 42px;
	color: var(--ink);
	font-size: 12px;
	font-weight: 700;
	line-height: 18px;
	text-align: right;
}
.open-date-share [data-open-date-share-control].is-disabled {
	opacity: .42;
	pointer-events: none;
}

/* 공개 OPEN DATE도 관리화면과 같은 월 이동 리듬을 사용하되 마이크로사이트 폭에 맞게 간결하게 유지합니다. */
.open-date-public__toolbar {
	display: grid;
	grid-template-columns: 40px minmax(0,1fr) 40px;
	align-items: center;
	width: min(100%,320px);
	margin: 0 auto 20px;
}
.open-date-public__toolbar strong { text-align: center; color: var(--ink); font-size: 16px; line-height: 24px; }
.open-date-public__toolbar button { display: grid; width: 40px; height: 40px; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: #fff; color: var(--ink); }
.open-date-public__toolbar button:disabled { opacity: .3; cursor: default; }

@media (max-width: 1024px) {
	.snaproom-public__gallery--featured { grid-template-rows: repeat(2,90px); margin-left: 0; }
	.open-date-publish-toggle__copy { min-width: 40px; }
}


/* --------------------------------------------------------------------------
 * 촬영관리 v24 - 고객 공유 마이크로사이트 / OPEN DATE 문의 흐름
 * ----------------------------------------------------------------------- */
/*
 * 공개 SNAPROOM/OPEN DATE도 스냅허브 공통 반응형 계약을 따릅니다.
 * 431~1024px에서는 430px 모바일 캔버스를 중앙에 고정하고 바깥은 중립 여백으로 유지합니다.
 */
@media (min-width: 431px) and (max-width: 1024px) {
	body.page-snaproom-preview,
	body.page-open-date-preview { background: var(--mobile-canvas-gutter); }

	.snaproom-public,
	.open-date-public {
		width: 430px;
		max-width: 100%;
		min-height: 100vh;
		margin-inline: auto;
		padding: 0;
		background: #fff;
	}

	.snaproom-public__canvas,
	.open-date-public__canvas {
		width: 100%;
		min-height: 100vh;
		border-radius: 0;
		box-shadow: none;
	}
}

@media (max-width: 430px) {
	body.page-snaproom-preview,
	body.page-open-date-preview { background: #fff; }

	.snaproom-public,
	.open-date-public {
		width: 100%;
		min-height: 100vh;
		padding: 0;
		background: #fff;
	}

	.snaproom-public__canvas,
	.open-date-public__canvas {
		width: 100%;
		min-height: 100vh;
		border-radius: 0;
		box-shadow: none;
	}

	.snaproom-public__brand-link,
	.open-date-public__brand-link { width: 40px; height: 40px; }
	.snaproom-public__phone { width: 100%; }
	.snaproom-public__map-placeholder { padding-right: 58px; }
	.open-date-public__week { font-size: 10px; }
	.open-date-public__days strong { font-size: 12px; }
	.open-date-public__legend { gap: 10px; font-size: 10px; }
}

/* OPEN DATE 문의는 예약 확정과 분리된 다음 단계입니다. 날짜를 먼저 선택한 뒤 필요한 정보만 Bottom Sheet에서 받습니다. */
.open-date-inquiry {
	display: grid;
	position: fixed;
	inset: 0;
	z-index: 1500;
	place-items: center;
	padding: 24px;
}
.open-date-inquiry[hidden] { display: none; }
.open-date-inquiry__backdrop { position: absolute; inset: 0; background: rgba(17,17,17,.48); }
.open-date-inquiry__panel {
	display: grid;
	position: relative;
	z-index: 1;
	width: min(100%,520px);
	max-height: min(760px,calc(100vh - 48px));
	grid-template-rows: auto minmax(0,1fr);
	overflow: hidden;
	border-radius: 18px;
	background: #fff;
	box-shadow: 0 22px 70px rgba(0,0,0,.2);
}
.open-date-inquiry__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 22px 22px 18px; border-bottom: 1px solid var(--line); }
.open-date-inquiry__head span { display: block; margin-bottom: 4px; color: var(--primary); font-size: 11px; font-weight: 700; line-height: 17px; }
.open-date-inquiry__head h2 { color: var(--ink); font-size: 20px; line-height: 28px; }
.open-date-inquiry__head > button { display: grid; flex: 0 0 auto; width: 40px; height: 40px; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: #fff; color: var(--ink); font-size: 18px; }
.open-date-inquiry__body { display: grid; gap: 15px; overflow-y: auto; padding: 20px 22px 24px; }
.open-date-inquiry__selected { display: grid; gap: 2px; padding: 13px 15px; border: 1px solid var(--primary-border); border-radius: 12px; background: var(--primary-surface); }
.open-date-inquiry__selected small { color: var(--text-secondary); font-size: 11px; line-height: 17px; }
.open-date-inquiry__selected strong { color: var(--primary); font-size: 15px; line-height: 22px; }
.open-date-inquiry__field { display: grid; gap: 7px; }
.open-date-inquiry__field > span { color: var(--ink); font-size: 12px; font-weight: 700; line-height: 18px; }
.open-date-inquiry__field input,
.open-date-inquiry__field select,
.open-date-inquiry__field textarea { width: 100%; min-height: 48px; padding: 0 13px; border: 1px solid var(--line-strong); border-radius: 10px; background: #fff; color: var(--ink); font: 400 14px/22px var(--font-body); }
.open-date-inquiry__field select { padding-right: 38px; }
.open-date-inquiry__field textarea { min-height: 106px; padding-block: 12px; resize: vertical; }
.open-date-inquiry__field input:focus,
.open-date-inquiry__field select:focus,
.open-date-inquiry__field textarea:focus { border-color: var(--primary); outline: 0; box-shadow: 0 0 0 3px var(--primary-surface); }
.open-date-inquiry__actions { display: grid; grid-template-columns: minmax(0,.7fr) minmax(0,1.3fr); gap: 8px; margin-top: 3px; }
.open-date-inquiry__actions .fig-ui-button { width: 100%; min-width: 0; }
.open-date-inquiry__flow { padding: 12px 14px; border-radius: 10px; background: #f7f7f8; color: var(--text-secondary); font-size: 12px; line-height: 19px; }
html.is-open-date-inquiry-open,
body.is-open-date-inquiry-open { overflow: hidden; }

@media (max-width: 1024px) {
	.open-date-inquiry { align-items: end; padding: 0; }
	.open-date-inquiry__panel { width: min(100%,430px); max-height: min(86vh,760px); border-radius: 20px 20px 0 0; }
	.open-date-inquiry__head { padding: 20px 18px 16px; }
	.open-date-inquiry__body { padding: 18px 18px calc(22px + env(safe-area-inset-bottom)); }
}

/* SNAPROOM은 촬영 프로젝트 상세 기능이므로 직접 URL 진입 시 별도 목록 대신 촬영관리로 복귀시킵니다. */
.snaproom-entry-notice { display: grid; gap: 18px; justify-items: start; }
.snaproom-entry-notice .fig-ui-button { min-width: 132px; }

/* --------------------------------------------------------------------------
 * 촬영관리 v25 - OPEN DATE 스튜디오 정보 확장
 * ----------------------------------------------------------------------- */
/* OPEN DATE는 날짜 선택이 중심이므로 Studio 정보는 상세페이지를 복제하지 않고 문의 판단에 필요한 내용만 압축해 제공합니다. */
.open-date-public__studio-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 7px 12px;
	margin-top: 16px;
}
.open-date-public__studio-meta span {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-width: 0;
	color: var(--text-secondary);
	font-size: 12px;
	font-weight: 600;
	line-height: 18px;
}
.open-date-public__studio-meta i { color: var(--primary); font-size: 11px; }

.open-date-public__section {
	padding: 28px 30px;
	border-bottom: 1px solid var(--line);
	background: #fff;
}
.open-date-public__section-head {
	display: grid;
	grid-template-columns: 8px minmax(0,1fr);
	align-items: start;
	gap: 12px;
	margin-bottom: 16px;
}
.open-date-public__title-mark {
	display: block;
	width: 8px;
	height: 28px;
	background: url("../svg/tools/title-container.svg") left center / 395px 28px no-repeat;
}
.open-date-public__section-head h2 {
	margin: 0;
	color: var(--ink);
	font-size: 17px;
	font-weight: 700;
	line-height: 24px;
	letter-spacing: -.2px;
}
.open-date-public__section-head p {
	margin: 2px 0 0;
	color: var(--text-secondary);
	font-size: 12px;
	line-height: 19px;
}

/* Studio 사진은 기존 등록 순서를 그대로 사용합니다. 데스크톱은 대표사진을 크게, 모바일은 손가락 스크롤을 우선합니다. */
.open-date-public__gallery {
	display: grid;
	grid-template-columns: minmax(0,1.5fr) repeat(2,minmax(0,1fr));
	grid-template-rows: repeat(2,104px);
	gap: 7px;
}
.open-date-public__gallery img {
	display: block;
	width: 100%;
	height: 100%;
	border-radius: 11px;
	object-fit: cover;
}
.open-date-public__gallery img:first-child { grid-row: 1 / 3; }
.open-date-public__gallery.is-single {
	grid-template-columns: minmax(0,1fr);
	grid-template-rows: 220px;
}
.open-date-public__gallery.is-single img:first-child { grid-row: auto; }
.open-date-public__portfolio-empty {
	display: grid;
	min-height: 150px;
	place-items: center;
	align-content: center;
	gap: 8px;
	border: 1px dashed var(--line-strong);
	border-radius: 12px;
	background: #fafafa;
	color: var(--text-secondary);
	font-size: 12px;
	line-height: 19px;
}
.open-date-public__portfolio-empty i { color: var(--primary); font-size: 22px; }

.open-date-public__info-grid {
	display: grid;
	grid-template-columns: repeat(3,minmax(0,1fr));
	border: 1px solid var(--line);
	border-radius: 12px;
	overflow: hidden;
}
.open-date-public__info-grid > div {
	display: grid;
	align-content: start;
	gap: 4px;
	min-width: 0;
	padding: 16px;
	background: #fff;
}
.open-date-public__info-grid > div + div { border-left: 1px solid var(--line); }
.open-date-public__info-grid span { color: var(--primary); font-size: 14px; line-height: 18px; }
.open-date-public__info-grid small { color: var(--text-secondary); font-size: 10px; font-weight: 600; line-height: 16px; }
.open-date-public__info-grid strong {
	overflow: hidden;
	color: var(--ink);
	font-size: 12px;
	font-weight: 700;
	line-height: 19px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.open-date-public__products { display: grid; gap: 8px; }
.open-date-public__products article {
	display: grid;
	gap: 8px;
	padding: 15px 16px;
	border: 1px solid var(--line);
	border-radius: 12px;
	background: #fff;
}
.open-date-public__products article > div,
.open-date-public__products article > p {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	min-width: 0;
}
.open-date-public__products article > div > strong {
	overflow: hidden;
	color: var(--ink);
	font-size: 14px;
	line-height: 21px;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.open-date-public__products article > p { margin: 0; color: var(--text-secondary); font-size: 11px; line-height: 18px; }
.open-date-public__products article > p > strong { margin-left: auto; color: var(--ink); font-size: 14px; line-height: 20px; }

.open-date-public__location-card {
	display: grid;
	grid-template-columns: 38px minmax(0,1fr) auto;
	align-items: center;
	gap: 11px;
	padding: 15px;
	border: 1px solid var(--line);
	border-radius: 12px;
	background: #fff;
}
.open-date-public__location-icon,
.open-date-public__location-card > a,
.open-date-public__parking > span {
	display: grid;
	width: 38px;
	height: 38px;
	place-items: center;
	border-radius: 50%;
	background: var(--primary-surface);
	color: var(--primary);
	font-size: 14px;
}
.open-date-public__location-card > div { min-width: 0; }
.open-date-public__location-card strong { display: block; color: var(--ink); font-size: 13px; line-height: 20px; }
.open-date-public__location-card p {
	margin: 3px 0 0;
	overflow: hidden;
	color: var(--text-secondary);
	font-size: 11px;
	line-height: 18px;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.open-date-public__location-card > a {
	border: 1px solid var(--primary-border);
	background: #fff;
	text-decoration: none;
}
.open-date-public__parking {
	display: grid;
	grid-template-columns: 38px minmax(0,1fr);
	gap: 11px;
	margin-top: 9px;
	padding: 14px 15px;
	border-radius: 12px;
	background: #fafafa;
}
.open-date-public__parking strong { display: block; color: var(--ink); font-size: 12px; line-height: 19px; }
.open-date-public__parking p { margin: 2px 0 0; color: var(--text-secondary); font-size: 11px; line-height: 18px; }

@media (hover: hover) and (pointer: fine) {
	.open-date-public__location-card > a:hover { border-color: var(--primary); background: var(--primary-surface); }
}

@media (max-width: 1024px) {
	.open-date-public__section { padding: 24px 20px; }
	.open-date-public__gallery {
		display: flex;
		gap: 8px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}
	.open-date-public__gallery::-webkit-scrollbar { display: none; }
	.open-date-public__gallery img {
		flex: 0 0 74%;
		height: auto;
		aspect-ratio: 4 / 3;
		scroll-snap-align: start;
	}
	.open-date-public__gallery.is-single img { flex-basis: 100%; }
	.open-date-public__info-grid { grid-template-columns: minmax(0,1fr); }
	.open-date-public__info-grid > div { grid-template-columns: 24px 70px minmax(0,1fr); align-items: center; gap: 8px; padding: 12px 14px; }
	.open-date-public__info-grid > div + div { border-top: 1px solid var(--line); border-left: 0; }
	.open-date-public__info-grid span { text-align: center; }
	.open-date-public__info-grid strong { white-space: normal; }
}

@media (max-width: 430px) {
	.open-date-public__section { padding-inline: 18px; }
	.open-date-public__studio-meta { gap: 6px 10px; }
	.open-date-public__gallery img { flex-basis: 82%; }
	.open-date-public__location-card { grid-template-columns: 36px minmax(0,1fr) 38px; padding: 13px; }
	.open-date-public__location-icon,
	.open-date-public__location-card > a,
	.open-date-public__parking > span { width: 36px; height: 36px; }
}

/* 실제 포트폴리오 장수에 따라 데스크톱에서 불필요한 빈 Grid 셀이 생기지 않도록 레이아웃만 조정합니다. */
@media (min-width: 1025px) {
	.open-date-public__gallery.is-pair { grid-template-columns: repeat(2,minmax(0,1fr)); grid-template-rows: 190px; }
	.open-date-public__gallery.is-pair img:first-child { grid-row: auto; }
	.open-date-public__gallery.is-triple { grid-template-columns: minmax(0,1.5fr) minmax(0,1fr); }
	.open-date-public__gallery.is-quad { grid-template-columns: repeat(2,minmax(0,1fr)); grid-template-rows: repeat(2,120px); }
	.open-date-public__gallery.is-quad img:first-child { grid-row: auto; }
}

/* --------------------------------------------------------------------------
 * 촬영관리 v26 - OPEN DATE 정보 순서 / 캘린더 전환 흐름 보강
 * ----------------------------------------------------------------------- */
/* 촬영 위치 다음에 달력이 이어져도 각 섹션의 제목선과 캘린더 조작부가 같은 리듬으로 읽히게 합니다. */
.open-date-public__section-head--calendar { margin-bottom: 20px; }
.open-date-public__calendar .open-date-public__toolbar { margin-bottom: 18px; }

/* OPEN DATE에서 사진 1장이 과도한 Hero처럼 보이지 않도록 날짜 탐색보다 시각적 비중이 커지지 않게 제한합니다. */
.open-date-public__gallery.is-single { grid-template-rows: 190px; }

/* 데이터 수가 2~4개로 달라져도 빈 카드 없이 자연스럽게 채워지도록 고정 3열 대신 가용폭 기반 Grid를 사용합니다. */
.open-date-public__info-grid { grid-template-columns: repeat(auto-fit,minmax(130px,1fr)); }
.open-date-public__info-grid span { font-size: 15px; }
.open-date-public__info-grid small { font-size: 11px; line-height: 17px; }
.open-date-public__info-grid strong { font-size: 13px; line-height: 20px; }
.open-date-public__info-grid strong a { color: inherit; text-decoration: none; }

/* 날짜 선택 CTA는 캘린더의 다음 행동이므로 두 영역 사이 간격을 줄여 하나의 전환 흐름으로 보이게 합니다. */
.open-date-public__guide { padding-top: 24px; }

@media (hover: hover) and (pointer: fine) {
	.open-date-public__info-grid strong a:hover { color: var(--primary); }
}

@media (max-width: 1024px) {
	/* 430px 모바일 캔버스에서도 섹션 제목의 좌우 기준선과 달력이 어긋나지 않도록 동일 계열 여백을 사용합니다. */
	.open-date-public__calendar { padding-inline: 18px; }
	.open-date-public__gallery.is-single img { flex-basis: 100%; aspect-ratio: 16 / 9; }
	.open-date-public__info-grid { grid-template-columns: minmax(0,1fr); }
}

@media (max-width: 430px) {
	.open-date-public__calendar { padding-inline: 16px; }
}

/* --------------------------------------------------------------------------
 * 촬영관리 v31 - OPEN DATE 헤더 밀도 / 촬영 문의 데이터 화면
 * ----------------------------------------------------------------------- */
/* OPEN DATE 상단 로고는 서비스 메인 새창 링크로 동작하되 기존 브랜드 배치를 유지합니다. */
.open-date-public__brand-home {
	display: inline-flex;
	align-items: center;
	border-radius: 6px;
	text-decoration: none;
}
.open-date-public__brand-home:focus-visible {
	outline: 2px solid rgba(255,85,85,.3);
	outline-offset: 4px;
}

/* 문의 완료 정보는 다음 행동(내 촬영 문의 확인)이 한 덩어리로 읽히도록 단순한 안내 카드로 구성합니다. */
.open-date-inquiry__flow {
	display: grid;
	gap: 7px;
}
.open-date-inquiry__flow[hidden] { display: none; }
.open-date-inquiry__flow strong { color: var(--ink); font-size: 13px; line-height: 20px; }
.open-date-inquiry__flow p { margin: 0; }
.open-date-inquiry__flow .fig-ui-button { justify-self: start; margin-top: 3px; }

/* 고객/Studio 관리자 문의 화면은 동일한 상태 색과 상세 카드 구조를 사용해 문의→촬영확정 흐름을 일관되게 보여줍니다. */
.shoot-inquiry-shell { overflow: hidden; }
.shoot-inquiry-hero {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 28px;
}
.shoot-inquiry-hero > div { min-width: 0; }
.shoot-inquiry-hero h2 { margin: 4px 0 0; color: var(--ink); font-size: 24px; line-height: 34px; letter-spacing: -.3px; }
.shoot-inquiry-hero p { max-width: 680px; margin: 7px 0 0; color: var(--text-secondary); font-size: 13px; line-height: 21px; }
.shoot-inquiry-count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 30px;
	padding: 5px 11px;
	border-radius: 999px;
	background: #f6f6f7;
	color: var(--text-secondary);
	font-size: 12px;
	font-weight: 700;
	line-height: 18px;
	white-space: nowrap;
}
.shoot-inquiry-count--primary { background: var(--primary-surface); color: var(--primary); }

.shoot-inquiry-customer-layout,
.shoot-inquiry-admin-layout {
	display: grid;
	grid-template-columns: minmax(260px,.8fr) minmax(0,1.4fr);
	gap: 18px;
	align-items: start;
}
.shoot-inquiry-list,
.shoot-inquiry-table { display: grid; gap: 8px; }
.shoot-inquiry-list__item,
.shoot-inquiry-table__row {
	appearance: none;
	width: 100%;
	min-width: 0;
	border: 1px solid var(--line);
	border-radius: 12px;
	background: #fff;
	color: var(--ink);
	font: inherit;
	text-align: left;
	cursor: pointer;
	transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease;
}
.shoot-inquiry-list__item {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 4px 10px;
	padding: 14px;
}
.shoot-inquiry-list__item .shoot-inquiry-status { grid-column: 1 / 2; justify-self: start; }
.shoot-inquiry-list__item strong { grid-column: 1 / 2; margin-top: 3px; font-size: 14px; line-height: 21px; }
.shoot-inquiry-list__item > span:not(.shoot-inquiry-status) { grid-column: 1 / 3; color: var(--text-secondary); font-size: 12px; line-height: 18px; }
.shoot-inquiry-list__item small { grid-column: 2 / 3; grid-row: 1 / 2; color: var(--text-tertiary); font-size: 10px; line-height: 17px; }
.shoot-inquiry-list__item.is-active,
.shoot-inquiry-table__row.is-active { border-color: var(--primary-border); background: var(--primary-surface); box-shadow: 0 0 0 2px rgba(255,85,85,.05); }

.shoot-inquiry-status {
	display: inline-flex;
	align-items: center;
	min-height: 23px;
	padding: 2px 8px;
	border-radius: 999px;
	font-size: 10px;
	font-weight: 700;
	line-height: 16px;
}
.shoot-inquiry-status--new { background: var(--primary-surface); color: var(--primary); }
.shoot-inquiry-status--consulting { background: #f3f4f6; color: #444; }
.shoot-inquiry-status--confirmed { background: #eef8f1; color: #217a43; }

.shoot-inquiry-detail {
	min-width: 0;
	padding: 20px;
	border: 1px solid var(--line);
	border-radius: 14px;
	background: #fff;
}
.shoot-inquiry-detail__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.shoot-inquiry-detail__head > div { min-width: 0; }
.shoot-inquiry-detail__head h3 { margin: 7px 0 0; color: var(--ink); font-size: 18px; line-height: 27px; }
.shoot-inquiry-detail__head p { margin: 2px 0 0; color: var(--text-secondary); font-size: 12px; line-height: 19px; }
.shoot-inquiry-detail__studio-link,
.shoot-inquiry-detail__more {
	display: grid;
	flex: 0 0 auto;
	width: 38px;
	height: 38px;
	place-items: center;
	border: 1px solid var(--line);
	border-radius: 50%;
	background: #fff;
	color: var(--ink);
	text-decoration: none;
}
.shoot-inquiry-detail__facts { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0; margin: 18px 0 0; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.shoot-inquiry-detail__facts > div { min-width: 0; padding: 12px 14px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.shoot-inquiry-detail__facts > div:nth-child(2n) { border-right: 0; }
.shoot-inquiry-detail__facts > div:nth-last-child(-n+2) { border-bottom: 0; }
.shoot-inquiry-detail__facts dt { color: var(--text-tertiary); font-size: 10px; line-height: 16px; }
.shoot-inquiry-detail__facts dd { margin: 3px 0 0; color: var(--ink); font-size: 12px; font-weight: 600; line-height: 19px; word-break: break-word; }
.shoot-inquiry-detail__facts a { color: inherit; text-decoration: none; }
.shoot-inquiry-detail__message { margin-top: 14px; padding: 14px 15px; border-radius: 10px; background: #f8f8f9; }
.shoot-inquiry-detail__message small { color: var(--text-tertiary); font-size: 10px; line-height: 16px; }
.shoot-inquiry-detail__message p { margin: 4px 0 0; color: var(--ink); font-size: 12px; line-height: 20px; }
.shoot-inquiry-detail__notice { margin: 14px 0 0; color: var(--text-secondary); font-size: 11px; line-height: 18px; }

.shoot-inquiry-progress { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 5px; margin-top: 18px; }
.shoot-inquiry-progress > div { position: relative; display: grid; justify-items: center; gap: 5px; color: #b2b4b8; font-size: 10px; line-height: 16px; text-align: center; }
.shoot-inquiry-progress > div::before { content: ""; position: absolute; top: 12px; right: 50%; width: 100%; height: 1px; background: var(--line); z-index: 0; }
.shoot-inquiry-progress > div:first-child::before { display: none; }
.shoot-inquiry-progress span { position: relative; z-index: 1; display: grid; width: 25px; height: 25px; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: #fff; font-size: 10px; font-weight: 700; }
.shoot-inquiry-progress .is-done,
.shoot-inquiry-progress .is-current { color: var(--ink); }
.shoot-inquiry-progress .is-done span { border-color: var(--primary-border); background: var(--primary-surface); color: var(--primary); }
.shoot-inquiry-progress .is-current span { border-color: var(--primary); background: var(--primary); color: #fff; }

.shoot-inquiry-manage-head { align-items: end; }
.shoot-inquiry-filter { display: flex; flex-wrap: wrap; gap: 6px; }
.shoot-inquiry-filter button { min-height: 32px; padding: 5px 12px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--text-secondary); font-size: 11px; font-weight: 600; }
.shoot-inquiry-filter button.is-active { border-color: var(--primary); background: var(--primary); color: #fff; }
.shoot-inquiry-table__row { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: 6px 10px; padding: 12px 13px; }
.shoot-inquiry-table__row .shoot-inquiry-status { grid-row: 1 / 3; }
.shoot-inquiry-table__row strong { font-size: 13px; line-height: 20px; }
.shoot-inquiry-table__row > span:not(.shoot-inquiry-status) { grid-column: 2 / 3; color: var(--text-secondary); font-size: 11px; line-height: 17px; }
.shoot-inquiry-table__row small { grid-column: 3 / 4; grid-row: 1 / 3; color: var(--text-tertiary); font-size: 10px; }
.shoot-inquiry-admin-status { display: grid; gap: 7px; margin-top: 14px; }
.shoot-inquiry-admin-status > span { color: var(--ink); font-size: 12px; font-weight: 700; line-height: 18px; }
.shoot-inquiry-detail__actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 14px; }

@media (hover: hover) and (pointer: fine) {
	.open-date-public__brand-home:hover { opacity: .78; }
	.shoot-inquiry-list__item:hover,
	.shoot-inquiry-table__row:hover { border-color: var(--primary-border); }
	.shoot-inquiry-detail__studio-link:hover,
	.shoot-inquiry-detail__more:hover { border-color: var(--primary-border); background: var(--primary-surface); color: var(--primary); }
}

@media (max-width: 1024px) {
	.open-date-public__brand { margin-bottom: 18px; }
	.open-date-public__section-head { grid-template-columns: 4px minmax(0,1fr); gap: 9px; }
	.open-date-public__title-mark { width: 4px; height: 18px; background-size: 254px 18px; }
	.shoot-inquiry-hero { align-items: stretch; flex-direction: column; gap: 16px; }
	.shoot-inquiry-hero .fig-ui-button { align-self: flex-start; }
	.shoot-inquiry-customer-layout,
	.shoot-inquiry-admin-layout { grid-template-columns: minmax(0,1fr); }
	.shoot-inquiry-list,
	.shoot-inquiry-table { display: flex; overflow-x: auto; padding-bottom: 4px; scroll-snap-type: x proximity; scrollbar-width: none; }
	.shoot-inquiry-list::-webkit-scrollbar,
	.shoot-inquiry-table::-webkit-scrollbar { display: none; }
	.shoot-inquiry-list__item { flex: 0 0 min(82%,300px); scroll-snap-align: start; }
	.shoot-inquiry-table__row { flex: 0 0 min(82%,300px); scroll-snap-align: start; }
	.shoot-inquiry-manage-head { align-items: flex-start; }
	.shoot-inquiry-detail__actions { display: grid; grid-template-columns: 1fr; }
	.shoot-inquiry-detail__actions .fig-ui-button { width: 100%; }
}

@media (max-width: 430px) {
	.shoot-inquiry-hero h2 { font-size: 21px; line-height: 30px; }
	.shoot-inquiry-detail { padding: 16px; }
	.shoot-inquiry-detail__facts { grid-template-columns: minmax(0,1fr); }
	.shoot-inquiry-detail__facts > div,
	.shoot-inquiry-detail__facts > div:nth-child(2n),
	.shoot-inquiry-detail__facts > div:nth-last-child(-n+2) { border-right: 0; border-bottom: 1px solid var(--line); }
	.shoot-inquiry-detail__facts > div:last-child { border-bottom: 0; }
	.shoot-inquiry-progress strong { font-size: 9px; }
}
