body{margin:0;background:#0B0C0E}
a{color:#ECEDE8}a:hover{color:#C8F53C}
.nav-links{display:flex}
.menu-btn{display:none}
.m-cta{display:none}
@media (max-width:860px){.nav-links{display:none}.menu-btn{display:flex}}
@media (max-width:760px){.m-cta{display:flex}.hdr-cta{display:none !important}}

/* ---------- loader ---------- */
@property --p{syntax:'<integer>';inherits:false;initial-value:0}
.loader{position:fixed;inset:0;z-index:100;background:#0B0C0E;display:flex;align-items:center;justify-content:center;pointer-events:none;animation:ld-out .9s cubic-bezier(.8,0,.2,1) 2.1s both}
@keyframes ld-out{from{clip-path:inset(0 0 0 0)}to{clip-path:inset(0 0 100% 0)}}
.ld-tiger{position:absolute;inset:0;pointer-events:none;background-image:url(../img/white-tiger.jpg);background-size:cover;background-position:50% 38%;-webkit-mask-image:radial-gradient(ellipse 75% 85% at 50% 45%,#000 30%,transparent 80%);mask-image:radial-gradient(ellipse 75% 85% at 50% 45%,#000 30%,transparent 80%);animation:ld-tiger 1.9s cubic-bezier(.4,0,.2,1) .2s both}
@keyframes ld-tiger{from{opacity:0;filter:blur(20px) brightness(.8);scale:1.08}to{opacity:.34;filter:blur(4px) brightness(.9);scale:1}}
@keyframes ld-tiger-sp{from{opacity:0;filter:blur(10px) brightness(.8);scale:1.08}to{opacity:.38;filter:blur(1.5px) brightness(.9);scale:1}}
@media (max-width:760px){.ld-tiger{animation-name:ld-tiger-sp}}
@media (prefers-reduced-motion:reduce){.ld-tiger{animation:none;opacity:.3}}
.ld-ch{display:inline-block;animation:ld-ch .8s cubic-bezier(.2,.8,.1,1) both}
@keyframes ld-ch{from{translate:0 110%}to{translate:0 0}}
.ld-bar{height:100%;transform-origin:left;animation:ld-bar 1.8s cubic-bezier(.6,0,.2,1) .2s both}
@keyframes ld-bar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.ld-num{animation:ld-num 1.8s cubic-bezier(.6,0,.2,1) .2s both;counter-reset:p var(--p)}
.ld-num::after{content:counter(p) "%"}
@keyframes ld-num{from{--p:0}to{--p:100}}

/* ---------- cursor ---------- */
.cursor{position:fixed;left:0;top:0;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:var(--acc);mix-blend-mode:difference;pointer-events:none;z-index:90;translate:var(--cx,-200px) var(--cy,-200px);scale:.3;transition:translate .14s ease-out,scale .35s cubic-bezier(.2,.7,.1,1)}
.root:has(a:hover) .cursor,.root:has(button:hover) .cursor{scale:1.7}
@media (hover:none){.cursor{display:none}}

/* ---------- hero ---------- */
@property --hx{syntax:'<length-percentage>';inherits:true;initial-value:72%}
@property --hy{syntax:'<length-percentage>';inherits:true;initial-value:38%}
.spot{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--acc) 1px,transparent 1px),linear-gradient(90deg,var(--acc) 1px,transparent 1px);background-size:80px 80px;background-position:center top;opacity:.55;-webkit-mask-image:radial-gradient(circle 300px at var(--hx) var(--hy),#000 0,transparent 75%);mask-image:radial-gradient(circle 300px at var(--hx) var(--hy),#000 0,transparent 75%)}
@media (hover:none){.hero{animation:roam 9s ease-in-out infinite alternate}}
.tiger{position:absolute;inset:0;pointer-events:none;background-image:url(../img/white-tiger.jpg);background-size:cover;background-position:50% 38%;mix-blend-mode:screen;filter:brightness(.9);opacity:0;transition:opacity .8s ease;-webkit-mask-image:radial-gradient(circle 420px at var(--hx) var(--hy),#000 0,rgba(0,0,0,.55) 35%,transparent 72%);mask-image:radial-gradient(circle 420px at var(--hx) var(--hy),#000 0,rgba(0,0,0,.55) 35%,transparent 72%)}
.hero:hover .tiger{opacity:.36}
@media (hover:none){.tiger{opacity:.28}}
@keyframes roam{0%{--hx:15%;--hy:25%}50%{--hx:80%;--hy:40%}100%{--hx:40%;--hy:80%}}
.ch{display:inline-block;animation:ch-in 1s cubic-bezier(.2,.8,.1,1) both}
@keyframes ch-in{from{opacity:0;translate:0 .6em;rotate:8deg;filter:blur(10px)}to{opacity:1;translate:0 0;rotate:0deg;filter:blur(0)}}
.ticker{display:inline-block;height:1.15em;overflow:hidden;vertical-align:bottom}
.ticker-in{display:flex;flex-direction:column;animation:ticker 12s cubic-bezier(.7,0,.2,1) infinite}
.ticker-in span{height:1.15em;line-height:1.15em}
@keyframes ticker{0%,15%{translate:0 0}20%,35%{translate:0 -16.6667%}40%,55%{translate:0 -33.3333%}60%,75%{translate:0 -50%}80%,95%{translate:0 -66.6667%}100%{translate:0 -83.3333%}}
.spin{animation:spin 16s linear infinite}
@keyframes spin{to{rotate:360deg}}
.blink{animation:blink 1.2s steps(1) infinite}
@keyframes blink{50%{opacity:0}}

/* 3D cube */
.cube-wrap{--s:250px;position:absolute;right:clamp(20px,5vw,80px);top:clamp(150px,13vw,200px);width:var(--s);height:var(--s);perspective:1000px;animation:cube-in 1.4s cubic-bezier(.2,.8,.1,1) 2.6s both}
@keyframes cube-in{from{opacity:0;scale:.4}to{opacity:1;scale:1}}
.cube-tilt{width:100%;height:100%;transform-style:preserve-3d;transform:rotateX(calc(var(--ty,0) * -22deg)) rotateY(calc(var(--tx,0) * 28deg));transition:transform .5s cubic-bezier(.2,.7,.1,1)}
.cube{width:100%;height:100%;position:relative;transform-style:preserve-3d;animation:cube-spin 20s linear infinite}
@keyframes cube-spin{from{transform:rotateX(-22deg) rotateY(0deg)}to{transform:rotateX(-22deg) rotateY(360deg)}}
.face{position:absolute;inset:0;box-sizing:border-box;border:1.5px solid var(--acc);background:rgba(200,245,60,.05);display:flex;align-items:flex-end;justify-content:space-between;padding:18px;font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:calc(var(--s) * .15);letter-spacing:-0.03em;color:var(--acc);backface-visibility:visible}
.face small{font-family:'JetBrains Mono',monospace;font-weight:400;font-size:11px;letter-spacing:.08em;color:#9A9EA6;align-self:flex-start}
.cube-glow{position:absolute;left:10%;right:10%;bottom:-70px;height:30px;border-radius:50%;background:var(--acc);opacity:.18;filter:blur(24px)}
.cube-cap{position:absolute;left:0;right:0;bottom:-104px;text-align:center;font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:.1em;color:#9A9EA6}
@media (hover:none){.cube-cap{display:none}}
@media (max-width:1100px){.cube-wrap{--s:170px;position:relative;right:auto;top:auto;align-self:flex-end;margin:24px 24px 72px 0}.cube-cap{display:none}}

/* ---------- cards & mini screens ---------- */
.card{transition:transform .45s cubic-bezier(.2,.7,.1,1),border-color .35s ease}
.card:hover{transform:translateY(-8px);border-color:var(--acc) !important}
.a-grow{transform-origin:bottom}
.a-prog{transform-origin:left;transform:scaleX(.38)}
.a-path{offset-distance:0%;offset-rotate:0deg}
.card:hover .a-grow{animation:grow .9s cubic-bezier(.2,.8,.1,1) both}
.card:hover .a-pop{animation:pop .6s cubic-bezier(.3,1.5,.5,1) both}
.card:hover .a-bump{animation:bump .5s ease .9s both}
.card:hover .a-slide{animation:slide .7s cubic-bezier(.2,.8,.1,1) both}
.card:hover .a-scroll{animation:lpscroll 2.2s cubic-bezier(.6,0,.2,1) both}
.card:hover .a-fan-l{animation:fanl .7s cubic-bezier(.2,.8,.1,1) both}
.card:hover .a-fan-r{animation:fanr .7s cubic-bezier(.2,.8,.1,1) both}
.card:hover .a-prog{animation:prog 2.4s linear both}
.card:hover .a-pulse{animation:pulse 1s ease infinite}
.card:hover .a-path{animation:path 1.8s cubic-bezier(.6,0,.2,1) infinite}
@keyframes grow{from{transform:scaleY(.08)}to{transform:scaleY(1)}}
@keyframes pop{from{scale:0;opacity:0}to{scale:1;opacity:1}}
@keyframes bump{50%{scale:1.7}}
@keyframes slide{from{translate:-40px 0;opacity:0}to{translate:0 0;opacity:1}}
@keyframes lpscroll{from{translate:0 0}to{translate:0 -52%}}
@keyframes fanl{from{rotate:0deg;translate:0 0}to{rotate:-14deg;translate:-48px 6px}}
@keyframes fanr{from{rotate:0deg;translate:0 0}to{rotate:14deg;translate:48px 6px}}
@keyframes prog{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes pulse{50%{scale:1.15}}
@keyframes path{from{offset-distance:0%}to{offset-distance:100%}}
@media (hover:none){
.a-grow{animation:grow 1.6s ease infinite alternate}
.a-pop{animation:pop 1.2s ease infinite alternate}
.a-slide{animation:slide 1.4s ease infinite alternate}
.a-scroll{animation:lpscroll 3s ease-in-out infinite alternate}
.a-fan-l{animation:fanl 1.6s ease infinite alternate}
.a-fan-r{animation:fanr 1.6s ease infinite alternate}
.a-prog{animation:prog 3s linear infinite}
.a-path{animation:path 2s cubic-bezier(.6,0,.2,1) infinite}
}
.work .art{transition:scale .8s cubic-bezier(.2,.7,.1,1)}

.work .view{opacity:0;scale:.6;transition:opacity .3s ease,scale .45s cubic-bezier(.2,.7,.1,1)}
.work:hover .view{opacity:1;scale:1}
.works-loop{will-change:transform}
.ws-hint{position:absolute;top:0;bottom:0;width:18%;display:flex;align-items:center;pointer-events:none;opacity:0;transition:opacity .35s ease;z-index:2;color:var(--acc)}
.ws-hint.l{left:0;justify-content:flex-start;padding-left:clamp(12px,3vw,40px)}
.ws-hint.r{right:0;justify-content:flex-end;padding-right:clamp(12px,3vw,40px)}
.works-slider:hover .ws-hint{opacity:.9}
@media (hover:none){.ws-hint{display:none}}
.partners .pt{text-align:center}
@media (max-width:760px){.partners{display:grid !important;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px !important}.partners .pt-label{grid-column:1 / -1;margin:0 0 6px !important}.partners .pt{font-size:14px !important;padding:10px 2px !important;white-space:nowrap}}
@keyframes works-loop{from{translate:0 0}to{translate:-50% 0}}
.work-title{transition:color .3s ease}

.work-all{transition:transform .45s cubic-bezier(.2,.7,.1,1)}
.work-all:hover{transform:translateY(-8px)}
.work-all .all-arrow{transition:rotate .45s cubic-bezier(.2,.7,.1,1)}
.work-all:hover .all-arrow{rotate:-45deg}
.pill{transition:background .25s ease,color .25s ease,border-color .25s ease}
.pill:hover{border-color:var(--acc) !important}
@media (max-width:760px){.works-scroller{overflow-x:auto !important;scroll-snap-type:x mandatory}.works-track{animation:none !important;transform:none !important}.work{scroll-snap-align:start}}

/* ---------- flow ---------- */
.flow-line{position:absolute;left:28px;right:28px;top:27px;height:2px;transform-origin:left;transform:scaleX(1)}
@media (max-width:900px){.flow-line{display:none}.flow-step{border-left:2px solid #26292E;padding-left:20px !important}}

/* ---------- footer neon trace ---------- */
/* V→Sを順になぞる(0–3.9s) → ネオン点灯て3秒維持(–6.9s) → 消灯(–7.5s) → 繰り返し */
.nl{stroke-dasharray:3000 3000;stroke-dashoffset:3000;animation-duration:7.5s;animation-timing-function:linear;animation-iteration-count:infinite}
.d0{animation-name:d0}.d1{animation-name:d1}.d2{animation-name:d2}.d3{animation-name:d3}.d4{animation-name:d4}.d5{animation-name:d5}.d6{animation-name:d6}.d7{animation-name:d7}.d8{animation-name:d8}.d9{animation-name:d9}.d10{animation-name:d10}
@keyframes d0{0%{stroke-dashoffset:3000;opacity:1}12%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes d1{0%,4%{stroke-dashoffset:3000;opacity:1}16%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes d2{0%,8%{stroke-dashoffset:3000;opacity:1}20%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes d3{0%,12%{stroke-dashoffset:3000;opacity:1}24%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes d4{0%,16%{stroke-dashoffset:3000;opacity:1}28%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes d5{0%,20%{stroke-dashoffset:3000;opacity:1}32%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes d6{0%,24%{stroke-dashoffset:3000;opacity:1}36%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes d7{0%,28%{stroke-dashoffset:3000;opacity:1}40%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes d8{0%,32%{stroke-dashoffset:3000;opacity:1}44%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes d9{0%,36%{stroke-dashoffset:3000;opacity:1}48%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
@keyframes d10{0%,40%{stroke-dashoffset:3000;opacity:1}52%,92%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
.neon-full{opacity:0;animation:neon-on 7.5s linear infinite}
@keyframes neon-on{0%,52%{opacity:0}53%{opacity:.9}54%{opacity:.15}55.5%{opacity:1}56.5%{opacity:.4}58%,92%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.nl,.neon-full{animation:none}.nl{stroke-dashoffset:0}}

/* ---------- marquee band (under hero) ---------- */
.band-l{animation:band-l 38s linear infinite}
.band-r{animation:band-r 46s linear infinite}
@keyframes band-l{from{translate:0 0}to{translate:-50% 0}}
@keyframes band-r{from{translate:-50% 0}to{translate:0 0}}

/* ---------- menu overlay ---------- */
.menu-ov{animation:mo-in .55s cubic-bezier(.8,0,.2,1) both}
@keyframes mo-in{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}
.mo-link{animation:mo-link .6s cubic-bezier(.2,.8,.1,1) both}
@keyframes mo-link{from{opacity:0;translate:0 40px}to{opacity:1;translate:0 0}}

/* ---------- count-up ---------- */
@property --n{syntax:'<integer>';inherits:false;initial-value:0}
.count::after{content:"10"}
.count-90::after{content:"90"}
.count-80::after{content:"80"}

/* ---------- scroll-driven ---------- */
.progress{position:fixed;top:0;left:0;right:0;height:3px;transform:scaleX(0);transform-origin:left;z-index:30}
.sr-line{transform-origin:left}
@supports (animation-timeline: view()){
@media (prefers-reduced-motion:no-preference){
.sr{animation:sr-up linear both;animation-timeline:view();animation-range:entry 5% entry 90%}
.sr-clip{animation:sr-clip linear both;animation-timeline:view();animation-range:entry 10% entry 100%}
.sr-line{animation:sr-line linear both;animation-timeline:view();animation-range:entry 0% entry 100%}
.sr-card{animation:sr-card linear both;animation-timeline:view();animation-range:entry 0% entry 75%}
.hero-out{animation:hero-out linear both;animation-timeline:view();animation-range:exit 0% exit 100%}
.para{animation:para linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
.drift-l{animation:drift-l linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
.drift-r{animation:drift-r linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
.works-track{animation:works linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
.flow-line{animation:sr-line linear both;animation-timeline:view();animation-range:entry 40% cover 55%}
.fill{background:linear-gradient(90deg,#ECEDE8 50%,#2E3136 50%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent !important;animation:fill linear both;animation-timeline:view();animation-range:entry 70% cover 45%}
.fill-acc{background:linear-gradient(90deg,var(--acc) 50%,#2E3136 50%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent !important;animation:fill linear both;animation-timeline:view();animation-range:entry 70% cover 45%}
.count,.count-90,.count-80{animation-timing-function:cubic-bezier(.2,.7,.3,1);animation-fill-mode:both;animation-duration:1ms;animation-timeline:view();animation-range:entry 20% cover 45%;counter-reset:n var(--n)}
.count{animation-name:count}
.count-90{animation-name:count90}
.count-80{animation-name:count80}
.count::after,.count-90::after,.count-80::after{content:counter(n)}
.progress{animation:progress linear both;animation-timeline:scroll(root)}
.hdr{animation:hdr linear both;animation-timeline:scroll(root);animation-range:0px 240px}
}
}
@keyframes sr-up{from{opacity:0;translate:0 56px;filter:blur(6px)}to{opacity:1;translate:0 0;filter:blur(0)}}
@keyframes sr-clip{from{clip-path:inset(-0.3em -0.3em 100% -0.3em);translate:0 40%}to{clip-path:inset(-0.3em -0.3em -0.3em -0.3em);translate:0 0}}
@keyframes sr-line{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes sr-card{from{opacity:0;translate:0 80px;scale:.94}to{opacity:1;translate:0 0;scale:1}}
@keyframes hero-out{from{opacity:1;translate:0 0;scale:1}to{opacity:0;translate:0 -140px;scale:.95}}
@keyframes para{from{transform:translateY(-12%)}to{transform:translateY(12%)}}
/* ---------- Local copy: compact on mobile ---------- */
.lc-short{display:none}
@media (max-width:760px){.lc-long{display:none !important}.lc-short{display:block}.loc-list li{padding-top:10px !important;padding-bottom:10px !important}.loc-list li span:last-child{font-size:14px !important;line-height:1.6}}
/* ---------- case card (06 Local) ---------- */
.case-card{transition:border-color .35s ease,transform .45s cubic-bezier(.2,.7,.1,1)}
.case-card:hover{border-color:var(--acc) !important;transform:translateY(-6px)}
.case-card .case-link{transition:background .3s ease,color .3s ease,border-color .3s ease}
.case-card:hover .case-link{background:var(--acc);color:#0B0C0E;border-color:var(--acc) !important}
.case-photo{background-image:url(../img/ntrain-layout.jpg);background-size:cover;background-position:62% 60%;transition:scale .9s cubic-bezier(.2,.7,.1,1)}
.case-card:hover .case-photo{scale:1.05}
@keyframes case-train{from{transform:translateX(0)}to{transform:translateX(440px)}}
@media (max-width:760px){.case-card > div:last-child{border-left:none !important;border-top:1px solid #26292E}}
@media (prefers-reduced-motion:reduce){.case-train{animation:none;transform:translateX(200px)}}
/* ---------- Japan dot map (06 Local) ---------- */
.jp-map .n-acc{stroke:var(--acc)}
.jp-map .n-acc-f{fill:var(--acc)}
.jp-map .map-arc{stroke-dasharray:1;stroke-dashoffset:0;stroke-opacity:.85}
.jp-map .map-arc-in{animation:map-flow 1.6s linear infinite}
@keyframes map-flow{from{stroke-dashoffset:0}to{stroke-dashoffset:-20}}
.jp-map .origin-pulse,.jp-map .city-ring{transform-box:fill-box;transform-origin:center}
.jp-map .origin-pulse{animation:map-pulse 2.4s ease-out infinite}
.jp-map .city-ring{animation:map-ring 3.2s ease-in-out infinite alternate}
@keyframes map-pulse{from{scale:1;opacity:.9}to{scale:3.4;opacity:0}}
@keyframes map-ring{from{scale:.8;opacity:.25}to{scale:1.15;opacity:.7}}
@keyframes map-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@supports (animation-timeline: view()){
@media (prefers-reduced-motion:no-preference){
.jp-map .map-arc{animation:map-draw linear both;animation-timeline:view();animation-range:entry 40% cover 55%}
}
}
@media (prefers-reduced-motion:reduce){.jp-map .origin-pulse,.jp-map .city-ring,.jp-map .map-arc-in{animation:none}.jp-map .map-parcels{display:none}}
/* ---------- neon town (06 Local) ---------- */
.neon-town .n-acc{stroke:var(--acc)}
.neon-town .n-acc-f{fill:var(--acc)}
.neon-town .neon path,.neon-town .neon circle,.neon-town .neon rect{stroke-dasharray:1;stroke-dashoffset:0}
.neon-town .flick{animation:neon-flick 7s steps(1) infinite}
.neon-town .win{animation:neon-win 3.6s ease-in-out infinite alternate}
.neon-town .twinkle{animation:neon-twinkle 3s ease-in-out infinite alternate}
@keyframes neon-flick{0%,100%{opacity:1}41%{opacity:.25}42%{opacity:1}44%{opacity:.4}45%{opacity:1}78%{opacity:.6}79%{opacity:1}}
@keyframes neon-win{from{opacity:.35}to{opacity:1}}
@keyframes neon-twinkle{from{opacity:.15}to{opacity:.9}}
@keyframes neon-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.neon-town .train{animation:neon-train 16s linear infinite}
@keyframes neon-train{from{transform:translateX(0)}to{transform:translateX(680px)}}
.neon-town .shimmer{animation:neon-shimmer 2.4s ease-in-out infinite alternate}
@keyframes neon-shimmer{from{opacity:.15;transform:translateX(-2px)}to{opacity:.6;transform:translateX(2px)}}
@supports (animation-timeline: view()){
@media (prefers-reduced-motion:no-preference){
.neon-town .neon path,.neon-town .neon circle,.neon-town .neon rect{animation:neon-draw linear both;animation-timeline:view();animation-range:entry 30% cover 50%}
}
}
@media (prefers-reduced-motion:reduce){.neon-town .flick,.neon-town .win,.neon-town .twinkle,.neon-town .train,.neon-town .shimmer{animation:none}}
@keyframes drift-l{from{transform:translateX(0)}to{transform:translateX(-35%)}}
@keyframes drift-r{from{transform:translateX(-35%)}to{transform:translateX(0)}}
@keyframes works{from{transform:translateX(8%)}to{transform:translateX(-38%)}}
@keyframes fill{from{background-position:100% 0}to{background-position:0 0}}
@keyframes count{from{--n:0}to{--n:10}}
@keyframes count90{from{--n:0}to{--n:90}}
@keyframes count80{from{--n:0}to{--n:80}}
@keyframes progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes hdr{from{background:rgba(11,12,14,0)}to{background:rgba(11,12,14,.86);backdrop-filter:blur(14px);border-bottom-color:#26292E}}
@media (prefers-reduced-motion:reduce){.loader{display:none}.ch,.ticker-in,.spin,.blink,.band-l,.band-r,.works-loop,.cube,.cube-wrap,.hero,.a-grow,.a-pop,.a-slide,.a-scroll,.a-fan-l,.a-fan-r,.a-prog,.a-path,.a-pulse,.a-bump{animation:none !important}}

/* ---------- JP line breaking (phrase-aware, mobile) ---------- */
.root{word-break:auto-phrase;line-break:strict;overflow-wrap:break-word}
.root p{text-wrap:pretty}
.w{display:inline-block}
.sp-br{display:none}
@media (max-width:600px){.pc-br{display:none}.sp-br{display:inline}}
