:root {
  --paper: #e8f1ef;
  --ink: #17363a;
  --ink-soft: #536b6f;
  --teal: #3c817d;
  --teal-deep: #17363a;
  --blue: #729fa6;
  --coral: #dda59a;
  --coral-soft: #efd0c9;
  --yellow: #f0cf78;
  --white: #fffdf8;
  --line: rgba(21, 61, 56, .18);
  --content: 1160px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-width: 320px; overflow-x: clip; background: var(--paper); color: var(--ink); font-family: Pretendard, "Noto Sans KR", Arial, sans-serif; word-break: keep-all; text-rendering: optimizeLegibility; }
body::before { position: fixed; inset: -20% -10%; z-index: -1; content: ""; pointer-events: none; background: radial-gradient(circle at 82% 12%, rgba(114, 159, 166, .26), transparent 24%), radial-gradient(circle at 12% 68%, rgba(60, 129, 125, .16), transparent 27%); animation: ambientOrb 8s ease-in-out infinite; }
@keyframes ambientOrb { 50% { transform: translate3d(1.5%, -1%, 0) scale(1.025); } }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
button { color: inherit; font: inherit; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 3px solid var(--yellow); outline-offset: 4px; }
.page-shell, .site-nav { width: min(var(--content), calc(100% - 40px)); margin-inline: auto; }
.skip-link { position: fixed; top: -90px; left: max(16px, env(safe-area-inset-left)); z-index: 12000; padding: 12px 19px; border-radius: 999px; background: var(--teal); color: var(--white); font-weight: 900; }
.skip-link:focus { top: max(16px, env(safe-area-inset-top)); }

.site-nav { min-height: 72px; display: grid; grid-template-columns: 250px 1fr auto; align-items: center; gap: 28px; border-bottom: 1px solid var(--line); }
.brand-link, .brand-lockup { display: block; line-height: 0; }
.brand-lockup { width: 222px; }
.brand-lockup img { width: 100%; height: auto; }
.site-nav nav { justify-self: center; display: flex; align-items: center; gap: 24px; }
.site-nav nav a { position: relative; padding: 13px 0; color: var(--ink-soft); font-size: 12px; font-weight: 800; }
.site-nav nav a::after { position: absolute; right: 0; bottom: 7px; left: 0; height: 2px; content: ""; transform: scaleX(0); background: var(--coral); transition: transform .25s ease; }
.site-nav nav a:is(:hover, :focus-visible)::after { transform: scaleX(1); }
.site-nav > p { margin: 0; text-align: right; font-family: Georgia, serif; font-size: 11px; font-style: italic; letter-spacing: .04em; }
.site-nav > p span { display: block; margin-top: 4px; color: #71827f; font: 700 8px/1.2 Arial, sans-serif; letter-spacing: .17em; }

.hero { min-height: 790px; padding: 64px 0 72px; display: grid; grid-template-columns: minmax(0, 583.797fr) minmax(0, 528.203fr); align-items: center; gap: 48px; }
.hero-copy { position: relative; z-index: 2; }
.hero-copy::before { position: absolute; top: -38px; left: -52px; z-index: -1; width: 140px; height: 140px; content: ""; border-radius: 46% 54% 64% 36% / 42% 35% 65% 58%; background: rgba(244, 202, 101, .34); transform: rotate(-14deg); }
.eyebrow, .section-kicker { margin: 0; color: #ba6f67; font: italic 12px/1.3 Georgia, serif; letter-spacing: .1em; }
.hero h1 { margin: 17px 0 0; font-size: clamp(44px, 5.6vw, 72px); line-height: 1.07; letter-spacing: -.057em; }
.search-thumbnail { width: min(260px, 72%); height: auto; aspect-ratio: 1 / 1; margin: 25px 0 0; display: block; object-fit: cover; border-radius: 0; clip-path: none; -webkit-mask: none; mask: none; transform: none !important; box-shadow: 17px 17px 0 rgba(223, 142, 131, .24); }
[data-hero-subtitle] { margin: 29px 0 0; display: flex; flex-wrap: wrap; gap: 7px; }
[data-hero-subtitle] span { min-height: 34px; padding: 0 11px; display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 999px; background: rgba(255, 255, 255, .48); color: var(--ink-soft); font-size: 10px; font-weight: 800; }
.hero-lead { max-width: 590px; margin: 22px 0 0; color: var(--ink-soft); font-size: 14px; line-height: 1.9; }
.hero-actions { margin-top: 26px; display: flex; flex-wrap: wrap; align-items: center; gap: 21px; }
.button { min-height: 50px; padding: 0 23px; display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 999px; font-size: 13px; font-weight: 900; cursor: pointer; transition: transform .25s ease, box-shadow .25s ease; }
.button:is(:hover, :focus-visible) { transform: translateY(-3px); }
.button-solid { background: var(--teal); color: var(--white); box-shadow: 0 15px 35px rgba(7, 63, 58, .2); }
.text-link { min-height: 44px; display: inline-flex; align-items: center; gap: 10px; border-bottom: 1px solid var(--ink); font-size: 13px; font-weight: 800; }
.text-link span { color: var(--coral); font-size: 17px; }
.hero-facts { margin: 35px 0 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.hero-facts div { padding-top: 14px; border-top: 1px solid var(--line); }
.hero-facts dt { color: #899895; font: 800 8px/1 Arial, sans-serif; letter-spacing: .16em; }
.hero-facts dd { margin: 7px 0 0; font-size: 13px; font-weight: 800; }

.hero-portrait { position: relative; margin: 0; padding: 20px 20px 0 0; }
.hero-portrait::before { position: absolute; top: -18px; right: -20px; width: 135px; height: 135px; content: ""; border-radius: 50%; background: var(--coral-soft); opacity: .75; }
.hero-portrait::after { position: absolute; right: -25px; bottom: 58px; width: 92px; height: 92px; content: ""; border: 2px solid rgba(7, 63, 58, .32); border-radius: 46% 54% 36% 64% / 52% 42% 58% 48%; transform: rotate(21deg); }
.organic-frame { position: relative; z-index: 1; overflow: hidden; aspect-ratio: 4 / 5; border-radius: 48% 52% 43% 57% / 39% 44% 56% 61%; background: #bfd4d2; box-shadow: 0 35px 70px rgba(18, 65, 59, .2); animation: blobMorph 8s ease-in-out infinite, portraitFloat 6s ease-in-out infinite; }
.organic-frame::after { position: absolute; top: -25%; bottom: -25%; left: -75%; width: 32%; content: ""; background: linear-gradient(90deg, transparent, rgba(255,255,255,.28), transparent); transform: rotate(12deg); animation: portraitShine 7s ease-in-out infinite; }
.organic-frame img { width: 100%; height: 100%; object-fit: cover; object-position: center 35%; }
.hero-portrait figcaption { position: relative; z-index: 2; width: min(330px, 88%); margin: -28px auto 0; padding: 16px 22px; border-radius: 18px; background: var(--white); box-shadow: 0 13px 36px rgba(30, 70, 64, .13); text-align: center; }
.hero-portrait figcaption span { display: block; color: #b16f67; font: italic 11px Georgia, serif; }
.hero-portrait figcaption b { display: block; margin-top: 5px; font-size: 14px; }
@keyframes blobMorph { 50% { border-radius: 52% 48% 57% 43% / 44% 55% 45% 56%; } }
@keyframes portraitFloat { 50% { transform: translateY(-9px) rotate(.7deg); } }
@keyframes portraitShine { 0%, 62% { left: -75%; } 100% { left: 145%; } }

.region-ticker { overflow: hidden; border-block: 1px solid rgba(255, 255, 255, .16); background: var(--teal); color: var(--white); }
.ticker-track { width: max-content; display: flex; animation: tickerMove 27s linear infinite; }
.ticker-track span { padding: 15px 25px; display: flex; align-items: center; gap: 18px; white-space: nowrap; font-size: 12px; font-weight: 800; }
.ticker-track i { color: var(--yellow); font-family: Georgia, serif; font-style: normal; }
@keyframes tickerMove { to { transform: translateX(-50%); } }

.section { padding-top: 108px; }
.section-heading { max-width: 790px; margin-inline: auto; text-align: center; }
.section-heading.align-left { margin-inline: 0; text-align: left; }
.section-heading h2 { margin: 10px 0 0; font-size: clamp(35px, 5vw, 58px); line-height: 1.12; letter-spacing: -.05em; }
.section-heading [data-section-subtitle] { display: block; max-width: 670px; margin: 17px auto 0; color: var(--ink-soft); font-size: 14px; line-height: 1.9; }
.section-heading.align-left [data-section-subtitle] { margin-left: 0; }

.story { display: grid; grid-template-columns: minmax(250px, .55fr) minmax(0, 1.45fr); align-items: start; gap: clamp(38px, 6vw, 82px); }
.service-copy { grid-column: 1; color: var(--ink-soft); }
.service-copy p { margin: 21px 0 0; font-size: 14px; line-height: 1.95; }
.mosaic-grid { grid-column: 2; grid-row: 1 / span 2; min-height: 680px; display: grid; grid-template-columns: 458.383fr 338.805fr 338.812fr; grid-template-rows: repeat(2, 1fr); gap: 12px; }
.mosaic-card { position: relative; overflow: hidden; min-height: 160px; border-radius: 24px; background: var(--white); }
.mosaic-card > div { position: relative; z-index: 2; height: 100%; padding: 24px; display: flex; flex-direction: column; justify-content: flex-end; }
.mosaic-card small { color: #8ba19d; font: 800 9px/1 Arial, sans-serif; letter-spacing: .14em; }
.mosaic-card h3 { margin: 8px 0 0; font-size: 21px; }
.mosaic-card p { margin: 9px 0 0; color: var(--ink-soft); font-size: 13px; line-height: 1.72; }
.mosaic-wide { grid-column: 1; grid-row: 1 / span 2; background: var(--blue); color: var(--white); }
.mosaic-wide small, .mosaic-wide p { color: rgba(255, 255, 255, .82); }
.mosaic-tall { grid-column: 2; grid-row: 1; background: rgba(255,255,255,.56); }
.mosaic-image { grid-column: 3; grid-row: 1; background: var(--coral-soft); }
.mosaic-soft { grid-column: 2; grid-row: 2; background: rgba(114,159,166,.28); }
.mosaic-accent { grid-column: 3; grid-row: 2; background: var(--teal-deep); color: var(--white); }
.mosaic-accent small, .mosaic-accent p { color: rgba(255, 255, 255, .75); }

.women-section { max-width: 1040px; }
.women-copy { margin-top: 38px; padding: 40px; border-radius: 28px; background: #f0d9d2; columns: 3; column-gap: 30px; }
.women-copy p { margin: 0; color: #415e59; font-size: 13px; line-height: 1.9; break-inside: avoid; }
.program-list { max-width: 880px; margin: 46px auto 0; border-top: 1px solid var(--line); }
.program-row { min-height: 138px; padding: 26px 0; display: grid; grid-template-columns: 200px minmax(0, 1fr); grid-template-rows: auto 1fr; align-items: start; column-gap: 48px; border-bottom: 1px solid var(--line); }
.program-row small { color: #a56c64; font: 800 9px/1 Arial, sans-serif; letter-spacing: .12em; }
.program-row h3 { grid-column: 1; margin: 12px 0 0; font-size: 24px; }
.program-row p { grid-column: 2; grid-row: 1 / span 2; margin: 0; color: var(--ink-soft); font-size: 13px; line-height: 1.9; }
.program-women { margin-inline: -18px; padding-inline: 18px; border-radius: 18px; background: rgba(60, 129, 125, .16); }
.howto ol { margin: 46px 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; list-style: none; counter-reset: use-step; }
.howto li { min-height: 220px; padding: 28px 22px; border-top: 4px solid var(--coral); background: rgba(255, 255, 255, .5); counter-increment: use-step; }
.howto li::before { content: "0" counter(use-step); color: #ad6c65; font: italic 14px Georgia, serif; }
.howto h3 { margin: 37px 0 0; font-size: 19px; }
.howto li p { margin: 10px 0 0; color: var(--ink-soft); font-size: 13px; line-height: 1.8; }

.prices { padding-bottom: 108px; }
.price-list { max-width: 880px; margin: 48px auto 0; border-top: 1px solid var(--line); }
.price-row { min-height: 116px; padding: 25px 0; display: grid; grid-template-columns: 200px minmax(0, 1fr); align-items: center; gap: 48px; border-bottom: 1px solid var(--line); }
.course-name { position: relative; padding-left: 64px; }
.course-name small { position: absolute; top: 5px; left: 0; color: #a56c64; font: 800 9px/1 Arial, sans-serif; letter-spacing: .12em; }
.course-name h3 { margin: 0; font-size: 24px; letter-spacing: -.035em; }
.price-row ul { margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; list-style: none; }
.price-row li { min-height: 68px; padding: 13px 8px; display: grid; place-content: center; border-radius: 16px; background: rgba(255, 255, 255, .6); text-align: center; }
.price-row li span { color: #768b87; font-size: 11px; }
.price-row li b { margin-top: 5px; font-size: 14px; }
.price-women { margin-inline: -18px; padding-inline: 18px; border-radius: 20px; background: rgba(223, 142, 131, .18); }
.course-note { max-width: 720px; margin: 24px auto 0; color: #748581; font-size: 12px; line-height: 1.85; text-align: center; }

.recommend-grid { margin-top: 42px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.recommend-grid article { min-height: 190px; padding: 29px; border: 1px solid var(--line); border-radius: 22px; }
.recommend-grid article:nth-child(2), .recommend-grid article:nth-child(3) { background: rgba(244, 202, 101, .22); }
.recommend-grid h3 { margin: 0; font-size: 20px; }
.recommend-grid p { margin: 12px 0 0; color: var(--ink-soft); font-size: 13px; line-height: 1.85; }
.precheck { max-width: 1050px; }
.precheck > ul { margin: 42px 0 0; padding: 0; list-style: none; border-top: 1px solid var(--line); }
.precheck > ul li { min-height: 70px; padding: 17px 0; display: grid; grid-template-columns: 170px 1fr; align-items: center; gap: 20px; border-bottom: 1px solid var(--line); }
.precheck > ul b { color: #a55f58; font-size: 14px; }
.precheck > ul span { color: var(--ink-soft); font-size: 13px; line-height: 1.75; }
.faq-list { max-width: 930px; margin: 42px auto 0; border-top: 1px solid var(--line); }
.faq-list details { border-bottom: 1px solid var(--line); }
.faq-list summary { min-height: 68px; padding: 19px 46px 19px 0; display: flex; align-items: center; position: relative; font-size: 15px; font-weight: 900; cursor: pointer; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after { position: absolute; right: 8px; content: "+"; color: var(--coral); font-size: 24px; font-weight: 400; }
.faq-list details[open] summary::after { content: "−"; }
.faq-list details p { margin: -2px 0 0; padding: 0 40px 23px 0; color: var(--ink-soft); font-size: 13px; line-height: 1.85; }

.areas { padding-bottom: 108px; }
.local-copy { max-width: 740px; margin: 28px auto 0; color: var(--ink-soft); font-size: 13px; line-height: 1.9; text-align: center; }
.area-groups { max-width: 1000px; margin: 45px auto 0; }
.area-group { display: grid; grid-template-columns: 160px 1fr; gap: 26px; padding: 28px 0; border-top: 1px solid var(--line); }
.area-group:last-child { border-bottom: 1px solid var(--line); }
.area-group header a { min-height: 44px; display: inline-flex; flex-direction: column; justify-content: center; }
.area-group header span { font-size: 22px; font-weight: 950; }
.area-group header small { margin-top: 5px; color: #899895; font-size: 9px; letter-spacing: .08em; }
.area-group > p { margin: 0; display: flex; flex-wrap: wrap; gap: 6px 7px; }
.area-group > p a { min-height: 35px; padding: 0 10px; display: inline-flex; align-items: center; border: 1px solid transparent; border-radius: 999px; color: var(--ink-soft); font-size: 12px; }
.area-group a:is(:hover, :focus-visible) { color: #9c554e; }
.area-group a[aria-current="page"] { border-color: var(--coral); background: rgba(239, 185, 174, .25); color: #8f4d47; font-weight: 900; }

.media-section { padding-top: 0; padding-bottom: 110px; }
.media-layout { margin-top: 44px; display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: stretch; }
.media-layout figure { margin: 0; overflow: hidden; border-radius: 26px; background: var(--white); }
.media-layout figure img { width: 100%; height: 440px; object-fit: cover; object-position: center 34%; }
.media-layout figcaption { padding: 17px 20px 21px; color: var(--ink-soft); font-size: 11px; line-height: 1.7; }
.service-map { min-height: 500px; padding: 55px; display: grid; grid-template-columns: 1fr auto 1fr; grid-template-rows: 1fr auto 1fr; align-items: center; gap: 14px; border-radius: 26px; background: #dce3cf; }
.service-map span { min-height: 82px; display: grid; place-content: center; border-radius: 50%; background: var(--teal); color: var(--white); font-weight: 900; }
.service-map span:nth-of-type(1) { grid-column: 1; grid-row: 1; }
.service-map span:nth-of-type(2) { grid-column: 3; grid-row: 1; background: var(--coral); color: var(--ink); }
.service-map span:nth-of-type(3) { grid-column: 2; grid-row: 3; background: var(--yellow); color: var(--ink); }
.service-map i { width: 70px; height: 1px; background: rgba(7, 63, 58, .25); }
.service-map p { grid-column: 1 / -1; grid-row: 2; margin: 0; color: var(--ink-soft); font-size: 12px; line-height: 1.7; text-align: center; }

.contact-section { position: relative; width: min(var(--content), calc(100% - 40px)); margin: 110px auto 0; overflow: hidden; border-radius: 34px; background: var(--teal-deep); color: var(--white); }
.contact-section::before, .contact-section::after { position: absolute; content: ""; border-radius: 50%; pointer-events: none; }
.contact-section::before { top: -190px; right: -110px; width: 420px; height: 420px; border: 1px solid rgba(255, 255, 255, .13); animation: contactCircle 7s ease-in-out infinite; }
.contact-section::after { bottom: -170px; left: 8%; width: 300px; height: 300px; background: rgba(223, 142, 131, .12); }
.contact-inner { position: relative; z-index: 1; width: 100%; min-height: 430px; padding: 88px 64px; display: grid; grid-template-columns: 1fr .8fr; align-items: center; gap: 90px; }
.contact-inner .section-kicker { color: var(--coral-soft); }
.contact-inner h2 { margin: 13px 0 0; font-size: clamp(39px, 5.5vw, 65px); line-height: 1.12; letter-spacing: -.055em; }
.contact-inner [data-section-subtitle] { margin: 18px 0 0; color: rgba(255, 255, 255, .66); font-size: 13px; line-height: 1.85; }
.contact-inner > div:last-child > p { color: rgba(255, 255, 255, .7); font-size: 14px; line-height: 1.95; }
.button-cream { margin-top: 20px; background: var(--paper); color: var(--teal); }
@keyframes contactCircle { 50% { transform: scale(1.08) translate(-8px, 6px); } }

footer { background: #102c30; color: var(--white); }
.footer-inner { padding: 55px 0 120px; text-align: center; }
.footer-brand, .footer-lockup { display: block; width: 238px; margin-inline: auto; line-height: 0; }
.footer-lockup img { width: 100%; height: auto; filter: brightness(0) invert(1); }
footer p { margin: 18px 0 0; color: rgba(255, 255, 255, .62); font-size: 12px; }
footer nav { margin-top: 22px; display: flex; justify-content: center; gap: 23px; font-size: 12px; font-weight: 800; }
footer small { display: block; margin-top: 24px; color: rgba(255, 255, 255, .35); font-size: 10px; letter-spacing: .04em; }

.fixed-phone-cta { position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom)); z-index: 9000; min-width: 126px; min-height: 52px; padding: 0 21px; display: inline-flex; align-items: center; justify-content: center; border: 2px solid rgba(255, 255, 255, .7); border-radius: 999px; background: var(--coral); color: #153b36; box-shadow: 0 17px 42px rgba(2, 43, 39, .25); font-size: 14px; font-weight: 950; animation: ctaBreathe 2.8s ease-in-out infinite; }
.fixed-phone-cta:is(:hover, :focus-visible) { background: var(--yellow); }
@keyframes ctaBreathe { 50% { transform: translateY(-4px); box-shadow: 0 19px 45px rgba(2, 43, 39, .3), 0 0 0 8px rgba(223, 142, 131, .13); } }

.welcome-popup { position: fixed; inset: 0; z-index: 10000; padding: max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left)); display: grid; place-items: center; overflow-y: auto; background: rgba(2, 42, 38, .7); backdrop-filter: blur(10px); }
.welcome-popup[hidden] { display: none; }
.popup-card { width: min(760px, 100%); max-height: calc(100svh - 36px); display: grid; grid-template-columns: .9fr 1.1fr; overflow: auto; border-radius: 30px; background: var(--paper); box-shadow: 0 35px 90px rgba(0, 25, 22, .38); animation: popupEnter .5s cubic-bezier(.22, .8, .32, 1); }
.popup-image { min-height: 480px; overflow: hidden; }
.popup-image img { width: 100%; height: 100%; object-fit: cover; object-position: center 34%; }
.popup-copy { padding: 44px 38px; display: flex; flex-direction: column; justify-content: center; text-align: center; }
.popup-copy h2 { margin: 11px 0 0; font-size: 36px; line-height: 1.18; letter-spacing: -.05em; }
.popup-copy [data-section-subtitle] { margin: 15px 0 0; color: var(--ink-soft); font-size: 13px; line-height: 1.75; }
.popup-copy button { width: 100%; min-height: 50px; margin-top: 25px; border: 0; border-radius: 999px; background: var(--teal); color: var(--white); font-size: 13px; font-weight: 900; cursor: pointer; }
.popup-copy .popup-close { min-height: 44px; margin-top: 5px; background: transparent; color: #72817e; text-decoration: underline; text-underline-offset: 4px; }
@keyframes popupEnter { from { opacity: 0; transform: translateY(24px) scale(.97); } }

.reveal { opacity: 0; transform: translateY(28px); transition: opacity .75s ease, transform .75s ease; }
.reveal.is-visible { opacity: 1; transform: none; }
.not-found { min-height: 100svh; padding: 50px 24px 130px; display: grid; place-content: center; justify-items: center; background: var(--paper); text-align: center; }
.not-found .brand-lockup { width: 250px; }
.not-found > p { margin: 40px 0 0; color: #b26962; font: italic 12px Georgia, serif; letter-spacing: .1em; }
.not-found h1 { margin: 9px 0 0; font-size: clamp(42px, 8vw, 72px); line-height: 1.05; letter-spacing: -.06em; }
.not-found > span { max-width: 430px; margin-top: 18px; color: var(--ink-soft); font-size: 14px; line-height: 1.8; }
.not-found .button { margin-top: 25px; }

@media (max-width: 780px) {
  .page-shell, .site-nav { width: min(100% - 28px, var(--content)); }
  .site-nav { min-height: 72px; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; }
  .brand-lockup { width: 184px; }
  .site-nav nav { display: none; }
  .site-nav > p { font-size: 10px; }
  .hero { min-height: 0; padding: 42px 0 55px; grid-template-columns: 1fr; gap: 46px; }
  .hero-copy { text-align: center; }
  .hero-copy::before { top: -25px; left: -22px; width: 95px; height: 95px; }
  .hero h1 { max-width: 630px; margin-inline: auto; font-size: clamp(38px, 11vw, 54px); }
  .search-thumbnail { width: min(280px, 82%); margin-inline: auto; }
  [data-hero-subtitle], .hero-actions { justify-content: center; }
  .hero-lead { margin-inline: auto; font-size: 14px; }
  .hero-facts { margin-top: 33px; gap: 9px; text-align: left; }
  .hero-facts dd { font-size: 11px; }
  .hero-portrait { width: min(470px, 92%); margin-inline: auto; padding-right: 10px; }
  .hero-portrait::before { right: -14px; width: 90px; height: 90px; }
  .hero-portrait::after { right: -17px; width: 62px; height: 62px; }
  .ticker-track span { padding-inline: 18px; }
  .section { padding-top: 80px; }
  .section-heading h2 { font-size: clamp(32px, 10vw, 45px); }
  .story { display: block; }
  .service-copy { margin-top: 28px; }
  .mosaic-grid { min-height: 0; margin-top: 36px; grid-template-columns: 1fr; grid-template-rows: repeat(5, minmax(168px, auto)); }
  .mosaic-wide, .mosaic-tall, .mosaic-image, .mosaic-soft, .mosaic-accent { grid-column: 1; grid-row: auto; }
  .mosaic-card { min-width: 0; border-radius: 19px; }
  .mosaic-card > div { padding: 17px; }
  .mosaic-card h3 { font-size: 18px; }
  .mosaic-card p { font-size: 11px; line-height: 1.65; }
  .women-copy { padding: 27px; columns: 1; }
  .women-copy p + p { margin-top: 17px; }
  .program-row { min-height: 0; grid-template-columns: 120px minmax(0, 1fr); column-gap: 16px; }
  .program-row h3 { font-size: 20px; }
  .program-women, .price-women { margin-inline: -14px; padding-inline: 14px; }
  .howto ol { grid-template-columns: 1fr 1fr; }
  .howto li { min-height: 190px; }
  .prices { padding-bottom: 78px; }
  .price-list { margin-top: 36px; }
  .price-row { min-height: 0; grid-template-columns: 120px minmax(0, 1fr); gap: 16px; padding: 25px 0; }
  .course-name { padding-left: 0; }
  .course-name small { position: static; display: block; margin-bottom: 7px; }
  .course-name h3 { font-size: 21px; }
  .price-row ul { gap: 6px; }
  .price-row li { min-height: 62px; padding-inline: 4px; }
  .price-row li b { font-size: 12px; }
  .recommend-grid { grid-template-columns: 1fr; }
  .recommend-grid article { min-height: 0; }
  .precheck > ul li { grid-template-columns: 1fr; gap: 7px; }
  .areas { padding-bottom: 78px; }
  .area-groups { margin-top: 35px; }
  .area-group { grid-template-columns: 82px 1fr; gap: 10px; padding: 22px 0; }
  .area-group header span { font-size: 18px; }
  .area-group > p { gap: 4px; }
  .area-group > p a { min-height: 34px; padding-inline: 7px; font-size: 11px; }
  .media-layout { grid-template-columns: 1fr; }
  .media-layout figure img { height: 390px; }
  .service-map { min-height: 430px; padding: 38px; }
  .contact-inner { min-height: 0; padding-block: 72px; grid-template-columns: 1fr; gap: 33px; }
  .contact-section { width: calc(100% - 28px); margin-top: 80px; border-radius: 25px; }
  .contact-inner { padding: 65px 25px; }
  .contact-inner h2 { font-size: clamp(38px, 11vw, 50px); }
  .footer-inner { padding-bottom: 118px; }
  .fixed-phone-cta { right: max(12px, env(safe-area-inset-right)); bottom: max(12px, env(safe-area-inset-bottom)); min-width: 116px; min-height: 48px; padding-inline: 17px; }
  .popup-card { max-height: calc(100svh - 28px); grid-template-columns: 1fr; }
  .popup-image { min-height: 0; height: min(37svh, 300px); }
  .popup-copy { padding: 25px 22px 20px; }
  .popup-copy h2 { font-size: 30px; }
  .popup-copy button { margin-top: 18px; }
}

@media (max-width: 350px) {
  .brand-lockup { width: 164px; }
  .site-nav > p span { display: none; }
  .hero h1 { font-size: 36px; }
  .hero-facts { grid-template-columns: 1fr 1fr; }
  .hero-facts div:last-child { grid-column: 1 / -1; }
  .howto ol { grid-template-columns: 1fr; }
  .program-row { grid-template-columns: 110px minmax(0, 1fr); column-gap: 8px; }
  .price-row { grid-template-columns: 110px minmax(0, 1fr); gap: 8px; }
  .price-row ul { grid-template-columns: 1fr; }
  .area-group { grid-template-columns: 1fr; }
  .area-group > p a { min-height: 38px; }
  .service-map { padding: 24px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; }
  .ticker-track { animation: none; }
}
