/* isd-partners.css — Franchise & Partners 전용 (차일드 테마 /assets/css/)
 * 브랜드 토큰: Navy #25257E · i Red #E30613(CTA 전용) · 크림 #FAF7F1 · 구분선 #DDD8CE · 본문 #6B6B6B
 * 원칙: 모바일 우선 · Red 는 주 CTA 1개 · 카드 라운드 12px · 섹션 간격 48~64/80~96px */

:root {
  --isd-navy: #25257E; --isd-red: #E30613; --isd-cream: #FAF7F1; --isd-line: #DDD8CE; --isd-text: #6B6B6B;
}

/* ---------- FOUC 방지: GSAP 이 보이게 만들 때까지 숨김. GSAP 없으면(.isd-no-gsap) 즉시 표시 ---------- */
.isd-reveal, .isd-hero__title, .isd-hero__sub, .isd-hero__cta, .isd-section__title, .isd-mockup, .isd-glass { visibility: hidden; }
.isd-no-gsap .isd-reveal, .isd-no-gsap .isd-hero__title, .isd-no-gsap .isd-hero__sub, .isd-no-gsap .isd-hero__cta,
.isd-no-gsap .isd-section__title, .isd-no-gsap .isd-mockup, .isd-no-gsap .isd-glass { visibility: visible; }
@media (prefers-reduced-motion: reduce) {
  .isd-reveal, .isd-hero__title, .isd-hero__sub, .isd-hero__cta, .isd-section__title, .isd-mockup, .isd-glass { visibility: visible; }
}
.isd-split-line { overflow: hidden; }  /* SplitText mask 보조 */

/* ---------- HERO ---------- */
.isd-hero { position: relative; min-height: 88svh; display: flex; align-items: flex-end; overflow: hidden; color: #fff; }
.isd-hero__bg { position: absolute; inset: 0; will-change: transform; }
.isd-hero__bg img { width: 100%; height: 100%; object-fit: cover; }
/* WebGL 대신 CSS 그라디언트 오버레이 — 데스크톱에서만 은은히 움직임 */
.isd-hero__overlay {
  position: absolute; inset: 0;
  background: linear-gradient(160deg, rgba(37,37,126,.88) 0%, rgba(10,10,40,.55) 45%, rgba(0,0,0,.75) 100%);
}
@media (min-width: 1024px) and (prefers-reduced-motion: no-preference) {
  .isd-hero__overlay { background-size: 200% 200%; animation: isd-grad 14s ease-in-out infinite alternate; }
  @keyframes isd-grad { from { background-position: 0% 0%; } to { background-position: 100% 100%; } }
}
.isd-hero__inner { position: relative; padding: 96px 20px 64px; max-width: 1200px; margin: 0 auto; width: 100%; }
.isd-hero__title { font-size: clamp(28px, 6vw, 56px); line-height: 1.15; margin: 0 0 16px; }
.isd-hero__sub { font-size: 16px; line-height: 1.6; max-width: 640px; margin: 0 0 28px; opacity: .92; }
.isd-hero__cta { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; min-width: 44px;
  padding: 0 24px; border-radius: 8px; font-weight: 600; text-decoration: none; margin: 0 12px 12px 0; }
.isd-hero__cta--primary { background: var(--isd-red); color: #fff; }
.isd-hero__cta--secondary { border: 2px solid #fff; color: #fff; }

/* ---------- 공통 섹션 ---------- */
.isd-section { padding: 56px 20px; }
@media (min-width: 1024px) { .isd-section { padding: 88px 20px; } }
.isd-section__title { color: var(--isd-navy); font-size: clamp(22px, 4vw, 36px); line-height: 1.2; margin: 0 0 24px; }

/* ---------- 글래스모피즘 카드 (Digital / ERP) ---------- */
.isd-digital, .isd-erp { background: var(--isd-navy); color: #fff; }
.isd-glass {
  border-radius: 12px; padding: 24px;
  background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  transform-style: preserve-3d; /* vanilla-tilt */
}
.isd-glass h3 { font-size: 18px; margin: 0 0 8px; }
.isd-glass p { font-size: 15px; line-height: 1.6; opacity: .85; margin: 0; }
.isd-glass .js-tilt-glare { border-radius: 12px; }

/* ---------- 언어 토글 목업 ---------- */
.isd-mockup { border-radius: 12px; background: #fff; color: #111; overflow: hidden; border: 1px solid var(--isd-line); }
.isd-mockup__tabs { display: flex; gap: 4px; padding: 8px; background: var(--isd-cream); border-bottom: 1px solid var(--isd-line); overflow-x: auto; }
.isd-mockup__tabs button { min-width: 44px; min-height: 44px; padding: 0 12px; border-radius: 8px; border: 0; background: transparent; color: var(--isd-navy); font-weight: 600; cursor: pointer; }
.isd-mockup__tabs button[aria-pressed="true"] { background: var(--isd-navy); color: #fff; }
.isd-mockup__pane { padding: 20px; }

/* ---------- ERP 대시보드 막대 ---------- */
.isd-bar-track { height: 10px; border-radius: 999px; background: rgba(255,255,255,.15); overflow: hidden; }
.isd-bar { height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg, #fff 0%, #C7C9FF 100%); }
.isd-sync { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #4ADE80; margin-right: 6px; }
@media (prefers-reduced-motion: no-preference) {
  .isd-sync { animation: isd-pulse 1.6s ease-in-out infinite; }
  @keyframes isd-pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(74,222,128,.6);} 50% { box-shadow: 0 0 0 6px rgba(74,222,128,0);} }
}

/* ---------- Physical: CSS 3D 아이소메트릭 교실 (Coohom 렌더 확보 전 대체) ---------- */
.isd-iso { perspective: 1200px; }
.isd-iso__stage { transform: rotateX(55deg) rotateZ(-30deg); transform-style: preserve-3d; }
@media (min-width: 1024px) and (prefers-reduced-motion: no-preference) {
  .isd-iso__stage { animation: isd-spin 24s linear infinite; }
  @keyframes isd-spin { from { transform: rotateX(55deg) rotateZ(-30deg);} to { transform: rotateX(55deg) rotateZ(330deg);} }
}

/* ---------- Heritage ---------- */
.isd-quote { font-size: clamp(22px, 4vw, 34px); color: var(--isd-navy); line-height: 1.3; border-left: 4px solid var(--isd-red); padding-left: 20px; margin: 0 0 32px; }
.isd-counter { font-size: clamp(36px, 7vw, 64px); font-weight: 700; color: var(--isd-navy); font-variant-numeric: tabular-nums; }

/* ---------- 레이아웃 (templates/page.php) ---------- */
.isd-partners { color: #222; font-size: 16px; line-height: 1.6; overflow-x: clip; }
.isd-partners *, .isd-partners *::before, .isd-partners *::after { box-sizing: border-box; }
/* v1.1.0 풀블리드: Astra .ast-container(max 1240px) 안에서 화면 전체 폭으로 탈출.
 * --isd-vw 는 JS 가 clientWidth 로 세팅(스크롤바 폭 제외 → 가로 스크롤 방지). JS 전이면 100vw 폴백. */
.isd-partners { position: relative; width: var(--isd-vw, 100vw); left: 50%; margin-left: calc(var(--isd-vw, 100vw) / -2); }
.isd-wrap { max-width: 1440px; margin: 0 auto; }
.isd-wrap--narrow { max-width: 760px; }
.isd-section { padding-left: clamp(20px, 4vw, 64px); padding-right: clamp(20px, 4vw, 64px); }
.isd-hero__inner { max-width: 1440px; padding-left: clamp(20px, 4vw, 64px); padding-right: clamp(20px, 4vw, 64px); }
.isd-trust-bar__list { max-width: 1440px; padding-left: clamp(20px, 4vw, 64px); padding-right: clamp(20px, 4vw, 64px); }
@media (min-width: 1600px) { .isd-wrap { max-width: 1600px; } .isd-hero__inner, .isd-trust-bar__list { max-width: 1600px; } }
.isd-section__sub { max-width: 720px; margin: 0 0 32px; font-size: 17px; }
.isd-digital .isd-section__title, .isd-erp .isd-section__title { color: #fff; }
.isd-digital .isd-section__sub, .isd-erp .isd-section__sub { opacity: .85; }
.isd-hero__eyebrow { font-size: 13px; letter-spacing: .12em; text-transform: uppercase; opacity: .85; margin: 0 0 12px; }
.isd-hero__bg { background: linear-gradient(135deg, #25257E 0%, #0f0f3a 100%); } /* 사진 없을 때 폴백 */

.isd-trust-bar { background: var(--isd-cream); border-top: 1px solid var(--isd-line); border-bottom: 1px solid var(--isd-line); }
.isd-trust-bar__list { list-style: none; margin: 0 auto; padding: 16px 20px; max-width: 1200px; display: grid; gap: 8px 24px; grid-template-columns: 1fr 1fr; font-size: 14px; font-weight: 600; color: var(--isd-navy); }
@media (min-width: 1024px) { .isd-trust-bar__list { grid-template-columns: repeat(4, 1fr); text-align: center; } }

.isd-advantage__row { display: grid; grid-template-columns: 56px 1fr; gap: 16px; padding: 24px 0; border-top: 1px solid var(--isd-line); }
.isd-advantage__num { font-size: 32px; font-weight: 700; color: var(--isd-red); line-height: 1; }
.isd-advantage__body h3 { margin: 0 0 8px; font-size: 20px; color: var(--isd-navy); }
.isd-advantage__body p { margin: 0; color: var(--isd-text); }
@media (min-width: 1024px) {
  .isd-advantage__row { grid-template-columns: 80px 1fr; padding: 40px 0; }
  .isd-advantage__row:nth-child(even) { margin-left: 15%; } /* 비대칭 리듬 */
}

.isd-grid { display: grid; gap: 16px; grid-template-columns: 1fr; margin-top: 32px; }
@media (min-width: 768px) { .isd-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1024px) { .isd-grid { grid-template-columns: repeat(4, 1fr); gap: 20px; } }

.isd-mockup__brand { font-weight: 700; color: var(--isd-navy); margin-bottom: 12px; }
.isd-mockup__brand span { color: var(--isd-red); }
.isd-mockup__copy { margin: 0 0 16px; font-size: 18px; line-height: 1.5; }
.isd-mockup__btn { display: inline-block; padding: 10px 18px; border-radius: 8px; background: var(--isd-red); color: #fff; font-weight: 600; font-size: 14px; }

.isd-erp__dash { border-radius: 12px; padding: 20px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.14); max-width: 640px; }
.isd-erp__head { font-size: 13px; opacity: .85; margin-bottom: 14px; }
.isd-erp__row { display: grid; grid-template-columns: 1fr; gap: 6px; margin-bottom: 12px; font-size: 14px; }
@media (min-width: 768px) { .isd-erp__row { grid-template-columns: 200px 1fr; align-items: center; } }

.isd-physical__grid { display: grid; gap: 32px; grid-template-columns: 1fr; align-items: center; }
@media (min-width: 1024px) { .isd-physical__grid { grid-template-columns: 1fr 1fr; } }
.isd-physical__body h3 { color: var(--isd-navy); margin: 0 0 8px; font-size: 20px; }
.isd-physical__body p { color: var(--isd-text); margin: 0 0 24px; }
.isd-iso { height: 260px; display: flex; align-items: center; justify-content: center; }
.isd-iso__stage { position: relative; width: 220px; height: 160px; }
.isd-iso__floor { position: absolute; inset: 0; background: var(--isd-cream); border: 2px solid var(--isd-line); border-radius: 6px; }
.isd-iso__desk { position: absolute; width: 44px; height: 28px; background: var(--isd-navy); border-radius: 3px; transform: translateZ(14px); box-shadow: 0 14px 0 #14145a; }
.isd-iso__desk--1 { left: 24px; top: 40px; } .isd-iso__desk--2 { left: 88px; top: 40px; } .isd-iso__desk--3 { left: 24px; top: 96px; } .isd-iso__desk--4 { left: 88px; top: 96px; }
.isd-iso__board { position: absolute; right: 16px; top: 20px; width: 14px; height: 120px; background: var(--isd-red); transform: translateZ(40px); box-shadow: 0 40px 0 #9c0410; }

.isd-heritage { background: var(--isd-cream); }
.isd-heritage__p { max-width: 720px; color: var(--isd-text); margin: 0 0 32px; }
.isd-counters { display: grid; gap: 24px; grid-template-columns: 1fr; }
@media (min-width: 768px) { .isd-counters { grid-template-columns: repeat(3, 1fr); } }
.isd-counters small { display: block; color: var(--isd-text); font-size: 14px; margin-top: 4px; }

.isd-faq__item { border-top: 1px solid var(--isd-line); padding: 16px 0; }
.isd-faq__item summary { cursor: pointer; font-weight: 600; color: var(--isd-navy); font-size: 17px; list-style: none; padding-right: 32px; position: relative; min-height: 44px; display: flex; align-items: center; }
.isd-faq__item summary::after { content: '+'; position: absolute; right: 0; color: var(--isd-red); font-size: 24px; }
.isd-faq__item[open] summary::after { content: '–'; }
.isd-faq__item p { margin: 12px 0 0; color: var(--isd-text); }

/* ---------- v1.1.0 "이런 파트너를 찾습니다" 4카드 ---------- */
.isd-who { background: var(--isd-cream); }
.isd-who__grid { display: grid; gap: 16px; grid-template-columns: 1fr; }
@media (min-width: 768px) { .isd-who__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1200px) { .isd-who__grid { grid-template-columns: repeat(4, 1fr); gap: 20px; } }
.isd-who__card { background: #fff; border: 1px solid var(--isd-line); border-radius: 12px; padding: 28px 24px; display: flex; flex-direction: column; min-height: 100%; }
.isd-who__num { font-size: 13px; font-weight: 700; letter-spacing: .12em; color: var(--isd-red); margin-bottom: 12px; }
.isd-who__card h3 { font-size: 20px; line-height: 1.3; color: var(--isd-navy); margin: 0 0 10px; }
.isd-who__card p { color: var(--isd-text); font-size: 15px; margin: 0 0 20px; flex: 1; }
.isd-who__btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 18px; border-radius: 8px;
  border: 2px solid var(--isd-navy); color: var(--isd-navy); font-weight: 600; font-size: 14px; text-decoration: none; background: transparent; cursor: pointer; }
.isd-who__btn:hover { background: var(--isd-navy); color: #fff; }
.isd-who__note { margin: 20px 0 0; font-size: 14px; color: var(--isd-text); }

/* ---------- v1.1.0 학원 디자인 샘플 갤러리 (인라인 SVG 도면 + 실제 캠퍼스 사진) ---------- */
.isd-samples { display: grid; gap: 20px; grid-template-columns: 1fr; margin-top: 32px; }
@media (min-width: 768px) { .isd-samples { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1200px) { .isd-samples { grid-template-columns: repeat(3, 1fr); } }
.isd-sample { border: 1px solid var(--isd-line); border-radius: 12px; overflow: hidden; background: #fff; }
.isd-sample__media { position: relative; aspect-ratio: 3 / 2; background: var(--isd-cream); overflow: hidden; cursor: zoom-in; }
.isd-sample__media svg, .isd-sample__media img { width: 100%; height: 100%; display: block; object-fit: cover; }
.isd-sample__tag { position: absolute; left: 12px; top: 12px; background: var(--isd-navy); color: #fff; font-size: 12px; font-weight: 600; padding: 4px 10px; border-radius: 999px; }
.isd-sample__cap { padding: 14px 16px; font-size: 14px; color: var(--isd-text); }
.isd-sample__cap strong { color: var(--isd-navy); display: block; margin-bottom: 2px; }
/* 클릭 확대 (라이브러리 없음): 오버레이 1개 재사용 */
.isd-zoom { position: fixed; inset: 0; z-index: 99999; background: rgba(10,10,40,.92); display: none; align-items: center; justify-content: center; padding: 24px; cursor: zoom-out; }
.isd-zoom.is-open { display: flex; }
.isd-zoom > * { max-width: min(1600px, 96vw); max-height: 92vh; width: auto; height: auto; background: #fff; border-radius: 8px; }
.isd-zoom__close { position: fixed; top: 16px; right: 16px; width: 44px; height: 44px; border-radius: 50%; border: 0; background: #fff; color: var(--isd-navy); font-size: 22px; cursor: pointer; }

/* ---------- 폼 (Fluent Forms 보정) ---------- */
.isd-apply input, .isd-apply select, .isd-apply textarea { font-size: 16px !important; } /* iOS 자동확대 방지 */
.isd-apply .ff-btn-submit, .isd-apply .elementor-button { min-height: 48px; background: var(--isd-red) !important; border-color: var(--isd-red) !important; border-radius: 8px; }
