:root{
  --c-accent1:#f5c02e;
  --c-main:#1f3350;
  --c-base:#fff8ea;
  --c-accent3:#6cc3e8;
  --c-accent2:#f28aa8;
  --c-main-alpha-16:rgba(31,51,80,.16);
  --c-base-alpha-36:rgba(255,248,234,.36);
  --c-input:#fffdf8;
  --c-base-alpha-25:rgba(255,248,234,.25);
  --c-base-alpha-30:rgba(255,248,234,.3);
  --c-accent3-alpha-9:rgba(108,195,232,.09);
  --c-accent2-alpha-8:rgba(242,138,168,.08);
  --c-speech:#fff1d6;
  --c-base-alpha-80:rgba(255,248,234,.8);
  --c-accent1-alpha-72:rgba(245,192,46,.72);
  --c-base-2:#fff3e0;
  --c-base-3:#eef7ff;
  --c-base-4:#fff0f4;
  --c-cloud-1:#ffe9a8;
  --c-cloud-2:#ffd1dd;
  --c-cloud-3:#d6efff;
  --c-accent1-shadow:#e2ad23;
  --c-accent3-shadow:#4daed7;
  --c-accent2-shadow:#d96e8f;
  --c-base-shadow:#d9b979;
  --c-white:#fff;
  --c-white-alpha-70:rgba(255,255,255,.7);
  --c-main-alpha-18:rgba(31,51,80,.18);
  --c-tag:#ffe08a;
  --c-button-shadow:#a57912;
  --c-white-alpha-30:rgba(255,255,255,.3);
  --c-main-shadow:#12243f;
  --c-white-alpha-74:rgba(255,255,255,.74);
  --c-main-alpha-20:rgba(31,51,80,.2);
  --c-photo-placeholder:#e7edf3;
  --c-overlay-alpha-91:rgba(9,20,36,.91);
  --c-base-alpha-65:rgba(255,248,234,.65);
  --c-badge-2:#bfe9fb;
  --c-flag-accent2:#f28aa8;
  --fixed-main:#1f3350;
  --fixed-accent1:#f5c02e;
  --fixed-accent2:#f28aa8;
  --fixed-accent3:#6cc3e8;
  --fixed-base:#fff8ea;
  --fixed-base-alpha-75:rgba(255,248,234,.75);
  --fixed-white:#fff;
  --fixed-white-alpha-68:rgba(255,255,255,.68);
  --fixed-cheek:#f6a6bd;
  --fixed-white-alpha-80:rgba(255,255,255,.8);
  --fixed-logo-shadow:#152742;
  --fixed-sticker-j-shadow:#c99308;
  --fixed-sticker-s-shadow:#338db6;
  --fixed-sticker-y-shadow:#c65c7c;
  --fixed-sticker-k-shadow:#142640;
  --fixed-sticker-k:#3b5a8c;
  --fixed-sticker-fallback-shadow:#15304f;
}
:root{--yellow:var(--c-accent1);--navy:var(--c-main);--cream:var(--c-base);--sky:var(--c-accent3);--coral:var(--c-accent2);--ink:var(--fixed-main);--wrap:min(1120px,calc(100% - 48px));}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;overflow-x:hidden;background:var(--cream);color:var(--fixed-main);font:400 16px/1.9 "Noto Sans JP",sans-serif;}
a{color:inherit;text-decoration:none;}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--coral);outline-offset:3px;}
.nw{white-space:nowrap;}

.site-header{position:relative;z-index:20;display:flex;align-items:center;justify-content:space-between;min-height:88px;padding:16px max(24px,calc((100% - 1240px)/2));border-bottom:1px solid var(--c-main-alpha-16);background:var(--cream);}
.brand{font:900 13px/1 "Zen Maru Gothic",sans-serif;}
.brand span{margin-right:8px;font:700 clamp(27px,3vw,40px)/1 Fredoka,sans-serif;letter-spacing:-.03em;}
.menu-toggle{display:none;}
.site-nav{display:flex;gap:18px;align-items:center;font:700 12px/1 Fredoka,sans-serif;letter-spacing:.06em;}
.site-nav a{padding:12px 2px;}
.header-cta,.pill{display:inline-flex;align-items:center;gap:9px;padding:9px 10px 9px 17px;background:var(--navy);color:var(--fixed-base);border-radius:999px;font-size:12px;font-weight:700;}
.header-cta b{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--yellow);color:var(--fixed-main);}

.hero{position:relative;min-height:760px;height:calc(100svh - 88px);max-height:980px;overflow:hidden;isolation:isolate;display:grid;place-items:center;padding:70px 24px;}
.hero:before{content:"";position:absolute;z-index:-2;width:clamp(260px,37vw,540px);aspect-ratio:1;right:-10%;bottom:-24%;border:3px solid var(--sky);border-radius:50%;}
.hero:after{content:"";position:absolute;z-index:-2;width:50px;height:50px;left:9%;top:24%;border-radius:50%;background:var(--coral);}
.letter-stage{display:flex;align-items:center;justify-content:center;width:min(1120px,90vw);height:min(53vh,520px);min-height:350px;gap:clamp(0px,1.3vw,22px);}
.hero-letter{display:grid;place-items:center;flex:1;min-width:0;height:100%;font:700 min(53vh,515px)/.8 Fredoka,sans-serif;letter-spacing:-.09em;transform-origin:50% 80%;}
.hero-letter svg{width:100%;height:100%;overflow:visible;}
.hero-letter--j{animation:drift 7.4s ease-in-out infinite;}
.hero-letter--k{color:var(--fixed-accent1);animation:drift2 8.6s ease-in-out infinite;}
.hero-letter--s{animation:drift 6.3s ease-in-out infinite;}
.hero-letter--y{color:var(--fixed-accent2);animation:drift2 7.8s ease-in-out infinite;}
@keyframes drift{50%{transform:translateY(-15px) rotate(-2deg);}
}
@keyframes drift2{50%{transform:translateY(13px) rotate(1.5deg);}
}
.hero-copy{position:absolute;bottom:clamp(56px,10vh,116px);left:50%;width:max-content;max-width:calc(100% - 40px);transform:translateX(-50%);text-align:center;}
.hero-copy h1{margin:0;font:900 clamp(19px,2.3vw,32px)/1.5 "Zen Maru Gothic",sans-serif;letter-spacing:.04em;}
.hero-copy p{margin:3px 0;font-size:12px;letter-spacing:.12em;}
.round-cta{position:absolute;left:100%;top:-10px;display:grid;place-items:center;width:92px;height:92px;margin-left:25px;border-radius:50%;background:var(--yellow);font:900 13px/1.35 "Zen Maru Gothic",sans-serif;transform:rotate(9deg);transition:transform .25s;}
.round-cta:hover{transform:rotate(9deg) scale(1.08);}
.scroll-cue{position:absolute;left:max(24px,calc((100% - 1240px)/2));bottom:22px;display:flex;align-items:center;gap:10px;font:700 10px/1 Fredoka,sans-serif;letter-spacing:.17em;}
.scroll-cue:after{content:"";width:42px;height:1px;background:var(--navy);}

.ticker{overflow:hidden;min-height:230px;padding:43px 0;background:var(--navy);color:transparent;transform:skewY(-3deg);}
.ticker__line{width:max-content;font:700 clamp(70px,10vw,155px)/.85 Fredoka,sans-serif;letter-spacing:.04em;white-space:nowrap;-webkit-text-stroke:2px var(--fixed-accent3);animation:marquee 30s linear infinite;}
.ticker__line+div{margin-top:-5px;-webkit-text-stroke-color:var(--fixed-accent1);animation-direction:reverse;}
@keyframes marquee{to{transform:translateX(-50%);}
}

.home-section{position:relative;width:var(--wrap);margin:auto;padding:clamp(88px,12vw,150px) 0;}
.kicker{margin:0 0 12px;font:700 13px/1 Fredoka,sans-serif;letter-spacing:.19em;}
.section-title{margin:0;font:900 clamp(34px,5vw,64px)/1.35 "Zen Maru Gothic",sans-serif;}
.bubble{position:relative;margin-top:40px;padding:clamp(36px,6vw,78px);border:3px solid var(--navy);border-radius:48% 52% 46% 54%/44% 44% 56% 56%;background:var(--cream);text-align:center;}
.bubble:after{content:"";position:absolute;bottom:-28px;left:25%;width:42px;height:45px;background:var(--cream);border-left:3px solid var(--navy);border-bottom:3px solid var(--navy);transform:skew(-20deg) rotate(-16deg);}
.bubble p{max-width:720px;margin:0 auto;font-size:clamp(14px,1.4vw,17px);line-height:2.05;}
.entrances{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:64px;}
.entrance{position:relative;display:grid;place-items:center;min-height:270px;overflow:hidden;border:1px solid var(--navy);border-radius:24px;background:var(--cream);font:700 clamp(120px,16vw,205px)/1 Fredoka,sans-serif;}
.entrance:nth-child(2){background:var(--yellow);}
.entrance:nth-child(3){background:var(--sky);}
.entrance:nth-child(4){background:var(--coral);}
.entrance span{position:absolute;right:17px;bottom:15px;font:900 15px/1 "Zen Maru Gothic",sans-serif;letter-spacing:.08em;}
.home-news{padding:clamp(72px,10vw,118px) 24px;background:var(--navy);color:var(--fixed-base);}
.news-wrap{width:var(--wrap);margin:auto;}
.news-list{margin:30px 0 0;padding:0;list-style:none;border-top:1px solid var(--c-base-alpha-36);}
.news-list li{display:grid;grid-template-columns:118px 1fr auto;gap:18px;padding:20px 0;border-bottom:1px solid var(--c-base-alpha-36);}
.news-list time{color:var(--fixed-accent1);font:700 13px Fredoka,sans-serif;}
.news-list a{font-weight:700;}
.home-access{display:grid;grid-template-columns:repeat(2,1fr);gap:40px;}
.location-bubble{padding:40px;border:3px solid var(--navy);border-radius:50% 47% 52% 44%/48% 50% 45% 52%;text-align:center;}
.location-bubble:nth-child(2){background:var(--sky);}
.location-bubble h3{margin:0 0 14px;font:700 42px/1 Fredoka,sans-serif;}
.location-bubble p{margin:0;font-size:14px;}
.big-cta{display:grid;place-items:center;width:clamp(180px,22vw,270px);aspect-ratio:1;margin:50px auto 0;border-radius:50%;background:var(--yellow);text-align:center;font:900 clamp(18px,2vw,26px)/1.45 "Zen Maru Gothic",sans-serif;transform:rotate(5deg);}

.page-hero{position:relative;min-height:40vh;overflow:hidden;display:grid;grid-template-columns:minmax(260px,1fr) minmax(280px,.65fr);align-items:center;padding:36px max(24px,calc((100% - 1120px)/2));background:var(--cream);}
.page-hero:after{content:"";position:absolute;right:5%;bottom:12%;width:36px;height:36px;border:3px solid var(--coral);border-radius:50%;}
.page-letter{position:relative;height:40vh;min-height:330px;font:700 min(41vw,500px)/.8 Fredoka,sans-serif;letter-spacing:-.12em;color:var(--page-color,var(--fixed-accent1));animation:drift 8s ease-in-out infinite;}
.page-letter svg{width:100%;height:100%;overflow:visible;}
.page-heading{position:relative;z-index:1;}
.page-heading p{margin:0 0 8px;color:var(--fixed-accent2);font:700 16px/1 Fredoka,sans-serif;letter-spacing:.2em;}
.page-heading h1{margin:0;font:900 clamp(32px,4.3vw,62px)/1.3 "Zen Maru Gothic",sans-serif;}
.page-heading .lead{max-width:430px;margin:15px 0 0;font-size:14px;}
.sub-ticker{min-height:130px;padding:25px 0;}
.page-content{width:min(720px,calc(100% - 48px));margin:auto;padding:clamp(72px,10vw,120px) 0;}
.page-content>h2,.content-block h2{margin:0 0 28px;font:900 clamp(28px,4vw,48px)/1.45 "Zen Maru Gothic",sans-serif;text-align:center;}
.content-block{margin:0 0 64px;}
.content-block p{margin:0 0 1.4em;}
.content-block p:last-child{margin-bottom:0;}
.speech-card{position:relative;padding:36px 38px;border:3px solid var(--navy);border-radius:46% 54% 48% 52%/50% 44% 56% 50%;background:var(--cream);}
.speech-card:after{content:"";position:absolute;right:20%;bottom:-28px;width:45px;height:42px;border-right:3px solid var(--navy);border-bottom:3px solid var(--navy);background:var(--cream);transform:skew(25deg) rotate(18deg);}
.cards{display:grid;gap:16px;}
.course-card,.voice-card,.event-card,.news-card{padding:30px;border:1px solid var(--navy);border-radius:24px;background:var(--cream);}
.course-card h3,.voice-card h3,.event-card h3,.news-card h3{margin:0 0 12px;font:900 21px/1.5 "Zen Maru Gothic",sans-serif;}
.course-card .fee{display:inline-block;margin:3px 0 14px;padding:4px 12px;background:var(--yellow);font:700 18px/1.4 Fredoka,sans-serif;}
.course-card p,.voice-card p,.event-card p,.news-card p{margin:0;white-space:pre-line;}
.price-table{width:100%;border-collapse:collapse;font-size:14px;}
.price-table th,.price-table td{padding:16px;border:1px solid var(--navy);vertical-align:top;text-align:left;}
.price-table th{background:var(--yellow);font-family:"Zen Maru Gothic",sans-serif;}
.facts{margin:0;border-top:1px solid var(--navy);}
.facts div{display:grid;grid-template-columns:150px 1fr;border-bottom:1px solid var(--navy);}
.facts dt,.facts dd{margin:0;padding:16px;}
.facts dt{background:var(--yellow);font-family:"Zen Maru Gothic",sans-serif;}
.contact-form{display:grid;gap:16px;padding:32px;border:1px solid var(--navy);border-radius:24px;}
.contact-form label{font:900 15px "Zen Maru Gothic",sans-serif;}
.contact-form input,.contact-form textarea{width:100%;margin-top:6px;padding:12px;border:1px solid var(--navy);border-radius:8px;background:var(--c-input);font:inherit;}
.contact-form button{min-height:52px;border:0;border-radius:999px;background:var(--yellow);color:var(--fixed-main);font:900 16px "Zen Maru Gothic",sans-serif;cursor:pointer;}
.sitemap-list{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:0;padding:0;list-style:none;}
.sitemap-list a{display:block;padding:18px;border:1px solid var(--navy);border-radius:18px;font:900 16px "Zen Maru Gothic",sans-serif;}
.lesson-bar{display:none;}

.footer{display:grid;grid-template-columns:1fr minmax(300px,1.4fr) auto;gap:40px;align-items:start;padding:clamp(50px,6vw,84px) max(24px,calc((100% - 1120px)/2)) 22px;background:var(--navy);color:var(--fixed-base);}
.footer-brand span{display:block;color:var(--fixed-accent1);font:700 clamp(48px,5vw,72px)/.8 Fredoka,sans-serif;letter-spacing:-.05em;}
.footer-brand p{margin:13px 0 0;font:900 15px/1.3 "Zen Maru Gothic",sans-serif;}
.footer-nav{display:grid;grid-template-columns:repeat(2,1fr);gap:7px 22px;margin-top:20px;font-size:12px;}
.footer-info{font-size:12px;line-height:1.8;}
.footer-info p{margin:0;}
.footer-info p+p{margin-top:12px;}
.footer-tel{align-self:center;padding:12px 17px;border:1px solid var(--yellow);border-radius:999px;color:var(--fixed-accent1);font:700 15px/1 Fredoka,sans-serif;white-space:nowrap;}
.footer-bottom{grid-column:1/-1;display:flex;justify-content:space-between;gap:15px;margin-top:18px;padding-top:15px;border-top:1px solid var(--c-base-alpha-25);color:var(--fixed-base-alpha-75);font-size:10px;}
.footer-bottom a{color:var(--fixed-accent1);}

@media(max-width:760px){body{padding-bottom:58px;}
.nw{white-space:normal;}
.site-header{position:relative;min-height:70px;padding:12px 18px;}
.brand{font-size:10px;}
.brand span{font-size:25px;}
.menu-toggle{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;background:transparent;color:var(--fixed-main);font:700 12px Fredoka,sans-serif;}
.site-nav{position:fixed;z-index:30;inset:0;display:flex;visibility:hidden;flex-direction:column;justify-content:center;gap:12px;opacity:0;background:var(--navy);color:var(--fixed-base);transition:.25s;}
.site-nav.is-open{visibility:visible;opacity:1;}
.site-nav a{padding:10px;font-size:22px;}
.site-nav .header-cta{font-size:16px;}
.menu-close{display:block!important;position:absolute;top:18px;right:18px;color:var(--fixed-base);}
.hero{min-height:580px;height:calc(100svh - 70px);padding:30px 12px;}
.letter-stage{width:96vw;height:255px;min-height:0;gap:0;}
.hero-letter{font-size:120px;height:220px;}
.hero-letter svg{width:110%;max-width:none;}
.hero-copy{bottom:55px;}
.hero-copy h1{font-size:18px;white-space:nowrap;}
.hero-copy p{font-size:10px;}
.round-cta{position:relative;top:auto;left:auto;width:75px;height:75px;margin:16px auto 0;}
.scroll-cue{left:18px;bottom:18px;}
.ticker{min-height:170px;padding:34px 0;}
.ticker__line{-webkit-text-stroke-width:1px;font-size:70px;}
.home-section{width:calc(100% - 28px);padding:80px 0;}
.bubble{padding:42px 24px;border-width:2px;}
.entrances{grid-template-columns:repeat(2,1fr);gap:10px;margin-top:42px;}
.entrance{min-height:185px;border-radius:18px;font-size:110px;}
.entrance span{right:10px;bottom:10px;font-size:11px;}
.home-access{grid-template-columns:1fr;gap:22px;}
.location-bubble{padding:34px 23px;border-width:2px;}
.news-list li{grid-template-columns:1fr auto;gap:4px 12px;}
.news-list li a{grid-column:1/-1;}
.page-hero{grid-template-columns:1fr;min-height:0;padding:22px 24px 46px;}
.page-letter{order:2;height:28vh;min-height:210px;font-size:min(72vw,310px);text-align:center;}
.page-heading{order:1;}
.page-heading h1{font-size:34px;}
.page-heading .lead{margin-top:8px;font-size:12px;}
.sub-ticker{min-height:105px;}
.page-content{width:calc(100% - 28px);padding:70px 0;}
.content-block{margin-bottom:52px;}
.speech-card{padding:31px 23px;border-width:2px;}
.course-card,.voice-card,.event-card,.news-card{padding:24px 20px;border-radius:20px;}
.price-table{font-size:12px;}
.price-table th,.price-table td{padding:11px 8px;}
.facts div{grid-template-columns:105px 1fr;}
.facts dt,.facts dd{padding:12px;font-size:13px;}
.sitemap-list{grid-template-columns:1fr;}
.contact-form{padding:24px 18px;}
.footer{display:block;padding:48px 24px 19px;}
.footer-info{margin-top:30px;font-size:11px;}
.footer-tel{display:inline-block;margin-top:30px;}
.footer-bottom{display:block;margin-top:36px;}
.footer-bottom small{display:block;}
.footer-bottom small+small{margin-top:5px;}
.lesson-bar{position:fixed;z-index:25;right:0;bottom:0;left:0;display:grid;grid-template-columns:1.15fr 1fr 1fr;height:58px;background:var(--navy);color:var(--fixed-base);}
.lesson-bar a{display:grid;place-items:center;border-right:1px solid var(--c-base-alpha-30);font:900 11px "Zen Maru Gothic",sans-serif;}
.lesson-bar a:first-child{background:var(--yellow);color:var(--fixed-main);}
}

@media(min-width:761px){.menu-close{display:none!important;}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto;}
*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}
}


/* Round 2: lighter card rhythm. */

.cards:has(>.course-card),.cards:has(>.voice-card){counter-reset:card-letter;}
.cards>.course-card,.cards>.voice-card{position:relative;counter-increment:card-letter;padding-top:58px;}
.cards>.course-card:before,.cards>.voice-card:before{content:counter(card-letter,upper-alpha);position:absolute;top:17px;left:20px;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--yellow);font:700 17px/1 Fredoka,sans-serif;}
.cards>.course-card:nth-child(3n+2):before,.cards>.voice-card:nth-child(3n+2):before{background:var(--sky);}
.cards>.course-card:nth-child(3n):before,.cards>.voice-card:nth-child(3n):before{background:var(--coral);}

@media(max-width:760px){.hero{min-height:0;height:calc(100svh - 70px);padding:22px 12px;}
.letter-stage{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,34vw);align-content:start;width:84vw;height:68vw;min-height:0;gap:0 2vw;}
.hero-letter{display:grid;height:34vw;font-size:34vw;line-height:.8;}
.hero-letter svg{width:100%;height:100%;max-width:100%;}
.cards>.course-card,.cards>.voice-card{padding-top:55px;}
}

@media(max-width:760px){.speech-card h2 .nw{white-space:nowrap;}
}


/* Round 3 — coloured, soft lower-page system */
.ticker{position:relative;transform:none;isolation:isolate;clip-path:polygon(0 24px,4% 9px,8% 24px,12% 39px,16% 24px,20% 9px,24% 24px,28% 39px,32% 24px,36% 9px,40% 24px,44% 39px,48% 24px,52% 9px,56% 24px,60% 39px,64% 24px,68% 9px,72% 24px,76% 39px,80% 24px,84% 9px,88% 24px,92% 39px,96% 24px,100% 9px,100% calc(100% - 24px),96% calc(100% - 39px),92% calc(100% - 24px),88% calc(100% - 9px),84% calc(100% - 24px),80% calc(100% - 39px),76% calc(100% - 24px),72% calc(100% - 9px),68% calc(100% - 24px),64% calc(100% - 39px),60% calc(100% - 24px),56% calc(100% - 9px),52% calc(100% - 24px),48% calc(100% - 39px),44% calc(100% - 24px),40% calc(100% - 9px),36% calc(100% - 24px),32% calc(100% - 39px),28% calc(100% - 24px),24% calc(100% - 9px),20% calc(100% - 24px),16% calc(100% - 39px),12% calc(100% - 24px),8% calc(100% - 9px),4% calc(100% - 24px),0 calc(100% - 39px));}

.page-content{position:relative;isolation:isolate;}
.page-content:before{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(105deg,transparent 0 10%,var(--c-accent3-alpha-9) 10% 11%,transparent 11% 52%,var(--c-accent2-alpha-8) 52% 53%,transparent 53%);}

.content-block,.home-section,.home-news{position:relative;isolation:isolate;}
.section-wave{position:relative;width:calc(100% + 28px);height:48px;margin:-34px -14px 20px;overflow:hidden;pointer-events:none;}
.section-wave svg{display:block;width:100%;height:48px;}
.section-wave path{fill:var(--sky);}
.content-block:nth-of-type(2n) .section-wave path{fill:var(--coral);}
.content-block:nth-of-type(3n) .section-wave path{fill:var(--yellow);}

.section-orbits{position:absolute;z-index:0;inset:0;pointer-events:none;overflow:hidden;}
.section-orbits i{position:absolute;display:block;width:28px;height:28px;border-radius:50%;animation:orbit-float 8s ease-in-out infinite;}
.section-orbits i:nth-child(1){top:8px;left:8px;background:var(--yellow);}
.section-orbits i:nth-child(2){right:8px;top:37%;width:38px;height:38px;border:2px solid var(--coral);animation-delay:-2.6s;}
.section-orbits i:nth-child(3){right:6%;bottom:8px;width:18px;height:18px;background:var(--sky);animation-delay:-5.1s;}
@keyframes orbit-float{50%{transform:translateY(-8px) translateX(3px);}
}
.content-block>:not(.section-orbits):not(.section-wave),.home-section>:not(.section-orbits),.home-news>:not(.section-orbits){position:relative;z-index:1;}

.speech-card,.bubble{background:var(--c-speech);border:2px solid var(--navy);}
.speech-card:after,.bubble:after{background:var(--c-speech);border-width:2px;}
.speech-card{border-radius:44% 56% 48% 52%/48% 43% 57% 52%;}

.cards{gap:18px;}
.cards>.course-card,.cards>.voice-card,.cards>.event-card,.cards>.news-card,.sitemap-list a,.location-bubble{position:relative;overflow:hidden;border:0;border-radius:28px;box-shadow:none;color:var(--fixed-main);}
.cards>.course-card,.cards>.voice-card,.cards>.event-card,.cards>.news-card{padding:62px 30px 30px;}
.cards>.course-card:nth-child(4n+1),.cards>.voice-card:nth-child(4n+1),.cards>.event-card:nth-child(4n+1),.cards>.news-card:nth-child(4n+1),.sitemap-list a:nth-child(4n+1),.location-bubble:nth-child(4n+1){background:var(--yellow);}
.cards>.course-card:nth-child(4n+2),.cards>.voice-card:nth-child(4n+2),.cards>.event-card:nth-child(4n+2),.cards>.news-card:nth-child(4n+2),.sitemap-list a:nth-child(4n+2),.location-bubble:nth-child(4n+2){background:var(--sky);}
.cards>.course-card:nth-child(4n+3),.cards>.voice-card:nth-child(4n+3),.cards>.event-card:nth-child(4n+3),.cards>.news-card:nth-child(4n+3),.sitemap-list a:nth-child(4n+3),.location-bubble:nth-child(4n+3){background:var(--coral);}
.cards>.course-card:nth-child(4n),.cards>.voice-card:nth-child(4n),.cards>.event-card:nth-child(4n),.cards>.news-card:nth-child(4n),.sitemap-list a:nth-child(4n),.location-bubble:nth-child(4n){background:var(--cream);}

.cards>.course-card:before,.cards>.voice-card:before,.cards>.event-card:before,.cards>.news-card:before{content:attr(data-card-letter);position:absolute;top:18px;left:20px;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--navy);color:var(--fixed-base);font:700 18px/1 Fredoka,sans-serif;}
.cards>.course-card:nth-child(4n+2):before,.cards>.voice-card:nth-child(4n+2):before,.cards>.event-card:nth-child(4n+2):before,.cards>.news-card:nth-child(4n+2):before{background:var(--coral);}
.cards>.course-card:nth-child(4n+3):before,.cards>.voice-card:nth-child(4n+3):before,.cards>.event-card:nth-child(4n+3):before,.cards>.news-card:nth-child(4n+3):before{background:var(--yellow);}
.cards>.course-card:nth-child(4n):before,.cards>.voice-card:nth-child(4n):before,.cards>.event-card:nth-child(4n):before,.cards>.news-card:nth-child(4n):before{background:var(--sky);}

.course-card .fee{border-radius:999px;background:var(--navy);color:var(--fixed-base);}
.course-card:nth-child(4n+2) .fee{background:var(--coral);}
.course-card:nth-child(4n+3) .fee{background:var(--sky);}
.course-card:nth-child(4n) .fee{background:var(--yellow);color:var(--fixed-main);}

.page-content>h2,.content-block h2,.section-title{display:flex;align-items:center;justify-content:center;gap:.18em;flex-wrap:wrap;}
.heading-badge{display:inline-grid;place-items:center;width:1.65em;height:1.65em;border-radius:50%;background:var(--navy);color:var(--fixed-base);font:700 .55em/1 Fredoka,sans-serif;letter-spacing:0;}
.title-accent{color:var(--fixed-accent2);}
.content-block:nth-of-type(2n) .title-accent,.home-section:nth-of-type(2n) .section-title{color:var(--fixed-accent1);}


.footer{position:relative;margin-top:48px;padding-top:clamp(62px,7vw,96px);}
.footer-wave{position:absolute;top:-48px;left:0;width:100%;height:48px;overflow:visible;}
.footer-wave path{fill:var(--navy);}
.footer-brand>span{display:flex;gap:.02em;}
.logo-letter{font-style:normal;}
.logo-letter--1{color:var(--fixed-accent1);}
.logo-letter--2{color:var(--fixed-accent3);}
.logo-letter--3{color:var(--fixed-accent2);}
.logo-letter--4{color:var(--fixed-base);}

@media(max-width:760px){.ticker{clip-path:none;border-radius:0 0 50% 50%/0 0 24px 24px;}
.section-wave{height:32px;margin:-24px -7px 14px;width:calc(100% + 14px);}
.section-wave svg{height:32px;}
.cards>.course-card,.cards>.voice-card,.cards>.event-card,.cards>.news-card{padding:59px 20px 24px;border-radius:28px;}
.footer{margin-top:32px;}
.footer-wave{top:-32px;height:32px;}
.footer-brand>span{display:inline-flex;}
.heading-badge{width:1.5em;height:1.5em;}
.page-content>h2,.content-block h2,.section-title{gap:.12em;}
}

.ticker{clip-path:none;margin:0;overflow:hidden;background:transparent;}
.ticker:before{content:"";position:absolute;z-index:0;inset:24px 0;background:var(--navy);}
.ticker__line{position:static;z-index:auto;}
.ticker-wave{position:absolute;z-index:0;left:0;width:100%;height:48px;pointer-events:none;}
.ticker-wave path{fill:var(--navy);}
.ticker-wave--top{top:0;}
.ticker-wave--bottom{bottom:0;transform:rotate(180deg);}

@media(max-width:760px){.ticker{margin:0;border-radius:0;}
.ticker:before{inset:16px 0;}
.ticker-wave{height:32px;}
.ticker-wave--top{top:0;}
.ticker-wave--bottom{bottom:0;}
}


/* Round 4 — motion is deliberately CSS/JS only; no new imagery is used. */
.hero:before{transform:translate3d(0,var(--hero-parallax,0px),0);transition:transform .08s linear;}
.hero:after{transform:translate3d(0,calc(var(--hero-parallax,0px) * -.72),0);transition:transform .08s linear;}

.hero-letter{animation:hero-rise .72s cubic-bezier(.34,1.56,.64,1) both,hero-drift-j 7.4s ease-in-out .82s infinite!important;}
.hero-letter--k{animation:hero-rise .72s cubic-bezier(.34,1.56,.64,1) .12s both,hero-drift-k 8.6s ease-in-out .94s infinite!important;}
.hero-letter--s{animation:hero-rise .72s cubic-bezier(.34,1.56,.64,1) .24s both,hero-drift-s 6.3s ease-in-out 1.06s infinite!important;}
.hero-letter--y{animation:hero-rise .72s cubic-bezier(.34,1.56,.64,1) .36s both,hero-drift-y 7.8s ease-in-out 1.18s infinite!important;}

@keyframes hero-rise{from{opacity:0;transform:translateY(72px) scale(.88);}
to{opacity:1;transform:translateY(0) scale(1);}
}

@keyframes hero-drift-j{50%{transform:translateY(-15px) rotate(-2deg);}
}
@keyframes hero-drift-k{50%{transform:translateY(13px) rotate(1.5deg);}
}
@keyframes hero-drift-s{50%{transform:translateY(-12px) rotate(1.4deg);}
}
@keyframes hero-drift-y{50%{transform:translateY(11px) rotate(-1.3deg);}
}


.ticker__line{animation-duration:30s;}
.ticker__line+div{animation-duration:36s;}

.motion-ready .motion-card,.motion-ready .motion-bubble,.motion-ready .motion-heading .marker-word:after,.motion-ready .motion-heading .title-accent:after{will-change:transform,opacity;}
.motion-ready .motion-card{opacity:0;transform:scale(.92);}
.motion-ready .motion-card.is-visible{opacity:1;transform:scale(1);transition:opacity .42s ease,transform .52s cubic-bezier(.34,1.56,.64,1);}
.motion-ready .motion-card.is-visible:hover{transform:translateY(-6px) rotate(2deg);}

.motion-ready .motion-bubble{opacity:0;transform:scale(.96);transform-origin:25% 100%;}
.motion-ready .motion-bubble.is-visible{opacity:1;transform:scale(1);transition:opacity .36s ease,transform .48s cubic-bezier(.34,1.56,.64,1);}
.motion-line{display:block;opacity:0;transform:translateY(5px);}
.motion-bubble.is-visible .motion-line{animation:bubble-line-in .28s ease forwards;animation-delay:calc(var(--line-index) * 60ms + 100ms);}
@keyframes bubble-line-in{to{opacity:1;transform:translateY(0);}
}

.cards>.course-card:before,.cards>.voice-card:before,.cards>.event-card:before,.cards>.news-card:before{transition:transform .55s cubic-bezier(.34,1.56,.64,1);}
.cards>.course-card:hover:before,.cards>.voice-card:hover:before,.cards>.event-card:hover:before,.cards>.news-card:hover:before{transform:rotate(360deg);}

.motion-heading .marker-word,.motion-heading .title-accent{position:relative;z-index:0;isolation:isolate;color:var(--fixed-accent2);}
.motion-heading .marker-word:after,.motion-heading .title-accent:after{content:"";position:absolute;z-index:-1;left:-.08em;bottom:.14em;width:0;height:.42em;background:var(--yellow);opacity:.72;}
.motion-heading.is-visible .marker-word:after,.motion-heading.is-visible .title-accent:after{width:calc(100% + .16em);transition:width .5s ease;}

.entrance-number{position:absolute;top:14px;left:15px;font:700 18px/1 Fredoka,sans-serif;letter-spacing:.06em;}
.fee{font-variant-numeric:tabular-nums;}

.footer-wave path{animation:none;}
.footer-brand>span{cursor:default;}
.footer-brand>span:hover .logo-letter{animation:logo-hop .52s cubic-bezier(.34,1.56,.64,1);}
.footer-brand>span:hover .logo-letter:nth-child(2){animation-delay:.06s;}
.footer-brand>span:hover .logo-letter:nth-child(3){animation-delay:.12s;}
.footer-brand>span:hover .logo-letter:nth-child(4){animation-delay:.18s;}
@keyframes logo-hop{50%{transform:translateY(-10px);}
}

@media(max-width:760px){.hero-letter{animation:hero-rise .72s cubic-bezier(.34,1.56,.64,1) both,hero-drift-j-sp 7.4s ease-in-out .82s infinite!important;}
.hero-letter--k{animation:hero-rise .72s cubic-bezier(.34,1.56,.64,1) .12s both,hero-drift-k-sp 8.6s ease-in-out .94s infinite!important;}
.hero-letter--s{animation:hero-rise .72s cubic-bezier(.34,1.56,.64,1) .24s both,hero-drift-s-sp 6.3s ease-in-out 1.06s infinite!important;}
.hero-letter--y{animation:hero-rise .72s cubic-bezier(.34,1.56,.64,1) .36s both,hero-drift-y-sp 7.8s ease-in-out 1.18s infinite!important;}
@keyframes hero-drift-j-sp{50%{transform:translateY(-7px) rotate(-1deg);}
}
@keyframes hero-drift-k-sp{50%{transform:translateY(6px) rotate(.75deg);}
}
@keyframes hero-drift-s-sp{50%{transform:translateY(-6px) rotate(.7deg);}
}
@keyframes hero-drift-y-sp{50%{transform:translateY(5px) rotate(-.65deg);}
}
.lesson-bar{transition:transform .28s ease;}
.lesson-bar.lesson-bar--hidden{transform:translateY(105%);}
.section-orbits i{animation-name:orbit-float-sp;}
@keyframes orbit-float-sp{50%{transform:translateY(-4px) translateX(2px);}
}
}

@media(prefers-reduced-motion:reduce){.hero:before,.hero:after{transition:none;}
.motion-ready .motion-card,.motion-ready .motion-bubble{opacity:1;transform:none;}
.motion-line{opacity:1;transform:none;}
.motion-heading .marker-word:after,.motion-heading .title-accent:after{width:calc(100% + .16em);}
.footer-brand>span:hover .logo-letter{animation:none;}
}

.motion-ready .motion-card.is-visible{transition-delay:var(--motion-delay,0ms);}
.motion-ready .motion-card.is-visible:hover{transition-delay:0ms;}
.logo-letter{display:inline-block;}


/* Round 5 — finish pass: full shapes, deliberately quiet backgrounds and clear hierarchy. */
.page-content:before{display:none;}
.section-wave{display:none;}

.bubble:after,.speech-card:after{display:none;}
.bubble,.speech-card{overflow:visible;}

.speech-tail{position:absolute;z-index:-1;left:calc(20% - 10px);bottom:-58px;width:86px;height:60px;overflow:visible;}
.speech-tail path{fill:var(--c-speech);stroke:var(--navy);stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round;}


.home-news{margin:56px 0;padding-top:clamp(82px,11vw,130px);padding-bottom:clamp(82px,11vw,130px);overflow:visible;}
.home-news-wave{position:absolute;z-index:-1;left:0;width:100%;height:56px;pointer-events:none;}
.home-news-wave path{fill:var(--navy);}
.home-news-wave--top{top:-55px;}
.home-news-wave--bottom{bottom:-55px;transform:rotate(180deg);}
.home-news .section-title{justify-content:flex-start;}
.news-list li>span{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--c-base-alpha-80);border-radius:50%;color:var(--fixed-accent1);font:700 15px/1 Fredoka,sans-serif;}

.entrance{display:grid;grid-template-rows:1fr auto;min-height:270px;padding:16px;border:1px solid var(--navy);background:var(--cream)!important;transition:transform .35s cubic-bezier(.34,1.56,.64,1);}
.entrance:hover{transform:rotate(2deg);}
.entrance-letter{display:grid;place-items:center;align-self:center;justify-self:center;color:var(--fixed-main);font:700 clamp(120px,16vw,205px)/.78 Fredoka,sans-serif;font-style:normal;letter-spacing:-.1em;}
.entrance--results .entrance-letter{color:var(--fixed-base);}
.entrance>span{position:static;display:grid;gap:4px;width:100%;padding:0;text-align:left;font:900 14px/1.15 "Zen Maru Gothic",sans-serif;letter-spacing:.04em;}
.entrance>span b{font:900 16px/1 "Zen Maru Gothic",sans-serif;}
.entrance>span small{font:400 11px/1.35 "Noto Sans JP",sans-serif;letter-spacing:0;}
.entrance-number{z-index:2;}

@media(max-width:760px){.letter-stage{grid-template-columns:repeat(2,34vw);align-items:stretch;justify-content:center;justify-items:stretch;grid-template-rows:repeat(2,34vw);}
.hero-letter{width:34vw;height:34vw;min-height:34vw;line-height:1;transform-origin:50% 50%;}
.hero-letter svg{display:block;width:100%;height:100%;}
.entrance{min-height:185px;padding:12px;}
.entrance-letter{font-size:110px;}
.entrance>span b{font-size:13px;}
.entrance>span small{font-size:9px;line-height:1.25;}
.speech-tail{bottom:-42px;width:67px;height:44px;left:calc(20% - 8px);}
.home-news{margin:40px 0;padding-top:80px;padding-bottom:80px;}
.home-news-wave{height:40px;}
.home-news-wave--top{top:-39px;}
.home-news-wave--bottom{bottom:-39px;}
.news-list li>span{width:27px;height:27px;}
}


/* Round 6 — semantic marker words and the shared speech-tail geometry. */
mark{position:relative;z-index:0;isolation:isolate;padding:0 .08em;color:var(--fixed-accent2);background:linear-gradient(transparent 57%,var(--c-accent1-alpha-72) 57% 91%,transparent 91%);-webkit-box-decoration-break:clone;box-decoration-break:clone;}

.bubble p{max-width:720px;text-align:left;text-wrap:pretty;line-break:strict;word-break:normal;overflow-wrap:normal;}

.speech-tail{z-index:0;left:22%;bottom:-56px;width:48px;height:56px;}
.speech-tail path{stroke-width:2.4;}

.home-news-wave{z-index:0;}
.heading-badge--location{width:auto;min-width:0;height:auto;padding:.56em .8em;border-radius:999px;font-size:.31em;letter-spacing:.08em;}

@media(max-width:760px){body{padding-bottom:0;}
main{padding-bottom:72px;}
.footer{padding-bottom:91px;}
.speech-tail{left:22%;bottom:-56px;width:48px;height:56px;}
.letter-stage{grid-template-columns:repeat(2,34vw);grid-template-rows:repeat(2,34vw);width:68vw;height:68vw;}
.hero-letter{width:34vw;height:34vw;min-height:34vw;font-size:34vw;}
}


/* manual fix after ROUND6: wave placement, tail shape, SP letter grid */
.home-news>.home-news-wave{position:absolute!important;left:0;width:100%;z-index:0;}

.home-news>.home-news-wave--top{top:-55px;}
.home-news>.home-news-wave--bottom{bottom:-55px;}

.speech-tail{bottom:-50px;}
.speech-tail .t-fill{stroke:none;}
.speech-tail .t-line{fill:none;}

@media(max-width:760px){.home-news>.home-news-wave--top{top:-39px;}
.home-news>.home-news-wave--bottom{bottom:-39px;}
.hero-letter svg{width:34vw!important;height:34vw!important;max-width:none;}
.hero-letter{overflow:visible;}
}


/* Round 7 — readable letters. */
.hero-letter--j{color:var(--fixed-accent1);}
.hero-letter--k{color:var(--fixed-main);}
.hero-letter--s{color:var(--fixed-accent3);}
.hero-letter--y{color:var(--fixed-accent2);}
.entrance-letter{position:relative;z-index:1;}
.entrance--features{background:var(--cream)!important;}
.entrance--classes{background:var(--yellow)!important;}
.entrance--events{background:var(--sky)!important;}
.entrance--results{background:var(--coral)!important;}

/* Round 8 — alphabet-only ornaments and motion.  The manual fixes above remain intact. */
:root{--r8-tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='150' viewBox='0 0 180 150'%3E%3Cg fill='%231f3350' fill-opacity='.07' font-family='Fredoka,Arial,sans-serif' font-weight='700'%3E%3Ctext x='12' y='44' font-size='34' transform='rotate(-12 12 44)'%3EA%3C/text%3E%3Ctext x='114' y='36' font-size='26' transform='rotate(9 114 36)'%3EM%3C/text%3E%3Ctext x='58' y='111' font-size='40' transform='rotate(-7 58 111)'%3EY%3C/text%3E%3Ctext x='145' y='135' font-size='20'%3EC%3C/text%3E%3C/g%3E%3C/svg%3E");}
.home-section,.content-block:nth-child(odd),.page-content>h2{background-image:var(--r8-tile);}
.home-news,.content-block:nth-child(even){background-image:none;}
.section-orbits,.section-wave{display:none!important;}
.content-block>:not(.section-orbits):not(.section-wave),.home-section>:not(.section-orbits),.home-news>:not(.section-orbits){z-index:2;}

/* Decorative characters live on a dedicated layer, never above reading content. */
.r8-doodles{position:absolute;z-index:1;inset:0;pointer-events:none;overflow:hidden;}
.alphabet-doodle{position:absolute;display:grid;place-items:center;transform:translate3d(0,var(--r8-scroll,0),0);will-change:transform;}
.alphabet-doodle__ink{display:grid;place-items:center;width:var(--doodle-size,46px);height:var(--doodle-size,46px);color:var(--doodle-color,var(--fixed-main));font:700 var(--doodle-size,46px)/1 Fredoka,sans-serif;letter-spacing:-.08em;transform:rotate(var(--doodle-tilt,0deg));animation:r8-doodle-sway var(--doodle-time,8s) ease-in-out infinite;}
.alphabet-doodle--outline .alphabet-doodle__ink{color:transparent;-webkit-text-stroke:2px var(--doodle-color,var(--fixed-main));}
.alphabet-doodle--block .alphabet-doodle__ink{width:22px;height:22px;border-radius:6px;background:var(--doodle-color,var(--yellow));color:var(--fixed-main);font-size:15px;letter-spacing:0;pointer-events:auto;transition:transform .35s;}
.alphabet-doodle--block .alphabet-doodle__ink:hover{transform:rotate(calc(var(--doodle-tilt,0deg) + 360deg));}
.alphabet-doodle--bubble .alphabet-doodle__ink{width:auto;height:auto;min-height:28px;padding:6px 10px;border:2px solid var(--navy);border-radius:999px;background:var(--cream);font-size:16px;letter-spacing:.02em;white-space:nowrap;}
.alphabet-doodle--bubble .alphabet-doodle__ink:after{content:"";position:absolute;bottom:-7px;left:18px;width:10px;height:10px;border-right:2px solid var(--navy);border-bottom:2px solid var(--navy);background:var(--cream);transform:rotate(42deg);}
@keyframes r8-doodle-sway{50%{transform:rotate(calc(var(--doodle-tilt,0deg) + 6deg)) translateY(-3px);}}

/* A small hand-lettered abc precedes every English kicker. */
.kicker:before{content:"abc";display:inline-block;margin-right:.55em;color:var(--fixed-accent2);font:700 1.22em/1 Fredoka,sans-serif;letter-spacing:-.08em;transform:rotate(-9deg);}
.page-heading p:before{content:"abc";display:inline-block;margin-right:.55em;color:var(--fixed-accent1);font:700 1.18em/1 Fredoka,sans-serif;letter-spacing:-.08em;transform:rotate(-9deg);}

/* Alphabet building blocks replace every generic card marker. */
.course-card,.voice-card,.event-card,.news-card,.sitemap-list a,.location-bubble,.entrance{isolation:isolate;}
.course-card:after,.voice-card:after,.event-card:after,.news-card:after,.sitemap-list a:after,.location-bubble:after{content:attr(data-card-letter);position:absolute;z-index:3;right:12px;top:11px;display:grid;place-items:center;width:22px;height:22px;border-radius:6px;background:var(--sky);color:var(--fixed-main);font:700 15px/1 Fredoka,sans-serif;transform:rotate(9deg);transition:transform .35s;}
.course-card:nth-child(3n+2):after,.voice-card:nth-child(3n+2):after,.event-card:nth-child(3n+2):after,.news-card:nth-child(3n+2):after{background:var(--yellow);}
.course-card:nth-child(3n):after,.voice-card:nth-child(3n):after,.event-card:nth-child(3n):after,.news-card:nth-child(3n):after{background:var(--coral);}
.course-card:hover:after,.voice-card:hover:after,.event-card:hover:after,.news-card:hover:after,.sitemap-list a:hover:after,.location-bubble:hover:after{transform:rotate(369deg);}

/* Pill CTAs use an integrated letter-arrow dot. */
.header-cta,.round-cta,.big-cta,.lesson-bar a:first-child,.contact-form button{border-radius:999px;}
.header-cta b{font-size:0;}.header-cta b:after{content:"→";font:700 14px/1 Fredoka,sans-serif;}
.round-cta:after,.big-cta:after,.contact-form button:after{content:"→";display:grid;place-items:center;width:22px;height:22px;margin-top:5px;border-radius:50%;background:var(--navy);color:var(--fixed-accent1);font:700 14px/1 Fredoka,sans-serif;}
.round-cta,.big-cta,.contact-form button{transition:transform .25s ease;}
.round-cta:hover,.big-cta:hover,.contact-form button:hover{transform:rotate(3deg);}
.round-cta{animation:r8-cta-pulse 4s ease-in-out 4s infinite both;}
@keyframes r8-cta-pulse{0%,87%,100%{scale:1;}91%{scale:1.06;}96%{scale:.97;}}

/* Hero alphabet field, entrance and independent letter rhythms. */
.hero-alphabet-field{position:absolute;z-index:-1;inset:0;pointer-events:none;overflow:hidden;}
.hero-alphabet-field span{position:absolute;color:var(--fixed-main);opacity:.06;font:700 clamp(120px,17vw,260px)/.8 Fredoka,sans-serif;letter-spacing:-.1em;animation:r8-field-float var(--field-time,10s) ease-in-out infinite alternate;}
@keyframes r8-field-float{to{translate:var(--field-x,7px) var(--field-y,-10px);}}
.hero-letter{animation:r8-j 5.5s ease-in-out .72s infinite!important;}
.hero-letter--k{animation:r8-k 6.5s ease-in-out .84s infinite!important;}.hero-letter--s{animation:r8-s 7.5s ease-in-out .96s infinite!important;}.hero-letter--y{animation:r8-y 8.5s ease-in-out 1.08s infinite!important;}
@keyframes r8-j{0%{opacity:0;transform:translateY(72px) scaleX(1.12) scaleY(.8);}10%{opacity:1;transform:translateY(-10px) scaleX(.92) scaleY(1.1);}16%,100%{opacity:1;transform:translateY(0) rotate(0);}58%{transform:translateY(-8px) rotate(-2deg);}}
@keyframes r8-k{0%{opacity:0;transform:translateY(72px) scaleX(1.12) scaleY(.8);}10%{opacity:1;transform:translateY(-10px) scaleX(.92) scaleY(1.1);}16%,100%{opacity:1;transform:translateY(0) rotate(0);}54%{transform:translateY(8px) rotate(2deg);}}
@keyframes r8-s{0%{opacity:0;transform:translateY(72px) scaleX(1.12) scaleY(.8);}10%{opacity:1;transform:translateY(-10px) scaleX(.92) scaleY(1.1);}16%,100%{opacity:1;transform:translateY(0) rotate(0);}52%{transform:translateY(-8px) rotate(1.5deg);}}
@keyframes r8-y{0%{opacity:0;transform:translateY(72px) scaleX(1.12) scaleY(.8);}10%{opacity:1;transform:translateY(-10px) scaleX(.92) scaleY(1.1);}16%,100%{opacity:1;transform:translateY(0) rotate(0);}56%{transform:translateY(8px) rotate(-2deg);}}
.hero:after{transform:translateY(calc(var(--hero-parallax,0px) * -.12));}
.hero:before{transform:translateY(calc(var(--hero-parallax,0px) * .12));}
.page-letter{animation:r8-page-in 7.5s ease-in-out both!important;}
@keyframes r8-page-in{0%{opacity:0;transform:translateY(52px) scaleX(1.1) scaleY(.82);}10%{opacity:1;transform:translateY(-8px) scaleX(.94) scaleY(1.08);}16%,100%{opacity:1;transform:translateY(0) rotate(0);}55%{transform:translateY(-7px) rotate(1.5deg);}}

/* Two moving lines; only the permanent J/K/S/Y stickers are filled. */
.ticker__line{animation-duration:28s;}.ticker__line+div{animation-duration:34s;}

/* Rework the existing reveal to a small overshoot. */
.motion-ready .motion-card{transform:scale(.9);}
.motion-ready .motion-card.is-visible{animation:r8-card-pop .52s cubic-bezier(.34,1.56,.64,1) var(--motion-delay,0ms) both;transition:transform .25s ease;}
@keyframes r8-card-pop{0%{opacity:0;transform:scale(.9);}75%{opacity:1;transform:scale(1.04);}100%{opacity:1;transform:scale(1);}}
.motion-ready .motion-card.is-visible:hover{transform:translateY(-6px) rotate(2deg);}
.motion-ready .motion-bubble.is-visible{animation:r8-bubble-pop .48s cubic-bezier(.34,1.56,.64,1) var(--motion-delay,0ms) both,r8-bubble-breathe 6s ease-in-out .6s infinite;}
@keyframes r8-bubble-pop{0%{opacity:0;transform:scale(.94);}70%{opacity:1;transform:scale(1.03);}100%{opacity:1;transform:scale(1);}}
@keyframes r8-bubble-breathe{50%{scale:1.005;}}

.footer-brand>span{display:flex;gap:.02em;}.logo-letter--1{color:var(--fixed-accent1);translate:0 -3px;}.logo-letter--2{color:var(--fixed-accent3);translate:0 3px;}.logo-letter--3{color:var(--fixed-accent2);translate:0 -1px;}.logo-letter--4{color:var(--fixed-base);translate:0 4px;}
.footer-brand>span:hover .logo-letter{animation:r8-logo-hop .46s cubic-bezier(.34,1.56,.64,1) both;}.footer-brand>span:hover .logo-letter--2{animation-delay:.07s;}.footer-brand>span:hover .logo-letter--3{animation-delay:.14s;}.footer-brand>span:hover .logo-letter--4{animation-delay:.21s;}
@keyframes r8-logo-hop{50%{translate:0 -12px;}}

@media(max-width:760px){.alphabet-doodle:nth-child(n+4){display:none;}.r8-doodles{opacity:.86;}.alphabet-doodle__ink{--doodle-size:clamp(28px,9vw,42px);}.hero-alphabet-field span{font-size:120px;}.hero-letter{animation:r8-j 5.5s ease-in-out .72s infinite!important;}.hero-letter--k{animation:r8-k 6.5s ease-in-out .84s infinite!important;}.hero-letter--s{animation:r8-s 7.5s ease-in-out .96s infinite!important;}.hero-letter--y{animation:r8-y 8.5s ease-in-out 1.08s infinite!important;}.round-cta:after,.big-cta:after{width:18px;height:18px;font-size:12px;}.home-section,.content-block:nth-child(odd){background-size:150px 125px;}}
@media(prefers-reduced-motion:reduce){.r8-doodles,.hero-alphabet-field{display:none;}.hero-letter,.page-letter,.round-cta,.ticker__line,.motion-ready .motion-card.is-visible,.motion-ready .motion-bubble.is-visible,.logo-letter{animation:none!important;}.motion-ready .motion-card,.motion-ready .motion-bubble{opacity:1;transform:none;}}

/* manual fix after ROUND8: doodles live in the gutters, never over text; fonts swap in */
html{overflow-x:clip;}.r8-doodles{overflow:visible;}
@media(max-width:760px){.r8-doodles{display:none;}}
.home-section>.r8-doodles,.home-news>.r8-doodles,.content-block>.r8-doodles,.page-hero>.r8-doodles{position:absolute!important;inset:0;z-index:0;}
/* Round 9 — candy-paper stickers.  This layer deliberately follows every
   previous manual fix; it uses only CSS and the inline SVG assembled below. */
:root{--r9-cream:var(--c-base-2);--r9-blue:var(--c-base-3);--r9-pink:var(--c-base-4);--r9-yellow:var(--c-cloud-1);--r9-rose:var(--c-cloud-2);--r9-cloud:var(--c-cloud-3);--r9-shadow-yellow:var(--c-accent1-shadow);--r9-shadow-sky:var(--c-accent3-shadow);--r9-shadow-coral:var(--c-accent2-shadow);--r9-shadow-cream:var(--c-base-shadow);}

/* The original, quiet alphabet field remains behind the letters. */
.hero .r9-clouds{position:absolute;z-index:-1;inset:0;pointer-events:none;overflow:hidden;transform:translate3d(0,var(--r9-cloud-shift,0px),0);}
.r9-cloud{position:absolute;width:clamp(230px,33vw,510px);aspect-ratio:1.35;background:var(--r9-cloud-color);opacity:.76;filter:blur(60px);border-radius:48% 52% 61% 39%/43% 42% 58% 57%;animation:r9-cloud-drift 20s ease-in-out infinite alternate;}
.r9-cloud--yellow{top:-13%;left:-8%;--r9-cloud-color:var(--r9-yellow);}
.r9-cloud--rose{right:-7%;bottom:-14%;--r9-cloud-color:var(--r9-rose);animation-delay:-7s;}
.r9-cloud--blue{top:18%;left:39%;--r9-cloud-color:var(--r9-cloud);animation-delay:-13s;}
@keyframes r9-cloud-drift{to{transform:translate3d(34px,-20px,0) scale(1.06);}}

/* SVG lettering: white die-cut rim, coloured offset backing, clipped shine. */
.hero-letter,.page-letter,.entrance-letter{isolation:isolate;}
.hero-letter svg.r9-letter-svg,.page-letter svg.r9-letter-svg,.entrance-letter svg.r9-letter-svg{display:block;width:100%;height:100%;overflow:visible;}
.r9-letter-shadow{paint-order:stroke;stroke-width:8;stroke-linejoin:round;}
.r9-letter-main{paint-order:stroke;stroke:var(--fixed-white);stroke-width:7;stroke-linejoin:round;}
.r9-letter-shine{fill:var(--fixed-white);opacity:.4;}
.r9-face{pointer-events:none;}.r9-face .r9-face-plate{fill:var(--fixed-white-alpha-68);}.r9-face .r9-eye{fill:var(--fixed-main);transform-box:fill-box;transform-origin:center;animation:r9-blink 5.2s step-end infinite;}.r9-face .r9-eye--right{animation-delay:.06s;}.r9-face .r9-mouth{fill:none;stroke:var(--fixed-main);stroke-width:1.5;stroke-linecap:round;transition:d .2s ease;}.r9-face .r9-cheek{fill:var(--fixed-cheek);opacity:.65;}
.hero-letter:hover .r9-face .r9-mouth{d:path("M46 69 Q51 75 56 69");}
@keyframes r9-blink{0%,91%,100%{transform:scaleY(1);}94%,97%{transform:scaleY(.12);}}

/* Round 16 — match hero sticker proportions without changing either ticker
   line's reserved height.  SVG scaling also proportionally trims rim/shadow
   at the mobile type size. */
.ticker__letter--sticker{display:inline-block;width:.9em;height:.98em;margin:0 -.015em;vertical-align:-.14em;color:transparent;-webkit-text-stroke:0;line-height:1;}
.ticker__letter--sticker .r16-letter-svg{display:block;width:100%;height:100%;overflow:visible;}
.ticker__letter--sticker .r9-letter-shadow{stroke-width:8;}.ticker__letter--sticker .r9-letter-main{stroke-width:7;}
@media(max-width:760px){.ticker__letter--sticker{width:.86em;height:.92em;vertical-align:-.12em;}.ticker__letter--sticker .r9-letter-shadow{stroke-width:6;}.ticker__letter--sticker .r9-letter-main{stroke-width:5;}}

/* Round 17 — never expose a lower-marquee source glyph while the synchronous
   sticker pass at the start of script.js is preparing it. */
.sub-ticker .ticker__line:not(.r17-ready){visibility:hidden;}

/* Give cream content zones a barely-there change of flavour, while preserving
   navy news/ticker panels exactly as navy. */
.home-section:nth-of-type(odd){background-color:var(--r9-cream);border-radius:34px;}
.home-section:nth-of-type(even){background-color:var(--r9-blue);border-radius:34px;}
.page-content>.content-block:not(.speech-card){padding:28px;border-radius:30px;}
.page-content>.content-block:nth-of-type(odd):not(.speech-card){background-color:var(--r9-pink);}
.page-content>.content-block:nth-of-type(even){background-color:var(--r9-blue);}
.page-content>.content-block.speech-card{background-color:var(--r9-cream);}

/* Thick, irregular-looking card stickers and their sixteen-tooth SVG badges. */
.cards>.course-card,.cards>.voice-card,.cards>.event-card,.cards>.news-card,.sitemap-list a,.location-bubble{border:4px solid var(--c-white);border-radius:32px;box-shadow:8px 8px 0 var(--r9-shadow,var(--r9-shadow-yellow));overflow:visible;}
.cards>.course-card:nth-child(4n+1),.cards>.voice-card:nth-child(4n+1),.cards>.event-card:nth-child(4n+1),.cards>.news-card:nth-child(4n+1),.sitemap-list a:nth-child(4n+1),.location-bubble:nth-child(4n+1){--r9-shadow:var(--r9-shadow-yellow);}
.cards>.course-card:nth-child(4n+2),.cards>.voice-card:nth-child(4n+2),.cards>.event-card:nth-child(4n+2),.cards>.news-card:nth-child(4n+2),.sitemap-list a:nth-child(4n+2),.location-bubble:nth-child(4n+2){--r9-shadow:var(--r9-shadow-sky);}
.cards>.course-card:nth-child(4n+3),.cards>.voice-card:nth-child(4n+3),.cards>.event-card:nth-child(4n+3),.cards>.news-card:nth-child(4n+3),.sitemap-list a:nth-child(4n+3),.location-bubble:nth-child(4n+3){--r9-shadow:var(--r9-shadow-coral);}
.cards>.course-card:nth-child(4n),.cards>.voice-card:nth-child(4n),.cards>.event-card:nth-child(4n),.cards>.news-card:nth-child(4n),.sitemap-list a:nth-child(4n),.location-bubble:nth-child(4n){--r9-shadow:var(--r9-shadow-cream);}
.course-card:before,.voice-card:before,.event-card:before,.news-card:before,.course-card:after,.voice-card:after,.event-card:after,.news-card:after,.sitemap-list a:after,.location-bubble:after{display:none!important;}
.r9-badge{position:absolute;z-index:7;top:-16px;left:-15px;width:52px;height:52px;filter:drop-shadow(1px 2px 0 var(--c-main-alpha-16));transition:transform .3s ease;}
.cards>article:hover .r9-badge,.cards>div:hover .r9-badge,.sitemap-list a:hover .r9-badge,.location-bubble:hover .r9-badge{transform:rotate(16deg) scale(1.08);}
.r9-badge text{fill:var(--fixed-main);font:700 23px/1 Fredoka,Arial,sans-serif;text-anchor:middle;dominant-baseline:middle;}
.course-card .fee{position:relative;z-index:1;border:2px solid var(--c-white-alpha-70);background:repeating-linear-gradient(45deg,var(--c-white) 0 6px,var(--c-accent1) 6px 12px);color:var(--fixed-main);text-shadow:0 1px var(--fixed-white-alpha-80);box-shadow:2px 3px 0 var(--c-main-alpha-18);}
.course-card:nth-child(4n+2) .fee{background:repeating-linear-gradient(45deg,var(--c-white) 0 6px,var(--c-accent2) 6px 12px);}
.course-card:nth-child(4n+3) .fee{background:repeating-linear-gradient(45deg,var(--c-white) 0 6px,var(--c-accent3) 6px 12px);}
.course-card:nth-child(4n) .fee{background:repeating-linear-gradient(45deg,var(--c-white) 0 6px,var(--c-accent1) 6px 12px);}

/* A tag replaces the former marker swash and keeps a strong text colour. */
.motion-heading .marker-word:after,.motion-heading .title-accent:after{display:none!important;}
mark,.r9-title-tag{display:inline-block;position:relative;padding:.02em .24em .08em;border-radius:12px;background:var(--c-tag);color:var(--fixed-main);line-height:1.18;transform:rotate(-2deg);-webkit-box-decoration-break:clone;box-decoration-break:clone;}

/* Jelly buttons have a translucent top band and a dark lower lip. */
.header-cta,.round-cta,.big-cta,.lesson-bar a:first-child,.contact-form button{position:relative;isolation:isolate;overflow:hidden;border-bottom:4px solid var(--c-button-shadow);box-shadow:0 4px 0 var(--c-button-shadow);transition:transform .18s ease,filter .18s ease;}
.header-cta:before,.round-cta:before,.big-cta:before,.lesson-bar a:first-child:before,.contact-form button:before{content:"";position:absolute;z-index:-1;top:5%;right:10%;left:10%;height:34%;border-radius:999px;background:var(--c-white-alpha-30);pointer-events:none;}
.header-cta{border-bottom-color:var(--c-main-shadow);box-shadow:0 4px 0 var(--c-main-shadow);}.header-cta:before{z-index:0;}.header-cta>*{position:relative;z-index:1;}
.round-cta:hover,.big-cta:hover,.header-cta:hover,.lesson-bar a:first-child:hover,.contact-form button:hover{animation:r9-jelly .42s cubic-bezier(.34,1.56,.64,1) both;filter:saturate(1.06);}
@keyframes r9-jelly{0%{transform:scale(1);}38%{transform:scaleX(1.06) scaleY(.94);}72%{transform:scaleX(.98) scaleY(1.03);}100%{transform:scale(1);}}

/* Flags make the marquee and footer read as a small classroom celebration. */
.ticker{isolation:isolate;}.r9-garland{position:absolute;z-index:4;top:7px;left:0;width:100%;height:42px;overflow:visible;pointer-events:none;}.r9-garland__line{stroke:var(--c-white-alpha-74);stroke-width:1.5;}.r9-flag{transform-box:fill-box;transform-origin:top center;animation:r9-flag-sway 2.8s ease-in-out infinite alternate;}.r9-flag:nth-child(3n){animation-delay:-1.2s;}.r9-flag:nth-child(4n){animation-delay:-.55s;}@keyframes r9-flag-sway{to{transform:rotate(7deg) translateY(2px);}}
.footer{position:relative;}.footer>.r9-garland{top:19px;height:34px;}.footer-brand>span{-webkit-text-stroke:2px var(--fixed-white);paint-order:stroke fill;text-shadow:4px 5px 0 var(--fixed-logo-shadow);}
.footer-brand>span .logo-letter{-webkit-text-stroke:2px var(--fixed-white);paint-order:stroke fill;}

@media(max-width:760px){
  .r9-cloud--blue{display:none;}.r9-cloud{filter:blur(42px);animation-duration:20s;}
  .home-section{border-radius:24px;}.page-content>.content-block:not(.speech-card){padding:22px 18px;border-radius:24px;}
  .cards>.course-card,.cards>.voice-card,.cards>.event-card,.cards>.news-card,.sitemap-list a,.location-bubble{border-radius:26px;box-shadow:5px 5px 0 var(--r9-shadow);}
  .r9-badge{top:-13px;left:-12px;width:44px;height:44px;}.r9-badge text{font-size:21px;}
  .ticker .r9-garland{top:4px;height:30px;}.footer>.r9-garland{top:15px;height:28px;}
}
/* The lower-page letter is intentionally held in its reserved position.  Its
   former entrance transform was the only remaining source of measurable CLS;
   the marquee, flags, sparkles and top hero retain their motion. */
.page-letter{animation:none!important;}
@media(prefers-reduced-motion:reduce){.r9-cloud,.r9-face .r9-eye,.r9-flag{animation:none!important;}}

/* Round 11 — restore the home lettering's poster scale without changing the
   Round 6–9 manual fixes above. */
@media(min-width:761px){
  .hero{padding-inline:24px;}
  .letter-stage{position:relative;width:min(1120px,calc(100vw - 48px));height:clamp(300px,34vw,450px);min-height:0;gap:0;}
  .hero-letter{height:clamp(300px,34vw,450px);font-size:clamp(300px,34vw,450px);position:relative;z-index:1;}
}

/* Do not hide the main word while the playful squash settles.  The first
   composited frame is already opaque, so loading never leaves a blank hero. */
.hero-letter{animation:r11-j 5.5s ease-in-out 0s infinite!important;}
.hero-letter--k{animation:r11-k 6.5s ease-in-out .06s infinite!important;}
.hero-letter--s{animation:r11-s 7.5s ease-in-out .10s infinite!important;}
.hero-letter--y{animation:r11-y 8.5s ease-in-out .14s infinite!important;}
@keyframes r11-j{0%{opacity:1;transform:translateY(24px) scaleX(1.06) scaleY(.94);}8%{transform:translateY(-9px) scaleX(.94) scaleY(1.07);}14%,100%{opacity:1;transform:translateY(0) rotate(0);}58%{transform:translateY(-8px) rotate(-2deg);}}
@keyframes r11-k{0%{opacity:1;transform:translateY(24px) scaleX(1.06) scaleY(.94);}8%{transform:translateY(-9px) scaleX(.94) scaleY(1.07);}14%,100%{opacity:1;transform:translateY(0) rotate(0);}54%{transform:translateY(8px) rotate(2deg);}}
@keyframes r11-s{0%{opacity:1;transform:translateY(24px) scaleX(1.06) scaleY(.94);}8%{transform:translateY(-9px) scaleX(.94) scaleY(1.07);}14%,100%{opacity:1;transform:translateY(0) rotate(0);}52%{transform:translateY(-8px) rotate(1.5deg);}}
@keyframes r11-y{0%{opacity:1;transform:translateY(24px) scaleX(1.06) scaleY(.94);}8%{transform:translateY(-9px) scaleX(.94) scaleY(1.07);}14%,100%{opacity:1;transform:translateY(0) rotate(0);}56%{transform:translateY(8px) rotate(-2deg);}}
@media(max-width:760px){
  .letter-stage{position:relative;overflow:visible;}
  .hero-letter{animation:r11-j 5.5s ease-in-out 0s infinite!important;}
  .hero-letter--k{animation:r11-k 6.5s ease-in-out .06s infinite!important;}
  .hero-letter--s{animation:r11-s 7.5s ease-in-out .10s infinite!important;}
  .hero-letter--y{animation:r11-y 8.5s ease-in-out .14s infinite!important;}
}

@media(prefers-reduced-motion:reduce){.hero-letter{opacity:1!important;transform:none!important;}}

/* Intro B — four large building blocks, with one small landing shadow each. */
.intro-b-pending .hero-letter,.intro-b-active .hero-letter{position:relative;animation:none!important;}
.intro-b-pending .hero-letter{opacity:0;}
.intro-b-pending .hero-copy,.intro-b-pending .scroll-cue,.intro-b-pending .hero-alphabet-field,.intro-b-active .hero-copy,.intro-b-active .scroll-cue,.intro-b-active .hero-alphabet-field{visibility:hidden;opacity:0!important;animation:none!important;}
.intro-b-active .hero-letter{opacity:1;animation:intro-b-drop .75s both!important;animation-delay:var(--intro-b-delay)!important;}
.intro-b-active .r9-face{opacity:0;}
.intro-b-landed .r9-face{opacity:1;transition:opacity .01s linear;}
.intro-b-landed.intro-b-wink .r9-eye--right{animation:intro-b-wink .2s ease-in-out 1!important;}
.intro-b-shadow{position:absolute;z-index:-1;left:19%;right:19%;bottom:4%;height:8%;border-radius:50%;background:var(--c-main-alpha-20);opacity:0;transform:scaleX(.35);pointer-events:none;}
.intro-b-landed .intro-b-shadow{animation:intro-b-shadow .34s ease-out both;}
@keyframes intro-b-drop{0%{transform:translateY(-115vh) rotate(var(--intro-b-tilt,-6deg)) scale(1);}66.666%{transform:translateY(0) rotate(0) scale(1);animation-timing-function:cubic-bezier(.18,1.45,.45,1);}82%{transform:translateY(0) rotate(0) scaleX(1.12) scaleY(.85);}100%{transform:translateY(0) rotate(0) scale(1);}}
.hero-letter--k{--intro-b-tilt:6deg;}.hero-letter--s{--intro-b-tilt:-5deg;}.hero-letter--y{--intro-b-tilt:5deg;}
@keyframes intro-b-shadow{0%{opacity:0;transform:scaleX(.3);}35%{opacity:.34;transform:scaleX(1.12);}100%{opacity:0;transform:scaleX(1.45);}}
@keyframes intro-b-wink{0%,100%{transform:scaleY(1);}50%{transform:scaleY(.08);}}
.intro-b-show-content .hero-copy,.intro-b-show-content .scroll-cue{visibility:visible;animation:intro-b-content-in .42s ease-out both!important;}
@keyframes intro-b-content-in{from{opacity:0;transform:translate(-50%,12px);}to{opacity:1;transform:translate(-50%,0);}}
.intro-b-show-content .scroll-cue{animation-name:intro-b-scroll-in!important;}
@keyframes intro-b-scroll-in{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
.intro-b-show-content .hero-alphabet-field{visibility:visible;animation:intro-b-field-in .42s ease-out both!important;}
@keyframes intro-b-field-in{from{opacity:0;}to{opacity:1;}}
.intro-b-complete .hero-letter{opacity:1;animation:hero-drift-j 7.4s ease-in-out infinite!important;}.intro-b-complete .hero-letter--k{animation-name:hero-drift-k!important;}.intro-b-complete .hero-letter--s{animation-name:hero-drift-s!important;}.intro-b-complete .hero-letter--y{animation-name:hero-drift-y!important;}
@media(prefers-reduced-motion:reduce){.intro-b-shadow{display:none;}}

/* Round 15 — photographs are ordinary, uncropped editorial rectangles. */
.content-photo{display:block;width:min(100%,880px);margin:32px auto 64px;padding:0;}
.content-photo img{display:block;width:100%;height:auto;max-width:100%;object-fit:contain;border-radius:16px;}
.page-content>.content-photo:first-child{margin-top:0;}
.bubble+.content-photo{margin-top:38px;}
.card-photo{margin:24px 0 0;}
.card-photo img{display:block;width:100%;height:auto;border-radius:16px;}
.photo-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0 0 64px;}
.photo-gallery figure{margin:0;}
.photo-gallery img{display:block;width:100%;height:auto;border-radius:16px;}
.photo-gallery--results{grid-template-columns:repeat(2,minmax(0,1fr));}
@media(max-width:760px){.content-photo{margin:28px auto 52px;}.bubble+.content-photo{margin-top:30px;}}

/* Round 19 — keep the mobile hero's four die-cut blocks in one poster row,
   while retaining the same sticker SVGs and Intro B per-letter timings. */
.hero-copy{bottom:48px;}
.hero-copy .hero-school{margin:0 0 2px;font:900 clamp(18px,1.6vw,24px)/1.4 "Zen Maru Gothic",sans-serif;letter-spacing:.08em;color:var(--fixed-main);white-space:nowrap;}
@media(max-width:760px){
  .letter-stage{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:28vw;align-items:stretch;justify-items:stretch;width:89vw;height:28vw;gap:0;}
  .hero-letter{width:auto;height:28vw;min-height:0;font-size:28vw;}
  .hero-letter svg{width:100%!important;height:100%!important;max-width:100%;}
  .hero-copy{bottom:160px;}
  .hero-copy .hero-school{font-size:16px;}
}

/* Round 20 — phone speech balloons need a real text-safe interior, not an
   ellipse whose curved corners cut into otherwise rectangular copy blocks. */
.location-bubble .speech-tail{display:none;}
@media(max-width:760px){
  .bubble,.speech-card,.location-bubble{
    border-radius:28px;
    padding:28px 24px;
  }
  .location-bubble .speech-tail{display:block;left:calc(22% - 10px);bottom:-54px;}
}
/* r20fix: SP hero: copy is bottom-anchored, so lift the letters and lower the copy to clear the drifting letters */
@media(max-width:760px){.hero-school{margin-top:0;}.letter-stage{margin-top:50px;}.hero-copy{bottom:78px;}}
/* r21: caption under the subpage sticker letter so A / F read as words */
.page-hero{position:relative;}
.page-letter-note{position:absolute;left:clamp(20px,6vw,80px);bottom:clamp(14px,3vh,34px);margin:0;display:inline-flex;align-items:baseline;gap:.4em;padding:.45em 1em .5em;border:2px solid var(--navy);border-radius:999px;background:var(--c-base);color:var(--fixed-main);font:700 clamp(14px,1.3vw,18px)/1 "Zen Maru Gothic",sans-serif;letter-spacing:.06em;box-shadow:3px 3px 0 var(--navy);transform:rotate(-2deg);}
.page-letter-note b{font:800 1.35em/1 Fredoka,sans-serif;color:var(--page-color,var(--fixed-accent1));-webkit-text-stroke:1px var(--fixed-main);}
.page-letter-note small{font-size:.8em;font-weight:500;opacity:.85;}
@media(max-width:760px){.page-letter-note{position:static;order:3;margin:2px auto 14px;transform:rotate(-1.5deg);}}

/* Round 23 — an uncropped, progressively loaded gallery. */
.gallery-shell{width:var(--wrap);margin:0 auto;padding:clamp(42px,7vw,86px) 0 110px;}
.gallery-tabs{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin:0 0 28px;}
.gallery-tabs button{min-height:42px;padding:8px 17px;border:2px solid var(--navy);border-radius:999px;background:var(--cream);color:var(--fixed-main);font:800 14px/1 "Zen Maru Gothic",sans-serif;cursor:pointer;}
.gallery-tabs button[aria-selected="true"]{background:var(--navy);color:var(--fixed-base);}
.gallery-grid{column-count:4;column-gap:10px;}
.gallery-tile{display:block;break-inside:avoid;width:100%;margin:0 0 10px;padding:0;border:0;border-radius:12px;background:var(--c-photo-placeholder);overflow:hidden;cursor:zoom-in;line-height:0;}
.gallery-tile img{display:block;width:100%;height:auto;border-radius:12px;transition:transform .25s ease;}
.gallery-tile:hover img,.gallery-tile:focus-visible img{transform:scale(1.018);}
.gallery-tile:focus-visible,.gallery-tabs button:focus-visible,.gallery-lightbox button:focus-visible{outline:3px solid var(--coral);outline-offset:3px;}
.gallery-lightbox{position:fixed;z-index:100;inset:0;display:none;align-items:center;justify-content:center;padding:24px;background:var(--c-overlay-alpha-91);color:var(--fixed-white);}
.gallery-lightbox.is-open{display:flex;}.gallery-modal-open{overflow:hidden;}
.gallery-lightbox figure{display:grid;max-width:min(92vw,1040px);max-height:88vh;margin:0;gap:10px;place-items:center;}
.gallery-lightbox figure img{display:block;max-width:100%;max-height:calc(88vh - 35px);width:auto;height:auto;border-radius:12px;object-fit:contain;}
.gallery-lightbox figcaption{font:700 14px/1 Fredoka,sans-serif;letter-spacing:.08em;}
.gallery-lightbox button{position:absolute;border:0;background:transparent;color:var(--fixed-white);cursor:pointer;}.gallery-close{top:17px;right:20px;font:400 42px/1 Arial,sans-serif;}.gallery-prev,.gallery-next{top:50%;padding:12px;font:400 clamp(52px,8vw,84px)/.7 Arial,sans-serif;transform:translateY(-50%);}.gallery-prev{left:16px;}.gallery-next{right:16px;}
@media(max-width:760px){.gallery-shell{width:min(100% - 28px,560px);padding-top:34px;}.gallery-grid{column-count:2;}.gallery-tabs{gap:7px;margin-bottom:20px;}.gallery-tabs button{min-height:38px;padding:7px 11px;font-size:12px;}.gallery-lightbox{padding:16px;}.gallery-lightbox figure{max-width:100%;max-height:86vh;}.gallery-lightbox figure img{max-height:calc(86vh - 32px);}.gallery-prev,.gallery-next{padding:7px;font-size:48px;}.gallery-prev{left:2px;}.gallery-next{right:2px;}.gallery-close{top:12px;right:12px;font-size:36px;}}

/* Round 24 — wide editorial reading area for every lower-level page. */
:root{--subpage-wrap:min(1200px,calc(100% - clamp(40px,10vw,128px)));}
.page-content{width:var(--subpage-wrap);}
.page-content>.content-block:not(.speech-card){padding:clamp(24px,3vw,40px);}
.speech-card{width:min(860px,100%);margin-inline:auto;padding:clamp(34px,4vw,56px);}
.speech-card p{font-size:17px;line-height:2;}
.content-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:center;margin:0 0 64px;}
.content-pair .content-block{margin:0;}
.content-pair .content-photo{width:100%;margin:0;}
.content-pair .content-photo img{height:auto;}

/* A photo band is deliberately edge-to-edge; its source files are 2,098–2,400px
   wide, so the 1,280px desktop presentation remains below the 2× source limit. */
.page-content>.content-photo--band,.page-content>.photo-band{position:relative;left:50%;width:100vw;height:52vh;min-height:340px;max-height:640px;margin:clamp(52px,7vw,90px) 0;transform:translateX(-50%);overflow:hidden;border-radius:0;}
.page-content>.content-photo--band img,.page-content>.photo-band img{width:100%;height:100%;max-width:none;object-fit:cover;border-radius:0;}
.page-content>.content-photo--band:first-child{margin-top:0;}

.cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.2vw,30px);align-items:stretch;}
.cards>.course-card,.cards>.voice-card,.cards>.event-card,.cards>.news-card{display:flex;flex-direction:column;height:100%;min-width:0;}
.card-photo{order:-1;aspect-ratio:4/3;margin:0 0 22px;overflow:hidden;border-radius:16px;background:var(--c-base-alpha-65);}
.card-photo img{width:100%;height:100%;object-fit:cover;border-radius:inherit;}
.photo-gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.2vw,30px);margin-bottom:64px;}
.photo-gallery figure{aspect-ratio:4/3;overflow:hidden;border-radius:16px;background:var(--c-base-alpha-65);}
.photo-gallery img{width:100%;height:100%;object-fit:cover;border-radius:inherit;}
.photo-gallery img.photo-contain{object-fit:contain;}
.gallery-shell{width:var(--subpage-wrap);}
.gallery-grid{column-count:5;}
@media(max-width:1000px){.cards,.photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr));}.gallery-grid{column-count:3;}}
@media(max-width:760px){
  .page-content{width:calc(100% - 40px);}
  .page-content>.content-block:not(.speech-card){padding:22px 18px;}
  .speech-card{padding:28px 24px;}
  .speech-card p{font-size:17px;line-height:2;}
  .content-pair{grid-template-columns:1fr;gap:28px;margin-bottom:52px;}
  .page-content>.content-photo--band,.page-content>.photo-band{height:52svh;min-height:300px;margin:44px 0;}
  .cards,.photo-gallery{grid-template-columns:1fr;gap:20px;}
  .gallery-shell{width:calc(100% - 40px);}
  .gallery-grid{column-count:2;}
}

/* TASK04: decorative palettes; text and stickers remain fixed. */
html[data-palette="sakura"]{
  --c-main:#51313f;
  --c-accent1:#f7b8c8;
  --c-accent2:#f28fae;
  --c-accent3:#b9dca5;
  --c-base:#fff6f8;
  --c-base-2:#ffedf3;
  --c-base-3:#f0f8e9;
  --c-base-4:#ffe4ee;
  --c-speech:#ffeaf1;
  --c-input:#fffafd;
  --c-cloud-1:#f9ccdb;
  --c-cloud-2:#f6b9cf;
  --c-cloud-3:#d8ebc9;
  --c-tag:#f8bfd0;
  --c-badge-2:#d8ebc9;
  --c-photo-placeholder:#f1e5ed;
  --c-flag-accent2:#f28fae;
  --c-accent1-shadow:#d29caa;
  --c-accent2-shadow:#ce7a94;
  --c-accent3-shadow:#9dbb8c;
  --c-base-shadow:#d9c9cf;
  --c-button-shadow:#d29caa;
  --c-main-shadow:#452a36;
  --c-main-alpha-16:rgba(81,49,63,.16);
  --c-base-alpha-36:rgba(255,246,248,.36);
  --c-base-alpha-25:rgba(255,246,248,.25);
  --c-base-alpha-30:rgba(255,246,248,.3);
  --c-accent3-alpha-9:rgba(185,220,165,.09);
  --c-accent2-alpha-8:rgba(242,143,174,.08);
  --c-base-alpha-80:rgba(255,246,248,.8);
  --c-accent1-alpha-72:rgba(247,184,200,.72);
  --c-main-alpha-18:rgba(81,49,63,.18);
  --c-main-alpha-20:rgba(81,49,63,.2);
  --c-base-alpha-65:rgba(255,246,248,.65);
  --r8-tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='150' viewBox='0 0 180 150'%3E%3Cg fill='%2351313f' fill-opacity='.07' font-family='Fredoka,Arial,sans-serif' font-weight='700'%3E%3Ctext x='12' y='44' font-size='34' transform='rotate(-12 12 44)'%3EA%3C/text%3E%3Ctext x='114' y='36' font-size='26' transform='rotate(9 114 36)'%3EM%3C/text%3E%3Ctext x='58' y='111' font-size='40' transform='rotate(-7 58 111)'%3EY%3C/text%3E%3Ctext x='145' y='135' font-size='20'%3EC%3C/text%3E%3C/g%3E%3C/svg%3E");
}
html[data-palette="summer"]{
  --c-main:#183b60;
  --c-accent1:#f6d15b;
  --c-accent2:#edbda0;
  --c-accent3:#82d4ee;
  --c-base:#fffaee;
  --c-base-2:#fff1d9;
  --c-base-3:#e8f8ff;
  --c-base-4:#e1f3fa;
  --c-speech:#fff3d6;
  --c-input:#fffdf5;
  --c-cloud-1:#ffe8a0;
  --c-cloud-2:#bce7f7;
  --c-cloud-3:#c8f1ff;
  --c-tag:#ffe29a;
  --c-badge-2:#bce7f7;
  --c-photo-placeholder:#e2eef6;
  --c-flag-accent2:#edbda0;
  --c-accent1-shadow:#d1b24d;
  --c-accent2-shadow:#c9a188;
  --c-accent3-shadow:#6eb4ca;
  --c-base-shadow:#d9cdb8;
  --c-button-shadow:#d1b24d;
  --c-main-shadow:#143252;
  --c-main-alpha-16:rgba(24,59,96,.16);
  --c-base-alpha-36:rgba(255,250,238,.36);
  --c-base-alpha-25:rgba(255,250,238,.25);
  --c-base-alpha-30:rgba(255,250,238,.3);
  --c-accent3-alpha-9:rgba(130,212,238,.09);
  --c-accent2-alpha-8:rgba(237,189,160,.08);
  --c-base-alpha-80:rgba(255,250,238,.8);
  --c-accent1-alpha-72:rgba(246,209,91,.72);
  --c-main-alpha-18:rgba(24,59,96,.18);
  --c-main-alpha-20:rgba(24,59,96,.2);
  --c-base-alpha-65:rgba(255,250,238,.65);
  --r8-tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='150' viewBox='0 0 180 150'%3E%3Cg fill='%23183b60' fill-opacity='.07' font-family='Fredoka,Arial,sans-serif' font-weight='700'%3E%3Ctext x='12' y='44' font-size='34' transform='rotate(-12 12 44)'%3EA%3C/text%3E%3Ctext x='114' y='36' font-size='26' transform='rotate(9 114 36)'%3EM%3C/text%3E%3Ctext x='58' y='111' font-size='40' transform='rotate(-7 58 111)'%3EY%3C/text%3E%3Ctext x='145' y='135' font-size='20'%3EC%3C/text%3E%3C/g%3E%3C/svg%3E");
}
html[data-palette="autumn"]{
  --c-main:#4b3026;
  --c-accent1:#eac16c;
  --c-accent2:#eea48b;
  --c-accent3:#c6d3a5;
  --c-base:#fff7eb;
  --c-base-2:#fff0d7;
  --c-base-3:#f5eddb;
  --c-base-4:#ffebe1;
  --c-speech:#fff0da;
  --c-input:#fffaf3;
  --c-cloud-1:#f3d49a;
  --c-cloud-2:#f4c1ae;
  --c-cloud-3:#e0e6c6;
  --c-tag:#f1cf91;
  --c-badge-2:#e0e6c6;
  --c-photo-placeholder:#eee5d9;
  --c-flag-accent2:#eea48b;
  --c-accent1-shadow:#c7a45c;
  --c-accent2-shadow:#ca8b76;
  --c-accent3-shadow:#a8b38c;
  --c-base-shadow:#d9ccb7;
  --c-button-shadow:#c7a45c;
  --c-main-shadow:#402920;
  --c-main-alpha-16:rgba(75,48,38,.16);
  --c-base-alpha-36:rgba(255,247,235,.36);
  --c-base-alpha-25:rgba(255,247,235,.25);
  --c-base-alpha-30:rgba(255,247,235,.3);
  --c-accent3-alpha-9:rgba(198,211,165,.09);
  --c-accent2-alpha-8:rgba(238,164,139,.08);
  --c-base-alpha-80:rgba(255,247,235,.8);
  --c-accent1-alpha-72:rgba(234,193,108,.72);
  --c-main-alpha-18:rgba(75,48,38,.18);
  --c-main-alpha-20:rgba(75,48,38,.2);
  --c-base-alpha-65:rgba(255,247,235,.65);
  --r8-tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='150' viewBox='0 0 180 150'%3E%3Cg fill='%234b3026' fill-opacity='.07' font-family='Fredoka,Arial,sans-serif' font-weight='700'%3E%3Ctext x='12' y='44' font-size='34' transform='rotate(-12 12 44)'%3EA%3C/text%3E%3Ctext x='114' y='36' font-size='26' transform='rotate(9 114 36)'%3EM%3C/text%3E%3Ctext x='58' y='111' font-size='40' transform='rotate(-7 58 111)'%3EY%3C/text%3E%3Ctext x='145' y='135' font-size='20'%3EC%3C/text%3E%3C/g%3E%3C/svg%3E");
}
html[data-palette="winter"]{
  --c-main:#253654;
  --c-accent1:#dce5f0;
  --c-accent2:#e5aab7;
  --c-accent3:#b8d6e7;
  --c-base:#f8fbff;
  --c-base-2:#edf2f8;
  --c-base-3:#eaf5fc;
  --c-base-4:#f7edf1;
  --c-speech:#f0f4fa;
  --c-input:#ffffff;
  --c-cloud-1:#e3eaf3;
  --c-cloud-2:#f1d7df;
  --c-cloud-3:#d0e5f1;
  --c-tag:#dce5f0;
  --c-badge-2:#d0e5f1;
  --c-photo-placeholder:#e6ecf2;
  --c-flag-accent2:#b34358;
  --c-accent1-shadow:#bbc3cc;
  --c-accent2-shadow:#c3909c;
  --c-accent3-shadow:#9cb6c4;
  --c-base-shadow:#c9ced3;
  --c-button-shadow:#bbc3cc;
  --c-main-shadow:#1f2e47;
  --c-main-alpha-16:rgba(37,54,84,.16);
  --c-base-alpha-36:rgba(248,251,255,.36);
  --c-base-alpha-25:rgba(248,251,255,.25);
  --c-base-alpha-30:rgba(248,251,255,.3);
  --c-accent3-alpha-9:rgba(184,214,231,.09);
  --c-accent2-alpha-8:rgba(229,170,183,.08);
  --c-base-alpha-80:rgba(248,251,255,.8);
  --c-accent1-alpha-72:rgba(220,229,240,.72);
  --c-main-alpha-18:rgba(37,54,84,.18);
  --c-main-alpha-20:rgba(37,54,84,.2);
  --c-base-alpha-65:rgba(248,251,255,.65);
  --r8-tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='150' viewBox='0 0 180 150'%3E%3Cg fill='%23253654' fill-opacity='.07' font-family='Fredoka,Arial,sans-serif' font-weight='700'%3E%3Ctext x='12' y='44' font-size='34' transform='rotate(-12 12 44)'%3EA%3C/text%3E%3Ctext x='114' y='36' font-size='26' transform='rotate(9 114 36)'%3EM%3C/text%3E%3Ctext x='58' y='111' font-size='40' transform='rotate(-7 58 111)'%3EY%3C/text%3E%3Ctext x='145' y='135' font-size='20'%3EC%3C/text%3E%3C/g%3E%3C/svg%3E");
}
html[data-palette]:not([data-palette="standard"]) .page-heading p{background-color:var(--c-main);}/* 10/21 trial CTA: clearer — yellow pill, navy text, roomy, highlight kept behind the text */
.site-nav .header-cta,.header-cta{min-height:52px;padding:10px 10px 10px 24px;gap:14px;background:var(--yellow);color:var(--fixed-main);font-size:16px;font-weight:900;letter-spacing:.04em;white-space:nowrap;border-bottom-color:var(--c-button-shadow);box-shadow:0 4px 0 var(--c-button-shadow);}
.header-cta:before{z-index:-1;top:6%;height:30%;opacity:.7}
.header-cta b{width:32px;height:32px;background:var(--navy);color:var(--fixed-base);}
.header-cta b:after{font-size:17px;color:var(--fixed-base);}
@keyframes cta-nudge{0%,86%,100%{transform:translateY(0)}90%{transform:translateY(-4px)}94%{transform:translateY(0)}97%{transform:translateY(-2px)}}
.header-cta{animation:cta-nudge 5s ease-in-out infinite}
.header-cta:hover{animation:r9-jelly .42s cubic-bezier(.34,1.56,.64,1) both}
@media(prefers-reduced-motion:reduce){.header-cta{animation:none}}
.lesson-bar{height:66px;grid-template-columns:1.5fr 1fr 1fr;align-items:center}
.lesson-bar a:first-child{margin:7px 8px;height:48px;border-radius:999px;font-size:15px;letter-spacing:.04em;display:flex;gap:8px;justify-content:center;align-items:center}
.lesson-bar a:first-child:after{content:"→";display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--navy);color:var(--fixed-base);font:700 13px/1 Fredoka,sans-serif}
.lesson-bar a{font-size:13px;height:100%}
@media(max-width:760px){body{padding-bottom:66px}}

/* CMS: トップの新着（cms-article-card を従来の行デザインに合わせる）11/6 */
.news-list .cms-article-card{display:grid;grid-template-columns:118px 1fr auto;gap:18px;align-items:center;padding:20px 0;border-bottom:1px solid var(--c-base-alpha-36);}
.news-list .cms-article-card h2{margin:0;font-size:inherit;line-height:inherit;font-weight:700;}
.news-list .cms-article-card::after{content:"↗";display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--c-base-alpha-80);border-radius:50%;color:var(--fixed-accent1);font:700 15px/1 Fredoka,sans-serif;}
.news-list .cms-article-card img{display:none;}
.news-list .cms-empty{padding:20px 0;margin:0;}
@media (max-width:640px){.news-list .cms-article-card{grid-template-columns:1fr auto;gap:4px 12px;}.news-list .cms-article-card h2{grid-column:1/-1;grid-row:2;}.news-list .cms-article-card::after{width:27px;height:27px;grid-column:2;grid-row:1;}}

/* 11/9 contact submit: keep arrow inline and text centered */
.contact-form button{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:12px 24px;}
.contact-form button:after{margin-top:0;flex:none;}
.contact-form button:hover{animation:none;transform:translateY(-2px);}

/* 11/10 教室紹介ムービー(制作会社の納品タグ) */
.home-movie{width:var(--wrap);margin:auto;padding:clamp(8px,2vw,24px) 0 clamp(48px,7vw,88px);text-align:center;}
.home-movie .section-title{margin-bottom:clamp(22px,3vw,36px);}
.home-movie__frame{max-width:960px;margin:auto;aspect-ratio:16/9;border:2px solid var(--navy);border-radius:28px;overflow:hidden;background:var(--navy);box-shadow:8px 8px 0 var(--fixed-accent1);}
.home-movie__frame video{display:block;width:100%;height:100%;object-fit:cover;}
@media (max-width:760px){.home-movie{width:calc(100% - 28px);padding:8px 0 40px;}.home-movie__frame{border-radius:18px;box-shadow:5px 5px 0 var(--fixed-accent1);}}
