/* JFR V8 / signature motion — additive layer: V7 content, type scale and official logo remain unchanged. */
:root{--motion-accent:#56c6dd;--motion-ease:cubic-bezier(.22,1,.36,1)}
.reading-progress{position:fixed;left:0;top:0;width:100%;height:3px;z-index:230;pointer-events:none;background:linear-gradient(90deg,#47b4d0,#9ce9f1);transform:scaleX(0);transform-origin:left center;box-shadow:0 0 18px #62d9f888}
.pointer-ambient{position:fixed;left:0;top:0;width:390px;height:390px;margin:-195px 0 0 -195px;z-index:20;pointer-events:none;border-radius:50%;background:radial-gradient(circle,#71d5ec18 0%,#71d5ec08 25%,transparent 66%);opacity:0;will-change:transform}
.site-header{box-shadow:0 8px 35px #0a293906}
.site-header:after{content:'';position:absolute;bottom:-1px;left:0;width:100%;height:1px;background:linear-gradient(90deg,transparent,#3faac4a8 35%,#d9f1f7 50%,transparent 75%);background-size:200% 100%;animation:header-flow 11s linear infinite;opacity:.7}
@keyframes header-flow{to{background-position:-200% 0}}
.brand img{animation:brand-arrive 1.1s var(--motion-ease) both;transition:transform .65s var(--motion-ease),filter .6s}
.brand:hover img{transform:rotate(-7deg) scale(1.07);filter:drop-shadow(0 5px 13px #2ba4bf65)}
@keyframes brand-arrive{from{opacity:0;transform:rotate(-18deg) scale(.8)}to{opacity:1;transform:rotate(0deg) scale(1)}}
.hero{isolation:isolate;background:linear-gradient(115deg,#06202d,#0e3549 63%,#15536b);min-height:710px}
.hero-image{opacity:.37;filter:saturate(.58) contrast(1.02);animation:hero-image-move 36s ease-in-out infinite alternate}
@keyframes hero-image-move{from{transform:scale(1.08) translateX(0)}to{transform:scale(1.21) translateX(-3%)}}
.hero-overlay{background:linear-gradient(93deg,#072633ee 0%,#0c3440bd 48%,#06314388 75%,#063041b0 100%),linear-gradient(0deg,#04223290,transparent 45%);z-index:0}
.hero::before{content:'';position:absolute;inset:0;background:linear-gradient(120deg,transparent 12%,#8ae2f108 13%,transparent 13.2%),repeating-linear-gradient(90deg,transparent 0 119px,#9ae3f205 120px),repeating-linear-gradient(0deg,transparent 0 119px,#9ae3f205 120px);pointer-events:none;z-index:1;mask-image:linear-gradient(90deg,transparent 35%,black)}
.hero::after{content:'';position:absolute;right:-180px;top:-290px;width:900px;height:900px;border-radius:50%;background:radial-gradient(circle,#68d5e51a,transparent 55%);z-index:1;pointer-events:none;animation:orb-breathe 8s ease-in-out infinite alternate}
@keyframes orb-breathe{to{transform:scale(1.13);opacity:.45}}
.hero-inner{z-index:5;overflow:visible}
.hero-copy{max-width:740px;position:relative;z-index:6}
.hero-kicker{letter-spacing:.17em;animation:hero-copy-in .85s .05s var(--motion-ease) both}
.hero h1{position:relative;font-size:clamp(38px,4.7vw,65px);letter-spacing:0;line-height:1.43;text-shadow:0 10px 40px #06172338;animation:hero-copy-in 1.05s .15s var(--motion-ease) both}
.hero h1 em{color:#b4edfa;background:linear-gradient(105deg,#cef6fa 10%,#6cc5d8 38%,white 50%,#8fd9e8 62%,#c5f4fa 85%);background-size:320% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:hero-ink 9s ease-in-out infinite}
@keyframes hero-ink{0%,16%,100%{background-position:0%}45%,62%{background-position:100%}}
.hero-lead{animation:hero-copy-in 1s .30s var(--motion-ease) both}
.hero-buttons{animation:hero-copy-in 1s .43s var(--motion-ease) both}
@keyframes hero-copy-in{from{opacity:0;transform:translateY(37px);filter:blur(9px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
.hero .button-primary{background:linear-gradient(115deg,#168eac,#1a91b1 50%,#39b0c6);background-size:180% 100%;box-shadow:0 8px 30px #0c1c2470;animation:cta-sheen 6.5s linear infinite}
@keyframes cta-sheen{50%{background-position:100% 0}}
.hero .button:hover{transform:translateY(-5px)}
.hero-side{position:relative;z-index:3;opacity:.86;animation:hero-copy-in 1s .6s var(--motion-ease) both}
.hero-foot{z-index:7}.scroll-cue i{width:75px}
/* original logo palette used for a hand-built vector network globe; not generated photography */
.motion-scene{position:absolute;right:max(-5vw, -80px);top:2%;height:95%;width:min(57vw,800px);z-index:2;pointer-events:none;opacity:.82;transform:translate3d(var(--art-x,0px),var(--art-y,0px),0);will-change:transform}
.motion-halo{position:absolute;inset:10% 6%;border-radius:50%;background:radial-gradient(circle,#2bb4d21e 0%,#279cb910 30%,transparent 67%);filter:blur(25px);animation:halo-pulse 8s ease-in-out infinite alternate}
@keyframes halo-pulse{to{transform:scale(1.15);opacity:.35}}
.world-art{height:100%;width:100%;filter:drop-shadow(0 0 30px #54c1d521)}
.orbital-path{transform-origin:350px 350px;animation:orbit-turn 35s linear infinite}
@keyframes orbit-turn{to{transform:rotate(360deg)}}
.orbital-beacon{transform-box:fill-box;transform-origin:center;animation:beacon-pulse 2.7s ease-in-out infinite}
.beacon-two{animation-delay:1.2s}
@keyframes beacon-pulse{50%{opacity:.45;filter:drop-shadow(0 0 14px #c4fbff)}}
.motion-coordinate{position:absolute;width:55px;height:55px;border-top:1px solid #d5f6f45a;border-left:1px solid #d5f6f45a;animation:coordinate 6s ease-in-out infinite alternate}.coordinate-one{left:12%;top:16%}.coordinate-two{right:11%;bottom:14%;transform:rotate(180deg);animation-delay:-3s}
@keyframes coordinate{to{opacity:.2;translate:10px -8px}}
/* editorial kinetic band uses existing real service wording */
.motion-ticker{height:54px;overflow:hidden;background:#eef7f9;color:#1b6379;border-bottom:1px solid #badde6;display:flex;align-items:center;position:relative}
.motion-ticker:before,.motion-ticker:after{content:'';position:absolute;top:0;bottom:0;width:130px;z-index:2;pointer-events:none}.motion-ticker:before{left:0;background:linear-gradient(90deg,#eef7f9,transparent)}.motion-ticker:after{right:0;background:linear-gradient(270deg,#eef7f9,transparent)}
.motion-ticker-track{display:flex;gap:52px;align-items:center;flex-shrink:0;width:max-content;animation:ticker-slide 29s linear infinite;font:600 13px 'Noto Sans JP',sans-serif;letter-spacing:.1em}
.motion-ticker-track span{white-space:nowrap}.motion-ticker-track i{display:block;width:5px;height:5px;border-radius:50%;background:#309bb6;box-shadow:0 0 0 6px #2094b31a}
@keyframes ticker-slide{to{transform:translateX(-50%)}}
/* Individual section entrances — staged title, body and image rather than identical fade on every component */
.section{position:relative;isolation:isolate}
.section>.wrap,.section>.opening-flex{position:relative}
.section:before{content:'';position:absolute;top:0;left:0;width:0;height:1px;background:linear-gradient(90deg,#36a7be66,#81d9e666,transparent);transition:width 1.65s var(--motion-ease)}
.section.section-lit:before{width:100%}
.section-head .kicker,.editorial-copy .kicker,.interior-content .kicker{transition:letter-spacing .85s var(--motion-ease)}
.section.section-lit .kicker{letter-spacing:.25em}
.reveal{opacity:0;transform:translateY(48px);filter:blur(6px);transition:opacity 1.05s var(--motion-ease),transform 1.05s var(--motion-ease),filter 1.05s var(--motion-ease)}
.reveal.in-view{opacity:1;transform:translateY(0);filter:blur(0)}
.service-grid>.service-card:nth-child(3n+2){transition-delay:.09s}.service-grid>.service-card:nth-child(3n+3){transition-delay:.18s}
.feature-list>.feature-feature:nth-child(2n){transition-delay:.13s}
.service-card{overflow:hidden;isolation:isolate;transform-style:preserve-3d;backface-visibility:hidden;will-change:transform;background:#fff;transition:transform .4s var(--motion-ease),border-color .4s,box-shadow .4s}
.service-card.in-view{transform:perspective(900px) rotateX(var(--tilt-y,0deg)) rotateY(var(--tilt-x,0deg)) translateY(var(--raise,0px))}
.service-card.in-view:hover{--raise:-10px;box-shadow:0 28px 60px #0b41502b;border-color:#72c6d8}
.service-card:after{content:'';position:absolute;inset:0;background:radial-gradient(300px circle at var(--spot-x,50%) var(--spot-y,50%),#2bbad112,transparent 70%);pointer-events:none;z-index:0;opacity:0;transition:opacity .4s}
.service-card:hover:after{opacity:1}.service-card>*{position:relative;z-index:1}
.service-number{transition:transform .45s var(--motion-ease)}.service-card:hover .service-number{transform:translateX(5px)}
.service-icon{transition:transform .7s var(--motion-ease),color .5s}.service-card:hover .service-icon{transform:translateY(-6px) rotate(-11deg);color:#22a3c0}
.service-arrow{transition:transform .5s var(--motion-ease)}.service-card:hover .service-arrow{transform:translate(4px,-4px)}
.photo-block,.contact-photo{overflow:hidden;clip-path:inset(0 0 0 0);transition:clip-path 1s var(--motion-ease),filter .8s;will-change:background-position}
.photo-block:before,.contact-photo:before{content:'';position:absolute;inset:0;background:linear-gradient(115deg,transparent 25%,#f1fdff30 44%,transparent 63%);background-size:220% 100%;transform:translateX(-100%);transition:transform 1.6s var(--motion-ease);z-index:1;pointer-events:none}
.photo-block.in-view:before,.contact-photo.in-view:before{transform:translateX(95%)}
.editorial-grid .photo-block{background-position:center var(--photo-y,50%);transition:background-position .15s linear,clip-path 1s var(--motion-ease)}
.event-preview-card{overflow:hidden;transition:transform .5s var(--motion-ease),box-shadow .5s,border-color .5s}
.event-preview-card:hover{transform:translateY(-9px);box-shadow:0 22px 35px #133b4517}
.event-preview-card::before{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 38%,#2bc5dc0d 55%,transparent 72%);transform:translateX(-120%);transition:transform .85s var(--motion-ease)}
.event-preview-card:hover:before{transform:translateX(115%)}
.archive-item{position:relative;transition:background .4s,padding-left .45s var(--motion-ease)}.archive-item:hover{background:#e8f5f8;padding-left:24px}.archive-item:after{content:'';position:absolute;left:0;bottom:0;height:1px;width:0;background:#36afc5;transition:width .5s var(--motion-ease)}.archive-item:hover:after{width:100%}
.education-item{transition:padding-left .45s var(--motion-ease),background .35s}.education-item:hover{padding-left:24px;background:#eef9fb}
.interior-hero{isolation:isolate}.interior-photo{animation:hero-image-move 38s ease-in-out infinite alternate;opacity:.9}
.interior-content{z-index:4;position:relative}.interior-content h1{animation:hero-copy-in 1s .12s var(--motion-ease) both}.interior-content .interior-lead{animation:hero-copy-in 1s .3s var(--motion-ease) both}
.interior-arc{position:absolute;right:-90px;top:-220px;width:630px;height:630px;border-radius:50%;border:1px solid #b6ebf12c;pointer-events:none;animation:interior-arc 18s linear infinite;z-index:1}.interior-arc i{position:absolute;inset:65px;border-radius:50%;border:1px solid #afedf02a;display:block}.interior-arc i:nth-child(2){inset:125px;border-style:dashed;animation:interior-arc 16s linear infinite reverse}.interior-arc i:nth-child(3){inset:195px;background:radial-gradient(circle,#96dce817,transparent 65%)}
@keyframes interior-arc{to{transform:rotate(360deg)}}
.opening-band{position:relative;overflow:hidden}.opening-band:before{content:'';position:absolute;left:-25%;top:0;width:25%;height:100%;transform:skewX(-20deg);background:linear-gradient(90deg,transparent,#d7ffff26,transparent);animation:opening-shine 11s ease-in-out infinite}
@keyframes opening-shine{45%,100%{left:135%}}
.button{position:relative;overflow:hidden;isolation:isolate}.button:after,.contact-pill:after{content:'';position:absolute;inset:0;transform:translateX(-160%) skewX(-15deg);background:linear-gradient(90deg,transparent,#ffffff45,transparent);transition:transform .75s var(--motion-ease);pointer-events:none}.button:hover:after,.contact-pill:hover:after{transform:translateX(150%) skewX(-15deg)}
.contact-banner:before{animation:contact-ring 13s ease-in-out infinite alternate}@keyframes contact-ring{to{transform:scale(1.24) rotate(19deg);opacity:.4}}
/* branded navigation wipe: stays compatible with V7 transition hooks */
.transition-cover{background:linear-gradient(123deg,#072c3c,#0b5670 65%,#1889a2);clip-path:polygon(0 0,100% 0,100% 100%,0 100%);letter-spacing:.04em;text-shadow:0 0 45px #a0edfc40}
.transition-cover:before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(145deg,transparent 0 100px,#e2f8ff08 101px 102px);pointer-events:none}
.transition-cover:after{content:'';position:absolute;left:0;right:0;top:50%;height:1px;background:linear-gradient(90deg,transparent,#a4e9f6a8,transparent);transform:scaleX(0);transition:transform .5s .1s var(--motion-ease)}
.transition-cover.show:after{transform:scaleX(1)}
.transition-cover.show{animation:cover-in .68s cubic-bezier(.76,0,.24,1) forwards}.transition-cover.out{animation:cover-out .75s cubic-bezier(.76,0,.24,1) forwards}
@keyframes cover-in{0%{transform:translateY(102%) skewY(2deg)}100%{transform:translateY(0) skewY(0)}}
@keyframes cover-out{0%{transform:translateY(0) skewY(0)}100%{transform:translateY(-103%) skewY(-2deg)}}
body.motion-ready main{animation:page-materialize 1.1s var(--motion-ease) both}@keyframes page-materialize{from{opacity:.62;filter:blur(7px)}to{opacity:1;filter:blur(0)}}
/* accessibility and mobile rendering */
@media(max-width:1120px){.motion-scene{right:-11vw;width:65vw;opacity:.62}.hero-copy{max-width:620px}}
@media(max-width:900px){.motion-scene{right:-31vw;width:90vw;opacity:.45}.hero-overlay{background:linear-gradient(90deg,#072633ef,#0b3544d9 75%,#063143ad)}.pointer-ambient{display:none}}
@media(max-width:650px){.hero{min-height:650px}.hero-image{opacity:.25}.motion-scene{right:-72vw;top:12%;width:145vw;height:80%;opacity:.28}.hero h1{font-size:clamp(29px,8.8vw,39px)}.hero-copy{max-width:100%}.motion-ticker{height:42px}.motion-ticker-track{gap:35px;font-size:11px;animation-duration:24s}.interior-arc{right:-330px;opacity:.5}.hero .button-primary{box-shadow:none}.service-card.in-view{transform:none!important}.photo-block{clip-path:none}}
@media(hover:none){.pointer-ambient{display:none}.service-card.in-view{transform:none!important}}
@media(prefers-reduced-motion:reduce){.world-art *,.motion-scene,.motion-halo,.motion-ticker-track,.opening-band:before,.interior-arc,.interior-arc *, .hero-image,.hero h1 em,.hero .button-primary,.site-header:after,.motion-coordinate,.contact-banner:before{animation:none!important}.reveal{opacity:1!important;transform:none!important;filter:none!important}.motion-scene{transform:none!important}.service-card.in-view{transform:none!important}.photo-block{background-position:center!important}.transition-cover{display:none!important}body.motion-ready main{animation:none!important}}
