/* =============================================
   MIRAI CRAFT — Pentel-inspired Design System
   BEM-like naming: l-(layout), s-(section), c-(component)
   ============================================= */

:root {
  --yellow: #FFE600;
  --yellow-light: #FFF9CC;
  --yellow-pale: #FFFEF5;
  --brown: #8B6914;
  --red: #C85A5A;
  --text: #212121;
  --text-sub: #555;
  --text-muted: #999;
  --white: #fff;
  --gray: #F5F5F3;
  --gray-border: #E5E5E2;
  --dark: #1A1A1A;
  --ease: cubic-bezier(.25,.46,.45,.94);
  --ease-out: cubic-bezier(.22,1,.36,1);
}

/* === Reset === */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px;-webkit-text-size-adjust:100%}
body{font-family:'Noto Sans JP',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--text);background:var(--white);line-height:1.8;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
ul{list-style:none}
img{max-width:100%;height:auto;display:block}

.c-font-en{font-family:'Cormorant Garamond','Times New Roman',serif}
.sp-only{display:none}

.l-container{max-width:1200px;margin:0 auto;padding:0 9vw}
@media(min-width:1400px){.l-container{padding:0 100px}}

/* =============================================
   Header (l-header)
   ============================================= */
.l-header{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(255,255,255,.92);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:transform .4s var(--ease),box-shadow .3s var(--ease)}
.l-header.is-hidden{transform:translateY(-100%)}
.l-header.is-scrolled{box-shadow:0 1px 0 rgba(0,0,0,.06)}
.l-header-inner{display:flex;align-items:center;justify-content:space-between;height:80px;max-width:1400px;margin:0 auto;padding:0 9vw}
@media(min-width:1400px){.l-header-inner{padding:0 100px}}

.l-header-logo{display:flex;align-items:center;gap:10px;z-index:101}
.l-header-logo-mark{display:flex;align-items:center;justify-content:center;width:38px;height:38px;background:var(--yellow);border-radius:50%;font-family:'Cormorant Garamond',serif;font-size:20px;font-weight:600;color:var(--brown)}
.l-header-logo-text{font-size:15px;font-weight:700;letter-spacing:2px;color:var(--text)}

.l-header-nav-list{display:flex;align-items:center;gap:32px}
.l-header-nav-list a{font-size:12px;font-weight:500;color:var(--text-sub);letter-spacing:1px;transition:color .25s var(--ease);position:relative}
.l-header-nav-list a::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:1px;background:var(--text);transition:width .35s var(--ease-out)}
.l-header-nav-list a:hover{color:var(--text)}
.l-header-nav-list a:hover::after{width:100%}

.l-header-nav-cta{background:var(--yellow)!important;color:var(--brown)!important;padding:8px 22px!important;border-radius:100px!important;font-weight:700!important;letter-spacing:.5px!important}
.l-header-nav-cta::after{display:none!important}
.l-header-nav-cta:hover{background:var(--brown)!important;color:var(--white)!important}

.l-header-nav-contact{border:1px solid var(--gray-border)!important;padding:7px 22px!important;border-radius:100px!important}
.l-header-nav-contact::after{display:none!important}
.l-header-nav-contact:hover{border-color:var(--text)!important;color:var(--text)!important}

.l-header-toggle{display:none;flex-direction:column;gap:6px;background:none;border:none;cursor:pointer;padding:10px;z-index:101}
.l-header-toggle span{width:24px;height:1px;background:var(--text);transition:all .3s var(--ease);display:block}
.l-header-toggle.is-active span:nth-child(1){transform:rotate(45deg) translate(4px,4px)}
.l-header-toggle.is-active span:nth-child(2){opacity:0}
.l-header-toggle.is-active span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}

/* =============================================
   Hero (s-hero) — Pentel-style bottom-aligned
   ============================================= */
.s-hero{position:sticky;top:0;height:100vh;min-height:600px;display:flex;align-items:flex-end;overflow:hidden;z-index:0}
.s-hero-bg{position:absolute;inset:0}
.s-hero-bg-img{width:100%;height:100%;object-fit:cover;transform:scale(1.05);animation:heroZoom 12s var(--ease-out) forwards}
@keyframes heroZoom{to{transform:scale(1)}}
.s-hero-overlay{position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.45) 0%,rgba(0,0,0,0) 55%)}

.s-hero-content{position:relative;z-index:2;width:100%;display:flex;align-items:flex-end;justify-content:space-between;padding:0 9vw 100px;color:var(--white)}
.s-hero-title{font-size:clamp(36px,7vw,88px);font-weight:900;line-height:1.2;letter-spacing:-.5px}
.s-hero-en{font-size:clamp(14px,1.8vw,22px);color:var(--white);opacity:.8;letter-spacing:1px;white-space:nowrap;padding-bottom:.15em}
.s-hero-en em{font-style:italic}

.s-hero-nav{position:absolute;bottom:32px;left:9vw;z-index:2}
.s-hero-counter{display:inline-flex;align-items:center;gap:16px;border:1px solid rgba(255,255,255,.35);border-radius:100px;padding:10px 24px;color:var(--white)}
.s-hero-counter-num{font-size:13px;letter-spacing:3px}
.s-hero-counter-btn{background:none;border:none;color:var(--white);font-size:16px;cursor:pointer;opacity:.6;transition:opacity .3s var(--ease);padding:0;line-height:1}
.s-hero-counter-btn:hover{opacity:1}

/* =============================================
   Buttons (c-btn)
   ============================================= */
.c-btn{display:inline-flex;align-items:center;justify-content:center;padding:15px 44px;border-radius:100px;font-size:13px;font-weight:500;letter-spacing:1px;transition:all .35s var(--ease);cursor:pointer;border:none}
.c-btn--primary{background:var(--white);color:var(--text)}
.c-btn--primary:hover{background:var(--yellow);transform:translateY(-2px);box-shadow:0 8px 32px rgba(0,0,0,.15)}
.c-btn--ghost{background:transparent;color:var(--white);border:1px solid rgba(255,255,255,.5)}
.c-btn--ghost:hover{background:var(--white);color:var(--text);border-color:var(--white)}
.c-btn--outline{background:transparent;color:var(--text);border:1px solid var(--gray-border);padding:13px 40px}
.c-btn--outline:hover{border-color:var(--text);background:var(--text);color:var(--white)}
.c-btn--yellow{background:var(--yellow);color:var(--text)}
.c-btn--yellow:hover{background:var(--white);transform:translateY(-2px)}
.c-btn--submit{width:100%;background:var(--text);color:var(--white);padding:18px;border-radius:100px;font-size:15px;font-weight:600;cursor:pointer;transition:all .3s var(--ease);letter-spacing:1px;border:none}
.c-btn--submit:hover{background:var(--brown);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.12)}

/* =============================================
   Section Common (l-section, c-section-*)
   ============================================= */
.l-section{padding:140px 0;border-radius:48px 48px 0 0;position:relative;margin-top:-48px;z-index:1;background:var(--white)}
.l-section--gray{background:var(--gray)}
.s-museum,.s-office-banner,.l-footer{border-radius:48px 48px 0 0;position:relative;margin-top:-48px;z-index:1}
[data-parallax],.s-hero-bg{will-change:transform}

.c-section-head{text-align:left;margin-bottom:64px}
.c-section-num{display:block;font-size:13px;letter-spacing:3px;color:#D63031;margin-bottom:8px;font-weight:600}
.c-section-title{font-size:clamp(36px,5.5vw,56px);font-weight:700;color:var(--text);letter-spacing:2px;margin-bottom:12px;line-height:1.15}
.c-section-title .c-font-en{display:inline}
.c-section-title-jp{font-family:'Noto Sans JP',sans-serif;font-size:15px;font-weight:400;color:var(--text-sub);letter-spacing:1px;margin-left:16px}
.c-section-lead{font-size:14px;color:var(--text-sub);font-weight:300;letter-spacing:1px;margin-top:4px}

/* =============================================
   Programs (s-programs)
   ============================================= */
.s-programs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}

.s-programs-card{display:block;background:var(--gray);border-radius:16px;overflow:hidden;transition:all .5s var(--ease-out);box-shadow:0 0 0 rgba(0,0,0,0)}
.s-programs-card:hover{transform:translateY(-6px);box-shadow:0 16px 48px rgba(0,0,0,.08)}

.s-programs-card-fig{overflow:hidden;aspect-ratio:16/10;position:relative}
.s-programs-card-fig img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease-out)}
.s-programs-card:hover .s-programs-card-fig img{transform:scale(1.06)}
.s-programs-card-badge{position:absolute;top:16px;left:16px;background:var(--yellow);color:var(--brown);font-size:11px;font-weight:700;padding:4px 14px;border-radius:20px;letter-spacing:.5px;z-index:1}

.s-programs-card-body{padding:28px 32px 32px}
.s-programs-card-body h3{font-size:18px;font-weight:700;margin-bottom:8px;color:var(--text);letter-spacing:.5px}
.s-programs-card-body p{font-size:13px;color:var(--text-sub);line-height:1.8;margin-bottom:20px}
.s-programs-card-more{font-size:12px;font-weight:400;color:var(--brown);letter-spacing:2px;transition:all .3s var(--ease);display:inline-flex;align-items:center;gap:8px}
.s-programs-card-more::after{content:'';width:20px;height:1px;background:var(--brown);transition:width .3s var(--ease)}
.s-programs-card:hover .s-programs-card-more::after{width:32px}

/* Quiz */
.s-programs-quiz{margin-top:80px;background:var(--gray);border-radius:20px;padding:56px 48px;text-align:center}
.s-programs-quiz-head h3{font-size:20px;font-weight:700;margin-bottom:12px;color:var(--text)}
.s-programs-quiz-head h3 span{font-weight:300;font-size:15px;color:var(--text-sub)}
.s-programs-quiz-head p{font-size:13px;color:var(--text-sub);margin-bottom:40px}
.quiz-step{display:none}
.quiz-step.is-active{display:block;animation:quizFadeIn .4s var(--ease)}
@keyframes quizFadeIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.quiz-q{font-size:16px;font-weight:600;margin-bottom:24px;color:var(--text)}
.quiz-q span{font-size:14px;color:var(--brown);margin-right:6px}
.quiz-options{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.quiz-opt{background:var(--white);border:2px solid var(--gray-border);color:var(--text);font-size:14px;padding:14px 28px;border-radius:40px;cursor:pointer;transition:all .25s var(--ease);font-family:inherit}
.quiz-opt:hover{border-color:var(--yellow);background:var(--yellow-pale)}
.quiz-opt:active,.quiz-opt.is-selected{border-color:var(--yellow);background:var(--yellow);color:var(--brown);font-weight:600}
.quiz-result{padding:20px 0}
.quiz-result{padding:8px 0}
.quiz-result-title{font-size:13px;color:var(--text-muted);margin-bottom:20px;letter-spacing:1px}
.quiz-result-card{background:var(--white);border-radius:12px;padding:28px 32px;margin-bottom:12px;text-align:left;border-left:4px solid var(--yellow)}
.quiz-result-card:last-of-type{margin-bottom:28px}
.quiz-result-name{font-size:20px;font-weight:700;color:var(--text);margin-bottom:4px}
.quiz-result-sub{font-size:11px;color:var(--brown);font-weight:600;letter-spacing:.5px;margin-bottom:10px}
.quiz-result-desc{font-size:13px;color:var(--text-sub);line-height:1.9;margin-bottom:0}
.quiz-result-note{font-size:11px;color:var(--text-muted);margin-top:8px}
.quiz-result-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:8px}
.quiz-result-actions .c-btn{font-size:13px}
.quiz-restart{background:none;border:none;color:var(--text-muted);font-size:12px;cursor:pointer;margin-top:20px;font-family:inherit;text-decoration:underline;text-underline-offset:4px}
.quiz-restart:hover{color:var(--text)}

/* =============================================
   News — Magazine Grid (s-news)
   ============================================= */
.s-news-magazine{display:grid;grid-template-columns:1.15fr 1fr;gap:20px}
.s-news-sub{display:flex;flex-direction:column;gap:20px}
.s-news-card{display:block;background:var(--white);border-radius:16px;overflow:hidden;transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.s-news-card:hover{transform:translateY(-4px);box-shadow:0 12px 40px rgba(0,0,0,.08)}
.s-news-card--featured{display:flex;flex-direction:column;height:100%}
.s-news-card-img-wrap{position:relative;overflow:hidden}
.s-news-card-img{width:100%;display:block;object-fit:cover;transition:transform .6s var(--ease-out)}
.s-news-card:hover .s-news-card-img{transform:scale(1.04)}
.s-news-card--featured .s-news-card-img{aspect-ratio:3/2}
.s-news-card-img-wrap .s-news-tag{position:absolute;top:16px;left:16px}
.s-news-tag{font-size:10px;font-weight:700;background:var(--yellow);color:var(--brown);padding:4px 14px;border-radius:100px;letter-spacing:.5px;white-space:nowrap;display:inline-block}
.s-news-card-body{padding:20px 24px 24px}
.s-news-card--featured .s-news-card-body{flex:1;display:flex;flex-direction:column;justify-content:center}
.s-news-card-body time{font-size:12px;color:var(--text-muted);letter-spacing:1px;display:block;margin-bottom:8px}
.s-news-card-body p{font-size:14px;font-weight:600;line-height:1.6;color:var(--text)}
.s-news-card--featured .s-news-card-body p{font-size:17px}
.s-news-sub .s-news-card{display:grid;grid-template-columns:140px 1fr}
.s-news-sub .s-news-card-img{height:100%;aspect-ratio:auto;min-height:120px}
.s-news-sub .s-news-card-body{padding:16px 20px;display:flex;flex-direction:column;justify-content:center}
.s-news-sub .s-news-card-body p{font-size:13px}
.s-news-more{text-align:left;margin-top:48px}

/* =============================================
   Instagram (s-instagram)
   ============================================= */
.s-instagram-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;margin-bottom:40px}
.s-instagram-item{aspect-ratio:1;background:var(--gray);transition:opacity .3s var(--ease);cursor:pointer;overflow:hidden;border-radius:4px}
.s-instagram-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.s-instagram-item:hover{opacity:.85}
.s-instagram-item:hover img{transform:scale(1.06)}
.s-instagram-follow{text-align:left}

/* =============================================
   Museum Teaser (s-museum) — Dark section
   ============================================= */
.s-museum{background:var(--dark);overflow:hidden}
.s-museum-inner{display:grid;grid-template-columns:1fr 1fr;min-height:560px;max-width:1400px;margin:0 auto}
.s-museum-text{display:flex;flex-direction:column;justify-content:center;padding:100px 9vw}
.s-museum-lead{font-size:24px;font-weight:300;line-height:2;margin:24px 0 48px;color:rgba(255,255,255,.85);letter-spacing:2px}
.s-museum-visual{display:flex;align-items:center;justify-content:center;padding:60px}
.s-museum-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;max-width:420px}
.s-museum-thumb{aspect-ratio:1;border-radius:8px;overflow:hidden}
.s-museum-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease-out);filter:brightness(.8)}
.s-museum-thumb:hover img{transform:scale(1.08);filter:brightness(1)}

/* =============================================
   Profile (s-profile)
   ============================================= */
.s-profile{background:var(--yellow-pale)}
.s-profile-content{display:grid;grid-template-columns:360px 1fr;gap:80px;align-items:start}
.s-profile-photo{border-radius:12px;overflow:hidden;box-shadow:0 12px 40px rgba(0,0,0,.1)}
.s-profile-photo img{width:100%;aspect-ratio:3/4;object-fit:cover}
.s-profile-role{font-size:12px;color:var(--brown);letter-spacing:3px;margin-bottom:12px;font-weight:400;text-transform:uppercase}
.s-profile-name{font-size:30px;font-weight:700;margin-bottom:40px;color:var(--text);line-height:1.4}
.s-profile-name span{display:block;font-size:14px;font-weight:300;color:var(--text-muted);margin-top:8px;letter-spacing:2px}
.s-profile-bio p{font-size:14px;color:var(--text-sub);margin-bottom:24px;line-height:2.2;letter-spacing:.3px}

/* =============================================
   Schedule (s-schedule)
   ============================================= */
.s-schedule-cal{max-width:900px;margin:0 auto;background:var(--white);border-radius:12px;overflow:hidden;box-shadow:0 2px 12px rgba(0,0,0,.04)}
.s-schedule-embed{width:100%;height:600px;border:none}

/* =============================================
   Office Banner (s-office-banner)
   ============================================= */
.s-office-banner{background:var(--dark);color:var(--white);padding:100px 0;text-align:center}
.s-office-banner-inner{display:flex;flex-direction:column;align-items:center}
.s-office-banner-num{font-size:11px;letter-spacing:5px;color:rgba(255,255,255,.3);text-transform:uppercase;margin-bottom:28px;display:block}
.s-office-banner-title{font-size:clamp(24px,4vw,40px);font-weight:700;line-height:1.6;letter-spacing:2px;margin-bottom:36px}
.s-office-banner-services{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-bottom:32px}
.s-office-banner-services span{border:1px solid rgba(255,255,255,.18);border-radius:100px;padding:8px 22px;font-size:12px;letter-spacing:1px;color:rgba(255,255,255,.55);transition:all .3s var(--ease)}
.s-office-banner-services span:hover{border-color:rgba(255,255,255,.5);color:var(--white)}
.s-office-banner-desc{font-size:14px;color:rgba(255,255,255,.4);line-height:1.8;margin-bottom:40px;letter-spacing:.5px}

/* =============================================
   Consultation (s-consultation)
   ============================================= */
.s-consultation{background:var(--yellow)}
.s-consultation .c-section-head{text-align:center}
.s-consultation-wrap{max-width:720px;margin:0 auto}
.s-consultation-form{background:var(--white);padding:56px;border-radius:16px;box-shadow:0 16px 48px rgba(0,0,0,.08)}

.c-form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.c-form-group{margin-bottom:24px}
.c-form-group label{display:block;font-size:12px;font-weight:500;margin-bottom:8px;color:var(--text);letter-spacing:.5px}
.c-req{color:var(--red)}
.c-form-group input,.c-form-group select,.c-form-group textarea{width:100%;padding:14px 16px;border:1px solid var(--gray-border);border-radius:8px;font-size:14px;font-family:inherit;color:var(--text);background:var(--white);transition:border-color .25s var(--ease),box-shadow .25s var(--ease);appearance:none;-webkit-appearance:none}
.c-form-group input:focus,.c-form-group select:focus,.c-form-group textarea:focus{outline:none;border-color:var(--brown);box-shadow:0 0 0 3px rgba(139,105,20,.08)}
.c-form-group textarea{resize:vertical;min-height:100px}
.c-form-group select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23999' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;padding-right:40px}

/* =============================================
   Footer (l-footer)
   ============================================= */
.l-footer{background:var(--dark);color:var(--white);padding:80px 0 40px}
.l-footer-top{display:grid;grid-template-columns:260px 1fr;gap:80px;margin-bottom:80px}
.l-footer-brand{display:flex;flex-direction:column;gap:8px}
.l-footer-tagline{font-size:12px;color:rgba(255,255,255,.4);margin-top:12px;letter-spacing:.5px}
.l-footer-nav{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}
.l-footer-nav-group h4{font-size:11px;font-weight:400;letter-spacing:2px;color:rgba(255,255,255,.35);margin-bottom:24px;text-transform:uppercase}
.l-footer-nav-group a{display:block;font-size:13px;color:rgba(255,255,255,.6);margin-bottom:14px;transition:color .25s var(--ease)}
.l-footer-nav-group a:hover{color:var(--yellow)}
.l-footer-bottom{border-top:1px solid rgba(255,255,255,.08);padding-top:32px}
.l-footer-bottom p{font-size:11px;color:rgba(255,255,255,.3);text-align:center;letter-spacing:1px}

/* =============================================
   Subpages: Museum / Contact Heroes
   ============================================= */
.museum-hero{padding:180px 0 100px;background:var(--dark);color:var(--white);text-align:center}
.museum-hero-title{font-family:'Cormorant Garamond',serif;font-size:clamp(40px,6vw,64px);font-weight:300;letter-spacing:4px;margin-bottom:20px}
.museum-hero-lead{font-size:14px;color:rgba(255,255,255,.5);font-weight:300;line-height:2;letter-spacing:1px}

.contact-hero{padding:180px 0 100px;background:var(--yellow);text-align:center}
.contact-hero-title{font-family:'Cormorant Garamond',serif;font-size:clamp(40px,6vw,64px);font-weight:300;letter-spacing:4px;color:var(--text);margin-bottom:12px}
.contact-hero-lead{font-size:14px;color:var(--brown);letter-spacing:1px}

/* Gallery page */
.section-gallery{background:var(--gray);padding:80px 0 140px}
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:32px}
.gallery-item{border-radius:8px;overflow:hidden;background:var(--yellow-light);min-height:260px}
.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease);cursor:pointer}
.gallery-item img:hover{transform:scale(1.04)}
.gallery-item--wide{grid-column:span 2}
.gallery-item--tall{grid-row:span 2}

/* Contact page */
.section-contact-page{background:var(--white);padding:80px 0 140px}
.contact-page-layout{display:grid;grid-template-columns:1fr 360px;gap:48px;align-items:start}
.contact-form-area h2{font-size:18px;font-weight:600;margin-bottom:32px;letter-spacing:.5px}
.contact-form{background:var(--gray);padding:48px;border-radius:16px}
.contact-info-area{display:flex;flex-direction:column;gap:20px;position:sticky;top:100px}
.contact-info-card{background:var(--gray);padding:32px;border-radius:16px}
.contact-info-card h3{font-size:14px;font-weight:600;margin-bottom:20px;letter-spacing:.5px}
.contact-info-card p{font-size:13px;color:var(--text-sub);line-height:1.8}
.contact-dl{font-size:13px}
.contact-dl dt{color:var(--text-muted);font-size:11px;letter-spacing:1px;margin-bottom:4px;margin-top:16px;font-weight:500;text-transform:uppercase}
.contact-dl dt:first-child{margin-top:0}
.contact-dl dd{color:var(--text)}
.contact-dl a{color:var(--brown);transition:color .25s var(--ease)}
.contact-dl a:hover{color:var(--text)}
.contact-note{margin-top:16px;font-size:11px!important;color:var(--text-muted)!important}
.contact-sns{display:flex;flex-direction:column;gap:10px}
.contact-sns a{font-size:13px;color:var(--brown);transition:color .25s var(--ease)}
.contact-sns a:hover{color:var(--text)}
.btn-back-consultation{display:inline-block;margin-top:16px;font-size:13px;color:var(--brown);transition:color .25s var(--ease);letter-spacing:.5px}
.btn-back-consultation:hover{color:var(--text)}

/* =============================================
   Program Detail Pages (p-*)
   ============================================= */
.p-hero{position:sticky;top:0;z-index:0;height:70vh;min-height:400px;display:flex;align-items:flex-end;overflow:hidden}
.p-hero-bg{position:absolute;inset:0}
.p-hero-bg img{width:100%;height:100%;object-fit:cover}
.p-hero-overlay{position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0%,rgba(0,0,0,.05) 60%)}
.p-hero-content{position:relative;z-index:2;width:100%;padding:0 9vw 64px;color:var(--white)}
.p-hero-badge{display:inline-block;background:var(--yellow);color:var(--brown);font-size:11px;font-weight:700;padding:5px 16px;border-radius:20px;letter-spacing:.5px;margin-bottom:20px}
.p-hero-title{font-size:clamp(28px,5.5vw,52px);font-weight:900;line-height:1.25;letter-spacing:-.5px;margin-bottom:16px}
.p-hero-lead{font-size:clamp(14px,1.6vw,18px);font-weight:300;opacity:.85;line-height:1.8;letter-spacing:.5px;max-width:600px}

.p-intro{max-width:720px}
.p-intro-text{font-size:15px;color:var(--text-sub);line-height:2.2;letter-spacing:.3px}

.p-courses-list{display:flex;flex-direction:column;gap:32px}
a.p-course-card{text-decoration:none;color:inherit}
.p-course-card{display:grid;grid-template-columns:320px 1fr;gap:40px;background:var(--gray);border-radius:16px;overflow:hidden;transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.p-course-card:hover{transform:translateY(-4px);box-shadow:0 12px 40px rgba(0,0,0,.08)}
.p-course-card-img{overflow:hidden}
.p-course-card-img img{width:100%;height:100%;object-fit:cover;min-height:220px;transition:transform .6s var(--ease-out)}
.p-course-card:hover .p-course-card-img img{transform:scale(1.04)}
.p-course-card-body{padding:36px 40px 36px 0;display:flex;flex-direction:column;justify-content:center}
.p-course-card-body h3{font-size:22px;font-weight:700;color:var(--text);margin-bottom:8px;letter-spacing:.5px}
.p-course-tag{display:inline-flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.p-course-tag span{font-size:11px;color:var(--brown);font-weight:600;letter-spacing:.5px;background:var(--yellow-light);padding:4px 12px;border-radius:20px}
.p-course-card-body p{font-size:14px;color:var(--text-sub);line-height:1.9}

.p-cta{text-align:center;max-width:560px;margin:0 auto}
.p-cta h2{font-size:clamp(20px,3vw,28px);font-weight:700;color:var(--text);margin-bottom:16px}
.p-cta p{font-size:14px;color:var(--text-sub);margin-bottom:32px;line-height:1.8}
.p-cta .c-btn{font-size:15px;padding:18px 48px}

.p-other-programs{max-width:900px;margin:0 auto}
.p-other-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.p-other-card{display:block;background:var(--white);border-radius:12px;overflow:hidden;text-align:center;padding:32px 20px;border:1px solid var(--gray-border);transition:all .35s var(--ease)}
.p-other-card:hover{border-color:var(--yellow);transform:translateY(-4px);box-shadow:0 8px 24px rgba(0,0,0,.06)}
.p-other-card-badge{font-size:10px;color:var(--brown);font-weight:600;letter-spacing:.5px;display:block;margin-bottom:8px}
.p-other-card h4{font-size:15px;font-weight:700;color:var(--text);margin-bottom:6px}
.p-other-card p{font-size:12px;color:var(--text-muted)}

/* =============================================
   Academia Page — Refined Adult Design
   ============================================= */
.page-academia{--ac-dark:#1A1A1A;--ac-text:#E8E4DF;--ac-sub:rgba(255,255,255,.55);--ac-muted:rgba(255,255,255,.3);--ac-accent:#C9A96E;--ac-surface:#242424;--ac-surface2:#2A2A2A;background:var(--ac-dark);color:var(--ac-text)}
.page-academia .l-header{background:rgba(26,26,26,.92);backdrop-filter:blur(20px)}
.page-academia .l-header.is-scrolled{box-shadow:0 1px 0 rgba(255,255,255,.06)}
.page-academia .l-header-logo-mark{background:var(--ac-accent);color:var(--ac-dark)}
.page-academia .l-header-logo-text{color:var(--ac-text)}
.page-academia .l-header-nav-list a{color:var(--ac-sub)}
.page-academia .l-header-nav-list a:hover{color:var(--ac-text)}
.page-academia .l-header-nav-list a::after{background:var(--ac-accent)}
.page-academia .l-header-nav-cta{background:var(--ac-accent)!important;color:var(--ac-dark)!important}
.page-academia .l-header-nav-cta:hover{background:var(--white)!important}
.page-academia .l-header-toggle span{background:var(--ac-text)}
.page-academia .l-header-nav-list.is-active~.l-header-toggle span,.page-academia .l-header-toggle.is-active span{background:var(--ac-text)}

.page-academia .p-hero{height:80vh;min-height:500px}
.page-academia .p-hero-overlay{background:linear-gradient(0deg,rgba(0,0,0,.65) 0%,rgba(0,0,0,.15) 60%)}
.page-academia .p-hero-badge{background:var(--ac-accent);color:var(--ac-dark)}
.page-academia .p-hero-title{font-family:'Cormorant Garamond','Noto Sans JP',serif;font-weight:600;letter-spacing:1px}

.page-academia .l-section{background:var(--ac-dark);border-radius:0;margin-top:0}
.page-academia .l-section--gray{background:var(--ac-surface)}
.page-academia .c-section-num{color:var(--ac-accent)}
.page-academia .c-section-title{color:var(--ac-text)}
.page-academia .c-section-title-jp{color:var(--ac-sub)}
.page-academia .c-section-lead{color:var(--ac-sub)}

.page-academia .p-intro-text{color:var(--ac-sub);font-size:15px;line-height:2.4}

.page-academia .p-course-card{background:var(--ac-surface2);border:1px solid rgba(255,255,255,.06)}
.page-academia .p-course-card:hover{box-shadow:0 16px 48px rgba(0,0,0,.3);border-color:rgba(201,169,110,.2)}
.page-academia .p-course-card-body h3{color:var(--ac-text);font-family:'Cormorant Garamond','Noto Sans JP',serif;font-size:24px;font-weight:600}
.page-academia .p-course-tag span{background:rgba(201,169,110,.12);color:var(--ac-accent);border:1px solid rgba(201,169,110,.2)}
.page-academia .p-course-card-body p{color:var(--ac-sub)}

.page-academia .p-other-card{background:var(--ac-surface2);border-color:rgba(255,255,255,.08)}
.page-academia .p-other-card:hover{border-color:var(--ac-accent);box-shadow:0 8px 24px rgba(0,0,0,.3)}
.page-academia .p-other-card-badge{color:var(--ac-accent)}
.page-academia .p-other-card h4{color:var(--ac-text)}
.page-academia .p-other-card p{color:var(--ac-sub)}

.page-academia .s-consultation{background:var(--ac-surface)}
.page-academia .s-consultation .c-section-title{color:var(--ac-text)}
.page-academia .s-consultation .c-section-lead{color:var(--ac-sub)}
.page-academia .s-consultation-form{background:var(--ac-surface2);box-shadow:0 16px 48px rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.06)}
.page-academia .c-form-group label{color:var(--ac-text)}
.page-academia .c-form-group input,.page-academia .c-form-group select,.page-academia .c-form-group textarea{background:var(--ac-dark);border-color:rgba(255,255,255,.1);color:var(--ac-text)}
.page-academia .c-form-group input:focus,.page-academia .c-form-group select:focus,.page-academia .c-form-group textarea:focus{border-color:var(--ac-accent);box-shadow:0 0 0 3px rgba(201,169,110,.12)}
.page-academia .c-btn--submit{background:var(--ac-accent);color:var(--ac-dark)}
.page-academia .c-btn--submit:hover{background:var(--white)}
.page-academia .p-cta h2{color:var(--ac-text)}
.page-academia .p-cta p{color:var(--ac-sub)}
.page-academia .p-cta .c-btn{background:var(--ac-accent);color:var(--ac-dark);border:none}
.page-academia .p-cta .c-btn:hover{background:var(--white);transform:translateY(-2px);box-shadow:0 8px 32px rgba(0,0,0,.3)}
.page-academia .s-schedule-cal{background:var(--ac-surface2);box-shadow:0 2px 12px rgba(0,0,0,.2)}
.page-academia .c-btn--outline{color:var(--ac-text);border-color:rgba(255,255,255,.2)}
.page-academia .c-btn--outline:hover{background:var(--ac-accent);color:var(--ac-dark);border-color:var(--ac-accent)}

.page-academia .l-footer{background:var(--ac-surface);border-radius:0;margin-top:0}

@media(max-width:768px){
  .page-academia .l-header-nav-list{background:rgba(26,26,26,.98)}
  .page-academia .p-hero{height:55vh;min-height:340px}
  .page-academia .p-course-card-body h3{font-size:20px}
}

/* =============================================
   Detail Page Components (p-detail-*)
   ============================================= */
.p-detail{max-width:780px}
.p-detail p{font-size:15px;line-height:2.2;letter-spacing:.3px;margin-bottom:20px}
.p-detail p:last-child{margin-bottom:0}
.p-detail h3{font-size:20px;font-weight:700;margin:48px 0 16px;letter-spacing:.5px}
.p-detail h3:first-child{margin-top:0}
.p-detail ul,.p-detail ol{margin:16px 0;padding-left:1.5em}
.p-detail li{font-size:14px;line-height:2;margin-bottom:8px}
.p-detail-img{margin:32px 0;border-radius:12px;overflow:hidden}
.p-detail-img img{width:100%;display:block}
.p-detail-sub{font-size:18px;font-weight:600;margin:40px 0 16px;padding-left:16px;border-left:3px solid var(--yellow)}
.page-academia .p-detail p{color:var(--ac-sub)}
.page-academia .p-detail h3{color:var(--ac-text)}
.page-academia .p-detail li{color:var(--ac-sub)}
.page-academia .p-detail-sub{color:var(--ac-accent);border-color:var(--ac-accent)}

/* FAQ */
.p-faq-list{max-width:780px}
.p-faq-item{padding:28px 0;border-bottom:1px solid var(--gray-border)}
.p-faq-item:first-child{padding-top:0}
.p-faq-q{font-size:15px;font-weight:700;margin-bottom:12px;padding-left:28px;position:relative}
.p-faq-q::before{content:'Q.';position:absolute;left:0;color:var(--brown);font-weight:700}
.p-faq-a{font-size:14px;line-height:2;padding-left:28px;position:relative}
.p-faq-a::before{content:'A.';position:absolute;left:0;font-weight:600}
.page-academia .p-faq-item{border-color:rgba(255,255,255,.08)}
.page-academia .p-faq-q{color:var(--ac-text)}
.page-academia .p-faq-q::before{color:var(--ac-accent)}
.page-academia .p-faq-a{color:var(--ac-sub)}
.page-academia .p-faq-a::before{color:var(--ac-accent)}

/* Price Card */
.p-price-card{max-width:480px;background:var(--gray);border-radius:16px;padding:40px;text-align:center;margin:0 auto}
.p-price-label{font-size:13px;font-weight:600;letter-spacing:1px;margin-bottom:8px}
.p-price-amount{font-size:clamp(32px,5vw,48px);font-weight:700;margin-bottom:8px;line-height:1.2}
.p-price-amount small{font-size:16px;font-weight:400}
.p-price-note{font-size:12px;margin-top:12px;line-height:1.8}
.page-academia .p-price-card{background:var(--ac-surface2);border:1px solid rgba(255,255,255,.06)}
.page-academia .p-price-label{color:var(--ac-accent)}
.page-academia .p-price-amount{color:var(--ac-text)}
.page-academia .p-price-note{color:var(--ac-sub)}

/* Flow Steps */
.p-flow-list{max-width:600px;counter-reset:flow}
.p-flow-step{display:flex;gap:20px;padding:20px 0;counter-increment:flow}
.p-flow-step::before{content:counter(flow);display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--yellow);color:var(--brown);font-size:14px;font-weight:700;flex-shrink:0;font-family:'Cormorant Garamond',serif}
.p-flow-step p{font-size:14px;line-height:1.8;padding-top:6px}
.page-academia .p-flow-step::before{background:var(--ac-accent);color:var(--ac-dark)}
.page-academia .p-flow-step p{color:var(--ac-sub)}

/* Recommend List */
.p-recommend-list{max-width:680px}
.p-recommend-item{display:flex;align-items:baseline;gap:12px;padding:12px 0;font-size:15px;line-height:1.8}
.p-recommend-item::before{content:'\2713';color:var(--brown);font-weight:700;flex-shrink:0}
.page-academia .p-recommend-item{color:var(--ac-sub)}
.page-academia .p-recommend-item::before{color:var(--ac-accent)}

/* Policy */
.p-policy{max-width:780px}
.p-policy dt{font-size:13px;font-weight:700;margin-top:16px;letter-spacing:.5px}
.p-policy dt:first-child{margin-top:0}
.p-policy dd{font-size:13px;line-height:1.9;margin-top:4px}
.page-academia .p-policy dt{color:var(--ac-text)}
.page-academia .p-policy dd{color:var(--ac-sub)}

/* Spec Table */
.p-spec{max-width:600px}
.p-spec-row{display:flex;padding:14px 0;border-bottom:1px solid var(--gray-border);font-size:14px}
.p-spec-label{width:120px;flex-shrink:0;font-weight:600;letter-spacing:.5px}
.p-spec-value{flex:1;line-height:1.8}
.page-academia .p-spec-row{border-color:rgba(255,255,255,.08)}
.page-academia .p-spec-label{color:var(--ac-text)}
.page-academia .p-spec-value{color:var(--ac-sub)}

/* LINE CTA bottom — card style */
.p-line-cta{text-align:center;max-width:560px;margin:0 auto;background:rgba(6,199,85,.04);border:1px solid rgba(6,199,85,.15);border-radius:16px;padding:36px 32px}
.p-line-cta p{font-size:14px;margin-bottom:8px;line-height:1.8}
.p-line-cta .p-line-msg{font-size:18px;font-weight:700;color:#06C755;margin-bottom:16px;letter-spacing:.5px}
.p-line-cta a{color:#06C755;font-weight:500;transition:opacity .25s var(--ease);word-break:break-all}
.p-line-cta a:hover{opacity:.7}
.page-academia .p-line-cta{background:rgba(6,199,85,.06);border-color:rgba(6,199,85,.12)}
.page-academia .p-line-cta p{color:var(--ac-sub)}
.page-academia .p-line-cta .p-line-msg{color:#06C755}
.p-line-btn-lg{display:inline-flex;align-items:center;gap:10px;background:#06C755;color:#fff;font-size:16px;font-weight:700;padding:18px 48px;border-radius:100px;letter-spacing:.5px;margin-top:20px;transition:all .3s var(--ease)}
.p-line-btn-lg:hover{background:#05b34c;transform:translateY(-2px);box-shadow:0 8px 24px rgba(6,199,85,.25);color:#fff}
.p-line-btn-lg svg{width:24px;height:24px;fill:#fff}

/* Consultation CTA Banner (yellow) */
.p-consultation-banner{background:var(--yellow);text-align:center;padding:80px 0;border-radius:48px 48px 0 0;position:relative;margin-top:-48px;z-index:1}
.p-consultation-banner h2{font-size:24px;font-weight:700;margin-bottom:12px;color:var(--text)}
.p-consultation-banner p{font-size:14px;color:var(--text-sub);margin-bottom:32px;line-height:1.8}
.c-btn--dark{display:inline-block;background:var(--text);color:var(--white);padding:16px 44px;border-radius:100px;font-size:14px;font-weight:600;letter-spacing:1px;transition:all .3s var(--ease);border:none;cursor:pointer}
.c-btn--dark:hover{background:var(--brown);color:var(--white);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.12)}

/* Detail Footer */
.p-detail-footer{max-width:600px;margin:48px auto 0;text-align:center;padding-top:32px;border-top:1px solid var(--gray-border);font-size:13px;line-height:2}
.p-detail-footer p{margin-bottom:2px}
.p-detail-footer p:last-child{margin-bottom:0}
.p-detail-footer a{transition:color .25s var(--ease);word-break:break-all}
.p-detail-footer a:hover{color:var(--brown)}
.page-academia .p-detail-footer{border-color:rgba(255,255,255,.08);color:var(--ac-sub)}
.page-academia .p-detail-footer a{color:var(--ac-accent);opacity:.85}
.page-academia .p-detail-footer a:hover{color:var(--ac-accent);opacity:1}

/* =============================================
   Portal Page (page-portal)
   ============================================= */
.page-portal{background:#FAFAF8}
.portal{min-height:100vh;display:flex;flex-direction:column}

.portal-header{text-align:center;padding:56px 24px 40px}
.portal-logo{display:inline-flex;align-items:center;gap:12px;margin-bottom:16px}
.portal-logo-mark{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--yellow);border-radius:50%;font-family:'Cormorant Garamond',serif;font-size:26px;font-weight:600;color:var(--brown)}
.portal-logo-text{font-size:20px;font-weight:700;letter-spacing:3px;color:var(--text)}
.portal-tagline{font-size:14px;color:var(--text-sub);letter-spacing:.5px}
.portal-tagline em{font-style:italic;color:var(--brown)}

.portal-worlds{flex:1;display:grid;grid-template-columns:repeat(2,1fr);gap:16px;padding:0 48px 48px;max-width:1440px;margin:0 auto;width:100%}

.portal-card{position:relative;display:flex;align-items:flex-end;border-radius:20px;overflow:hidden;min-height:520px;transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out);opacity:0;animation:portalFadeIn .8s var(--ease-out) forwards}
/* Office card — standalone section below content */
.portal-office{padding:0 0 48px}
.portal-office .portal-card--office{min-height:280px;align-items:stretch;border-radius:20px}
.portal-card:nth-child(1){animation-delay:.1s}
.portal-card:nth-child(2){animation-delay:.25s}
.portal-card:nth-child(3){animation-delay:.4s}
@keyframes portalFadeIn{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
.portal-card:hover{transform:translateY(-8px);box-shadow:0 24px 64px rgba(0,0,0,.18)}

.portal-card-bg{position:absolute;inset:0}
.portal-card-bg img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease-out)}
.portal-card:hover .portal-card-bg img{transform:scale(1.06)}

.portal-card-content{position:relative;z-index:2;width:100%;padding:40px 32px}
.portal-card-badge{display:inline-block;font-size:11px;font-weight:700;padding:5px 16px;border-radius:20px;letter-spacing:.5px;margin-bottom:16px}
.portal-card-title{font-size:clamp(22px,2.5vw,30px);font-weight:700;line-height:1.45;letter-spacing:.5px;margin-bottom:12px}
.portal-card-desc{font-size:14px;font-weight:300;line-height:1.9;letter-spacing:.5px;margin-bottom:24px}
.portal-card-enter{display:inline-flex;align-items:center;font-size:13px;letter-spacing:2px;padding:10px 28px;border:1px solid;border-radius:100px;transition:all .35s var(--ease)}
.portal-card:hover .portal-card-enter{padding-left:32px;padding-right:24px}

/* Kids card — dark overlay with yellow accent badge */
.portal-card--kids .portal-card-bg::after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.78) 0%,rgba(0,0,0,.4) 55%,rgba(0,0,0,.15) 100%)}
.portal-card--kids .portal-card-badge{background:var(--yellow);color:var(--brown)}
.portal-card--kids .portal-card-title{color:var(--white);text-shadow:0 1px 6px rgba(0,0,0,.3)}
.portal-card--kids .portal-card-desc{color:rgba(255,255,255,.85);text-shadow:0 1px 4px rgba(0,0,0,.2)}
.portal-card--kids .portal-card-enter{color:rgba(255,255,255,.9);border-color:rgba(255,255,255,.45)}
.portal-card--kids:hover .portal-card-enter{background:rgba(255,255,255,.15);color:var(--white);border-color:rgba(255,255,255,.6)}

/* Academia card — dark gold overlay */
.portal-card--academia .portal-card-bg::after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,rgba(26,26,26,.94) 0%,rgba(26,26,26,.5) 55%,rgba(26,26,26,.25) 100%)}
.portal-card--academia .portal-card-badge{background:#C9A96E;color:#1A1A1A}
.portal-card--academia .portal-card-title{color:#F0ECE6;font-family:'Cormorant Garamond','Noto Sans JP',serif;font-weight:600;text-shadow:0 1px 6px rgba(0,0,0,.3)}
.portal-card--academia .portal-card-desc{color:rgba(255,255,255,.8);text-shadow:0 1px 4px rgba(0,0,0,.2)}
.portal-card--academia .portal-card-enter{color:#D4B87A;border-color:#D4B87A}
.portal-card--academia:hover .portal-card-enter{background:#C9A96E;color:#1A1A1A}

/* Office card — horizontal full-width, professional dark gray */
.portal-card--office .portal-card-bg::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(45,52,54,.94) 0%,rgba(45,52,54,.7) 40%,rgba(45,52,54,.15) 100%)}
.portal-card--office .portal-card-content{display:flex;flex-direction:column;justify-content:center;padding:48px 56px;max-width:520px}
.portal-card--office .portal-card-badge--office{background:rgba(255,255,255,.12);color:rgba(255,255,255,.8);border:1px solid rgba(255,255,255,.18)}
.portal-card--office .portal-card-title{color:var(--white);font-size:clamp(22px,2.5vw,28px)}
.portal-card--office .portal-card-desc{color:rgba(255,255,255,.5)}
.portal-card--office .portal-card-enter{color:rgba(255,255,255,.7);border-color:rgba(255,255,255,.3)}
.portal-card--office:hover .portal-card-enter{background:rgba(255,255,255,.15);color:var(--white);border-color:rgba(255,255,255,.5)}

.portal-section-inner{max-width:1440px;margin:0 auto;padding:0 48px}

/* Portal Quiz */
.portal-quiz{padding:48px 0 64px}
.portal-quiz-box{background:var(--white);border-radius:20px;padding:56px 48px;text-align:center;border:1px solid var(--gray-border)}
.portal-quiz-head h2{font-size:20px;font-weight:700;margin-bottom:12px;color:var(--text)}
.portal-quiz-head h2 span{font-weight:300;font-size:15px;color:var(--text-sub)}
.portal-quiz-head p{font-size:13px;color:var(--text-sub);margin-bottom:40px}

/* Portal Profile */
.portal-profile{padding:64px 0}
.portal-profile .portal-section-inner{display:grid;grid-template-columns:200px 1fr;gap:48px;align-items:center}
.portal-profile-photo{width:200px;height:200px;border-radius:50%;overflow:hidden}
.portal-profile-photo img{width:100%;height:100%;object-fit:cover}
.portal-profile-label{font-size:11px;color:var(--text-muted);letter-spacing:3px;text-transform:uppercase;display:block;margin-bottom:8px}
.portal-profile-name{font-size:24px;font-weight:700;color:var(--text);margin-bottom:16px;line-height:1.4}
.portal-profile-name span{display:block;font-size:13px;font-weight:300;color:var(--text-muted);margin-top:4px;letter-spacing:2px}
.portal-profile-bio{font-size:14px;color:var(--text-sub);line-height:2;letter-spacing:.3px}

/* Portal News */
.portal-news{padding:80px 0 64px;border-top:1px solid var(--gray-border)}
.portal-news-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--gray-border)}
.portal-news-head h2{font-size:clamp(24px,3vw,32px);font-weight:300;letter-spacing:3px;color:var(--text)}
.portal-news-all{font-size:12px;color:var(--text-muted);letter-spacing:1px;transition:color .25s var(--ease)}
.portal-news-all:hover{color:var(--text)}
.portal-news-list{display:flex;flex-direction:column}
.portal-news-item{display:flex;align-items:center;gap:16px;padding:18px 0;border-bottom:1px solid var(--gray-border);transition:background .25s var(--ease)}
.portal-news-item:hover{background:var(--gray);margin:0 -16px;padding-left:16px;padding-right:16px;border-radius:8px}
.portal-news-item time{font-size:12px;color:var(--text-muted);letter-spacing:1px;flex-shrink:0;width:72px}
.portal-news-tag{font-size:10px;font-weight:700;background:var(--yellow);color:var(--brown);padding:3px 12px;border-radius:100px;letter-spacing:.5px;white-space:nowrap;flex-shrink:0}
.portal-news-item p{font-size:14px;color:var(--text);font-weight:500;line-height:1.6}

/* Portal LINE CTA */
.portal-line{padding:0 0 48px}
.portal-line-box{display:flex;align-items:center;justify-content:center;gap:24px;background:#fff;border:2px solid #06C755;border-radius:20px;padding:40px 48px;transition:box-shadow .3s var(--ease)}
.portal-line-box:hover{box-shadow:0 8px 32px rgba(6,199,85,.12)}
.portal-line-icon{width:56px;height:56px;background:#06C755;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.portal-line-icon svg{width:32px;height:32px;fill:#fff}
.portal-line-body{flex:1}
.portal-line-body h3{font-size:18px;font-weight:700;color:var(--text);margin-bottom:4px}
.portal-line-body p{font-size:13px;color:var(--text-sub);line-height:1.6}
.portal-line-btn{display:inline-flex;align-items:center;gap:8px;background:#06C755;color:#fff;font-size:14px;font-weight:700;padding:14px 36px;border-radius:100px;letter-spacing:.5px;transition:all .3s var(--ease);flex-shrink:0}
.portal-line-btn:hover{background:#05b34c;transform:translateY(-2px);box-shadow:0 8px 24px rgba(6,199,85,.25);color:#fff}

/* LINE CTA for sub-pages */
.s-line{background:#fff;border-top:1px solid var(--gray-border);border-bottom:1px solid var(--gray-border)}
.s-line-inner{display:flex;align-items:center;justify-content:center;gap:24px;max-width:900px;margin:0 auto;padding:48px 0}
.s-line-icon{width:56px;height:56px;background:#06C755;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.s-line-icon svg{width:32px;height:32px;fill:#fff}
.s-line-body{flex:1}
.s-line-body h3{font-size:18px;font-weight:700;color:var(--text);margin-bottom:4px}
.s-line-body p{font-size:13px;color:var(--text-sub);line-height:1.6}
.s-line-btn{display:inline-flex;align-items:center;gap:8px;background:#06C755;color:#fff;font-size:14px;font-weight:700;padding:14px 36px;border-radius:100px;letter-spacing:.5px;transition:all .3s var(--ease);flex-shrink:0}
.s-line-btn:hover{background:#05b34c;transform:translateY(-2px);box-shadow:0 8px 24px rgba(6,199,85,.25);color:#fff}

/* Note CTA for academia */
.s-note{text-align:center}
.s-note-inner{max-width:720px;margin:0 auto}
.s-note-icon{font-size:48px;margin-bottom:16px}
.s-note-inner h3{font-size:20px;font-weight:700;margin-bottom:12px}
.s-note-inner p{font-size:14px;margin-bottom:32px;line-height:1.8}

/* Academia LINE override */
.page-academia .s-line{background:var(--ac-surface);border-color:rgba(255,255,255,.06)}
.page-academia .s-line-body h3{color:var(--ac-text)}
.page-academia .s-line-body p{color:var(--ac-sub)}
.page-academia .s-note-inner h3{color:var(--ac-text)}
.page-academia .s-note-inner p{color:var(--ac-sub)}

.portal-footer{text-align:center;padding:24px}
.portal-footer p{font-size:11px;color:var(--text-muted);letter-spacing:1px}

/* =============================================
   Fade-in Animation
   ============================================= */
.js-fade{opacity:0;transform:translateY(32px);transition:opacity .8s var(--ease-out),transform .8s var(--ease-out)}
.js-fade.is-visible{opacity:1;transform:translateY(0)}

/* =============================================
   Responsive
   ============================================= */
@media(max-width:1024px){
  .portal-worlds{padding:0 32px 32px;gap:12px}
  .portal-card{min-height:400px;border-radius:16px}
  .portal-office .portal-card--office{min-height:220px}
  .portal-card--office .portal-card-content{padding:36px 40px}
  .portal-card-content{padding:32px 28px}
  .portal-section-inner{padding:0 32px}
  .portal-profile .portal-section-inner{gap:36px}
  .l-container{padding:0 32px}
  .l-header-inner{padding:0 32px}
  .s-hero-content{padding:0 32px 100px}
  .s-hero-nav{left:32px}
  .s-programs-grid{grid-template-columns:repeat(2,1fr)}
  .s-news-magazine{grid-template-columns:1fr}
  .s-news-card--featured .s-news-card-img{aspect-ratio:16/9}
  .s-news-sub .s-news-card{grid-template-columns:160px 1fr}
  .p-hero{height:50vh;min-height:340px}
  .p-hero-content{padding:0 32px 48px}
  .p-course-card{grid-template-columns:240px 1fr;gap:24px}
  .p-course-card-body{padding:28px 28px 28px 0}
  .p-other-grid{grid-template-columns:repeat(3,1fr);gap:12px}
  .s-office-banner{padding:80px 0}
  .s-museum-inner{grid-template-columns:1fr}
  .s-museum-text{padding:80px 32px;text-align:center;align-items:center}
  .s-museum-visual{padding:0 32px 80px}
  .s-profile-content{grid-template-columns:1fr;gap:48px}
  .s-profile-photo{max-width:320px;margin:0 auto}
  .contact-page-layout{grid-template-columns:1fr}
  .contact-info-area{position:static}
  .l-footer-top{grid-template-columns:1fr;gap:48px}
}

@media(max-width:768px){
  .portal-header{padding:40px 24px 28px}
  .portal-logo-mark{width:40px;height:40px;font-size:22px}
  .portal-logo-text{font-size:17px;letter-spacing:2px}
  .portal-tagline{font-size:13px}
  .portal-worlds{grid-template-columns:1fr;padding:0 20px 20px;gap:14px}
  .portal-card{min-height:260px;border-radius:16px}
  .portal-office .portal-card--office{min-height:220px;border-radius:16px}
  .portal-card--office .portal-card-bg::after{background:linear-gradient(0deg,rgba(45,52,54,.92) 0%,rgba(45,52,54,.3) 55%,rgba(45,52,54,.12) 100%)}
  .portal-card--office .portal-card-content{padding:28px 24px;max-width:none}
  .portal-card-content{padding:28px 24px}
  .portal-card-title{font-size:22px}
  .portal-card-desc{font-size:13px;margin-bottom:20px}
  .portal-section-inner{padding:0 24px}
  .portal-profile{padding:56px 0 48px}
  .portal-profile .portal-section-inner{grid-template-columns:120px 1fr;gap:24px}
  .portal-profile-photo{width:120px;height:120px}
  .portal-profile-name{font-size:20px}
  .portal-profile-bio{font-size:13px}
  .portal-line-box{flex-direction:column;text-align:center;padding:32px 24px;gap:16px;border-radius:16px}
  .portal-quiz-box{padding:36px 24px;border-radius:16px}
  .portal-news{padding:0 0 56px}
  .s-line-inner{flex-direction:column;text-align:center;gap:16px;padding:36px 24px}
  .portal-news-item{flex-wrap:wrap;gap:8px 12px}
  .portal-news-item time{width:auto}
  html{font-size:15px}
  .sp-only{display:inline}
  .l-container{padding:0 24px}
  .l-header-inner{height:64px;padding:0 24px}
  .l-header-toggle{display:flex}
  .l-header-nav-list{position:fixed;top:0;left:0;right:0;bottom:0;flex-direction:column;justify-content:center;align-items:center;background:rgba(255,255,255,.98);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);gap:28px;display:none;z-index:100}
  .l-header-nav-list.is-active{display:flex}
  .l-header-nav-list a{font-size:16px!important;letter-spacing:2px!important}

  .l-section{padding:100px 0;border-radius:32px 32px 0 0;margin-top:-32px;z-index:1}
  .s-museum,.s-office-banner,.l-footer{border-radius:32px 32px 0 0;margin-top:-32px;z-index:1}
  .c-section-head{margin-bottom:48px}
  .c-section-title{letter-spacing:1px}
  .c-section-title-jp{display:block;margin-left:0;margin-top:4px;font-size:13px}

  .p-hero{height:45vh;min-height:300px}
  .p-hero-content{padding:0 24px 40px}
  .p-course-card{grid-template-columns:1fr}
  .p-course-card-img img{min-height:180px;aspect-ratio:16/9}
  .p-course-card-body{padding:24px}
  .p-course-card-body h3{font-size:18px}
  .p-other-grid{grid-template-columns:1fr;gap:12px}
  .s-hero-content{flex-direction:column;align-items:flex-start;gap:16px;padding:0 24px 90px}
  .s-hero-en{white-space:normal}
  .s-hero-nav{left:24px;bottom:24px}
  .s-programs-grid{grid-template-columns:1fr;gap:16px}
  .s-programs-quiz{padding:36px 24px;margin-top:48px}
  .quiz-options{flex-direction:column;align-items:stretch}
  .quiz-opt{padding:12px 20px}
  .quiz-result-name{font-size:22px}
  .s-news-sub .s-news-card{grid-template-columns:1fr}
  .s-news-sub .s-news-card-img{aspect-ratio:16/9;min-height:auto}
  .s-office-banner{padding:64px 0}
  .s-office-banner-services{gap:8px}
  .s-office-banner-services span{padding:6px 16px;font-size:11px}
  .s-instagram-grid{grid-template-columns:repeat(3,1fr);gap:3px}
  .s-museum-text{padding:60px 24px}
  .s-museum-lead{font-size:20px}
  .s-museum-visual{padding:0 24px 60px}
  .s-profile-name{font-size:24px}
  .s-schedule-embed{height:400px}
  .c-form-row{grid-template-columns:1fr}
  .s-consultation-form{padding:36px 24px}
  .contact-form{padding:36px 24px}
  .gallery-grid{grid-template-columns:repeat(2,1fr);gap:8px}
  .gallery-item--wide{grid-column:span 2}
  .gallery-item--tall{grid-row:auto}
  .gallery-placeholder{min-height:160px}
  .l-footer-nav{grid-template-columns:1fr 1fr;gap:32px 16px}
  .p-line-cta{padding:28px 20px}
  .p-line-cta .p-line-msg{font-size:16px}
  .p-detail-footer{font-size:12px;margin-top:36px;padding-top:24px}
  .p-spec-label{width:100px}
}

@media(max-width:480px){
  .l-container{padding:0 16px}
  .s-hero-title{font-size:32px;letter-spacing:0}
  .s-hero-content{padding-bottom:80px}
  .c-btn{width:100%;justify-content:center}
  .s-programs-card-body{padding:20px 24px 24px}
  .s-programs-card-body h3{font-size:16px}
  .l-footer-nav{grid-template-columns:1fr}
  .s-museum-grid{gap:6px}
  .p-line-cta{padding:24px 16px}
  .p-line-cta .p-line-msg{font-size:15px}
  .p-spec-row{flex-direction:column;gap:2px;padding:12px 0}
  .p-spec-label{width:auto;font-size:12px;color:var(--text-muted)}
  .page-academia .p-spec-label{color:var(--ac-muted)}
}
