@charset "UTF-8";
/* ライフクリーン沖縄 TOP（Designキャンバス版から書き出し） */
html{scrollbar-color:#1c3f9e #eef2fb;scrollbar-width:thin}
body{margin:0}
a{color:inherit;text-decoration:none}a:hover{color:inherit}
.lc{--navy:#011641;--navy-2:#2f316b;--blue:#1c3f9e;--blue-light:#a9c1f5;--blue-shape:#a8c3ff;--bg-mint:#e2f4f4;--bg-blue:#dbe7ff;--bg-nav:#f3f4ff;--accent-ja:#5b5fa3;--line:#d9d9d9;--container:1120px;--gutter:clamp(20px,5vw,60px);--ease:cubic-bezier(.22,1,.36,1);position:relative;font-family:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;color:#333;line-height:1.8;letter-spacing:.04em;background:#fff;overflow-x:clip}
.lc *,.lc *::before,.lc *::after{box-sizing:border-box}
/* リセットは :where() で詳細度0にし、各クラスの余白指定を上書きしないようにする */
:where(.lc) :where(h1,h2,h3,p,figure,dl,dd,ul){margin:0;padding:0}
:where(.lc) :where(ul){list-style:none}
:where(.lc) :where(img){display:block;max-width:100%;height:auto}
.container{width:100%;max-width:calc(var(--container) + var(--gutter)*2);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:clamp(80px,10vw,140px)}
.sec-head__en{display:inline-flex;align-items:center;gap:.35em;font-size:clamp(36px,4.4vw,64px);font-weight:200;line-height:1.1;letter-spacing:.01em;color:#333}
.sec-head__en::after{content:"";width:.6em;height:2px;background:currentColor}
.sec-head__ja{font-size:11px;color:var(--accent-ja);letter-spacing:.1em;margin-top:4px}
.sec-head--white .sec-head__en{color:#fff}
.sec-head--white .sec-head__ja{color:#b9c4e4}
.sec-head--center{text-align:center}
.btn{--fill:linear-gradient(90deg,#2f5fd0,#5b8af0);position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;justify-content:space-between;gap:40px;min-width:270px;min-height:48px;padding:14px 32px;border-radius:999px;background:var(--blue) var(--fill) no-repeat 0 0/0% 100%;color:#fff;font-size:14px;font-weight:500;letter-spacing:.04em;transition:background-size .55s var(--ease)}
.btn::after{content:"";border-left:9px solid currentColor;border-top:6px solid transparent;border-bottom:6px solid transparent;transition:transform .3s var(--ease)}
.btn:hover{background-size:100% 100%;color:#fff}
.btn:hover::after{animation:ctaArrow .7s var(--ease) infinite}
.btn--light{--fill:linear-gradient(90deg,#ffffff,#dbe7ff);background-color:var(--blue-light);color:var(--navy)}
.btn--light:hover{color:var(--navy)}
@keyframes ctaArrow{0%,100%{transform:translateX(0)}50%{transform:translateX(8px)}}
@media (min-width:769px){.btn{gap:60px;min-width:405px;min-height:72px;padding:21px 48px;font-size:21px}.btn::after{border-left-width:14px;border-top-width:9px;border-bottom-width:9px}}
@media (prefers-reduced-motion:reduce){.btn:hover::after{animation:none}}
.logo{display:inline-flex;align-items:center;gap:16px}
.logo__mark{position:relative;width:36px;height:36px;display:grid;place-items:center}
.logo__mark::before{content:"";position:absolute;inset:4px;transform:rotate(45deg);background:linear-gradient(135deg,#0e2a6e 0%,#2f5fd0 55%,#8fb0f5 100%)}
.logo__mark span{position:relative;font-size:13px;font-style:italic;color:#fff;letter-spacing:-.05em;font-family:Georgia,serif}
.logo__text{font-size:16px;font-weight:700;letter-spacing:.08em;color:#222}
.header{position:fixed;inset:0 0 auto;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:20px clamp(20px,2vw,40px)}
.gnav ul{display:flex;align-items:center;gap:clamp(20px,4.5vw,80px);padding:8px 8px 8px 40px;border-radius:999px;background:var(--bg-nav);box-shadow:0 4px 24px rgba(30,60,160,.06)}
.gnav a{font-size:13px;font-weight:500;color:#333}
.gnav li:not(.gnav__cta) a:hover{color:var(--blue)}
.gnav__cta a{display:block;padding:12px 36px;border-radius:999px;background:var(--blue) linear-gradient(90deg,#2f5fd0,#5b8af0) no-repeat 0 0/0% 100%;color:#fff;transition:background-size .55s var(--ease)}
.gnav__cta a:hover{background-size:100% 100%;color:#fff}
.menu-btn{display:none}
.hb__no,.hb__sub{display:none}
@media (prefers-reduced-motion:reduce){.gnav,.gnav.is-open{clip-path:none!important;transition:visibility 0s!important}.gnav a{transform:none!important}.hb__bar{transition:none!important}}
.mv{position:sticky;z-index:0;display:flex;flex-direction:column;padding-top:clamp(130px,15vw,210px);overflow:hidden;background:#fff}
.lc > section:not(.mv),.lc > .footer{position:relative;z-index:1}
#about,#outline,.partner,.intro,.footer{background-color:#fff}
.intro{box-shadow:0 -24px 48px -12px rgba(1,22,65,.18);border-radius:28px 28px 0 0}
.mv__shape{position:absolute;top:-40px;right:15vw;width:26vw;height:calc(100% + 40px);background:var(--blue-shape);clip-path:polygon(0 0,78% 0,100% 100%,25% 100%);filter:blur(28px);opacity:.85;z-index:0;transform:translateX(-160vw);animation:shapeLoop 9s -.4s infinite}
@keyframes shapeLoop{
0%{transform:translateX(-160vw);animation-timing-function:cubic-bezier(.22,1,.36,1)}
18%{transform:translateX(0);animation-timing-function:linear}
62%{transform:translateX(0);animation-timing-function:cubic-bezier(.64,0,.78,0)}
78%{transform:translateX(120vw)}
100%{transform:translateX(120vw)}}
.mv__copy{position:relative;z-index:1;padding-left:clamp(24px,4.3vw,62px);margin-bottom:clamp(16px,2vw,28px)}
.mv__title{font-size:clamp(30px,3.9vw,56px);font-weight:400;line-height:1.35;letter-spacing:.06em}
.service__map{position:relative;cursor:none}
/* マップ上のポインター：地図ピン（先端がカーソル位置） */
.map-target{position:absolute;width:0;height:0;pointer-events:none;z-index:2;opacity:0;transition:opacity .2s ease}
.map-target.is-on{opacity:1}
.map-pin{position:absolute;left:-18px;top:-49px;display:block;overflow:visible;filter:drop-shadow(0 3px 4px rgba(0,0,0,.3));transform-origin:18px 49px;transform:translateY(-40px) scale(.8)}
.map-target.is-on .map-pin{animation:pinDrop .55s cubic-bezier(.34,1.56,.64,1) forwards}
.map-pin__ground{position:absolute;left:-9px;top:-3px;width:18px;height:6px;border-radius:50%;background:rgba(0,0,0,.35);filter:blur(1px)}
.map-pin__pulse{position:absolute;left:-14px;top:-7px;width:28px;height:14px;border-radius:50%;border:2px solid #fff;opacity:0}
.map-target.is-on .map-pin__pulse{animation:pinPulse 1.6s ease-out .5s infinite}
@keyframes pinDrop{0%{transform:translateY(-40px) scale(.8)}70%{transform:translateY(0) scale(1.04,.94)}100%{transform:none}}
@keyframes pinPulse{0%{transform:scale(.4);opacity:.9}100%{transform:scale(2.4);opacity:0}}
/* サイト全体のカーソル（マップ上はターゲット表示のため除外） */
.lc,.lc *{cursor:url(../img/cursor.svg) 20 4,auto!important}
.lc .service__map,.lc .service__map *{cursor:none!important}
@keyframes targetSpin{to{transform:rotate(360deg)}}
@keyframes targetPulse{from{transform:scale(.6);opacity:1}to{transform:scale(3);opacity:0}}
@media (hover:none){.service__map{cursor:auto}.map-target{display:none}}
@media (prefers-reduced-motion:reduce){.map-target.is-on .map-pin{animation:none;transform:none}.map-target.is-on .map-pin__pulse{animation:none}}
.logo-svg{display:block;overflow:visible;width:54px;height:54px}
.logo-svg__line{stroke-dasharray:100;stroke-dashoffset:100;animation:logoDraw 1.2s cubic-bezier(.65,0,.35,1) .2s forwards,logoLineOut .5s ease 1.7s forwards}
.logo-svg__fill{opacity:0;transform-origin:18px 18px;transform:scale(.6);animation:logoFill .7s cubic-bezier(.22,1,.36,1) 1.2s forwards}
.logo-svg__lc{font:italic 13px Georgia,serif;letter-spacing:-.05em;fill:#fff;opacity:0;animation:logoFade .5s ease 1.6s forwards}
.logo__ch{display:inline-block;opacity:0;transform:translateY(8px);animation:logoCh .5s cubic-bezier(.22,1,.36,1) forwards}
@keyframes logoDraw{to{stroke-dashoffset:0}}
@keyframes logoLineOut{to{stroke-opacity:0}}
@keyframes logoFill{to{opacity:1;transform:scale(1)}}
@keyframes logoFade{to{opacity:1}}
@keyframes logoCh{to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.logo-svg__line,.logo-svg__fill,.logo-svg__lc,.logo__ch{animation:none;opacity:1;transform:none;stroke-dashoffset:0}}
.mv__line{display:block}
.mv__ch{display:inline-block;opacity:0;animation:flyIn 1s cubic-bezier(.22,1,.36,1) both}
@keyframes flyIn{from{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rot)) scale(var(--sc));filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}
.mv__caret{display:inline-block;width:1px;height:1.1em;margin-left:2px;vertical-align:-.15em;background:currentColor;animation:caret .8s steps(1) infinite}
@keyframes caret{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.mv__ch{animation:none;opacity:1}}
.mv__en{min-height:1.8em;margin-top:18px;font-size:clamp(11px,1vw,14px);font-weight:500;letter-spacing:0}
.mv__img{position:relative;z-index:2;flex:none;height:900px;margin-left:clamp(20px,2vw,30px);margin-right:2vw;overflow:hidden;background:#fff}
.mv__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:1}
.mv__img .mv__slide{object-position:center 35%;opacity:0;animation:mvFade 24s ease-in-out infinite}
.mv__img .mv__base{object-position:center 28%}
.mv__slide--1{animation-delay:6s!important}
.mv__slide--2{animation-delay:12s!important}
.mv__slide--3{animation-delay:18s!important}
@keyframes mvFade{0%{opacity:0}6%{opacity:1}25%{opacity:1}31%{opacity:0}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.mv__img .mv__slide{animation:none}}
.intro{position:relative;display:flex;flex-direction:column;justify-content:space-between;min-height:930px;margin-top:0;padding:clamp(200px,19vw,300px) 0 0;overflow:hidden}
.intro__bg{position:absolute;top:0;bottom:0;left:23%;right:0;overflow:hidden}
.intro__bg img{width:100%;height:100%;object-fit:cover;filter:blur(6px);transform:scale(1.04);opacity:.85}
.intro__wipe{position:absolute;inset:0;width:100%;height:100%;opacity:.85;pointer-events:none}
.intro{touch-action:pan-y}
.intro__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.1) 70%,#fff 100%)}
.intro__inner{position:relative;width:100%;max-width:calc(var(--container) + var(--gutter)*2);margin-inline:auto;padding-inline:var(--gutter)}
.intro__title{font-size:clamp(22px,2.6vw,38px);font-weight:400;line-height:1.7;letter-spacing:.22em;color:#555}
.intro__text{margin:clamp(40px,6vw,90px) 0 0 clamp(0px,17vw,250px);max-width:470px;padding:20px 0 20px 30px;border-top:1px solid #bbb;border-bottom:1px solid #bbb;font-size:12px;line-height:1.8;color:#444}
.marquee{position:relative;margin-top:clamp(60px,9vw,130px);margin-left:23%;overflow:hidden;white-space:nowrap;padding-bottom:20px}
.marquee__track{display:inline-flex;animation:marquee 30s linear infinite}
.marquee span{padding-right:.6em;font-size:clamp(36px,4.4vw,64px);font-weight:300;line-height:1;letter-spacing:.01em;color:#fff}
@keyframes marquee{to{transform:translateX(-50%)}}
.about__lead{margin-top:clamp(30px,4vw,50px);font-size:clamp(16px,1.4vw,20px);line-height:1.9}
/* ABOUT：ピン止め横スクロール */
#about.section{padding-block:0}
.about-pin{position:relative}
.about-sticky{position:sticky;top:0;height:100vh;padding-bottom:clamp(110px,16vh,150px);overflow:hidden;display:flex;align-items:center}
.about__cards{display:flex;align-items:flex-start;gap:clamp(48px,5.5vw,80px);padding-inline:max(var(--gutter),calc((100% - var(--container))/2));will-change:transform}
.about__intro{flex:0 0 auto;width:clamp(280px,26vw,380px);align-self:flex-start;margin-top:clamp(60px,10vh,120px)}
.about__intro .sec-head__en{white-space:nowrap}
.about-card{flex:0 0 auto;width:clamp(360px,35vw,510px)}
.about-card--1{margin-top:180px}.about-card--2{margin-top:90px}.about-card--3{margin-top:0}.about-card--4{margin-top:120px}
.about-card__num{display:flex;align-items:center;gap:10px;font-size:24px;font-weight:200;color:#888;line-height:1;margin-bottom:10px}
.about-card__num::after{content:"";flex:1;height:1px;background:var(--line)}
.about-card__img{overflow:hidden}
.about-card__img img{width:100%;aspect-ratio:450/350;object-fit:cover;transition:transform 1s var(--ease)}
.about-card:hover .about-card__img img{transform:scale(1.05)}
.about-card__text{margin-top:20px;font-size:13px;line-height:1.9;color:#444}
.about-card__num{font-size:32px}
.about__btn{position:absolute;left:0;right:0;bottom:clamp(24px,4vh,48px);z-index:2;display:flex;justify-content:center;pointer-events:none}
.about__btn .btn{pointer-events:auto}
.service{background:var(--navy);color:#fff;overflow:hidden}
.service__body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:40px}
.service__blocks{padding-left:clamp(0px,4vw,60px)}
.service__block{margin-top:clamp(50px,5vw,70px)}
.service__title{font-size:clamp(16px,1.4vw,20px);font-weight:500;letter-spacing:.14em}
.service__text{margin:24px 0 0 clamp(0px,4vw,60px);font-size:12px;line-height:1.8;color:#e4e8f3}
.service__map{max-width:470px;justify-self:end;margin-top:60px}
.service__btn{text-align:center;margin-top:clamp(50px,6vw,80px)}
.partner{overflow:hidden;--p:0}
.partner > .container,.partner__body{position:relative;z-index:1}
.wash{position:absolute;inset:0;z-index:0;pointer-events:none;filter:url(#washFilter)}
.wash__b{position:absolute;border-radius:50%;mix-blend-mode:multiply;opacity:.75;animation:washDrift var(--dur,30s) ease-in-out var(--delay,0s) infinite alternate}
@keyframes washDrift{from{translate:0 0;scale:1}to{translate:var(--dx,4vw) var(--dy,3vw);scale:var(--sc,1.12)}}
.wash__b--1{width:46vw;height:40vw;left:-8vw;top:6%;background:radial-gradient(closest-side,rgba(168,195,255,.55),rgba(168,195,255,.25) 55%,rgba(168,195,255,0));--dur:22s;--dx:24vw;--dy:10vw;--sc:1.3}
.wash__b--2{width:38vw;height:34vw;right:-6vw;top:-4%;background:radial-gradient(closest-side,rgba(126,207,190,.45),rgba(126,207,190,.18) 60%,rgba(126,207,190,0));--dur:19s;--delay:-9s;--dx:-22vw;--dy:12vw;--sc:.75}
.wash__b--3{width:34vw;height:30vw;left:30%;bottom:-10%;background:radial-gradient(closest-side,rgba(226,244,244,.9),rgba(178,226,226,.35) 60%,rgba(178,226,226,0));--dur:25s;--delay:-17s;--dx:26vw;--dy:-10vw;--sc:1.35}
.wash__b--4{width:22vw;height:20vw;right:18%;bottom:8%;background:radial-gradient(closest-side,rgba(143,176,245,.35),rgba(143,176,245,0));--dur:21s;--delay:-5s;--dx:-24vw;--dy:-9vw;--sc:1.4}
@media (prefers-reduced-motion:reduce){.wash__b{animation:none}}
.partner__body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.45fr);gap:clamp(30px,3vw,50px);margin-top:clamp(50px,6vw,80px);padding-left:max(var(--gutter),calc((100% - var(--container))/2 + 50px))}
.partner__logo{padding-left:20px}
.partner__logo-ph{display:inline-block;font-family:Georgia,"Times New Roman",serif;font-style:italic;font-size:26px;line-height:1.1;color:#0e5a5c;text-align:center}
.partner__logo-ph small{display:block;font-size:18px}
.partner__name{margin-top:10px;font-size:clamp(15px,1.25vw,18px);letter-spacing:.12em}
.partner__text{margin-top:clamp(40px,5vw,70px);font-size:12px;line-height:1.75;color:#444}
.partner__text p + p{margin-top:1.4em}
.partner__img{overflow:hidden;align-self:start}
.partner__img img{width:100%;aspect-ratio:1109/589;object-fit:cover}
.message{background:var(--bg-mint);overflow:hidden}
.message > .container{position:relative;z-index:1}
/* MESSAGE：縦に流れる文字（内側から1→2→3、3が最大＝MV下と同サイズ、2は逆走） */
.vmarq{position:absolute;top:0;bottom:0;right:clamp(4px,1vw,16px);z-index:0;display:flex;align-items:stretch;gap:clamp(6px,1vw,14px);pointer-events:none}
.vmarq__col{overflow:hidden;height:100%}
.vmarq__track{display:flex;flex-direction:column;animation:vmarqUp 40s linear infinite}
.vmarq__track span{display:block;writing-mode:vertical-rl;padding-bottom:.6em;font-weight:300;line-height:1;letter-spacing:.01em;color:#fff;white-space:nowrap}
.vmarq__col--1 .vmarq__track span{font-size:clamp(16px,1.7vw,24px)}
.vmarq__col--2 .vmarq__track span{font-size:clamp(24px,2.8vw,40px)}
.vmarq__col--3 .vmarq__track span{font-size:clamp(36px,4.4vw,64px)}
.vmarq__col--1 .vmarq__track{animation-duration:30s}
.vmarq__col--2 .vmarq__track{animation-name:vmarqDown;animation-duration:36s}
.vmarq__col--3 .vmarq__track{animation-duration:44s}
@keyframes vmarqUp{from{transform:translateY(0)}to{transform:translateY(-50%)}}
@keyframes vmarqDown{from{transform:translateY(-50%)}to{transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){.vmarq__track{animation:none}}
@media (max-width:768px){.vmarq{opacity:.6}}
.message .sec-head{padding-left:4vw}
.message__body{display:grid;grid-template-columns:430px minmax(0,1fr);gap:clamp(40px,6.5vw,95px);margin-top:clamp(50px,6vw,80px)}
.message__img img{width:100%;aspect-ratio:430/500;object-fit:cover;object-position:center top}
.message__title{font-size:clamp(17px,1.4vw,20px);font-weight:500;letter-spacing:.1em;padding-top:10px}
.message__text{margin-top:40px;font-size:12px;line-height:1.75;color:#444}
.message__text p + p{margin-top:1.4em}
.message__sign{margin-top:70px;padding-left:300px;font-size:18px;letter-spacing:.1em}
.message__sign small{font-size:11px;margin-right:1.5em}
.outline__inner{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(40px,6vw,90px)}
.outline__table{max-width:760px}
.outline__table > div{display:grid;grid-template-columns:190px minmax(0,1fr);padding:24px 10px;border-bottom:1px solid var(--line);font-size:13px}
.outline__table > div:last-child{border-bottom:0}
.outline__table dt{font-size:11px;color:#555}
.outline__table dd{color:#555}
.outline__table li + li{margin-top:1.4em}
.contact{background:var(--bg-blue);padding-block:clamp(70px,8vw,110px)}
/* 2×2：上段＝見出し｜テキスト、下段＝お問い合わせ（見出しの下）｜LINE */
.contact__inner{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 40px;align-items:start}
.contact__inner > div,.contact__btns{display:contents}
.contact .sec-head__en{white-space:nowrap}
.contact__text{min-height:clamp(80px,7vw,100px);display:flex;align-items:center;margin:0;font-size:12px;line-height:1.8;color:#444}
.contact-btn{display:grid;place-items:center;height:clamp(80px,7vw,100px);border-radius:20px;font-size:clamp(16px,1.4vw,20px);font-weight:700;letter-spacing:.06em;transition:transform .4s var(--ease),box-shadow .4s}
.contact-btn:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(28,63,158,.18)}
.contact-btn--mail,.contact-btn--mail:hover{background:var(--blue);color:#fff}
.contact-btn--mail{position:relative;overflow:hidden;isolation:isolate}
.contact-btn__img{position:absolute;inset:0;z-index:-1;background:#011641 url(../img/contact-mail.jpg) left center/cover no-repeat;transform:translateX(-101%);transition:transform .6s cubic-bezier(.22,1,.36,1)}
.contact-btn__img::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(1,22,65,.15) 0%,rgba(1,22,65,.35) 45%,rgba(1,22,65,0) 70%)}
.contact-btn__label{position:relative}
.contact-btn--mail:hover{transform:none;box-shadow:none}
.contact-btn--line{position:relative;overflow:hidden;isolation:isolate;transition:background-color .4s ease}
.contact-btn--line:hover{transform:none;box-shadow:none;background:#e6f6ec}
.contact-btn--line .contact-btn__label{position:relative;transition:transform .5s cubic-bezier(.22,1,.36,1)}
.contact-btn--line:hover .contact-btn__label{transform:translateX(56px)}
.line-chat{position:absolute;left:28px;top:10px;bottom:10px;width:150px;z-index:-1;display:flex;flex-direction:column;justify-content:flex-end;gap:5px;pointer-events:none}
.lc-b{position:relative;display:block;height:16px;border-radius:9px;opacity:0;transform:scale(.2);transition:opacity .15s ease,transform .15s ease}
.lc-b--w{align-self:flex-start;background:#fff;box-shadow:0 1px 4px rgba(4,145,63,.25);transform-origin:0 100%}
.lc-b--g{align-self:flex-end;background:#06c755;transform-origin:100% 100%}
.lc-b--w::after{content:"";position:absolute;left:-3px;bottom:0;border-bottom:7px solid #fff;border-left:7px solid transparent}
.lc-b--g::after{content:"";position:absolute;right:-3px;bottom:0;border-bottom:7px solid #06c755;border-right:7px solid transparent}
.lc-b--1{width:78px}.lc-b--2{width:100px}.lc-b--3{width:62px}.lc-b--4{width:90px}
.contact-btn--line:hover .lc-b{opacity:1;transform:none;transition:opacity .2s ease,transform .45s cubic-bezier(.34,1.56,.64,1)}
.contact-btn--line:hover .lc-b--1{transition-delay:0s}
.contact-btn--line:hover .lc-b--2{transition-delay:.28s}
.contact-btn--line:hover .lc-b--3{transition-delay:.56s}
.contact-btn--line:hover .lc-b--4{transition-delay:.84s}
@media (prefers-reduced-motion:reduce){.lc-b,.contact-btn--line .contact-btn__label{transition:none!important}}
.contact-btn--mail:hover .contact-btn__img{transform:translateX(0)}
.contact-btn--mail .contact-btn__label{transition:transform .6s cubic-bezier(.22,1,.36,1)}
.contact-btn--mail:hover .contact-btn__label{transform:translateX(100px);text-shadow:0 2px 12px rgba(1,22,65,.5)}
@media (prefers-reduced-motion:reduce){.contact-btn--mail .contact-btn__label{transition:none}}
@media (prefers-reduced-motion:reduce){.contact-btn__img{transition:none}}
.contact-btn--line{background:#fff;color:#04913f}
.contact-btn--line:hover{color:#04913f}
.footer{position:relative;padding-top:50px}
.footer__inner{display:grid;grid-template-columns:41.5% minmax(0,1fr)}
.footer__info{padding:60px 0 40px clamp(24px,10.5vw,160px);font-size:12px;color:#555}
.footer__info .logo{margin-bottom:40px}
.footer__info p + p{margin-top:6px;color:#777}
.footer__nav{background:var(--navy-2);display:flex;align-items:center;padding:60px clamp(24px,6vw,80px)}
.footer__nav ul{display:flex;flex-wrap:wrap;gap:24px clamp(20px,3.4vw,50px)}
.footer__nav a{font-size:11px;color:#fff;line-height:1.3}
.footer__nav a:hover{color:#fff}
.fn-en{position:relative;display:inline-block;font-weight:inherit;padding-bottom:3px}
.fn-en::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:#fff;transform:scaleX(0);transform-origin:right;transition:transform .45s cubic-bezier(.22,1,.36,1)}
.footer__nav a:hover .fn-en::after,.footer__nav a:focus-visible .fn-en::after{transform:scaleX(1);transform-origin:left}
.footer__nav a span{display:block;font-size:9px;color:#c9cbe6;margin-top:2px}
/* SP追従CTA：動きは CTA-05 スピードダイヤル。円はロゴと同じグラデーション、開いている間は白の透過円 */
.sfab{--sfab-c1:#1c3f9e;--sfab-c2:#06c755;--sfab-size:56px;--sfab-pop:cubic-bezier(.34,1.56,.64,1);position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:90;display:flex;flex-direction:column-reverse;align-items:flex-end;gap:12px}
.sfab__main{appearance:none;position:relative;width:var(--sfab-size);height:var(--sfab-size);display:grid;place-items:center;padding:0;border:1px solid rgba(1,22,65,.12);border-radius:50%;background:rgba(255,255,255,.65);color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);-webkit-tap-highlight-color:transparent}
.sfab__main::after{content:"";position:absolute;inset:-1px;border-radius:50%;background:linear-gradient(135deg,#0e2a6e 0%,#2f5fd0 55%,#8fb0f5 100%);transition:opacity .35s ease}
.sfab__icon{position:relative;z-index:1;transition:color .35s ease}
.sfab.is-open .sfab__main{color:var(--sfab-c1)}
.sfab.is-open .sfab__main::after{opacity:0}
.sfab__main:focus-visible{outline:2px solid var(--sfab-c1);outline-offset:4px}
.sfab__main.is-pop{animation:sfab-squash .45s var(--sfab-pop)}
.sfab__menu{display:flex;flex-direction:column-reverse;align-items:flex-end;gap:10px;margin:0;padding:0;list-style:none}
.sfab__item{display:flex;align-items:center;justify-content:center;gap:8px;min-width:150px;height:48px;padding:0 24px;border-radius:999px;background:var(--sfab-c1);color:#fff;font-size:14px;font-weight:700;letter-spacing:.06em;pointer-events:none;-webkit-tap-highlight-color:transparent;opacity:0;transform-origin:calc(100% - 28px) 50%;transform:translateY(calc((var(--i,0) + 1) * 26px)) scale(0);transition:transform .2s ease,opacity .15s}
.sfab__item--line{background:var(--sfab-c2)}
.sfab__item--tel{background:var(--navy)}
.sfab.is-open .sfab__item{pointer-events:auto;opacity:1;transform:none;transition:transform .5s var(--sfab-pop) calc(var(--i,0) * 70ms),opacity .2s calc(var(--i,0) * 70ms)}
.sfab__item:active{scale:.94}
@keyframes sfab-squash{0%{scale:1}35%{scale:.84}70%{scale:1.1}100%{scale:1}}
@media (min-width:769px){.sfab--sp{display:none}}
@media (prefers-reduced-motion:reduce){.sfab *,.sfab *::after{transition-duration:.01ms!important;animation:none!important}}
.footer__copy{width:100%;background:var(--navy-2);color:#c9cbe6;text-align:center;padding:16px;font-size:10px}
@media (max-width:1024px){.message__body{grid-template-columns:340px minmax(0,1fr)}.message__sign{padding-left:0;text-align:right}}
@media (max-width:768px){
/* SPナビ：NV-01 円形展開メニュー（色はホテル客室清掃サイトのデザインシステム） */
.header{--hb-ink:#0B2A4A;--hb-menu-bg:#0B2A4A;--hb-menu-ink:#E8EFF5;--hb-accent:#8FD3C4;--hb-sub:#B9CADA;--hb-ease:cubic-bezier(.22,1,.36,1);padding:14px 20px}
.logo{position:relative;z-index:2}
.logo__text{font-size:14px;transition:color .4s}
.header.is-open .logo__text{color:var(--hb-menu-ink)}
.menu-btn{position:relative;z-index:2;appearance:none;display:grid;place-content:center;gap:6px;width:48px;height:48px;padding:0;border:0;background:none;color:var(--hb-ink);cursor:pointer;transition:color .4s}
.header.is-open .menu-btn{color:var(--hb-menu-ink)}
.hb__bar{display:block;width:26px;height:2px;border-radius:2px;background:currentColor;transition:translate .25s var(--hb-ease) .25s,rotate .25s var(--hb-ease),scale .2s var(--hb-ease) .25s,opacity .2s .25s}
.header.is-open .hb__bar{transition:translate .25s var(--hb-ease),rotate .25s var(--hb-ease) .25s,scale .2s var(--hb-ease),opacity .2s}
.header.is-open .hb__bar:nth-child(1){translate:0 8px;rotate:45deg}
.header.is-open .hb__bar:nth-child(2){scale:0 1;opacity:0}
.header.is-open .hb__bar:nth-child(3){translate:0 -8px;rotate:-45deg}
.gnav{position:fixed;inset:0;z-index:1;display:flex;flex-direction:column;justify-content:center;gap:2em;overflow-y:auto;padding:96px clamp(24px,8vw,120px) 48px;background:var(--hb-menu-bg);color:var(--hb-menu-ink);visibility:hidden;clip-path:circle(0 at var(--hb-x,calc(100% - 44px)) var(--hb-y,38px));transition:clip-path .7s var(--hb-ease),visibility 0s .7s}
.gnav.is-open{visibility:visible;clip-path:circle(150% at var(--hb-x,calc(100% - 44px)) var(--hb-y,38px));transition:clip-path .8s var(--hb-ease),visibility 0s}
.gnav ul{flex-direction:column;align-items:flex-start;gap:clamp(16px,5vw,28px);background:none;box-shadow:none;padding:0;border-radius:0}
.gnav li{overflow:hidden}
.gnav a,.gnav__cta a{display:inline-flex;align-items:baseline;gap:.8em;padding:0;border-radius:0;background:none;font-size:clamp(1rem,5vw,2rem);font-weight:400;line-height:1.5;letter-spacing:.12em;color:inherit;transform:translateY(110%);transition:transform .4s var(--hb-ease),color .3s}
.gnav.is-open a{transform:none;transition:transform .8s var(--hb-ease) calc(.25s + var(--i,0) * 70ms),color .3s}
.gnav a:hover,.gnav a:focus-visible,.gnav li:not(.gnav__cta) a:hover{color:var(--hb-accent);background:none}
.gnav li.gnav__cta{margin-top:12px;overflow:hidden;padding:0}
.gnav__cta a{align-items:center;padding:14px 36px;border-radius:999px;background:var(--blue) linear-gradient(90deg,#2f5fd0,#5b8af0) no-repeat 0 0/0% 100%;font-size:1rem;letter-spacing:.06em;color:#fff}
.gnav__cta a::after{content:"";border-left:9px solid currentColor;border-top:6px solid transparent;border-bottom:6px solid transparent;margin-left:.6em}
.gnav__cta a:hover,.gnav__cta a:focus-visible{background-size:100% 100%;color:#fff}
.mv{height:100vh;height:100svh;padding-top:0}
.mv__copy{flex:1 1 0;min-height:0;display:flex;flex-direction:column;justify-content:flex-end;margin-bottom:0;padding-bottom:clamp(20px,4svh,40px)}
.mv__img{flex:1 1 0;min-height:0;height:auto;margin-left:0}
.mv__shape{width:40vw;right:8vw}
.mv__img{margin-right:0}
.intro{min-height:640px;padding-top:160px}
.intro__text{margin-top:48px}
.marquee{margin-top:80px}
.intro__bg{left:0}
.intro__text{margin-left:0;padding-left:16px}
.marquee{margin-left:0}
#about.section{padding-block:80px}
.about-pin{height:auto!important}
.about-sticky{position:static;height:auto;padding-bottom:0;display:block;overflow:visible}
.about__cards{transform:none!important;flex-direction:column;align-items:stretch;gap:48px;padding-inline:var(--gutter)}
.about__intro{width:100%}
.about-card{width:100%}
.about__btn{position:static;margin-top:48px;padding-inline:var(--gutter)}
.about-card--1,.about-card--2,.about-card--3,.about-card--4{margin-top:0}
.service__body{grid-template-columns:minmax(0,1fr)}
.service__blocks{padding-left:0}
.service__map{justify-self:center;max-width:80%}
.partner__body{grid-template-columns:minmax(0,1fr);padding-left:var(--gutter)}
.message .sec-head{padding-left:0}
.message__body{grid-template-columns:minmax(0,1fr)}
.message__img{max-width:360px}
.outline__inner{grid-template-columns:minmax(0,1fr)}
.outline__table > div{grid-template-columns:90px minmax(0,1fr);padding-inline:0}
.contact__inner{grid-template-columns:minmax(0,1fr)}
.footer__inner{grid-template-columns:minmax(0,1fr)}
.footer__info{padding:40px var(--gutter)}
.footer__nav{padding:40px var(--gutter)}
.footer__nav ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.contact-btn--mail:hover .contact-btn__label{transform:translateX(24px)}
.line-chat{left:16px;width:110px}
.lc-b--1{width:56px}.lc-b--2{width:72px}.lc-b--3{width:46px}.lc-b--4{width:64px}
.contact-btn--line:hover .contact-btn__label{transform:translateX(64px)}
.footer__copy{padding-bottom:calc(16px + 64px + env(safe-area-inset-bottom))}
}
@media (prefers-reduced-motion:reduce){.marquee__track,.mv__shape{animation:none}.mv__shape{transform:none}}
