/* ============================================================================
   Focus Education — design.css
   디자인 토큰 (Figma 변수명 그대로 / 값은 Figma export 그대로)
   - Primitives  = Figma "Default" 모드 (원시 토큰)
   - Themes      = Figma "Light" 모드 (시맨틱 토큰, Primitives를 alias 참조)
   변경 시: 값은 Figma Primitives만 수정 → 시맨틱·컴포넌트로 자동 전파.
   ============================================================================ */

/* ---------------------------------------------------------------------------
   FONT — Pretendard Variable (jsDelivr 다이나믹 서브셋, 로딩속도 최적)
   ※ @font-face는 여기서 선언하지 않는다. 폰트 CSS는 각 페이지 <head>에서 로드:
     <link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
     <link rel="stylesheet"
       href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.css">
   - Variable(전 웨이트) + 실제 쓰는 글자만 로드 → 한글 폰트 부담 최소화.
   - font-weight 45~920 / font-display: swap (해당 CSS에 포함).
   - include 미사용이므로 위 두 줄을 모든 .html <head>에 직접 넣는다(헤더와 함께 복제).
   --------------------------------------------------------------------------- */

/* ============================================================================
   PRIMITIVES (Figma "Default" 모드) — 원시 토큰
   ============================================================================ */
:root {
    /* ---------- colors / primary (네이비 블루) ---------- */
    --primary-0:   #000000;
    --primary-10:  #062240;
    --primary-20:  #092B50;
    --primary-30:  #134579;
    --primary-40:  #205D9E;
    --primary-50:  #397DC6;
    --primary-60:  #6097D2;
    --primary-70:  #88B1DD;
    --primary-80:  #B0CBE8;
    --primary-90:  #D7E5F4;
    --primary-95:  #EBF2F9;
    --primary-99:  #FBFCFE;
    --primary-100: #FFFFFF;

    /* ---------- colors / secondary (골드/브라운) ---------- */
    --secondary-0:   #000000;
    --secondary-10:  #231A10;
    --secondary-20:  #47351F;
    --secondary-30:  #6A4F2F;
    --secondary-40:  #8E693E;
    --secondary-50:  #B1844E;
    --secondary-60:  #C19C71;
    --secondary-70:  #D0B595;
    --secondary-80:  #E0CEB8;
    --secondary-90:  #EFE6DC;
    --secondary-95:  #F7F3ED;
    --secondary-99:  #FDFDFB;
    --secondary-100: #FFFFFF;

    /* ---------- colors / tertiary (그린) ---------- */
    --tertiary-0:   #000000;
    --tertiary-10:  #082B21;
    --tertiary-20:  #0F5741;
    --tertiary-30:  #178262;
    --tertiary-40:  #1FAD83;
    --tertiary-50:  #26D9A3;
    --tertiary-60:  #52E0B6;
    --tertiary-70:  #7DE8C8;
    --tertiary-80:  #A8F0DA;
    --tertiary-90:  #D4F7ED;
    --tertiary-95:  #E9FBF6;
    --tertiary-99:  #FBFEFD;
    --tertiary-100: #FFFFFF;

    /* ---------- colors / neutral (웜 그레이) ---------- */
    --neutral-0:   #000000;
    --neutral-4:   #0A0A0A;
    --neutral-6:   #100F0F;
    --neutral-10:  #1A1A19;
    --neutral-12:  #1F1F1F;
    --neutral-17:  #2C2C2C;
    --neutral-20:  #343434;
    --neutral-22:  #393939;
    --neutral-24:  #3E3E3E;
    --neutral-87:  #DDDFE5;
    --neutral-90:  #E5E7ED;
    --neutral-92:  #ECEEF3;
    --neutral-94:  #F1F3F7;
    --neutral-95:  #F5F7FA;
    --neutral-96:  #F8FAFC;
    --neutral-98:  #FBFCFE;
    --neutral-100: #FFFFFF;

    /* ---------- colors / neutral-variant ---------- */
    --neutral-variant-0:   #000000;
    --neutral-variant-10:  #1A1A1A;
    --neutral-variant-20:  #333333;
    --neutral-variant-30:  #4D4D4D;
    --neutral-variant-40:  #666666;
    --neutral-variant-50:  #808080;
    --neutral-variant-60:  #999999;
    --neutral-variant-70:  #B2B2B2;
    --neutral-variant-80:  #CCCCCC;
    --neutral-variant-90:  #E5E5E5;
    --neutral-variant-95:  #F2F2F2;
    --neutral-variant-99:  #FCFCFC;
    --neutral-variant-100: #FFFFFF;

    /* ---------- colors / error ---------- */
    --error-0:   #000000;
    --error-10:  #330800;
    --error-20:  #660F00;
    --error-30:  #991700;
    --error-40:  #CC1F00;
    --error-50:  #FF2600;
    --error-60:  #FF5233;
    --error-70:  #FF7D66;
    --error-80:  #FFA899;
    --error-90:  #FFD4CC;
    --error-95:  #FFE9E5;
    --error-99:  #FFFBFA;
    --error-100: #FFFFFF;

    /* ---------- colors / lime ---------- */
    --lime-0:   #000000;
    --lime-10:  #263300;
    --lime-20:  #4D6600;
    --lime-30:  #739900;
    --lime-40:  #99CC00;
    --lime-50:  #BFFF00;
    --lime-60:  #CCFF33;
    --lime-70:  #D9FF66;
    --lime-80:  #E5FF99;
    --lime-90:  #F2FFCC;
    --lime-95:  #F9FFE5;
    --lime-99:  #FEFFFA;
    --lime-100: #FFFFFF;

    /* ---------- spacing (primitive, px) ---------- */
    --spacing-0:  0px;
    --spacing-2:  2px;
    --spacing-4:  4px;
    --spacing-8:  8px;
    --spacing-12: 12px;
    --spacing-16: 16px;
    --spacing-20: 20px;
    --spacing-24: 24px;
    --spacing-32: 32px;
    --spacing-40: 40px;
    --spacing-48: 48px;
    --spacing-56: 56px;
    --spacing-64: 64px;
    --spacing-80: 80px;
    --spacing-96: 96px;

    /* ---------- radius (primitive, px) — Figma 키=값 매핑 그대로 ---------- */
    --radius-0:    4px;
    --radius-4:    8px;
    --radius-8:    12px;
    --radius-12:   16px;
    --radius-16:   24px;
    --radius-24:   28px;
    --radius-full: 9999px;

    /* ---------- typography / family ---------- */
    --font-sans:  'Pretendard Variable', 'Pretendard';
    --font-serif: 'El Messiri';

    /* ---------- typography / size (px) ---------- */
    --font-size-11: 11px;
    --font-size-12: 12px;
    --font-size-13: 13px;
    --font-size-14: 14px;
    --font-size-16: 16px;
    --font-size-18: 18px;
    --font-size-20: 20px;
    --font-size-24: 24px;
    --font-size-28: 28px;
    --font-size-32: 32px;
    --font-size-40: 40px;
    --font-size-48: 48px;

    /* ---------- typography / weight (Pretendard) ---------- */
    --font-weight-light:     300;
    --font-weight-regular:   400;
    --font-weight-medium:    500;
    --font-weight-semibold:  600;
    --font-weight-bold:      700;
    --font-weight-extrabold: 800;
    --font-weight-black:     900;   /* 추천 프로그램 카드 제목(Figma program_item = Pretendard 900) */

    /* ---------- typography / line-height (unitless = %/100) ---------- */
    --line-height-100: 1;
    --line-height-120: 1.2;
    --line-height-125: 1.25;
    --line-height-130: 1.3;
    --line-height-150: 1.5;
    --line-height-160: 1.6;

    /* ---------- typography / letter-spacing (em = %/100) ---------- */
    --letter-spacing-0:     0em;
    --letter-spacing-5:     0.05em;
    --letter-spacing-neg-1: -0.01em;
    --letter-spacing-neg-2: -0.02em;
}

/* ============================================================================
   THEMES — Light (Figma "Light" 모드) — 시맨틱 토큰 (Primitives alias)
   ============================================================================ */
:root {
    /* ---------- bg ---------- */
    --bg-page:     var(--neutral-100);   /* #FFFFFF (raw) */
    --bg-card:     var(--neutral-98);
    --bg-sunken:   var(--neutral-95);
    --bg-raised-1: var(--neutral-94);
    --bg-raised-2: var(--neutral-92);
    --bg-raised-3: var(--neutral-90);
    --bg-input:    var(--neutral-90);
    --bg-inverse:  var(--neutral-20);
    --bg-hero:     #EAF6FF;              /* raw (alias 아님) */

    /* ---------- text ---------- */
    --text-default:        var(--neutral-4);
    --text-muted:          var(--neutral-variant-30);
    --text-light-muted:    var(--neutral-variant-50);
    --text-inverse:        var(--neutral-95);
    --text-white:          var(--neutral-100);
    --text-on-accent:      var(--neutral-100);
    --text-on-accent-soft: var(--primary-20);
    --text-on-muted-soft:  var(--secondary-70);
    --text-on-danger:      var(--neutral-100);
    --text-on-danger-soft: var(--error-40);
    --text-disabled:       var(--neutral-variant-70);
    --text-on-cta:         var(--neutral-100);
    --text-on-success:     var(--neutral-10);
    --text-on-highlight:   var(--neutral-10);
    --text-on-secondary:   var(--neutral-100);

    /* ---------- border ---------- */
    --border-strong: var(--neutral-variant-60);
    --border-subtle: var(--neutral-variant-80);
    --border-soft:   var(--neutral-variant-90);

    /* ---------- accent (= primary 네이비) ---------- */
    --accent-solid: var(--primary-20);
    --accent-soft:  var(--primary-95);

    /* ---------- muted ---------- */
    --muted-soft: var(--secondary-90);

    /* ---------- danger ---------- */
    --danger-solid: var(--error-60);
    --danger-soft:  var(--error-90);

    /* ---------- cta ---------- */
    --cta-solid: var(--primary-20);

    /* ---------- success ---------- */
    --success-solid: var(--tertiary-70);
    --success-soft:  var(--tertiary-95);

    /* ---------- highlight ---------- */
    --highlight-solid: var(--lime-60);
    --highlight-soft:  var(--lime-95);

    /* ---------- secondary (= 골드) ---------- */
    --secondary-solid:  var(--secondary-50);
    --secondary-border: var(--secondary-50);

    /* ---------- spacing (시맨틱) ---------- */
    --spacing-xs:     var(--spacing-4);
    --spacing-base:   var(--spacing-8);
    --spacing-sm:     var(--spacing-12);
    --spacing-md:     var(--spacing-16);
    --spacing-lg:     var(--spacing-20);
    --spacing-xl:     var(--spacing-24);
    --spacing-gutter: var(--spacing-16);
    --spacing-margin: var(--spacing-20);

    /* ---------- radius (시맨틱) ---------- */
    --radius-sm:      var(--radius-4);   /* 8px  */
    --radius-default: var(--radius-8);   /* 12px */
    --radius-md:      var(--radius-12);  /* 16px */
    --radius-lg:      var(--radius-16);  /* 24px */
    --radius-xl:      var(--radius-24);  /* 28px */
    /* --radius-full 은 primitive와 동일(9999px) */
}

/* ============================================================================
   BASE
   ============================================================================ */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }
/* scrollbar-gutter: stable 은 데스크톱(클래식 스크롤바)에서 스크롤바 등장/사라짐 시 콘텐츠 좌우 흔들림 방지용.
   모바일은 오버레이 스크롤바라 gutter 예약이 우측 빈 여백만 만들고 스크롤 시 스크롤바가 그 자리에 깜빡임 → 데스크톱에만 적용 */
@media (min-width: 1024px) { html { scrollbar-gutter: stable; } }

body {
    margin: 0;
    overflow-x: clip;   /* 추천프로그램 풀블리드 트랙이 모바일에서 가로 오버플로 → 가로 스크롤/레이아웃 폭 왜곡 방지 */
    font-family: var(--font-sans), -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', sans-serif;
    font-size: var(--font-size-16);
    font-weight: var(--font-weight-regular);
    line-height: var(--line-height-160);
    color: var(--text-default);
    background: var(--bg-page);
    word-break: keep-all;          /* 한글: 단어 단위 줄바꿈(단어 잘림 방지) */
    overflow-wrap: break-word;     /* 이메일 등 긴 토큰은 넘치지 않게 */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; }

/* ============================================================================
   TEXT STYLES (Figma 텍스트 스타일 = Themes typography 그대로)
   ============================================================================ */
.text-headline-xl {
    font-size: var(--font-size-28);
    font-weight: var(--font-weight-bold);        /* Bold */
    line-height: var(--line-height-120);
    letter-spacing: var(--letter-spacing-neg-2);
}
.text-headline-lg {
    font-size: var(--font-size-24);
    font-weight: var(--font-weight-semibold);     /* Semi Bold */
    line-height: var(--line-height-125);
    letter-spacing: var(--letter-spacing-neg-1);
}
.text-headline-md {
    font-size: var(--font-size-20);
    font-weight: var(--font-weight-semibold);     /* Semi Bold */
    line-height: var(--line-height-130);
    letter-spacing: var(--letter-spacing-0);
}
.text-body-lg {
    font-size: var(--font-size-16);
    font-weight: var(--font-weight-regular);
    line-height: var(--line-height-160);
}
.text-body-md {
    font-size: var(--font-size-14);
    font-weight: var(--font-weight-regular);
    line-height: var(--line-height-160);
}
.text-body-sm {
    font-size: var(--font-size-13);
    font-weight: var(--font-weight-regular);
    line-height: var(--line-height-150);
}
.text-label-md {
    font-size: var(--font-size-11);
    font-weight: var(--font-weight-semibold);     /* Semi Bold */
    line-height: var(--line-height-100);
    letter-spacing: var(--letter-spacing-5);
}

/* ============================================================================
   A11Y 유틸 (전 페이지 공통)
   ============================================================================ */
.skip_nav { position: absolute; top: -9999px; left: 0; }
.skip_nav:focus {
    top: 0; z-index: 9999; padding: 8px 16px;
    background: var(--accent-solid); color: var(--text-on-accent);
}
.sr_only {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* ============================================================================
   COMPONENTS (Figma 7:9171 "공통컴포넌트" 노드 스펙 그대로 추출)
   ============================================================================ */

/* ---------------- Button ---------------- */
.btn {
    display: inline-flex; align-items: center; justify-content: center;
    font-family: var(--font-sans); font-weight: var(--font-weight-semibold);
    border: 1px solid transparent; border-radius: var(--radius-default);
    white-space: nowrap; cursor: pointer; text-decoration: none;
    transition: background .15s, color .15s, border-color .15s, opacity .15s;
}
.btn:disabled, .btn.is-disabled { pointer-events: none; }
/* disabled (Figma 정확값) — solid */
.btn-primary:disabled, .btn-secondary:disabled, .btn-destructive:disabled, .btn-neutral:disabled,
.btn-primary.is-disabled, .btn-secondary.is-disabled, .btn-destructive.is-disabled, .btn-neutral.is-disabled
    { background: var(--bg-sunken); color: var(--text-disabled); }   /* #F5F7FA / #B2B2B2 (neutral도 통일) */
.btn-soft:disabled,    .btn-soft.is-disabled    { background: var(--accent-soft); color: var(--accent-solid); }  /* Figma=무변화 */
.btn-ghost:disabled,   .btn-ghost.is-disabled   { background: transparent; color: var(--text-disabled); }
/* disabled — outline (Figma 미정의 → 일관 규칙 추가): 투명 bg + 회색 테두리 + disabled 텍스트.
   outline 색 규칙(.btn-outline.btn-primary, 0,2,0)을 이기려고 변형별 복합선택자(0,3,0) 사용 */
.btn-outline.btn-primary:disabled,     .btn-outline.btn-secondary:disabled,
.btn-outline.btn-destructive:disabled, .btn-outline.btn-neutral:disabled,
.btn-outline.btn-primary.is-disabled,     .btn-outline.btn-secondary.is-disabled,
.btn-outline.btn-destructive.is-disabled, .btn-outline.btn-neutral.is-disabled
    { background: transparent; border-color: var(--border-subtle); color: var(--text-disabled); }
.btn svg { flex: none; }
/* 버튼 아이콘 크기 (Figma 인스턴스 크기) */
.btn-xs svg   { width: 14px; height: 14px; }
.btn-sm svg   { width: 16px; height: 16px; }
.btn-md svg   { width: 18px; height: 18px; }
.btn-base svg { width: 20px; height: 20px; }
.btn-lg svg   { width: 24px; height: 24px; }
.btn-xl svg   { width: 28px; height: 28px; }

/* sizes (height·padding·font-size·gap·radius — Figma 추출) */
.btn-xs   { height: 24px; padding: 0 8px;  font-size: 11px; gap: 4px;  border-radius: 8px;  }
.btn-sm   { height: 32px; padding: 0 16px; font-size: 11px; gap: 6px;  border-radius: 8px;  }
.btn-md   { height: 40px; padding: 0 16px; font-size: 14px; gap: 8px;  border-radius: 8px;  }
.btn-base { height: 48px; padding: 0 24px; font-size: 14px; gap: 8px;  border-radius: 12px; }
.btn-lg   { height: 56px; padding: 0 24px; font-size: 16px; gap: 8px;  border-radius: 12px; }
.btn-xl   { height: 64px; padding: 0 24px; font-size: 18px; gap: 12px; border-radius: 12px; }

/* solid variants */
.btn-primary     { background: var(--accent-solid);    color: var(--text-on-accent); }
.btn-secondary   { background: var(--secondary-solid);  color: var(--text-on-secondary); }
.btn-destructive { background: var(--danger-solid);     color: var(--text-on-danger); }
.btn-neutral     { background: var(--bg-sunken);        color: var(--text-muted); }
.btn-soft        { background: var(--accent-soft);      color: var(--text-on-accent-soft); }
.btn-ghost       { background: transparent;             color: var(--text-default); }
.btn-kakao-fill  { background: #F7E100;                 color: var(--text-default); }   /* 카카오 옐로우(브랜드) */
.btn-kakao-fill:hover { background: #E6D200; }

/* outline variants */
.btn-outline.btn-primary     { background: transparent; color: var(--accent-solid);    border-color: var(--accent-solid); }
.btn-outline.btn-secondary   { background: transparent; color: var(--secondary-solid); border-color: var(--secondary-solid); }
.btn-outline.btn-destructive { background: transparent; color: var(--danger-solid);    border-color: var(--danger-solid); }
.btn-outline.btn-neutral     { background: transparent; color: var(--text-default);    border-color: var(--border-subtle); }
/* SNS 아이콘 버튼: 아이콘 색만 muted(회색)로 — Figma 헤더/푸터 SNS */
.btn-icon.btn-sns { color: var(--text-muted); }

/* hover (Figma: secondary·neutral·ghost는 명시값 그대로 / primary·destructive·soft는
   Figma에서 default와 동일해 무변화 → 클릭 피드백 위해 1톤 darken 적용) */
.btn-primary:hover     { background: var(--primary-10); }   /* Figma=#092B50(동일) → darken */
.btn-secondary:hover   { background: var(--secondary-40); } /* Figma=#8E693E */
.btn-destructive:hover { background: var(--error-50); }     /* Figma=#FF5233(동일) → darken */
.btn-neutral:hover     { background: var(--neutral-92); }   /* Figma=#ECEEF3 */
.btn-soft:hover        { background: var(--primary-90); }   /* Figma=#EBF2F9(동일) → darken */
.btn-ghost:hover       { background: rgba(0,0,0,.14); }     /* Figma=검정 14% */
.btn-outline.btn-primary:hover     { background: var(--accent-soft); }
.btn-outline.btn-secondary:hover   { background: var(--secondary-95); }
.btn-outline.btn-destructive:hover { background: var(--danger-soft); }
.btn-outline.btn-neutral:hover     { background: var(--bg-sunken); }

/* 원형(rounded) 버튼 — 아이콘 전용 버튼을 원형으로 (size의 radius를 덮어씀) */
.btn-round { border-radius: var(--radius-full); }
/* icon-only (정사각) */
.btn-icon { padding: 0; }
.btn-icon.btn-xs   { width: 24px; }
.btn-icon.btn-sm   { width: 32px; }
.btn-icon.btn-md   { width: 40px; }
.btn-icon.btn-base { width: 48px; }
.btn-icon.btn-lg   { width: 56px; }
.btn-icon.btn-xl   { width: 64px; }

/* ---------------- Field (Input / Textarea 공통: 라벨 + 박스 + 헬퍼) ---------------- */
.field { display: flex; flex-direction: column; gap: 8px; }
.field-label { font-size: 14px; font-weight: var(--font-weight-semibold); color: var(--text-default); }
.field-help  { font-size: 13px; line-height: 1.5; color: var(--text-muted); }
.field.is-error .field-help { color: var(--danger-solid); }   /* Figma: 에러 헬퍼텍스트 = #FF5233 (테두리와 동일) */

/* Input box */
/* Figma: Input Box radius 8, 전 상태 border 1px. Initial=#CCCCCC, focus=#092B50, error=#FF5233 */
.input {
    display: flex; align-items: center; gap: 8px;
    width: 100%; height: 48px; padding: 0 16px;
    background: var(--bg-page); color: var(--text-default);
    border: 1px solid var(--border-subtle); border-radius: var(--radius-sm);
    font-family: var(--font-sans); font-size: 14px; line-height: 1.5;
    transition: border-color .15s;
}
.input::placeholder { color: var(--text-disabled); }   /* Figma Input state=Initial 플레이스홀더 = text/disabled #B2B2B2 */
.input-sm { height: 32px; padding: 0 12px; }
.input-md { height: 40px; }
.input:focus, .input:focus-visible { outline: none; border-color: var(--accent-solid); }
.field.is-error .input { border-color: var(--danger-solid); }
.input:disabled, .field.is-disabled .input {
    border-color: var(--border-subtle); background: var(--bg-sunken); color: var(--text-disabled); cursor: not-allowed;
}

/* Textarea (Input과 동일 테두리 규칙) */
.textarea {
    width: 100%; min-height: 120px; padding: 12px 16px; resize: vertical;
    background: var(--bg-page); color: var(--text-default);
    border: 1px solid var(--border-subtle); border-radius: var(--radius-sm);
    font-family: var(--font-sans); font-size: 14px; line-height: 1.6;
    transition: border-color .15s;
}
.textarea::placeholder { color: var(--text-light-muted); }
.textarea:focus, .textarea:focus-visible { outline: none; border-color: var(--accent-solid); }
.field.is-error .textarea { border-color: var(--danger-solid); }

/* ---------------- Chip / Tag (radius full, pad 8/16, fs14 fw500) ---------------- */
.chip {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 8px 16px; border-radius: var(--radius-full);
    font-size: 14px; font-weight: var(--font-weight-medium); line-height: 1.5;
}
.chip svg { width: 16px; height: 16px; flex: none; }
.chip-default { background: var(--secondary-95);   color: var(--secondary-solid); }  /* 골드 soft */
.chip-gold    { background: var(--secondary-solid); color: var(--text-on-secondary); }
.chip-navy    { background: var(--cta-solid);       color: var(--text-on-cta); }
.chip-grey    { background: var(--bg-sunken);       color: var(--neutral-20); }
.chip-danger  { background: var(--danger-solid);    color: var(--text-on-danger); }   /* 캠프 '마감임박' — Figma #FF5233 / 흰색 */

/* ---------------- Checkbox / Radio (label fs14, gap8 — 네이티브 accent) ---------------- */
/* 마크업: <label class="check"><span class="check-box"><input type=checkbox>
            <svg class="check-mark" viewBox="0 0 24 24"><use href="image/sprites.svg#check"></use></svg></span> 라벨</label>
   radio는 .check-mark 대신 <span class="radio-dot"></span> */
.check { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; line-height: 1.5; color: var(--text-default); cursor: pointer; }
.check-box { position: relative; width: 20px; height: 20px; flex: none; }
.check-box input {
    appearance: none; -webkit-appearance: none; position: absolute; inset: 0;
    width: 100%; height: 100%; margin: 0; background: var(--bg-page);
    border: 1.5px solid var(--border-strong); cursor: pointer;            /* 미선택 #999999 1.5px */
    transition: background .12s, border-color .12s;
}
.check-box input[type="checkbox"] { border-radius: 4px; }
.check-box input[type="radio"]    { border-radius: 50%; }
.check-box input:checked                 { border-color: var(--accent-solid); }
.check-box input[type="checkbox"]:checked { background: var(--accent-solid); }   /* 네이비 박스 */
.check-box input[type="radio"]:checked    { border-width: 2px; }                 /* 2px 네이비 링 */
/* 체크 마크(sprites #check, 흰색) / 라디오 점 — input 위에 겹쳐 표시 */
.check-mark, .radio-dot { position: absolute; inset: 0; margin: auto; pointer-events: none; opacity: 0; transition: opacity .12s; }
.check-mark { width: 14px; height: 14px; color: #fff; }
.radio-dot  { width: 8px; height: 8px; border-radius: 50%; background: var(--accent-solid); }
.check-box input[type="checkbox"]:checked ~ .check-mark { opacity: 1; }
.check-box input[type="radio"]:checked ~ .radio-dot     { opacity: 1; }
/* disabled */
.check-box input:disabled { border-color: var(--border-subtle); background: var(--bg-sunken); cursor: not-allowed; }
.check-box input[type="checkbox"]:checked:disabled { background: var(--text-disabled); border-color: var(--text-disabled); }
.check:has(input:disabled) { color: var(--text-muted); cursor: not-allowed; }

/* ---------------- Toast (H48, radius full, pad 12/16, fs16 fw500) ---------------- */
.toast {
    display: inline-flex; align-items: center; gap: 8px;
    height: 48px; padding: 12px 16px; border-radius: var(--radius-full);
    background: var(--bg-page); color: var(--text-default);
    font-size: 16px; font-weight: var(--font-weight-medium); line-height: 1.5;
    box-shadow: 0 4px 16px rgba(30,36,48,.16);   /* Figma DROP_SHADOW, border 없음 */
}
.toast .toast-ico { width: 24px; height: 24px; flex: none; }   /* image/circle-*.svg (자체 색 보유) */

/* ============================================================================
   COMPONENTS (추가) — Select / Modal / Datepicker
   Figma 공통컴포넌트 프레임엔 없으나 jw에서 기본 사용 → 포커스에듀 토큰으로 구성.
   ============================================================================ */

/* ---------------- Select (드롭다운) ----------------
   시각 스타일은 기존 컴포넌트를 그대로 재사용하고, 동작 훅만 .select-toggle(스타일 없음)로 붙인다.
   - 인풋형: <button class="input select-toggle">          (인풋 스타일 그대로 — 폼 입력용)
   - 버튼형: <button class="btn btn-* select-toggle">       (버튼 스타일 그대로 — 정렬·필터용)
   둘 다 안에 라벨 <span class="select-label"> + ▽ <svg class="chev">. 입력 스타일이 바뀌면 자동 반영. */
.select { position: relative; display: inline-block; }
.select:has(.select-toggle.input) { display: block; }              /* 인풋형은 폼 필드처럼 폭 100% */

.select-toggle { cursor: pointer; }
.select-toggle.input { justify-content: space-between; }           /* 라벨 좌 / ▽ 우 */
.select-toggle.is-placeholder { color: var(--text-light-muted); }  /* 인풋형 placeholder 색 */
.select.is-open .input.select-toggle { border-color: var(--accent-solid); }

/* 공통 chevron(▽): 열림 시 회전 */
.select .chev { transition: transform .15s; flex: none; }
.select-toggle.input .chev { width: 18px; height: 18px; color: var(--text-muted); }  /* 인풋형 ▽ (버튼형은 .btn svg가 크기·색 담당) */
.select-toggle.input .dp-ico { width: 18px; height: 18px; color: var(--text-muted); flex: none; }  /* 데이트피커 인풋 캘린더 아이콘(회전 안 함) */
.select.is-open .chev { transform: rotate(180deg); }
/* Dropdown menu (Figma: dropdown / dropdown_menu) — select 옵션 목록 + 독립 메뉴 공용.
   컨테이너 대각 라운드(0/24/0/24), 아이템 fs16/fw500/pad 12·16, hover #F5F7FA. */
.select-dropdown, .dropdown-menu {
    background: var(--bg-page); border: 1px solid var(--border-subtle);
    border-radius: 0 24px 0 24px; padding: 8px;
    box-shadow: 0 4px 16px rgba(30,36,48,.16);
}
.select-dropdown {
    position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 50;
    max-height: 280px; overflow-y: auto; display: none;
}
.select.is-open .select-dropdown { display: block; }
.dropdown-menu { display: inline-block; min-width: 200px; }   /* 독립 사용 시 */

.select-option, .dropdown-item {
    display: flex; align-items: center; gap: 8px; padding: 12px 16px;
    font-size: 16px; font-weight: var(--font-weight-medium); line-height: 1.4;
    color: var(--text-default); border-radius: var(--radius-sm); cursor: pointer;
}
.select-option:hover, .dropdown-item:hover,
.select-option.is-active, .dropdown-item.is-active { background: var(--bg-sunken); }   /* hover #F5F7FA */
.select-option.is-selected { background: var(--bg-sunken); color: var(--accent-solid); }  /* 선택(디자인은 hover만 정의 → 선택은 그레이+네이비) */
/* 첫/마지막 아이템 라운드 = 컨테이너 대각 라운드(0/24/0/24)에 맞춤 (24 − padding 8 = 16) */
.select-option:first-child, .dropdown-item:first-child { border-top-right-radius: 16px; }
.select-option:last-child,  .dropdown-item:last-child  { border-bottom-left-radius: 16px; }

/* 데이트피커 인풋 팝오버 (select 토글 메커니즘 재사용) */
.dp-popover { position: absolute; top: calc(100% + 4px); left: 0; z-index: 50; display: none; }
.select.is-open .dp-popover { display: block; }

/* ---------------- Modal ---------------- */
.modal-backdrop {
    position: fixed; inset: 0; z-index: 1000; display: flex;
    align-items: center; justify-content: center; padding: 20px;
    background: rgba(0,0,0,.2);
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s ease;   /* 자연스러운 페이드 */
}
.modal-backdrop.is-open { opacity: 1; visibility: visible; }
.modal {
    width: 100%; max-width: 480px; max-height: 90vh; overflow-y: auto;   /* 기본 = default */
    background: var(--bg-page); border-radius: var(--radius-md);
    box-shadow: 0 12px 40px rgba(30,36,48,.24);
    opacity: 0; transform: translateY(12px) scale(.97); transition: opacity .28s ease, transform .28s cubic-bezier(.2,.7,.3,1);   /* 등장: 살짝 떠오르며 */
}
.modal-backdrop.is-open .modal { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
    .modal-backdrop, .modal { transition: none; }
    .modal { transform: none; }
}
/* 모달 사이즈 (디자인엔 없으나 미리 준비 — 나중에 골라 쓰기) */
.modal-sm { max-width: 400px; }
.modal-md { max-width: 480px; }   /* = 기본 */
.modal-lg { max-width: 640px; }
.modal-xl { max-width: 800px; }
.modal-header {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 20px 24px; border-bottom: 1px solid var(--border-soft);
}
.modal-title { font-size: 20px; font-weight: var(--font-weight-semibold); color: var(--text-default); margin: 0; }
.modal-close {
    width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center;
    border: 0; background: transparent; color: var(--text-muted); border-radius: var(--radius-sm); cursor: pointer;
}
.modal-close:hover { background: var(--bg-sunken); color: var(--text-default); }
.modal-close svg { width: 20px; height: 20px; }
.modal-body { padding: 24px; font-size: 14px; line-height: 1.6; color: var(--text-default); }
.modal-footer { display: flex; justify-content: flex-end; gap: 8px; padding: 16px 24px; border-top: 1px solid var(--border-soft); }
/* 영상 모달 — 16:9 반응형 */
.modal-video { position: relative; max-width: min(960px, 92vw); width: 100%; background: transparent; box-shadow: none; overflow: visible; }
.video-frame { position: relative; width: 100%; aspect-ratio: 16 / 9; background: #000; border-radius: var(--radius-lg); overflow: hidden;}   /* radius 24 — Figma 유튜브 모달 427:37365 */
.video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
/* X 버튼: 영상 아래 가운데 + 반투명 흰 원형 56 */
.modal-video__close { position: absolute; left: 50%; transform: translateX(-50%); top: calc(100% + 20px); width: 56px; height: 56px; border-radius: var(--radius-full); display: inline-flex; align-items: center; justify-content: center; border: 0; background: rgba(255,255,255,.2); color: #fff; cursor: pointer; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); transition: background .15s; }
.modal-video__close:hover { background: rgba(255,255,255,.3); }
.modal-video__close svg { width: 32px; height: 32px; }   /* Figma 유튜브 모달 427:37365 = x 아이콘 32 */

/* 이미지 확대(라이트박스) 모달 — 상세 본문(관리자 등록 HTML)의 이미지 클릭 시. 동작은 js/design.js
   [모바일] 이미지를 화면에 통째로(contain) 맞춰 가운데 두는 '무대' — 핀치/스와이프(JS transform).
   [데스크톱] 가로폭 80% 로 크게 보고, 세로 긴 이미지는 컨테이너가 세로 스크롤. 확대는 −/+ 버튼(가로폭 확대). */
#imgModal { padding: 0; }   /* 무대=화면 전체. 배경 딤은 .modal-backdrop 기본값 사용(어두운 색 오버라이드 제거) */
.modal-image {
    width: 100vw; max-width: none; height: 100vh; height: 100dvh; max-height: none;
    display: flex; align-items: center; justify-content: center;
    overflow: hidden;                 /* 모바일: 세로 긴 이미지도 통째로 맞춰 스크롤 없음 */
    background: transparent; box-shadow: none; border-radius: 0;
    touch-action: none;               /* 스와이프·핀치·팬을 브라우저가 가로채지 않게 전부 JS로 */
}
/* 모바일 기본 = 가로폭(100%)에 맞춘다. 세로 긴 이미지는 그대로 길어지고, 위→아래로 팬(JS)해서 본다. 확대는 transform. */
.modal-image img {
    display: block; width: 100%; height: auto; max-width: 100%; max-height: none;
    border-radius: var(--radius-lg); transform-origin: center center;
    cursor: zoom-in; -webkit-user-drag: none; user-select: none; -webkit-user-select: none;
}
.modal-image.is-zoomed img { cursor: grab; }
/* [데스크톱] 두 가지 모드 — JS(fitDesktopImage)가 이미지 비율로 자동 선택.
   · 기본(FIT): 가로형·일반 비율은 80vw × 88vh 안에 통째로 맞춰(contain) 스크롤 없이 보여준다.
                패널이 이미지에 맞춰 줄고, 백드롭 flex 로 정중앙 정렬 → 상·하·좌·우 여백 균일.
   · .is-tall : 세로가 아주 긴 이미지(또는 확대 시)만 가로 80vw 로 키우고 세로 스크롤. */
@media (min-width: 768px) {
    .modal-image {
        display: flex; align-items: center; justify-content: center;
        width: auto; max-width: 80vw; height: auto; max-height: 88vh;
        overflow: hidden; -webkit-overflow-scrolling: touch;
        scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.35) transparent;
        border-radius: var(--radius-lg); touch-action: auto;
    }
    .modal-image img {
        display: block; width: auto; max-width: 80vw; height: auto; max-height: 88vh;   /* 통째로 맞춤(contain) — 뷰포트 단위라 부모 높이 미확정과 무관 */
        border-radius: var(--radius-lg); cursor: zoom-in; transform: none !important;
    }
    /* 세로 긴 이미지 / 확대 — 가로 80vw + 세로 스크롤 */
    .modal-image.is-tall {
        display: block; width: 80vw; max-width: 80vw; height: auto; max-height: 88vh;
        overflow: auto; scrollbar-gutter: stable both-edges;   /* 스크롤바 폭 양쪽 대칭 → 중앙 고정 */
    }
    .modal-image.is-tall img { width: 100%; max-width: none; max-height: none; }
    /* WebKit: 하얀 트랙 제거 + 은은한 thumb */
    .modal-image::-webkit-scrollbar { width: 10px; }
    .modal-image::-webkit-scrollbar-track { background: transparent; }
    .modal-image::-webkit-scrollbar-thumb { background: rgba(255,255,255,.35); border-radius: 8px; }
    .modal-image::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.55); }
    .modal-image.is-zoomed img { cursor: zoom-out; }
}

/* 좌우 이동 화살표 — 뷰포트 세로 중앙 고정. 1장뿐이면 JS 가 숨긴다(.is-single) */
.modal-image__nav { position: fixed; top: 50%; transform: translateY(-50%); width: 48px; height: 48px; border-radius: var(--radius-full); display: inline-flex; align-items: center; justify-content: center; border: 0; background: rgba(255,255,255,.2); color: #fff; cursor: pointer; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); transition: background .15s; z-index: 2; }
.modal-image__nav:hover { background: rgba(255,255,255,.35); }
.modal-image__nav svg { width: 28px; height: 28px; }
.modal-image__nav--prev { left: 20px; }
.modal-image__nav--next { right: 20px; }
/* 닫기 — 우상단 고정 */
.modal-image__close { position: fixed; top: 20px; right: 20px; width: 48px; height: 48px; border-radius: var(--radius-full); display: inline-flex; align-items: center; justify-content: center; border: 0; background: rgba(255,255,255,.2); color: #fff; cursor: pointer; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); transition: background .15s; z-index: 2; }
.modal-image__close:hover { background: rgba(255,255,255,.35); }
.modal-image__close svg { width: 28px; height: 28px; }
/* 하단 중앙 바 — 확대 컨트롤(−/값/+) + 현재 위치(3 / 20) */
.modal-image__bar { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); display: inline-flex; align-items: center; gap: 16px; z-index: 2; }
.modal-image__count { color: #fff; font-size: 14px; letter-spacing: .02em; white-space: nowrap; }
/* 확대 버튼 그룹 — 반투명 알약 */
.modal-image__zoom { display: inline-flex; align-items: center; gap: 4px; padding: 4px; border-radius: var(--radius-full); background: rgba(255,255,255,.2); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
.modal-image__zbtn { width: 32px; height: 32px; border: 0; border-radius: var(--radius-full); background: transparent; color: #fff; font-size: 20px; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; transition: background .15s; }
.modal-image__zbtn:hover { background: rgba(255,255,255,.25); }
.modal-image__zval { min-width: 46px; text-align: center; color: #fff; font-size: 13px; letter-spacing: .02em; }
/* 1장뿐이면 화살표·카운터 숨김(확대 버튼은 유지) */
.modal-image.is-single ~ .modal-image__nav { display: none; }
.modal-image.is-single ~ .modal-image__bar .modal-image__count { display: none; }
/* 모바일 — 좌우 스와이프로 넘기고 핀치로 확대하므로 화살표·확대버튼 숨김 */
@media (max-width: 767px) {
    .modal-image__nav { display: none; }
    .modal-image__zoom { display: none; }
}
/* 확대 가능한 이미지에 커서 표시 — 클릭 가능함을 알림 (캠프·연수 상세 + 커뮤니티 상세) */
.bo_sect__text img,
.bo_content img { cursor: zoom-in; }

/* ---------------- Datepicker (캘린더 팝오버) ---------------- */
.datepicker { width: 312px; padding: 16px; background: var(--bg-page); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); box-shadow: 0 4px 16px rgba(30,36,48,.16); }
.dp-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.dp-title { font-size: 14px; font-weight: var(--font-weight-semibold); color: var(--text-default); }
.dp-nav { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border: 0; background: transparent; color: var(--text-muted); border-radius: var(--radius-sm); cursor: pointer; }
.dp-nav:hover { background: var(--bg-sunken); color: var(--text-default); }
.dp-nav svg { width: 18px; height: 18px; }
.dp-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.dp-dow { text-align: center; font-size: 12px; color: var(--text-light-muted); padding: 6px 0; }
.dp-cell {
    aspect-ratio: 1/1; display: flex; align-items: center; justify-content: center;
    font-size: 13px; color: var(--text-default); border-radius: var(--radius-sm); cursor: pointer; border: 0; background: transparent;
}
.dp-cell:hover { background: var(--bg-sunken); }
.dp-cell.is-muted { color: var(--text-light-muted); }
.dp-cell.is-today { font-weight: var(--font-weight-semibold); color: var(--accent-solid); }
.dp-cell.is-selected { background: var(--accent-solid); color: var(--text-on-accent); }
.dp-cell:disabled { color: var(--text-disabled); cursor: not-allowed; background: transparent; }

/* ============================================================================
   PAGE 공통 레이아웃 — 헤더(GNB)·메가메뉴·aside 퀵바·히어로
   (A2: 헤더/푸터/메뉴는 각 페이지에 직접 삽입하되 동일 마크업 복제)
   ============================================================================ */

/* ---- 컨테이너 ---- */
.fe-container { box-sizing: content-box; max-width: 1440px; margin: 0 auto; padding: 0 20px; }   /* F1: 1440=콘텐츠 폭(패딩 별도) */
@media (min-width: 1024px) { .fe-container { padding: 0 40px; } }

/* ---- Header / GNB ---- */
.site-header { position: fixed; inset: 0 0 auto 0; z-index: 200; background: var(--bg-page); }
/* 고정 헤더 높이만큼 본문 오프셋 → 헤더와 히어로 사이 빈 마진 없이 딱 붙음 */

/* 헤더 풀폭 — 히어로(인셋 clamp)와 동일 좌우 여백으로 정렬 */
.site-header__row { display: flex; align-items: center; justify-content: space-between; gap: 20px; height: 72px; padding: 0 clamp(16px, 4.17vw, 80px); }
@media (min-width: 1200px) { .site-header__row { height: 112px; } }
.gnb { display: none; height: 100%; }
@media (min-width: 1200px) { .gnb { display: flex; } }   /* 1024~1199는 GNB(7항목)+로고+SNS가 물리적으로 안 들어가 넘침 → 햄버거 유지 */
/* Figma: nav fs20 / fw500(medium) / #0A0A0A, gnb_1li 좌우 패딩 20 */
.gnb-link { position: relative; display: inline-flex; align-items: center; height: 100%; padding: 0 20px; font-size: 20px; font-weight: var(--font-weight-medium); color: var(--text-default); white-space: nowrap; transition: color .15s; }
.gnb-link:hover { color: var(--accent-solid); }
/* Figma(gnb_1li): active = 글자색 그대로(#0A0A0A) + 골드(secondary/50) 2px 밑줄.
   밑줄 폭은 좌우 패딩(20)을 제외한 '글자 폭'만 — Figma의 Frame 85(텍스트 래퍼)에 border-bottom이 붙어 있음 */
.gnb-link[aria-current="page"] { color: var(--text-default); }
.gnb-link[aria-current="page"]::after { content: ''; position: absolute; left: 20px; right: 20px; bottom: 0; height: 2px; background: var(--secondary-50); }
/* 1200~1559: Figma 원본(로고240+GNB870+SNS302)이 아직 안 들어가는 구간 →
   GNB를 압축하고 SNS 아이콘 3개는 숨긴다(카카오톡 상담 CTA는 유지). 1560+는 Figma 그대로. */
@media (max-width: 1559px) {
    .gnb-link { padding: 0 10px; font-size: 16px; }
    .gnb-link[aria-current="page"]::after { left: 10px; right: 10px; }
    .site-header__row .btn-sns { display: none; }
}
/* 소셜 48x48 투명+#CCCCCC 테두리 원형 */
.social-btn { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: var(--radius-full); border: 1px solid var(--border-subtle); color: var(--text-muted); transition: background .15s; }
.social-btn:hover { background: var(--bg-sunken); }
.social-btn svg { width: 22px; height: 22px; }
/* 헤더 카카오 = 아웃라인 핀(투명+#CCCCCC 테두리, 다크 텍스트+chevron) — 히어로 카카오(네이비)와 다름 */
.btn-kakao { display: inline-flex; align-items: center; gap: 8px; height: 48px; padding: 0 24px; border-radius: var(--radius-full); border: 1px solid var(--border-subtle); background: transparent; color: var(--text-default); font-size: 14px; font-weight: var(--font-weight-semibold); white-space: nowrap; }   /* B1: Figma 14 */
.btn-kakao:hover { background: var(--bg-sunken); }
.btn-kakao svg { width: 20px; height: 20px; }   /* B1: Figma 20 */
.btn-kakao .chev { width: 18px; height: 18px; color: var(--text-muted); }

/* ---- Mega menu (nav hover 시 전체폭 드롭다운) ---- */
.gnb-zone { position: static; }
/* 메가메뉴: 흰 패널(상단) + 하단 반투명 블랙 오버레이(모바일 메뉴와 동일), border-top 없음 */
.mega { position: fixed; left: 0; right: 0; top: 72px; bottom: 0; background: rgba(0,0,0,.4); opacity: 0; visibility: hidden; transition: opacity .2s, visibility .2s; }
@media (min-width: 1200px) { .mega { top: 112px; } }
.site-header.is-mega .mega { opacity: 1; visibility: visible; }
.mega__grid { background: var(--bg-page); padding: 40px 0 56px; box-shadow: 0 16px 28px rgba(30,36,48,.08); transform: translateY(-8px); transition: transform .2s; }
.mega__inner { max-width: 1440px; margin: 0 auto; padding: 0 clamp(16px, 4.17vw, 80px); display: grid; grid-template-columns: repeat(4, 1fr); gap: 40px; }
.site-header.is-mega .mega__grid { transform: none; }
.mega__title { font-size: 18px; font-weight: var(--font-weight-bold); color: var(--text-default); padding-bottom: 16px; border-bottom: 1px solid var(--border-soft); margin-bottom: 12px; }
.mega__link { display: block; padding: 7px 0; font-size: 15px; color: var(--text-muted); transition: color .15s; }
.mega__link:hover { color: var(--accent-solid); }

/* ---- Aside 퀵바 (우측 고정) ---- */
.aside-quick { position: fixed; right: 16px; top: 50%; transform: translateY(-50%); z-index: 210; width: 104px; padding: 32px 8px 0; display: flex; flex-direction: column; align-items: center; gap: 24px; background: var(--bg-page); border: 1px solid var(--border-subtle); border-radius: 0 16px 0 16px; box-shadow: 0 8px 28px rgba(30,36,48,.14); overflow: hidden; }   /* Figma rc 0/16/0/16, 내부 px8 py32 gap24 */
.aside-quick__item { display: flex; flex-direction: column; align-items: center; gap: 8px; width: 88px; font-size: 14px; color: var(--text-muted); transition: color .15s; }
.aside-quick__item svg { width: 32px; height: 32px; color: var(--text-default); transition: color .15s; }
.aside-quick__item:hover, .aside-quick__item:hover svg { color: var(--accent-solid); }
/* Top: design_system 버튼(.btn-base .btn-neutral) 그대로 + aside 전체폭으로 확장(좌우 패딩 밖으로) + 모서리 라운드 제거(컨테이너가 클리핑) */
.aside-quick__top { width: calc(100% + 16px); margin: 0 -8px; border-radius: 0; gap: 4px; }
@media (max-width: 1199px) { .aside-quick { display: none; } }

/* ---- Hero (캐러셀) — Figma: 인셋(좌우 80 띄움) + radius 24/24/24/0, 가운데 정렬, 오버레이 검정 20% ---- */
.hero { position: relative; min-height: 700px; color: #fff; overflow: hidden; contain: paint; margin: 0 max(20px, calc(50vw - 880px)); border-radius: 24px 24px 24px 0; }   /* Figma: tl/tr/br 24, bl 0. 좌우 인셋은 통계/프로그램 밴드 ::before와 동일 기준(50vw-880)으로 맞춰 좌측 정렬 일치(1920 외 폭에서 어긋남 방지) */
/* contain:paint — 켄번스 줌(.hero__bg scale 1.08)이 will-change:transform로 GPU 레이어가 돼 모바일에서 overflow:hidden 클립을 벗어나 옆이 하얗게 깜빡이던 것을 박스 안으로 강제 클립 */
/* inset:-2px — 배경을 클립 박스보다 2px 크게. 켄번스 줌(scale 1→1.08, 중앙기준)에서 가장자리가
   항상 클립 경계 바깥에 놓여, 매 프레임 재래스터 시 생기던 1px 흰 seam(둥근모서리·소수줌 배율에서 특히)을 원천 차단 */
.hero__bg { position: absolute; inset: -2px; background-size: cover; background-position: center; }
.hero__bg::after { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,.2); }   /* Figma: SOLID #000 @20% */
/* 켄번스: 활성 슬라이드 배경이 천천히 줌인(슬라이드 전환마다 재생). overflow:hidden(.hero)로 클리핑 */
.hero__bg { transform: scale(1); will-change: transform; }
.hero-slide.is-active .hero__bg { animation: heroZoom 7s ease-out forwards; }
@keyframes heroZoom { from { transform: scale(1); } to { transform: scale(1.08); } }
@media (prefers-reduced-motion: reduce) { .hero-slide.is-active .hero__bg { animation: none; } }
.hero__inner { position: relative; min-height: 700px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.hero__badge { display: inline-flex; align-items: center; padding: 8px 16px; background: var(--secondary-solid); color: #fff; font-size: 18px; font-weight: var(--font-weight-semibold); line-height: 1.4; border-radius: 0 12px 0 12px; }   /* 골드 배지, Figma rc 0/12/0/12 */
.hero__title { margin-top: 32px; font-size: 40px; font-weight: var(--font-weight-extrabold); line-height: 1.4; letter-spacing: 0; text-shadow: 0 4px 11px rgba(0,0,0,.25); }   /* E2: Figma 그림자 0 4 11 / .25 */
.hero__label { margin-top: 24px; font-size: 24px; font-weight: var(--font-weight-medium); line-height: 1.6; text-shadow: 0 1px 6px rgba(0,0,0,.4); }   /* fs24/fw500/lh38.4 */
/* 히어로 버튼은 design_system .btn (btn-lg btn-primary / btn-neutral) 사용 — 별도 클래스 없음 */
/* 2슬라이드 (페이드) */
.hero-slide { position: absolute; inset: 0; display: flex; align-items: center; opacity: 0; transition: opacity .6s ease; pointer-events: none; }
.hero-slide.is-active { opacity: 1; pointer-events: auto; }
.hero-num { opacity: .55; }
.hero-num.is-on { opacity: 1; }
/* 캐러셀 컨트롤 (하단 좌측, 공통) */
.hero-bottom { position: absolute; left: 0; right: 0; bottom: 0; z-index: 6; }
.hero-carousel { display: flex; align-items: center; }
.hero-nav { width: 72px; height: 72px; display: inline-flex; align-items: center; justify-content: center; color: #fff; }
.hero-nav--prev { background: var(--accent-solid); }    /* 네이비 #092B50 */
.hero-nav--next { background: var(--secondary-solid); border-top-right-radius: 12px; } /* 골드 #B1844E, 우상단 radius 12 (Figma) */
.hero-nav svg { width: 24px; height: 24px; }
.hero-pager { display: flex; align-items: center; gap: 12px; padding-left: 24px; color: #fff; font-size: 18px; font-weight: var(--font-weight-semibold); }
.hero-pager__bar { position: relative; display: block; width: 120px; height: 2px; background: rgba(255,255,255,.1); }   /* A1: Figma 흰10% */
.hero-pager__bar > i { position: absolute; left: 0; top: 0; height: 100%; width: 50%; background: var(--secondary-solid); }
@media (max-width: 1023px) {
    .hero { min-height: 480px; margin: 0; border-radius: 0; }   /* 모바일: 양옆 마진·radius 없음(풀블리드) */
    .hero__inner { min-height: 480px; padding: 56px 0 88px; }
    .hero__badge { font-size: 14px; }
    .hero__title { font-size: 26px; margin-top: 20px; }
    .hero__label { font-size: 16px; margin-top: 16px; }
    /* 모바일: 캐러셀 컨트롤 축소(디자인상 모바일에도 표시) */
    .hero-nav { width: 56px; height: 56px; }
    .hero-nav svg { width: 20px; height: 20px; }
    .hero-pager { padding-left: 16px; gap: 8px; font-size: 14px; }
    .hero-pager__bar { width: 80px; }
    /* (밴드 풀블리드는 .stats-band 기본정의 뒤쪽 모바일 블록에서 처리 — D9 순서 버그 방지) */
}

/* ============================================================================
   메인 페이지 섹션 (통계·왜포커스·단계·프로그램·유튜브·CTA·푸터·모바일 드로어)
   ============================================================================ */
.sect { padding: 120px 0; }
.sect-eyebrow { font-size: 24px; font-weight: var(--font-weight-bold); color: var(--secondary-solid); }   /* PROGRAMS/WHY FOCUS */
.sect-title { font-size: 40px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }   /* C7: Figma lh 1.4 */
.sect-sub { font-size: 20px; color: var(--text-muted); line-height: 1.6; }

/* 히어로 타임라인 (5초 0→100%) */
.hero-pager__bar > i { width: 0; animation: heroTimeline 5s linear infinite; }
@keyframes heroTimeline { from { width: 0; } to { width: 100%; } }

/* 통계바 — 네이비 밴드(1840), 좌하단만 radius 28, 커스텀 아이콘 */
/* 통계 밴드: 콘텐츠는 .fe-container로 1440 정렬, 밴드 배경만 좌측 인셋~우측 풀블리드 (::before) — .prog-band와 동일 패턴.
   ::before인 이유: margin-left를 주면 안쪽 .fe-container가 같이 밀려 본문만 다른 섹션과 어긋난다(Figma 528:13092 밴드 x=80 / 528:13093 콘텐츠 x=240 = 타 섹션과 동일). max(20px,…) 이유는 .prog-band::before 주석 참고 */
.stats-band { position: relative; }
.stats-band::before { content: ''; position: absolute; top: 0; bottom: 0; left: max(20px, calc(50vw - 880px)); right: 0; background: var(--primary-10); border-radius: 0 0 0 28px; z-index: 0; }
.stats-band > .fe-container { position: relative; z-index: 1; }
.stat { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 24px; }
.stat img { width: 72px; height: 72px; }
.stat__text { display: flex; flex-direction: column; gap: 12px; }
.stat__num { font-size: 36px; font-weight: var(--font-weight-bold); color: #fff; }
.stat__label { font-size: 20px; font-weight: var(--font-weight-medium); color: #fff; }
/* A3: 데스크탑 통계 칸 사이 세로 구분선 (Figma border-r 흰10%) */
@media (min-width: 1024px) { .stat:not(:last-child) { border-right: 1px solid rgba(255,255,255,.1); } }
/* 모바일: 통계 = 가로 리스트(아이콘 | 숫자 | 라벨) 4행 */
@media (max-width: 1023px) {
    /* D8: 모바일 통계 = 행마다 가로 구분선 + py12, num↔label nowrap 좌우정렬 */
    .stat { flex-direction: row; align-items: center; text-align: left; gap: 20px; padding: 20px 8px; border-bottom: 1px solid rgba(255,255,255,.1); }   /* #4: py20 → 행 간 40px */
    .stat:last-child { border-bottom: 0; }
    .stat img { width: 48px; height: 48px; }
    .stat__text { flex: 1; flex-direction: row; align-items: center; justify-content: space-between; gap: 12px; white-space: nowrap; }
    .stat__num { font-size: 22px; }   /* D2: Figma 22 */
    .stat__label { font-size: 14px; text-align: right; }
}

/* WHY 카드 (Figma: 회색 #F1F3F7 카드, Why0X 라벨 + 흰 사각 아이콘 우상단, 280 높이) */
.why-card { display: flex; flex-direction: column; justify-content: space-between; height: 280px; padding: 32px; background: var(--neutral-94); border-radius: 0 24px 0 24px; overflow: hidden; }   /* Figma rc 0/24/0/24, h280 overflow-clip */
.why-card__no { font-size: 20px; font-weight: var(--font-weight-bold); line-height: 1.4; color: var(--neutral-variant-70); }
.why-card__icon { width: 64px; height: 64px; border-radius: var(--radius-default); background: var(--bg-page); display: flex; align-items: center; justify-content: center; flex: none; }   /* Figma 12 */
.why-card__icon svg { width: 32px; height: 32px; color: var(--text-default); }
.why-card__title { font-size: 20px; font-weight: var(--font-weight-bold); line-height: 1.4; color: var(--text-default); }
.why-card__desc { font-size: 16px; color: var(--text-muted); line-height: 1.5; }
/* 데스크톱(lg+) 스태거: 좌측 열(1·3번 카드) 72px 아래로 (Figma). 그 이하는 1열(겹침 방지)
   margin-top으로 처리 → 그리드 실제 높이에 72px 반영(섹션 하단 간격이 잠식되지 않게, #1 간격 정확화) */
/* #5: 스태거를 margin-top(그리드 행높이 잠식)→ position relative/top(레이아웃 불변, 간격 균일) */
@media (min-width: 1024px) { .why-grid > .why-card:nth-child(odd) { position: relative; top: 72px; } }

/* 유학 단계 — 288 회색 원(#F1F3F7) 안에 커스텀 아이콘+이름+설명 */
/* 항상 정원 유지(절대배치 inner) — grid 늘림/내용에 의한 찌그러짐 방지 */
/* flex-wrap + min-width 180 → 한 줄에 들어갈 만큼 채우고 자연스럽게 아래로 줄바꿈, 높이 동일(aspect-ratio) */
.step-circle { position: relative; width: 100%; max-width: 288px; margin: 0 auto; aspect-ratio: 1 / 1; align-self: start; border-radius: var(--radius-full); background: var(--neutral-94); }   /* grid 셀 채움 — 혼자 남아도 안 커짐 */
.step-circle__in { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 24px; }
.step-circle img { width: 56px; height: 56px; object-fit: contain; margin-bottom: 10px; }   /* Figma 아이콘 56(정사각 프레임째 내보냄), 아이콘→텍스트 gap 10. contain=비정사각도 안 찌그러짐 */
.step__no { font-size: 16px; font-weight: var(--font-weight-bold); color: var(--accent-solid); line-height: 1.5; }   /* Step 0X 라벨(네이비) */
.step__title { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); margin-top: 8px; }
.step__desc { font-size: 16px; color: var(--text-muted); line-height: 1.5; margin-top: 8px; }
@media (max-width: 640px) {
    .step-circle { max-width: none; }   /* 모바일: 그리드 셀 꽉 채움(Figma 175) */
    .step-circle__in { padding: 16px; }
    .step-circle img { width: 48px; height: 48px; margin-bottom: 8px; }
    .step__desc { font-size: 14px; }
}
@media (max-width: 375px) {
    .step-circle__in { padding: 16px; }
    .step-circle img { width: 40px; height: 40px; margin-bottom: 4px; }
    .step__no {font-size: 14px;}
    .why-card__title, .step__title{font-size: 14px !important;margin-top: 4px;}
    .step__desc { font-size: 12px; margin-top: 4px;}
}

/* 프로그램 — 회색 밴드(#F1F3F7, 좌하단 r28) + 6장 캐러셀, 카드 대각 radius */
/* 회색 밴드: 콘텐츠는 .fe-container로 1440 정렬, 밴드 배경만 좌측 인셋(80)~우측 풀블리드 (::before) */
.prog-band { position: relative; overflow-x: clip; }
.prog-band::before { content: ''; position: absolute; top: 0; bottom: 0; left: max(20px, calc(50vw - 880px)); right: 0; background: var(--neutral-94); border-radius: 0 0 0 28px; z-index: 0; }   /* 콘텐츠(.fe-container)보다 160 왼쪽에서 시작 → 우측 풀블리드. max(20px,…): 1920에서 정확히 80(Figma), 1760 미만에선 음수가 돼 좌측 마진·라운드가 화면 밖으로 나가므로 20 바닥값 */
.prog-band > .fe-container { position: relative; z-index: 1; }
/* 트랙: 우측 화면 끝까지 확장(밴드 풀블리드)해 다음 카드가 살짝 보이게(peek) + 가로 스크롤 슬라이드 */
.prog-track { display: flex; gap: 24px; overflow-x: auto; scroll-behavior: smooth; scrollbar-width: none; margin-right: calc(50% - 50vw); padding-right: clamp(16px, 4.17vw, 80px); cursor: grab; scroll-snap-type: x mandatory; }   /* 스와이프 한 칸씩 스냅 */
.prog-track::-webkit-scrollbar { display: none; }
.prog-track.is-dragging { cursor: grabbing; scroll-behavior: auto; user-select: none; }
.prog-card { width: 342px; flex: none; background: var(--bg-page); border-radius: 0 24px 0 24px; padding: 24px; scroll-snap-align: start; }
.prog-card__link { display: block; color: inherit; text-decoration: none; }
.prog-card__img { aspect-ratio: 294 / 167; border-radius: 0 16px 0 16px; background-size: cover; background-position: center; }   /* 고정높이 대신 비율 → 카드 폭 따라 같이 축소 (PC 294×167) */
.prog-card__title { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); }
.prog-card__desc { font-size: 16px; color: var(--text-muted); line-height: 1.6; }
/* 페이지네이션: 01 — 골드 프로그레스 — 06 + 원형 화살표 */
.prog-pager { display: flex; align-items: center; gap: 16px; }
.prog-pager__num { font-size: 18px; font-weight: var(--font-weight-semibold); color: var(--text-default); }
.prog-pager__bar { position: relative; width: 120px; height: 2px; background: var(--border-subtle); }
.prog-pager__bar > i { position: absolute; left: 0; top: 0; height: 100%; background: var(--secondary-solid); }
/* prog-nav: 디자인시스템 .btn(btn-base btn-icon btn-round btn-ghost) 사용 — 아이콘 크기만 보정 */
.prog-nav svg { width: 24px; height: 24px; }
@media (max-width: 640px) { .prog-card { width: 240px;padding: 16px; } }   /* D4: Figma 모바일 240 */

/* 유튜브 — 썸네일 대각 radius(0/16/0/16), 좌측 큰 영상 0/24/0/24 */
.yt-thumb { border-radius: 0 16px 0 16px; background-size: cover; background-position: center; position: relative; overflow: hidden; }
.yt-thumb--lg { aspect-ratio: 853 / 478; border-radius: 0 24px 0 24px; }
.yt-badge { position: absolute; right: 20px; bottom: 20px; padding: 8px 16px; border-radius: var(--radius-full); background: rgba(0,0,0,.2); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); color: #fff; font-size: 14px; font-weight: 500; }
.yt-play { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); width: 56px; height: 56px; border-radius: var(--radius-full); background: rgba(0,0,0,.2); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; }
.yt-play svg, .yt-play img { width: 24px; height: 24px; color: #fff; }
.yt-title { font-size: 20px; font-weight: var(--font-weight-bold); line-height: 1.4; color: var(--text-default); display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.yt-meta { font-size: 14px; color: var(--text-light-muted); }
/* 오른쪽 영상 리스트: 컨테이너 위아래 선(#999) + 상하 패딩 20 (Figma Frame 41) */
.yt-list { display: flex; flex-direction: column; padding: 20px 0; border-top: 1px solid var(--border-strong); border-bottom: 1px solid var(--border-strong); }
.yt-list-item { display: flex; gap: 20px; align-items: flex-start; padding: 20px 0; }
.yt-list-item .yt-thumb { width: 190px; height: 106px; flex: none; }
.yt-list-item .yt-play { width: 48px; height: 48px; }
.yt-list-item .yt-play svg, .yt-list-item .yt-play img { width: 20px; height: 20px; }
.yt-list-item__body { display: flex; flex-direction: column; gap: 12px; min-width: 0; flex: 1; }
/* 모바일: 리스트 위아래 선 제거 + 패딩 축소 */
@media (max-width: 1023px) {
    .yt-list { border: 0; padding: 0; }
    .yt-list-item { padding: 12px 0; }
    .yt-list-item .yt-thumb { width: 140px; height: 78px; }
    .yt-list-item .yt-play { width: 36px; height: 36px; }
    .yt-list-item .yt-play svg, .yt-list-item .yt-play img { width: 15px; height: 15px; }
    .yt-meta { font-size: 13px; }   /* #2: 모바일 유튜브 변형 meta 13 */
}

/* CTA (#062240) */
.cta { background: var(--primary-10); }
.cta__title { font-size: 40px; font-weight: var(--font-weight-bold); color: #fff; line-height: 1.3; }
.cta__sub { font-size: 20px; color: #fff; line-height: 1.6; }
/* CTA 버튼은 디자인시스템 .btn 클래스 사용. 네이비 배경이라 아웃라인 전화버튼만 흰색으로 보정 */
.cta .btn-outline.btn-neutral { color: var(--text-white); border-color: rgba(255,255,255,.5); }
.cta .btn-outline.btn-neutral:hover { background: rgba(255,255,255,.12); }

/* 푸터 (#F1F3F7) */
.footer { background: var(--neutral-94); }
.footer__coltitle { font-size: 18px; font-weight: var(--font-weight-semibold); line-height: 1.4; color: var(--text-default); padding: 12px 0; }
.footer__link { display: block; font-size: 16px; font-weight: var(--font-weight-medium); color: var(--text-muted); padding: 8px 0; line-height: 1.5; }
.footer__link:hover { color: var(--accent-solid); }
/* A2: 푸터 소셜버튼 = Figma 채움(#e5e7ed, 테두리 없음) — 헤더(아웃라인)와 다름 */
.footer .btn-sns { background: var(--bg-input); border-color: transparent; color: var(--text-light-muted); }
.footer .btn-sns:hover { background: var(--neutral-87); }
/* 1024~1279: 푸터 12칼럼 그리드에서 '상담 문의'(3칼럼)가 좁아지는데 대표번호 줄이 nowrap이라
   뷰포트를 밀어 가로 스크롤이 생긴다 → 번호를 줄이고 '(한국 대표번호)'는 줄바꿈 허용 */
@media (max-width: 1279px) {
    .footer-phone { font-size: 24px; }
    .footer-phone + p { white-space: normal; }
}
/* 모바일 푸터 (Figma 232:1973): 콜타이틀16·링크14(py4)·전화24 */
@media (max-width: 1023px) {
    .footer__coltitle { font-size: 16px; }
    .footer__link { font-size: 14px; padding: 4px 0; }
    .footer-phone { font-size: 24px; }
}

/* 스크롤 등장 애니메이션 (data-reveal) — 뷰포트 진입 시 자연스럽게 페이드/슬라이드 */
[data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; will-change: opacity, transform; }
[data-reveal].is-in { opacity: 1; transform: none; }
/* WHY 카드 순차 등장 — 제목 먼저(0) → 카드 1·2·3·4 하나씩 */
.why-grid > .why-card:nth-child(1) { transition-delay: .12s; }
.why-grid > .why-card:nth-child(2) { transition-delay: .24s; }
.why-grid > .why-card:nth-child(3) { transition-delay: .36s; }
.why-grid > .why-card:nth-child(4) { transition-delay: .48s; }
/* 순차 등장 지연 유틸 (data-reveal와 함께 — 한 개씩 나오게) */
[data-reveal].rd-1 { transition-delay: .08s; }
[data-reveal].rd-2 { transition-delay: .16s; }
[data-reveal].rd-3 { transition-delay: .24s; }
[data-reveal].rd-4 { transition-delay: .32s; }
[data-reveal].rd-5 { transition-delay: .40s; }
[data-reveal].rd-6 { transition-delay: .48s; }
@media (prefers-reduced-motion: reduce) { [data-reveal] { opacity: 1; transform: none; transition: none; } }
/* CTA 타이핑: 캐럿 깜빡임 + 타이핑 끝나면 아래 문구/버튼 스르륵 등장 */
[data-type-after] { opacity: 0; transform: translateY(12px); transition: opacity .6s ease, transform .6s ease; will-change: opacity, transform; }
[data-type-after].is-in { opacity: 1; transform: none; }
.cta__title.is-typing::after { content: '|'; margin-left: 2px; font-weight: var(--font-weight-regular); animation: caretBlink 1s step-end infinite; }
@keyframes caretBlink { 0%, 100% { opacity: .85; } 50% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { [data-type-after] { opacity: 1; transform: none; transition: none; } }

/* 모바일 드로어 메뉴 (Figma: 340 패널, 헤더 + 빠른액션 4버튼 + 전체 카테고리/서브 펼침) */
.mdrawer { position: fixed; inset: 0; z-index: 300; visibility: hidden; overflow: hidden; transition: visibility .25s; }   /* 닫힘 시 .25s 동안 visible 유지 → 슬라이드아웃 끝까지 재생 */   /* 닫힘 시 translateX된 패널이 가로 오버플로 만들지 않게 클립 */
.mdrawer.is-open { visibility: visible; transition: visibility 0s; }   /* 열 때는 즉시 visible */
.mdrawer__bg { position: absolute; inset: 0; background: rgba(0,0,0,.2); opacity: 0; transition: opacity .25s; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.mdrawer.is-open .mdrawer__bg { opacity: 1; }
.mdrawer__panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(88vw, 340px); background: var(--bg-page); transform: translateX(100%); transition: transform .25s; display: flex; flex-direction: column; }
.mdrawer.is-open .mdrawer__panel { transform: none; }
.mdrawer__head { display: flex; align-items: center; justify-content: space-between; height: 56px; padding: 0 20px; flex: none; }
.mdrawer__head .mdrawer__close { width: 24px; height: 24px; color: var(--text-default); }
/* 빠른 액션 (카톡/블로그/인스타/유튜브) */
.mdrawer__quick { display: flex; gap: 0; background: var(--bg-raised-1); padding: 24px 20px; flex: none; }
.mdrawer__quickitem { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 12px; font-size: 14px; color: var(--text-default); text-align: center; }
.mdrawer__quickic { width: 48px; height: 48px; border-radius: var(--radius-full); background: var(--bg-page); display: flex; align-items: center; justify-content: center; }
.mdrawer__quickic svg { width: 24px; height: 24px; color: var(--text-default); }
/* 카테고리 리스트 (스크롤) */
.mdrawer__list { flex: 1; overflow-y: auto; padding: 12px 20px 48px; }
.mdrawer__cat { display: flex; align-items: center; height: 56px; font-size: 16px; font-weight: var(--font-weight-semibold); color: var(--text-default); border-bottom: 1px solid var(--border-soft); }
.mdrawer__subs { padding: 12px 0; }
.mdrawer__sublink { display: flex; align-items: center; height: 48px; font-size: 16px; color: var(--text-default); }
.mdrawer__sublink:hover { color: var(--accent-solid); }

/* 반응형 */
@media (max-width: 1023px) {
    .sect { padding: 60px 0; }
    .sect-title, .cta__title { font-size: 26px; }
    .sect-eyebrow { font-size: 18px; }
    .sect-sub, .cta__sub { font-size: 16px; }
    /* D1/D2: 일괄 18 제거 → Figma 모바일 실제값으로 분리 (stat__num/label은 위 통계 블록에서 22/14) */
    .why-card__title, .step__title { font-size: 16px; }
    .prog-card__title { font-size: 16px; }
    .prog-card__desc {font-size: 14px;}
    .yt-title { font-size: 16px; }   /* #2: 모바일 유튜브 변형 = 16 */
    .step__icon { width: 72px; height: 72px; }
    .step__icon svg { width: 32px; height: 32px; }
    /* 모바일: 카드 고정높이 해제(내용에 맞게) */
    .why-card { height: auto; min-height: 0; padding: 24px; }
    /* 모바일: 큰 버튼 공통 축소 (전 페이지 .btn-lg/.btn-xl) */
    .btn-lg { height: 48px; font-size: 14px; padding: 0 20px; gap: 6px; }
    .btn-lg svg { width: 20px; height: 20px; }
    .btn-xl { height: 56px; font-size: 16px; padding: 0 20px; gap: 8px; }
    .btn-xl svg { width: 24px; height: 24px; }
    /* D3: 모바일 why 카드 내부 (Figma mobile 변형) */
    .why-card { gap: 10px; }
    .why-card__no { font-size: 18px; }
    .why-card__icon { width: 48px; height: 48px; }
    .why-card__icon svg { width: 24px; height: 24px; }
    .why-card__desc { font-size: 14px; }
    /* D9: 통계/프로그램 밴드 풀블리드 — .stats-band 기본정의(위)보다 뒤라 순서상 이김 */
    .stats-band::before { left: 0; }   /* 좌하단 r28은 모바일에서도 유지(기존 규칙 그대로 — prog-band는 0으로 죽이지만 통계는 살린다) */
    .prog-band::before { left: 0; border-radius: 0; }
    /* 모바일: btn-base 축소 (#8) */
    .btn-base { height: 44px; padding: 0 18px; font-size: 13px; }
    .btn-base svg { width: 18px; height: 18px; }
    .btn-icon.btn-base { width: 44px;padding: 0; }
    /* 모바일: 추천프로그램 컨트롤러 표시 시 컴팩트하게 (#6) */
    .prog-pager { gap: 12px; }
    .prog-pager__bar { width: 64px; }
    /* 모바일: prog 트랙 풀블리드를 calc(50%-50vw)(순환계산→가로 오버플로) 대신 단순 음수마진(-20=fe-container 패딩)으로 */
    .prog-track { margin-right: -20px; padding-right: 20px;gap: 16px; }
}

@media (max-width: 480px) {
    .sect { padding: 32px 0; }
}

/* 모바일 하단 고정 바 공간 확보 — D10: 여백을 body(흰)→푸터(회색)로 이동해 고정바 뒤가 회색으로 채워지게 */
@media (max-width: 1023px) { body { padding-bottom: 0; font-size: var(--font-size-14); } .footer { padding-bottom: 88px; } }

/* =========================================================================
   서브페이지 공용 컴포넌트 (조기유학 소개 등 컨텐츠 페이지) — 2026-06-23 추가
   ========================================================================= */

/* 상단 히어로/브레드크럼 밴드: 콘텐츠는 .fe-container로 1440 정렬(아래 섹션과 동일), 배경 밴드만 좌측으로 160 돌출+우측 풀블리드 */
.subhero { position: relative; }
.subhero__band { position: absolute; inset: 0; left: max(20px, calc(50vw - 880px)); border-radius: 0 0 0 28px; overflow: hidden; z-index: 0; }   /* 880 = 1440/2 + 160 돌출 → 콘텐츠 좌측보다 160 왼쪽에서 시작. max(20px,…) 이유는 .prog-band::before 주석 참고 */
.subhero__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 80% center; }
.subhero__band::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(247,244,239,.92) 0%, rgba(247,244,239,.45) 42%, rgba(247,244,239,0) 66%); }
.subhero__content { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 8px; padding-top: 70px; padding-bottom: 80px; }   /* Figma subhero 컴포넌트(343:3864) pad(70 80 80 0) · gap8 정확값 — 0101·0102 동일 컴포넌트 */
.subhero__crumbrow { position: relative; z-index: 5; }   /* 드롭다운이 타이틀 위로 오도록 */
.subhero__title { font-size: 36px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.subhero__sub { font-size: 20px; font-weight: var(--font-weight-medium); color: var(--text-muted); line-height: 1.6; margin-top: 12px; }

/* 브레드크럼 */
/* 한 줄 유지 + 마지막 항목(드롭다운 라벨 / 글 제목)만 말줄임.
   기존 flex-wrap:wrap 은 좁은 화면에서 '포커스에듀케이션 유튜브 ▾' 같은 마지막 항목이
   통째로 다음 줄로 넘어가 부자연스러웠다 (2026-07-15 사용자 피드백).
   앞 항목(Home·카테고리·구분자)은 flex:none 이라 안 줄어들고, 남는 폭만큼만 마지막이 줄어든다. */
.crumb { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; min-width: 0; }
.crumb > a, .crumb > span { flex: none; font-size: 14px; font-weight: var(--font-weight-semibold); color: var(--text-muted); }
.crumb > a:hover { color: var(--accent-solid); }
.crumb svg { width: 18px; height: 18px; color: var(--text-muted); flex: none; }
/* 현재 페이지 = 형제 서브페이지 이동 드롭다운 (JS 없이 details) */
/* 브레드크럼 마지막 '현재 글 제목': 모바일에선 너무 길어 숨김 (상세 페이지 공통).
   Figma 상세 6종 모두 드롭다운과 마지막 항목 사이에 구분자가 없다(gap 8만) — 구분자 넣지 말 것. */
@media (max-width: 1023px) {
    .crumb__self { display: none; }
}
/* 데스크톱에서 글 제목이 길어도 뷰포트를 밀지 않게 (1024~ 노출 구간) */
.crumb__self { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.crumb__drop { position: relative; flex: 0 1 auto; min-width: 0; }   /* 남는 폭만 차지 → 넘치면 라벨 말줄임 */
.crumb__drop > summary { display: inline-flex; align-items: center; gap: 8px; min-width: 0; max-width: 100%; height: 40px; list-style: none; cursor: pointer; font-size: 14px; font-weight: var(--font-weight-semibold); color: var(--text-muted); }
.crumb__drop-txt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }   /* chevron 은 남기고 글자만 '메뉴명…' */
.crumb__drop > summary::-webkit-details-marker { display: none; }
.crumb__drop > summary svg { transition: transform .2s; }
.crumb__drop[open] > summary svg { transform: rotate(180deg); }
.crumb__menu { position: absolute; top: calc(100% + 6px); left: 0; min-width: 210px; background: var(--bg-page); border: 1px solid var(--border-soft); border-radius: 0 16px 0 16px; box-shadow: 0 8px 24px rgba(30,36,48,.14); padding: 6px; z-index: 220; }
.crumb__menu a { display: block; padding: 10px 14px; border-radius: 8px; font-size: 15px; font-weight: var(--font-weight-medium); color: var(--text-default); white-space: nowrap; }
.crumb__menu a:hover { background: var(--bg-sunken); color: var(--accent-solid); }
.crumb__menu a[aria-current="page"] { color: var(--accent-solid); font-weight: var(--font-weight-semibold); }

/* 가로형 why_focus 카드 (아이콘박스 좌 + 텍스트 우, 대각 r24) */
.wf_card { display: flex; gap: 24px; align-items: flex-start; padding: 32px; background: var(--bg-raised-1); border-radius: 0 24px 0 24px; overflow: hidden; }
.wf_card__ic { flex: none; width: 64px; height: 64px; display: flex; align-items: center; justify-content: center; background: var(--bg-page); border-radius: 12px; }
.wf_card__ic svg { width: 32px; height: 32px; color: var(--text-default); }
.wf_card__title { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.wf_card__desc { font-size: 16px; color: var(--text-muted); line-height: 1.5; margin-top: 8px; }

/* 대학유학 소개(0201) — 대학 프로그램 소개 테두리 그리드 카드 (Figma 408:12058) */
/* 컨테이너 bg=구분선색 + gap 1px 로 셀 사이 1px 라인 표현, 셀은 흰 배경 → Figma 내부 border 재현 */
.prog_intro_grid { display: grid; grid-template-columns: 1fr; gap: 1px; background: var(--border-soft); border: 1px solid var(--border-soft); border-radius: 0 24px 0 24px; overflow: hidden; }
.prog_intro_card { display: flex; flex-direction: column; gap: 20px; padding: 32px; background: var(--bg-page); }
.prog_intro_card__head { display: flex; gap: 24px; align-items: center; }
.prog_intro_card__head > div { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.prog_intro_card__ic { flex: none; width: 64px; height: 64px; display: flex; align-items: center; justify-content: center; background: var(--bg-page); border: 1px solid var(--border-soft); border-radius: 12px; }
.prog_intro_card__ic svg { width: 32px; height: 32px; color: var(--text-default); }
.prog_intro_card__title { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.prog_intro_card__en { font-size: 16px; font-weight: var(--font-weight-bold); color: var(--accent-solid); line-height: 1.4; }
.prog_intro_card__desc { font-size: 16px; color: var(--text-muted); line-height: 1.5; }
.prog_intro_card--empty { display: none; }
@media (min-width: 640px) { .prog_intro_grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .prog_intro_grid { grid-template-columns: repeat(3, 1fr); } .prog_intro_card--empty { display: block; } }
@media (max-width: 767px) { .prog_intro_card { padding: 24px; gap: 16px; } .prog_intro_card__head { gap: 16px; } .prog_intro_card__ic { width: 48px; height: 48px; } .prog_intro_card__ic svg { width: 24px; height: 24px; } .prog_intro_card__title { font-size: 16px; } .prog_intro_card__en { font-size: 14px; } .prog_intro_card__desc { font-size: 14px; } }

/* 대학유학 소개(0201) — 파트너 대학 로고 셀 (Figma 419:14244, aspect 16:9, 대각 r16) */
.uni_logo { display: flex; align-items: center; justify-content: center; aspect-ratio: 16 / 9; background: #fff; border: 1px solid var(--border-soft); border-radius: 0 16px 0 16px; overflow: hidden; padding: 16px 24px; }
.uni_logo img { max-width: 100%; max-height: 100%; object-fit: contain; }

/* ===== 해외 대학 진학(0205) 전용 컴포넌트 ===== */
/* 국제학교 재학생 컨설팅 밴드 배경 그라디언트 (Figma 614:11572 = secondary-90→neutral-90, 90deg) */
.fe_intl_band { background: linear-gradient(90deg, var(--secondary-90), var(--neutral-90)); }

/* 국가 플래그 사진 카드 (Figma 612:11374, 높이 210, 대각 r16, 하단 그라디언트 오버레이) */
.flag_card { position: relative; height: 210px; display: flex; flex-direction: column; justify-content: flex-end; gap: 10px; padding: 20px 24px; border-radius: 0 16px 0 16px; overflow: hidden; }
.flag_card__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.flag_card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 40%, rgba(0,0,0,0.6) 100%); }
.flag_card__flag { position: relative; z-index: 1; width: 44px; height: 44px; object-fit: contain; }
.flag_card__name { position: relative; z-index: 1; font-size: 24px; font-weight: var(--font-weight-bold); color: #fff; line-height: 1.4; }

/* 국가별 컨설팅 카드 (Figma 615:12172, 흰 배경·대각 r16·그림자) */
.consult_card { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; text-align: center; padding: 20px 16px; background: #fff; border: 1px solid var(--border-soft); border-radius: 0 16px 0 16px; box-shadow: 0 6px 13px 0 rgba(0,0,0,0.05); }
.consult_card__flag { width: 44px; height: 44px; object-fit: contain; }
.consult_card__kr { font-size: 24px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.consult_card__en { font-size: 16px; color: var(--text-default); line-height: 1.5; }
.consult_card__desc { font-size: 16px; color: var(--text-muted); line-height: 1.5; }

/* 체크리스트 (네이비 탭 + 카드) — Figma 614:11732/692:13064 */
.checklist { display: flex; flex-direction: column; }
.checklist__tab { align-self: flex-start; display: inline-flex; align-items: center; padding: 4px 16px; background: var(--accent-solid); color: #fff; font-size: 16px; font-weight: var(--font-weight-bold); line-height: 1.5; border-radius: 0 12px 0 0; }
.checklist__body { padding: 32px; border-radius: 0 24px 0 24px; }
.checklist__body ul { list-style: disc; padding-left: 24px; display: flex; flex-direction: column; gap: 5px; }
.checklist__body li { font-size: 16px; color: var(--text-default); line-height: 1.5; }
.checklist--soft { background: rgba(255,255,255,0.8); }
.checklist--sunken { background: var(--bg-sunken); }
@media (max-width: 767px) {
    .flag_card__name { font-size: 20px; }
    .consult_card__kr { font-size: 20px; }
    .consult_card__en, .consult_card__desc, .checklist__body li { font-size: 14px; }
    .checklist__body { padding: 20px 24px; }
}

/* 유학지역 배지 (대각 r16) */
.region__badge { flex: none; width: 96px; height: 40px; display: flex; align-items: center; justify-content: center; border-radius: 0 16px 0 16px; font-size: 20px; font-weight: var(--font-weight-bold); color: #fff; }
.region__badge--navy { background: var(--accent-solid); }
.region__badge--grey { background: var(--text-light-muted); }

/* 공용 데이터 테이블 (학제/학비 등) — 상단 2px 검정, 헤더 sunken, 행 border-soft */
.fe-table-wrap { width: 100%; overflow-x: auto; }
.fe-table { width: 100%; border-collapse: collapse; background: var(--bg-page); border-top: 2px solid var(--text-default); }
.fe-table th { background: var(--bg-sunken); border-bottom: 1px solid var(--border-soft); height: 56px; padding: 16px 28px; font-size: 16px; font-weight: var(--font-weight-medium); color: var(--text-default); line-height: 1.5; white-space: nowrap; text-align: center; }
.fe-table td { border-bottom: 1px solid var(--border-soft); height: 56px; padding: 18px 12px; font-size: 16px; color: var(--text-default); line-height: 1.5; vertical-align: middle; text-align: left; }
.fe-table td.is-center { text-align: center; }
.fe-table--center td { text-align: center; }   /* Figma 학교 상세 비용/기숙사 표: 전 셀 가운데정렬 */
.fe-table--roomy td { height: auto; min-height: 70px; padding-top: 20px; padding-bottom: 20px; }   /* 학비 안내: 내용에 맞춰 높이 자동(최소 70) — 특징 줄바꿈 시 눌리지 않게 */
/* 티어 셀 색상 (학제 나이·학년 비교) */
.fe-table td.cell-blue { background: var(--primary-95);   color: var(--accent-solid); }
.fe-table td.cell-tan  { background: var(--secondary-95); color: var(--secondary-40); }
.fe-table td.cell-grey { background: var(--bg-sunken);    color: var(--text-light-muted); }

/* 칩 변형 추가 (네이비 soft / 그레이 soft) */
.chip-navysoft { background: var(--primary-95); color: var(--accent-solid); }
.chip-greysoft { background: var(--bg-sunken);  color: var(--text-light-muted); }
.chip-sm { padding: 4px 12px; }   /* Figma 상세 히어로 칩 pad(4 12) */

/* 하단 서비스 밴드 (네이비) 구분선 */
.svc_band { background: var(--primary-10); }
.svc_col { border-right: 1px solid rgba(255,255,255,.1); }

/* ==================================================================
   입학 절차 (Figma 0104 366:10850) — 원형 스텝(셀 채움)·FAQ 아코디언·사진 CTA
   ================================================================== */
/* 원형 스텝을 4열 그리드에서 셀(360)에 꽉 채우는 변형 (.step-circle 기본은 max-width 288 = 메인 5열용) */
.step-circle--fill { max-width: none; }
.step-circle--fill .step-circle__in { padding: 32px; }   /* Figma 0104 카드 p-32 (메인 5열은 24) */

/* FAQ 아코디언 (native <details>) — Figma faq_item: bg raised-1, r16, pad24, gap16 */
.faq_item { background: var(--bg-raised-1); border-radius: var(--radius-default); overflow: hidden; }
.faq_item + .faq_item { margin-top: 12px; }
.faq_item > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px; padding: 24px; }
.faq_item > summary::-webkit-details-marker { display: none; }
.faq_item[open] > summary { padding-bottom: 16px; }   /* Figma: 열리면 질문↔답변 gap 16 */
.faq_q, .faq_a { flex: none; width: 30px; height: 30px; border-radius: var(--radius-full); display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: var(--font-weight-bold); line-height: 1.5; color: #f5f7fa; }
.faq_q { background: #000; }                       /* Figma primary/0 = 검정 */
.faq_a { background: var(--accent-solid); }        /* Figma on-accent-soft = 네이비 */
.faq_qtext { flex: 1 1 0; min-width: 0; font-size: 18px; font-weight: var(--font-weight-semibold); color: var(--text-default); line-height: 1.4; }
.faq_chevron { flex: none; width: 20px; height: 20px; color: var(--text-default); transition: transform .2s ease; }
.faq_item[open] .faq_chevron { transform: rotate(180deg); }
.faq_ans { display: flex; align-items: flex-start; gap: 10px; padding: 0 24px 24px; }
.faq_atext { flex: 1 1 0; min-width: 0; font-size: 18px; font-weight: var(--font-weight-medium); color: var(--text-muted); line-height: 1.5; }
/* 부드러운 열림/닫힘 — Chromium(Chrome/Edge 129+)에서 ::details-content 높이 애니메이션.
   미지원 브라우저는 즉시 토글(기능은 동일)로 우아하게 폴백 */
:root { interpolate-size: allow-keywords; }
.faq_item > summary { transition: padding .28s ease; }
.faq_item::details-content { block-size: 0; overflow: clip; transition: block-size .28s ease, content-visibility .28s allow-discrete; }
.faq_item[open]::details-content { block-size: auto; }

/* 사진 배경 CTA 밴드 (Figma 612:11318 — 전 폭 배경사진 + 검정 40% 오버레이) */
.cta_photo { position: relative; overflow: hidden; }
.cta_photo__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.cta_photo::after { content: ''; position: absolute; inset: 0; background: rgba(0,0,0,.4); z-index: 1; }
.cta_photo > .fe-container { position: relative; z-index: 2; }
.cta_photo .btn-outline.btn-neutral { color: #fff; border-color: #fff; }
.cta_photo .btn-outline.btn-neutral:hover { background: rgba(255,255,255,.12); }

/* ==================================================================
   입학 준비반 (Figma 0105 366:11106 / 532:18588) — 세그먼트 탭·스펙표·교사카드·서비스포인트 밴드
   ================================================================== */
/* 세그먼트 탭 (2개, 640, 대각 r16) — Figma 532:17794 */
.seg-tabs { display: flex; width: 100%; max-width: 640px; background: var(--bg-sunken); border-radius: 0 16px 0 16px; }
.seg-tab { flex: 1 1 0; min-width: 0; height: 64px; display: flex; align-items: center; justify-content: center; gap: 12px; padding: 0 24px; border-radius: 0 12px 0 12px; font-size: 18px; font-weight: var(--font-weight-semibold); color: var(--text-muted); background: transparent; cursor: pointer; text-align: center; line-height: 1.4; }
.seg-tab[aria-selected="true"] { background: var(--accent-solid); color: #fff; }
.seg-pane[hidden] { display: none; }

/* 스펙표 (key-value; 상단 2px 검정, 헤더 sunken 가운데, 데이터 흰 좌측) — Figma Table (Complete) */
.prep_table { width: 100%; border-collapse: collapse; table-layout: fixed; border-top: 2px solid var(--text-default); background: var(--bg-page); }
.prep_table th { background: var(--bg-sunken); text-align: center; font-size: 16px; font-weight: var(--font-weight-medium); color: var(--text-default); padding: 16px 20px; border-bottom: 1px solid var(--border-soft); line-height: 1.5; white-space: nowrap; }
.prep_table td { background: var(--bg-page); text-align: left; font-size: 16px; font-weight: var(--font-weight-regular); color: var(--text-default); padding: 18px 12px; border-bottom: 1px solid var(--border-soft); line-height: 1.5; white-space: pre-line; vertical-align: middle; }
.prep_table .is-muted { color: var(--text-light-muted); }                              /* Lunch Break 행 */
.prep_table th.is-gold { background: var(--secondary-90); color: var(--secondary-40); } /* 선택수업 시간 셀 */
.prep_table td.is-gold { background: var(--secondary-95); color: var(--secondary-40); } /* 선택수업 내용 셀 */

/* 교사 프로필 카드 (사진 260 좌 + 텍스트, 대각 r24) — Figma why_focus 532:18364 */
.teacher_card { display: flex; background: var(--bg-page); border: 1px solid var(--border-soft); border-radius: 0 24px 0 24px; overflow: hidden; }
.teacher_card__photo { flex: none; width: 260px; align-self: stretch; object-fit: cover; }
.teacher_card__body { flex: 1 1 0; min-width: 0; padding: 32px; display: flex; flex-direction: column; gap: 12px; }
.teacher_card__name { font-size: 20px; font-weight: var(--font-weight-semibold); color: var(--text-default); line-height: 1.4; }
.teacher_card__list { list-style: disc; padding-left: 24px; display: flex; flex-direction: column; gap: 8px; font-size: 16px; color: var(--text-muted); line-height: 1.5; }

/* 서비스 포인트 밴드 (좌우 그라디언트 + 번호 카드 3) — Figma Frame 94 692:13200 */
.fe_point { background: linear-gradient(90deg, var(--secondary-90) 0%, var(--bg-raised-3) 100%); }
.fe_point__card { flex: 1 1 0; min-width: 0; background: rgba(255,255,255,.8); border-radius: 0 24px 0 24px; padding: 32px 24px; display: flex; flex-direction: column; align-items: center; gap: 20px; box-shadow: 0 4px 32px rgba(12,12,13,.06); text-align: center; }
.fe_point__no { flex: none; width: 36px; height: 36px; border-radius: var(--radius-full); background: var(--secondary-solid); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: var(--font-weight-semibold); line-height: 1.4; }
.fe_point__title { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.fe_point__desc { font-size: 16px; color: var(--text-muted); line-height: 1.5; }

/* ==================================================================
   포커스 케어 (Figma 04 408:4541) — Services 섹션 컴포넌트
   care-admission / care-settle / care-manage 공용
   ================================================================== */
/* Services 아이브로우 (골드, 대각 r12, SemiBold 18) — Figma 703:50009 */
.svc-eyebrow { display: inline-flex; align-items: center; align-self: flex-start; background: var(--secondary-solid); color: #fff; font-size: 18px; font-weight: var(--font-weight-semibold); line-height: 1.4; padding: 8px 16px; border-radius: 0 12px 0 12px; white-space: nowrap; }

/* 흰 박스(현지답사 정보카드 · 대학입학 스테이지카드 공통) — 1px soft, 대각 r16, drop-shadow */
.svc_box { background: var(--bg-page); border: 1px solid var(--border-soft); border-radius: 0 16px 0 16px; padding: 32px; box-shadow: 0 6px 6.5px rgba(0,0,0,.05); }
.svc_grouptt { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.svc_list { list-style: disc; margin-left: 24px; font-size: 16px; color: var(--text-default); line-height: 1.5; }
.svc_list > li { margin-bottom: 5px; }
.svc_list > li:last-child { margin-bottom: 0; }

/* 스테이지 pill(대학입학, 네이비, 우상단 r12만) — Figma 698:18621 */
.stage-pill { display: inline-flex; align-items: center; align-self: flex-start; background: var(--accent-solid); color: #fff; font-size: 16px; font-weight: var(--font-weight-bold); line-height: 1.5; padding: 4px 16px; border-radius: 0 12px 0 0; white-space: nowrap; }

/* 번호 리스트 행(입학 tab1 6행 / 관리 svc02 8행) — 흰 카드 + 골드 원형 36 + 제목260/설명 */
.svc_row { display: flex; align-items: flex-start; gap: 20px; background: var(--bg-page); border: 1px solid var(--border-soft); border-radius: 0 16px 0 16px; padding: 32px; box-shadow: 0 6px 13px rgba(0,0,0,.05); }
.svc_no { flex: none; width: 36px; height: 36px; border-radius: var(--radius-full); background: var(--secondary-solid); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: var(--font-weight-semibold); line-height: 1.4; }
.svc_row__body { flex: 1 1 0; min-width: 0; display: flex; gap: 8px; }
.svc_row__tt { flex: none; width: 260px; font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.svc_row__desc { flex: 1 1 0; min-width: 0; font-size: 16px; color: var(--text-muted); line-height: 1.5; }
.svc_row__desc .hl { color: var(--primary-50); }

/* 번호 카드(관리 svc01 2×2, 세로 가운데) — Figma 698:18701 */
.svc_card { display: flex; flex-direction: column; align-items: center; gap: 20px; text-align: center; background: var(--bg-page); border: 1px solid var(--border-soft); border-radius: 0 16px 0 16px; padding: 32px 16px; box-shadow: 0 6px 13px rgba(0,0,0,.05); }
.svc_card__tt { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.svc_card__desc { font-size: 16px; color: var(--text-muted); line-height: 1.5; }

/* 번호 카드(관리 svc03 3열, 가로 · bg raised-1 · 대각 r24 · 무테) — Figma 668:51562 */
.svc_wf { display: flex; align-items: flex-start; gap: 24px; background: var(--bg-raised-1); border-radius: 0 24px 0 24px; padding: 32px; }
.svc_wf__tt { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.svc_wf__desc { font-size: 16px; color: var(--text-muted); line-height: 1.5; margin-top: 8px; }

@media (max-width: 1023px) {
    /* 포커스 케어 Services — 모바일 축소·세로 스택 */
    .svc-eyebrow { font-size: 16px; padding: 6px 14px; }
    .svc_no { width: 28px; height: 28px; font-size: 15px; }
    .svc_box { padding: 20px; }
    .svc_row { padding: 20px; gap: 14px; }
    .svc_row__body { flex-direction: column; gap: 4px; }
    .svc_row__tt { width: auto; font-size: 16px; }
    .svc_row__desc { font-size: 14px; }
    .svc_card { padding: 24px 16px; }
    .svc_card__tt { font-size: 16px; }
    .svc_card__desc { font-size: 14px; }
    .svc_wf { padding: 20px; gap: 16px; }
    .svc_wf__tt { font-size: 16px; }
    .svc_wf__desc { font-size: 14px; }
    .svc_grouptt { font-size: 18px; }
    .svc_list { font-size: 14px; }
}

/* 이주정착 요금제 카드 (실속/풀케어/프리미엄) — Figma why_focus 641:16129 */
.price_card { display: flex; flex-direction: column; gap: 16px; background: var(--bg-raised-1); border-radius: 0 24px 0 24px; padding: 32px; }
.price_card__chip { align-self: flex-start; background: var(--secondary-solid); color: #fff; font-size: 16px; font-weight: var(--font-weight-bold); line-height: 1.5; padding: 4px 16px; border-radius: 0 12px 0 12px; }
.price_card__body { display: flex; flex-direction: column; gap: 8px; }
.price_card__name { font-size: 24px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.price_card__price { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.price_card__desc { font-size: 16px; color: var(--text-muted); line-height: 1.5; }

/* 이주정착 서비스 비교표 — Figma 666:17147 (4열: 서비스내역 + 실속/풀케어/프리미엄) */
.cmp_table { width: 100%; border-collapse: collapse; table-layout: fixed; border-top: 2px solid var(--text-default); background: var(--bg-page); }
.cmp_table th, .cmp_table td { border-bottom: 1px solid var(--border-soft); }
.cmp_table thead th { background: var(--bg-sunken); height: 56px; padding: 12px 16px; font-size: 16px; font-weight: var(--font-weight-medium); color: var(--text-default); text-align: center; line-height: 1.4; }
.cmp_table thead th.cmp_table__name { text-align: left; }
.cmp_table tbody th { text-align: left; font-size: 14px; font-weight: var(--font-weight-regular); color: var(--text-default); padding: 12px 16px; line-height: 1.5; vertical-align: middle; }
.cmp_table tbody td { text-align: center; font-size: 14px; color: var(--text-default); padding: 12px 12px; line-height: 1.5; border-left: 1px solid var(--border-soft); vertical-align: middle; }
.cmp_sub { display: block; margin-top: 2px; font-size: 14px; font-weight: var(--font-weight-regular); color: var(--text-muted); line-height: 1.4; }
.cmp_ck { display: inline-flex; width: 20px; height: 20px; border-radius: var(--radius-full); background: var(--accent-solid); align-items: center; justify-content: center; }
.cmp_ck svg { width: 14px; height: 14px; color: #fff; }
.cmp_table .cmp_secrow > th, .cmp_table .cmp_secrow > td { background: var(--primary-95); color: var(--accent-solid); }
.cmp_table .cmp_secrow > th { font-weight: var(--font-weight-bold); }
.cmp_table .cmp_sumrow > th { background: var(--accent-solid); color: #fff; }
.cmp_table .cmp_sumrow > td { background: var(--accent-solid); color: #fff; font-size: 16px; font-weight: var(--font-weight-semibold); border-left-color: rgba(255,255,255,.15); }

@media (max-width: 1023px) {
    .price_card { padding: 24px; gap: 12px; }
    .price_card__name { font-size: 20px; }
    .price_card__price { font-size: 18px; }
    .price_card__desc { font-size: 14px; }
    .cmp_table thead th { font-size: 14px; padding: 10px 10px; height: 48px; }
    .cmp_table tbody th { font-size: 13px; padding: 10px 10px; }
    .cmp_table tbody td { font-size: 13px; padding: 10px 6px; }
    .cmp_sub { font-size: 12px; }
    .cmp_sumrow > td { font-size: 14px; }
}

@media (max-width: 1023px) {
    .seg-tab { font-size: 14px; height: 56px; padding: 0 12px; gap: 6px; }
    .teacher_card { flex-direction: column; }
    .teacher_card__photo { width: 100%; height: 220px; }
    .teacher_card__body { padding: 20px; }
    .teacher_card__name { font-size: 18px; }
    .teacher_card__list { font-size: 14px; gap: 6px; }
    .prep_table th { padding: 12px 10px; font-size: 13px; }
    .prep_table td { padding: 12px 10px; font-size: 13px; }
    .fe_point__card { padding: 24px 16px; }
    .fe_point__title { font-size: 16px; }
    .fe_point__desc { font-size: 14px; }
    /* 입학 절차 원형 스텝 — 모바일: --fill 패딩(32) 이 기본 모바일 16 규칙을 특이도로 덮어써 좁은 원에 텍스트가 넘쳤음 → 20 으로 낮추고 넘침 클립 */
    .step-circle--fill { overflow: hidden; }
    .step-circle--fill .step-circle__in { padding: 20px; }
    /* FAQ 아코디언 모바일 글자·여백 축소 */
    .faq_item > summary { padding: 20px; }
    .faq_item[open] > summary { padding-bottom: 12px; }
    .faq_ans { padding: 0 20px 20px; }
    .faq_qtext { font-size: 16px; }
    .faq_atext { font-size: 15px; }
    .faq_q, .faq_a { width: 26px; height: 26px; font-size: 13px; }
}

/* ==================================================================
   국제학교 목록·상세 (Figma 0102 343:7506 / 438:13519)
   ================================================================== */

/* ---- 서브히어로 그라디언트 변형 (상세: 사진 없이 secondary-90 → neutral-90) ---- */
.subhero--grad .subhero__band { background: linear-gradient(90deg, var(--secondary-90) 0%, var(--neutral-90) 100%); }
.subhero--grad .subhero__band::after { content: none; }
/* Figma는 밴드 380 고정 + 갤러리가 아래로 삐져나오는 구조(clipsContent=false).
   높이를 380으로 못 박으면 폭이 좁아질 때(제목 줄바꿈) 아래 탭과 겹쳐 깨진다.
   → 갤러리에 음수 margin(359-230)만 줘서 '높이에 230만 기여'하게 하면
     1920에서 Figma와 같은 삐져나옴을 재현하면서, 좁아지면 섹션이 알아서 늘어나 안 깨진다. */
@media (min-width: 1024px) {
    .gallery { margin-bottom: -129px; }
}
/* 상세 히어로: 좌 텍스트 + 우 갤러리 (Figma row gap64) */
.subhero__row { display: flex; align-items: flex-start; gap: 64px; }
.subhero__col { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.subhero__eyerow { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.subhero__name { font-size: 18px; font-weight: var(--font-weight-medium); color: var(--text-muted); line-height: 1.5; margin-top: 4px; }
.subhero__spec { font-size: 14px; color: var(--text-muted); line-height: 1.5; white-space: pre-line; }

/* ---- 학교 이미지 갤러리 (Figma 640×359, 화살표는 이미지 바깥) — 슬라이드는 Swiper ---- */
.gallery { position: relative; flex: none; width: 640px; max-width: 46%; }   /* 좁은 데스크톱에선 축소해 좌측 텍스트와 균형 (1440~1920에선 640 그대로) */
.gallery__swiper { border-radius: 0 28px 0 28px; overflow: hidden; box-shadow: 0 4px 32px -4px rgba(12,12,13,.1); }   /* Figma DROP_SHADOW y4 blur32 spread-4 #0C0C0D 10% (5개 상세 페이지 공통) */
.gallery__img { display: block; width: 100%; aspect-ratio: 640 / 359; object-fit: cover; }
/* 썸네일(페이저): 가운데 정렬 — Figma는 우측 정렬이나 사용자 요청으로 전 사이즈 가운데 (2026-07-15)
   이미지가 많으면 nowrap+center가 컨테이너 좌우로 삐져나와(모바일 튀어나옴/가로 여백) → safe center로 넘칠 땐 시작점 정렬 폴백 + 내부 가로 스크롤 */
.gallery__thumbs { position: absolute; inset: auto 0 0 0; z-index: 2; display: flex; align-items: center; justify-content: safe center; flex-wrap: nowrap; gap: 8px; padding: 12px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.gallery__thumbs::-webkit-scrollbar { display: none; }
.gallery__thumbs.swiper { display: block; padding: 12px 0; }   /* 썸네일 Swiper 모드: 좌우 인셋은 slidesOffsetBefore/After로 처리 */
.gallery__thumbs .swiper-wrapper { align-items: center; }
.gallery__thumbs .gallery__thumb.swiper-slide { flex: none; }   /* slidesPerView:'auto' — 폭 48(모바일 36) 유지 */
.gallery__thumb { width: 48px; height: 48px; padding: 0; border-radius: var(--radius-full); overflow: hidden; border: 1px solid rgba(255,255,255,.5); background: none; cursor: pointer; flex: none; }
.gallery__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.gallery__thumb.is-active { border: 3px solid #fff; }
.gallery__nav { position: absolute; top: 50%; z-index: 2; transform: translateY(-50%); display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: var(--radius-full); background: var(--bg-sunken); color: var(--text-muted); }
.gallery__nav:hover { background: var(--neutral-90); }
.gallery__nav svg { width: 24px; height: 24px; }
/* 화살표는 이미지 '안쪽'에 배치 (2026-07-15 사용자 요청 — Figma는 바깥이었으나 디자인 수정 예정).
   덤으로 바깥 배치(right:-22) 때문에 뷰포트 1484 미만에서 나던 가로 스크롤도 사라짐 */
.gallery__nav--prev { left: 16px; }
.gallery__nav--next { right: 16px; }

/* ---- 게시판 검색 바 (Figma bo_sch) ---- */
.bo_sch { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 32px 16px; background: var(--bg-raised-1); border-radius: 0 24px 0 24px; }
.bo_sch__cat { flex: none; width: 150px; }
.bo_sch__kw { position: relative; flex: none; width: 360px; }
.bo_sch__kw .input { padding-right: 44px; }
.bo_sch__btn { position: absolute; right: 16px; top: 50%; transform: translateY(-50%); display: inline-flex; color: var(--text-default); }
.bo_sch__btn svg { width: 20px; height: 20px; }

/* Input size=lg (Figma h56 / fs16) — Input 컴포넌트 사이즈 축 확장 */
.input-lg { height: 56px; font-size: 16px; }
.select-toggle.input-lg .chev { width: 20px; height: 20px; }

/* ===== 국제학교 필터 바 (0102 목록) — 기존 .select 버튼형 드롭다운 재사용 (Figma 802:14778) ===== */
.school_filter { display: flex; align-items: flex-start; gap: 10px; }
.school_filter__group { flex: 1 1 auto; display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
.school_filter .select-toggle { width: 150px; justify-content: space-between; }   /* pill 150 고정, 라벨 좌 / ▽ 우 */
.school_filter .select-dropdown { min-width: 150px; }
.school_filter .select.has-value .select-toggle { border-color: var(--accent-solid); color: var(--accent-solid); }   /* 값 선택된 필터 = 네이비 강조(테두리+글자, 셰브론은 currentColor) */
.school_filter__reset { flex: 0 0 auto; }
@media (min-width: 1200px) and (max-width: 1680px) { .school_filter { padding-right: 96px; } }   /* 1200~1680: 우측 고정 퀵바(.aside-quick w104+right16)가 콘텐츠 우측 끝을 덮어 초기화 버튼이 가려지는 구간 회피 (1920는 겹침 없어 제외) */
.sheet-head { display: none; }   /* 바텀시트 헤더(제목+닫기) = 모바일에서만 노출 */
.filter-sheet-bd { position: fixed; inset: 0; z-index: 1050; background: rgba(0,0,0,.4); opacity: 0; visibility: hidden; transition: opacity .25s; }
.filter-sheet-bd.is-show { opacity: 1; visibility: visible; }
@media (max-width: 640px) {   /* 모바일: 필터 = 가로 스크롤 한 줄(초기화 버튼 맨 앞) + 드롭다운은 하단 바텀시트 (myapply 방식) */
    .school_filter { flex-wrap: nowrap; overflow-x: auto; gap: 8px; margin: 0 -20px; padding: 0 20px 2px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
    .school_filter::-webkit-scrollbar { display: none; }
    .school_filter__group { display: contents; }              /* 그룹 해제 → pill + 초기화 버튼이 한 줄에 흐름 */
    .school_filter .select { flex: 0 0 auto; }
    .school_filter .select-toggle { width: auto; height: 36px; padding: 0 16px; }   /* 내용 폭 pill, 모바일 높이 축소(48→36) */
    .school_filter .select-toggle svg { width: 18px; height: 18px; }
    .school_filter__reset { order: -1; width: 36px; height: 36px; }                  /* 초기화 버튼 맨 앞(좌측), 높이 맞춤 */
    .school_filter__reset svg { width: 18px; height: 18px; }
    /* 드롭다운 → 하단 바텀시트 (가로 스크롤 컨테이너에 안 잘리도록 position:fixed) */
    .school_filter .select-dropdown { display: block; position: fixed; left: 0; right: 0; bottom: 0; top: auto; min-width: 0; max-height: 72vh; overflow-y: auto; border-radius: 20px 20px 0 0; box-shadow: none; z-index: 1060; transform: translateY(100%); transition: transform .25s; pointer-events: none; }   /* 그림자 제거 — 딤 백드롭이 구분 담당(그림자 하단 누출 이슈 원천 차단) */
    .school_filter .select.is-open .select-dropdown { transform: translateY(0); pointer-events: auto; }
    .school_filter .select-dropdown .select-option { padding: 15px 20px; justify-content: center; border-radius: 0; }   /* .select-option 은 flex → 가운데 정렬은 justify-content */
    .sheet-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--border-soft); position: sticky; top: 0; background: var(--bg-page); }
    .sheet-title { font-size: 16px; font-weight: 600; color: var(--text-default); }
    .sheet-close { display: inline-flex; color: var(--text-muted); }
    .sheet-close svg { width: 24px; height: 24px; }
}
@media (min-width: 641px) { .school_filter .sheet-head + .select-option { border-top-right-radius: 16px; } }   /* 데스크톱: 숨긴 시트헤더가 첫 자식이 되며 어긋난 첫 옵션 라운드 복원 */

/* ---- 게시글 총 개수 ---- */
.bo_count { font-size: 18px; font-weight: var(--font-weight-medium); color: var(--text-default); line-height: 1.5; }

/* ---- 빈 상태 no_data (게시판 공통 — Figma 438:9184 / 438:9219) ----
   데이터 없을때 = list-x 아이콘 / 검색결과 없을때 = search 아이콘. 문구만 교체해 재사용 */
.bo_empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px; min-height: 360px; padding: 0 20px; }
.bo_empty__ic { display: flex; align-items: center; justify-content: center; width: 64px; height: 64px; border-radius: var(--radius-full); background: var(--bg-raised-1); }
.bo_empty__ic svg { width: 32px; height: 32px; color: var(--text-light-muted); }
.bo_empty p { font-size: 16px; color: var(--text-light-muted); line-height: 1.5; text-align: center; }

/* ---- 학교 카드 그리드 / 카드 (Figma school_item) ---- */
.school_grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
.school_card { display: flex; flex-direction: column; background: var(--bg-page); border: 1px solid var(--border-soft); border-radius: 0 24px 0 24px; overflow: hidden; }
.school_card__thumb { position: relative; display: block; aspect-ratio: 464 / 260; overflow: hidden; border-bottom: 1px solid var(--border-soft); }
.school_card__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.school_card__chip { position: absolute; left: 20px; bottom: 19px; }
.school_card__body { display: flex; flex-direction: column; gap: 12px; padding: 24px; }
.school_card__head { display: flex; flex-direction: column; gap: 8px; }
.school_card__name { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.school_card__en { font-size: 14px; font-weight: var(--font-weight-semibold); color: var(--text-light-muted); line-height: 1.5; }
.school_card__desc { font-size: 14px; color: var(--text-muted); line-height: 1.5; }
.school_card__meta { list-style: disc; padding-left: 21px; font-size: 14px; color: var(--text-muted); line-height: 1.5; }

/* ---- 추천 프로그램 카드 (Figma program_item / 0103 366:10285 · 0203 366:11630) ----
   카드 464×263, 이미지 위에 하단 그라디언트 박스(464×150, pad24 gap4, 내용 하단정렬)를 얹는 구조.
   그라디언트는 Figma 값 그대로: 180deg, #343434 alpha 0 → 0.4 (70%) */
.prog_grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.prog_item { position: relative; display: flex; flex-direction: column; justify-content: flex-end; aspect-ratio: 464 / 263; border-radius: 0 24px 0 24px; overflow: hidden; }
.prog_item__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.prog_item__body { position: relative; z-index: 1; display: flex; flex-direction: column; justify-content: flex-end; gap: 4px; min-height: 150px; padding: 24px; background: linear-gradient(180deg, rgba(52,52,52,0) 0%, rgba(52,52,52,.4) 70%); }
.prog_item__title { font-size: 24px; font-weight: var(--font-weight-black); color: #fff; line-height: 1.4; }   /* Figma 24/900 lh33.6 */
.prog_item__desc { font-size: 16px; font-weight: var(--font-weight-semibold); color: #fff; line-height: 1.4; }   /* Figma 16/600 lh22.4 */
.prog_item:hover .prog_item__img { transform: scale(1.03); }
.prog_item__img { transition: transform .4s ease; }

/* ---- 추천 프로그램 상세: HTML 영역(관리자 업로드 콘텐츠 iframe) ----
   Figma 366:10598 / 422:14690 — 서브히어로 아래 padding-top 100, 화면 끝까지 full-bleed.
   iframe 문서는 부모 CSS를 상속하지 않는다 → 콘텐츠 쪽에서 css/focus-iframe.css 를 직접 물린다.
   높이는 js/design.js 가 콘텐츠 높이에 맞춰 조절(동일 출처 전제). 스크립트 실패 시를 대비해 min-height 확보 */
.prog_html { padding-top: 100px; }
.prog_html__frame { display: block; width: 100%; min-height: 600px; border: 0; }

/* ---- 캠프 / 유튜브 카드 (Figma camp_item 438:13384 · Youtube_item 427:32104) ----
   두 컴포넌트의 껍데기가 완전히 같다: 464×(412|391) · 썸네일 464×260 · 본문 pad24 gap12 · 제목 18/600 2줄.
   ※ .school_card 와 달리 썸네일에 border-bottom 이 없다(Figma 확인) → 별도 클래스 */
.bo_card_grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.bo_card { display: flex; flex-direction: column; background: var(--bg-page); border: 1px solid var(--border-soft); border-radius: 0 24px 0 24px; overflow: hidden; }
.bo_card__thumb { position: relative; display: block; aspect-ratio: 464 / 260; overflow: hidden; }
.bo_card__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.bo_card__chips { position: absolute; top: 20px; right: 20px; z-index: 1; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }   /* Figma: 썸네일 우측 상단(top20 right20) */
.bo_card__body { display: flex; flex-direction: column; gap: 12px; padding: 24px; }
/* Figma 제목 = autoResize:TRUNCATE + 높이 50 고정 → 글자 수와 무관하게 항상 2줄을 예약하고 넘치면 말줄임.
   (카드 높이를 464×412 / 464×391 로 맞추는 설계라 min-height 가 아니라 고정 2줄이 맞다) */
.bo_card__title { height: 2.8em; font-size: 18px; font-weight: var(--font-weight-semibold); color: var(--text-default); line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bo_card__meta { list-style: disc; padding-left: 21px; font-size: 14px; color: var(--text-muted); line-height: 1.5; }
.bo_card__sub { font-size: 14px; color: var(--text-light-muted); line-height: 1.5; }   /* 유튜브 '조회 4.2만 · 2주 전' */

/* ---- 게시판 목록형 (Figma notice_item 422:15313) ----
   ★ Figma strokeWeight 는 1로 나오지만 individualStrokeWeights 가 진짜 값이다:
     목록 컨테이너 = top 2px #0A0A0A(상단만) / 각 행 = bottom 1px #E5E5E5 */
.bo_list { display: flex; flex-direction: column; background: var(--bg-page); border-top: 2px solid var(--text-default); }
.bo_list__item { display: flex; flex-direction: column; gap: 4px; padding: 24px 24px 20px; border-bottom: 1px solid var(--border-soft); }
.bo_list__item.is-notice { background: var(--bg-sunken); }   /* 공지(상단 고정) 행 */
.bo_list__row { display: flex; align-items: center; gap: 12px; min-width: 0; }
.bo_list__title { flex: 0 1 auto; min-width: 0; font-size: 18px; font-weight: var(--font-weight-semibold); color: var(--text-default); line-height: 1.4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }   /* Figma maxLines=1 */
.bo_list__meta { display: flex; flex-wrap: wrap; gap: 8px; font-size: 16px; color: var(--text-light-muted); line-height: 1.5; }

/* ---- 게시판 상세 (Figma 0701 427:31674) ---- */
.bo_doc { border-top: 2px solid #000; }   /* Figma 값 그대로 (목록은 #0A0A0A, 상세는 #000 — 디자인 불일치이나 원본 유지) */
.bo_head { display: flex; flex-direction: column; gap: 12px; padding: 40px 32px; border-bottom: 1px solid var(--border-soft); }
.bo_head__title { font-size: 20px; font-weight: var(--font-weight-semibold); color: var(--text-default); line-height: 1.4; }
.bo_head__meta { display: flex; flex-wrap: wrap; gap: 12px; font-size: 16px; color: var(--text-light-muted); line-height: 1.5; }
.bo_content { display: flex; flex-direction: column; align-items: center; gap: 48px; padding: 64px 32px; border-bottom: 1px solid var(--border-soft); font-size: 16px; color: var(--text-default); line-height: 1.5; }
.bo_content > * { max-width: 100%; }
.bo_content p { align-self: stretch; white-space: pre-line; }   /* 관리자 에디터 원문 줄바꿈 보존 */
.bo_content img { display: block; height: auto; }

/* ---- 캠프 상세: 본문 접기/펼치기 (Figma 438:13999 / 본문 프레임 450:10496) ----
   Figma 구조: [제목 34] gap32 [클립박스 600(clipsContent)] gap32 [더보기 88(=버튼48+pad-b40)]
   ↑ 이 셋이 한 프레임(912×786) 안에 있고 **하단 1px 구분선은 더보기 아래**에 그려진다.
   (.bo_body 를 쓰면 padding-bottom+border 가 버튼 '위'로 들어가 위치가 어긋난다) */
.bo_camp { display: flex; flex-direction: column; gap: 32px; border-bottom: 1px solid var(--border-soft); }
.bo_fold { position: relative; overflow: hidden; }
.bo_fold:not(.is-open) { max-height: 600px; }
/* 잘린 지점이 뚝 끊겨 보이지 않게 하단 페이드 (2026-07-15 사용자 요청 — Figma엔 없는 요소) */
.bo_fold:not(.is-open)::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 160px; pointer-events: none;
    background: linear-gradient(180deg, rgba(255,255,255,0) 0%, var(--bg-page) 100%);
}
.bo_fold__more { display: flex; justify-content: center; padding-bottom: 40px; }

/* ---- 캠프 상세 사이드카드 머리말(예약방법) — 나머지는 .school_spec 재사용 ---- */
.school_spec__head { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.school_spec__head h2 { font-size: 18px; font-weight: var(--font-weight-semibold); color: var(--text-default); line-height: 1.4; }
.school_spec__head p { font-size: 16px; color: var(--text-default); line-height: 1.5; }

/* 유튜브 모달은 새로 만들지 않는다 — 메인(index.html)의 `.modal-backdrop#ytModal` > `.modal.modal-video` 를 그대로 복사해 쓴다.
   Figma 유튜브 모달(427:37365)과 기존 컴포넌트가 이미 일치: 폭 960 · 백드롭 검정20% · 닫기 56 원형이 영상 20px 아래.
   (2026-07-15 Figma 모달 스펙에 맞춰 .video-frame radius 16→24, 닫기 아이콘 28→32 만 교정) */

/* ---- 페이지네이션 (Figma pager) ---- */
.pager { display: flex; align-items: center; justify-content: center; gap: 16px; }
.pager__nums { display: flex; align-items: center; gap: 4px; }
.pager__arrow { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: var(--radius-full); border: 1px solid var(--border-subtle); background: var(--bg-page); color: var(--text-default); }
.pager__arrow:hover { background: var(--bg-sunken); }
.pager__arrow svg { width: 20px; height: 20px; }
.pager__arrow:disabled { color: var(--text-disabled); border-color: var(--border-soft); background: var(--bg-page); pointer-events: none; }
.pager__num { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; height: 40px; padding: 0 16px; border-radius: var(--radius-full); font-size: 14px; font-weight: var(--font-weight-semibold); color: var(--text-default); }
.pager__num:hover { background: var(--bg-sunken); }
.pager__num[aria-current="page"] { background: var(--cta-solid); color: var(--text-on-cta); }

/* ---- 상세: 본문 탭 (Figma gnb_1li 재사용 형태, h56 / active 골드 2px) ----
   고정 헤더(72 / 1200+ 112) 바로 아래에 스티키. 본문이 뒤로 지나가므로 배경 필수 */
.bo_tab { position: sticky; top: 72px; z-index: 100; display: flex; background: var(--bg-page); border-bottom: 1px solid var(--border-soft); }
@media (min-width: 1200px) { .bo_tab { top: 112px; } }
.bo_tab__link { display: inline-flex; align-items: center; justify-content: center; height: 56px; padding: 0 16px; font-size: 16px; font-weight: var(--font-weight-semibold); color: var(--text-default); white-space: nowrap; }
.bo_tab__link:first-child { padding-left: 0; }   /* 첫 탭은 본문 제목과 좌측 라인을 맞춤 */
.bo_tab__link span { display: inline-flex; align-items: center; height: 100%; border-bottom: 2px solid transparent; }
.bo_tab__link[aria-current="true"] span { border-bottom-color: var(--secondary-50); }

/* ---- 상세: 본문 ---- */
.bo_body { display: flex; flex-direction: column; gap: 48px; padding-bottom: 40px; border-bottom: 1px solid var(--border-soft); }
.bo_sect { display: flex; flex-direction: column; gap: 24px; }
.bo_sect__title { font-size: 24px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.bo_sect__text { font-size: 16px; color: var(--text-default); line-height: 1.5; }
.bo_sect__text p + p { margin-top: 24px; }   /* Figma: 문단 사이 빈 줄 1개(=line-height 24) */

/* 학교 소개 영상 (썸네일 + 재생 + 러닝타임)
   재생 버튼은 메인 유튜브 섹션의 .yt-play(56 원형 + black/20 + yt_play.svg)를 그대로 재사용 — Figma 스펙 동일 */
.bo_video { position: relative; display: block; width: 100%; aspect-ratio: 912 / 511; border-radius: 0 24px 0 24px; overflow: hidden; }
.bo_video__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.bo_video__time { position: absolute; right: 20px; bottom: 20px; background: rgba(0,0,0,.2); color: #fff; }

/* ---- 상세: 이전글/다음글 (Figma bo_controller) ---- */
.bo_ctrl { border-bottom: 1px solid var(--border-soft); }
.bo_ctrl__row { display: flex; align-items: center; gap: 16px; padding: 8px 0; }
.bo_ctrl__row + .bo_ctrl__row { border-top: 1px solid var(--border-soft); }
.bo_ctrl__label { flex: none; }
.bo_ctrl__title { flex: 1 1 0; min-width: 0; font-size: 18px; font-weight: var(--font-weight-medium); color: var(--text-default); line-height: 1.5; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bo_ctrl__title.is-none { color: var(--text-disabled); }
.bo_foot { display: flex; justify-content: center; padding-top: 40px; }

/* ---- 상세: 학교 정보 사이드 카드 (Figma 480 / r 0 24 0 24) ---- */
.school_spec { flex: none; width: 480px; display: flex; flex-direction: column; gap: 24px; padding: 32px; border: 1px solid var(--border-subtle); border-radius: 0 24px 0 24px; }
.school_spec__list { display: flex; flex-direction: column; gap: 8px; }
.school_spec__row { display: flex; align-items: center; gap: 16px; }
.school_spec__row dt { flex: none; font-size: 14px; color: var(--text-light-muted); line-height: 1.5; }
.school_spec__row dd { flex: 1 1 0; min-width: 0; font-size: 14px; color: var(--text-default); line-height: 1.5; text-align: right; overflow-wrap: break-word; }   /* Figma와 동일하게 URL은 '/'·',' 에서 우선 줄바꿈, 안 맞을 때만 강제 분리 */
.school_spec__btns { display: flex; gap: 12px; }
.school_spec__btns .btn { flex: 1 1 0; }
/* 별점 (Figma star_rev 16px, 채움 primary-40 / 빈 값 #B2B2B2) */
.stars { display: inline-flex; align-items: center; gap: 2px; }
.stars svg { width: 16px; height: 16px; color: var(--text-disabled); }
.stars svg.is-on { color: var(--primary-40); }

/* 상세 2단 레이아웃 (본문 912 + 사이드 480, gap 48) */
.bo_view { display: flex; align-items: flex-start; justify-content: center; gap: 48px; }
.bo_view__main { flex: 1 1 0; min-width: 0; }
/* 학교 정보 카드도 스티키 — 고정 헤더 아래 16 (모바일은 본문 위로 올라가므로 스티키 안 함).
   부모 .bo_view가 align-items:flex-start 여야 sticky가 동작한다(stretch면 높이가 꽉 차 안 붙음) */
@media (min-width: 1024px) { .school_spec { position: sticky; top: 88px; } }    /* 헤더 72 + 16 */
@media (min-width: 1200px) { .school_spec { top: 128px; } }                     /* 헤더 112 + 16 */

@media (max-width: 1023px) {
    .subhero__band { left: 0; border-radius: 0 0 0 20px; }
    .subhero__content { min-height: 0; padding-top: 32px; padding-bottom: 32px; gap: 24px; }
    .subhero__bg { object-position: 16% center; }
    .subhero__title { font-size: 24px; }
    .subhero__sub { font-size: 15px; margin-top: 8px; }
    .subhero__sub br { display: none; }
    .wf_card { padding: 20px; gap: 16px; }
    .wf_card__ic { width: 48px; height: 48px; }
    .wf_card__ic svg { width: 24px; height: 24px; }
    .wf_card__title { font-size: 16px; }
    .wf_card__desc { font-size: 14px; }
    .region__badge { width: 72px; height: 36px; font-size: 15px; }
    .fe-table th { padding: 12px 14px; font-size: 13px; }
    .fe-table td { font-size: 13px; padding: 12px 10px; height: auto; }
    .fe-table--roomy td { height: auto; }
    /* 모바일: 학비 표(특징 컬럼)가 너무 좁아지지 않게 최소 너비 부여 → .fe-table-wrap에서 가로 스크롤 */
    .fe-table--roomy { min-width: 600px; }
    .chip { font-size: 12px; padding: 6px 12px; }
    .svc_col { border-right: 0; }

    /* ---- 국제학교 목록·상세 (모바일: PC 디자인만 있어 01-A5에 따라 축소 적용) ---- */
    .subhero--grad { height: auto; }   /* 모바일은 세로 스택 → 고정 높이 해제 */
    /* align-items:flex-start(PC용)를 남기면 세로 스택에서 자식 폭이 콘텐츠 폭이 돼 이미지 원본 크기로 폭발한다 → stretch 필수 */
    .subhero__row { flex-direction: column; align-items: stretch; gap: 24px; }
    /* 갤러리: 모바일은 콘텐츠 폭(=화면 - 좌우 기준 패딩 20)에 꽉 차게.
       PC용 max-width:46%가 남으면 갤러리가 절반 크기로 쪼그라들므로 반드시 해제 */
    .gallery { width: auto; max-width: none; }
    .gallery__nav--prev { left: 8px; }
    .gallery__nav--next { right: 8px; }
    .gallery__nav { width: 36px; height: 36px; background: rgba(255,255,255,.9); }
    .gallery__nav svg { width: 18px; height: 18px; }
    /* 썸네일: 모바일은 축소 (정렬은 전 사이즈 가운데) */
    .gallery__thumbs { gap: 6px; padding: 8px; }
    .gallery__thumb { width: 36px; height: 36px; }
    .gallery__thumb.is-active { border-width: 2px; }
    .subhero__name { font-size: 15px; }

    .bo_sch { flex-direction: column; gap: 8px; padding: 16px; border-radius: 0 20px 0 20px; }
    .bo_sch__cat, .bo_sch__kw { width: 100%; }
    .input-lg { height: 48px; font-size: 14px; }
    .bo_count { font-size: 15px; }

    .school_grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
    .school_card { border-radius: 0 20px 0 20px; }
    .school_card__body { padding: 16px; gap: 8px; }
    .school_card__name { font-size: 16px; }
    .school_card__en, .school_card__desc, .school_card__meta { font-size: 13px; }
    .school_card__chip { left: 12px; bottom: 12px; }

    /* HTML 영역(iframe) — 모바일 상단 여백 축소 (PC 100 → 32, 게시판형 리듬과 통일) */
    .prog_html { padding-top: 32px; }

    /* 캠프/유튜브 카드 — 모바일 축소 (01-A5) */
    .bo_card_grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
    .bo_card { border-radius: 0 20px 0 20px; }
    .bo_card__body { padding: 16px; gap: 8px; }
    .bo_card__title { font-size: 16px; }
    .bo_card__meta, .bo_card__sub { font-size: 13px; }
    .bo_card__chips { top: 12px; right: 12px; gap: 6px; }
    /* 유튜브 카드 재생 버튼·러닝타임 — PC 56/24 는 좁은 썸네일에 과도 (2026-07-15 사용자 피드백).
       기존 .yt-list-item 모바일 규칙(36/15)과 동일한 값으로 맞춤 */
    .bo_card .yt-play { width: 36px; height: 36px; }
    .bo_card .yt-play svg, .bo_card .yt-play img { width: 15px; height: 15px; }
    .bo_card .yt-badge { right: 12px; bottom: 12px; padding: 4px 10px; font-size: 12px; }

    /* 게시판 목록 — 좌우 패딩 축소 + 폰트 축소 */
    .bo_list__item { padding: 16px 12px 14px; }
    .bo_list__title { font-size: 15px; }
    .bo_list__meta { font-size: 13px; }

    /* 게시판 상세 — Figma pad(40/32)·(64/32) → 모바일 축소 */
    .bo_head { padding: 20px 12px; gap: 8px; }
    .bo_head__title { font-size: 17px; }
    .bo_head__meta { font-size: 13px; gap: 8px; }
    .bo_content { padding: 24px 12px; gap: 24px; font-size: 15px; }

    .bo_fold:not(.is-open) { max-height: 420px; }

    /* 유튜브 모달 닫기 버튼 — 모바일 축소 (메인 #ytModal 공용) */
    .modal-video__close { width: 44px; height: 44px; top: calc(100% + 12px); }
    .modal-video__close svg { width: 24px; height: 24px; }

    /* 추천 프로그램 카드 — 모바일 축소 (01-A5: 제목 24→18, 설명 16→14) */
    .prog_grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
    .prog_item { border-radius: 0 20px 0 20px; }
    .prog_item__body { min-height: 0; padding: 16px; }
    .prog_item__title { font-size: 18px; }
    .prog_item__desc { font-size: 14px; }

    /* 세로 스택 시 align-items:flex-start가 남으면 자식 폭이 stretch가 아니라 콘텐츠 폭이 돼
       내부 표/긴 텍스트가 뷰포트를 밀어 가로 스크롤을 만든다 → stretch로 고정 + 폭 상한 */
    .bo_view { flex-direction: column; align-items: stretch; gap: 24px; }
    .bo_view__main { width: 100%; min-width: 0; max-width: 100%; }
    /* PC는 우측 사이드였지만 모바일은 세로 스택 → 학교 정보·상담 버튼이 이전글/목록 뒤로 밀리지 않게 본문 위로 (01-A5) */
    .school_spec { order: -1; width: 100%; padding: 20px; border-radius: 0 20px 0 20px; }
    .bo_tab__link { padding: 0 10px; font-size: 14px; }
    .bo_tab__link:first-child { padding-left: 0; }
    .bo_body { gap: 32px; }
    .bo_sect { gap: 16px; }
    .bo_sect__title { font-size: 20px; }
    .bo_sect__text { font-size: 14px; }
    .bo_video .yt-play { width: 44px; height: 44px; }
    .bo_video .yt-play img { width: 20px; height: 20px; }

    /* 이전글/다음글 — 모바일 축소 (btn-lg 56 → 40, 라벨/제목 14) */
    .bo_ctrl__row { gap: 8px; }
    .bo_ctrl__label.btn { height: 40px; padding: 0 8px; font-size: 14px; gap: 4px; }
    .bo_ctrl__label.btn svg { width: 18px; height: 18px; }
    .bo_ctrl__title { font-size: 14px; }

    /* 페이지네이션 — 모바일 축소 (40 → 32) */
    .pager { gap: 8px; }
    .pager__arrow { width: 32px; height: 32px; }
    .pager__arrow svg { width: 16px; height: 16px; }
    .pager__num { min-width: 32px; height: 32px; padding: 0 10px; font-size: 13px; }

    /* 학교 정보 카드 버튼 — 모바일 축소 (btn-lg 56 → 48, 14px) */
    .school_spec__btns .btn { height: 48px; padding: 0 16px; font-size: 14px; }
}

@media (max-width: 479px) {
    .school_grid { grid-template-columns: minmax(0, 1fr); }
    .prog_grid { grid-template-columns: minmax(0, 1fr); }
}

/* ===================== 한국유학 (Study in Korea) ===================== */

/* 서브히어로 언어 스위치(English 토글) — 정적 플레이스홀더 [개발: 영문 사이트 전환 예정] */
.lang-switch { display: inline-flex; align-items: center; gap: 8px; background: transparent; border: 0; cursor: pointer; padding: 0; }
.lang-switch__track { position: relative; width: 56px; height: 32px; border-radius: var(--radius-full); background: var(--neutral-90); transition: background .2s; flex: none; }
.lang-switch__knob { position: absolute; top: 4px; left: 4px; width: 24px; height: 24px; border-radius: var(--radius-full); background: var(--bg-page); box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: left .2s; }
.lang-switch[aria-pressed="true"] .lang-switch__track { background: var(--accent-solid); }
.lang-switch[aria-pressed="true"] .lang-switch__knob { left: 28px; }
/* 페이지 로드 시 knob 위치를 html.is-en(<head>에서 body 전에 설정)으로도 구동 → 첫 페인트부터 올바른 위치라
   aria-pressed 를 JS가 늦게 설정해 생기던 좌→우 슬라이드 애니메이션이 없다(수동 토글 시엔 is-en 이 바뀌어 정상 애니메이션). */
html.is-en .lang-switch__track { background: var(--accent-solid); }
html.is-en .lang-switch__knob { left: 28px; }
.lang-switch__label { font-size: 14px; color: var(--text-default); line-height: 1.5; }
/* 언어 전환 FOUC 방지: EN 저장 상태로 로드되면 <head> 인라인 스크립트가 html.is-en 을 즉시 걸어,
   JS가 텍스트를 영문으로 교체(lang-ready)하기 전까지 번역 대상 텍스트를 숨겨 국문 깜빡임을 없앤다.
   (한국유학 어학연수/대학 페이지에만 is-en 이 걸리므로 다른 페이지엔 영향 없음) */
html.is-en:not(.lang-ready) [data-en] { visibility: hidden; }

/* 입학 절차 원형 스텝 그리드 — 원이 항상 288(Figma)~ 유지되도록 auto-fit.
   width 기반 열 수 자동 결정(1920→5열 288 tangent, 1440→5, 1200→4, 900→3, 600→2, 모바일→1). gap 0 = Figma tangent.
   min(288,100%)로 320px 이하에서도 가로 오버플로 없음. aspect-ratio 1/1 + 작은 원에서 텍스트가 아래 행과 겹치던 문제 해결. */
.kstep_grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(288px, 100%), 1fr)); gap: 0; }

/* 왜 한국에서 배워야 하는가 — 골드 번호배지 가로 카드 */
.knum_grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
.knum_card { display: flex; align-items: center; gap: 24px; padding: 32px; background: var(--bg-raised-1); border-radius: 0 24px 0 24px; overflow: hidden; }
.knum_no { flex: none; width: 36px; height: 36px; border-radius: var(--radius-full); background: var(--secondary-solid); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: var(--font-weight-semibold); line-height: 1.4; }
.knum_title { flex: 1 1 0; min-width: 0; font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }

/* 학비 안내 — 사진 밴드 + 네이비 원형 오버랩(하단 90 돌출) */
.tuition_band { display: flex; flex-direction: column; align-items: center; }
.tuition_band__photo { position: relative; width: 100%; height: 370px; border-radius: 0 28px 0 28px; overflow: hidden; margin-bottom: -230px; }
.tuition_band__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.tuition_band__circle { position: relative; z-index: 1; box-sizing: border-box; width: 320px; height: 320px; padding: 32px; border-radius: var(--radius-full); background: var(--primary-20); box-shadow: 0 0 0 50px rgba(9,43,80,.1); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; text-align: center; }
.tuition_band__circle .t-label  { font-size: 16px; font-weight: var(--font-weight-bold); color: #fff; line-height: 1.5; }
.tuition_band__circle .t-amount { font-size: 20px; font-weight: var(--font-weight-bold); color: #fff; line-height: 1.4; }
.tuition_band__circle .t-note   { font-size: 16px; color: #fff; line-height: 1.5; }

@media (max-width: 1024px) {
    .knum_grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
    .tuition_band__photo { height: 260px; margin-bottom: -190px; }
    .tuition_band__circle { width: 280px; height: 280px; padding: 24px; box-shadow: 0 0 0 32px rgba(9,43,80,.1); }
    .tuition_band__circle .t-amount { font-size: 18px; }
}
@media (max-width: 559px) {
    .knum_grid { grid-template-columns: 1fr; }
    .knum_card { padding: 20px; gap: 16px; }
    .knum_title { font-size: 16px; }
    /* 입학 절차 원형 스텝 — 1열(모바일)에서 원이 화면 폭 전체로 커지지 않게 상한(320) + 가운데 정렬 */
    .step-circle--fill { max-width: 320px; margin-left: auto; margin-right: auto; }
}

/* =========================================================================
   06 포커스 소개 (about / about-team / about-location / about-en)
   Figma 06_포커스 소개 694:16988 — 신규 셀렉터만(기존 페이지 영향 없음)
   ========================================================================= */

/* WHY 포커스 번호 카드 (0601 3카드 · 0604 About 3카드) — bg raised-1, 대각 r24 */
.why_num { background: var(--bg-raised-1); border-radius: 0 var(--radius-lg) 0 var(--radius-lg); padding: 32px; display: flex; gap: 24px; align-items: flex-start; }
.why_num--center { align-items: center; }
.why_num__no { flex: none; width: 36px; height: 36px; border-radius: var(--radius-full); background: var(--secondary-solid); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: var(--font-weight-semibold); line-height: 1.4; }
.why_num__body { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.why_num__title { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.why_num__desc { font-size: 16px; color: var(--text-muted); line-height: 1.5; }

/* 숫자로 보는 포커스 — 네이비 밴드(.stats-band 재사용) 안 2×3 번호 그리드 */
.stats2 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 32px; row-gap: 48px; padding: 96px 0; }
.stats2__cell { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; text-align: center; }
.stats2__num { font-size: 40px; font-weight: var(--font-weight-bold); color: #fff; line-height: 1.4; }
.stats2__label { font-size: 20px; font-weight: var(--font-weight-medium); color: #fff; line-height: 1.4; }

/* 회사 연혁 아코디언 (native details) */
.hist { border-top: 1px solid var(--border-subtle); }
.hist__item { border-bottom: 1px solid var(--border-subtle); background: var(--bg-page); }
.hist__item > summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 24px 32px; transition: padding .28s ease; }
.hist__item > summary::-webkit-details-marker { display: none; }
.hist__item[open] > summary { padding-bottom: 16px; }
.hist__year { flex: 1 1 0; min-width: 0; font-size: 24px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.hist__toggle { flex: none; width: 40px; height: 40px; border-radius: var(--radius-full); display: flex; align-items: center; justify-content: center; background: var(--bg-page); border: 1px solid var(--border-subtle); }
.hist__toggle svg { width: 20px; height: 20px; color: var(--text-default); transition: transform .28s ease; }
.hist__item[open] .hist__toggle { background: var(--accent-solid); border-color: var(--accent-solid); }
.hist__item[open] .hist__toggle svg { transform: rotate(180deg); color: #fff; }
.hist__body { padding: 0 32px 24px; display: flex; flex-direction: column; gap: 16px; }
.hist__row { display: flex; gap: 20px; align-items: flex-start; }
.hist__rowyear { flex: none; width: 150px; font-size: 16px; font-weight: var(--font-weight-semibold); color: var(--text-default); line-height: 1.4; }
.hist__list { flex: 1 1 0; min-width: 0; list-style: disc; padding-left: 21px; font-size: 14px; color: var(--text-muted); }
.hist__list li { line-height: 1.7; }
.hist__item::details-content { block-size: 0; overflow: clip; transition: block-size .28s ease, content-visibility .28s allow-discrete; }
.hist__item[open]::details-content { block-size: auto; }

/* 팀 소개 카드 (사진 플레이스홀더 상단 + 이름/역할/설명) */
.team_grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; align-items: start; }
.team_card { border: 1px solid var(--border-soft); border-radius: var(--radius-md); overflow: hidden; display: flex; flex-direction: column; }
.team_ph { height: 220px; background: var(--bg-sunken); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; }
.team_ph__t { font-size: 14px; font-weight: var(--font-weight-medium); color: var(--text-light-muted); line-height: 1.5; }
.team_ph__s { font-size: 14px; color: var(--text-light-muted); line-height: 1.5; }
.team_card__body { padding: 24px; display: flex; flex-direction: column; gap: 8px; }
.team_card__nmrow { display: flex; gap: 8px; align-items: baseline; }
.team_card__nm { font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.team_card__role { font-size: 14px; font-weight: var(--font-weight-semibold); color: var(--secondary-solid); line-height: 1.5; }
.team_card__desc { font-size: 14px; color: var(--text-muted); line-height: 1.5; }

/* 오시는 길 — 지도 박스 + 정보 리스트 */
.loc_map { position: relative; background: var(--bg-sunken); border: 1px solid var(--border-soft); overflow: hidden; }
.loc_map img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.loc_map__ph { position: relative; z-index: 1; font-size: 16px; font-weight: var(--font-weight-medium); color: var(--text-light-muted); line-height: 1.5; }
.loc_list { display: flex; flex-direction: column; }
.loc_row { display: flex; gap: 24px; align-items: flex-start; padding: 20px 0; font-size: 16px; line-height: 1.5; }
.loc_row + .loc_row { border-top: 1px solid var(--border-soft); }
.loc_row dt { flex: none; width: 96px; font-weight: var(--font-weight-semibold); color: var(--text-muted); }
.loc_row dd { flex: 1 1 0; min-width: 0; color: var(--text-default); }
.loc_list--sm .loc_row { gap: 16px; padding: 16px 0; font-size: 14px; }
.loc_list--sm .loc_row dt { width: 72px; }
.loc_badge { align-self: flex-start; display: inline-flex; padding: 2px 12px; border-radius: var(--radius-full); font-size: 14px; font-weight: var(--font-weight-semibold); color: #fff; line-height: 1.5; }

/* English 소개 — What We Do 서비스 카드 + Locations 카드 */
.en_card { background: var(--bg-page); border: 1px solid var(--border-soft); border-radius: 0 var(--radius-md) 0 var(--radius-md); padding: 32px; display: flex; align-items: center; gap: 20px; box-shadow: 0 6px 13px rgba(0,0,0,.05); }
.en_card__no { flex: none; width: 36px; height: 36px; border-radius: var(--radius-full); background: var(--secondary-solid); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: var(--font-weight-semibold); line-height: 1.4; }
.en_card__body { flex: 1 1 0; min-width: 0; display: flex; gap: 8px; align-items: flex-start; }
.en_card__title { flex: none; width: 260px; font-size: 20px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.en_card__desc { flex: 1 1 0; min-width: 0; font-size: 16px; color: var(--text-muted); line-height: 1.5; }
.en_loc { flex: 1 1 0; min-width: 0; height: 140px; background: var(--bg-page); border: 1px solid var(--border-soft); border-radius: 0 var(--radius-md) 0 var(--radius-md); box-shadow: 0 6px 13px rgba(0,0,0,.05); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; padding: 20px 16px; text-align: center; }
.en_loc__t { font-size: 24px; font-weight: var(--font-weight-bold); color: var(--text-default); line-height: 1.4; }
.en_loc__s { font-size: 16px; color: var(--text-muted); line-height: 1.5; }

/* --- 06 포커스 소개 반응형(모바일 폰트/열 축소) --- */
@media (max-width: 1023px) {
    .team_grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .en_card__title { width: 200px; }
}
@media (max-width: 767px) {
    .stats2 { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 16px; row-gap: 32px; padding: 48px 0; }
    .stats2__num { font-size: 26px; }
    .stats2__label { font-size: 14px; }
    .why_num { padding: 24px; gap: 16px; }
    .why_num__title { font-size: 16px; }
    .why_num__desc { font-size: 14px; }
    .hist__item > summary { padding: 20px; }
    .hist__body { padding: 0 20px 20px; }
    .hist__year { font-size: 20px; }
    .hist__row { flex-direction: column; gap: 4px; }
    .hist__rowyear { width: auto; }
    .en_card { padding: 24px; gap: 16px; }
    .en_card__body { flex-direction: column; gap: 4px; }
    .en_card__title { width: auto; font-size: 16px; }
    .en_card__desc { font-size: 14px; }
    .en_loc__t { font-size: 20px; }
}
@media (max-width: 559px) {
    .team_grid { grid-template-columns: 1fr; }
}

/* 오시는 길 — 실제 지도 임베드(구글 iframe / 카카오 약도) */
.loc_map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.loc_kakao .root_daum_roughmap { width: 100% !important; max-width: 100% !important; }

/* ============================================================
   PHP앱 전용 추가 스타일 (게시판 검색·토스트·외부링크)
   — 퍼블리싱 design.css에는 없는 개발 규칙. 최신 퍼블본 병합 시 유지.
   ============================================================ */
/* [토스트] 전화번호 복사 알림 (js feToast) */
/* 토스트 표시용 위치 래퍼(컴포넌트 재정의 아님, 알림 위치·페이드만) — JS(feToast)가 사용
   상단 중앙, 고정 헤더(모바일 72px) 아래. 데스크톱(≥1200px) 헤더 112px 는 아래 미디어쿼리로 보정 */
.fe-toast-wrap { position: fixed; left: 50%; top: 88px; transform: translateX(-50%); z-index: 300; display: flex; flex-direction: column; align-items: center; gap: 10px; pointer-events: none; }
.fe-toast-wrap .toast { opacity: 0; transform: translateY(-8px); transition: opacity .25s, transform .25s; }
.fe-toast-wrap .toast.is-show { opacity: 1; transform: translateY(0); }
@media (min-width: 1200px) { .fe-toast-wrap { top: 128px; } }

/* [게시판 검색] 커스텀 지우기(X)·초기화 버튼 (fe-list.js) */
/* 브라우저 기본 검색 취소버튼(회색·호버시만 표시) 제거 → 커스텀 X 로 대체 */
.bo_sch__kw input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }
/* 검색어 지우기(X): 검은색, 입력값 있으면 항상 노출(호버 무관), 검색버튼 왼쪽 */
.bo_sch__clear { position: absolute; right: 44px; top: 50%; transform: translateY(-50%); display: none; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: 0; background: transparent; color: #111; font-size: 20px; line-height: 1; cursor: pointer; }
.bo_sch__clear:hover { color: #000; }
.bo_sch__kw.has-value .input { padding-right: 74px; }
.bo_sch__kw.has-value .bo_sch__clear { display: inline-flex; }
/* 초기화 버튼은 디자인 시스템 컴포넌트 사용: .btn.btn-base.btn-icon.btn-outline.btn-neutral (fe-list.js 주입) */
.bo_sch .bo_sch__reset { flex: none; }

/* [외부링크] 위치·홈페이지 등 external link 아이콘 (design.js 자동부착) */
/* 위치·홈페이지 등 외부 링크: 강조색 + 밑줄 + 외부링크 아이콘으로 링크임을 명확히 */
.school_spec__row dd a { color: var(--accent-solid); text-decoration: underline; text-underline-offset: 2px; }
.school_spec__row dd a .extlink { display: inline-block; width: 13px; height: 13px; vertical-align: -1px; margin-left: 2px; }
/* 리치 본문(관리자 HTML) 내 외부 링크 아이콘 — design.js 가 자동 부착(.bo_content / .bo_sect__text) */
.bo_content a .extlink,
.bo_sect__text a .extlink { display: inline-block; width: 14px; height: 14px; vertical-align: -2px; margin-left: 3px; flex-shrink: 0; }
