/*
Theme Name: 太陽館
Description: 太陽館のHTMLデザインを引き継ぐWordPressテーマ。
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: taiyokan
*/
:root{--gold:#c6a329;--cream:#f0d38b;--ink:#1d0505;--serif:'Noto Serif JP','Yu Mincho',serif;--sans:'Noto Sans JP','Hiragino Kaku Gothic ProN',sans-serif;--button:radial-gradient(ellipse at center,#972b21 36%,#641c16 68%,#310e0b 100%)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:132px}body{margin:0;background:#fff;color:#fff;font-family:var(--sans);font-size:16px;line-height:1.7}a{color:inherit;text-decoration:none;cursor:pointer}a[aria-disabled=true]{cursor:default}a:focus-visible{outline:3px solid #fff0a5;outline-offset:5px}p,h1,h2,h3,dl,dd,ul{margin:0}img{display:block}h1,h2,h3{font-family:var(--serif);font-weight:600}.skip-link{position:fixed;left:20px;top:-100px;z-index:100;background:var(--ink);padding:12px}.skip-link:focus{top:10px}.turn-right{transform:rotate(-90deg)}
.site-header{height:108px;position:fixed;top:0;left:0;right:0;z-index:20;background:rgba(29,5,5,.9);border-bottom:2px solid var(--gold);box-shadow:0 8px 4px #0004}.header-inner{max-width:1008px;margin:auto;height:100%;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;flex-direction:column;gap:12px}.eyebrow{font:600 14px/1.1 var(--serif);letter-spacing:4.2px;background:#98271c;padding:4px 20px;width:max-content}.brand-lockup{display:flex;align-items:center;gap:16px;font:600 32px/1 var(--serif);letter-spacing:9.6px;text-shadow:0 2px 4px #000}.brand-lockup strong{font-size:40px;color:var(--cream);letter-spacing:12px;font-weight:600}.brand-divider{width:2px;height:38px;position:relative}.brand-divider img{position:absolute;top:18px;left:-18px;transform:rotate(90deg)}.contact-button{display:flex;align-items:center;gap:8px;border:1px solid var(--cream);padding:12px 20px;background:#3d0500;color:var(--cream);font:600 16px/1.4 var(--serif);letter-spacing:1.28px;min-height:46px}
.hero{height:908px;overflow:hidden;position:relative;background:#160c14}.hero:before{content:'';position:absolute;inset:0;background:linear-gradient(#0008,#0008),url('assets/imgImageContent2.png') center top / 1782px 1003px no-repeat}.hero-inner{position:relative;width:1004px;margin:auto;padding-top:168px}.hero-content{display:flex;justify-content:center;align-items:flex-start}.hero h1{position:relative;z-index:2;width:478px;flex-shrink:0;margin-right:-88px;padding:58px 4px 4px;filter:drop-shadow(0 0 14px #000);line-height:1}.hero-line{display:flex;align-items:baseline;white-space:nowrap;position:relative}.hero-line small{font-size:.8em}.hero-line.first{font-size:57px;gap:15px;margin-bottom:40px}.hero-line.first em{font-style:normal;color:#e4d0ed;background:#b09b00;padding:10px 5px 14px;margin:-10px -5px -14px;text-shadow:0 3px 4px #000}.hero-line.second{font-size:67px;margin-bottom:43px}.hero-line.second strong{font-size:74px}.hero-line.third{font-size:78px;margin-bottom:38px;gap:8px}.hero-line strong{position:relative;font-weight:600;color:#f5e9c5;text-shadow:0 3px 4px #000}.hero-line strong img{position:absolute;bottom:-5px;left:0;z-index:-1}.hero-line.last{font-size:110px;letter-spacing:-3px;text-shadow:0 3px 18px #000,0 0 7px #ffffff80}.hero-portrait {
    width: 515px;
    height: auto;
    aspect-ratio: 515 / 584;
    object-fit: fill;
    object-position: center bottom;
    align-self: flex-start;
    position: relative;
}.section-nav{display:flex;justify-content:center;gap:23px;font-family:var(--serif)}.hero .section-nav{position:relative;margin-top:-45px;z-index:3}.section-nav a{display:flex;flex-direction:column;align-items:center;gap:12px}.section-nav span{display:flex;align-items:center;justify-content:center;height:66px;padding:10px 28px;border:2px solid var(--gold);background:var(--button);color:var(--cream);font-size:32px;font-weight:600;letter-spacing:1.28px;white-space:nowrap;text-shadow:0 4px 8px #0004}
.content-backdrop{position:absolute;top:906px;left:0;right:0;height:5945px;overflow:clip;pointer-events:none;z-index:-1}.cosmic-gold{position:sticky;top:-393px;height:1793px;background:url('assets/imgImageContent01.png') center / 1006px 1793px no-repeat;transform:rotate(90deg);width:1006px;margin:0 auto}.cosmic-overlay{position:sticky;top:0;margin-top:-1793px;height:1006px;background:url('assets/imgImageContent02.png') center bottom / 1792px 1006px no-repeat;mix-blend-mode:plus-lighter;opacity:.35}
main{position:relative;width:min(1000px,calc(100% - 40px));margin:76px auto 0;border:4px solid var(--gold);background:radial-gradient(ellipse 118px 1097px at center,#972b21 35%,#641c16 67.5%,#4b1510 83.75%,#310e0b 100%);box-shadow:0 8px 36px #000c}main{background:#92291f}main>section{padding:80px 56px}.intro{display:flex;flex-direction:column;align-items:center}.stars{display:flex;gap:30px;margin-bottom:56px}.diamond{display:block;width:13px;height:13px;border:1px solid var(--gold);transform:rotate(45deg);position:relative;flex-shrink:0}.diamond:after{content:'';position:absolute;inset:3px;border:1px solid var(--gold)}.stars .diamond{width:10px;height:10px}.intro h2{text-align:center;font-size:44px;letter-spacing:3.52px;line-height:1.65;font-weight:600}.intro h2 small{font-size:40px}.intro h2 strong{color:#ffc943;font-size:48px;font-weight:600}.intro-description{text-align:center;margin-top:34px;font-size:16px;letter-spacing:.64px;line-height:27.2px}.services{display:grid;grid-template-columns:1fr 1fr;gap:21px;width:100%;margin-top:68px}.service-card{height:406px;border:2.75px solid var(--gold);position:relative;background:#301005;box-shadow:0 4px 4px #0004;min-width:0;scroll-margin-top:145px}.service-media{position:absolute;inset:0 0 auto;height:286px;overflow:hidden;mask:url('assets/imgImageContent3.svg') center top / 100% 100% no-repeat}/* Keep the original two-panel image proportional; crop each half inside its card. */
.service-media img {
    position: absolute;
    /* Source artwork has white padding above and below; keep that outside the crop. */
    width: max(208.2%, 924px);
    height: auto;
    max-width: none;
    left: 50%;
    top: 0;
    transform: translate(-25%, -30.5%);
}
.personal .service-media img {
    transform: translate(-75%, -30.5%);
}.service-card:after{content:'';position:absolute;inset:106px 0 0;background:linear-gradient(transparent,#301005 50%);pointer-events:none}.service-number{position:absolute;top:-40px;left:10px;font:78px/1.4 'Al Tarikh',Georgia,serif;color:var(--cream);text-shadow:0 5px 10px #000;z-index:3}.service-copy{position:absolute;z-index:2;inset:auto 0 0;padding:18px;display:flex;flex-direction:column;gap:20px}.service-copy h3{background-clip:text;-webkit-background-clip:text;font-size:30px;letter-spacing:1.2px;line-height:1.3;background:url('assets/imgTextLabel01.png') center/cover;text-shadow:0 2px 4px #000;color:#f4e4c2}.service-copy p{font-size:14.6px;line-height:25px;letter-spacing:.58px}.gold-button{background:var(--button);border:2px solid var(--gold);height:61px;display:flex;align-items:center;justify-content:center;font:600 20px var(--serif);color:var(--cream);position:relative}.gold-button img{position:absolute;right:30px}
.section-heading{width:100%;margin-bottom:48px}.section-heading h2{display:flex;align-items:center;justify-content:center;gap:20px;font-size:32px;line-height:1.5;letter-spacing:1.28px;text-shadow:0 4px 8px #0004}.mirror{transform:scaleX(-1)}.section-rule{display:flex;align-items:center;gap:8px;height:22px;margin-top:12px}.section-rule>div{display:flex;flex:1;min-width:0;flex-direction:column;gap:8px;overflow:hidden}.section-rule img{flex-shrink:0}.profile-content{display:flex;position:relative;justify-content:flex-end;align-items:center}.profile-portrait{position:absolute;width:404px;left:-11px;top:50%;transform:translateY(calc(-50% + 21px));mask-image:linear-gradient(#000 80%,transparent)}.profile-details{width:526px;position:relative;z-index:1}.profile-role{font:16px/1.5 var(--serif);letter-spacing:1.28px}.profile h3{font-size:36px;font-weight:400;letter-spacing:1.64px;margin:20px 0}.profile h3 small{font-size:24px}.bio{font-size:16px;letter-spacing:.64px;line-height:27.2px}.bio p+p{margin-top:12px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6.6px;margin-top:12px;font-family:var(--serif)}.stats>div{border:.5px solid white;background:#0009;text-align:center;padding:12px 8px}.stats dt{font-size:26.35px;font-weight:600;color:var(--cream);letter-spacing:1px}.stats dt small{font-size:15.76px}.stats dd{font-size:16px;letter-spacing:2.24px;margin-top:6px}
.blog-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px}.blog-card{display:flex;flex-direction:column;border:2px solid var(--gold);min-width:0;color:#000;background:white}.blog-media{height:315px;position:relative;overflow:hidden;mask:url('assets/imgImageContent6.svg') center / 100% 100% no-repeat}.blog-media>img{position:absolute;width:177.5%;height:auto;left:-38.75%;top:-52.5px}.blog-brand{position:absolute;z-index:1;top:79.8px;left:0;right:0;display:flex;flex-direction:column;align-items:center;font-family:var(--serif);color:white;gap:13px}.blog-brand .eyebrow{margin-bottom:6px}.blog-brand strong{font-size:40px;line-height:1;letter-spacing:12px;color:var(--cream);font-weight:600}.blog-brand>span:last-of-type{font-size:32px;line-height:1;letter-spacing:9.6px}.blog-copy{padding:20px;min-height:180px}.blog-copy time{font:600 14px/20.4px var(--serif);letter-spacing:1.4px;color:#fff;background:#9d2433;padding:8px;display:inline-block}.blog-summary{display:flex;align-items:flex-start;gap:20px;margin-top:16px}.blog-summary>div{flex:1}.blog-summary>img{margin-top:12px;flex-shrink:0}.blog-copy h3{font-size:20px;font-weight:700;line-height:26.1px}.blog-copy p{font:14px/23.8px var(--serif);letter-spacing:.56px;margin-top:12px}.more-button{display:flex;align-items:center;justify-content:center;gap:8px;width:max-content;margin:38px auto 0;border:1px solid var(--cream);background:#3d0500;padding:12px 20px;font-family:var(--serif);color:var(--cream)}
.news ul{list-style:none;padding:0}.news li{position:relative;overflow:hidden}.news li>a{display:flex;align-items:center;gap:24px;padding:22px 0;font-family:var(--serif);font-size:18px}.news time{font-size:14px;background:#fff;color:#92291f;padding:3px 10px;white-space:nowrap}.news li span{flex:1}.news li>a>img{margin-right:8px}.news-divider{position:absolute;left:0;bottom:0}
.special-programs .section-heading{margin-bottom:56px}.program-grid{display:grid;grid-template-columns:1fr 1fr;gap:35.72px 23.81px}.program-card{height:380px;min-width:0;position:relative;border:2.73px solid var(--gold);background:#301005;display:block}.program-media{position:absolute;left:0;top:0;width:100%;height:267.629px;overflow:hidden;mask:url('assets/imgImageContent8.svg') center top / 100% 100% no-repeat}.program-media img{position:absolute;max-width:none;object-fit:cover}.program-card:after{content:'';position:absolute;top:172.21px;left:0;right:0;bottom:0;background:linear-gradient(transparent,#301005 50%)}.program-copy{position:absolute;bottom:0;left:0;right:0;padding:18px;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:16px}.program-copy>div{min-width:0}.program-copy h3{font-size:31.75px;letter-spacing:1.27px;line-height:1.3;color:#f7e9cf;background-clip:text;-webkit-background-clip:text;background-size:cover;background-position:center;text-shadow:0 2px 4px #000}.program-copy p{font-size:14.88px;line-height:24.79px;letter-spacing:.595px;max-width:300px;margin-top:16px}.round-arrow{flex-shrink:0;border:1px solid var(--gold);border-radius:50%;background:var(--button);width:31px;height:31px;display:flex;align-items:center;justify-content:center}.practical h3{font-size:23px}.practical h3 small{font-size:20px}.bottom-nav{max-width:1004px;margin:80px auto}.bottom-nav .section-nav>a{flex-direction:column-reverse}.site-footer{border-top:2px solid var(--gold);background:var(--ink);text-align:center;padding:20px;color:#f6f0e4;font-size:14px}.site-footer p+p{font-size:12px;margin-top:20px}
@media(min-width:1101px){main{background:radial-gradient(ellipse 850px 4200px at center,#a43024 0%,#92291f 65%,#7e231b 100%)}}
@media(max-width:1100px){.header-inner{padding:0 24px}.hero-inner{width:100%;max-width:1004px}.hero-content{transform:scale(.85);transform-origin:center top}.hero .section-nav{margin-top:-80px}.section-nav{gap:14px}.section-nav span{font-size:25px;padding:10px 20px}.hero{height:850px}.content-backdrop{top:848px}.hero h1{margin-right:-65px}main>section{padding:64px 32px}.profile-details{width:60%}.profile-portrait{width:45%}.blog-grid{gap:24px}.blog-brand{transform:scale(.88);transform-origin:top center}.program-copy h3{font-size:27px}.program-copy p{font-size:14px}.practical h3{font-size:20px}.intro h2{font-size:36px}.intro h2 small{font-size:32px}.intro h2 strong{font-size:40px}.service-copy h3{font-size:25px}}
@media(max-width:760px){html{scroll-padding-top:100px}.site-header{height:84px}.header-inner{padding:0 14px;gap:10px}.brand{gap:8px}.eyebrow{font-size:8px;letter-spacing:1.5px;padding:3px 7px}.brand-lockup{font-size:16px;letter-spacing:2px;gap:8px}.brand-lockup strong{font-size:25px;letter-spacing:4px}.brand-divider{height:25px}.brand-divider img{transform:rotate(90deg) scale(.65);top:11px}.contact-button{font-size:11px;letter-spacing:0;padding:9px;min-height:38px;gap:3px}.hero{height:auto;padding-bottom:45px}.hero:before{background-size:auto 100%,auto 100%;background-position:center}.hero-inner{padding-top:110px}.hero-content{transform:none;width:100%;position:relative;min-height:400px;padding:0 20px;justify-content:flex-start;align-items:center}.hero h1{width:58%;margin-right:0;padding:0;z-index:2}.hero-line.first{font-size:clamp(24px,5.5vw,42px);gap:8px;margin-bottom:27px}.hero-line.second{font-size:clamp(27px,6.15vw,47px);margin-bottom:28px}.hero-line.second strong{font-size:1.1em}.hero-line.third{font-size:clamp(30px,7.1vw,54px);margin-bottom:27px;gap:2px}.hero-line.last{font-size:clamp(47px,10.7vw,81px);letter-spacing:-2px}.hero-line.second strong img{transform:scale(.45);transform-origin:left bottom}.hero-line.third strong img{transform:scale(.45);transform-origin:left bottom}/* Preserve the Figma portrait proportions and match the tablet width (515px × .85). */
.hero-portrait{position:absolute;right:-8%;bottom:0;width:68%;height:auto;max-width:437.75px}.hero .section-nav{margin-top:-12px;padding:0 18px}.section-nav{display:grid;grid-template-columns:1.6fr 1fr;gap:15px 10px}.section-nav a{gap:7px}.section-nav span{font-size:17px;letter-spacing:.3px;width:100%;height:48px;padding:8px 6px}.content-backdrop{top:560px;bottom:100px;height:auto}.cosmic-gold{position:sticky;left:50%;margin-left:calc(50% - 503px)}main{width:calc(100% - 28px);margin-top:35px;border-width:2px}main>section{padding:44px 20px}.stars{margin-bottom:30px;gap:25px}.intro h2{font-size:23px;letter-spacing:1px;line-height:1.8}.intro h2 small{font-size:21px}.intro h2 strong{font-size:25px}.intro-description{font-size:13px;line-height:1.9;letter-spacing:.2px;margin-top:22px}.intro-description br{display:none}.services{grid-template-columns:1fr;gap:42px;margin-top:45px}.service-card{height:400px}.service-copy h3{font-size:25px}.service-copy p{font-size:14px}.service-copy{gap:18px}.section-heading{margin-bottom:30px}.section-heading h2{font-size:25px;gap:15px}.profile-content{display:flex;flex-direction:column}.profile-portrait{position:relative;left:auto;top:auto;transform:none;width:100%;max-width:330px;margin-top:-15px;margin-bottom:-160px}.profile-details{width:100%}.profile-role{font-size:12px;letter-spacing:.5px}.profile h3{font-size:30px;margin:15px 0}.profile h3 small{font-size:20px}.bio{font-size:14px;line-height:1.9}.stats{gap:5px;margin-top:20px}.stats>div{padding:12px 2px}.stats dt{font-size:21px;letter-spacing:0}.stats dt small{font-size:11px}.stats dd{font-size:12px;letter-spacing:1px}.blog-grid{grid-template-columns:1fr;gap:25px}.blog-media{height:260px}.blog-media>img{height:auto;top:-42px}.blog-brand{top:60px;transform:scale(.85)}.blog-copy{padding:18px}.blog-copy h3{font-size:18px}.blog-copy p{font-size:13px}.blog-copy time{font-size:12px;padding:5px 8px}.more-button{margin-top:25px;font-size:14px}.news li>a{display:grid;grid-template-columns:1fr 20px;gap:10px;padding:18px 0;font-size:14px}.news time{grid-column:1;justify-self:start;font-size:11px}.news li span{grid-column:1}.news li>a>img{grid-column:2;grid-row:1 / span 2}.special-programs .section-heading{margin-bottom:32px}.program-grid{grid-template-columns:1fr;gap:26px}.program-card{height:365px}.program-copy h3{font-size:27px}.program-copy p{font-size:14px}.practical h3{font-size:23px}.program-media{height:auto;aspect-ratio:426.503/267.629}.bottom-nav{margin:40px 20px}.site-footer{font-size:11px;padding:20px 10px}.site-footer p+p{font-size:10px;margin-top:15px}}
@media(max-width:380px){.brand-lockup{font-size:14px}.contact-button{font-size:10px;padding:7px}.hero-content{min-height:355px}.intro h2{font-size:21px}.intro h2 small{font-size:18px}.intro h2 strong{font-size:22px}main>section{padding-inline:16px}.program-copy h3{font-size:25px}.practical h3{font-size:21px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Keep the two original cosmic layers aligned inside the sticky backdrop. */
.cosmic-gold{width:100%;height:1006px;top:0;left:auto;margin:0;transform:none;background:none}
.cosmic-gold:before{content:'';position:absolute;left:50%;top:50%;width:1006px;height:1793.226px;transform:translate(-50%,-50%) rotate(90deg);background:url('assets/imgImageContent01.png') center/cover no-repeat}
.cosmic-overlay{margin-top:-1006px}
.service-copy h3{background-clip:text;-webkit-background-clip:text;color:transparent}
.program-copy h3{color:transparent}

.hero-line.first em{background:#b09b00 url('assets/hero-label.png') center/100% 100%}
.service-copy h3,.program-copy h3{text-shadow:none;filter:drop-shadow(0 2px 2px #000)}
.section-heading h2 img{width:19px;height:auto}
.section-rule img{height:1px;width:100%}
@media(min-width:1101px){
.hero h1,.intro h2,.section-heading h2,.section-nav span,.brand-lockup,.eyebrow,.service-copy h3,.program-copy h3,.stats dt{font-weight:400}
.intro h2 strong,.hero-line strong,.brand-lockup strong,.blog-brand strong{font-weight:400}
}
@media(min-width:1101px){
 main>section{padding-inline:54px}
 .intro{min-height:892.727px}
 .intro h2{text-box-trim:trim-both;text-box-edge:cap alphabetic;line-height:1.5}
 .intro-description{text-box-trim:trim-both;text-box-edge:cap alphabetic;margin-top:44px}
 .section-heading h2{height:23px}
 .profile-role,.profile h3,.stats dt,.stats dd{text-box-trim:trim-both;text-box-edge:cap alphabetic}
 .profile h3{margin:32px 0 28px}
 .stats>div{padding:16.469px 8px}
 .stats dd{margin-top:13.175px}
 .blog-copy{height:180px;min-height:180px}
 .blog-copy time,.blog-copy h3,.blog-copy p{text-box-trim:trim-both;text-box-edge:cap alphabetic}
 .blog-summary{margin-top:20px}
 .blog-copy p{margin-top:20px}
 .news li>a{padding:17px 0}
 .program-card{height:374.422px}
 .bottom-nav{margin:40px auto}
 .site-footer{line-height:1.4}
}


@media(min-width:1101px){
.profile{min-height:606.112px}

.more-button{height:50px;line-height:1;padding:10px 20px}
.news{min-height:463px}
}


@media(max-width:760px){.personal .service-copy h3{font-size:22px;letter-spacing:.3px}}

/* WordPress integration: admin toolbar and ordinary posts/pages. */
body.admin-bar .site-header { top: 32px; }
body:not(.home) { background: #30100b; }
main.wp-content-main { margin: 168px auto 80px; padding: 48px; min-height: 50vh; }
.wp-entry + .wp-entry { margin-top: 48px; padding-top: 32px; border-top: 1px solid var(--gold); }
.wp-entry h1, .wp-entry h2 { margin-bottom: 24px; }
.wp-entry-content { overflow-wrap: anywhere; }
.wp-entry-content p, .wp-entry-content ul, .wp-entry-content ol { margin-bottom: 1.5em; }
.wp-entry-content a { text-decoration: underline; }
.wp-entry-content img { max-width: 100%; height: auto; }
.wp-entry-content iframe { max-width: 100%; }
.wp-entry-content figure { max-width: 100%; margin-inline: 0; }
.wp-entry time { display: block; margin-bottom: 20px; color: var(--cream); }
.navigation.pagination { margin-top: 40px; }
.page-numbers { padding: 8px; }
@media (max-width: 782px) { body.admin-bar .site-header { top: 46px; } }
@media (max-width: 600px) { #wpadminbar { position: fixed; } }
@media (max-width: 760px) { main.wp-content-main { margin-top: 120px; padding: 24px; } }

/* Contact Form 7 */
.taiyokan-contact-form { max-width: 720px; margin: 36px auto 0; }
.taiyokan-contact-form label { display: block; font-weight: 400; }
.taiyokan-contact-form input[type="text"],
.taiyokan-contact-form input[type="email"],
.taiyokan-contact-form input[type="date"],
.taiyokan-contact-form input[type="time"],
.taiyokan-contact-form select,
.taiyokan-contact-form textarea {
    width: 100%; max-width: 100%; margin-top: 10px; padding: 12px 14px;
    border: 1px solid var(--cream); border-radius: 2px;
    background: #fffaf1; color: #29100b; font: inherit; line-height: 1.6;
}
.taiyokan-contact-form textarea { min-height: 200px; resize: vertical; }
.contact-required { display: inline-block; margin-left: 8px; padding: 1px 7px; background: #fffaf1; color: #92291f; font-size: 12px; }
.taiyokan-contact-form .contact-note { font-size: 14px; }
.taiyokan-contact-form .wpcf7-list-item { margin-left: 0; }
.taiyokan-contact-form .wpcf7-list-item label { display: flex; align-items: flex-start; gap: 10px; }
.taiyokan-contact-form input[type="checkbox"] { width: 18px; height: 18px; flex-shrink: 0; margin-top: 5px; accent-color: #8d251c; }
.taiyokan-contact-form input[type="submit"] { padding: 16px 24px; max-width: 100%; border: 2px solid var(--gold); background: var(--button); color: var(--cream); font: 600 18px/1.6 var(--serif); cursor: pointer; }
.taiyokan-contact-form input[type="submit"]:disabled { opacity: .6; cursor: not-allowed; }
.taiyokan-contact-form :is(input,textarea,select):focus-visible { outline: 3px solid var(--cream); outline-offset: 3px; }
.taiyokan-contact-form .wpcf7-not-valid-tip { color: #fff1a3; margin-top: 8px; font-size: 14px; }
.wpcf7 form .wpcf7-response-output { padding: 16px; margin: 24px 0; color: #fff; }

/* Brand artwork exported from Figma at twice its display resolution. */
.site-header .brand {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 16px;
    width: 502px;
    min-width: 0;
    flex-shrink: 1;
}
.site-header .brand-mark {
    display: block;
    flex: 0 0 70px;
    width: 70px;
    height: 70px;
}
.site-header .brand .brand-title {
    display: block;
    flex: 1;
    min-width: 0;
    width: calc(100% - 86px);
    height: auto;
}
.site-header .contact-button { flex-shrink: 0; }
@media (max-width: 760px) {
    .site-header .brand { width: 292px; gap: 8px; }
    .site-header .brand-mark { flex-basis: 44px; width: 44px; height: 44px; }
    .site-header .brand .brand-title { width: calc(100% - 52px); }
}
@media (max-width: 380px) {
    .site-header .brand { gap: 6px; }
    .site-header .brand-mark { flex-basis: 36px; width: 36px; height: 36px; }
    .site-header .brand .brand-title { width: calc(100% - 42px); }
}

/* Figma headline: keep the exported shadows outside the original text bounds. */
.hero h1 { filter: none; }
.hero h1 .hero-title-image {
    display: block;
    width: 114.468%;
    max-width: none;
    height: auto;
    margin: -10.5638% -6.17% -8.2319% -8.223%;
}

/* Complete blog thumbnail artwork exported from Figma. */
.blog-media {
    height: auto;
    aspect-ratio: 4 / 3;
    mask: none;
}
.blog-media > img {
    display: block;
    position: static;
    width: 100%;
    height: auto;
}

/* Editorial cards accommodate titles and excerpts entered in WordPress. */
.blog-copy { height: auto; }
.blog-media > img { height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.blog-copy h3, .news li span, .wp-entry { overflow-wrap: anywhere; }
.entry-thumbnail img { max-width: 100%; height: auto; margin-bottom: 24px; }

/* Figma content frame: gold pattern at 50% scale. */
.home main#main { border-color: transparent; --frame-width: 4px; }
.home main#main::before {
    content: '';
    position: absolute;
    inset: calc(-1 * var(--frame-width));
    padding: var(--frame-width);
    background: url('assets/gold-frame-texture.png') center / 588px 272px repeat;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask-composite: exclude;
    pointer-events: none;
}
@media (max-width: 760px) {
    .home main#main { --frame-width: 2px; }
}

/* Header bottom edge uses the Figma gold pattern at its original scale. */
.site-header { border-bottom-color: transparent; }
.site-header::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: -2px;
    height: 2px;
    background: url('assets/gold-frame-texture.png') left top / 1176px 544px repeat;
    pointer-events: none;
}

/* Shared gold texture for card frames and section navigation. */
.service-card,
.blog-card,
.program-card,
.section-nav span {
    border-image-source: url('assets/gold-frame-texture.png');
    border-image-slice: 4;
    border-image-width: 1;
    border-image-repeat: repeat;
}

/* Soft button feedback, including keyboard focus. */
.section-nav a[href] > span,
.contact-button[href],
.gold-button,
.more-button[href],
.program-card[href] .round-arrow,
.taiyokan-contact-form input[type="submit"] {
    transition: filter 350ms ease, box-shadow 350ms ease;
}
@media (hover: hover) and (pointer: fine) {
    .section-nav a[href]:hover > span,
    .contact-button[href]:hover,
    .gold-button:hover,
    .more-button[href]:hover,
    .program-card[href]:hover .round-arrow,
    .taiyokan-contact-form input[type="submit"]:not(:disabled):hover {
        filter: brightness(1.18);
        box-shadow: 0 0 16px rgb(240 211 139 / 24%);
    }
}
.section-nav a[href]:focus-visible > span,
    .contact-button[href]:focus-visible,
    .gold-button:focus-visible,
    .more-button[href]:focus-visible,
    .program-card[href]:focus-visible .round-arrow,
    .taiyokan-contact-form input[type="submit"]:not(:disabled):focus-visible {
    filter: brightness(1.18);
    box-shadow: 0 0 16px rgb(240 211 139 / 24%);
}
@media (prefers-reduced-motion: reduce) {
    .section-nav a[href] > span,
.contact-button[href],
.gold-button,
.more-button[href],
.program-card[href] .round-arrow,
.taiyokan-contact-form input[type="submit"] { transition: none; }
}

/* Slide the blog arrow without changing its right-facing rotation. */
.blog-card .blog-summary > .turn-right {
    transform: translateX(0) rotate(-90deg);
    transition: transform 350ms ease;
}
@media (hover: hover) and (pointer: fine) {
    .blog-card:hover .blog-summary > .turn-right {
        transform: translateX(6px) rotate(-90deg);
    }
}
.blog-card:focus-visible .blog-summary > .turn-right {
    transform: translateX(6px) rotate(-90deg);
}
@media (prefers-reduced-motion: reduce) {
    .blog-card .blog-summary > .turn-right { transition: none; }
}

/* Shared arrow slide; translate preserves each icon's existing rotation. */
.news li > a > .turn-right,
.site-header .contact-button > .turn-right,
.gold-button > .turn-right,
a[aria-disabled="true"] > .turn-right,
.round-arrow {
    translate: 0 0;
    transition: translate 350ms ease;
}
@media (hover: hover) and (pointer: fine) {
    .news li > a:hover > .turn-right,
    .site-header .contact-button:hover > .turn-right,
    .gold-button:hover > .turn-right,
    a[aria-disabled="true"]:hover > .turn-right,
    a:hover .round-arrow,
    .round-arrow:hover {
        translate: 6px 0;
    }
}
.news li > a:focus-visible > .turn-right,
.site-header .contact-button:focus-visible > .turn-right,
.gold-button:focus-visible > .turn-right,
a[aria-disabled="true"]:focus-visible > .turn-right,
a:focus-visible .round-arrow {
    translate: 6px 0;
}
@media (prefers-reduced-motion: reduce) {
    .news li > a > .turn-right,
    .site-header .contact-button > .turn-right,
    .gold-button > .turn-right,
    a[aria-disabled="true"] > .turn-right,
    .round-arrow { transition: none; }
}

/* Slide the hero navigation's downward arrows. */
.hero .section-nav a > img {
    translate: 0 0;
    transition: translate 350ms ease;
}
@media (hover: hover) and (pointer: fine) {
    .hero .section-nav a:hover > img { translate: 0 6px; }
}
.hero .section-nav a:focus-visible > img { translate: 0 6px; }
@media (prefers-reduced-motion: reduce) {
    .hero .section-nav a > img { transition: none; }
}

/* Move the circular button as a whole while preserving its soft glow. */
.program-card .round-arrow {
    transition: translate 350ms ease, filter 350ms ease, box-shadow 350ms ease;
}
@media (prefers-reduced-motion: reduce) {
    .program-card .round-arrow { transition: none; }
}

/* Let the sticky background follow the full page length, including mobile. */
body.home { position: relative; }
.home .content-backdrop {
    height: auto;
    bottom: 0;
}


/* Footer navigation points back up to the page sections. */
.bottom-nav .section-nav > a > img { transform: rotate(180deg); }

/* Applied only when the reveal script is available. */
.reveal-pending { opacity: 0; }
@media (prefers-reduced-motion: reduce), print {
    .reveal-pending { opacity: 1; }
}

/* First visit: cosmic artwork and a separate sharp logo. */
.site-splash { display: none; }
.splash-active { overflow: hidden; }
.splash-active .site-splash {
    display: grid;
    place-items: center;
    position: fixed;
    inset: 0;
    z-index: 100000;
    padding: 32px;
    background: linear-gradient(rgb(0 0 0 / 65%), rgb(0 0 0 / 65%)), url('assets/imgImageContent7.png') center / cover no-repeat, #160c14;
    opacity: 1;
    transition: opacity 600ms ease;
}
.site-splash img {
    width: min(680px, 85vw);
    max-width: 100%;
    height: auto;
    animation: splash-logo-in 700ms ease both;
}
.splash-leaving .site-splash { opacity: 0; }
.splash-active .hero h1,
.splash-active .hero-portrait,
.splash-active .hero .section-nav { opacity: 0; }
@keyframes splash-logo-in {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
    .site-splash { display: none !important; }
    .splash-active { overflow: auto; }
    .splash-active .hero h1,
    .splash-active .hero-portrait,
    .splash-active .hero .section-nav { opacity: 1; }
}

/* Bring the mobile headline lower and closer to the portrait. */
@media (max-width: 760px) {
    .hero h1 .hero-title-image { transform: translate(16px, 24px); }
}

/* Mobile FV composition matched to the supplied reference. */
@media (max-width: 760px) {
    .hero-content { min-height: clamp(355px, 90vw, 600px); }
    .hero h1 { width: 68%; }
    .hero h1 .hero-title-image { transform: translate(0, 24px); }
    .hero-portrait { width: 80%; max-width: none; }
}

/* Match the mobile fade to the responsive image height. */
@media (max-width: 760px) {
    .program-media, .program-card::after { max-height: 100%; }
    .program-card::after {
        top: 0;
        bottom: auto;
        aspect-ratio: 426.503 / 267.629;
        background: linear-gradient(to bottom, transparent 55%, #301005 100%);
        pointer-events: none;
    }
}

/* Optional birth time, selected separately by hour and minute. */
.taiyokan-contact-form .birth-time-fields { border: 0; padding: 0; margin: 0 0 1.5em; min-width: 0; }
.taiyokan-contact-form .birth-time-fields legend { padding: 0; margin-bottom: 10px; }
.taiyokan-contact-form .birth-time-selects { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.taiyokan-contact-form .birth-time-fields > p { margin-top: 12px; }

/* Center the submit button independently of CF7's loading spinner. */
.taiyokan-contact-form .contact-submit {
    position: relative;
    text-align: center;
}
.taiyokan-contact-form .contact-submit .wpcf7-spinner {
    position: absolute;
    top: calc(100% + 8px);
    left: 50%;
    margin: 0 0 0 -12px;
}

/* Use the homepage's gold cosmic artwork behind the contact form. */
.content-backdrop.contact-backdrop {
    position: fixed;
    inset: 0;
    height: auto;
}

/* Place prefecture and municipality side by side. */
.taiyokan-contact-form .birth-place-row {
    display: grid;
    grid-template-columns: minmax(0, 220px) minmax(0, 320px);
    gap: 16px;
}
.taiyokan-contact-form .birth-place-row > p { min-width: 0; }
@media (max-width: 760px) {
    .taiyokan-contact-form .birth-place-row { gap: 10px; }
}

/* Center the privacy notice and consent control. */
.taiyokan-contact-form .contact-note { text-align: center; }
.taiyokan-contact-form .wpcf7-acceptance { display: block; text-align: center; }
.taiyokan-contact-form .wpcf7-acceptance .wpcf7-list-item { display: block; margin: 0; }
.taiyokan-contact-form .wpcf7-acceptance .wpcf7-list-item label {
    justify-content: center;
}

/* Size birth-information controls to their expected input lengths. */
.taiyokan-contact-form input[name="birth-date"] { width: 220px; max-width: 100%; }
.taiyokan-contact-form input[name="birth-time"] { width: 160px; max-width: 100%; }
.taiyokan-contact-form select[name="birth-prefecture"] { width: 220px; max-width: 100%; }
.taiyokan-contact-form input[name="birth-city"] { width: 320px; max-width: 100%; }

/* Keep the unknown checkbox beside the time input. */
.taiyokan-contact-form .birth-time-row {
    display: flex;
    align-items: flex-end;
    gap: 16px;
    margin-bottom: 1.5em;
}
.taiyokan-contact-form .birth-time-row > label { min-width: 0; }
.taiyokan-contact-form .birth-time-unknown { flex-shrink: 0; padding-bottom: 14px; }
.taiyokan-contact-form .birth-time-unknown p { margin: 0; }
.taiyokan-contact-form .birth-time-unknown .wpcf7-list-item { margin: 0; }

/* Shared birthplace heading with inline labels and controls. */
.taiyokan-contact-form .birth-place-fields {
    border: 0;
    padding: 0;
    margin: 0 0 1.5em;
    min-width: 0;
}
.taiyokan-contact-form .birth-place-fields legend { padding: 0; margin-bottom: 10px; }
.taiyokan-contact-form .birth-place-fields .birth-place-row {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
    max-width: 680px;
}
.taiyokan-contact-form .birth-place-row > p > label {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}
.taiyokan-contact-form .birth-place-row > p > label > span:first-child { flex-shrink: 0; }
.taiyokan-contact-form .birth-place-row .wpcf7-form-control-wrap { min-width: 0; flex: 1; }
.taiyokan-contact-form .birth-place-row :is(select, input) { width: 100%; margin-top: 0; }
@media (max-width: 600px) {
    .taiyokan-contact-form .birth-place-fields .birth-place-row { grid-template-columns: minmax(0, 1fr); }
    .taiyokan-contact-form .birth-place-row > p > label > span:first-child { width: 4em; }
}

.taiyokan-contact-form .birth-place-row > p { margin: 0; }

/* Gold diamonds on contact field headings. */
.taiyokan-contact-form .contact-title-diamond {
    display: inline-block;
    width: 11px;
    height: 11px;
    margin-right: 12px;
    vertical-align: 1px;
}

/* Align the unknown option with the vertical center of the time control. */
.taiyokan-contact-form .birth-time-row > p { margin: 0; min-width: 0; }
.taiyokan-contact-form .birth-time-row input[name="birth-time"] { display: block; }
.taiyokan-contact-form .birth-time-unknown {
    display: flex;
    align-items: center;
    min-height: calc(1.6em + 26px);
    padding-bottom: 0;
}
.taiyokan-contact-form .birth-time-unknown .wpcf7-list-item label { align-items: center; }
.taiyokan-contact-form .birth-time-unknown input[type="checkbox"] { margin: 0; }

/* Stack each birthplace label above its control, keeping both fields side by side. */
.taiyokan-contact-form .birth-place-fields .birth-place-row {
    grid-template-columns: minmax(0, 220px) minmax(0, 320px);
}
.taiyokan-contact-form .birth-place-row > p > label {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
}
.taiyokan-contact-form .birth-place-row > p > label > span:first-child { width: auto; }
.taiyokan-contact-form .birth-place-row .wpcf7-form-control-wrap { flex: none; }

/* Required labels: white outline and text, no fill. */
.taiyokan-contact-form .contact-required {
    background: transparent;
    border: 1px solid #fff;
    color: #fff;
}

/* Center the contact page title and introductory paragraph. */
.page-id-7 .wp-entry > h1,
.page-id-7 .wp-entry-content > p:first-child {
    text-align: center;
}

/* Contact heading follows the homepage section-heading artwork. */
.contact-heading h1 {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
    margin: 0;
    font-size: 32px;
    font-weight: 400;
    line-height: 1.5;
    letter-spacing: 1.28px;
    text-shadow: 0 4px 8px #0004;
}
.contact-heading h1 img { width: 19px; height: auto; flex-shrink: 0; }
@media (max-width: 760px) {
    .contact-heading h1 { font-size: 25px; gap: 15px; }
}

/* Cards created from published pages using the special-course template. */
.auto-program .program-media img {
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
    object-fit: cover;
}
.auto-program .program-copy h3,
.auto-program .program-copy p {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    overflow-wrap: anywhere;
}

/* Shared application and contact link on special-course pages. */
.special-course-cta {
    margin-top: 40px;
    padding-top: 32px;
    border-top: 1px solid var(--gold);
}
.special-course-cta .special-course-cta-button {
    width: 100%;
    max-width: 560px;
    margin-inline: auto;
    padding: 18px 24px;
    justify-content: center;
    gap: 14px;
    font-size: clamp(16px, 1.8vw, 20px);
    line-height: 1.6;
    text-align: center;
    background: var(--button);
}
.special-course-cta-button span { min-width: 0; }
.special-course-cta-button img { flex-shrink: 0; }

.special-course-cta-button .cta-label-part { display: inline-block; white-space: nowrap; }
