@charset "UTF-8";
/* ════════════════════════════════════════════════════════════
   기찬에듀 기찬수학 — shared.css v2
   토큰 SSOT: 프로젝트 .impeccable.md / design-system/colors_and_type.css
   구조: ① 웹폰트 ② SSOT 프리미티브 ③ 레거시 별칭 ④ 리셋·한국어 타이포 ⑤ 컴포넌트
   ※ ③ 별칭 레이어는 precollege/schedule/contact/directions 가 쓰는 구 토큰명을
     새 팔레트로 이어주는 층이다. 지우면 해당 페이지들이 깨진다.
════════════════════════════════════════════════════════════ */

/* ── ① 웹폰트 (KS X 1001 2,350자 서브셋 · 총 396KB) ── */
@font-face{
  font-family:'Do Hyeon';
  src:url('fonts/dohyeon.woff2') format('woff2');
  font-weight:100 900;            /* 단일 웨이트가 전 범위 커버 → 합성 볼드 차단 */
  font-style:normal; font-display:swap;
}
@font-face{
  font-family:'NanumGothic';
  src:url('fonts/nanumgothic-400.woff2') format('woff2');
  font-weight:100 500;
  font-style:normal; font-display:swap;
}
@font-face{
  font-family:'NanumGothic';
  src:url('fonts/nanumgothic-700.woff2') format('woff2');
  font-weight:600 900;
  font-style:normal; font-display:swap;
}
/* 폴백 메트릭 정렬 — 웹폰트 로드 전후 레이아웃 이동(CLS) 억제 */
@font-face{
  font-family:'NG-fallback';
  src:local('Apple SD Gothic Neo'), local('AppleSDGothicNeo-Regular'),
      local('Malgun Gothic'), local('Noto Sans KR');
  ascent-override:88%; descent-override:22%; line-gap-override:0%; size-adjust:100%;
}

/* ── ② SSOT 프리미티브 ── */
:root{
  /* Brand — 2026-08-26 로고 픽셀 실측 (design-system/브랜드색_출처.md) */
  --color-navy:#131D88;  --color-navy-dark:#0F1669;  --color-navy-light:#1D2CD0;
  --color-red:#D10525;   --color-red-light:#FA2445;  --color-red-bg:#FBEBEE;
  --color-orange:#C5853C; --color-orange-bg:#FAF2E6; /* 서브페이지 레거시 톤 — 유지 */
  --color-yellow:#F0B429; --color-yellow-bg:#FDF7E3; /* 골드 — 어두운 배경 하이라이트 전용 */

  /* Neutral — cool-warm hybrid (SSOT colors_and_type.css) */
  --n-100:#FFFFFF; --n-99:#F7F7F4; --n-95:#F4F4F5; --n-90:#E8E8EA; --n-80:#DBDCDF;
  --n-70:#C2C4C8;  --n-60:#AEAEB6; --n-50:#9899A2; --n-40:#70737C; --n-30:#55565F;
  --n-20:#37383C;  --n-15:#323232; --n-10:#1A1C2C;

  /* Semantic */
  --color-bg-base:var(--n-100);
  --color-bg-subtle:var(--n-99);
  --color-bg-muted:var(--n-95);
  --color-fg-primary:#232323;       /* 잉크 — 순흑 금지 */
  --color-fg-muted:var(--n-40);
  --color-primary:var(--color-navy);
  --color-accent:var(--color-red);
  --color-border:rgba(112,115,124,.20);
  --color-border-strong:rgba(112,115,124,.40);
  --color-success:#00A63E; --color-info:#2B7FFF;

  /* Type */
  --font-display:'Do Hyeon','NanumGothic','NG-fallback','Apple SD Gothic Neo',sans-serif;
  --font-sans:'NanumGothic','NG-fallback',-apple-system,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;
  --font-mono:ui-monospace,'SF Mono','Menlo',monospace;

  /* Shape */
  --radius-xs:4px; --radius-sm:8px; --radius-md:12px;
  --radius-lg:16px; --radius-xl:24px; --radius-full:9999px;

  /* Elevation */
  --shadow-1:0 1px 4px rgba(30,27,22,.06);
  --shadow-2:0 3px 12px rgba(30,27,22,.08);
  --shadow-3:0 8px 28px rgba(30,27,22,.12);
  --shadow-4:0 16px 48px rgba(30,27,22,.16);

  /* Space (4pt) */
  --space-1:4px;  --space-2:8px;  --space-3:12px; --space-4:16px; --space-5:20px;
  --space-6:24px; --space-8:32px; --space-10:40px; --space-12:48px;
  --space-16:64px; --space-20:80px; --space-24:96px;

  /* Layout */
  --nav-h:64px;
  --ease:cubic-bezier(.2,.7,.2,1);
}

/* ── ③ 레거시 별칭 (하위 페이지 무편집 보호) ── */
:root{
  --navy:var(--color-navy);
  --navy-dark:var(--color-navy-dark);
  --navy-mid:var(--color-navy-light);
  --navy-light:var(--color-navy-light);

  --paper:var(--n-99);
  --surface:var(--n-95);
  --border:var(--color-border);
  --border-strong:var(--color-border-strong);

  /* --clay 는 39곳에서 쓰인다. 레드로 매핑하면 "레드는 연 1~2곳" 규칙이
     즉시 무너지므로 황토 앰버로 잇는다(기존 테라코타와 색상 거리가 가깝다). */
  --clay:var(--color-orange);
  --clay-soft:var(--color-yellow);
  --orange:var(--color-orange);
  --red:var(--color-red);
  --red-light:var(--color-red-light);
  --yellow:var(--color-yellow);

  --brand:var(--color-navy-light);
  --brand-50:var(--n-95); --brand-100:var(--n-90); --brand-700:var(--color-navy-dark);

  --r-xs:var(--radius-xs); --r-sm:var(--radius-sm); --r-md:var(--radius-md);
  --r-lg:var(--radius-lg); --r-xl:var(--radius-xl); --r-full:var(--radius-full);

  --font-d:var(--font-display);
  --font-b:var(--font-sans);
  --font-num:var(--font-mono);
}

/* ── ④ 리셋 + 한국어 타이포 ── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}

/* 같은 사이트 페이지 이동 시 크로스페이드 (지원 브라우저 한정, 무해한 점진 향상) */
@view-transition{navigation:auto;}

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto;} }

body{
  font-family:var(--font-sans);
  font-size:16px;
  line-height:1.7;
  letter-spacing:-.003em;
  color:var(--color-fg-primary);
  background:var(--color-bg-subtle);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  font-synthesis-weight:none;      /* 도현체 단일 웨이트 합성 볼드 차단 */
  word-break:keep-all;             /* 한글 단어 중간 줄바꿈 방지 */
  overflow-wrap:anywhere;          /* 긴 URL·숫자는 예외적으로 끊음 */
}

img,svg,video{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
ul,ol{list-style:none;}
button{cursor:pointer;border:none;background:none;font-family:inherit;color:inherit;}
input,textarea,select{font-family:inherit;font-size:inherit;}
table{border-collapse:collapse;}

:where(h1,h2,h3,h4,h5,h6){font-weight:700;line-height:1.3;text-wrap:balance;}
:where(p,li,dd,figcaption){text-wrap:pretty;}
:where(h1,h2,h3,.u-display){font-family:var(--font-display);letter-spacing:-.025em;}

/* 고정 네비 아래로 앵커 제목이 숨는 문제 방지 */
:where([id]){scroll-margin-top:calc(var(--nav-h) + var(--space-4));}

:focus-visible{
  outline:2px solid var(--color-navy);
  outline-offset:3px;
  border-radius:var(--radius-xs);
}

/* ── ⑤ 접근성 유틸 ── */
.sr-only{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;
}
.skip-link{
  position:absolute;top:-100px;left:var(--space-4);z-index:2000;
  background:var(--color-navy);color:#fff;padding:12px 20px;
  border-radius:var(--radius-sm);font-weight:700;font-size:14px;
  transition:top .15s var(--ease);
}
.skip-link:focus{top:var(--space-3);}

/* ── Container ── */
.container{width:100%;max-width:1200px;margin-inline:auto;padding-inline:var(--space-6);}
@media (width <= 640px){ .container{padding-inline:var(--space-4);} }

/* ════════ NAVIGATION ════════ */
.site-nav{
  position:fixed;inset:0 0 auto;z-index:1000;
  height:var(--nav-h);
  background:var(--n-99);                 /* 글래스모피즘 금지 — 불투명 + 헤어라인 */
  border-bottom:1px solid var(--color-border);
  transition:box-shadow .2s var(--ease);
}
.site-nav.scrolled{box-shadow:var(--shadow-2);}
.nav-inner{display:flex;align-items:center;height:100%;gap:var(--space-2);}
.nav-logo{display:flex;align-items:center;gap:10px;flex-shrink:0;margin-right:var(--space-2);}
.nav-logo img{height:34px;width:auto;object-fit:contain;}
.nav-logo-text{font-family:var(--font-display);font-size:20px;color:var(--color-navy);line-height:1;}
.nav-links{display:flex;align-items:center;flex:1;}
.nav-item{position:relative;}
.nav-item>a{
  display:flex;align-items:center;gap:4px;
  padding:var(--space-2) 13px;font-size:14px;font-weight:700;
  color:var(--n-20);white-space:nowrap;
  transition:color .15s var(--ease);
}
.nav-item>a:hover,.nav-item>a.active{color:var(--color-navy);}
.nav-item>a[aria-current="page"]{color:var(--color-navy);}
.nav-cta-btn{
  margin-left:auto;background:var(--color-navy);color:#fff;
  padding:10px 20px;border-radius:var(--radius-sm);
  font-size:13.5px;font-weight:700;flex-shrink:0;white-space:nowrap;
  transition:background .15s var(--ease),transform .15s var(--ease);
}
.nav-cta-btn:hover{background:var(--color-navy-dark);transform:translateY(-1px);}
.nav-ham{display:none;margin-left:auto;padding:10px;color:var(--n-20);flex-shrink:0;}

/* Mobile menu */
.mob-menu{
  position:fixed;inset:var(--nav-h) 0 auto;z-index:999;
  background:var(--n-99);border-bottom:1px solid var(--color-border);
  padding:var(--space-4) var(--space-6) var(--space-6);
  display:none;box-shadow:var(--shadow-3);
  max-height:calc(100dvh - var(--nav-h));overflow-y:auto;
}
.mob-menu.open{display:block;}
.mob-link>a{
  display:block;padding:14px 0;font-size:16px;font-weight:700;
  color:var(--n-20);border-bottom:1px solid var(--color-border);
}
.mob-link>a:hover{color:var(--color-navy);}
.mob-cta{
  display:block;text-align:center;background:var(--color-navy);color:#fff;
  padding:15px;border-radius:var(--radius-sm);font-size:15px;font-weight:700;
  margin-top:var(--space-4);
}
@media (width <= 900px){
  .nav-links{display:none;}
  .nav-cta-btn{display:none;}
  .nav-ham{display:block;}
}

/* ════════ FOOTER ════════ */
.site-footer{background:var(--color-navy-dark);color:rgba(255,255,255,.66);padding:var(--space-16) 0 var(--space-8);font-size:14px;}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:var(--space-10);margin-bottom:var(--space-10);}
.footer-logo img{height:30px;width:auto;filter:brightness(0) invert(1);opacity:.92;}
.footer-logo-text{font-family:var(--font-display);font-size:19px;color:#fff;}
.footer-brand p{margin-top:var(--space-4);line-height:1.8;color:rgba(255,255,255,.55);font-size:13.5px;}
.footer-col h4{font-size:12px;font-weight:700;letter-spacing:.1em;color:rgba(255,255,255,.42);margin-bottom:var(--space-4);text-transform:uppercase;}
.footer-col li{margin-bottom:10px;}
.footer-col a{color:rgba(255,255,255,.66);transition:color .15s var(--ease);}
.footer-col a:hover{color:#fff;}
.footer-phone{font-family:var(--font-display);font-size:22px;color:#fff;margin-bottom:6px;display:inline-block;}
.footer-links-row{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-4);}
.footer-links-row a{
  padding:7px 14px;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);
  font-size:12.5px;transition:border-color .15s var(--ease),background .15s var(--ease);
}
.footer-links-row a:hover{border-color:rgba(255,255,255,.45);background:rgba(255,255,255,.06);}

/* 법정 고지 — 학원법 제15조③ / 시행령 제16조의3 / 개보법 제30조 */
.legal{border-top:1px solid rgba(255,255,255,.13);padding-top:var(--space-6);margin-top:var(--space-4);}
.legal-dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:6px var(--space-6);font-size:12.5px;line-height:1.65;}
.legal-dl>div{display:flex;gap:8px;}
.legal-dl dt{flex:0 0 82px;color:rgba(255,255,255,.42);font-weight:700;}
.legal-dl dd{color:rgba(255,255,255,.7);}
.legal-dl dd a{text-decoration:underline;text-underline-offset:2px;}
.legal-note{margin-top:var(--space-4);font-size:12px;color:rgba(255,255,255,.42);line-height:1.7;}
.legal-links{display:flex;gap:var(--space-4);flex-wrap:wrap;margin-top:var(--space-4);font-size:13px;}
.legal-links a{color:rgba(255,255,255,.62);}
.legal-links a:hover{color:#fff;}
.legal-links a strong{color:rgba(255,255,255,.92);font-weight:700;}
.footer-bottom{
  border-top:1px solid rgba(255,255,255,.1);padding-top:var(--space-6);margin-top:var(--space-6);
  display:flex;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;
  font-size:12.5px;color:rgba(255,255,255,.38);
}
@media (width <= 760px){ .footer-grid{grid-template-columns:1fr;gap:var(--space-8);} }

/* ════════ BUTTONS ════════ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  padding:13px 26px;border-radius:var(--radius-sm);
  font-size:15px;font-weight:700;font-family:var(--font-sans);
  white-space:nowrap;cursor:pointer;border:2px solid transparent;
  transition:background .15s var(--ease),color .15s var(--ease),
             transform .15s var(--ease),box-shadow .15s var(--ease),border-color .15s var(--ease);
}
.btn-primary{background:var(--color-navy);color:#fff;}
.btn-primary:hover{background:var(--color-navy-dark);transform:translateY(-1px);box-shadow:var(--shadow-3);}
.btn-outline{border-color:var(--color-navy);color:var(--color-navy);background:transparent;}
.btn-outline:hover{background:var(--color-navy);color:#fff;}
.btn-outline-white{border-color:rgba(255,255,255,.5);color:#fff;background:transparent;}
.btn-outline-white:hover{background:#fff;color:var(--color-navy);}
.btn-paper{background:var(--n-99);color:var(--color-navy);}
.btn-paper:hover{background:#fff;transform:translateY(-1px);box-shadow:var(--shadow-3);}
.btn-sm{padding:9px 18px;font-size:13.5px;}
.btn-lg{padding:16px 34px;font-size:16px;}

/* ════════ SECTION / PAGE HERO (schedule·contact·directions 사용) ════════ */
.section{padding:var(--space-20) 0;}
.section-sm{padding:var(--space-12) 0;}
.section-subtle{background:var(--n-95);}
.section-label{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-orange);margin-bottom:10px;}
.section-title{font-family:var(--font-display);font-size:clamp(26px,3.4vw,36px);line-height:1.3;color:var(--color-navy);margin-bottom:12px;}
.section-subtitle{font-size:16px;color:var(--n-40);max-width:540px;line-height:1.75;}
.section-header{margin-bottom:var(--space-12);}

.page-hero{background:var(--color-navy);padding:calc(var(--nav-h) + var(--space-12)) 0 var(--space-16);}
.page-hero-eyebrow{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.42);margin-bottom:12px;}
.page-hero-title{font-family:var(--font-display);font-size:clamp(28px,4.5vw,40px);color:#fff;margin-bottom:12px;}
.page-hero-desc{font-size:15px;color:rgba(255,255,255,.68);max-width:540px;line-height:1.75;}
.breadcrumb{display:flex;align-items:center;gap:6px;margin-top:var(--space-6);font-size:12px;color:rgba(255,255,255,.38);}
.breadcrumb a{color:rgba(255,255,255,.44);transition:color .15s var(--ease);}
.breadcrumb a:hover{color:rgba(255,255,255,.75);}
.breadcrumb-sep{color:rgba(255,255,255,.22);}

/* ════════ FORM (contact.html 잔존 — 폼 제거 후 삭제 예정) ════════ */
.form-group{margin-bottom:var(--space-5);}
.form-label{display:block;font-size:13.5px;font-weight:700;color:var(--n-20);margin-bottom:7px;}
.form-control{
  width:100%;padding:13px 15px;font-size:15px;
  border:1px solid var(--color-border);border-radius:var(--radius-sm);
  background:var(--n-100);color:var(--color-fg-primary);
  transition:border-color .15s var(--ease),box-shadow .15s var(--ease);
}
.form-control:focus{outline:none;border-color:var(--color-navy);box-shadow:0 0 0 3px rgba(23,26,77,.1);}
textarea.form-control{min-height:120px;resize:vertical;}

/* ════════ 모바일 고정 통화바 (전환 핵심 — 전 페이지 공통) ════════ */
.call-bar{
  position:fixed;inset:auto 0 0;z-index:950;
  display:none;align-items:center;justify-content:center;gap:10px;
  background:var(--color-navy);color:#fff;
  font-weight:700;font-size:16px;letter-spacing:-.01em;
  padding:14px 16px calc(14px + env(safe-area-inset-bottom));
  box-shadow:0 -2px 12px rgba(15,18,56,.18);
}
.call-bar svg{inline-size:18px;block-size:18px;flex-shrink:0;}
.call-bar strong{font-family:var(--font-display);font-weight:400;font-size:18px;letter-spacing:.01em;}
@media (width <= 760px){
  .call-bar{display:flex;}
  body{padding-bottom:calc(56px + env(safe-area-inset-bottom));}
}

/* ════════ 인쇄 ════════ */
@media print{
  .site-nav,.mob-menu,.skip-link,.btn,.call-bar{display:none!important;}
  body{background:#fff;color:#000;}
  .site-footer{background:#fff;color:#000;border-top:1px solid #ccc;}
  .legal-dl dt,.legal-dl dd,.legal-note{color:#000;}
}
