:root {
  --bg: #FFFFFF;
  --ink: #0D0D0D;
  --red: #E5372B;
  --red-dark: #C22A20;
  --line: rgba(13, 13, 13, 0.065);
  --line-strong: rgba(13, 13, 13, 0.16);
  --muted: rgba(13, 13, 13, 0.52);
  --ph1: #F2F0EA;
  --ph2: #E3DFD3;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-soft: cubic-bezier(0.22, 1, 0.36, 1);
  --container: 1160px;
  --gutter: 32px;
  --radius: 0px;
  --surface: #FFFFFF;
  --soft: #F7F6F2;
  --white: #FFFFFF;
  --soft-hover: #FAFAF8;
  --on-ink-muted: rgba(255, 255, 255, 0.62);
  --header-glass: rgba(255, 255, 255, 0.82);
  --dialog-backdrop: rgba(13, 13, 13, 0.64);
  --dialog-shadow: 0 24px 72px rgba(13, 13, 13, 0.16);
  --calendar-tone-default: #E9EEF7;
  --calendar-tone-blue: #2F81E9;
  --calendar-tone-rose: #EAD0DB;
  --calendar-tone-violet: #D9D1EA;
  --calendar-tone-green: #9AC782;
  --calendar-tone-blue-soft: #B9D3F0;
  --calendar-tone-yellow: #FFE394;
  --calendar-tone-peach: #F7DFC1;
  --calendar-tone-pink: #F0C7C8;
  --calendar-tone-green-soft: #D5E8CE;
  --calendar-tone-yellow-strong: #FFF500;
  --calendar-tone-green-strong: #00EF16;
  --calendar-tone-cyan: #10D7DF;
  --calendar-status-class1-bg: #E1F3E9;
  --calendar-status-class1-text: #08794E;
  --calendar-status-class2-bg: #E5EFFF;
  --calendar-status-class2-text: #235DB5;
  --calendar-status-class3-bg: #FFF0D0;
  --calendar-status-class3-text: #925D00;
  --calendar-status-closed-bg: #FDE5E2;
  --calendar-status-closed-text: #B53028;
  --calendar-status-closing-bg: #EEE8FF;
  --calendar-status-closing-text: #6044A5;
  --section-space: 120px;
  --section-space-mobile: 84px;
  --control-height: 52px;
  --text-xs: 12px;
  --text-sm: 14px;
  --text-body: 16px;
  --text-lead: 16.5px;
  --text-mobile-body: 15px;
  --text-mobile-lead: 15px;
  --text-mobile-action: 14px;
  --text-mobile-label: 12px;
  --weight-semibold: 650;
  --weight-bold: 750;
  --weight-black: 900;
  --leading-body: 1.7;
  --heading-hero: clamp(40px, 4.2vw, 56px);
  --heading-teacher: clamp(36px, 5vw, 66px);
  --heading-teacher-mobile: 34px;
  --heading-mobile-hero: 34px;
  --heading-mobile-section: 27px;
  --heading-mobile-card: 22px;
  --teacher-mobile-tag-padding: 7px 10px;
  --heading-content: clamp(38px, 4vw, 52px);
  --heading-section: clamp(27px, 3.4vw, 44px);
  --heading-closing: clamp(30px, 3vw, 42px);
  --header-height: 76px;
  --header-height-compact: 60px;
  --header-height-mobile: 78px;
  --touch-target: 44px;
  --mobile-menu-control-size: 48px;
  --mobile-menu-fab-width: 92px;
  --mobile-menu-fab-offset: 102px;
  --mobile-menu-fab-offset-compact: 76px;
  --mobile-menu-fab-edge: 20px;
  --mobile-menu-fab-radius: 999px;
  --mobile-menu-fab-shadow: 0 10px 30px rgba(13, 13, 13, .2);
  --mobile-menu-fab-tracking: -.02em;
  --mobile-menu-fab-focus-width: 3px;
  --nav-gap: 26px;
  --grid-gap: 1px;
  --hero-padding-top: 80px;
  --hero-padding-bottom: 52px;
  --card-padding-x: 26px;
  --card-padding-y: 30px;
  --teacher-hero-min: 78vh;
  --teacher-grid-gap: 64px;
  --photo-grid-gap: 20px;
  --schedule-cell-y: 16px;
  --schedule-cell-x: 18px;
  --readable-content: 720px;
  --course-section-gap: clamp(40px, 5vw, 64px);
  --course-section-padding: clamp(32px, 4vw, 52px);
  --course-media-gap: clamp(32px, 5vw, 64px);
  --course-media-max-height: 420px;
  --heading-course-level: clamp(1.35rem, 2.4vw, 2rem);
  --text-course-level: clamp(var(--text-body), 1.35vw, 1.125rem);
  --weight-course-kicker: 850;
  --home-paper: #F3F0E9;
  --home-border: #BDBDB8;
  --home-line-on-dark: rgba(255, 255, 255, 0.45);
  --home-container: 1240px;
  --home-gutter: 32px;
  --home-section-compact: 64px;
  --home-section-standard: 120px;
  --home-section-major: 148px;
  --home-layout-gap: 64px;
  --home-editorial-gap: 96px;
  --home-photo-gap: 12px;
  --home-copy-gap: 32px;
  --home-heading-hero: clamp(40px, 4.2vw, 56px);
  --home-heading-section: clamp(30px, 3vw, 42px);
  --home-heading-card: clamp(24px, 2.2vw, 30px);
  --home-heading-closing: clamp(30px, 3vw, 42px);
  --home-hero-min-height: min(820px, calc(100svh - 72px));
  --home-option-min-height: 56px;
  --home-play-preview-height: 284px;
  --home-play-preview-height-tablet: 220px;
  --home-play-preview-inset: 20px;
  --home-play-frame-inset: 22px;
  --home-play-control-gap: 12px;
  --home-play-content-gap: 14px;
  --home-play-top-gap: 16px;
  --home-play-option-padding-y: 11px;
  --home-play-option-padding-x: 12px;
  --home-play-progress-height: 3px;
  --home-play-progress-value: 28%;
  --home-play-heading-leading: .92;
  --home-play-heading-tracking: -.04em;
  --home-play-label-tracking: .08em;
  --home-play-label-weight: 800;
  --home-play-digital-bg: #20201E;
  --home-play-frame-line-strong: rgba(255, 255, 255, .5);
  --home-play-frame-line: rgba(255, 255, 255, .35);
  --home-play-frame-line-soft: rgba(255, 255, 255, .24);
  --home-play-progress-track: rgba(255, 255, 255, .2);
  --home-play-option-text: rgba(255, 255, 255, .78);
  --space-1: 8px;
  --space-2: 12px;
  --space-3: 16px;
  --space-4: 20px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 40px;
  --space-8: 48px;
  --space-9: 64px;
  --content-narrow: 34rem;
  --content-copy: 40rem;
  --content-wide: 58rem;
  --heading-leading-editorial: 1.12;
  --heading-tracking-editorial: -0.045em;
  --kicker-tracking: 0.09em;
  --section-heading-gap: clamp(40px, 5vw, 80px);
  --home-section-heading-gap: 40px;
  --space-0: 4px;
  --home-chip-padding: 9px 12px;
  --home-label-size: var(--text-xs);
  --home-label-tracking: 0.08em;
  --home-level-heading: clamp(1.5rem, 3vw, 2.75rem);
  --home-review-heading: 1.45rem;
  --home-review-title-size: 21px;
  --home-review-footer-height: 90px;
  --review-page-card-wide: 35%;
  --review-video-card-wide: 66%;
  --review-page-card-tablet: 46%;
  --review-page-card-mobile: 86%;
  --review-page-peek-edge: clamp(24px, 4vw, 56px);
  --review-page-peek-edge-mobile: 36px;
  --home-address-heading: 1.35rem;
  --home-mobile-section-space: 80px;
  --motion-duration-slow: 0.45s;
  --motion-scale-subtle: 1.02;
  --home-hero-secondary-offset: 48px;
  --home-heading-max: 9ch;
  --home-heading-max-tablet: 11ch;
  --home-heading-hero-mobile: 40px;
  --home-inline-tight-gap: 0.15rem;
  --home-stack-tight-gap: 0.25rem;
  --body-leading-relaxed: 1.7;
  --heading-leading-card: 1.2;
}

@media (max-width: 1199px) { :root { --home-gutter: 28px; --home-layout-gap: 48px; --home-editorial-gap: 80px; } }
@media (max-width: 768px) { :root { --home-gutter: 24px; } }
@media (max-width: 430px) { :root { --home-gutter: 20px; } }
@media (max-width: 320px) { :root { --home-gutter: 16px; } }

*, *::before, *::after { box-sizing: border-box; }
html { width: 100%; max-width: 100%; scroll-behavior: smooth; }
body {
  width: 100%;
  max-width: 100%;
  margin: 0;
  overflow-x: clip;
  background: var(--bg);
  color: var(--ink);
  font-family: "Pretendard Variable", Pretendard, -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
  opacity: .025;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
::selection { background: var(--red); color: var(--white); }
img, video, iframe, svg { max-width: 100%; }
img { display: block; }
a { color: inherit; }
button, input, textarea, select { font: inherit; }
:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }
h1, h2, h3, p, figure, dl, dd { margin: 0; }
section, article, div { min-width: 0; }
@media (max-width: 900px) { :root { --gutter: 20px; } }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .001ms !important; }
}
