:root {
  --navy: #1952a1;
  --cyan: #14c1e5;
  --cyan-module: #00c4e5;
  --cyan-light: #31bad7;
  --red: #e02e2a;
  --ink: #444;
  --muted: #888;
  --line: #dfdcd8;
  --soft: #fafaf9;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html.layout-desktop,
html.layout-desktop body { min-width: 1200px; }
body {
  margin: 0;
  color: var(--ink);
  background: #fff;
  font: 14px/1.8 "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
}
body.no-scroll { overflow: hidden; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; }
.container { width: 1200px; max-width: calc(100% - 32px); margin: 0 auto; }
html.layout-desktop .container { width: 1200px; max-width: none; }
main { min-height: 45vh; }
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }

/* Modules enter in the same restrained fade-and-rise rhythm as the source site. */
html.js .reveal-on-scroll { opacity: 0; transform: translate3d(0, 25px, 0); transition: opacity .75s ease, transform .75s cubic-bezier(.22,.61,.36,1); transition-delay: var(--reveal-delay, 0ms); }
html.js .reveal-on-scroll.reveal-in { opacity: 1; transform: translate3d(0, 0, 0); }
html.layout-desktop.js .home-about .home-section-title:not(.reveal-in),
html.layout-desktop.js .about-home > *:not(.reveal-in),
html.layout-desktop.js .home-advantages .home-section-title:not(.reveal-in),
html.layout-desktop.js .advantage-orbit:not(.reveal-in),
html.layout-desktop.js .home-original-spacer:not(.reveal-in),
html.layout-desktop.js .inner-section .original-title:not(.reveal-in),
html.layout-desktop.js .inner-section .side-nav:not(.reveal-in),
html.layout-desktop.js .content-main > *:not(.reveal-in),
html.layout-desktop.js .teacher-card:not(.reveal-in),
html.layout-desktop.js .desktop-contact-detail-row:not(.reveal-in),
html.layout-desktop.js .desktop-contact-follow:not(.reveal-in),
html.layout-desktop.js .desktop-contact-form:not(.reveal-in) { opacity: 0; transform: translate3d(0, 25px, 0); }
html.layout-desktop.js .desktop-contact-map:not(.reveal-in) { opacity: 0; transform: translate3d(-35px, 0, 0); }
html.layout-desktop.js .desktop-contact-map.reveal-on-scroll { transform: translate3d(-35px, 0, 0); }
html.layout-desktop.js .desktop-contact-map.reveal-on-scroll.reveal-in { transform: translate3d(0, 0, 0); }

/* Mobile WeChat popup */
.mobile-qr-modal[hidden] { display: none !important; }
.mobile-qr-modal { position: fixed; z-index: 240; inset: 0; display: grid; place-items: center; padding: 20px; opacity: 0; pointer-events: none; transition: opacity .22s ease; }
.mobile-qr-modal.open { opacity: 1; pointer-events: auto; }
.mobile-qr-backdrop { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: rgba(0,0,0,.58); cursor: default; }
.mobile-qr-dialog { position: relative; z-index: 1; width: min(230px, 78vw); margin: 0; padding: 24px 20px 18px; border-radius: 5px; background: #fff; box-shadow: 0 10px 35px rgba(0,0,0,.26); text-align: center; transform: scale(.94); transition: transform .22s ease; }
.mobile-qr-modal.open .mobile-qr-dialog { transform: scale(1); }
.mobile-qr-dialog img { width: min(172px, 61vw); height: auto; margin: 0 auto; image-rendering: auto; }
.mobile-qr-dialog p { margin: 13px 0 0; color: #333; font-size: 14px; line-height: 1.6; }
.mobile-qr-close { position: absolute; top: 3px; right: 5px; display: grid; place-items: center; width: 26px; height: 26px; padding: 0; border: 0; color: #aaa; background: transparent; font: 22px/1 Arial, sans-serif; cursor: pointer; }

/* The source site uses a 118px masthead and a 60px navigation bar. */
.site-header { position: relative; z-index: 20; height: 178px; background: #fff url('../images/tmp1628935122_2136670_s.png') center bottom/auto 178px no-repeat; }
.header-top { position: relative; height: 118px; }
.brand { position: absolute; top: 2px; left: 0; width: 125px; height: 115px; overflow: hidden; }
.brand img { width: 100%; height: 100%; object-fit: cover; }
.quality-slogan { position: absolute; top: 17px; left: 985px; width: 243px; margin: 0; color: var(--cyan); text-align: center; font-size: 14px; line-height: 1.5; }
.header-hotline { position: absolute; right: 0; bottom: 0; display: flex; align-items: center; justify-content: flex-end; gap: 12px; width: 273px; height: 61px; padding: 0 20px; color: #fff; background: var(--red); font-size: 16px; font-weight: 700; }
.header-hotline-icon { font-size: 29px; line-height: 1; }
.mobile-brand, .mobile-home-only, .mobile-tool-nav, .nav-overlay { display: none; }
.site-nav { width: 1200px; height: 60px; margin: 0 auto; background: var(--navy); }
.nav-inner { display: flex; width: 1200px; max-width: none; height: 60px; }
.site-nav a { position: relative; display: grid; place-items: center; width: 110px; height: 60px; color: #fff; font-size: 16px; }
.site-nav a::before { content: ""; position: absolute; top: 0; left: 50%; width: 50px; height: 5px; background: transparent; transform: translateX(-50%); }
.site-nav a:hover, .site-nav a.active { color: var(--cyan-module); }
.site-nav a:hover::before, .site-nav a.active::before { background: var(--cyan-module); }
.nav-toggle { display: none; }

.flash { margin: 16px auto 0; padding: 10px 14px; border: 1px solid; }
.flash-success { color: #166f51; background: #eaf9f2; border-color: #bfe8d7; }
.flash-error { color: #a53131; background: #fff1f0; border-color: #f0c6c1; }
.flash-info { color: #1b5e8a; background: #eef8ff; border-color: #c6e4f5; }

/* Homepage */
.hero { position: relative; height: 500px; overflow: hidden; background: #f4f4f4; }
.hero.desktop-home-only { width: 100%; height: 500px; margin: 0; }
.hero-slide { position: absolute; inset: 0; opacity: 0; transition: opacity .75s ease; }
.hero-slide.active { opacity: 1; }
.hero-slide img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.hero.desktop-home-only .hero-slide img { position: static; width: 100%; max-width: none; height: 100%; object-fit: cover; object-position: center; transform: none; }
.hero-dots { position: absolute; z-index: 3; left: 50%; bottom: 25px; display: flex; gap: 10px; transform: translateX(-50%); }
.hero.desktop-home-only .hero-dots { bottom: 20px; gap: 7px; }
.hero.desktop-home-only .hero-dot { width: 12px; height: 12px; border-width: 1px; }
.hero-dot { width: 18px; height: 18px; padding: 0; border: 2px solid #bbb; border-radius: 50%; background: rgba(255,255,255,.9); cursor: pointer; }
.hero-dot.active { border-color: var(--cyan); background: var(--cyan); }

.values { height: 417px; padding-top: 77px; background: #f8f8f8; }
.page-home .values { margin-top: 0; }
.value-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; width: 1200px; max-width: 100%; }
.value-card { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; min-width: 0; margin: 0; text-align: center; }
.value-card img { width: 80px; height: 80px; margin: 0 auto; }
.value-card span { display: block; width: 41px; height: 1px; margin: 10px auto 14px; background: #dfdcd8; }
.value-card h3 { width: 100%; margin: 0; color: #00cccc; text-align: center; font-size: 18px; font-weight: 400; }
.value-slogan { display: block; width: 100%; margin: 82px auto 0; color: #00cccc; text-align: center; font-size: 18px; letter-spacing: 0; }
.values-compact { height: 417px; }

.home-about { position: relative; min-height: 890px; overflow: hidden; padding: 96px 0 70px; color: #fff; background: var(--cyan) url('../images/tmp1499914791_1498718_s.png') center top/cover no-repeat; }
.page-home .home-about { margin-top: 50px; }
.home-about::before { content: ""; position: absolute; z-index: 0; top: -78px; left: 50%; width: 145%; height: 118px; border-radius: 0 0 50% 50%; background: #f8f8f8; transform: translateX(-50%); }
.home-about > .container { position: relative; z-index: 1; }
.home-section-title { text-align: center; }
.home-section-title h2 { margin: 0; color: #666; font-size: 36px; font-weight: 400; line-height: 1.3; }
.home-section-title img { width: 142px; height: 72px; margin: 3px auto 0; object-fit: contain; }
.home-section-title-light h2 { color: #fff; }
.about-home { display: grid; grid-template-columns: 613px 450px; justify-content: start; align-items: start; gap: 54px; margin-top: 64px; margin-left: 24px; }
.about-copy { color: #fff; font-size: 16px; line-height: 2; }
.about-copy h2, .about-copy h3 { margin: 0 0 6px; color: #fff; font-size: 20px; font-weight: 700; }
.about-copy p { margin: 0 0 18px; text-align: justify; }
.about-photo { position: relative; margin-top: 40px; }
.about-photo::after { content: ""; position: absolute; z-index: 0; top: 63px; left: 58px; width: 430px; height: 318px; border: 1px solid #fff; }
.about-photo img { position: relative; z-index: 1; width: 450px; height: 340px; object-fit: cover; }
.button { display: inline-flex; align-items: center; justify-content: center; min-width: 116px; height: 42px; margin-top: 8px; padding: 0 22px; border: 1px solid var(--cyan); border-radius: 5px; color: var(--cyan); background: transparent; cursor: pointer; }
.button:hover { color: #fff; background: var(--cyan); }
.button-outline-light { color: #fff; border-color: #fff; }
.button-outline-light:hover { color: var(--cyan); background: #fff; }

.home-advantages { min-height: 813px; padding: 80px 0; background: #fff; }
.advantage-orbit { position: relative; width: 100%; height: 455px; margin-top: 18px; }
.advantage-photo-wrap { position: absolute; top: 58px; left: 50%; width: 450px; height: 450px; border: 1px dashed #ddd; border-radius: 50%; transform: translateX(-50%); }
.advantage-photo-wrap img { position: absolute; top: 69px; left: 69px; width: 310px; height: 310px; border-radius: 50%; object-fit: cover; }
.advantage-item { position: absolute; display: flex; align-items: center; gap: 7px; color: #666; line-height: 1.45; white-space: nowrap; }
.advantage-item b { color: #666; font: italic 48px/1 "Microsoft YaHei", sans-serif; }
.advantage-item span { font-size: 24px; }
.advantage-1 { top: 53px; right: 68px; }
.advantage-2 { top: 217px; right: 60px; white-space: normal; }
.advantage-3 { top: 77px; left: 153px; }
.advantage-4 { top: 246px; left: 105px; }
.advantage-5 { top: 415px; left: 158px; }
.advantage-dot { position: absolute; z-index: 2; display: block; width: 20px; height: 20px; border-radius: 50%; background: #36bced; }
.advantage-dot-1 { top: 77px; left: 700px; }
.advantage-dot-2 { top: 246px; left: 816px; }
.advantage-dot-3 { top: 107px; left: 447px; }
.advantage-dot-4 { top: 278px; left: 368px; }
.advantage-dot-5 { top: 448px; left: 447px; }
.home-about-down { position: absolute; z-index: 3; bottom: 20px; left: max(0px, calc((100% - 1200px) / 2)); width: 60px; height: 60px; }
.home-about-down img { width: 60px; height: 60px; }
.home-original-spacer { position: relative; height: 830px; background: #fafaf9; }
.original-spacer-icons { position: absolute; top: 612px; right: 0; left: 0; height: 35px; }
.original-spacer-icons img { position: absolute; top: 0; width: 35px; height: 35px; object-fit: contain; }
.original-spacer-icons img:nth-child(1) { left: 341px; }
.original-spacer-icons img:nth-child(2) { left: 747px; }
.original-spacer-icons img:nth-child(3) { left: 1150px; }
.original-spacer-down { position: absolute; bottom: 52px; left: 50%; width: 60px; height: 60px; transform: translateX(-50%); }

/* Inner pages */
.inner-banner { background-position: center; background-repeat: no-repeat; background-size: cover; }
.inner-banner-course { background-image: url('../images/tmp1628917533_2136670_s.jpg'); }
.inner-banner-about { background-image: url('../images/tmp1628917165_2136670_s.jpg'); }
.inner-banner-contact { background-image: url('../images/tmp1628917269_2136670_s.jpg'); }
.inner-banner-course { height: 348px; }
.inner-banner-about { height: 347px; }
.inner-banner-contact { height: 344px; }
.breadcrumb-row { min-height: 48px; border-bottom: 1px solid #eee; color: #999; background: #fff; }
.breadcrumb-row .container { display: flex; align-items: center; min-height: 48px; gap: 10px; }
.breadcrumb-row a { color: #666; }
.breadcrumb-row a:hover { color: var(--cyan); }
.inner-section { padding: 55px 0 80px; background: #fff; }
.original-title { position: relative; display: block; width: 100%; height: 107px; margin: 0 0 45px; text-align: center; }
.original-title i { position: absolute; top: 35px; width: 514px; height: 2px; background: var(--cyan); }
.original-title i:first-child { left: 0; }
.original-title i:last-child { right: 0; }
.original-title > div { position: absolute; top: 17px; left: 50%; width: 170px; transform: translateX(-50%); }
.original-title h1 { margin: 0; color: #444; font-size: 30px; line-height: 47px; }
.original-title p { margin: 5px 0 0; color: var(--cyan); font-size: 16px; line-height: 20px; }
.content-layout { display: grid; grid-template-columns: 256px minmax(0, 1fr); gap: 10px; align-items: start; }
.meal-layout, .activity-layout { grid-template-columns: 180px minmax(0, 1fr); }
.party-layout { grid-template-columns: 260px minmax(0, 1fr); }
.side-nav { background: #fff; border-right: 10px solid #fff; }
.side-nav h2 { height: 100px; margin: 0; padding: 30px; color: #fff; background: var(--cyan-module); font-size: 22px; font-weight: 400; }
.side-nav a { position: relative; display: block; height: 40px; margin-top: 10px; padding: 6px 28px 6px 15px; overflow: hidden; color: #666; background: #f8f8f8; white-space: nowrap; text-overflow: ellipsis; }
.side-nav a::after { content: ">"; position: absolute; right: 13px; color: #bbb; }
.side-nav a:hover, .side-nav a.active { color: #fff; background: #ccc; }
.side-nav a:hover::after, .side-nav a.active::after { color: #fff; }
.activity-side { max-height: none; overflow: visible; }
.content-main { min-width: 0; padding: 0 30px 15px; }
.module-heading { margin: 0 0 30px; border-bottom: 1px dashed #ccc; }
.module-heading h1, .module-heading h2 { display: inline-block; margin: 0 0 15px; color: #555; font-size: 22px; font-weight: 400; }
.card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px 18px; }
.content-card { text-align: center; background: #fff; }
.content-card .card-image { display: block; overflow: hidden; aspect-ratio: 1; background: #f2f2f2; }
.content-card .card-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.content-card:hover .card-image img { transform: scale(1.035); }
.content-card .card-body { padding: 11px 5px 0; }
.content-card h3 { margin: 0; color: #555; font-size: 16px; font-weight: 400; }
.content-card h3 a:hover { color: var(--cyan); }
.meal-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.meal-grid .card-image { aspect-ratio: 1; }

/* The source uses separate module skins for course, meal and activity pages. */
.page-courses .content-main,
.page-meals .content-main,
.page-activities .content-main { padding: 0 5px 5px; }
.page-courses .side-nav,
.page-meals .side-nav,
.page-activities .side-nav,
.page-party .side-nav { border-right: 0; }
.page-courses .side-nav h2 { display: grid; place-items: center; height: 85px; padding: 0; background: var(--navy); font-size: 26px; font-weight: 700; }
.page-courses .side-nav a { height: 60px; margin: 0; padding: 0 10px 0 20px; border-bottom: 1px solid #ccc; color: #444; background: #e1ecf6; font-size: 18px; line-height: 60px; }
.page-courses .side-nav a::after,
.page-meals .side-nav a::after,
.page-activities .side-nav a::after { display: none; }
.page-courses .side-nav a:hover { color: var(--navy); background: #e1ecf6; font-weight: 400; }
.page-courses .side-nav a.active { color: var(--navy); background: #e1ecf6; font-weight: 700; }
.page-courses .course-grid { gap: 40px 30px; }
.page-courses .content-card { background: #f3f3f3; }
.page-courses .content-card .card-image { border: 1px solid #ccc; }
.page-courses .content-card h3 { color: #444; font-size: 14px; }
.page-courses .content-card h3 a:hover { color: var(--navy); font-weight: 700; text-decoration: underline; }
.page-meals .side-nav h2,
.page-activities .side-nav h2 { display: flex; align-items: center; height: 80px; padding: 0 10px; background: var(--navy); font-size: 26px; font-weight: 400; }
.page-meals .side-nav a,
.page-activities .side-nav a { height: 50px; margin: 0; padding: 0 0 0 10px; border-bottom: 1px solid #ccc; color: #444; background: #dde9f4; font-size: 18px; line-height: 50px; }
.page-meals .side-nav a:hover,
.page-meals .side-nav a.active,
.page-activities .side-nav a:hover,
.page-activities .side-nav a.active { color: var(--navy); background: #dde9f4; }
.page-meals .meal-grid { gap: 20px; }
.page-meals .content-card { background: #f3f3f3; }
.page-party .content-main { padding: 0; }
.page-party .side-nav h2 { display: flex; align-items: center; height: 40px; padding: 0 10px; color: #222; background: #fff; font-size: 16px; font-weight: 400; }
.page-party .module-heading { height: 40px; margin: 0; border: 0; }
.page-party .module-heading h1 { margin: 0; padding-left: 10px; color: #222; font-size: 16px; line-height: 40px; }
.meals-section { position: relative; padding-top: 59px; }
.page-meals .meals-section .original-title { margin-bottom: 60px; }
.meals-slogan { position: absolute; top: 36px; right: 0; left: 0; margin: 0; color: var(--navy); text-align: center; font-size: 24px; }
.page-courses .inner-section { padding-top: 0; }
.page-activities .inner-section { padding-top: 14px; }
.page-activities .inner-section .original-title { margin-bottom: 7px; }

.activity-list { border-top: 1px dashed #ededed; }
.activity-card { display: flex; align-items: center; justify-content: space-between; height: 58px; border-bottom: 1px dashed #ededed; color: #444; }
.activity-card::before { content: ""; width: 3px; height: 3px; margin-right: 10px; background: #666; }
.activity-card span { flex: 1; font-size: 15px; }
.activity-card small { color: #999; }
.activity-card:hover { color: var(--cyan); }
.no-content { margin: 55px 0; color: #999; text-align: center; }

.teacher-section { padding-top: 68px; }
.page-teachers .teacher-section .original-title { margin-bottom: 42px; }
.teacher-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px 70px; align-items: start; }
.teacher-card { margin: 0; background: #fff; }
.teacher-card img { width: 100%; height: auto; }

.about-detail-section { padding: 37px 0 70px; background: #fafaf9; }
.prose { width: 1100px; max-width: 100%; }
.prose .original-title { margin-bottom: 38px; }
.prose h2 { margin: 38px 0 12px; color: var(--navy); font-size: 20px; }
.prose h3 { margin: 28px 0 10px; color: var(--navy); font-size: 19px; }
.prose p { margin: 0 0 16px; color: #444; line-height: 2; text-align: justify; }
.culture-grid { margin-top: 28px; }
.culture-card { padding: 24px 12px; border-top: 1px solid #ececec; }
.culture-card h3 { margin-top: 0; }
.environment-section { padding-top: 60px; background: #fff; }
.environment-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin-top: 36px; }
.environment-card { position: relative; overflow: hidden; aspect-ratio: 600 / 422; }
.environment-card img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.environment-card:hover img { transform: scale(1.04); }
.environment-card div { position: absolute; right: 0; bottom: 0; left: 0; padding: 28px 16px 12px; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.68)); }
.environment-card h3 { margin: 0; font-size: 17px; }

.contact-section { padding: 60px 0 0; background: #fff; }
.desktop-contact-layout { position: relative; height: 1049px; }
.desktop-contact-layout .contact-title { position: absolute; top: 0; left: 0; margin: 0; }
.desktop-contact-map { position: absolute; top: 166px; left: 0; display: block; width: 600px; height: 320px; padding: 20px 20px 25px; background: #fff; box-shadow: 0 0 0 10px #f8f8f8 inset; }
.desktop-contact-map-image { width: 560px; height: 275px; object-fit: cover; }
.desktop-map-label { position: absolute; top: 36px; left: 108px; width: 360px; min-height: 49px; padding: 8px 28px 7px 11px; border: 1px solid #aaa; color: #333; background: rgba(255,255,255,.98); box-shadow: 0 1px 3px rgba(0,0,0,.18); font-size: 11px; line-height: 1.6; white-space: nowrap; }
.desktop-map-label::after { content: ""; position: absolute; bottom: -7px; left: 50%; width: 12px; height: 12px; border-right: 1px solid #aaa; border-bottom: 1px solid #aaa; background: #fff; transform: translateX(-50%) rotate(45deg); }
.desktop-map-label b { position: absolute; top: 3px; right: 7px; color: #999; font: 16px/1 Arial, sans-serif; }
.desktop-contact-details { position: absolute; top: 160px; left: 645px; width: 555px; height: 218px; }
.desktop-contact-detail-row { position: absolute; left: 0; display: flex; align-items: flex-start; width: 555px; height: 40px; padding: 8px 0 0; color: #999; font-size: 14px; line-height: 2; }
.desktop-contact-detail-row:nth-child(1) { top: 0; }
.desktop-contact-detail-row:nth-child(2) { top: 69px; }
.desktop-contact-detail-row:nth-child(3) { top: 141px; }
.desktop-contact-detail-row::after { content: ""; position: absolute; right: 1px; bottom: 0; left: 9px; height: 1px; background: #eeedeb; }
.desktop-contact-detail-row img { width: 40px; height: 40px; margin-right: 12px; flex: 0 0 auto; }
.desktop-contact-detail-row span { padding-top: 0; white-space: nowrap; }
.desktop-contact-follow { position: absolute; top: 377px; left: 704px; display: flex; align-items: center; gap: 31px; color: #999; }
.desktop-contact-follow img { width: 109px; height: 108px; object-fit: cover; }
.desktop-contact-follow p { width: 82px; margin: 0; text-align: center; font-size: 14px; line-height: 2; }
.desktop-contact-form { position: absolute; top: 568px; left: 241px; width: 808px; height: 406px; }
.desktop-contact-form h2 { position: absolute; top: 4px; left: 0; width: 100%; margin: 0; color: #333; text-align: center; font-size: 24px; line-height: 42px; }
.desktop-contact-form > p { position: absolute; top: 50px; left: 0; width: 100%; margin: 0; color: #999; text-align: center; font-size: 12px; line-height: 21px; }
.desktop-contact-form .flash { position: absolute; top: 76px; left: 94px; width: 638px; margin: 0; }
.desktop-contact-form form { position: absolute; top: 101px; left: 94px; width: 638px; }
.desktop-contact-form.has-errors form { top: 146px; }
.desktop-contact-form .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.desktop-contact-form .field { margin-bottom: 20px; }
.desktop-contact-form .field label { display: none; }
.desktop-contact-form .field input,
.desktop-contact-form .field textarea { width: 100%; border: 1px solid #ededed; border-radius: 0; color: #888; background: #fff; outline: none; font-size: 12px; }
.desktop-contact-form .field input { height: 39px; padding: 0 10px; line-height: 37px; }
.desktop-contact-form .field textarea { display: block; height: 114px; min-height: 114px; padding: 9px 10px; resize: vertical; line-height: 1.7; }
.desktop-contact-form .field input:focus,
.desktop-contact-form .field textarea:focus { border-color: var(--cyan); }
.desktop-contact-form .button { display: flex; width: 119px; min-width: 119px; height: 45px; margin: 0 auto; border: 0; border-radius: 6px; color: #fff; background: var(--navy); font-size: 14px; }
.desktop-contact-form .button:hover { background: #17498e; }

.party-list { border-top: 1px dashed #ededed; }
.party-item { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 51px; border-bottom: 1px dashed #ededed; }
.party-item h3 { margin: 0; color: #444; font-size: 14px; font-weight: 400; }
.party-item time { color: #999; }
.party-item:hover h3 { color: var(--cyan); text-decoration: underline; }

.detail-section { background: #fafaf9; }
.article { width: 980px; max-width: 100%; margin: 0 auto; padding: 40px 45px; background: #fff; }
.article > h1 { margin: 0 0 8px; color: #333; text-align: center; font-size: 28px; }
.article-meta { margin-bottom: 28px; color: #999; text-align: center; }
.article-body { color: #444; font-size: 15px; line-height: 2; }
.gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 30px; }
.gallery button { overflow: hidden; padding: 0; border: 0; background: #eee; cursor: zoom-in; aspect-ratio: 4 / 3; }
.gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.gallery button:hover img { transform: scale(1.04); }
.lightbox[hidden] { display: none; }
.lightbox { position: fixed; z-index: 1000; inset: 0; display: grid; place-items: center; padding: 30px; background: rgba(0,0,0,.9); }
.lightbox figure { max-width: min(1100px, 96vw); max-height: 90vh; margin: 0; }
.lightbox img { max-width: 100%; max-height: 82vh; margin: auto; object-fit: contain; }
.lightbox figcaption { margin-top: 10px; color: #fff; text-align: center; }
.lightbox-close { position: absolute; top: 20px; right: 24px; width: 44px; height: 44px; border: 0; color: #fff; background: rgba(255,255,255,.15); font-size: 28px; cursor: pointer; }

/* Footer */
.site-footer { min-height: 321px; color: #ccc; background: #373838; }
.footer-nav { display: flex; align-items: flex-start; justify-content: flex-start; height: 92px; padding-top: 17px; border-bottom: 1px solid #999; }
.footer-nav a { position: relative; display: grid; place-items: center; width: 101.833px; height: 70px; font-size: 16px; }
.footer-nav a:not(:last-child)::after { content: ""; position: absolute; top: 26px; right: 0; width: 1px; height: 18px; background: #555; }
.footer-nav a:hover { color: var(--cyan); }
.footer-contact-row { position: relative; display: block; height: 137px; min-height: 137px; }
.footer-contact-item { position: absolute; top: 40px; display: flex; align-items: flex-start; min-width: 0; }
.footer-phone { left: 0; width: 305px; gap: 7px; }
.footer-address { left: 309px; width: 397px; gap: 15px; }
.footer-email { left: 725px; width: 240px; gap: 18px; }
.footer-icon { width: 45px; height: 45px; margin-top: 4px; flex: 0 0 auto; border: 0; object-fit: contain; }
.footer-contact-item p { margin: 0; min-width: 0; }
.footer-contact-item strong { display: block; color: #ccc; font-size: 18px; font-weight: 400; line-height: 1.8; }
.footer-contact-item span, .footer-contact-item a { display: block; color: #f3f3f3; font-size: 14px; line-height: 1.8; white-space: nowrap; }
.footer-phone span { font-size: 16px; }
.footer-follow { position: absolute; top: 21px; left: 1009px; display: flex; align-items: center; gap: 8px; }
.footer-follow img { width: 100px; height: 100px; }
.footer-follow p { width: 83px; margin: 0; color: #ccc; text-align: center; font-size: 18px; line-height: 1.8; }
.footer-follow p span { color: #f3f3f3; font-size: 16px; }
.footer-bottom { position: relative; display: block; height: 92px; min-height: 92px; padding: 0; color: #ccc; font-size: 14px; }
.footer-links-label { position: absolute; top: 12px; left: 4px; font-size: 16px; }
.footer-friendly-links { position: absolute; top: 12px; left: 99px; display: flex; align-items: center; gap: 12px; white-space: nowrap; }
.footer-friendly-links i { width: 1px; height: 14px; background: #555; }
.footer-copyright { position: absolute; top: 12px; left: 490px; width: 707px; white-space: nowrap; }
.footer-bottom a:hover { color: var(--cyan); }
.floating-phone { position: fixed; z-index: 30; right: 18px; bottom: 18px; display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; color: #fff; background: var(--cyan); font-size: 23px; box-shadow: 0 3px 12px rgba(0,0,0,.18); }

@media (max-width: 900px) {
  .container { max-width: calc(100% - 28px); }
  .site-header { height: 82px; background: #fff; border-bottom: 4px solid var(--navy); }
  .header-top { height: 78px; }
  .brand { top: 5px; width: 70px; height: 68px; }
  .quality-slogan, .header-hotline { display: none; }
  .nav-toggle { position: absolute; top: 19px; right: 0; display: block; width: 42px; height: 42px; padding: 9px; border: 0; background: var(--navy); }
  .nav-toggle span { display: block; height: 2px; margin: 5px 0; background: #fff; }
  .site-nav { position: absolute; top: 82px; right: 0; left: 0; display: none; height: auto; box-shadow: 0 8px 20px rgba(0,0,0,.18); }
  .site-nav.open { display: block; }
  .nav-inner { display: grid; grid-template-columns: repeat(2, 1fr); height: auto; padding: 7px 0; }
  .site-nav a { width: auto; height: 46px; font-size: 15px; }
  .site-nav a::before { display: none; }
  .site-nav a.active { color: #fff; background: var(--cyan); }
  .hero { height: clamp(210px, 43vw, 360px); }
  .values { height: auto; min-height: 345px; padding: 50px 0 55px; }
  .value-grid { gap: 20px; }
  .value-slogan { margin-top: 58px; }
  .about-home { grid-template-columns: 1.15fr .85fr; gap: 35px; }
  .about-photo::after { display: none; }
  .about-photo img { width: 100%; height: auto; }
  .advantage-orbit { transform: scale(.82); transform-origin: center top; margin-bottom: -50px; }
  .content-layout, .meal-layout, .activity-layout, .party-layout { grid-template-columns: 210px minmax(0, 1fr); }
  .meal-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .teacher-grid { gap: 14px 28px; }
  .footer-contact-row { grid-template-columns: 1fr 1.4fr; padding: 25px 0; }
  .footer-follow { justify-content: flex-start; }
}

@media (max-width: 620px) {
  body { font-size: 13px; }
  .container { max-width: calc(100% - 24px); }
  .hero { height: clamp(110px, 29.42vw, 183px); }
  .hero-dots { bottom: 12px; gap: 7px; }
  .hero-dot { width: 11px; height: 11px; border-width: 1px; }
  .value-grid { grid-template-columns: repeat(2, 1fr); gap: 42px 16px; }
  .values { padding: 42px 0 46px; }
  .value-card img { width: 70px; height: 70px; }
  .value-card span { margin: 16px auto 10px; }
  .value-slogan { margin: 45px 15px 0; font-size: 18px; }
  .values-compact { min-height: 570px; }
  .home-about { min-height: 0; padding: 45px 0 55px; }
  .home-section-title h2 { font-size: 30px; }
  .home-section-title img { width: 122px; height: 62px; }
  .about-home { display: flex; flex-direction: column; gap: 20px; margin-top: 38px; }
  .about-copy { font-size: 14px; line-height: 1.9; }
  .about-photo { order: -1; width: calc(100% - 16px); margin: 0 auto 8px; }
  .about-photo img { width: 100%; height: auto; }
  .home-advantages { min-height: 0; padding: 55px 0; }
  .advantage-orbit { display: flex; flex-direction: column; gap: 18px; width: 100%; height: auto; margin-top: 30px; transform: none; }
  .advantage-photo-wrap { position: relative; top: auto; left: auto; width: 270px; height: 270px; margin: 0 auto 14px; transform: none; }
  .advantage-photo-wrap img { top: 29px; left: 29px; width: 210px; height: 210px; }
  .advantage-item { position: static; gap: 16px; width: min(310px, 100%); margin: 0 auto; padding-bottom: 12px; border-bottom: 1px dashed #ddd; }
  .advantage-item b { width: 56px; flex: 0 0 auto; font-size: 40px; text-align: right; }
  .advantage-item span { font-size: 18px; }
  .advantage-item br { display: none; }
  .inner-banner { height: 180px; }
  .inner-banner-course { background-position: 51% center; }
  .breadcrumb-row { font-size: 12px; }
  .breadcrumb-row .container { min-height: 43px; overflow: hidden; white-space: nowrap; }
  .inner-section { padding: 38px 0 55px; }
  .original-title { grid-template-columns: 1fr 116px 1fr; gap: 12px; margin-bottom: 30px; }
  .original-title h1 { font-size: 25px; }
  .original-title p { font-size: 13px; }
  .content-layout, .meal-layout, .activity-layout, .party-layout { display: block; }
  .side-nav { display: flex; overflow-x: auto; margin-bottom: 26px; border: 0; scrollbar-width: none; }
  .side-nav::-webkit-scrollbar { display: none; }
  .side-nav h2 { display: none; }
  .side-nav a { flex: 0 0 auto; height: 38px; margin: 0 8px 0 0; padding: 7px 14px; }
  .side-nav a::after { display: none; }
  .activity-side { max-height: none; }
  .content-main { padding: 0; }
  .module-heading { margin-bottom: 22px; }
  .module-heading h1, .module-heading h2 { margin-bottom: 10px; font-size: 20px; }
  .card-grid, .meal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 12px; }
  .content-card h3 { font-size: 14px; }
  .meals-slogan { margin: -4px 10px 32px; font-size: 18px; }
  .activity-card { height: 52px; }
  .activity-card small { display: none; }
  .teacher-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .about-detail-section { padding: 45px 0 50px; }
  .prose p { line-height: 1.9; }
  .prose h2 { margin-top: 28px; }
  .environment-section { padding-top: 50px; }
  .environment-grid { grid-template-columns: 1fr; gap: 14px; margin-top: 25px; }
  .contact-grid { grid-template-columns: 1fr; gap: 24px; padding-top: 38px; }
  .contact-title { margin-bottom: 0; }
  .form-card, .contact-card { padding: 22px 16px; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
  .contact-map { height: 220px; }
  .contact-point { grid-template-columns: 52px 1fr; }
  .article { padding: 27px 16px; }
  .article > h1 { font-size: 23px; }
  .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .footer-nav { grid-template-columns: repeat(3, 1fr); height: auto; padding: 12px 0; }
  .footer-nav a { height: 40px; font-size: 14px; }
  .footer-contact-row { grid-template-columns: 1fr; gap: 20px; padding: 28px 0; }
  .footer-follow { justify-content: flex-start; }
  .footer-bottom { padding: 18px 10px; text-align: center; }
  .floating-phone { right: 12px; bottom: 12px; width: 46px; height: 46px; }
}

/* The original site serves a separate mobile composition. These rules recreate
   that composition instead of merely shrinking the desktop homepage. */
@media (max-width: 900px) {
  html { scroll-padding-bottom: 54px; }
  body { padding-bottom: 52px; overflow-x: hidden; background: #f8f8f8; font-size: 13px; }
  body.nav-open { overflow: hidden; }
  .container { width: 100%; max-width: calc(100% - 20px); }

  .site-header { position: relative; z-index: 95; height: 56px; border: 0; background: #fff; box-shadow: 0 1px 5px rgba(0,0,0,.08); }
  .header-top { width: 100%; max-width: 100%; height: 56px; }
  .brand, .quality-slogan, .header-hotline { display: none; }
  .mobile-brand { position: absolute; top: 0; left: 50%; display: flex; align-items: center; width: min(92vw, 365px); height: 56px; transform: translateX(-50%); }
  .mobile-brand img { width: 100%; max-height: 52px; object-fit: contain; }
  .nav-toggle { position: absolute; top: 13px; right: 11px; display: grid; grid-template-columns: repeat(2, 11px); grid-template-rows: repeat(2, 11px); gap: 4px; width: 31px; height: 31px; padding: 2px; border: 0; background: transparent; cursor: pointer; }
  .nav-toggle span { display: block; width: 11px; height: 11px; margin: 0; background: var(--cyan); }

  .site-nav { position: fixed; z-index: 100; top: 0; right: 0; bottom: 0; left: auto; display: block; width: 60%; max-width: 350px; height: 100vh; height: 100dvh; overflow-y: auto; background: #6d6e70; box-shadow: -3px 0 9px rgba(0,0,0,.38); transform: translateX(105%); transition: transform .24s ease; }
  .site-nav.open { display: block; transform: translateX(0); }
  .nav-inner { display: block; width: 100%; max-width: none; height: auto; margin: 0; padding: 18px 14px 28px; }
  .site-nav a { display: flex; align-items: center; justify-content: flex-start; gap: 16px; width: 100%; height: 47px; border-bottom: 2px solid rgba(45,45,45,.45); color: #fff; background: transparent; font-size: 18px; }
  .site-nav a::before { content: ""; position: static; display: block; width: 0; height: 0; border-top: 7px solid transparent; border-bottom: 7px solid transparent; border-left: 9px solid rgba(88,88,88,.8); background: transparent; transform: none; }
  .site-nav a:hover, .site-nav a.active { color: #fff; background: transparent; }
  .site-nav a:hover::before, .site-nav a.active::before { background: transparent; }
  .site-nav .mobile-nav-hidden { display: none; }
  .nav-overlay { position: fixed; z-index: 90; inset: 0; display: block; width: 100%; height: 100%; padding: 0; border: 0; opacity: 0; pointer-events: none; background: rgba(0,0,0,.56); transition: opacity .24s ease; }
  .nav-overlay.open { opacity: 1; pointer-events: auto; }

  .desktop-home-only { display: none !important; }
  .mobile-home-only { display: block; }
  .page-home main { background: #f8f8f8; }
  .mobile-hero { width: 100%; height: 49.75vw; min-height: 0; max-height: none; background: #eee; }
  .mobile-hero .hero-slide img { object-fit: cover; object-position: center; }
  .mobile-hero .hero-dots { bottom: 8px; gap: 7px; }
  .mobile-hero .hero-dot { width: 9px; height: 9px; border: 0; background: #999; }
  .mobile-hero .hero-dot.active { background: #199ce5; }

  .mobile-home-panel { background: #f8f8f8; }
  .mobile-quick-links { display: grid; grid-template-columns: repeat(4, 1fr); height: 120px; padding: 9px 3px 0; background: #fff; }
  .mobile-quick-links a { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; min-width: 0; color: #595959; text-align: center; font-size: 14px; }
  .mobile-quick-links img { width: 45px; height: 45px; margin-top: 5px; object-fit: contain; }
  .mobile-quick-links span { margin-top: 11px; white-space: nowrap; }
  .mobile-value-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 0 10px 20px; background: #f8f8f8; }
  .mobile-value-grid article { position: relative; height: 70px; margin: 0; overflow: hidden; color: #fff; background: #14c0e5; }
  .mobile-value-grid span { position: absolute; z-index: 1; top: 8px; left: 9px; font-size: 14px; line-height: 1.2; white-space: nowrap; }
  .mobile-value-grid img { position: absolute; right: 8px; bottom: 2px; width: 40px; height: 40px; object-fit: contain; }

  .mobile-teacher { padding-bottom: 18px; background: #f8f8f8; }
  .mobile-teacher header { padding: 21px 0 10px; text-align: center; }
  .mobile-teacher-heading-link { display: block; }
  .mobile-teacher h2 { margin: 0; color: #555; font-size: 21px; font-weight: 700; line-height: 1.3; }
  .mobile-teacher p { margin: 3px 0 0; color: var(--cyan); font-size: 14px; line-height: 1.3; }
  .mobile-teacher-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 0 10px; }
  .mobile-teacher-grid a { overflow: hidden; color: #555; text-align: center; background: #fff; }
  .mobile-teacher-grid img { width: 100%; height: auto; }
  .mobile-teacher-grid span { display: block; min-height: 34px; padding: 7px 4px; font-size: 13px; line-height: 1.45; }

  .mobile-section-heading { padding: 21px 0 13px; text-align: center; background: #fff; }
  .mobile-section-heading h2 { margin: 0; color: #555; font-size: 21px; font-weight: 700; line-height: 1.3; }
  .mobile-section-heading p { margin: 3px 0 0; color: var(--cyan); font-size: 14px; line-height: 1.3; }
  .mobile-about-section { background: #fff; }
  .mobile-about-content { position: relative; overflow: hidden; padding: 48px 12px 22px; color: #fff; background: var(--cyan) url('../images/tmp1499914791_1498718_s.png') center top/auto 100% no-repeat; }
  .mobile-about-content::before { content: ""; position: absolute; top: -38px; left: 50%; width: 132%; height: 60px; border-radius: 0 0 50% 50%; background: #fff; transform: translateX(-50%); }
  .mobile-about-content h3, .mobile-about-content p, .mobile-about-content img, .mobile-about-content a { position: relative; z-index: 1; }
  .mobile-about-content h3 { margin: 0 0 5px; font-size: 15px; }
  .mobile-about-content p { margin: 0 0 14px; font-size: 13px; line-height: 1.9; text-align: justify; }
  .mobile-about-photo { width: 100%; height: auto; margin-top: 3px; }
  .mobile-more { display: block; width: 50px; height: 50px; margin: 16px auto 0; }
  .mobile-more img { width: 50px; height: 50px; }
  .mobile-teacher-more { margin-top: 15px; }
  .mobile-advantage-section { padding-bottom: 20px; background: #fff; }
  .mobile-advantage-image { width: min(100% - 20px, 490px); height: auto; margin: 3px auto 15px; }
  .mobile-advantage-list { margin: 0 10px; padding: 14px 18px 15px; color: #555; background: #f8f8f8; }
  .mobile-advantage-list h3 { margin: 0 0 8px; font-size: 18px; font-weight: 400; }
  .mobile-advantage-list p { margin: 0; font-size: 14px; line-height: 2; }
  .mobile-advantage-list b { color: var(--cyan); font-size: 18px; }
  .mobile-news-section { position: relative; padding-bottom: 22px; background: #f8f8f8; }
  .mobile-news-section .mobile-section-heading { background: #f8f8f8; }
  .mobile-empty { margin: 0 10px; padding: 18px 10px; color: #888; text-align: center; background: #fff; }

  .site-footer, .floating-phone { display: none !important; }
  .mobile-tool-nav { position: fixed; z-index: 85; right: 0; bottom: 0; left: 0; display: grid; grid-template-columns: repeat(5, 1fr); height: 52px; border-top: 1px solid #dbdbdb; background: #fff; }
  .mobile-tool-nav a, .mobile-tool-nav button { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; min-width: 0; padding: 0; border: 0; color: #777; background: transparent; font-size: 11px; line-height: 1.15; cursor: pointer; }
  .mobile-tool-nav a.active, .mobile-tool-nav button.active { color: var(--cyan); }
  .mobile-tool-nav svg { width: 25px; height: 25px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
  .mobile-tool-nav a:first-child svg { color: var(--cyan); }

  .inner-banner { height: 180px; }
  .inner-banner-course { background-position: 51% center; }
  .breadcrumb-row { font-size: 12px; }
  .breadcrumb-row .container { min-height: 43px; overflow: hidden; white-space: nowrap; }
  .inner-section { padding: 38px 0 55px; }
  .original-title { grid-template-columns: 1fr 116px 1fr; gap: 12px; margin-bottom: 30px; }
  .original-title h1 { font-size: 25px; }
  .original-title p { font-size: 13px; }
  .content-layout, .meal-layout, .activity-layout, .party-layout { display: block; }
  .side-nav { display: flex; overflow-x: auto; margin-bottom: 26px; border: 0; scrollbar-width: none; }
  .side-nav::-webkit-scrollbar { display: none; }
  .side-nav h2 { display: none; }
  .side-nav a { flex: 0 0 auto; height: 38px; margin: 0 8px 0 0; padding: 7px 14px; }
  .side-nav a::after { display: none; }
  .activity-side { max-height: none; }
  .content-main { padding: 0; }
  .module-heading { margin-bottom: 22px; }
  .module-heading h1, .module-heading h2 { margin-bottom: 10px; font-size: 20px; }
  .card-grid, .meal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 12px; }
  .content-card h3 { font-size: 14px; }
  .meals-slogan { margin: -4px 10px 32px; font-size: 18px; }
  .activity-card { height: 52px; }
  .activity-card small { display: none; }
  .teacher-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .about-detail-section { padding: 45px 0 50px; }
  .prose p { line-height: 1.9; }
  .prose h2 { margin-top: 28px; }
  .environment-section { padding-top: 50px; }
  .environment-grid { grid-template-columns: 1fr; gap: 14px; margin-top: 25px; }
  .contact-grid { grid-template-columns: 1fr; gap: 24px; padding-top: 38px; }
  .contact-title { margin-bottom: 0; }
  .form-card, .contact-card { padding: 22px 16px; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
  .contact-map { height: 220px; }
  .contact-point { grid-template-columns: 52px 1fr; }
  .article { padding: 27px 16px; }
  .article > h1 { font-size: 23px; }
  .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
}

@media (max-width: 380px) {
  .mobile-brand { width: 92vw; }
  .site-nav a { font-size: 17px; }
  .mobile-quick-links a, .mobile-value-grid span { font-size: 12px; }
  .mobile-value-grid { gap: 8px; padding-right: 8px; padding-left: 8px; }
}

/* Original mobile inner pages -------------------------------------------------
   The source site has dedicated mobile compositions for every section. */
@media (max-width: 900px) {
  .mobile-inner-page { min-height: calc(100vh - 108px); min-height: calc(100dvh - 108px); color: #555; background: #f8f8f8; }
  .mobile-wide-banner { width: 100%; height: auto; aspect-ratio: 1920 / 362; object-fit: cover; }

  .mobile-page-title { position: relative; padding: 28px 15px 22px; text-align: center; background: #fff; }
  .mobile-page-title::before, .mobile-page-title::after { content: ""; position: absolute; top: 43px; width: calc(50% - 84px); height: 1px; background: #dedede; }
  .mobile-page-title::before { left: 0; }
  .mobile-page-title::after { right: 0; }
  .mobile-page-title h1, .mobile-page-title h2 { margin: 0; color: #555; font-size: 20px; font-weight: 700; line-height: 1.35; }
  .mobile-page-title span { display: block; margin-top: 4px; color: var(--cyan); font-size: 14px; line-height: 1.3; }
  .mobile-list-empty { margin: 0; padding: 55px 15px; color: #999; text-align: center; background: #fff; }

  .mobile-category-tabs { display: grid; grid-template-columns: repeat(5, 1fr); align-items: center; min-height: 49px; padding: 5px 0; border-bottom: 1px solid #ececec; background: #fff; }
  .mobile-category-tabs a { display: grid; place-items: center; min-width: 0; height: 39px; color: var(--navy); font-size: 16px; }
  .mobile-category-tabs a + a { border-left: 1px solid #ededed; }
  .mobile-category-tabs a.active { color: #fff; background: var(--cyan); }
  .mobile-course-list { padding: 10px 5px 20px; }
  .mobile-course-card { position: relative; display: grid; grid-template-columns: 100px minmax(0, 1fr) 18px; align-items: center; min-height: 100px; margin-bottom: 10px; overflow: hidden; background: #fff; }
  .mobile-course-card img { width: 100px; height: 100px; object-fit: cover; }
  .mobile-course-card span { padding: 0 12px; color: #555; font-size: 16px; }
  .mobile-course-card i { color: #c9c9c9; font-size: 25px; font-style: normal; }

  .mobile-meals-title { min-height: 136px; padding-top: 22px; }
  .mobile-meals-title::before, .mobile-meals-title::after { top: 83px; }
  .mobile-meals-title p { margin: 0 0 19px; color: #555; font-size: 15px; }
  .mobile-meal-list { padding: 0 5px 20px; }
  .mobile-meal-card { position: relative; margin: 0 0 10px; overflow: hidden; background: #fff; }
  .mobile-meal-card h2 { height: 42px; margin: 0; padding: 7px 12px; color: #555; font-size: 17px; font-weight: 400; line-height: 28px; }
  .mobile-meal-image { display: block; width: 100%; overflow: hidden; background: #eee; }
  .mobile-meal-image img { width: 100%; height: auto; max-height: 310px; object-fit: cover; }
  .mobile-meal-card > span { position: absolute; right: 9px; bottom: 8px; padding: 2px 8px; color: #fff; background: rgba(0,0,0,.55); font-size: 12px; }

  .mobile-activity-page { background: #fff; }
  .mobile-activity-empty { min-height: 360px; margin: 0; padding-top: 95px; color: #aaa; text-align: center; background: #fff; }

  .mobile-faculty-page { padding-bottom: 12px; }
  .mobile-faculty-list { padding: 0 10px; }
  .mobile-faculty-card { display: grid; grid-template-columns: 120px minmax(0, 1fr); min-height: 150px; margin: 0 0 10px; overflow: hidden; background: #fff; }
  .mobile-faculty-photo { display: block; width: 120px; height: 150px; overflow: hidden; background: #eee; }
  .mobile-faculty-photo img { width: 120px; height: 150px; object-fit: cover; }
  .mobile-faculty-card > div { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; padding: 17px 15px 14px; }
  .mobile-faculty-card h2 { margin: 0; color: #555; font-size: 17px; font-weight: 400; line-height: 1.45; }
  .mobile-faculty-card p { display: -webkit-box; margin: 7px 0 0; overflow: hidden; color: #999; font-size: 12px; line-height: 1.6; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
  .mobile-detail-button { display: inline-grid; place-items: center; min-width: 75px; height: 30px; margin-top: auto; border: 1px solid var(--cyan); color: var(--cyan); font-size: 13px; }

  .mobile-values-caption { margin: 0; padding: 22px 10px 12px; color: #555; text-align: center; background: #fff; font-size: 20px; font-weight: 700; }
  .mobile-about-values { padding-top: 0; background: #f8f8f8; }
  .mobile-about-copy { background: #fff; }
  .mobile-prose { padding: 0 10px 25px; color: #555; background: #fff; }
  .mobile-prose h2, .mobile-prose h3 { margin: 0 0 8px; padding-top: 14px; color: var(--navy); font-size: 16px; }
  .mobile-prose p { margin: 0 0 14px; font-size: 13px; line-height: 1.9; text-align: justify; }
  .mobile-prose .culture-grid { margin-top: 0; }
  .mobile-prose .culture-card { padding: 2px 0 8px; border-top: 1px solid #eee; }
  .mobile-environment-section { background: #f8f8f8; }
  .mobile-environment-section .mobile-page-title { background: #f8f8f8; }
  .mobile-environment-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 0 10px 20px; }
  .mobile-environment-grid article { overflow: hidden; background: #fff; }
  .mobile-environment-grid img { width: 100%; aspect-ratio: 1.42; object-fit: cover; }
  .mobile-environment-grid h3 { min-height: 38px; margin: 0; padding: 8px 6px; color: #666; text-align: center; font-size: 13px; font-weight: 400; line-height: 1.4; }

  .mobile-contact-page { background: #fff; }
  .mobile-contact-details { padding: 0 10px 5px; background: #fff; }
  .mobile-contact-details h2 { margin: 0 0 3px; padding: 8px 0; color: #555; font-size: 16px; }
  .mobile-contact-details > a { display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; min-height: 51px; border-bottom: 1px solid #dbdbdb; color: #7f7f7f; }
  .mobile-contact-details > a:last-child { min-height: 80px; }
  .mobile-contact-icon { display: grid; place-items: center; width: 30px; height: 30px; border: 1px solid var(--cyan); border-radius: 50%; color: var(--cyan); font-size: 15px; }
  .mobile-contact-details strong { font-size: 14px; font-weight: 700; line-height: 1.7; }
  .mobile-map-card { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 200px; margin: 0 10px 18px; overflow: hidden; color: var(--navy); background-color: #edf4f5; background-image: linear-gradient(rgba(25,82,161,.08) 1px, transparent 1px), linear-gradient(90deg, rgba(25,82,161,.08) 1px, transparent 1px); background-size: 25px 25px; }
  .mobile-map-pin { position: relative; width: 35px; height: 35px; margin-bottom: 14px; border-radius: 50% 50% 50% 6px; background: #e24a44; transform: rotate(-45deg); }
  .mobile-map-pin::after { content: ""; position: absolute; top: 10px; left: 10px; width: 15px; height: 15px; border-radius: 50%; background: #fff; }
  .mobile-map-card strong, .mobile-map-card small { display: block; }
  .mobile-map-card strong { font-size: 16px; }
  .mobile-map-card small { color: #6f7f8b; }
  .mobile-message-section { padding-bottom: 25px; background: #f8f8f8; }
  .mobile-message-section .mobile-page-title { padding-top: 30px; background: #f8f8f8; }
  .mobile-message-section .mobile-page-title::before, .mobile-message-section .mobile-page-title::after { display: none; }
  .mobile-message-section .mobile-page-title p { margin: 8px 0 0; color: #7f7f7f; font-size: 12px; }
  .mobile-message-section .flash { width: calc(100% - 20px); margin: 0 auto 10px; }
  .mobile-message-section form { padding: 0 10px; }
  .mobile-message-section label { display: block; margin-bottom: 11px; }
  .mobile-message-section label > span { display: block; margin-bottom: 4px; color: #666; }
  .mobile-message-section label b { color: #e34a42; }
  .mobile-message-section input, .mobile-message-section textarea { width: 100%; padding: 10px; border: 1px solid #d8d8d8; border-radius: 0; color: #555; background: #fff; outline: none; }
  .mobile-message-section textarea { min-height: 105px; resize: vertical; }
  .mobile-message-section input:focus, .mobile-message-section textarea:focus { border-color: var(--cyan); }
  .mobile-message-section button { display: block; width: 110px; height: 38px; margin: 16px auto 0; border: 0; color: #fff; background: var(--cyan); }

  .mobile-detail-topbar { position: relative; display: flex; align-items: center; justify-content: center; min-height: 50px; border-bottom: 1px solid #e5e5e5; background: #fafafa; }
  .mobile-detail-topbar a { position: absolute; top: 0; left: 0; display: grid; place-items: center; width: 50px; height: 50px; color: #666; font: 37px/1 Arial, sans-serif; }
  .mobile-detail-topbar h1 { max-width: calc(100% - 100px); margin: 0; overflow: hidden; color: #333; font-size: 18px; font-weight: 400; line-height: 50px; white-space: nowrap; text-overflow: ellipsis; }
  .mobile-article { padding: 12px 10px 25px; background: #fff; }
  .mobile-article-body { color: #555; font-size: 14px; line-height: 1.9; }
  .mobile-article-body p { margin: 0 0 13px; text-align: justify; }
  .mobile-teacher-detail-image { width: min(100%, 420px); height: auto; margin: 0 auto 15px; }
  .mobile-detail-gallery, .mobile-photo-detail { display: grid; grid-template-columns: 1fr; gap: 12px; padding-top: 12px; }
  .mobile-photo-detail { padding: 10px 10px 25px; background: #fff; }
  .mobile-photo-detail figure { margin: 0; }
  .mobile-detail-gallery button, .mobile-photo-detail button { display: block; width: 100%; padding: 0; border: 0; background: #eee; }
  .mobile-detail-gallery img, .mobile-photo-detail img { width: 100%; height: auto; }
}

/* Standalone mobile guest-book page --------------------------------------- */
body.mobile-message-standalone { min-width: 0; min-height: 100vh; min-height: 100dvh; padding: 0; color: #555; background: #fff; }
.mobile-message-standalone main { min-height: 0; }
.message-page-bar { position: relative; display: grid; grid-template-columns: 82px minmax(0, 1fr) 82px; align-items: center; height: 52px; padding: 0 9px; color: #fff; background: linear-gradient(#0879da, #0065bd); box-shadow: inset 0 1px rgba(255,255,255,.2); }
.message-page-bar h1 { margin: 0; overflow: hidden; text-align: center; font-size: 18px; font-weight: 700; line-height: 52px; white-space: nowrap; text-overflow: ellipsis; }
.message-page-bar a, .message-page-bar button { display: grid; place-items: center; width: 70px; height: 36px; padding: 0; border: 1px solid rgba(0,44,105,.78); color: #fff; background: linear-gradient(#075cab, #064683); box-shadow: inset 0 1px 1px rgba(255,255,255,.3), 0 1px 1px rgba(0,0,0,.18); font-size: 16px; font-weight: 700; line-height: 1; text-shadow: 0 1px rgba(0,0,0,.35); cursor: pointer; }
.message-page-bar a { padding-left: 4px; border-radius: 4px 16px 16px 4px; clip-path: polygon(11px 0, 100% 0, 100% 100%, 11px 100%, 0 50%); }
.message-page-bar button { justify-self: end; border-radius: 16px 4px 4px 16px; }
.message-page-menu { z-index: 88; top: 57px; right: 10px; }
.message-page-main { width: min(100%, 720px); margin: 0 auto; padding: 22px 20px 45px; background: #fff; }
.message-page-main form { margin: 0; }
.message-page-main label { display: block; margin: 0 0 17px; }
.message-page-main input, .message-page-main textarea { display: block; width: 100%; border: 1px solid #cfcfcf; border-radius: 5px; color: #555; background: #fff; outline: none; box-shadow: inset 0 1px 2px rgba(0,0,0,.025); font-size: 16px; }
.message-page-main input { height: 52px; padding: 0 11px; }
.message-page-main textarea { min-height: 150px; padding: 10px 11px; line-height: 1.6; resize: vertical; }
.message-page-main input:focus, .message-page-main textarea:focus { border-color: #1687db; box-shadow: 0 0 0 2px rgba(22,135,219,.1); }
.message-page-main input::placeholder, .message-page-main textarea::placeholder { color: #777; opacity: 1; }
.message-page-submit { display: block; width: 100%; height: 48px; margin: 7px 0 0; padding: 0; border: 0; border-radius: 3px; color: #fff; background: linear-gradient(#1288df, #0873cc); font-size: 17px; cursor: pointer; }
.message-page-alert { margin: 0 0 16px; padding: 10px 12px; border: 1px solid; border-radius: 3px; font-size: 14px; line-height: 1.6; }
.message-page-success { color: #166f51; border-color: #bfe8d7; background: #eaf9f2; }
.message-page-error { color: #a53131; border-color: #f0c6c1; background: #fff1f0; }
.message-page-honeypot { position: absolute; left: -9999px; }

@media (max-width: 380px) {
  .message-page-bar { grid-template-columns: 72px minmax(0, 1fr) 72px; padding-right: 6px; padding-left: 6px; }
  .message-page-bar a, .message-page-bar button { width: 64px; }
  .message-page-main { padding-right: 13px; padding-left: 13px; }
}

@media (min-width: 901px) {
  .mobile-message-standalone .site-nav,
  .mobile-message-standalone .nav-overlay,
  .mobile-message-standalone .message-page-menu { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  html.js .reveal-on-scroll { opacity: 1; transform: none; transition: none; }
  .mobile-qr-modal, .mobile-qr-dialog { transition: none; }
}
