:root{--red:#d71920;--ink:#202932;--muted:#626b72;--pink:#fff6f5;--line:#06b94c;--border:#e7e8e8}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;color:var(--ink);font-family:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;font-size:15px;line-height:1.85;letter-spacing:.035em}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button,a,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #1479ae;outline-offset:4px}h1,h2,h3,h4,p{margin:0}h2{font-size:clamp(26px,3vw,38px);line-height:1.55;letter-spacing:.06em}h3{line-height:1.55}p+p{margin-top:12px}em{font-style:normal;color:var(--red)}img{display:block;max-width:100%;object-fit:cover}.container{max-width:1120px;margin:auto;padding:0 32px}.narrow{max-width:920px}section:not(.hero){padding:80px 0}.soft{background:linear-gradient(145deg,#fff9f8,#f8fafb)}.red{color:var(--red)}.center{text-align:center}.fine{font-size:11px;line-height:1.8;color:var(--muted)}.eyebrow{color:var(--red);font-weight:800;font-size:12px;letter-spacing:.14em}.section-heading{text-align:center;margin-bottom:38px}.section-heading .eyebrow{margin-bottom:14px}.eyebrow>span{font-family:Georgia,serif;font-size:26px;color:#b7bdc2;font-weight:400;margin-right:10px}.section-heading>p:last-child:not(.eyebrow){color:var(--muted);margin-top:12px}.mobile{display:none}header{position:sticky;top:0;z-index:30;background:#fffffff5;border-bottom:1px solid #ececec;backdrop-filter:blur(12px)}.header-inner{max-width:1440px;height:76px;margin:auto;display:flex;gap:26px;align-items:center;padding:0 30px}.brand{display:inline-flex;align-items:baseline;gap:4px;color:white;background:var(--red);padding:0 12px;font:bold 32px/1.5 Georgia,serif;white-space:nowrap}.brand span{font:bold 15px sans-serif}.header-inner nav{display:flex;gap:20px;margin-left:auto;font-size:11px;font-weight:700}.header-inner nav a:hover{color:var(--red)}.header-reserve{background:var(--red);color:white;border-radius:5px;padding:11px 16px;font-size:12px;font-weight:700}.menu{display:none}.hero{position:relative;overflow:hidden;background:#eef5f8;min-height:740px}.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-position:center 45%}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#ffffffec 0%,#ffffffb5 33%,#fff0 65%),linear-gradient(0deg,#fff 0%,#fff0 32%)}.hero-inner{position:relative;z-index:1;max-width:1184px;margin:auto;padding:48px 32px 34px}.hero h1{font-family:"Yu Mincho","Hiragino Mincho ProN",serif;font-size:clamp(40px,4.4vw,64px);font-weight:800;line-height:1.45;letter-spacing:.07em;margin:8px 0}.hero-tag{font-family:"Yu Mincho",serif;font-size:25px;font-weight:bold}.course-title{font-size:17px;margin-top:24px}.course-title strong{margin-left:12px;font-size:24px}.dates{font-size:34px;font-weight:800;letter-spacing:0}.dates small{font-size:15px}.dates span{font-size:24px;margin:0 4px}.dates b{font-size:19px;margin-left:8px}.hero-note{font-size:11px;line-height:1.7;margin-top:0}.hero-bottom{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:50px;margin-top:30px;max-width:1000px}.offer{background:var(--red);padding:8px 12px 12px;border-radius:9px;box-shadow:0 10px 30px #a9212110}.offer-title{color:white;font-weight:800;text-align:center;letter-spacing:.1em;font-size:17px;margin-bottom:7px}.offer-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.offer-grid>div{background:white;border-radius:4px;padding:7px 10px;text-align:center}.offer-grid strong{font-size:20px;background:linear-gradient(transparent 75%,#fff05c 75%)}.offer-grid p{display:flex;align-items:center;justify-content:center;gap:9px;font-size:13px;margin:0}.offer-grid b{font-size:47px;line-height:1.4;color:var(--red);letter-spacing:0}.offer-grid b.zero{font-size:64px;line-height:1.1}.offer-grid b small{font-size:27px}.hero-bottom .fine{margin:9px 2px 0;font-size:10px}.cta-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:900px;margin:32px auto 0}.hero-bottom .cta-pair{grid-template-columns:1fr;margin:0;width:100%}.btn{display:flex;align-items:center;justify-content:center;gap:12px;color:white;border-radius:6px;min-height:68px;padding:13px 18px;font-weight:800;font-size:15px;line-height:1.5;box-shadow:0 4px 0 #0000000d;transition:transform .2s,filter .2s}.btn:hover{transform:translateY(-2px);filter:brightness(1.06)}.btn>b{margin-left:auto;font-size:21px}.btn small{font-size:11px}.line{background:var(--line)}.reserve{background:var(--red)}.line-mark{display:grid;place-items:center;flex-shrink:0;background:white;color:#079e43;font:bold 9px sans-serif;border-radius:50%;height:34px;width:34px}.calendar{font-size:33px;line-height:1}.features{display:grid;grid-template-columns:repeat(4,1fr);gap:28px}.features article{text-align:center;background:#ffffffa0;padding:18px 12px}.feature-icon{display:grid;place-items:center;width:74px;height:74px;background:#ffe8e8;border-radius:50%;color:var(--red);font-size:36px;margin:0 auto 18px}.features h3{font-size:18px;margin-bottom:12px}.features p{font-size:13px;color:var(--muted)}.concerns{display:grid;grid-template-columns:1fr 1.1fr;gap:50px;align-items:center}.concerns .section-heading{text-align:left;margin-bottom:24px}.concern-art{position:relative;height:440px;overflow:hidden;border-radius:4px}.concern-art img{height:100%;width:100%;object-position:65%}.concern-art:after{content:"";position:absolute;inset:50% 0 0;background:linear-gradient(transparent,#102a42c9)}.concern-art>span{position:absolute;bottom:30px;left:30px;color:white;font-family:"Yu Mincho",serif;font-size:32px;font-weight:700;z-index:1}.checks{list-style:none;padding:0;font-size:13px}.checks li{padding:5px 0 5px 24px;position:relative}.checks li:before{content:"☑";color:var(--red);position:absolute;left:0}.message{background:var(--pink);border-left:3px solid var(--red);padding:20px;margin-top:22px}.message h3{color:var(--red);font-size:19px}.message p{font-size:12px;margin-top:8px}.curriculum-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.course{background:white;border:1px solid var(--border);border-radius:8px;overflow:hidden;box-shadow:0 8px 22px #26262604;--accent:#378b91}.course-1,.course-2{--accent:#ed7149}.course-3{--accent:#ce3941}.course-4{--accent:#b29743}.course-5{--accent:#346784}.course-top{background:var(--accent);color:white;padding:15px 22px}.course-top span{font-size:9px;letter-spacing:.16em;opacity:.8}.course-top h3{font-size:23px}.course-body{padding:24px}.course h4{font-size:18px;line-height:1.7;margin-bottom:18px}.subjects{font-size:12px;color:var(--muted);margin-top:3px}details{margin-top:18px}summary{cursor:pointer;list-style:none;color:var(--accent,var(--red));font-size:13px;font-weight:700}summary::-webkit-details-marker{display:none}summary span{float:right}details p{font-size:13px;padding-top:14px;line-height:1.9}.curriculum-grid+.fine{margin-top:25px}.text-link{display:block;text-align:center;color:var(--red);font-size:13px;text-decoration:underline;margin-top:12px}.campaign{background:radial-gradient(ellipse at 50% 30%,#ffe9e7,transparent 70%),#fff8f7}.campaign .offer{max-width:820px;margin:auto;padding:14px 18px 18px}.campaign .offer-grid>div{padding:20px}.campaign .offer-grid b{font-size:65px}.campaign .offer-grid b.zero{font-size:86px}.campaign .fine.center{margin-top:16px}.pricing{background:white;padding:30px;border:1px solid #f2dddd;border-radius:8px;margin-top:32px}.pricing h3{font-size:21px;margin-bottom:20px}.pricing h3 small{display:inline-block;font-size:11px;color:var(--muted);margin-left:12px}.price-tabs{display:flex;gap:8px;margin-bottom:20px}.price-tabs button{flex:1;padding:10px 4px;border:1px solid #e3dada;background:white;border-radius:4px;font-weight:700}.price-tabs button[aria-selected=true]{background:var(--red);border-color:var(--red);color:white}table{border-collapse:collapse;width:100%;font-size:14px}caption{text-align:left;font-weight:700;margin-bottom:10px}th,td{padding:14px 10px;text-align:center;border-bottom:1px solid var(--border)}thead{background:#f9f6f6;font-size:12px}tbody th{font-size:13px}.extra-price{border-top:1px solid var(--border);padding-top:20px;margin-top:25px}.extra-price table{margin-top:20px}.result-box{border:1px solid #e9dfc5;background:linear-gradient(130deg,#fffefa,#fff);padding:40px;text-align:center;border-radius:8px}.result-box>p:first-child{font-size:13px;color:#927331}.result-box h3{font-size:26px;margin-top:8px}.result-number{font-family:Georgia,serif;font-size:128px;line-height:1.3;font-weight:bold;color:var(--red);letter-spacing:-.03em}.result-number span{font-family:sans-serif;font-size:24px;color:var(--ink);margin-left:14px;letter-spacing:0}.school-results{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}.school-results>div{background:#f7f4ed;padding:16px;font-size:14px}.school-results strong{display:block;font-size:31px;color:#a27c31}.school-results small{font-size:13px;margin-left:4px}.voice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.voice{padding:24px;background:white;border:1px solid var(--border);border-radius:7px}.voice-head{display:flex;align-items:center;gap:15px}.voice-head img{width:90px;height:110px;object-position:top;border-radius:3px}.voice-head h3{font-size:16px;margin:5px 0}.school{font-size:14px;color:var(--red);font-weight:800}.voice h4{font-size:16px;margin:20px 0;line-height:1.8}.voice h5{margin:16px 0 6px;font-size:13px}.voice [id] p{font-size:13px}.disclosure{border:0;background:none;text-align:left;width:100%;color:inherit}.voice .disclosure{border-top:1px solid var(--border);padding:12px 0 0;font-size:12px;color:var(--red);font-weight:700}.voice .disclosure span{float:right}.flow{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;list-style:none;padding:0;margin:0}.flow li{border:1px solid var(--border);border-top:3px solid #3c9191;border-radius:5px;padding:24px 20px}.flow li:nth-child(even){border-top-color:var(--red)}.step{font-size:11px;letter-spacing:.1em;color:#318c8d;font-weight:800}.flow h3{font-size:17px;margin:13px 0}.flow p{font-size:12px;color:var(--muted)}.faq{background:white;border-bottom:1px solid var(--border)}.faq h3{font-size:14px}.faq .disclosure{display:flex;gap:14px;align-items:center;padding:23px 24px;font-weight:700;line-height:1.8}.q{color:var(--red);font-family:Georgia,serif;font-size:22px}.plus{color:var(--red);margin-left:auto;flex-shrink:0;font-size:20px}.faq [id]{padding:0 30px 24px 60px;font-size:13px;color:var(--muted)}.classroom{display:flex;align-items:center;justify-content:space-between;gap:30px}.classroom .section-heading{text-align:left;margin:0}.outline-btn{display:inline-block;border:1px solid var(--red);border-radius:30px;padding:13px 30px;color:var(--red);font-weight:700;font-size:14px}.final{background:radial-gradient(ellipse at 15% 80%,#ffdede,transparent 55%),linear-gradient(120deg,#f8f5f1,#e7f6fc);text-align:center}.final h2{font-family:"Yu Mincho",serif;font-size:40px}.phone-label{font-size:12px;margin-top:30px}.phone{font-size:30px;font-weight:800;letter-spacing:.07em}footer{padding:50px 0;background:#fff}.footer-inner{display:flex;align-items:center;flex-direction:column;gap:24px}.footer-inner nav{display:flex;flex-wrap:wrap;justify-content:center;gap:20px;font-size:12px}.footer-inner p,.footer-inner small{font-size:11px;color:var(--muted)}.sticky{display:none}.skip{position:fixed;top:-80px;left:20px;background:white;padding:10px;z-index:99}.skip:focus{top:10px}[hidden]{display:none!important}
@media(max-width:1100px){.header-inner nav{gap:12px;font-size:10px}.header-inner{gap:15px;padding:0 20px}.hero-bottom{gap:28px}.voice-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){body{padding-bottom:84px}.container{padding:0 22px}section:not(.hero){padding:55px 0}.header-inner{height:62px;padding:0 16px;gap:12px}.brand{font-size:27px;padding:0 9px}.brand span{font-size:12px}.header-reserve{margin-left:auto;font-size:10px;padding:8px 11px}.menu{display:block;border:1px solid #efc7c7;background:white;border-radius:50%;height:36px;width:36px;padding:10px 8px}.menu span{display:block;height:2px;background:#565656;margin:4px 0}.header-inner nav{display:none;position:absolute;top:62px;left:0;right:0;background:white;padding:20px 24px;box-shadow:0 15px 20px #0001}.header-inner nav.open{display:grid;gap:0;font-size:14px}.header-inner nav a{padding:12px;border-bottom:1px solid var(--border)}.hero{min-height:0}.hero-photo{height:550px;object-position:62% top}.hero:after{background:linear-gradient(0deg,#fff 5%,#fffffff5 28%,#fff0 68%);height:630px;bottom:auto}.hero-inner{padding:240px 22px 30px}.hero-inner>.eyebrow{font-size:9px;letter-spacing:.1em}.hero h1{font-size:42px;line-height:1.38;margin:6px 0 10px;letter-spacing:.03em;text-shadow:0 0 14px #fff}.hero-tag{font-size:18px}.course-title{font-size:13px;margin-top:22px}.course-title strong{font-size:23px;margin-left:6px}.dates{font-size:27px;margin-top:6px;white-space:nowrap}.dates small{font-size:12px}.dates b{font-size:14px;margin-left:4px}.hero-note{font-size:9px}.hero-bottom{display:block;margin-top:22px}.hero-bottom .cta-pair{margin-top:22px}.hero-bottom .fine{font-size:9px}.offer-title{font-size:15px}.offer-grid strong{font-size:18px}.offer-grid b{font-size:44px}.offer-grid b.zero{font-size:60px}.cta-pair{grid-template-columns:1fr;gap:10px;margin-top:25px}.btn{min-height:62px;font-size:13px;padding:12px 17px}.section-heading{margin-bottom:28px}.section-heading h2{font-size:26px}.section-heading>p:last-child:not(.eyebrow){font-size:13px;text-align:left}.section-heading .eyebrow{font-size:10px}.mobile{display:block}.features{grid-template-columns:repeat(2,1fr);gap:12px}.features article{padding:18px 12px}.feature-icon{width:60px;height:60px;font-size:30px;margin-bottom:14px}.features h3{font-size:15px}.features p{font-size:11px;text-align:left}.concerns{grid-template-columns:1fr;gap:26px}.concern-art{height:250px}.concern-art>span{font-size:27px;bottom:20px;left:22px}.concerns .section-heading h2{font-size:25px}.checks{font-size:12px}.curriculum-grid{grid-template-columns:repeat(2,1fr);gap:15px}.course-top{padding:12px 18px}.course-top h3{font-size:21px}.course-body{padding:20px}.course h4{font-size:17px}.campaign .offer{padding:10px}.campaign .offer-grid>div{padding:14px 5px}.campaign .offer-grid b{font-size:44px}.campaign .offer-grid b.zero{font-size:64px}.campaign .fine.center{text-align:left;font-size:9px}.pricing{padding:20px 14px;margin-top:25px}.pricing h3{font-size:18px}.pricing h3 small{margin-left:0;display:block}.price-tabs{gap:4px}.price-tabs button{font-size:12px;padding:8px 2px}table{font-size:12px}th,td{padding:12px 5px}tbody th{font-size:11px}.extra-price{font-size:11px}.extra-price table{font-size:10px}.result-box{padding:25px 16px}.result-box>p:first-child{font-size:10px}.result-box h3{font-size:21px}.result-number{font-size:100px}.result-number span{font-size:19px}.school-results{grid-template-columns:repeat(2,1fr);gap:8px}.school-results>div{padding:12px}.result-box .fine{font-size:9px;text-align:left}.voice{padding:20px}.flow{grid-template-columns:repeat(2,1fr);gap:12px}.flow li{padding:20px 16px}.flow h3{font-size:15px}.faq .disclosure{padding:20px 16px;gap:10px;font-size:13px}.faq [id]{padding:0 20px 20px 45px;font-size:12px}.classroom{display:block}.classroom .outline-btn{margin-top:25px}.final h2{font-size:28px}.final .section-heading>p:last-child:not(.eyebrow){text-align:center;font-size:12px}.sticky{display:block;position:fixed;z-index:40;bottom:0;left:0;right:0;background:#fffffff2;backdrop-filter:blur(10px);border-top:1px solid #ddd;padding:8px 10px calc(8px + env(safe-area-inset-bottom))}.sticky .cta-pair{grid-template-columns:1fr 1fr;margin:0;gap:8px}.sticky .btn{font-size:10px;min-height:53px;padding:8px;gap:7px}.sticky .btn b,.sticky .btn small{display:none}.sticky .line-mark{height:26px;width:26px;font-size:7px}.sticky .calendar{font-size:25px}.footer-inner nav{display:grid;grid-template-columns:1fr 1fr;gap:14px}footer{padding:40px 0 25px}}
@media(max-width:480px){.curriculum-grid,.voice-grid{grid-template-columns:1fr}.course-top{display:flex;flex-direction:row-reverse;justify-content:space-between;align-items:center}.course-top h3{font-size:22px}.course h4{font-size:20px}.course-body{padding:23px}.hero h1{font-size:40px}.flow{grid-template-columns:1fr}.flow li{display:grid;grid-template-columns:64px 1fr;column-gap:16px;padding:20px 16px}.flow .step{grid-row:1/3;display:grid;place-items:center;background:#eaf5f4;font-size:11px}.flow li:nth-child(even) .step{background:#fff0ef;color:var(--red)}.flow h3{margin:0 0 8px}.flow p{font-size:12px}.concern-art{height:230px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
.offer-grid p{white-space:nowrap}.offer-grid b{white-space:nowrap;flex-shrink:0}.offer-grid p{gap:6px}@media(max-width:800px){.hero-inner{padding-top:220px}.offer-grid p{font-size:11px}.offer-grid b{font-size:40px}.hero .offer-grid>div{padding:7px 5px}}@media(max-width:390px){.hero h1{font-size:37px}.hero .offer-grid b{font-size:39px}.hero .offer-grid b.zero{font-size:58px}}
.feature-icon svg{width:38px;height:38px}
/* Show the complete student portrait and handwritten message on phones. */
@media(max-width:600px){
  .voice-grid{grid-template-columns:1fr}
  .voice-head{display:block}
  .voice-head img{width:100%;height:auto;aspect-ratio:1;object-fit:contain;border-radius:4px;margin:0 0 20px}
  .voice-head h3{font-size:18px;margin:6px 0}
  .voice-head .school{font-size:16px}
  .voice-head .fine{font-size:12px}
}

/* Editorial course signature: a clear seasonal title above the dates. */
.hero .course-title{width:fit-content;max-width:100%;margin-top:24px;padding:14px 24px 17px 0;position:relative}
.hero .course-year{display:flex;align-items:center;gap:15px;font-size:13px;font-weight:700;letter-spacing:.13em;line-height:1.4;margin:0 0 9px}
.hero .course-season{font-size:9px;letter-spacing:.18em;color:#8e393b;border-left:1px solid #bba2a2;padding-left:15px}
.hero .course-name{font-family:"Yu Mincho","Hiragino Mincho ProN",serif;color:#9f131b;font-size:clamp(38px,4.2vw,57px);font-weight:800;letter-spacing:.1em;line-height:1.3;white-space:nowrap;margin:0;text-shadow:0 1px 12px #fff,0 0 24px #ffffffe6}
.hero .course-name>span{letter-spacing:.06em}
.hero .course-rule{display:block;height:2px;margin-top:15px;background:linear-gradient(90deg,#b51b25 0 42px,#c9a98c 42px 100%);opacity:.85}
.hero .dates{margin-top:5px}
@media(max-width:800px){
.hero .course-title{margin-top:25px;padding:13px 0 13px;width:100%;background:linear-gradient(90deg,#ffffff9c,#ffffff40 85%,transparent)}
.hero .course-year{font-size:12px;gap:12px;margin-bottom:8px}
.hero .course-season{font-size:8px;padding-left:12px}
.hero .course-name{font-size:clamp(35px,10.7vw,58px);letter-spacing:.08em;line-height:1.35}
.hero .course-rule{margin-top:13px;max-width:430px}
.hero .dates{margin-top:8px}
}

/* Keep handwritten messages readable on desktop, too. */
.voice-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
.voice-head{display:block}
.voice-head img{width:100%;height:auto;aspect-ratio:1;object-fit:contain;border-radius:4px;margin:0 0 22px}
.voice-head h3{font-size:19px;margin:6px 0}
.voice-head .school{font-size:17px}
.voice-head .fine{font-size:12px}
.location-badge{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;padding:12px 16px;margin:0 0 18px;background:#fff4e2;border:1px solid #dfc38d;border-left:4px solid #a77b2c;border-radius:4px;color:#6f4c10;line-height:1.7}
.location-badge>span{font-size:11px;font-weight:700}
.location-badge>strong{font-size:17px;letter-spacing:.04em}
.course-4 .location-badge{display:block;padding:10px 12px}
.course-4 .location-badge>span{display:block}
.pricing>.location-badge{margin:24px 0 12px}
.caption-location{display:block;font-size:12px;color:#805b1b;margin-top:5px}
@media(max-width:600px){.voice-grid{grid-template-columns:1fr;gap:22px}.voice-head h3{font-size:18px}.voice-head .school{font-size:16px}.location-badge{padding:10px 12px}.location-badge>strong{font-size:16px}}

/* Official white Rex wordmark on the brand red. */
.brand{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:186px;height:48px;padding:10px 12px;background:var(--red);line-height:1}
.brand img{display:block;width:100%;height:auto;object-fit:contain}
@media(max-width:800px){.brand{width:132px;height:40px;padding:9px 10px}}

/* User-specified Rex red for the official logo background. */
.brand{background:rgba(219, 41, 67, 0.8)}
/* Frosted glass surfaces with restrained depth and clear brand colors. */
header{background:rgba(255,255,255,.64);border-bottom:1px solid rgba(255,255,255,.78);box-shadow:0 5px 24px rgba(31,48,65,.07),inset 0 -1px 0 rgba(130,150,168,.1);-webkit-backdrop-filter:blur(24px) saturate(175%);backdrop-filter:blur(24px) saturate(175%)}
.brand{border-radius:9px;box-shadow:inset 0 1px 0 rgba(255,255,255,.45),inset 0 -1px 0 rgba(102,10,29,.16),0 3px 10px rgba(137,36,54,.12)}
.btn,.header-reserve,.outline-btn,.price-tabs button,.menu{position:relative;isolation:isolate;border:1px solid rgba(255,255,255,.58);box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 -1px 0 rgba(0,0,0,.08),0 4px 10px rgba(31,48,65,.11),0 1px 2px rgba(31,48,65,.07);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);transition:transform .2s ease,box-shadow .2s ease,filter .2s ease}
.btn{border-radius:13px;text-shadow:0 1px 1px rgba(0,0,0,.14)}
.btn.line{background:linear-gradient(175deg,rgba(92,231,144,.68),rgba(255,255,255,0) 46%),linear-gradient(135deg,rgba(0,174,65,.95),rgba(0,151,59,.96))}
.btn.reserve,.header-reserve{background:linear-gradient(175deg,rgba(255,160,173,.46),rgba(255,255,255,0) 46%),linear-gradient(135deg,rgba(219,41,67,.96),rgba(184,24,47,.97))}
.header-reserve{border-radius:10px;text-shadow:0 1px 1px rgba(0,0,0,.13)}
.outline-btn{background:linear-gradient(160deg,rgba(255,255,255,.88),rgba(255,246,247,.58));border-color:rgba(219,41,67,.32);box-shadow:inset 0 1px 0 white,0 4px 14px rgba(152,47,64,.08)}
.price-tabs button{background:linear-gradient(160deg,rgba(255,255,255,.95),rgba(245,242,243,.72));border-color:rgba(184,166,170,.3);border-radius:8px;box-shadow:inset 0 1px 0 white,0 2px 5px rgba(31,48,65,.05)}
.price-tabs button[aria-selected=true]{background:linear-gradient(170deg,rgba(255,143,159,.4),transparent 55%),linear-gradient(135deg,#db2943,#b81830);border-color:rgba(255,255,255,.48);box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 3px 9px rgba(184,24,47,.18)}
.menu{background:linear-gradient(145deg,rgba(255,255,255,.9),rgba(255,255,255,.4));border-color:rgba(219,41,67,.2)}
.btn:hover,.header-reserve:hover,.outline-btn:hover{transform:translateY(-2px);filter:brightness(1.04);box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 -1px 0 rgba(0,0,0,.06),0 7px 18px rgba(31,48,65,.15)}
.btn:active,.header-reserve:active,.outline-btn:active,.price-tabs button:active,.menu:active{transform:translateY(1px);box-shadow:inset 0 2px 5px rgba(0,0,0,.1),0 1px 3px rgba(31,48,65,.08)}
.sticky{background:rgba(255,255,255,.66);border-top:1px solid rgba(255,255,255,.85);box-shadow:0 -5px 24px rgba(31,48,65,.07);-webkit-backdrop-filter:blur(24px) saturate(170%);backdrop-filter:blur(24px) saturate(170%)}
@media(max-width:800px){.header-inner nav{background:rgba(255,255,255,.96);border-bottom:1px solid rgba(255,255,255,.9)}.sticky .btn{border-radius:11px}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){header,.sticky{background:rgba(255,255,255,.96)}}
@media(prefers-reduced-transparency:reduce){header,.sticky,.header-inner nav{background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none}}
/* Campaign glass panels, shared by the hero and pricing section. */
.offer{background:linear-gradient(165deg,rgba(255,166,178,.4),rgba(255,255,255,0) 40%),linear-gradient(135deg,rgba(219,41,67,.94),rgba(184,24,47,.96));border:1px solid rgba(255,255,255,.65);border-radius:16px;box-shadow:inset 0 1px 0 rgba(255,255,255,.65),inset 0 -1px 0 rgba(105,12,33,.16),0 10px 28px rgba(174,32,56,.15),0 2px 5px rgba(115,35,47,.08);-webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%)}
.offer-title{text-shadow:0 1px 2px rgba(102,15,31,.18)}
.offer-grid>div{background:linear-gradient(155deg,rgba(255,255,255,.98),rgba(255,249,250,.89));border:1px solid rgba(255,255,255,.85);border-radius:9px;box-shadow:inset 0 1px 0 #fff,inset 0 -1px 0 rgba(211,167,176,.15),0 3px 10px rgba(106,16,35,.1);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.offer-grid b{color:#ce142e;text-shadow:0 1px 0 rgba(255,255,255,.85)}
@media(max-width:800px){.offer{border-radius:13px}.offer-grid>div{border-radius:7px}}
/* A lighter, more transparent header glass. */
header{background:rgba(255,255,255,.38);-webkit-backdrop-filter:blur(18px) saturate(165%);backdrop-filter:blur(18px) saturate(165%)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){header{background:rgba(255,255,255,.94)}}
@media(prefers-reduced-transparency:reduce){header{background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none}}
/* Keep the official logo crisp and fully opaque over the glass header. */
.brand{background:rgb(219,41,67);opacity:1}
.brand img{opacity:1;filter:none}
/* Stack campaign offers on phones and strengthen the campaign headline. */
.offer-title{font-size:22px;line-height:1.55;padding:4px 0;margin-bottom:11px}
@media(max-width:600px){
  .offer-grid{grid-template-columns:1fr;gap:10px}
  .offer-title{font-size:clamp(18px,4.8vw,24px);letter-spacing:.045em;padding:7px 0;margin-bottom:10px}
  .offer-grid>div,.hero .offer-grid>div,.campaign .offer-grid>div{padding:14px 12px}
  .offer-grid strong{font-size:21px}
  .offer-grid p{font-size:13px;gap:12px;margin-top:4px}
  .offer-grid b,.hero .offer-grid b,.campaign .offer-grid b{font-size:53px;line-height:1.25}
  .offer-grid b.zero,.hero .offer-grid b.zero,.campaign .offer-grid b.zero{font-size:72px}
}
.disclosure{transition:color .2s ease,background-color .2s ease}
.disclosure:hover{color:var(--red)}
.disclosure .plus,.voice .disclosure span,summary span{display:inline-block;transition:transform .3s cubic-bezier(.22,1,.36,1)}
.disclosure[aria-expanded=true] .plus,.voice .disclosure[aria-expanded=true] span{transform:rotate(180deg)}
.details-content{display:flow-root}
/* Progressive enhancement: content is visible unless the scroll observer is active. */
.scroll-await{opacity:0}
@media(prefers-reduced-motion:reduce){.scroll-await{opacity:1}}
@media print{.scroll-await{opacity:1}}
/* Slow CTA emphasis: a passing reflection and a gentle lift. */
.cta-pair .btn,.header-reserve{overflow:hidden}
.cta-pair .btn::after,.header-reserve::after{content:"";position:absolute;inset:-60% auto -60% -65%;width:35%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.32),transparent);transform:translateX(-180%) skewX(-20deg);pointer-events:none;z-index:2;animation:cta-reflection 7s ease-in-out infinite}
.cta-pair .reserve::after{animation-delay:1.4s}
.header-reserve::after{animation-delay:2.6s}
.hero-bottom .btn,.final .btn{animation:cta-float 7s cubic-bezier(.45,0,.55,1) infinite;animation-delay:3.3s}
.hero-bottom .reserve,.final .reserve{animation-delay:4.7s}
@keyframes cta-reflection{0%,52%{transform:translateX(-180%) skewX(-20deg)}74%,100%{transform:translateX(650%) skewX(-20deg)}}
@keyframes cta-float{0%,54%,100%{translate:0 0}64%,76%{translate:0 -4px}88%{translate:0 0}}
.cta-pair .btn:hover,.cta-pair .btn:focus-visible,.header-reserve:hover,.header-reserve:focus-visible{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.cta-pair .btn::after,.header-reserve::after{animation:none;display:none}.hero-bottom .btn,.final .btn{animation:none;translate:none}}
/* A slow glass reflection across each campaign panel. */
.offer{position:relative;isolation:isolate;overflow:hidden}
.offer::after{content:"";position:absolute;inset:-70% auto -70% -65%;width:32%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.24),transparent);transform:translateX(-180%) skewX(-20deg);pointer-events:none;z-index:2;animation:cta-reflection 8s ease-in-out infinite;animation-delay:2s}
.campaign .offer::after{animation-delay:3.5s}
@media(prefers-reduced-motion:reduce){.offer::after{animation:none;display:none}}
/* Editorial teaching photography: a scene, an invitation, and a conversation. */
.teaching-photo{position:relative;margin:0 0 34px;border-radius:14px;overflow:hidden;box-shadow:0 12px 35px rgba(28,51,65,.08)}
.teaching-photo img{width:100%;aspect-ratio:2.2;height:auto;object-fit:cover;object-position:65% 38%}
.teaching-photo figcaption{position:absolute;left:24px;bottom:20px;padding:10px 18px;border:1px solid #ffffffb3;border-radius:8px;background:rgba(255,255,255,.78);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);font-size:15px;font-weight:700}
.concern-art{height:520px;border-radius:12px}
.concern-art img{object-position:50% 24%}
.flow-intro{display:grid;grid-template-columns:1fr 1.1fr;gap:40px;align-items:center;margin-bottom:36px}
.flow-intro .section-heading{text-align:left;margin:0}
.dialogue-photo{margin:0;border-radius:12px;overflow:hidden;box-shadow:0 12px 30px rgba(28,51,65,.08)}
.dialogue-photo img{width:100%;height:auto;aspect-ratio:1.65;object-fit:cover;object-position:65% 40%}
@media(max-width:800px){.teaching-photo img{aspect-ratio:1.5;object-position:65% 40%}.teaching-photo figcaption{left:14px;bottom:14px;font-size:12px;padding:8px 12px}.concern-art{height:auto;aspect-ratio:1.05}.concern-art img{height:100%;object-position:50% 20%}.flow-intro{grid-template-columns:1fr;gap:24px;margin-bottom:28px}.dialogue-photo img{aspect-ratio:1.5;object-position:65% 40%}}
/* Rex characters act as friendly guides beside the relevant content. */
.heading-with-mascot{display:grid;grid-template-columns:minmax(0,1fr) 140px;gap:28px;align-items:center;max-width:800px;margin:0 auto 38px}
.heading-with-mascot .section-heading{margin:0;text-align:left}
.rex-mascot{width:140px;height:140px;object-fit:contain;filter:drop-shadow(0 5px 5px rgba(25,45,65,.06))}
.mascot-invitation{display:flex;align-items:center;justify-content:center;gap:16px;margin:0 auto 22px;max-width:520px}
.mascot-invitation img{width:105px;height:105px;object-fit:contain;flex-shrink:0}
.mascot-invitation p{text-align:left;font-size:13px;line-height:1.8;background:rgba(255,255,255,.75);border:1px solid #fff;border-radius:16px;padding:14px 20px}
.mascot-invitation strong{color:#176f43;font-size:14px}
@media(max-width:800px){.heading-with-mascot{grid-template-columns:minmax(0,1fr) 94px;gap:12px;margin-bottom:28px}.rex-mascot{width:94px;height:94px}.heading-with-mascot .section-heading h2{font-size:25px}.heading-with-mascot .eyebrow{font-size:9px;letter-spacing:.06em}.mascot-invitation{gap:8px}.mascot-invitation img{width:80px;height:90px}.mascot-invitation p{font-size:11px;padding:12px}.mascot-invitation strong{font-size:12px}}
@media(max-width:390px){.heading-with-mascot{grid-template-columns:minmax(0,1fr) 80px;gap:8px}.rex-mascot{width:80px;height:90px}.heading-with-mascot .section-heading h2{font-size:23px}}
@media(max-width:800px){.campaign .heading-with-mascot{display:block;position:relative;padding-top:62px}.campaign .heading-with-mascot .rex-mascot{position:absolute;right:10px;top:-14px;width:94px;height:94px}.campaign .heading-with-mascot .section-heading{text-align:center}.campaign .heading-with-mascot .eyebrow{text-align:left;padding-right:90px}.campaign .heading-with-mascot h2{font-size:25px}}
.concern-art img{object-position:50% 0%}
/* Review corrections: consistent mobile alignment and intentional headline breaks. */
.elementary-headline span{white-space:normal}

@media(max-width:800px){#features .section-heading,#voices .section-heading{text-align:left}}

/* Center section numbers and English labels independently of heading alignment. */
main section:not(.hero) .section-heading>.eyebrow{text-align:center;padding-left:0;padding-right:0}
.heading-with-mascot{position:relative;padding-top:58px}
.heading-with-mascot .section-heading>.eyebrow{position:absolute;top:0;left:0;right:0;margin:0}
@media(max-width:800px){.campaign .heading-with-mascot{padding-top:62px}.campaign .heading-with-mascot .rex-mascot{top:46px}.heading-with-mascot .section-heading>.eyebrow{padding:0;text-align:center}}
@media(max-width:800px){.campaign .heading-with-mascot .rex-mascot{position:static;margin:16px auto 0}}
