:root { --ink:#24354b; --espresso:#172536; --paper:#fff3f7; --cream:#fffafd; --champagne:#f39aba; --gold:#dc4e84; --soft-gold:#d9f5fb; --muted:#6f7180; --line:rgba(70,92,122,.16); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:#fffbfd; color:var(--ink); font-family:"Noto Sans JP","Yu Gothic","Hiragino Kaku Gothic ProN",system-ui,sans-serif; }
a { color:inherit; text-decoration:none; }
img { max-width:100%; display:block; }
button, summary { font:inherit; }
.site-shell { min-height:100vh; overflow:hidden; }
.utility { min-height:31px; padding:0 clamp(18px,4vw,64px); display:flex; align-items:center; justify-content:flex-end; gap:30px; background:var(--espresso); color:#fbe7ef; font:10px/1.4 Georgia,serif; letter-spacing:.14em; }
.utility span:first-child { margin-right:auto; }
.header { min-height:108px; display:grid; grid-template-columns:175px 1fr auto; align-items:center; gap:28px; padding:10px clamp(18px,4vw,64px); background:rgba(255,255,255,.97); border-bottom:1px solid rgba(220,78,132,.18); position:relative; z-index:20; }
.brand img { width:155px; height:78px; object-fit:contain; }
.desktop-nav { display:flex; justify-content:flex-end; gap:clamp(10px,1.45vw,25px); }
.desktop-nav a { padding:41px 0 36px; border-bottom:2px solid transparent; color:#675d50; font-size:10px; font-weight:700; letter-spacing:.06em; white-space:nowrap; }
.desktop-nav a.active,.desktop-nav a:hover { color:var(--gold); border-color:var(--champagne); }
.header-actions { display:flex; align-items:center; gap:10px; }
.language { position:relative; }
.language summary { list-style:none; min-width:92px; padding:11px 13px; border:1px solid var(--line); cursor:pointer; color:#5a4b39; font-size:11px; }
.language summary::-webkit-details-marker { display:none; }
.language[open] div { position:absolute; right:0; top:45px; width:146px; padding:8px; display:grid; gap:2px; background:#fff; box-shadow:0 18px 45px rgba(35,28,22,.17); }
.language div a { padding:9px 10px; font-size:12px; }
.language div a:hover { background:var(--paper); }
.mobile-menu { display:none; }
.hero { position:relative; overflow:hidden; background:#fff8fb; }
.hero-picture { display:block; width:100%; aspect-ratio:12/5; overflow:hidden; background:linear-gradient(135deg,#fff0f6,#e7faff); }
.hero-picture img { width:100%; height:100%; object-fit:cover; }
.hero-carousel { width:100%; aspect-ratio:12/5; position:relative; overflow:hidden; background:linear-gradient(135deg,#fff0f6,#e7faff); }
.hero-slides,.hero-slide,.hero-slide>a { width:100%; height:100%; display:block; }
.hero-slide { position:absolute; inset:0; opacity:0; transition:opacity .7s ease; pointer-events:none; }
.hero-slide.is-active { opacity:1; pointer-events:auto; }
.hero-slide img { width:100%; height:100%; object-fit:cover; }
.hero-carousel-controls { min-width:170px; height:42px; padding:0 10px; display:flex; align-items:center; justify-content:space-between; gap:12px; position:absolute; left:50%; bottom:18px; z-index:3; transform:translateX(-50%); background:rgba(45,36,27,.76); border:1px solid rgba(255,255,255,.5); backdrop-filter:blur(8px); }
.hero-carousel-controls>button { width:32px; height:32px; border:0; background:transparent; color:#fff; font-size:24px; cursor:pointer; }
.hero-dots { display:flex; gap:8px; }
.hero-dots button { width:8px; height:8px; padding:0; border:1px solid #fff; border-radius:50%; background:transparent; cursor:pointer; }
.hero-dots button.is-active { background:#fff; }
.hero-copy { width:min(100%,1040px); margin:auto; padding:clamp(54px,6vw,88px) clamp(24px,6vw,70px); color:var(--ink); text-align:center; }
.kicker { margin:0 0 18px; color:var(--champagne); font:700 11px/1.5 Georgia,serif; letter-spacing:.3em; }
.hero h1 { margin:0; font:400 clamp(38px,4.6vw,66px)/1.42 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.08em; }
.hero h1 span { display:block; }
.hero-copy>p:not(.kicker) { max-width:680px; margin:30px auto 38px; color:var(--muted); font-size:14px; line-height:2.25; }
.hero-copy .contact-buttons { justify-content:center; }
.home-heading { width:100%; text-align:center; }
.home-heading h2 { margin:0; color:var(--gold); font:400 clamp(44px,6vw,76px)/1.15 Georgia,"Times New Roman",serif; letter-spacing:.075em; text-transform:uppercase; }
.home-heading p { margin:9px 0 0; color:var(--ink); font:600 14px/1.6 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.12em; }
.home-heading.inverse h2 { color:var(--champagne); }
.home-heading.inverse p { color:#fff; }
.button { min-height:49px; padding:0 25px; display:inline-flex; align-items:center; justify-content:center; border:1px solid; font-size:12px; font-weight:700; letter-spacing:.09em; transition:.2s ease; }
.button:hover { transform:translateY(-2px); }
.button.gold { background:linear-gradient(100deg,#f06397,#ffad83); border-color:#e55d8e; color:#fff; }
.button.outline { border-color:currentColor; color:inherit; }
.button.line { background:#32a96b; border-color:#32a96b; color:#fff; }
.button.mail { background:#fff; border-color:#fff; color:#342a21; }
.contact-buttons { display:flex; flex-wrap:wrap; gap:12px; }
.concept { min-height:590px; display:grid; grid-template-columns:minmax(180px,24%) 1fr; align-items:center; gap:clamp(38px,7vw,110px); position:relative; overflow:hidden; padding:clamp(78px,9vw,130px) clamp(28px,7vw,110px); background:linear-gradient(120deg,#fff1f6 0%,#ffffff 58%,#eafaff 100%); }
.concept:after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(105deg,rgba(255,255,255,.2),transparent 42%,rgba(201,167,82,.035)); }
.concept-title { height:390px; position:relative; z-index:1; border-right:1px solid rgba(39,32,23,.7); font-family:Georgia,"Times New Roman",serif; }
.concept-title span,.concept-title b { position:absolute; left:50%; writing-mode:vertical-rl; transform:translateX(-50%) rotate(180deg); white-space:nowrap; }
.concept-title span { bottom:0; color:rgba(170,130,43,.14); font-size:clamp(56px,6vw,92px); font-weight:400; letter-spacing:.03em; }
.concept-title b { top:50%; color:#17120d; font-size:clamp(35px,3.8vw,54px); font-weight:400; letter-spacing:.02em; transform:translate(-2%,-50%) rotate(180deg); }
.concept-title small { position:absolute; right:-18px; bottom:-4px; color:#2f281f; font:500 10px/1.5 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.2em; writing-mode:vertical-rl; }
.concept-copy { max-width:900px; position:relative; z-index:1; text-align:center; }
.concept-copy h2 { margin:0 0 clamp(42px,5vw,68px); font:600 clamp(20px,2vw,28px)/1.9 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.06em; }
.concept-copy p { max-width:850px; margin:0 auto 28px; color:#625b51; font:400 clamp(13px,1.08vw,16px)/2.2 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.04em; }
.concept-copy p:last-child { margin-bottom:0; }
.content-section,.page-body { max-width:1300px; margin:auto; padding:clamp(72px,9vw,130px) clamp(20px,4vw,52px); }
.page-body.narrow { max-width:1040px; }
.section-title { display:flex; align-items:end; justify-content:space-between; gap:20px; position:relative; }
.section-title .home-heading { flex:1; }
.section-title>.text-link { position:absolute; right:0; bottom:5px; }
.section-note { margin:16px 0 42px; color:var(--muted); font-size:13px; line-height:1.9; }
.text-link { font-size:11px; font-weight:700; letter-spacing:.1em; color:var(--gold); }
.therapist-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:30px 18px; }
.therapist-card { min-width:0; }
.new-face-home { max-width:none; background:linear-gradient(145deg,#fff0f6,#f2fbff); }
.new-face-home .therapist-grid { max-width:820px; margin:45px auto 0; grid-template-columns:repeat(auto-fit,minmax(270px,360px)); justify-content:center; }
.new-face-home .therapist-card { padding:12px; background:#fffaf0; border:1px solid rgba(170,130,43,.25); box-shadow:0 20px 55px rgba(78,55,21,.08); }
.portrait { aspect-ratio:3/4; display:block; position:relative; overflow:hidden; background:#eee4d3; }
.rank-badge { position:absolute; z-index:2; top:0; left:0; min-width:54px; padding:12px 10px; background:var(--ink); color:#fff; text-align:center; font:24px Georgia,serif; }
.portrait img { width:100%; height:100%; object-fit:cover; transition:.5s ease; }
.portrait-placeholder { width:100%; height:100%; display:grid; place-items:center; color:#9a8f7e; font:11px Georgia,"Times New Roman",serif; letter-spacing:.18em; }
.portrait:hover img { transform:scale(1.035); }
.portrait:after { content:""; position:absolute; inset:10px; border:1px solid rgba(255,255,255,.54); pointer-events:none; }
.portrait-overlay { position:absolute; inset:auto 0 0; padding:22px 12px; background:linear-gradient(transparent,rgba(31,23,16,.75)); color:#fff; font:9px Georgia,serif; letter-spacing:.2em; text-align:center; opacity:0; transition:.25s ease; }
.portrait:hover .portrait-overlay { opacity:1; }
.therapist-info { padding:17px 3px 0; }
.therapist-info .shift { margin:0 0 7px; color:var(--gold); font:12px Georgia,serif; }
.therapist-info .roman { margin:0 0 5px; color:var(--gold); font:9px Georgia,serif; letter-spacing:.18em; text-transform:uppercase; }
.therapist-info h3 { margin:0; font:500 20px/1.5 "Yu Mincho",serif; }
.therapist-info h3 small { color:var(--muted); font-size:11px; }
.therapist-info .stats { margin:5px 0; color:var(--muted); font:10px Georgia,serif; }
.catchphrase { margin:8px 0 0; color:#675f55; font-size:11px; line-height:1.7; }
.schedule-date-picker { margin:38px 0 0; text-align:center; }
.schedule-date-picker nav { display:flex; justify-content:center; gap:10px; }
.schedule-date-picker a { width:78px; min-height:78px; display:flex; flex-direction:column; align-items:center; justify-content:center; border:1px solid rgba(170,130,43,.34); border-radius:50%; background:#fff; color:#3f372d; transition:.2s ease; }
.schedule-date-picker a:hover { border-color:var(--gold); transform:translateY(-2px); }
.schedule-date-picker a.active { background:linear-gradient(145deg,#b78d36,#d8b95f); border-color:#b38a33; color:#fff; box-shadow:0 10px 25px rgba(145,103,31,.2); }
.schedule-date-picker a small { margin-bottom:2px; font-size:9px; font-weight:700; letter-spacing:.06em; }
.schedule-date-picker a strong { font:500 17px/1.15 Georgia,"Times New Roman",serif; }
.schedule-date-picker a span { margin-top:3px; font-size:10px; }
.schedule-date-picker a.sun:not(.active) span { color:#b7584b; }
.schedule-date-picker a.sat:not(.active) span { color:#416b9e; }
.schedule-unavailable { margin-top:35px; padding:38px; display:flex; align-items:center; justify-content:space-between; gap:24px; background:var(--paper); border:1px solid var(--line); }
.schedule-unavailable p { margin:0; color:var(--muted); line-height:1.9; }
.schedule-unavailable.large { min-height:340px; flex-direction:column; justify-content:center; text-align:center; }
.system-preview { padding:clamp(78px,9vw,135px) max(clamp(22px,7vw,110px),calc((100vw - 1300px)/2)); padding-bottom:clamp(35px,4vw,52px); display:grid; gap:45px; background:linear-gradient(180deg,#ffffff,#fff2f7); }
.system-preview>div:first-child { max-width:760px; margin:auto; text-align:center; }
.system-preview>div:first-child>p:last-child { margin:22px auto 0; color:var(--muted); line-height:2; }
.home-price-area { width:min(100%,860px); margin:auto; text-align:center; }
.home-price-area>.text-link { display:inline-block; margin-top:30px; }
.price-preview { width:min(100%,860px); margin:auto; padding:clamp(44px,7vw,78px) clamp(30px,8vw,105px); border:1px solid var(--champagne); box-shadow:inset 0 0 0 10px #fff,inset 0 0 0 14px rgba(170,130,43,.82),0 24px 70px rgba(86,61,24,.08); background:#fff; text-align:center; }
.course-name { margin:0 0 30px; font:400 clamp(18px,2.5vw,25px)/1.6 "Yu Mincho",serif; letter-spacing:.08em; }
.price-list { width:min(100%,460px); margin:auto; }
.price-list>div { padding:13px 4px; display:flex; justify-content:space-between; align-items:baseline; border-bottom:1px solid rgba(170,130,43,.17); }
.price-list span { font:24px Georgia,serif; }
.price-list small { font-size:11px; letter-spacing:.08em; }
.price-list strong { font:28px Georgia,serif; }
.price-fees { margin:42px 0 32px; display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid rgba(170,130,43,.3); border-bottom:1px solid rgba(170,130,43,.3); }
.price-fees p { margin:0; padding:22px 14px; display:grid; gap:9px; border-right:1px solid rgba(170,130,43,.2); }
.price-fees p:last-child { border-right:0; }
.price-fees span { color:var(--muted); font:9px Georgia,serif; letter-spacing:.09em; }
.price-fees strong { font:21px Georgia,serif; }
.price-preview>.text-link { display:inline-block; margin-top:4px; }
.options-home { padding:0 clamp(18px,7vw,110px); background:#fff2f7; }
.options-frame { width:min(100%,860px); margin:auto; padding:clamp(46px,6vw,72px) clamp(28px,8vw,100px); border:1px solid var(--champagne); box-shadow:inset 0 0 0 10px #fff,inset 0 0 0 14px rgba(170,130,43,.82); background:#fff; }
.options-list { width:min(100%,560px); margin:38px auto 0; display:grid; grid-template-columns:1fr; border-top:1px solid rgba(220,78,132,.25); border-bottom:1px solid rgba(220,78,132,.25); text-align:center; }
.options-list article { min-height:145px; padding:30px 20px; border-right:1px solid rgba(170,130,43,.22); }
.options-list article:last-child { border-right:0; }
.options-list strong { display:block; margin-bottom:13px; color:var(--ink); font:500 25px/1.2 Georgia,"Times New Roman",serif; }
.options-list p { margin:5px 0 0; color:var(--muted); font:400 14px/1.7 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.06em; }
.service-style-home { padding:clamp(35px,4vw,52px) clamp(18px,7vw,110px) clamp(75px,9vw,130px); background:linear-gradient(145deg,#fff2f7,#effbff); }
.service-style-frame { width:min(100%,860px); margin:auto; padding:clamp(48px,7vw,86px) clamp(28px,8vw,100px); border:1px solid var(--champagne); box-shadow:inset 0 0 0 10px #fff,inset 0 0 0 14px rgba(170,130,43,.82); background:#fff; }
.service-style-lead { text-align:center; }
.service-style-lead { margin:18px 0 44px; color:var(--muted); font:17px Georgia,serif; }
.service-style-list { display:grid; gap:38px; }
.service-style-list article { display:grid; grid-template-columns:54px 1fr; gap:24px; padding-top:35px; border-top:1px solid rgba(170,130,43,.25); }
.service-style-list article>span { color:var(--gold); font:24px Georgia,serif; }
.service-style-list h3 { margin:0 0 10px; font:500 18px/1.75 "Yu Mincho",serif; }
.service-style-list h3:not(:first-child) { margin-top:26px; color:#5f5141; font-family:Georgia,serif; }
.service-style-list p { margin:0; color:var(--muted); font-size:13px; line-height:2; }
.access-preview { display:grid; grid-template-columns:1fr 1fr; background:var(--espresso); color:#fff; }
.access-preview>div:first-child { padding:clamp(70px,8vw,125px); }
.access-preview p:not(.kicker) { max-width:540px; color:#cfc5b8; line-height:2.1; }
.access-preview .button { margin-top:18px; }
.map-mark,.map-panel { min-height:400px; display:flex; align-items:center; justify-content:center; gap:28px; background:repeating-linear-gradient(30deg,#e9f8fb 0 2px,#fff5f9 2px 36px); color:var(--ink); }
.map-mark b,.map-panel b { width:105px; height:105px; display:grid; place-items:center; border-radius:50%; background:linear-gradient(145deg,#ff9abd,#78d4ea); color:#fff; font:42px Georgia,serif; box-shadow:0 18px 44px rgba(58,89,124,.2); }
.map-mark span { font:11px/1.8 Georgia,serif; letter-spacing:.16em; }
.google-map { display:block; min-height:440px; padding:0; overflow:hidden; background:#f4f1ea; }
.google-map iframe { display:block; width:100%; min-height:440px; height:100%; border:0; }
.section-hero { padding:clamp(75px,8vw,125px) clamp(22px,9vw,145px); background:linear-gradient(125deg,#2d241b,#4e3d2b); color:#fff; position:relative; overflow:hidden; }
.section-hero:after { content:"H"; position:absolute; right:6vw; top:-52px; color:rgba(255,255,255,.05); font:220px Georgia,serif; }
.section-hero h1 { margin:0; font:400 clamp(43px,5.5vw,76px)/1.3 "Yu Mincho",serif; }
.section-hero>p:last-child:not(.kicker) { max-width:720px; margin:22px 0 0; color:#d6cfc5; line-height:1.9; }
.course-pricing-stack { display:grid; gap:44px; }
.course-price-card { padding:22px; background:#fde1e4; }
.course-price-card__inner { min-height:490px; padding:52px clamp(42px,7vw,96px) 64px; position:relative; background:#fff; }
.course-price-card__inner:before { content:""; position:absolute; top:0; left:50%; transform:translateX(-50%); border-left:24px solid transparent; border-right:24px solid transparent; border-top:24px solid #fde1e4; }
.course-price-card h2 { margin:0 0 22px; color:#161616; font:500 clamp(18px,2.2vw,24px)/1.7 "Yu Mincho","Hiragino Mincho ProN",serif; letter-spacing:.06em; text-align:center; }
.course-price-card h2:after { content:""; width:60px; height:1px; margin:7px auto 0; display:block; background:#161616; }
.course-price-card__list { width:min(100%,585px); margin:auto; }
.course-price-card__list>div { min-height:70px; padding:15px 40px; display:grid; grid-template-columns:1fr 1fr; align-items:center; border-bottom:1px solid #222; color:#111; }
.course-price-card__list span,.course-price-card__list strong { font:400 clamp(18px,2vw,23px)/1.4 "Yu Mincho","Hiragino Mincho ProN",serif; }
.course-price-card__list strong { text-align:right; }
.subheading { margin:0 0 28px; font:400 26px Georgia,serif; letter-spacing:.08em; }
.price-table { border-top:1px solid var(--ink); }
.price-table>div { padding:25px 10px; display:grid; grid-template-columns:1fr 1fr 1fr; align-items:baseline; border-bottom:1px solid var(--line); }
.price-table strong { font:36px Georgia,serif; text-align:center; }
.price-table strong small { font-size:10px; }
.price-table b { font:20px Georgia,serif; text-align:right; }
.price-table span { color:var(--muted); font:10px Georgia,serif; letter-spacing:.12em; }
.course-spacer { margin-top:70px; }
.fee-grid { margin:42px 0 70px; display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); }
.fee-grid article { padding:28px; display:grid; gap:12px; background:var(--paper); }
.fee-grid span { color:var(--muted); font:9px Georgia,serif; letter-spacing:.15em; }
.fee-grid strong { font:26px Georgia,serif; }
.service-notes { display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.service-notes article { padding:35px; border:1px solid var(--line); }
.service-notes article>span,.recruit-grid article>span { color:var(--champagne); font:28px Georgia,serif; }
.service-notes h3 { font:400 20px "Yu Mincho",serif; }
.service-notes p,.translation-note { color:var(--muted); font-size:13px; line-height:2; }
.translation-note { margin-top:30px; }
.news-list article { padding:30px 2px; display:grid; grid-template-columns:130px 1fr auto; gap:25px; border-bottom:1px solid var(--line); }
.news-list time { color:var(--gold); font:12px Georgia,serif; }
.news-list h2 { margin:0 0 10px; font:400 21px "Yu Mincho",serif; }
.news-list p { margin:0; color:var(--muted); font-size:12px; }
.event-list { display:grid; gap:24px; }
.coupon { padding:clamp(40px,7vw,85px); border:1px solid var(--champagne); background:linear-gradient(145deg,#fff,#fff0f6); text-align:center; }
.coupon>span { color:var(--gold); font:10px Georgia,serif; letter-spacing:.25em; }
.coupon h2 { margin:20px 0; font:400 clamp(28px,4vw,45px) "Yu Mincho",serif; }
.coupon>p { max-width:650px; margin:0 auto 30px; color:var(--muted); line-height:2; }
.coupon .contact-buttons { justify-content:center; }
.recruit-grid { display:grid; grid-template-columns:1fr 1fr; gap:1px; margin-bottom:35px; background:var(--line); }
.recruit-grid article { padding:38px; background:var(--cream); }
.recruit-grid h2 { font:400 24px "Yu Mincho",serif; }
.recruit-grid p,.staff-callout { color:var(--muted); line-height:1.9; }
.staff-callout { margin-bottom:35px; padding:40px; background:var(--paper); }
.contact-layout { display:grid; grid-template-columns:.9fr 1.1fr; gap:60px; }
.info-table { border-top:1px solid var(--ink); }
.info-table p { margin:0; padding:22px 5px; display:grid; grid-template-columns:160px 1fr; border-bottom:1px solid var(--line); line-height:1.7; }
.info-table span { color:var(--muted); font-size:11px; }
.map-panel { min-height:420px; flex-direction:column; }
.map-panel p { margin:0; font:11px Georgia,serif; letter-spacing:.2em; }
.map-panel small { color:var(--muted); }
.ranking-list { display:grid; gap:22px; }
.ranking-list article { min-height:190px; display:grid; grid-template-columns:90px 150px 1fr; align-items:center; gap:30px; border-bottom:1px solid var(--line); }
.ranking-list article>span { color:var(--gold); font:24px Georgia,serif; }
.ranking-list img { width:150px; height:180px; object-fit:cover; }
.ranking-list h2 { margin:5px 0; font:400 27px "Yu Mincho",serif; }
.ranking-list p,.ranking-list small { color:var(--muted); font:10px Georgia,serif; letter-spacing:.1em; }
.contact-card { display:grid; gap:35px; }
.contact-card .button { min-width:190px; }
.mail-link { color:var(--gold); font:18px Georgia,serif; }
.profile-layout { display:grid; grid-template-columns:minmax(320px,.95fr) minmax(360px,1.05fr); gap:75px; align-items:center; }
.profile-portrait { aspect-ratio:3/4; overflow:hidden; background:var(--paper); }
.profile-portrait img { width:100%; height:100%; object-fit:cover; }
.profile-media { display:grid; gap:12px; }
.profile-gallery { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.profile-gallery img { width:100%; aspect-ratio:3/4; object-fit:cover; background:var(--paper); }
.profile-message { margin:28px 0; padding:22px 24px; border:1px solid var(--line); background:rgba(255,255,255,.72); }
.profile-message h3 { margin:0 0 12px; font:500 16px "Yu Mincho",serif; }
.profile-message p { margin:0; color:var(--muted); line-height:1.9; }
.profile-gallery { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.profile-gallery img { width:100%; aspect-ratio:3/4; object-fit:cover; background:var(--paper); }
.profile-messages { width:min(940px,calc(100% - 40px)); margin:0 auto 90px; display:grid; gap:18px; }
.profile-messages article { padding:32px; border:1px solid rgba(170,130,43,.24); background:#fff; }
.profile-messages h2 { margin:0 0 14px; font:400 23px/1.5 "Yu Mincho",serif; }
.profile-messages p { margin:0; white-space:pre-wrap; line-height:2; color:var(--muted); }
.profile-data h2 { margin:0 0 28px; font:400 42px "Yu Mincho",serif; }
.profile-data h2 small { color:var(--muted); font-size:15px; }
.profile-data dl { border-top:1px solid var(--ink); }
.profile-data dl div { padding:17px 0; display:grid; grid-template-columns:125px 1fr; border-bottom:1px solid var(--line); }
.profile-data dt { color:var(--muted); font:10px Georgia,serif; letter-spacing:.12em; }
.profile-data dd { margin:0; }
.profile-data>p:not(.kicker) { color:var(--muted); line-height:2; }
.tags { display:flex; flex-wrap:wrap; gap:8px; margin:25px 0; }
.tags span { padding:8px 12px; border:1px solid var(--line); color:var(--gold); font-size:10px; }
.booking-bar { padding:42px clamp(22px,6vw,90px); display:flex; align-items:center; justify-content:space-between; gap:24px; background:#3b3026; color:#fff; }
.booking-bar>div:first-child { display:grid; gap:8px; }
.booking-bar span { color:var(--champagne); font:10px Georgia,serif; letter-spacing:.28em; }
.booking-bar strong { font:400 14px "Yu Mincho",serif; }
.booking-actions { display:flex; gap:10px; }
footer { padding:65px clamp(22px,6vw,90px) 34px; display:grid; grid-template-columns:.5fr 1fr 1fr; gap:50px; align-items:start; background:var(--espresso); color:#b9aea0; font-size:11px; line-height:1.9; }
.footer-brand img { width:155px; height:90px; object-fit:contain; border-radius:8px; opacity:.96; }
.legal { text-align:right; }
.mobile-contact-dock { display:none; }

@media (max-width:1150px) {
  .desktop-nav { display:none; }
  .header { grid-template-columns:1fr auto; }
  .mobile-menu { display:block; position:relative; }
  .mobile-menu summary { width:44px; height:44px; display:grid; place-content:center; gap:5px; list-style:none; cursor:pointer; }
  .mobile-menu summary::-webkit-details-marker { display:none; }
  .mobile-menu summary span { width:22px; height:1px; background:var(--ink); }
  .mobile-menu[open] nav { position:absolute; right:0; top:50px; width:min(330px,84vw); max-height:70vh; overflow:auto; padding:15px; display:grid; background:#fff; box-shadow:0 18px 45px rgba(35,28,22,.2); }
  .mobile-menu nav a { padding:12px; border-bottom:1px solid var(--line); font-size:12px; }
  .therapist-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media (max-width:760px) {
  body { background:#fffbfd; }
  .site-shell { padding-bottom:70px; overflow:clip; }
  .utility { min-height:28px; padding:0 16px; justify-content:space-between; gap:10px; color:#e2d5be; font-size:9px; letter-spacing:.18em; }
  .utility span:first-child { display:none; }
  .header { min-height:82px; padding:6px 16px; position:sticky; top:0; background:rgba(255,255,255,.93); border-bottom-color:rgba(220,78,132,.25); box-shadow:0 8px 28px rgba(80,58,89,.06); backdrop-filter:blur(18px) saturate(1.08); }
  .brand img { width:126px; height:64px; }
  .header-actions { gap:8px; }
  .language summary { min-width:0; width:42px; height:42px; padding:0; border:1px solid rgba(170,130,43,.42); border-radius:50%; overflow:hidden; white-space:nowrap; color:transparent; position:relative; }
  .language summary:after { content:"JP"; color:var(--gold); position:absolute; inset:0; display:grid; place-items:center; font:10px Georgia,serif; letter-spacing:.08em; }
  .mobile-menu summary { width:42px; height:42px; border:1px solid rgba(170,130,43,.42); border-radius:50%; gap:4px; }
  .mobile-menu summary span { width:19px; }
  .mobile-menu summary span { background:var(--gold); }
  .hero-picture { aspect-ratio:4/3; }
  .hero-carousel { aspect-ratio:4/3; }
  .hero-picture img { object-position:58% center; }
  .hero-copy { padding:44px 24px 56px; border-bottom:1px solid rgba(170,130,43,.12); }
  .hero-copy .kicker { margin-bottom:15px; font-size:9px; letter-spacing:.34em; }
  .hero h1 { font-size:clamp(27px,7.5vw,31px); line-height:1.62; letter-spacing:.055em; }
  .hero-copy>p:not(.kicker) { margin:23px auto 30px; color:#746a5c; font-size:12px; line-height:2.15; }
  .hero-copy .contact-buttons { flex-direction:row; }
  .hero-copy .button { min-height:47px; flex:1; padding:0 10px; font-size:10px; letter-spacing:.12em; }
  .hero-copy .button.gold { background:#f6efdf; border-color:#b79242; color:#4e3b1d; }
  .hero-copy .button.line { background:#506f5d; border-color:#506f5d; }
  .concept,.system-preview,.access-preview,.contact-layout { grid-template-columns:1fr; }
  .system-preview,.access-preview>div:first-child { padding:68px 22px; }
  .google-map,.google-map iframe { min-height:360px; }
  .concept { min-height:0; gap:40px; padding:66px 22px 72px; }
  .concept-title { width:min(100%,310px); height:auto; margin:auto; padding:0 0 22px; border-right:0; border-bottom:1px solid rgba(39,32,23,.55); text-align:center; }
  .concept-title span { left:50%; top:-15px; bottom:auto; color:rgba(170,130,43,.09); font-size:46px; writing-mode:horizontal-tb; transform:translateX(-50%); }
  .concept-title b { position:relative; left:auto; top:auto; display:block; font-size:37px; letter-spacing:.11em; writing-mode:horizontal-tb; transform:none; }
  .concept-title small { right:auto; bottom:-29px; left:50%; writing-mode:horizontal-tb; transform:translateX(-50%); }
  .concept-copy h2 { margin-bottom:34px; font-size:18px; line-height:1.95; }
  .concept-copy p { margin-bottom:23px; font-size:12px; line-height:2.2; }
  .content-section,.page-body { padding:62px 18px; }
  .section-title { align-items:flex-start; }
  .home-heading h2 { font-size:clamp(34px,9.5vw,42px); line-height:1.15; letter-spacing:.09em; }
  .home-heading p { margin-top:9px; font-size:12px; letter-spacing:.15em; }
  .section-title>.text-link { position:static; margin-top:20px; white-space:nowrap; }
  .therapist-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:25px 10px; }
  .schedule-home .therapist-grid,.new-face-home .therapist-grid { margin:35px -18px 0; padding:0 24px 15px; display:flex; justify-content:flex-start; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; }
  .schedule-home .therapist-grid::-webkit-scrollbar,.new-face-home .therapist-grid::-webkit-scrollbar { display:none; }
  .schedule-home .therapist-card,.new-face-home .therapist-card { flex:0 0 78%; padding:10px; scroll-snap-align:center; background:rgba(255,252,245,.96); border:1px solid rgba(170,130,43,.24); box-shadow:0 18px 45px rgba(66,47,21,.08); }
  .therapist-card { transition:transform .25s ease,box-shadow .25s ease; }
  .therapist-card:active { transform:scale(.992); }
  .therapist-info h3 { font-size:16px; }
  .therapist-info .stats { font-size:8px; }
  .catchphrase { font-size:10px; }
  .portrait-overlay { display:none; }
  .schedule-date-picker { margin-top:30px; }
  .schedule-date-picker nav { margin:0 -18px; padding:0 18px 8px; justify-content:flex-start; gap:8px; overflow-x:auto; scrollbar-width:none; }
  .schedule-date-picker nav::-webkit-scrollbar { display:none; }
  .schedule-date-picker a { width:62px; min-width:62px; min-height:62px; background:rgba(255,253,248,.82); border-color:rgba(170,130,43,.42); box-shadow:inset 0 0 0 3px rgba(255,255,255,.7); }
  .schedule-date-picker a.active { background:#b5934b; border-color:#9f7b31; box-shadow:inset 0 0 0 3px rgba(255,255,255,.18),0 8px 20px rgba(97,66,20,.14); }
  .schedule-date-picker a strong { font-size:15px; }
  .schedule-date-picker a span { font-size:9px; }
  .schedule-unavailable { padding:28px 20px; align-items:stretch; flex-direction:column; }
  .system-preview { gap:38px; padding-bottom:32px; }
  .system-preview,.options-home,.service-style-home { background-size:auto 100%; }
  .price-preview { padding:40px 26px; box-shadow:inset 0 0 0 7px #fff,inset 0 0 0 10px rgba(170,130,43,.82),0 18px 50px rgba(86,61,24,.08); }
  .course-name { margin-bottom:24px; font-size:15px; letter-spacing:.06em; }
  .price-list { width:min(100%,230px); }
  .price-list>div { padding:9px 4px; display:grid; grid-template-columns:76px 90px; justify-content:center; gap:12px; }
  .price-list span { font-size:17px; text-align:right; }
  .price-list span::after { content:" :"; }
  .price-list small { font-size:9px; }
  .price-list strong { font-size:19px; text-align:left; }
  .price-fees { grid-template-columns:1fr; }
  .price-fees p { padding:14px 8px; grid-template-columns:1fr auto; align-items:center; border-right:0; border-bottom:1px solid rgba(170,130,43,.17); }
  .price-fees p:last-child { border-bottom:0; }
  .price-fees span { font-size:8px; }
  .price-fees strong { font-size:17px; }
  .options-home { padding:0 22px; }
  .options-frame { padding:42px 26px; box-shadow:inset 0 0 0 7px #fff,inset 0 0 0 10px rgba(170,130,43,.82); }
  .options-list { margin-top:30px; grid-template-columns:1fr; }
  .options-list article { min-height:0; padding:20px 16px; border-right:0; border-bottom:1px solid rgba(170,130,43,.22); }
  .options-list article:last-child { border-bottom:0; }
  .options-list strong { margin-bottom:9px; font-size:18px; }
  .options-list p { font-size:12px; }
  .service-style-home { padding:32px 22px 55px; }
  .service-style-frame { padding:45px 27px; box-shadow:inset 0 0 0 7px #fff,inset 0 0 0 10px rgba(170,130,43,.82); }
  .service-style-lead { margin:15px 0 35px; font-size:15px; line-height:1.7; }
  .service-style-list article { grid-template-columns:1fr; gap:13px; }
  .service-style-list h3 { font-size:16px; }
  .service-style-list p { font-size:12px; line-height:1.9; }
  .section-hero { padding:70px 20px; }
  .section-hero h1 { font-size:41px; }
  .course-pricing-stack { gap:28px; }
  .course-price-card { padding:12px; }
  .course-price-card__inner { min-height:0; padding:43px 18px 48px; }
  .course-price-card__inner:before { border-left-width:18px; border-right-width:18px; border-top-width:18px; }
  .course-price-card h2 { margin-bottom:17px; font-size:15px; letter-spacing:.04em; }
  .course-price-card h2:after { width:44px; margin-top:5px; }
  .course-price-card__list>div { min-height:56px; padding:11px 10px; }
  .course-price-card__list span,.course-price-card__list strong { font-size:16px; }
  .price-table>div { grid-template-columns:1fr 1fr; gap:8px; }
  .price-table span { grid-column:1/-1; }
  .price-table strong { text-align:left; }
  .fee-grid,.service-notes,.recruit-grid,.profile-layout { grid-template-columns:1fr; }
  .news-list article { grid-template-columns:1fr auto; gap:10px; }
  .news-list article div { grid-column:1/-1; grid-row:2; }
  .ranking-list article { min-height:145px; grid-template-columns:55px 95px 1fr; gap:14px; }
  .ranking-list img { width:95px; height:130px; }
  .ranking-list h2 { font-size:20px; }
  .ranking-list article>span { font-size:16px; }
  .profile-layout { gap:38px; }
  .profile-data h2 { font-size:34px; }
  .info-table p { grid-template-columns:1fr; gap:6px; }
  .booking-bar { display:none; }
  footer { grid-template-columns:1fr; gap:18px; padding:48px 22px 26px; text-align:center; }
  .footer-brand { margin:auto; }
  .legal { text-align:center; }
  .mobile-contact-dock { min-height:70px; padding-bottom:env(safe-area-inset-bottom); display:grid; grid-template-columns:repeat(3,1fr); position:fixed; left:0; right:0; bottom:0; z-index:80; background:rgba(250,247,240,.93); border-top:1px solid rgba(170,130,43,.4); box-shadow:0 -10px 34px rgba(49,36,20,.09); backdrop-filter:blur(18px) saturate(1.08); }
  .mobile-contact-dock a { min-height:70px; display:grid; place-items:center; align-content:center; gap:3px; border-right:1px solid rgba(170,130,43,.34); transition:background .2s ease; }
  .mobile-contact-dock a:active { background:rgba(201,167,82,.12); }
  .mobile-contact-dock a:last-child { border-right:0; }
  .mobile-contact-dock small { color:#5f503c; font:9px Georgia,serif; letter-spacing:.16em; }
  .dock-phone,.dock-mail { height:26px; display:grid; place-items:center; color:#241c14; font-size:24px; line-height:1; }
  .dock-line { min-width:38px; height:23px; padding:0 6px; display:grid; place-items:center; position:relative; border-radius:50%; background:#241c14; color:#fff; font:700 8px Arial,sans-serif; }
  .dock-line:after { content:""; position:absolute; left:7px; bottom:-4px; border-width:5px 5px 0 0; border-style:solid; border-color:#241c14 transparent transparent transparent; transform:rotate(10deg); }
}

@media (prefers-reduced-motion:no-preference) {
  .hero-picture img { animation:hero-settle 1.25s cubic-bezier(.2,.65,.25,1) both; }
  .hero-copy { animation:soft-rise .85s .08s ease-out both; }
  .mobile-contact-dock { animation:dock-rise .55s ease-out both; }
}

@keyframes hero-settle { from { opacity:.45; transform:scale(1.025); } to { opacity:1; transform:scale(1); } }
@keyframes soft-rise { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:translateY(0); } }
@keyframes dock-rise { from { transform:translateY(100%); } to { transform:translateY(0); } }

@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } * { transition:none!important; } }
