@charset "UTF-8";
/* ============================================================================
   config.scss  —  똑똑수학 공통 디자인 토큰 (Single Source of Truth)
   ----------------------------------------------------------------------------
   · 색상 / 버튼 치수 / 폰트 / breakpoint 등 "여러 파일에서 공통으로 쓰이는 값"을
     이 파일 한 곳에서만 정의합니다.
   · 각 scss 파일 최상단에서  @import 'config';  로 불러와 사용합니다.
   ※ 색상 토큰 접두사는 $c- 로 통일 (각 파일의 로컬 변수명과 충돌 방지)
   ============================================================================ */
/* ── 브랜드 · 퍼플 (2025 기존) ──────────────────────────────────────────── */
/* ── 브랜드 · 인디고 (버튼/포인트) ──────────────────────────────────────── */
/* ── 브랜드 · 바이올렛 (2026 리뉴얼 메인) ───────────────────────────────── */
/* ── 브랜드 · 보라 틴트(보조) ───────────────────────────────────────────── */
/* ── 액센트 ────────────────────────────────────────────────────────────── */
/* ── gray ────────────────────────────────────────────────────────────── */
/* ── 버튼 치수 · 폰트 토큰 ─────────────────────────────────────────────── */
/* ── 공통 믹스인 ───────────────────────────────────────────────────────── */
/* ── 반응형 breakpoint (신규 작업용 표준값) ────────────────────────────────
   ※ 기존 미디어쿼리는 값이 제각각(1200/1440/770/768/500/640…)이라 자동 치환하지
      않았습니다. 앞으로 새로 작성하는 반응형은 아래 믹스인 사용을 권장합니다.
      예)  @include respond-to($bp-sm) { ... }   또는   @include respond-to(600px) { ... }
   ------------------------------------------------------------------------- */
body {
  background-color: #ffffff;
}
body.main_01 {
  background-color: #ece9f7;
  background-image: url("/resources/toctocmath/images/main-guest/background_01-724d689151093cd32b8472708eb37524.png");
  background-repeat: no-repeat;
  background-position: center top;
  background-size: cover;
  background-attachment: fixed;
}
body.main_02 {
  background-color: #ece9f7;
  background-image: url("/resources/toctocmath/images/main-guest/background_02-6cc706b6931bc712a23660d947075b8a.png");
  background-repeat: no-repeat;
  background-position: center top;
  background-size: cover;
  background-attachment: fixed;
}
body.main_03 {
  background: -webkit-gradient(linear, left top, left bottom, from(#e5dcf7), color-stop(15%, #e9e1f8), color-stop(25%, #eee8fb), to(#ffffff));
  background: linear-gradient(to bottom, #e5dcf7 0%, #e9e1f8 15%, #eee8fb 25%, #ffffff 100%);
}

/* ==========================================================================
   Header & Sticky Layout
   ========================================================================== */
.header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 110px;
  z-index: 100;
  backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(124, 58, 237, 0.1);
  -webkit-transition: background 0.3s, height 0.3s, -webkit-box-shadow 0.3s;
  transition: background 0.3s, height 0.3s, -webkit-box-shadow 0.3s;
  transition: background 0.3s, height 0.3s, box-shadow 0.3s;
  transition: background 0.3s, height 0.3s, box-shadow 0.3s, -webkit-box-shadow 0.3s;
}
.header__wrap {
  max-width: 1540px;
  height: 100%;
  margin: 0 auto;
  padding: 0 20px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  position: relative;
  z-index: 120;
  min-width: 360px;
}
.header { /*20260629 죄소넓이 지정*/ }
.header::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%;
  height: 0;
  background: #f8f7fc;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  -webkit-box-shadow: 0 15px 30px rgba(0, 0, 0, 0.05);
          box-shadow: 0 15px 30px rgba(0, 0, 0, 0.05);
  opacity: 0;
  visibility: hidden;
  z-index: 100;
  -webkit-transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.25s ease;
  transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.25s ease;
}
.header.is-sticky {
  background: rgba(255, 255, 255, 0.92);
  height: 90px;
  -webkit-box-shadow: 0 4px 25px rgba(124, 58, 237, 0.08);
          box-shadow: 0 4px 25px rgba(124, 58, 237, 0.08);
  border-bottom-color: rgba(124, 58, 237, 0.12);
}
.header.is-sticky .pc-nav__item {
  line-height: 90px;
  font-size: 24px;
}
.header__logo {
  -ms-flex-negative: 0;
      flex-shrink: 0;
}
.header__logo img {
  width: 280px;
  height: auto;
  display: block;
  -webkit-transition: width 0.3s;
  transition: width 0.3s;
  display: inline-block;
}
.header__util {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 12px;
  -ms-flex-negative: 0;
      flex-shrink: 0;
}
.header__hamburger {
  display: none;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  gap: 5px;
  width: 46px;
  height: 46px;
  border: 0;
  cursor: pointer;
  background: #fff;
  border-radius: 14px;
  -webkit-box-shadow: 0 2px 10px rgba(124, 58, 237, 0.14);
          box-shadow: 0 2px 10px rgba(124, 58, 237, 0.14);
}
.header__hamburger span {
  display: block;
  width: 22px;
  height: 2.5px;
  margin: 0 auto;
  background: #7c3aed;
  border-radius: 999px;
}

.site-header__util {
  gap: 10px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}

/* ==========================================================================
   Navigation
   ========================================================================== */
.pc-nav {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1;
  height: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}
.pc-nav__list {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start;
  gap: 60px;
  list-style: none;
  height: 100%;
}
.pc-nav__list-item {
  position: relative;
  height: 100%;
}
.pc-nav__item {
  text-decoration: none;
  color: #1f2937;
  font-size: 24px;
  font-weight: 700;
  height: 100%;
  line-height: 110px;
  padding: 0 10px;
  display: block;
  -webkit-transition: color 0.2s ease, line-height 0.3s;
  transition: color 0.2s ease, line-height 0.3s;
  position: relative;
}
.pc-nav__item::after {
  content: "";
  position: absolute;
  left: 0;
  width: 100%;
  bottom: -4px;
  height: 4px;
  background: -webkit-gradient(linear, left top, right top, from(#7c3aed), to(#ec4899));
  background: linear-gradient(90deg, #7c3aed, #ec4899);
  border-radius: 999px;
  -webkit-transform: scaleX(0);
          transform: scaleX(0);
  -webkit-transform-origin: center;
          transform-origin: center;
  -webkit-transition: -webkit-transform 0.25s ease;
  transition: -webkit-transform 0.25s ease;
  transition: transform 0.25s ease;
  transition: transform 0.25s ease, -webkit-transform 0.25s ease;
}
.pc-nav__item:hover, .pc-nav__item:focus-visible, .pc-nav__item.is-active {
  color: #7c3aed;
}
.pc-nav__item:hover::after, .pc-nav__item:focus-visible::after, .pc-nav__item.is-active::after {
  -webkit-transform: scaleX(1);
          transform: scaleX(1);
}
.pc-nav__sub {
  list-style: none;
  position: absolute;
  top: 100%;
  left: 50%;
  padding: 20px 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  gap: 12px;
  min-width: 180px;
  min-height: 220px;
  text-align: center;
  opacity: 0;
  visibility: hidden;
  -webkit-transform: translateX(-50%) translateY(-5px);
          transform: translateX(-50%) translateY(-5px);
  -webkit-transition: opacity 0.25s ease, visibility 0.25s, -webkit-transform 0.25s ease;
  transition: opacity 0.25s ease, visibility 0.25s, -webkit-transform 0.25s ease;
  transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s;
  transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s, -webkit-transform 0.25s ease;
}
.pc-nav:hover .pc-nav__sub {
  opacity: 1;
  visibility: visible;
  -webkit-transform: translateX(-50%) translateY(0);
          transform: translateX(-50%) translateY(0);
}
.pc-nav:focus-within .pc-nav__sub {
  opacity: 1;
  visibility: visible;
  -webkit-transform: translateX(-50%) translateY(0);
          transform: translateX(-50%) translateY(0);
}
.pc-nav__sub-item {
  display: inline-block;
  text-decoration: none;
  color: #4b5563;
  font-size: 18px;
  font-weight: 600;
  -webkit-transition: color 0.2s;
  transition: color 0.2s;
  white-space: nowrap;
  min-width: 150px;
}
.pc-nav__sub-item:hover, .pc-nav__sub-item:focus-visible {
  color: #7c3aed;
}

@media (max-width: 1440px) {
  .header__logo img {
    width: 210px;
  }
  .header__util {
    gap: 5px;
  }
  .pc-nav__list {
    gap: 36px;
  }
  .pc-nav__item {
    font-size: 22px;
  }
}
@media (min-width: 1201px) {
  .header:has(.pc-nav:hover)::after, .header:has(.pc-nav:focus-within)::after {
    height: 220px;
    opacity: 0.98;
    visibility: visible;
    backdrop-filter: blur(2px);
  }
}
@media (max-width: 1200px) {
  .header {
    height: 75px;
  }
  .header.is-sticky {
    height: 75px;
  }
  .header__wrap {
    padding: 0 20px;
  }
  .header.is-auth .pc-nav, .header.is-auth .header__util {
    display: none;
  }
  .header.is-auth .header__hamburger {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
}
/* ==========================================================================
   Util 공통 컴포넌트
   ========================================================================== */
/* 20262629  버튼 여백수정*/
.header-login-btn {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 0px;
  padding: 0px 22px 0px 10px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 20px;
  cursor: pointer;
  font-weight: 500;
  color: #374151;
  -webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
          box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
  text-decoration: none;
  -webkit-transition: all 0.2s;
  transition: all 0.2s;
}
.header-login-btn:hover {
  background-color: #f9f5ff;
  border: 1px solid #8453d0;
}

.class-select-wrap {
  position: relative;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  background: #ffffff;
  border-radius: 30px;
}
.class-select-wrap__icon {
  position: absolute;
  left: 16px;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  width: 22px;
  height: 22px;
  z-index: 10;
  pointer-events: none;
}
.class-select-wrap {
  /* 20262629  max-width: 170px; 수정 학급명 말줄임추가*/
}
.class-select-wrap .class-select.fm-sel {
  padding: 0 48px 0 44px;
  max-width: 170px;
  height: 42px;
  font-size: 16px;
  color: #5a5e6a;
  font-weight: 600;
  cursor: pointer;
  border: 1px solid #E4E7EA;
  background-image: url("/resources/toctocmath/images/main-guest/ico_sel_arrow-1dbbd802ba09c7ffea745df9bc17e00a.svg");
  background-repeat: no-repeat;
  background-position: calc(100% - 12px) 50%;
  background-size: 32px 16px;
  border-radius: 48px;
  -webkit-border-radius: 48px;
  -moz-border-radius: 48px;
  -ms-border-radius: 48px;
  -o-border-radius: 48px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.class-select-wrap .class-select.fm-sel:hover, .class-select-wrap .class-select.fm-sel:focus-visible {
  border-color: #8453d0;
}
.class-select-wrap .class-select.fm-sel.error {
  border-color: #dc1547;
}

/* 20262629  max-width: 100px; 수정 말줄임추가*/
.user-greet {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 6px;
  padding: 10px 18px;
  background: linear-gradient(135deg, #fde7f3 0, #ede4ff 100%);
  border-radius: 999px;
  color: #4a3d8a;
  font-weight: 500;
  -webkit-box-shadow: 0 2px 8px rgba(124, 58, 237, 0.12);
          box-shadow: 0 2px 8px rgba(124, 58, 237, 0.12);
  width: 100%;
}
.user-greet__name {
  color: #7c3aed;
  font-weight: 800;
  max-width: 100px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.user-greet__suffix {
  color: #6b6391;
  min-width: 26px;
}

.header-icon-btn {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid #e5e7eb;
  -webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
          box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
  -webkit-transition: all 0.2s ease;
  transition: all 0.2s ease;
}
.header-icon-btn img {
  margin-top: -2px;
}
.header-icon-btn:hover {
  background: #ede9fe;
  border-color: #c4b5fd;
  -webkit-transform: translateY(-1px);
          transform: translateY(-1px);
}
.header-icon-btn--logout:hover {
  background: #ede9fe;
  border-color: #c4b5fd;
}

@media (max-width: 1440px) {
  .user-greet {
    padding: 8px 12px;
  }
}
/* ==========================================================================
   Mobile Nav Overlay
   ========================================================================== */
.nav-mobile-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(31, 20, 60, 0.45);
  backdrop-filter: blur(2px);
  z-index: 199;
  opacity: 0;
  -webkit-transition: opacity 0.3s ease;
  transition: opacity 0.3s ease;
}
.nav-mobile-overlay.is-visible {
  display: block;
  opacity: 1;
  height: 100vh;
}

/* ==========================================================================
   Mobile Nav Panel
   ========================================================================== */
.nav-mobile {
  position: fixed;
  top: 0;
  right: 0;
  width: 420px;
  min-width: 320px;
  max-width: 92vw;
  height: 100dvh;
  background: #fff;
  z-index: 200;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  overflow-y: auto;
  -ms-scroll-chaining: none;
      overscroll-behavior: contain;
  -webkit-transform: translateX(100%);
          transform: translateX(100%);
  -webkit-transition: -webkit-transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  transition: -webkit-transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-box-shadow: -8px 0 40px rgba(124, 58, 237, 0.12);
          box-shadow: -8px 0 40px rgba(124, 58, 237, 0.12);
}
.nav-mobile.is-open {
  -webkit-transform: translateX(0);
          transform: translateX(0);
}
.nav-mobile__header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid #f0edf9;
  background: linear-gradient(135deg, #f5f3fc 0%, #ede9fe 100%);
  -ms-flex-negative: 0;
      flex-shrink: 0;
}
.nav-mobile__logo img {
  width: 140px;
  height: auto;
  display: block;
}
.nav-mobile__close {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border: 0;
  background: rgba(255, 255, 255, 0.7);
  border-radius: 50%;
  cursor: pointer;
  color: #7c3aed;
  -webkit-box-shadow: 0 2px 8px rgba(124, 58, 237, 0.12);
          box-shadow: 0 2px 8px rgba(124, 58, 237, 0.12);
  -webkit-transition: background 0.2s, -webkit-transform 0.2s;
  transition: background 0.2s, -webkit-transform 0.2s;
  transition: background 0.2s, transform 0.2s;
  transition: background 0.2s, transform 0.2s, -webkit-transform 0.2s;
}
.nav-mobile__close:hover {
  background: #ede9fe;
  -webkit-transform: rotate(90deg);
          transform: rotate(90deg);
}
.nav-mobile__profile {
  padding: 20px;
  background: linear-gradient(160deg, #f5f3fc 0%, #fdf4ff 100%);
  border-bottom: 1px solid #ede9fe;
  -ms-flex-negative: 0;
      flex-shrink: 0;
  margin: 20px;
  padding: 18px;
  background: linear-gradient(135deg, #ece2ff 0, #e3d4ff 100%);
  border-radius: 20px;
  -webkit-box-shadow: 0 6px 18px rgba(124, 58, 237, 0.16);
          box-shadow: 0 6px 18px rgba(124, 58, 237, 0.16);
}
.nav-mobile__nav {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1;
  min-height: 0;
  padding: 8px 0 24px;
  overflow-y: auto;
}

/* ==========================================================================
   Mobile Nav Profile Card
   ========================================================================== */
.mobile-profile-card {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 14px;
  margin-bottom: 16px;
}
.mobile-profile-card__avatar {
  width: 58px;
  height: 58px;
  border-radius: 50%;
  background: #fff;
  display: grid;
  place-items: center;
  -ms-flex-negative: 0;
      flex-shrink: 0;
  -webkit-box-shadow: 0 2px 10px rgba(124, 58, 237, 0.15);
          box-shadow: 0 2px 10px rgba(124, 58, 237, 0.15);
}
.mobile-profile-card__avatar img {
  width: 38px;
  height: 38px;
  -o-object-fit: contain;
     object-fit: contain;
}
.mobile-profile-card__info {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  gap: 3px;
}
.mobile-profile-card__name {
  font-size: 18px;
  font-weight: 800;
  color: #7c3aed;
}
.mobile-profile-card__school {
  color: #565656;
  font-weight: 400;
}
.mobile-profile-card__class {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 12px;
  margin-bottom: 14px;
  padding: 0 20px;
}
.mobile-profile-card__class-label {
  font-weight: 600;
  color: #4b5563;
  white-space: nowrap;
}
.mobile-profile-card__actions {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 20px;
  padding: 0 20px;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}
.mobile-profile-card { /*20260629 비로그인영역 정렬 수정추가*/ }

/*20260629 반응형 정렬 추가*/
@media (max-width: 500px) {
  .mobile-profile-card__class {
    gap: 6px;
    padding: 0 10px;
  }
  .mobile-profile-card__actions {
    gap: 10px;
    padding: 0 10px;
  }
}
.class-select-wrap {
  width: 100%;
}

.class-select {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1;
  min-width: 160px;
  width: 100%;
  -moz-appearance: none;
       appearance: none;
  -webkit-appearance: none;
  border: 0;
  background: #fff;
  color: #4b5563;
  font-family: inherit;
  font-weight: 600;
  padding: 0px 30px 9px 14px;
  border-radius: 999px;
  cursor: pointer;
  -webkit-box-shadow: inset 0 0 0 1px #e5e7eb;
          box-shadow: inset 0 0 0 1px #e5e7eb;
  background-image: linear-gradient(45deg, transparent 50%, #9ca3af 50%), linear-gradient(135deg, #9ca3af 50%, transparent 50%);
  background-position: calc(100% - 16px) center, calc(100% - 10px) center;
  background-size: 6px 6px;
  background-repeat: no-repeat;
  outline: 0;
}

.class-select-wrap--mobile-nav {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1;
  padding: 7px 12px;
}
.class-select-wrap--mobile-nav .class-select {
  width: 100%;
  min-width: 0;
}

/* ==========================================================================
   Mobile Nav Buttons
   ========================================================================== */
/*20260629 버튼 넓이추가*/
.mo-btn {
  display: block;
  text-align: center;
  padding: 11px 0;
  border-radius: 999px;
  font-weight: 700;
  text-decoration: none;
  -webkit-transition: all 0.2s;
  transition: all 0.2s;
  width: 49%;
}
.mo-btn--primary {
  background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
  color: #fff !important;
  -webkit-box-shadow: 0 4px 14px rgba(124, 58, 237, 0.3);
          box-shadow: 0 4px 14px rgba(124, 58, 237, 0.3);
}
.mo-btn--primary:hover {
  background: linear-gradient(135deg, #6d28d9 0%, #5b21b6 100%);
  -webkit-transform: translateY(-1px);
          transform: translateY(-1px);
}
.mo-btn--secondary {
  background: #fff;
  color: #6b7280;
  border: 1.5px solid #e5e7eb;
}
.mo-btn--secondary:hover {
  background: #f9fafb;
  border-color: #d1d5db;
}

/* ==========================================================================
   Mobile Nav Accordion
   ========================================================================== */
.mo-nav__group {
  border-bottom: 1px solid #f3f4f6;
}
.mo-nav__title {
  width: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  padding: 18px 22px;
  background: none;
  border: 0;
  font-family: inherit;
  font-size: 18px;
  font-weight: 700;
  color: #1f2937;
  cursor: pointer;
  -webkit-transition: color 0.2s, background 0.2s;
  transition: color 0.2s, background 0.2s;
  text-align: left;
}
.mo-nav__title:hover {
  color: #7c3aed;
  background: #faf9ff;
}
.mo-nav__arrow {
  display: inline-block;
  width: 18px;
  height: 18px;
  background-image: url("/resources/toctocmath/images/main-guest/ico_mo_arrow-f77f26427ab83669aceeede4a5569d4f.svg");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  -webkit-transition: -webkit-transform 0.3s ease;
  transition: -webkit-transform 0.3s ease;
  transition: transform 0.3s ease;
  transition: transform 0.3s ease, -webkit-transform 0.3s ease;
}
.mo-nav__sub {
  list-style: none;
  max-height: 0;
  overflow: hidden;
  -webkit-transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  transition: max-height 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  background: #faf9ff;
}
.mo-nav__sub-item {
  display: block;
  padding: 13px 22px 13px 34px;
  font-weight: 500;
  color: #4b5563;
  text-decoration: none;
  border-left: 3px solid transparent;
  -webkit-transition: color 0.2s, border-color 0.2s, background 0.2s;
  transition: color 0.2s, border-color 0.2s, background 0.2s;
}
.mo-nav__sub-item:hover {
  color: #7c3aed;
  border-left-color: #c4b5fd;
  background: #ede9fe;
}
.mo-nav__group.is-active .mo-nav__title {
  color: #7c3aed;
}
.mo-nav__group.is-active .mo-nav__arrow {
  -webkit-transform: rotate(180deg);
          transform: rotate(180deg);
  background-image: url("/resources/toctocmath/images/main-guest/ico_mo_arrow_purple-8652a378f7f0fa59ce5f6cd2a9bcdcfd.svg");
}
.mo-nav__group.is-active .mo-nav__sub {
  max-height: 400px;
}

.container {
  max-width: 100%;
  min-width: 360px;
  margin: 0 auto;
  padding: 130px 0px 50px;
  position: relative;
  z-index: 1;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
}
.container section {
  max-width: 1540px;
  padding: 0 20px;
}

@media (max-width: 1440px) {
  .container {
    padding: 90px 0px 50px;
  }
  .container section {
    max-width: 100%;
    width: 100%;
  }
  .container section.hero {
    margin-top: 40px;
  }
}
@media (max-width: 1200px) {
  .container {
    padding: 90px 0px 50px;
  }
  .container section {
    max-width: 100%;
    width: 100%;
    padding: 0 0px;
  }
  .container section.hero {
    margin-top: 40px;
  }
}
/* ==========================================================================
   Site Footer
   ========================================================================== */
/* 20260630 로그인페이지 하단 여백삭제 margin-top: 40px; 삭제*/
.site-footer {
  padding-top: 18px;
  border-top: 1px solid #dcd8dd;
  width: 100%;
}
.site-footer .footer_inner {
  max-width: 1540px;
  margin: 0 auto;
  padding: 0 20px;
}
.site-footer__top {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  gap: 16px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  padding-bottom: 14px;
}
.site-footer__brand img {
  height: 36px;
  width: auto;
  display: block;
  opacity: 0.85;
}
.site-footer__family {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 10px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}
.site-footer__family-label {
  font-weight: 700;
  color: #565656;
  margin-left: 4px;
}
.site-footer__bottom {
  padding: 14px 0 18px;
  border-top: 1px solid #f3f4f6;
}
.site-footer__links {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 8px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  margin-bottom: 8px;
}
.site-footer__links a {
  color: #4b5563;
  text-decoration: none;
  font-weight: 500;
  -webkit-transition: color 0.15s ease;
  transition: color 0.15s ease;
}
.site-footer__links a:hover {
  color: #7c3aed;
}
.site-footer__links a.is-strong {
  color: #1f2937;
  font-weight: 700;
}
.site-footer__links .dot {
  color: #d1d5db;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
}
.site-footer__addr {
  font-style: normal;
  color: #565656;
}
.site-footer__addr strong {
  color: #6b7280;
  font-weight: 700;
  font-size: 16px;
}
.site-footer__addr .sep {
  margin: 0 6px;
  color: #e5e7eb;
}

.footer-org-link {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 7px;
  padding: 6px 14px 6px 10px;
  background: #fff;
  border: 1.5px solid #e5e7eb;
  border-radius: 999px;
  color: #1f2937;
  text-decoration: none;
  font-weight: 700;
  -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
          box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
  -webkit-transition: all 0.2s ease;
  transition: all 0.2s ease;
}
.footer-org-link__logo {
  height: 22px;
  width: auto;
  display: block;
  -ms-flex-negative: 0;
      flex-shrink: 0;
}
.footer-org-link:hover {
  border-color: #c4b5fd;
  background: #faf5ff;
  color: #5b4fa8;
  -webkit-transform: translateY(-1px);
          transform: translateY(-1px);
  -webkit-box-shadow: 0 4px 10px rgba(124, 58, 237, 0.15);
          box-shadow: 0 4px 10px rgba(124, 58, 237, 0.15);
}

.footer-org-group {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 4px;
  padding: 8px 14px;
  background: #fff;
  border: 1.5px solid #e5e7eb;
  border-radius: 999px;
  color: #4b5563;
  font-weight: 700;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  cursor: default;
}

.family-site-select {
  -moz-appearance: none;
       appearance: none;
  -webkit-appearance: none;
  border: 1.5px solid #e5e7eb;
  background: #fff;
  padding: 0px 48px 0 16px;
  font-family: inherit;
  font-weight: 500;
  color: #374151;
  border-radius: 999px;
  cursor: pointer;
  min-width: 200px;
  -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
          box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
  background-image: linear-gradient(45deg, transparent 50%, #7c3aed 50%), linear-gradient(135deg, #7c3aed 50%, transparent 50%);
  background-position: calc(100% - 22px) center, calc(100% - 16px) center;
  background-size: 6px 6px;
  background-repeat: no-repeat;
  -webkit-transition: border-color 0.15s ease, -webkit-box-shadow 0.15s ease;
  transition: border-color 0.15s ease, -webkit-box-shadow 0.15s ease;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, -webkit-box-shadow 0.15s ease;
}
.family-site-select:hover {
  border-color: #c4b5fd;
  -webkit-box-shadow: 0 4px 10px rgba(124, 58, 237, 0.08);
          box-shadow: 0 4px 10px rgba(124, 58, 237, 0.08);
}
.family-site-select:focus {
  outline: 0;
  border-color: #7c3aed;
  -webkit-box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.15);
          box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.15);
}

.family-sites[hidden] {
  display: none !important;
}

.family-select {
  margin-left: auto;
  padding: 8px 14px;
  background: white;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  color: #4b5563;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 30px;
  cursor: pointer;
}
.family-select::after {
  content: "▾";
  color: #9ca3af;
}

.family-site-btn {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  min-width: 60px;
  height: 38px;
  background: #666666;
  display: block;
  font-weight: 500;
  color: #fff;
  text-align: center;
  border-radius: 20px;
  -webkit-transition: all 0.15s linear;
  transition: all 0.15s linear;
  padding: 0 10px;
  margin-left: -40px;
}

/*20260629 footer 로고 사이즈조절 수정*/
@media (max-width: 768px) {
  .footer-logos {
    gap: 14px;
  }
  .footer-bar {
    gap: 14px;
    font-size: 11.5px;
  }
  .site-footer__brand img {
    height: 30px;
  }
  .footer-org-group {
    width: calc(100% - 102px);
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
  }
  .family-site-select {
    width: 100%;
  }
}
/*20260629 서브타이틀 여백 정렬 수정*/
.sub_content_wrap {
  width: 100%;
  max-width: 1540px;
  padding: 0px 20px 40px 20px;
  min-height: 860px;
}
.sub_content_wrap .content_header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  margin-bottom: 24px;
  width: 100%;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
}
.sub_content_wrap .content_header .sub_big_title {
  font-size: 36px;
  font-weight: 700;
}
.sub_content_wrap {
  /*20260629 현재위치 정렬수정*/
}
.sub_content_wrap .breadcrumb {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 30px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  padding-left: 25px;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start;
}
.sub_content_wrap .breadcrumb li {
  position: relative;
}
.sub_content_wrap .breadcrumb li:not(:last-child):after {
  content: "";
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  right: -20px;
  width: 10px;
  height: 10px;
  background: url("/resources/toctocmath/images/common/ico_breadcrumb_arrow-a391c87a8d176465baca9bbddd363e76.png") no-repeat center center/contain;
}
.sub_content_wrap .breadcrumb li:first-child a {
  width: 24px;
  height: 24px;
  background: url("/resources/toctocmath/images/common/ico_breadcrumb_home-14c5142939b6ec79fafdfe2f6b81fc6c.png") no-repeat center center/contain;
  display: block;
  text-indent: -9999px;
  color: transparent;
  left: -25px;
  position: absolute;
  top: -13px;
}
.sub_content_wrap .breadcrumb li:last-child a {
  font-weight: 600;
  color: #212121;
}
.sub_content_wrap .breadcrumb li:hover a {
  color: #865dd5;
}
.sub_content_wrap .breadcrumb li a {
  color: #3b3b40;
  font-size: 18px;
}
.sub_content_wrap .pop_con {
  padding: 0;
}
.sub_content_wrap .pop_con .pd30 {
  padding: 30px;
}

@media (max-width: 1440px) {
  .sub_content_wrap {
    margin-top: 30px;
  }
}
@media (max-width: 1200px) {
  /* 20260630 반응형상단 여백 및 폰트크기수정*/
  .sub_content_wrap {
    margin-top: 0px;
    min-height: none;
  }
  .sub_content_wrap .content_header .sub_big_title {
    font-size: 32px;
  }
}
/*20260630 반응형 여백 수정*/
@media (max-width: 770px) {
  .sub_content_wrap {
    padding: 10px;
  }
  .sub_content_wrap .content_header {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    gap: 14px;
  }
  .sub_content_wrap .content_header .sub_big_title {
    font-size: 30px;
  }
  .sub_content_wrap .breadcrumb li a {
    font-size: 16px;
  }
}
/* 메뉴가 닫혀있을 때 탭 무시 및 스크린리더 제외 */
.nav-mobile:not(.is-open) {
  visibility: hidden !important;
  /* visibility: hidden 상태도 브라우저가 Tab키 포커스를 차단하는 강력한 접근성 표준 속성입니다 */
}

/* ===== 태블릿(터치)에서 PC 네비 클릭으로 드롭다운 — 추가 전용, 기존 규칙 수정 없음 ===== */
@media (hover: none) {
  /* 터치 기기: hover/focus-within 자동 노출 무력화 (탭 시 멋대로 열리는 것 방지) */
  .pc-nav:hover .pc-nav__sub,
  .pc-nav:focus-within .pc-nav__sub {
    opacity: 0;
    visibility: hidden;
    -webkit-transform: translateX(-50%) translateY(-5px);
            transform: translateX(-50%) translateY(-5px);
  }
  /* 클릭한 항목만 노출 (JS 가 .is-open 토글) — 위 hide 규칙보다 뒤라서 우선 적용 */
  .pc-nav__list-item.is-open .pc-nav__sub {
    opacity: 1;
    visibility: visible;
    -webkit-transform: translateX(-50%) translateY(0);
            transform: translateX(-50%) translateY(0);
  }
}
/* 20260629 학급선택 div로 변경 dropdown*/
.custom-select-wrapper {
  position: relative;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
}
.custom-select-wrapper select {
  display: none;
}
.custom-select-wrapper .class-select-wrap__icon {
  position: absolute;
  left: 10px;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  width: 22px;
  height: 22px;
  z-index: 10;
  pointer-events: none;
}
.custom-select-wrapper.open .arrow-icon {
  -webkit-transform: rotate(-135deg);
          transform: rotate(-135deg);
}
.custom-select-wrapper.open .custom-options {
  display: block;
}

.custom-select-trigger {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  gap: 6px;
  padding: 0 14px 0 38px;
  height: 42px;
  min-width: 150px;
  max-width: 170px;
  border: 1.5px solid #8b5cf6;
  border-radius: 30px;
  background: #fff;
  cursor: pointer;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  -webkit-transition: border-color 0.2s;
  transition: border-color 0.2s;
}
.custom-select-trigger:hover, .custom-select-trigger:focus-visible {
  border-color: #6d28d9;
  outline: none;
}

.trigger-text {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 16px;
  font-weight: 600;
  color: #5a5e6a;
}

.arrow-icon {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  display: inline-block;
  border: solid #7c3aed;
  border-width: 0 2px 2px 0;
  padding: 3px;
  -webkit-transform: rotate(45deg);
          transform: rotate(45deg);
  -webkit-transition: -webkit-transform 0.2s ease;
  transition: -webkit-transform 0.2s ease;
  transition: transform 0.2s ease;
  transition: transform 0.2s ease, -webkit-transform 0.2s ease;
}

.custom-options {
  display: none;
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  min-width: 100%;
  padding: 0;
  list-style: none;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  -webkit-box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
          box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
  z-index: 200;
  overflow: hidden;
}

.custom-option {
  padding: 11px 16px;
  font-size: 14px;
  font-weight: 500;
  color: #374151;
  cursor: pointer;
  -webkit-transition: background 0.15s;
  transition: background 0.15s;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.custom-option:hover {
  background: #ede9fe;
  color: #6d28d9;
}
.custom-option.selected {
  background: #f5f3ff;
  color: #7c3aed;
  font-weight: 700;
}

/* 모바일 드로어 variant — 전체 너비, 아이콘 패딩 없음 */
.custom-select-wrapper--drawer {
  width: 100%;
}
.custom-select-wrapper--drawer .custom-select-trigger {
  width: 100%;
  max-width: none;
  padding-left: 14px;
  border-color: #e5e7eb;
}
.custom-select-wrapper--drawer .custom-select-trigger:hover, .custom-select-wrapper--drawer .custom-select-trigger:focus-visible {
  border-color: #8b5cf6;
}

/* ==========================================================================
   커스텀 셀렉트 반응형 20260630추가
   ========================================================================== */
@media (max-width: 1440px) {
  .custom-select-wrapper .class-select-wrap__icon {
    left: 6px;
  }
  .custom-select-wrapper .custom-select-trigger {
    min-width: 130px;
    padding-left: 32px;
  }
}
@media (max-width: 768px) {
  .custom-select-wrapper {
    width: 100%;
  }
  .custom-select-wrapper .custom-select-trigger {
    width: 100%;
    max-width: none;
  }
}
