/* tasuki-ecox site.css — 色は無彩色 8 トークン＋蛍光シアン --te-neon（光る部分だけ）＋ダルマ専用の赤 --te-daruma（.te-daruma* の中だけ）。接頭辞 te-。
   白地ではシアンを文字色にしない（蛍光ペンの帯・罫線・点）。黒地では文字・線・発光に使う。影は発光（--te-glow／rgba(25,240,255,…)）だけ。
   gradient は光の帯と蛍光ペンの帯（--te-hl）の 2 か所だけ。ぼかし・4px 超の角丸なし。
   動かすのは transform／opacity／clip-path／dashoffset／background-position／background-size。演出は html.te-js 配下、静止版は html.te-st。 */

:root{
--te-bg:#FFFFFF;
--te-ink:#111111;
--te-black:#090909;
--te-dark:#202020;
--te-mid:#777777;
--te-light:#E8E8E8;
--te-xlight:#F6F6F6;
--te-rule:#DADADA;
--te-foot:#080808;
--te-neon:#19F0FF;
--te-daruma:#C8102E;
--te-glow:rgba(25,240,255,.6);
--te-hl:linear-gradient(var(--te-neon),var(--te-neon));

--te-font:Inter,"Noto Sans JP","Hiragino Sans","Yu Gothic",Meiryo,sans-serif;
--te-ease:cubic-bezier(.2,.7,.2,1);
--te-pop:cubic-bezier(.34,1.56,.64,1);

--te-container:1360px;
--te-gutter:clamp(20px,5vw,80px);
--te-col-gap:24px;
--te-sp:clamp(120px,14vw,200px);
--te-sp-max:clamp(160px,20vw,280px);
--te-header-h:64px;
}
@media (max-width:767px){
:root{--te-col-gap:16px;--te-header-h:56px}
}

/* base */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
html,body{overflow-x:clip}
body{
margin:0;
font-family:var(--te-font);
font-size:17px;
line-height:1.9;
color:var(--te-ink);
background:var(--te-bg);
font-feature-settings:"palt";
font-kerning:normal;
-webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4,p,ol,ul,dl,dd,figure{margin:0}
ol,ul{padding:0;list-style:none}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
img,svg{display:block;max-width:100%}
h1,h2,h3,h4,.te-d1,.te-d2,.te-h2,.te-h3{font-feature-settings:"palt";word-break:keep-all;text-wrap:balance;overflow-wrap:anywhere}
.te-x{font-family:Inter,sans-serif;font-weight:300;color:var(--meta,var(--te-mid));font-size:.85em}
.te-dim{color:inherit}
.te-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* 蛍光ペンの帯：文字の下半分に敷く。出現（is-in）で左から走って止まる。文字色は変えない */
.te-hl{background:var(--te-hl) no-repeat 0 92%;background-size:100% .34em}
.te-js .te-hl{background-size:0% .34em;transition:background-size .9s var(--te-ease) calc(var(--d,0ms) + 350ms)}
.te-js .is-in .te-hl,.te-js .te-hl.is-in{background-size:100% .34em}
.te-rh__no,.te-rh__folio,.te-figure__price,.te-num-xl,.te-num-l,.te-header__folio,.te-concept__v,.te-list__n,.te-tr__num{font-variant-numeric:tabular-nums}
:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.te-skip{position:absolute;left:16px;top:-100px;z-index:100;background:#111;color:#fff;padding:10px 16px;font-size:13px;text-decoration:none}
.te-skip:focus{top:12px}
.te-br-sp{display:none}
.te-nb{white-space:nowrap}
.te-ext{font-style:normal;display:inline-block;transition:transform .24s var(--te-ease)}
@media (hover:hover){a:hover .te-ext,a:focus-visible .te-ext{transform:translate(2px,-2px)}}

/* layout */
.te-container{max-width:var(--te-container);margin-inline:auto;padding-inline:var(--te-gutter);box-sizing:content-box}
.te-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--te-col-gap)}
@media (max-width:767px){.te-grid>*{grid-column:1 / -1}}
.te-sec{
position:relative;overflow-x:clip;
--bg:var(--te-bg);--fg:var(--te-dark);--head:var(--te-ink);--meta:var(--te-mid);--rule:var(--te-rule);
background:var(--bg);color:var(--fg);
}
.te-sec--mill{--bg:var(--te-xlight)}
.te-sec--cast{--bg:var(--te-black);--fg:var(--te-light);--head:#FFFFFF;--rule:var(--te-dark)}
.te-sec h1,.te-sec h2,.te-sec h3,.te-sec h4{color:var(--head)}
.te-sec--cast .te-x{color:var(--te-mid)}
.te-sec.te-sec--belt{padding-bottom:0}

/* type */
.te-label,.te-kicker,.te-rh__name,.te-rh__folio,.te-header__folio,.te-figure__unit,.te-link,.te-hero__caption{font-family:Inter,sans-serif;font-weight:500;font-size:12px;line-height:1.5;letter-spacing:.2em;text-transform:uppercase}
.te-micro,.te-tag,.te-concept__stamp,.te-concept__live,.te-concept__k,.te-concept__ex{font-family:Inter,sans-serif;font-weight:500;font-size:11px;line-height:1.5;letter-spacing:.16em;text-transform:uppercase}
.te-d1{font-weight:500;font-size:clamp(40px,6.2vw,88px);line-height:1.12;letter-spacing:-.015em}
.te-d2{font-weight:500;font-size:clamp(36px,5.6vw,80px);line-height:1.15;letter-spacing:-.015em}
.te-d3{font-family:Inter,sans-serif;font-weight:600;font-size:clamp(40px,9vw,128px);line-height:.95;letter-spacing:-.035em;text-transform:uppercase}
.te-h2{font-weight:700;font-size:clamp(30px,4.2vw,56px);line-height:1.2;letter-spacing:-.01em}
.te-h3{font-weight:700;font-size:clamp(26px,3.4vw,46px);line-height:1.25}
.te-h4{font-family:Inter,sans-serif;font-weight:600;font-size:clamp(18px,1.9vw,26px);line-height:1.3;letter-spacing:.01em;text-transform:uppercase}
.te-lead{font-weight:500;font-size:clamp(18px,1.6vw,24px);line-height:1.6;max-width:28em}
.te-body{font-size:17px;line-height:1.9;max-width:34em;word-break:keep-all;overflow-wrap:anywhere;text-wrap:balance}
.te-small{font-size:14.5px;line-height:1.7}
.te-num-xl{font-family:Inter,sans-serif;font-weight:300;font-size:clamp(72px,9vw,144px);line-height:1;letter-spacing:-.02em}
.te-num-l{font-family:Inter,sans-serif;font-weight:300;font-size:clamp(56px,6vw,96px);line-height:1;letter-spacing:-.02em}
.te-kicker{color:var(--head)}
@media (max-width:767px){
body{font-size:16px;line-height:1.85}
.te-body{font-size:16px;line-height:1.85}
}
@media (max-width:479px){
.te-br-pc{display:none}
.te-br-sp{display:inline}
.te-d1{font-size:clamp(34px,9.6vw,40px)}
.te-d2{font-size:clamp(30px,8.6vw,36px)}
}

/* running head (柱)：罫線が伸び、章番号が点灯。「01」は全体同色 */
.te-rh{
border-top:1px solid var(--rule);position:relative;
display:grid;grid-template-columns:auto 1fr auto;gap:24px;align-items:baseline;
padding-block:16px;
}
.te-rh__no{font-family:Inter,sans-serif;font-weight:400;font-size:14px;line-height:1.5;color:var(--head)}
.te-js .te-rh.te-rv-g .te-rh__no{color:var(--meta);transition:color .2s linear .6s}
.te-js .te-rh.is-in .te-rh__no{color:var(--head)}
.te-rh__name{color:var(--head);display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.te-rh__brand{text-transform:none}
.te-rh__folio{color:var(--meta);text-align:right;display:flex;gap:24px}
.te-rh + *{margin-top:clamp(48px,6vw,96px)}
.te-tag{display:inline-block;border:1px solid var(--te-mid);border-radius:2px;padding:3px 8px;color:var(--fg)}
@media (max-width:767px){
.te-rh{grid-template-columns:auto 1fr;gap:16px}
.te-rh__folio{grid-column:2;grid-row:1;justify-content:flex-end}
.te-rh__folio .te-rh__brand{display:none}
.te-rh__name{grid-column:1 / -1;grid-row:2}
.te-rh__no{grid-column:1;grid-row:1}
}

/* buttons / links：黒地のボタン。hover で矢印と下線が蛍光に光り、矢印が前へ滑り尾が伸びる（黒地なのでシアンを文字に使える） */
.te-btn{
position:relative;display:inline-flex;align-items:center;justify-content:center;gap:12px;
border-radius:2px;border:1px solid #111;background:#111;color:#fff;
padding:0 24px;height:52px;white-space:nowrap;text-decoration:none;
font-family:var(--te-font);font-weight:500;font-size:14px;letter-spacing:.04em;line-height:1;
transition:background-color .2s,color .2s,border-color .2s,box-shadow .3s;
}
.te-btn--hero{height:56px}
.te-btn--final{height:60px}
.te-btn--header{height:44px;padding:0 20px;font-family:Inter,sans-serif;font-size:13px;letter-spacing:.1em;text-transform:uppercase}
.te-btn::after{content:"";position:absolute;left:-1px;right:-1px;bottom:-1px;height:2px;background:var(--te-neon);transform:scaleX(0);transform-origin:left;transition:transform .32s var(--te-ease);pointer-events:none}
.te-btn__arrow{font-family:Inter,sans-serif;position:relative;display:inline-block;transition:transform .24s var(--te-ease),color .2s}
.te-btn__arrow::before{content:"";position:absolute;right:100%;top:50%;width:10px;height:1px;margin-right:-2px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .24s var(--te-ease)}
.te-btn:hover,.te-btn:focus-visible{background:var(--te-black);border-color:var(--te-black);box-shadow:0 8px 28px -10px var(--te-glow)}
.te-btn:hover::after,.te-btn:focus-visible::after{transform:scaleX(1)}
.te-btn:hover .te-btn__arrow,.te-btn:focus-visible .te-btn__arrow{color:var(--te-neon)}
.te-btn:disabled{cursor:default;border-color:var(--te-mid);background:var(--te-mid);box-shadow:none}
.te-btn:disabled::after{display:none}
@media (hover:hover){
.te-btn:hover .te-btn__arrow,.te-btn:focus-visible .te-btn__arrow{transform:translateX(6px)}
.te-btn:hover .te-btn__arrow::before,.te-btn:focus-visible .te-btn__arrow::before{transform:scaleX(1)}
}
.te-link{position:relative;display:inline-flex;align-items:center;gap:8px;color:var(--head);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:4px}
.te-link::before{content:"";position:absolute;left:0;right:0;top:-12px;bottom:-10px}
.te-link::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:3px;background:var(--te-neon);transform:scaleX(0);transform-origin:left;transition:transform .28s var(--te-ease)}
.te-link:hover::after,.te-link:focus-visible::after{transform:scaleX(1)}
.te-link span{display:inline-block;transition:transform .24s var(--te-ease)}
.te-link:hover span{transform:translateY(3px)}
.te-a{position:relative;text-decoration:none;color:var(--head);border-bottom:1px solid var(--rule)}
.te-a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:3px;background:var(--te-neon);transform:scaleX(0);transform-origin:left;transition:transform .28s var(--te-ease)}
.te-a:hover::after,.te-a:focus-visible::after{transform:scaleX(1)}
@media (max-width:767px){
.te-btn--hero,.te-btn--final,.te-btn--service{width:100%;justify-content:space-between;height:56px}
.te-btn--service{height:52px}
}

/* lists / figure */
.te-list{display:grid;column-gap:var(--te-col-gap);row-gap:0}
.te-list li{display:flex;gap:14px;align-items:baseline;padding-block:12px;border-bottom:1px solid var(--rule);font-size:14.5px;line-height:1.7}
.te-list__n{font-family:Inter,sans-serif;font-weight:500;font-size:12px;letter-spacing:.1em;color:var(--head);flex:0 0 auto;display:inline-block;transition:color .3s linear,transform .24s var(--te-ease)}
.te-js .te-list li.te-rv:not(.is-in) .te-list__n{color:var(--meta)}
.te-js .te-list li.te-rv .te-list__n{transition-delay:var(--d,0ms)}
@media (hover:hover){.te-list li:hover .te-list__n{transform:translateX(4px)}}
.te-list--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.te-list--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.te-list--plain li{padding-block:10px;font-size:15px}
@media (max-width:1023px){.te-list--3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:767px){.te-list--3,.te-list--2{grid-template-columns:1fr}.te-list--2.te-list--keep{grid-template-columns:repeat(2,minmax(0,1fr))}}
.te-figure{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding-block:16px}
.te-figure__price{font-family:Inter,sans-serif;font-weight:500;font-size:clamp(22px,2.4vw,32px);line-height:1.2;letter-spacing:-.01em;color:var(--head);overflow-wrap:anywhere}
.te-figure__unit{color:var(--fg);margin-top:6px}

/* header：読み進め線と章の目盛（≥1024・トップ）。折丁の章番号はカウンタ */
.te-header{position:sticky;top:0;z-index:50;min-height:var(--te-header-h);background:#fff;border-bottom:1px solid var(--te-rule)}
.te-header__in{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:var(--te-header-h);flex-wrap:wrap;padding-block:8px}
.te-js .te-header__in{flex-wrap:nowrap;padding-block:0}
.te-header__brand{display:inline-flex;align-items:center;min-height:44px;font-family:Inter,sans-serif;font-weight:500;font-size:15px;letter-spacing:-.01em;color:#111;text-decoration:none;line-height:1;white-space:nowrap;flex:0 0 auto}
.te-header__folio{display:none;color:var(--te-mid);white-space:nowrap;line-height:1;flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis}
.te-folio__name{display:inline-block;transition:opacity .2s linear}
.te-folio__name.is-swap{opacity:0}
.te-header__line{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--te-neon);box-shadow:0 0 10px var(--te-glow);transform:scaleX(0);transform-origin:left;will-change:transform;pointer-events:none}
.te-header__ticks{position:absolute;left:0;right:0;bottom:-4px;height:4px;display:none;visibility:hidden;pointer-events:none}
.te-header__ticks.is-set{visibility:visible}
.te-header__ticks i{position:absolute;top:0;width:1px;height:4px;background:var(--te-rule);transition:background-color .2s}
.te-header__ticks i.is-past{background:#111}
@media (min-width:1024px){.te-js .te-header__ticks{display:block}}
.te-header__right{display:flex;align-items:center;gap:clamp(14px,2.2vw,32px)}
.te-js .te-header__right{flex:0 0 auto}
.te-header__nav{display:flex;align-items:center;gap:clamp(14px,2.2vw,32px);flex-wrap:wrap}
.te-js .te-header__nav{flex-wrap:nowrap}
.te-header__nav a{
position:relative;font-family:Inter,sans-serif;font-weight:500;font-size:12px;letter-spacing:.16em;text-transform:uppercase;
color:#111;text-decoration:none;padding:6px 0;line-height:1;white-space:nowrap;
}
.te-header__nav a::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--te-neon);transform:scaleX(0);transform-origin:left;transition:transform .24s var(--te-ease)}
.te-header__nav a:hover::after,.te-header__nav a:focus-visible::after,.te-header__nav a[aria-current="true"]::after{transform:scaleX(1)}
.te-header__nav a.is-out::after{transform-origin:right}
.te-header__menu{display:none;width:44px;height:44px;flex-direction:column;align-items:center;justify-content:center;gap:5px;margin-right:-10px}
.te-header__menu span{display:block;width:18px;height:1px;background:#111;transition:transform .2s var(--te-ease)}
.te-header__menu[aria-expanded="true"] span:first-child{transform:translateY(3px) rotate(45deg)}
.te-header__menu[aria-expanded="true"] span:last-child{transform:translateY(-3px) rotate(-45deg)}
@media (min-width:1200px){.te-js .te-header__folio{display:block}}
@media (max-width:1023px){
.te-header__cta{display:none}
.te-js .te-header__nav{display:none}
.te-js .te-header__menu{display:flex}
}
.te-menu{position:fixed;inset:0;z-index:60;background:#fff;color:#111;display:flex;flex-direction:column;opacity:0;transition:opacity .2s;padding-top:var(--te-header-h)}
.te-menu[hidden]{display:none}
.te-menu.is-open{opacity:1}
.te-menu__top{position:absolute;top:0;left:0;right:0;height:var(--te-header-h);border-bottom:1px solid var(--te-rule);display:flex;align-items:center;justify-content:space-between;padding-inline:var(--te-gutter)}
.te-menu__list{flex:1;overflow:auto;padding:16px var(--te-gutter)}
.te-menu__item{border-bottom:1px solid var(--te-rule)}
.te-js .te-menu__item{opacity:0;transform:translateY(12px);transition:opacity .3s var(--te-ease),transform .3s var(--te-ease);transition-delay:calc(var(--i,0) * 40ms)}
.te-menu.is-open .te-menu__item{opacity:1;transform:none}
.te-menu__item a{display:flex;justify-content:space-between;align-items:center;padding:18px 0;font-family:Inter,sans-serif;font-weight:600;font-size:clamp(28px,8vw,36px);line-height:1.3;letter-spacing:-.02em;text-decoration:none;color:#111}
.te-menu__item a span{font-weight:400;font-size:.6em;color:var(--te-mid)}
.te-menu__foot{padding:16px var(--te-gutter) calc(24px + env(safe-area-inset-bottom))}
.te-menu__foot .te-btn{width:100%;height:56px;justify-content:space-between}
body.is-locked{overflow:hidden}

/* 共通の語彙（te-js のみ）：出現／切り欠き／te-wipe（罫線を覆う蓋が右へ縮む）／滑り込み／カウンタ／ランプ */
.te-js .te-rv{opacity:0;transform:translateY(16px);transition:opacity .6s var(--te-ease),transform .6s var(--te-ease);transition-delay:var(--d,0ms)}
.te-js .te-rv.is-in{opacity:1;transform:none}
.te-rv-line{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}
.te-rv-line>span{display:block}
.te-js .te-rv-line>span{transform:translateY(110%);transition:transform .7s var(--te-ease);transition-delay:var(--d,0ms)}
.te-js .is-in>.te-rv-line>span,.te-js .te-rv-line.is-in>span{transform:none}
.te-rv-word{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
.te-rv-word>span{display:inline-block}
.te-js .te-rv-word>span{transform:translateY(110%);transition:transform .7s var(--te-ease);transition-delay:var(--d,0ms)}
.te-js .is-in .te-rv-word>span{transform:none}
.te-wipe{position:relative}
.te-js .te-wipe::after{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:var(--bg);transform-origin:right;transition:transform .6s var(--te-ease) var(--d,0ms);pointer-events:none}
.te-js .te-wipe--b::after{top:auto;bottom:-1px}
.te-js .te-wipe.is-in::after,.te-js .is-in .te-wipe::after,.te-js .te-wipe.is-on::after{transform:scaleX(0)}
.te-slide{display:inline-block}
.te-slide>span{display:inline-block}
.te-js .te-slide>span{transform:translateX(var(--sx,-40px));opacity:0;transition:transform .9s var(--te-pop) var(--d,0ms),opacity .3s linear var(--d,0ms)}
.te-js .is-in .te-slide>span{transform:none;opacity:1}
.te-js .te-slide .te-x{opacity:0;transition:opacity .3s linear calc(var(--d,0ms) + 600ms)}
.te-js .is-in .te-slide .te-x{opacity:1}
.te-odo{display:inline-block;height:1em;line-height:1;overflow:hidden;vertical-align:top}
.te-odo__col{display:block;transition:transform .32s var(--te-ease)}
.te-odo__col>span{display:block;height:1em;line-height:1}
/* 番号カウンタ：最初から最終値を表示（「00」のまま居座らない）。親が is-in になった瞬間に 0 から巻き上げ直す */
.te-js [data-te-odo] .te-odo__col{transform:translateY(calc(var(--n,0) * -1em))}
.te-js .is-in>[data-te-odo] .te-odo__col{animation:te-odo .7s var(--te-ease) calc(var(--d,0ms) + 80ms) both}
@keyframes te-odo{from{transform:translateY(0)}}
.te-lamp{position:absolute;width:7px;height:7px;border:1px solid var(--head);background:var(--bg);transition:background-color .2s}
.te-lamp::after{content:"";position:absolute;inset:-1px;border:1px solid var(--head);opacity:0;pointer-events:none}
.is-on>.te-lamp{background:var(--head)}
.te-js .is-on>.te-lamp::after{animation:te-ring .6s var(--te-ease) 1 both}
@keyframes te-ring{from{transform:scale(1);opacity:1}to{transform:scale(var(--ring,3.2));opacity:0}}
.te-px{will-change:transform}

/* 01 HERO：IO を待たず keyframes で最初の描画から（.te-hi／.te-hi--f）。画像は不透明・静止 */
.te-hero{
min-height:calc(100svh - var(--te-header-h));
display:flex;flex-direction:column;
padding-block:0;
overflow:clip;
}
.te-hero > .te-container{display:flex;flex-direction:column;flex:1;box-sizing:border-box;width:100%;max-width:calc(var(--te-container) + 2 * var(--te-gutter))}
.te-hero .te-rh{border-top:0}
.te-js .te-hero .te-rh__no{color:var(--head)}
.te-hero__grid{margin-top:clamp(32px,5vh,72px);flex:1;align-items:start}
.te-hero__copy{grid-column:1 / 9;grid-row:1;position:relative;z-index:1}
.te-hero__title{margin-top:24px;color:var(--te-ink)}
.te-hero__lead{margin-top:32px;color:var(--te-ink);max-width:26em}
.te-hero__desc{margin-top:24px;color:var(--te-dark);max-width:30em}
.te-hero__cta{margin-top:48px;display:flex;gap:32px;align-items:center;flex-wrap:wrap}
.te-hero__fig{grid-column:6 / 13;grid-row:1;align-self:end;width:100%;position:relative;z-index:0}
.te-hero__caption{position:relative;margin-top:clamp(40px,6vh,64px);border-top:1px solid var(--te-rule);padding-top:16px;display:flex;justify-content:space-between;gap:24px;line-height:1.6;color:var(--te-mid)}
.te-hero__caption i{font-style:normal;color:#111}
.te-hero .te-belt{margin-top:clamp(56px,8vh,96px)}
.te-js .te-hi{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}
.te-js .te-hi>span{display:block;animation:te-rise .72s var(--te-ease) var(--d,0ms) both}
.te-js .te-hi--f{animation:te-fade .6s var(--te-ease) var(--d,0ms) both}
.te-js .te-hero__caption::after{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:var(--bg);transform-origin:right;animation:te-wipe .6s var(--te-ease) .7s both}
.te-js .te-hero__caption i{animation:te-lit .2s linear var(--d,0ms) both}
.te-js .te-hero__cta .te-link span{animation:te-bob 1.6s ease-in-out 1.4s 3}
@keyframes te-rise{from{transform:translateY(110%)}to{transform:none}}
@keyframes te-fade{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes te-wipe{from{transform:scaleX(1)}to{transform:scaleX(0)}}
@keyframes te-lit{from{color:#777}to{color:#111}}
@keyframes te-bob{50%{transform:translateY(4px)}}
@media (min-width:1024px) and (max-height:760px){
.te-hero__grid{margin-top:24px}
.te-hero__lead{margin-top:24px}
.te-hero__cta{margin-top:32px}
}
@media (max-width:1199px){
.te-hero__copy{grid-column:1 / 10}
.te-hero__fig{grid-column:7 / 13}
}
@media (max-width:1023px){
.te-hero{min-height:0}
.te-hero__grid{display:block}
.te-hero__fig{width:min(100%,560px);margin:56px 0 0 auto;padding-inline:8px}
}
@media (max-width:767px){
.te-hero__grid{margin-top:32px}
.te-hero__cta{gap:16px;margin-top:40px}
.te-hero__cta .te-link{margin-top:4px}
.te-hero__fig{width:100%;margin:48px 0 0}
.te-hero__caption{flex-direction:column;gap:8px}
.te-js .te-hi>span,.te-js .te-hi--f{animation-delay:calc(var(--d,0ms) / 2)}
}

/* 光沢の ∞（透過画像。周りに背景・枠を付けない）：perspective → 傾き（JS が --rx/--ry/--fy）→ 浮遊。光の帯は screen 合成。
   光の軌跡（data-fx="trails"）は te-fx.js が 2 枚の canvas に描く：--back は画像の背面（リボンの裏を回る光）、--front は前面。
   canvas は画像と同じ箱に absolute で重ねる（CLS 0）。重なり順：back(-1) → img(0) → light(1) → front(2) */
.te-mark{perspective:1200px}
.te-mark__tilt{transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translate3d(0,var(--fy,0px),0);will-change:transform}
.te-mark__float{position:relative;isolation:isolate}
.te-js .te-mark__float{animation:te-float 7s ease-in-out 3}
.te-mark--final .te-mark__float{animation-duration:8s;--fl:-6px}
.te-mark__img{position:relative;z-index:0;width:100%;height:auto;display:block}
.te-mark__light{display:none;position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:screen;opacity:.75;background:linear-gradient(105deg,transparent 40%,#FFFFFF 50%,transparent 60%) no-repeat;background-size:300% 100%;background-position:100% 0}
.te-js .te-mark__light.is-shine{display:block;animation:te-shine 1.4s ease-in-out 1 both}
@supports not (mix-blend-mode:screen){.te-mark__light{display:none!important}}
.te-mark__fx{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}
.te-mark__fx--back{z-index:-1}
.te-mark__fx--front{z-index:2}

/* 粒の幾何学（data-fx="geo"／"geo3"）：te-fx.js が中に canvas を 1 枚足す。箱の寸法は CSS で固定（正方形。CLS 0）。
   data-geo-tone="light"＝黒地（白・グレーの粒）、"dark"＝白地（黒・グレーの粒。03 のダルマだけ赤） */
.te-geo{position:relative;flex:0 0 auto;width:var(--geo,clamp(260px,32vw,460px));aspect-ratio:1 / 1;pointer-events:none}
.te-geo>canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.te-geo__cap{font-family:Inter,sans-serif;font-weight:500;font-size:11px;line-height:1.6;letter-spacing:.16em;text-transform:uppercase;color:var(--te-dark);white-space:pre-line;min-width:15em;min-height:3.2em}
@keyframes te-float{50%{transform:translateY(var(--fl,-8px)) rotate(.4deg)}}
@keyframes te-shine{from{background-position:100% 0}to{background-position:0% 0}}

/* 章間の帯（BELT）：40px 固定。JS がスクロールに連動して流し、読取ヘッド下の語が点灯 */
.te-belt{position:relative;margin-top:var(--te-sp);height:40px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);overflow:clip;font-family:Inter,sans-serif;font-weight:500;font-size:11px;letter-spacing:.14em;text-transform:uppercase;line-height:1;color:var(--meta);user-select:none}
.te-belt::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--rule)}
.te-belt__track{position:absolute;left:0;top:0;height:100%;display:flex;align-items:center;white-space:nowrap;will-change:transform}
.te-belt__run{display:inline-flex;align-items:center}
.te-belt b{font-weight:500;background:var(--bg);padding:4px 12px;transition:color .2s linear}
.te-belt i{font-style:normal;color:var(--head);background:var(--bg);padding:4px 2px}
.te-belt b.is-lit{color:var(--head)}
.te-belt__head{position:absolute;left:50%;top:0;width:5px;height:5px;margin-left:-2px;background:var(--head)}
/* 黒い章の帯：未点灯 #777、読取ヘッド下の語が蛍光に点灯 */
.te-sec--cast .te-belt{color:var(--te-mid)}
.te-sec--cast .te-belt i{color:var(--te-light)}
.te-sec--cast .te-belt b.is-lit{color:var(--te-neon);text-shadow:0 0 12px var(--te-glow)}
.te-sec--cast .te-belt__head{background:var(--te-neon);box-shadow:0 0 8px var(--te-glow)}
@media (max-width:767px){.te-belt{font-size:10px}}

/* 02 MISSION：柱の罫線を蛍光の光が 1 回走る。引用は蛍光の罫線が伸びて上がる。左下の空きに粒の幾何学（.te-geo） */
.te-mission{min-height:100svh;padding-block:var(--te-sp);display:grid;align-content:center}
.te-mission .te-rh::before{content:"";position:absolute;left:0;top:-1px;width:120px;height:1px;background:var(--te-neon);box-shadow:0 0 12px var(--te-glow);transform:translateX(-120px);opacity:0;pointer-events:none}
.te-js .te-mission .te-rh.is-in::before{animation:te-sweep 1.2s ease-out .5s 1 both}
@keyframes te-sweep{from{transform:translateX(-120px);opacity:1}90%{opacity:1}to{transform:translateX(1400px);opacity:0}}
.te-mission__title{grid-column:1 / 11;grid-row:1}
.te-mission__body{grid-column:6 / 12;grid-row:2;margin-top:56px}
.te-mission__geo{grid-column:1 / 6;grid-row:2;align-self:end;margin-top:56px}
.te-mission__body p{font-size:18px;line-height:2;color:var(--te-light);word-break:keep-all;overflow-wrap:anywhere;text-wrap:balance}
.te-mission__body p + p{margin-top:24px}
.te-mission__body p.te-mission__quote{word-break:normal;font-weight:500;font-size:clamp(20px,2vw,26px);line-height:1.6;color:#fff;border-top:1px solid var(--te-neon);padding-top:24px;margin-top:40px}
@media (max-width:1199px){.te-mission__geo{--geo:clamp(220px,30vw,340px)}}
@media (max-width:1023px){
.te-mission__body{grid-column:5 / 13}
.te-mission__geo{grid-column:1 / 5;--geo:100%}
}
@media (max-width:767px){
.te-mission{min-height:0;display:block}
.te-mission__title,.te-mission__body{grid-column:1 / -1}
.te-mission__body{margin-top:40px;max-width:34em}
.te-mission__body p{font-size:16px;line-height:1.9}
.te-mission__body,.te-mission__geo{grid-row:auto}
.te-mission__geo{--geo:200px;margin-top:40px}
}

/* 03 WHY NOW：罫線 → 一の位のカウンタ → 本文が左から（文の下を蛍光の帯が走って止まる）→ KEY が右から（左に蛍光の四角）。
   見ている行（画面中央の is-now／hover／focus-within）は区切り線が蛍光になる。番号・文字は黒のまま */
.te-why{padding-block:var(--te-sp)}
.te-why__title{grid-column:1 / 9}
.te-ledger{margin-top:clamp(48px,6vw,96px)}
.te-ledger__row{border-top:1px solid var(--rule);padding-block:clamp(28px,3.2vw,48px)}
.te-ledger__row:last-child{border-bottom:1px solid var(--rule)}
.te-ledger__row::before{content:"";position:absolute;left:0;right:0;top:-2px;height:3px;background:var(--te-neon);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--te-ease);pointer-events:none}
.te-ledger__row.is-now::before,.te-ledger__row:hover::before,.te-ledger__row:focus-within::before{transform:scaleX(1)}
.te-ledger__no{grid-column:1 / 4;color:var(--head)}
.te-ledger__num{display:inline-block;transform-origin:left center;transition:transform .32s var(--te-ease)}
.te-ledger__row.is-now .te-ledger__num{transform:scale(1.03)}
@media (hover:hover){.te-ledger__row:hover .te-ledger__num{transform:translateX(6px)}}
.te-ledger__text{grid-column:4 / 11;align-self:start;padding-top:.08em;color:var(--te-ink);max-width:none;text-wrap:balance}
.te-ledger__key{grid-column:11 / 13;text-align:right;color:var(--te-ink);align-self:start;padding-top:.6em}
.te-ledger__key::before{content:"";display:inline-block;width:7px;height:7px;margin-right:10px;background:var(--te-neon);vertical-align:.02em}
.te-js .te-ledger__text{transform:translateX(-24px);opacity:0;transition:transform .7s var(--te-ease) var(--d,0ms),opacity .5s linear var(--d,0ms)}
.te-js .te-ledger__key{transform:translateX(16px);opacity:0;transition:transform .7s var(--te-ease) calc(var(--d,0ms) + 200ms),opacity .5s linear calc(var(--d,0ms) + 200ms)}
.te-js .te-ledger__row.is-in .te-ledger__text,.te-js .te-ledger__row.is-in .te-ledger__key{transform:none;opacity:1}
@media (max-width:1023px){
.te-ledger__no{grid-column:1 / 3}
.te-ledger__text{grid-column:3 / 11}
}
@media (max-width:767px){
.te-ledger__row{display:block;padding-block:28px}
.te-ledger__no{font-size:clamp(56px,16vw,72px)}
.te-ledger__text{margin-top:12px;padding-top:0}
.te-ledger__key{text-align:left;margin-top:12px;font-size:11px;color:var(--te-dark);padding-top:0}
}

/* 04 APPROACH：進行線 --te-p（蛍光）の先端にキャリッジ。節点に届くとランプ、進行中の節点（is-now）は蛍光に光り、名前が拡大＋蛍光の下線。縦線なし */
.te-approach{padding-block:var(--te-sp)}
.te-approach__title{grid-column:1 / 9}
.te-approach__sub{grid-column:1 / 9;margin-top:16px;color:var(--fg)}
.te-timeline{position:relative;margin-top:72px;padding-top:64px}
.te-timeline__base,.te-timeline__fill{position:absolute;left:0;right:0;top:96px;height:1px;background:var(--rule)}
.te-timeline__fill{top:95px;height:3px;background:var(--te-neon);transform:scaleX(var(--te-p,0));transform-origin:left;transition:transform .16s linear}
.te-timeline__car{position:absolute;left:0;top:92px;width:9px;height:9px;background:var(--te-neon);border:1px solid var(--head);transform:translate3d(calc(var(--te-p,0) * var(--tw,0px) - 50%),0,0);transition:transform .16s linear}
.te-timeline__steps{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:24px}
.te-step{position:relative;padding-top:56px}
.te-step__no{position:absolute;top:0;left:0;color:var(--head)}
.te-js .te-step__no{color:var(--meta);transition:color .2s linear}
.te-js .te-step.is-on .te-step__no{color:var(--head)}
.te-step__node{left:0;top:29px;transition:background-color .2s,box-shadow .3s}
.te-step.is-now>.te-step__node{background:var(--te-neon);box-shadow:0 0 0 4px rgba(25,240,255,.28)}
.te-step:last-child .te-step__node{--ring:4}
.te-step__name{color:var(--head);display:inline-block;transform-origin:left center;transition:transform .32s var(--te-pop)}
.te-step__name::after{content:"";display:block;height:3px;margin-top:3px;background:var(--head);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--te-ease),background-color .2s}
.te-step:not(.is-now) .te-step__name::after{height:1px;margin-bottom:2px}
.te-step.is-on .te-step__name::after{transform:scaleX(1)}
.te-step.is-now .te-step__name{transform:scale(1.06)}
.te-step.is-now .te-step__name::after{background:var(--te-neon)}
.te-step__text{margin-top:12px;font-size:15px;line-height:1.7;color:var(--te-dark);word-break:keep-all;overflow-wrap:anywhere;text-wrap:balance;transition:opacity .4s linear}
.te-js .te-step:not(.is-on) .te-step__text{opacity:.6}
@media (max-width:1359px){.te-step__text{font-size:14px}}
@media (max-width:1199px){.te-step__text{word-break:normal}}
@media (max-width:1023px){
.te-timeline__steps{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:48px}
.te-timeline{padding-top:0}
.te-timeline__base,.te-timeline__fill,.te-timeline__car{display:none}
.te-step{padding-top:40px;border-top:1px solid var(--rule)}
.te-step__no{top:12px}
.te-step__node{top:-4px;left:0}
}
@media (max-width:767px){
.te-timeline{margin-top:48px}
.te-timeline__steps{display:block}
.te-step + .te-step{margin-top:32px}
.te-step__text{max-width:none}
}

/* 05 SERVICES：罫線 → カウンタ → ラベル → 名前 → 価格の打刻。左列 sticky（≥1024・高さ≥820）＋読了ゲージ */
.te-services{padding-block:var(--te-sp)}
.te-services__head{position:relative}
.te-services__sub{margin-top:24px;color:var(--meta)}
/* 見出しの右の空き：3 つのサービス＝3 つの形（geo3）。右に箱、左下に番号と英語名のラベル。absolute なので本文を押さない */
.te-services__fx{position:absolute;right:0;top:0;display:flex;flex-direction:row-reverse;align-items:flex-end;gap:24px}
.te-services__fx .te-geo__cap{text-align:right}
@media (max-width:1023px){.te-services__fx .te-geo{--geo:clamp(240px,34vw,340px)}.te-services__fx .te-geo__cap{min-width:0}}
@media (max-width:767px){
.te-services__fx{position:static;flex-direction:row;margin-top:32px;gap:16px}
.te-services__fx .te-geo{--geo:200px}
.te-services__fx .te-geo__cap{text-align:left}
}
.te-spreads{margin-top:clamp(64px,8vw,120px)}
.te-spread{border-top:1px solid var(--rule);padding-block:clamp(80px,9vw,128px);min-height:70vh;align-items:start}
.te-spread__side{grid-column:1 / 5;position:sticky;top:96px;align-self:start}
.te-spread__body{grid-column:6 / 13}
.te-spread__no{color:var(--head);display:flex;align-items:center;gap:clamp(14px,1.6vw,24px)}
.te-gauge{display:none;position:relative;height:1px;margin-top:16px;background:var(--rule)}
.te-gauge i{position:absolute;inset:-1px 0;background:var(--te-neon);transform:scaleX(var(--g,0));transform-origin:left}
@media (min-width:1024px) and (min-height:820px){.te-js .te-gauge{display:block}}
.te-spread__en{margin-top:24px;color:var(--head)}
.te-spread__name{margin-top:8px;font-weight:700;font-size:clamp(20px,2vw,28px);line-height:1.3}
.te-spread__name b{font-family:Inter,sans-serif;font-weight:700;letter-spacing:.04em}
.te-spread__side .te-figure{margin-top:32px}
/* DARUMA（サービス 03）：赤はここ（.te-daruma*）だけ。印は静止の両目入り＝勝ちダルマ。注記の頭に朱の角印 */
.te-daruma-mark{flex:0 0 auto;width:auto;height:max(44px,.6em);overflow:visible}
.te-daruma-mark__body{fill:var(--te-daruma)}
.te-daruma-mark__face,.te-daruma-mark__eye{fill:#fff}
.te-daruma-mark__eye{stroke:#111;stroke-width:1.2}
.te-daruma-mark__pupil{fill:#111}
.te-daruma-mark__ink{fill:none;stroke:#111;stroke-width:1.8;stroke-linecap:round}
.te-daruma-mark__belly{fill:none;stroke:#fff;stroke-width:1.4;stroke-linecap:round}
.te-daruma-note,.te-svc-note{position:relative;margin-top:12px;padding-left:18px;font-size:12.5px;line-height:1.7;letter-spacing:.02em;color:var(--te-dark)}
.te-svc-note::before{content:"";position:absolute;left:0;top:.42em;width:9px;height:9px;background:var(--te-ink)}
.te-js .te-svc-note{opacity:0;transition:opacity .5s linear .55s}
.te-js .te-spread.is-in .te-svc-note,.te-st .te-svc-note{opacity:1}
.te-daruma-note::before{content:"";position:absolute;left:0;top:.42em;width:9px;height:9px;background:var(--te-daruma)}
.te-js .te-daruma-mark{opacity:0;transform:translateY(10px) scale(.8) rotate(-14deg);transform-origin:50% 90%;transition:opacity .3s linear .5s,transform .9s var(--te-pop) .5s}
.te-js .te-spread.is-in .te-daruma-mark{opacity:1;transform:none}
.te-js .te-daruma-note{opacity:0;transition:opacity .5s linear .55s}
.te-js .te-spread.is-in .te-daruma-note{opacity:1}
@media (hover:hover){.te-spread:hover .te-daruma-mark{animation:te-daruma-rock 1.2s var(--te-ease) 1}}
@keyframes te-daruma-rock{20%{transform:rotate(-12deg)}45%{transform:rotate(9deg)}70%{transform:rotate(-5deg)}88%{transform:rotate(2deg)}}
.te-js .te-spread__en,.te-js .te-spread__name{opacity:0;transform:translateY(12px);transition:opacity .5s linear,transform .6s var(--te-ease)}
.te-js .te-spread__en{transition-delay:.3s}
.te-js .te-spread__name{transition-delay:.42s}
.te-js .te-spread__side .te-figure{opacity:0;transform:scale(.96);transform-origin:left center;transition:opacity .26s linear .6s,transform .26s var(--te-pop) .6s}
.te-js .te-spread.is-in .te-spread__en,.te-js .te-spread.is-in .te-spread__name,.te-js .te-spread.is-in .te-spread__side .te-figure{opacity:1;transform:none}
.te-spread__copy{color:var(--head)}
.te-spread__desc{margin-top:24px;max-width:32em}
.te-spread__target{margin-top:24px;display:flex;gap:16px;align-items:baseline;flex-wrap:wrap;color:var(--te-dark)}
.te-spread__target .te-label{color:var(--fg)}
.te-spread__target>span:last-child{word-break:keep-all;overflow-wrap:anywhere;text-wrap:balance}
.te-spread__desc + .te-spread__target{margin-top:16px}
.te-spread__target + .te-spread__desc{margin-top:16px}
.te-spread__items{margin-top:40px}
.te-spread__items .te-label{color:var(--head);padding-bottom:8px;border-bottom:1px solid var(--rule)}
.te-spread__cta{margin-top:48px}
@media (max-width:1023px),(max-height:819px){.te-spread__side{position:static}}
@media (max-width:1023px){
.te-spread__side{grid-column:1 / 5}
.te-spread__body{grid-column:5 / 13}
}
@media (max-width:767px){
.te-spread{display:block;min-height:0;padding-block:64px}
.te-spread__body{margin-top:40px}
}

/* 06 TRACK RECORD（白地）：巨大な数字 5 つ。罫線が伸び、蛍光の四角が点灯、数字が 0 から数え上がり、数字の足もとを蛍光の帯が走って止まる。
   数字は依頼者提供の実績（HTML に最終値。JS 無効でも読める）。上段 2 つ（--xl）は特大 */
.te-track{padding-block:var(--te-sp)}
.te-track__title{grid-column:1 / 9}
.te-track__sub{grid-column:10 / 13;align-self:end;text-align:right;color:var(--te-ink);padding-bottom:.9em}
.te-track__sub::before{content:"";display:inline-block;width:7px;height:7px;margin-right:10px;background:var(--te-neon)}
.te-tr{margin-top:clamp(56px,7vw,104px);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--te-col-gap)}
.te-tr__item{grid-column:span 4;position:relative;border-top:1px solid var(--te-ink);padding-block:20px clamp(48px,6vw,88px)}
.te-tr__item--xl{grid-column:span 6}
.te-tr__item::before{content:"";position:absolute;left:0;top:-2px;width:100%;height:3px;background:var(--te-neon);transform:scaleX(.14);transform-origin:left}
.te-js .te-tr__item:not(.is-in)::before{transform:scaleX(0)}
.te-js .te-tr__item.is-in::before{animation:te-tr-run 1.2s var(--te-ease) calc(var(--d,0ms) + 200ms) both}
@keyframes te-tr-run{from{transform:scaleX(0)}55%{transform:scaleX(1)}to{transform:scaleX(.14)}}
.te-tr__en{display:flex;align-items:center;gap:10px;color:var(--te-ink)}
.te-tr__en::before{content:"";flex:0 0 auto;width:7px;height:7px;background:var(--te-neon)}
.te-tr__num{margin-top:clamp(16px,2vw,28px);font-family:Inter,sans-serif;font-weight:300;font-size:clamp(72px,10.5vw,168px);line-height:.92;letter-spacing:-.045em;color:var(--te-ink);white-space:nowrap}
.te-tr__item--xl .te-tr__num{font-size:clamp(104px,17.5vw,272px);letter-spacing:-.055em}
.te-tr__fig{display:inline-block;padding-right:.06em;background:var(--te-hl) no-repeat 0 86%;background-size:100% .13em;transform-origin:left bottom}
.te-js .te-tr__fig{background-size:0% .13em;transition:background-size 1s var(--te-ease) calc(var(--d,0ms) + 500ms)}
.te-js .te-tr__item.is-in .te-tr__fig{background-size:100% .13em}
.te-js .te-tr__item.is-count .te-tr__fig{animation:te-tr-pop .5s var(--te-pop) 1.35s 1}
@keyframes te-tr-pop{40%{transform:scale(1.045)}}
.te-tr__sfx{font-size:.42em;font-weight:400;letter-spacing:0;margin-left:.08em}
.te-tr__dash{font-weight:300;margin-inline:.02em}
.te-tr__unit{display:inline-block;margin-left:.8em;font-family:var(--te-font);font-weight:700;font-size:clamp(15px,1.5vw,22px);line-height:1.4;letter-spacing:0;color:var(--te-ink);white-space:nowrap}
.te-tr__cap{margin-top:clamp(14px,1.6vw,22px);font-size:15px;line-height:1.7;color:var(--te-dark);max-width:24em;word-break:keep-all;overflow-wrap:anywhere;text-wrap:balance}
.te-track__body{grid-column:1 / 8;border-top:1px solid var(--rule);padding-top:32px;word-break:normal;line-break:strict;text-wrap:pretty}
.te-track__note{grid-column:9 / 13;border-top:1px solid var(--rule);padding-top:32px;font-size:12.5px;line-height:1.8;color:var(--te-dark)}
@media (max-width:1023px){
.te-track__sub{grid-column:9 / 13}
.te-tr__unit{display:block;margin:10px 0 0}
.te-tr__item:not(.te-tr__item--xl) .te-tr__en{align-items:flex-start;min-height:33px}
.te-tr__item:not(.te-tr__item--xl) .te-tr__en::before{margin-top:5px}
}
@media (max-width:767px){
.te-track__title,.te-track__sub,.te-track__body,.te-track__note{grid-column:1 / -1}
.te-track__sub{text-align:left;margin-top:16px;padding-bottom:0}
.te-tr{grid-template-columns:repeat(2,minmax(0,1fr))}
.te-tr__item,.te-tr__item--xl{grid-column:span 1;padding-block:16px 40px}
.te-tr__item:last-child{grid-column:1 / -1}
.te-tr__item--xl .te-tr__num{font-size:clamp(88px,27vw,128px)}
.te-tr__num{font-size:clamp(64px,19vw,96px)}
.te-tr__cap{font-size:14px}
.te-track__note{border-top:0;padding-top:16px}
}

/* 07 VALUE：巨大文字が左右交互に滑り込む。項目は罫線・番号・名前が順に。見出しの右上の空きに粒の幾何学（≥768） */
.te-value{padding-block:var(--te-sp)}
.te-value__head{position:relative}
.te-value__geo{position:absolute;right:0;top:0;--geo:clamp(200px,22vw,320px)}
.te-value__title{color:#fff;overflow-x:clip}
.te-value__title .te-x{color:var(--te-mid)}
.te-value__grid{margin-top:clamp(64px,8vw,112px);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:40px;border-top:1px solid var(--te-dark);padding-top:40px}
.te-value__item{position:relative}
.te-js .te-value__item.te-rv{transition-timing-function:linear,var(--te-pop)}
.te-value__item + .te-value__item::before{content:"";position:absolute;left:-20px;top:0;bottom:0;width:1px;background:var(--te-dark);transform:scaleY(0);transform-origin:top;transition:transform .6s var(--te-ease);transition-delay:calc(var(--d,0ms) + 200ms)}
.te-js .te-value__grid.is-in .te-value__item::before,html:not(.te-js) .te-value__item::before{transform:scaleY(1)}
.te-value__no{color:var(--fg);display:inline-block;transition:color .2s linear,transform .24s var(--te-ease)}
.te-js .te-value__item:not(.is-in) .te-value__no{color:var(--te-mid)}
.te-value__name{margin-top:16px;color:#fff;transition:color .2s}
.te-value__text{margin-top:12px;font-size:16px;line-height:1.8;color:var(--te-light);text-wrap:balance;transition:color .2s}
@media (hover:hover){
.te-value__item:hover .te-value__no{transform:translateX(4px)}
.te-value__item:hover .te-value__text{color:#fff}
}
@media (max-width:1023px){
.te-value__grid{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:48px}
.te-value__item:nth-child(3)::before{display:none}
}
@media (max-width:767px){
.te-js .te-slide>span{transform:translateX(calc(var(--sx,-40px) / 2))}
.te-value__geo{display:none}
}
@media (max-width:479px){
.te-value__grid{grid-template-columns:1fr;gap:0;border-top:0;padding-top:0}
.te-value__item{border-top:1px solid var(--te-dark);padding-block:28px}
.te-value__item::before{display:none}
}

/* 08 MEDIA × BUSINESS（X TIMES → tasuki-ecox）。箱は .te-bridge-wrap、線の束は svg.te-bridge（data-fx="bridge"、te-fx.js が描く。≥1024 だけ）。
   ≥1024：3 列（左の 5 項目｜矢印｜右の 4 項目）。行は subgrid で揃え、矢印とラベルは一覧の中央の高さ。
   既定のシーケンス（CSS の transition-delay）：左の項目が点灯 → 幹の線 → パケット 3 往路 → 矢頭 → 右の項目 → 下向きの線と光 → NEW BUSINESS。
   te-fx.js が .te-bridge-wrap に is-fx を付けると、右の項目（li.is-lit）・下向き（.te-bridge__down.is-lit）は JS の合図で点く。
   <1024：縦積み。束の SVG は出さず、縦の矢印だけ */
.te-media{padding-block:var(--te-sp)}
.te-media__title{grid-column:1 / 9}
.te-bridge-wrap{position:relative;margin-top:clamp(48px,6vw,96px);display:grid;grid-template-columns:4fr 3fr 4fr;grid-template-rows:auto auto auto;column-gap:24px;align-items:start}
.te-bridge{display:none;position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.te-bridge path,.te-bridge line,.te-bridge polyline{fill:none;vector-effect:non-scaling-stroke}
.te-bridge__wire{stroke:var(--te-ink);stroke-width:1}
.te-bridge__pulse{stroke:var(--te-neon);stroke-width:3;stroke-linecap:round}
.te-bridge__media,.te-bridge__biz{grid-row:1 / span 3;display:grid;grid-template-rows:subgrid;align-items:start}
.te-js .te-bridge__media.te-rv,.te-js .te-bridge__biz.te-rv{transform:none}
.te-bridge__media{grid-column:1}
.te-bridge__biz{grid-column:3}
.te-bridge__name{font-family:Inter,sans-serif;font-weight:700;font-size:clamp(28px,3vw,40px);line-height:1.1;letter-spacing:-.02em;color:var(--te-ink)}
.te-bridge__biz .te-bridge__name{font-weight:500}
.te-bridge__role{margin-top:12px;color:var(--te-dark)}
.te-bridge-wrap .te-list{margin-top:24px}
.te-bridge-wrap .te-list li{position:relative;padding-left:16px;transition:color .25s linear}
.te-bridge-wrap .te-list li::before{content:"";position:absolute;left:0;top:50%;width:5px;height:5px;margin-top:-2px;background:var(--head);transition:opacity .25s linear,background-color .25s linear}
.te-js .te-bridge-wrap .te-list li{color:var(--meta)}
.te-js .te-bridge-wrap .te-list li::before{opacity:0}
.te-js .te-bridge__media .te-list li{transition-delay:calc(200ms + var(--i,0) * 90ms)}
.te-js .te-bridge__media .te-list li::before{transition-delay:calc(200ms + var(--i,0) * 90ms)}
.te-js .te-bridge__biz .te-list li{transition-delay:calc(1800ms + var(--i,0) * 90ms)}
.te-js .te-bridge__biz .te-list li::before{transition-delay:calc(1800ms + var(--i,0) * 90ms)}
.te-js .te-bridge-wrap.is-in .te-list li{color:var(--te-ink)}
.te-js .te-bridge-wrap.is-in .te-list li::before{opacity:1}
.te-bridge-wrap.is-in .te-bridge__biz .te-list li::before,html:not(.te-js) .te-bridge__biz .te-list li::before{background:var(--te-neon);outline:1px solid var(--te-ink)}
.te-bridge__arrow{position:relative;grid-column:2;grid-row:2;align-self:center;height:72px;margin-top:24px}
.te-bridge__arrow .te-label{position:absolute;left:0;right:0;top:0;text-align:center;color:var(--te-dark);white-space:nowrap}
.te-bridge__arrow .te-label i{font-style:normal;transition:color .2s linear 1.7s}
.te-js .te-bridge-wrap.is-in .te-label i{color:var(--head)}
.te-bridge__line{position:absolute;left:26%;right:calc(26% + 6px);top:50%;height:3px;margin-top:-1px;background:var(--te-ink);transform:scaleX(0);transform-origin:left;transition:transform .8s var(--te-ease) .7s}
.te-bridge__head{position:absolute;right:26%;top:50%;width:9px;height:9px;border-top:3px solid var(--te-ink);border-right:3px solid var(--te-ink);transform:translate(0,-50%) rotate(45deg);opacity:0;transition:opacity .3s linear 1.5s}
.te-bridge__dot{position:absolute;left:26%;top:50%;width:14px;height:3px;margin-top:-1px;background:var(--te-neon);opacity:0}
.is-in .te-bridge__line,html:not(.te-js) .te-bridge__line{transform:scaleX(1)}
.is-in .te-bridge__head,html:not(.te-js) .te-bridge__head{opacity:1}
.te-js .is-in .te-bridge__dot{opacity:1;animation:te-flow 1.6s linear .9s 3 both}
.te-bridge-wrap.is-paused .te-bridge__dot,.te-bridge-wrap.is-paused .te-bridge__drop{animation-play-state:paused}
@keyframes te-flow{from{transform:translateX(0);opacity:1}90%{opacity:1}to{transform:translateX(var(--bw,200px));opacity:0}}
.te-bridge__down{position:relative;margin-top:32px;padding-top:64px}
.te-bridge__down::before{content:"";position:absolute;left:0;top:0;width:1px;height:48px;background:var(--head);transform:scaleY(0);transform-origin:top;transition:transform .6s var(--te-ease) 2.3s}
.te-bridge__down::after{content:"↓";position:absolute;left:-6px;top:40px;font-family:Inter,sans-serif;font-size:14px;line-height:1;color:var(--head)}
.is-in .te-bridge__down::before,html:not(.te-js) .te-bridge__down::before{transform:scaleY(1)}
.te-bridge__drop{position:absolute;left:-1px;top:0;width:3px;height:14px;background:var(--te-neon);opacity:0;pointer-events:none}
.te-js .te-bridge-wrap.is-in .te-bridge__drop{animation:te-drop .7s linear 2.5s 3 both}
@keyframes te-drop{from{transform:translateY(0);opacity:1}85%{opacity:1}to{transform:translateY(40px);opacity:0}}
.te-bridge__new{display:inline-block;font-family:Inter,sans-serif;font-weight:600;font-size:clamp(22px,2.4vw,32px);line-height:1.2;letter-spacing:-.01em;color:var(--te-ink);transform-origin:left center;background:var(--te-hl) no-repeat 0 92%;background-size:100% .34em}
.te-js .te-bridge__new{opacity:0;transform:scale(.9);background-size:0% .34em;transition:opacity .3s linear 2.7s,transform .3s var(--te-pop) 2.7s,background-size .8s var(--te-ease) 3s}
.te-js .te-bridge-wrap.is-in .te-bridge__new{opacity:1;transform:none;background-size:100% .34em}
/* te-fx.js が主導するとき（is-fx）：右の一覧・下向き・NEW BUSINESS は JS の合図（is-lit）まで待つ。CSS のパケットは止める */
.te-js .te-bridge-wrap.is-fx .te-bridge__dot{display:none}
.te-js .te-bridge-wrap.is-fx .te-bridge__biz .te-list li,.te-js .te-bridge-wrap.is-fx .te-bridge__biz .te-list li::before{transition-delay:0ms}
.te-js .te-bridge-wrap.is-fx .te-bridge__biz .te-list li:not(.is-lit){color:var(--meta)}
.te-js .te-bridge-wrap.is-fx .te-bridge__biz .te-list li:not(.is-lit)::before{opacity:0}
.te-js .te-bridge-wrap.is-fx .te-bridge__down:not(.is-lit)::before{transform:scaleY(0);transition-delay:0ms}
.te-js .te-bridge-wrap.is-fx .te-bridge__down.is-lit::before{transform:scaleY(1);transition-delay:0ms}
.te-js .te-bridge-wrap.is-fx .te-bridge__drop{animation:none}
.te-js .te-bridge-wrap.is-fx .te-bridge__down.is-lit .te-bridge__drop{animation:te-drop .7s linear .2s 2 both}
.te-js .te-bridge-wrap.is-fx .te-bridge__down:not(.is-lit) .te-bridge__new{opacity:0;transform:scale(.9);background-size:0% .34em;transition-delay:0ms}
.te-js .te-bridge-wrap.is-fx .te-bridge__down.is-lit .te-bridge__new{opacity:1;transform:none;background-size:100% .34em;transition-delay:.7s,.7s,1s}
.te-media__desc{grid-column:1 / 8;margin-top:56px}
.te-media__link{grid-column:1 / 8;margin-top:24px;display:flex;gap:24px;align-items:baseline;flex-wrap:wrap}
.te-media__note{font-size:12px;color:var(--te-dark)}
@media (min-width:1024px){.te-js .te-bridge{display:block}}
@media (max-width:1023px){
.te-bridge-wrap{display:block}
.te-bridge__media,.te-bridge__biz{display:block}
.te-bridge__arrow{height:auto;margin:40px 0;padding-left:0}
.te-bridge__arrow .te-label{position:static;display:block;text-align:left}
.te-bridge__line{position:static;display:block;width:1px;height:48px;margin-top:12px;transform:scaleY(0);transform-origin:top}
.is-in .te-bridge__line,html:not(.te-js) .te-bridge__line{transform:scaleY(1)}
.te-bridge__head{display:none}
.te-bridge__dot{left:-1px;top:30px;width:3px;height:14px;margin:0}
.te-js .is-in .te-bridge__dot{animation-name:te-drop}
.te-bridge__arrow::after{content:"↓";display:block;margin-left:-6px;margin-top:4px;font-family:Inter,sans-serif;font-size:14px;line-height:1;color:var(--head)}
}
@media (max-width:767px){
.te-media__desc,.te-media__link{grid-column:1 / -1}
}

/* 09 VISION：梯子の信号は CSS。CONCEPT UI は JS が is-s1〜s6・is-done を順に付ける。CONCEPT UI／NOT A LIVE SERVICE／架空の表示例は常時表示。
   蛍光：PHASE 01（NOW）の節点、接続線（破線）、98%、一致の枠。説明の右の空きに粒の幾何学（≥768） */
.te-vision{padding-block:var(--te-sp)}
.te-vision__title{font-family:Inter,sans-serif;font-weight:500;font-size:clamp(32px,5vw,72px);line-height:1.1;letter-spacing:-.02em;color:#fff}
.te-js .te-vision__title .te-dim{opacity:0;transition:opacity .2s linear .9s}
.te-js .te-vision__title.is-in .te-dim{opacity:1}
.te-vision__grid{margin-top:clamp(48px,6vw,96px);align-items:start}
.te-ladder{grid-column:1 / 6}
.te-ladder__phase{position:relative;border-top:1px solid var(--te-dark);padding:24px 0 24px 28px}
.te-ladder__phase:last-child{border-bottom:1px solid var(--te-dark)}
.te-ladder__node{position:absolute;left:0;top:32px;width:8px;height:8px;border:1px dashed var(--te-mid)}
.te-ladder__phase--now .te-ladder__node{background:var(--te-neon);border:1px solid var(--te-neon);box-shadow:0 0 12px var(--te-glow)}
.te-ladder__node::after{content:"";position:absolute;inset:-1px;border:1px solid var(--te-neon);opacity:0}
.te-js .te-ladder.is-in .te-ladder__phase:nth-child(2) .te-ladder__node::after{animation:te-flash .24s linear .9s 1}
.te-js .te-ladder.is-in .te-ladder__phase:nth-child(3) .te-ladder__node::after{animation:te-flash .24s linear 1.3s 1}
.te-js .te-ladder.is-in .te-ladder__phase:nth-child(4) .te-ladder__node::after{animation:te-flash .24s linear 1.7s 1}
@keyframes te-flash{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
.te-ladder__no{color:var(--fg);display:flex;gap:12px;align-items:center}
.te-ladder__name{margin-top:8px;color:var(--te-light)}
.te-ladder__phase--now .te-ladder__name{color:#fff}
.te-ladder__phase+.te-ladder__phase{margin-top:22px}
.te-ladder__phase+.te-ladder__phase::before{content:"↓";position:absolute;left:28px;top:-19px;font-family:Inter,sans-serif;font-weight:300;font-size:14px;color:var(--te-mid);line-height:1;transition:color .16s linear}
.te-js .te-ladder.is-in .te-ladder__phase:nth-child(2)::before{color:var(--te-light);transition-delay:.7s}
.te-js .te-ladder.is-in .te-ladder__phase:nth-child(3)::before{color:var(--te-light);transition-delay:1.1s}
.te-js .te-ladder.is-in .te-ladder__phase:nth-child(4)::before{color:var(--te-light);transition-delay:1.5s}
.te-ladder .te-tag{color:var(--te-light)}
.te-ladder__phase--now .te-tag{color:var(--te-neon);border-color:var(--te-neon)}
.te-concept{grid-column:7 / 13;position:relative;padding:48px 32px 32px}
.te-concept::before,.te-concept::after,.te-concept__c::before,.te-concept__c::after{content:"";position:absolute;width:8px;height:8px;border:0 solid var(--te-mid);transition:transform .2s var(--te-ease)}
.te-concept::before{left:0;top:0;border-top-width:1px;border-left-width:1px;transform-origin:left top}
.te-concept::after{right:0;top:0;border-top-width:1px;border-right-width:1px;transform-origin:right top}
.te-concept__c::before{left:0;bottom:0;border-bottom-width:1px;border-left-width:1px;transform-origin:left bottom}
.te-concept__c::after{right:0;bottom:0;border-bottom-width:1px;border-right-width:1px;transform-origin:right bottom}
.te-js .te-concept:not(.is-s1)::before,.te-js .te-concept:not(.is-s1)::after,.te-js .te-concept:not(.is-s1) .te-concept__c::before,.te-js .te-concept:not(.is-s1) .te-concept__c::after{transform:scale(0)}
.te-concept__c{position:absolute;inset:0;pointer-events:none}
.te-concept__head{position:absolute;left:32px;right:32px;top:16px;display:flex;justify-content:space-between;align-items:center;gap:16px}
.te-concept__stamp{display:inline-block;color:var(--te-light);border:1px solid var(--te-mid);padding:3px 8px;border-radius:2px}
.te-concept__live{color:var(--te-light);text-align:right}
.te-concept__row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;border-top:1px solid var(--te-dark);border-bottom:1px solid var(--te-dark);padding:16px 0;margin-top:24px}
.te-concept__k{color:var(--te-light);transition:opacity .3s linear}
.te-concept__v{margin-top:6px;font-family:Inter,sans-serif;font-weight:500;font-size:14px;letter-spacing:.04em;text-transform:uppercase;color:var(--te-light);line-height:1.4}
.te-concept__v--unit{text-transform:none;letter-spacing:.02em}
.te-type{display:inline-block;position:relative}
.te-js .te-concept .te-concept__k{opacity:0}
.te-js .te-concept .te-type{clip-path:inset(0 100% 0 0);transition:clip-path .4s steps(var(--n,8)) var(--d,0ms)}
.te-concept__v--last{position:relative;width:max-content;max-width:100%}
.te-concept__v--last::after{content:"";position:absolute;left:100%;top:.15em;width:2px;height:1em;margin-left:3px;background:var(--te-neon);opacity:0}
.te-js .te-concept.is-s2 .te-concept__row--s .te-concept__k,.te-js .te-concept.is-s5b .te-concept__row--d .te-concept__k{opacity:1}
.te-js .te-concept.is-s2 .te-concept__row--s .te-type,.te-js .te-concept.is-s5b .te-concept__row--d .te-type{clip-path:inset(0 0 0 0)}
.te-js .te-concept.is-s2:not(.is-s5b) .te-concept__row--s .te-concept__v--last::after,.te-js .te-concept.is-s5b:not(.is-done) .te-concept__row--d .te-concept__v--last::after{animation:te-blink 1s linear 1.2s infinite}
@keyframes te-blink{0%,49%{opacity:1}50%,100%{opacity:0}}
.te-concept__link{position:relative;height:160px;display:flex;align-items:center;justify-content:center}
.te-concept__seg{position:absolute;left:50%;width:2px;height:50%;overflow:visible}
.te-concept__seg--a{top:0}
.te-concept__seg--b{bottom:0}
.te-js .te-concept__seg{clip-path:inset(0 0 100% 0);transition:clip-path .5s var(--te-ease)}
.te-js .te-concept.is-s3 .te-concept__seg--a,.te-js .te-concept.is-s5 .te-concept__seg--b{clip-path:inset(0)}
.te-concept__dash{stroke:var(--te-neon);stroke-width:1.5;stroke-dasharray:2 4;vector-effect:non-scaling-stroke}
.te-js .te-concept.is-s3 .te-concept__dash{animation:te-dash 8s linear .5s 3}
.te-concept.is-paused .te-concept__dash,.te-concept.is-paused .te-concept__v--last::after{animation-play-state:paused}
@keyframes te-dash{from{stroke-dashoffset:0}to{stroke-dashoffset:-48}}
.te-concept__match{position:relative;background:var(--te-black);padding:8px 16px;text-align:center}
.te-concept__match::after{content:"";position:absolute;inset:0;border:1px solid var(--te-neon);opacity:0;pointer-events:none}
.te-js .te-concept.is-hit .te-concept__match::after{animation:te-ring .52s var(--te-ease) 1 both;--ring:1.18}
.te-concept__pct{transition:opacity .2s linear}
.te-js .te-concept:not(.is-s4) .te-concept__pct{opacity:.2;text-shadow:none}
.te-concept__match .te-label{color:var(--fg);transition:color .2s linear}
.te-js .te-concept:not(.is-s4) .te-concept__match .te-label{color:var(--meta)}
.te-concept__pct{font-family:Inter,sans-serif;font-weight:300;font-size:clamp(56px,6vw,96px);line-height:1;letter-spacing:-.02em;color:var(--te-neon);text-shadow:0 0 28px var(--te-glow);font-variant-numeric:tabular-nums}
.te-concept__foot{margin-top:24px;color:var(--meta);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.te-concept__foot .te-x{color:var(--te-mid);transition:opacity .2s linear var(--d,0ms)}
.te-js .te-concept:not(.is-s6) .te-concept__foot .te-x{opacity:0}
.te-concept__ex{color:var(--te-light);margin-top:16px;display:flex;gap:4px 12px;align-items:baseline;flex-wrap:wrap}
.te-concept__ex span{font-family:var(--te-font);font-size:11px;letter-spacing:0;text-transform:none;color:var(--te-light)}
.te-vision__desc{grid-column:1 / 8;margin-top:56px;color:var(--te-light)}
.te-vision__note{grid-column:1 / 8;margin-top:24px;font-size:12px;line-height:1.8;color:var(--te-light);max-width:40em;text-wrap:balance}
.te-vision__geo{grid-column:9 / 13;grid-row:1 / span 2;justify-self:end;align-self:end;--geo:clamp(200px,20vw,280px)}
@media (max-width:1199px){.te-concept__row{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:1023px){
.te-ladder{grid-column:1 / 13}
.te-concept{grid-column:1 / 13;margin-top:48px}
.te-concept__row{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:767px){
.te-concept{padding:56px 16px 24px}
.te-concept__head{left:16px;right:16px}
.te-concept__row{grid-template-columns:repeat(2,minmax(0,1fr))}
.te-concept__pct{font-size:clamp(40px,12vw,56px)}
.te-concept__link{height:128px}
.te-vision__desc,.te-vision__note{grid-column:1 / -1}
.te-vision__geo{display:none}
}

/* 10 ABOUT：行が罫線を伸ばしながら順に。BUSINESS 3 項目の番号が順に点灯 */
.te-about{padding-block:clamp(96px,10vw,160px)}
.te-about__title{grid-column:1 / 9}
.te-dl{margin-top:clamp(40px,5vw,72px)}
.te-dl__row{display:grid;grid-template-columns:3fr 9fr;gap:24px;border-top:1px solid var(--rule);padding-block:20px}
.te-dl__row:last-child{border-bottom:1px solid var(--rule)}
.te-dl dt{color:var(--fg)}
.te-dl dd{font-size:16px;line-height:1.8;color:var(--te-ink);word-break:keep-all;overflow-wrap:anywhere;text-wrap:balance}
.te-dl dd .te-x{color:var(--te-mid)}
.te-dl dd a{color:var(--te-ink)}
.te-dl__ol li{display:flex;gap:14px;align-items:baseline;padding-block:6px}
.te-dl__ol li + li{border-top:1px solid var(--rule)}
.te-js .te-dl__row:not(.is-in) .te-dl__ol .te-list__n{color:var(--meta)}
.te-js .te-dl__ol .te-list__n{transition-delay:calc(var(--d,0ms) + var(--dd,0ms) + 300ms)}
@media (max-width:767px){
.te-dl__row{grid-template-columns:1fr;gap:8px}
}

/* 11 FINAL：光沢の ∞ は全幅で表示（≥1024 は右、<1024 は本文の下、<768 は幅 100%）。罫線が伸びて FIG. 02 */
.te-final{padding-block:var(--te-sp-max)}
.te-final__title{grid-column:1 / 12}
.te-final__body{grid-column:1 / 8;margin-top:40px}
.te-final__cta{grid-column:1 / 8;margin-top:56px;display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.te-final__cta .te-vr{width:1px;height:24px;background:var(--rule)}
.te-final__cta .te-label{color:var(--fg)}
.te-final__fig{grid-column:8 / 13;grid-row:2 / 4;align-self:end}
.te-final__fig .te-label{margin-top:16px;padding-top:12px;border-top:1px solid var(--rule);color:var(--meta)}
.te-js .te-final__fig .te-label{opacity:0;transition:opacity .5s linear .4s}
.te-js .te-final__fig.is-in .te-label{opacity:1}
@media (max-width:1023px){
.te-final__body,.te-final__cta{grid-column:1 / 11}
.te-final__fig{grid-column:1 / -1;grid-row:auto;width:min(100%,560px);margin:64px 0 0 auto}
}
@media (max-width:767px){
.te-final__title,.te-final__body,.te-final__cta{grid-column:1 / -1}
.te-final__cta{flex-direction:column;align-items:flex-start;gap:16px}
.te-final__cta .te-vr{display:none}
.te-final__fig{width:100%;margin-top:48px}
}

/* footer (奥付)：罫線 → ワードマーク → 3 列。MOTION: ON/OFF */
.te-footer__tag,.te-footer__head,.te-footer__op{line-height:1.8;font-family:Inter,sans-serif;font-weight:500;font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--te-light)}
.te-footer{--bg:var(--te-foot);background:var(--bg);color:var(--te-light);border-top:1px solid var(--te-dark);padding:96px 0 40px;overflow-x:clip}
.te-footer__brand{grid-column:1 / 5}
.te-footer__wordmark{font-family:Inter,sans-serif;font-weight:500;font-size:20px;letter-spacing:-.01em;color:#fff;text-decoration:none;display:inline-block;line-height:1}
.te-footer__tag{margin-top:16px}
.te-footer__tag .te-x{color:var(--te-mid)}
.te-footer__addr{margin-top:24px;font-size:13px;line-height:1.8;color:var(--te-light);word-break:keep-all;overflow-wrap:anywhere}
.te-footer__col{grid-column:span 2}
.te-footer__col--s{grid-column:6 / 8}
.te-footer__col--c{grid-column:8 / 10}
.te-footer__col--m{grid-column:10 / 12}
.te-footer__col ul{margin-top:12px}
.te-footer__col a{display:inline-block;position:relative;font-size:15px;line-height:2.2;padding-block:6px;color:#fff;text-decoration:none;white-space:nowrap}
.te-footer__col a::after{content:"";position:absolute;left:0;right:0;bottom:11px;height:2px;background:var(--te-neon);transform:scaleX(0);transform-origin:left;transition:transform .24s var(--te-ease)}
.te-footer__col a:hover::after,.te-footer__col a:focus-visible::after{transform:scaleX(1)}
.te-footer__op{margin-top:16px}
.te-footer__op b{display:block;font-weight:500;color:var(--te-light);text-transform:none;letter-spacing:-.01em;font-size:15px;margin-top:4px}
.te-colophon{margin-top:72px;border-top:1px solid var(--te-dark);padding-top:16px;display:grid;grid-template-columns:1fr 1px 1fr 1px 1fr auto;gap:24px;align-items:center;font-family:Inter,sans-serif;font-size:12.5px;letter-spacing:.06em;color:var(--te-mid)}
.te-colophon i{display:block;width:1px;height:14px;background:var(--te-dark)}
.te-colophon p:nth-child(3){text-align:center}
.te-colophon p:nth-child(5){text-align:right}
.te-js .te-colophon>*{opacity:0;transition:opacity .5s linear var(--d,0ms)}
.te-js .te-colophon.is-in>*{opacity:1}
.te-motion{font-family:Inter,sans-serif;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--te-light);border:1px solid var(--te-dark);border-radius:2px;padding:6px 10px;min-height:32px;white-space:nowrap;transition:border-color .2s}
.te-motion:hover,.te-motion:focus-visible{border-color:var(--te-neon);color:var(--te-neon)}
@media (max-width:1023px){
.te-footer__brand{grid-column:1 / 13;margin-bottom:48px}
.te-footer__col--s{grid-column:1 / 5}
.te-footer__col--c{grid-column:5 / 9}
.te-footer__col--m{grid-column:9 / 13}
}
@media (max-width:767px){
.te-footer{padding:64px 0 32px}
.te-footer__col--s{grid-column:1 / 7}
.te-footer__col--c{grid-column:7 / 13}
.te-footer__col--m{grid-column:1 / 13;margin-top:32px}
.te-colophon{grid-template-columns:1fr;gap:8px;margin-top:48px}
.te-colophon i{display:none}
.te-colophon p{text-align:left!important}
.te-motion{justify-self:start;margin-top:8px}
}

/* sub pages (about / contact / privacy) */
.te-page{padding-block:clamp(64px,8vw,120px) var(--te-sp)}
.te-page__head{grid-column:1 / 10}
.te-page__title{margin-top:24px}
.te-page__lead{margin-top:32px;color:var(--te-dark)}
.te-page__body{grid-column:1 / 9;margin-top:clamp(48px,6vw,80px)}
.te-page__aside{grid-column:10 / 13;margin-top:clamp(48px,6vw,80px)}
.te-page__aside .te-label{color:var(--fg)}
.te-page__aside p + p{margin-top:12px}
.te-prose h2{font-weight:700;font-size:clamp(20px,2vw,26px);line-height:1.4;margin-top:56px;padding-top:24px;border-top:1px solid var(--rule)}
.te-prose h2:first-child{margin-top:0;padding-top:0;border-top:0}
.te-prose p{margin-top:16px;font-size:16px;line-height:1.9;color:var(--te-dark);max-width:38em}
.te-prose ul{margin-top:16px;max-width:38em}
.te-prose li{position:relative;padding-left:20px;font-size:16px;line-height:1.9;color:var(--te-dark)}
.te-prose li::before{content:"";position:absolute;left:0;top:.9em;width:8px;height:1px;background:var(--te-mid)}
.te-prose a{color:var(--te-ink)}
.te-prose .te-dl{margin-top:24px}
@media (max-width:1023px){.te-page__head,.te-page__body,.te-page__aside{grid-column:1 / -1}}

/* form：欄は順に出現。focus で下罫線に線が中央から。送信中は矢印が滑る（疑似要素だけ。欄本体は常に操作可能） */
.te-form{display:grid;gap:32px;max-width:40em}
.te-form__fields{display:grid;gap:44px}
.te-form__field{display:grid;gap:8px}
.te-form__label{color:var(--te-ink);display:flex;gap:10px;align-items:baseline}
.te-form__req{font-style:normal;font-family:var(--te-font);font-size:12px;letter-spacing:.1em;color:var(--te-dark)}
.te-form__ctl{position:relative;display:block}
.te-form__ctl::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:#111;transform:scaleX(0);transform-origin:center;transition:transform .24s var(--te-ease);pointer-events:none}
.te-form__ctl:focus-within::after{transform:scaleX(1)}
.te-form__input{width:100%;border:0;border-bottom:1px solid var(--te-rule);border-radius:0;background:transparent;padding:8px 0 12px;font:400 16px/1.5 var(--te-font);color:var(--te-ink);transition:border-color .2s}
.te-form__input:focus:not(:focus-visible){outline:0}
.te-form__input:focus-visible{outline:2px solid #111;outline-offset:2px}
.te-form__input[aria-invalid="true"]{border-bottom:2px solid #111}
.te-form__err{font-size:14.5px;line-height:1.6;color:var(--te-ink)}
.te-form__err::before{content:"— "}
.te-form__err[hidden]{display:none}
textarea.te-form__input{min-height:160px;resize:vertical}
select.te-form__input{appearance:none;-webkit-appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23111' stroke-width='1'/%3E%3C/svg%3E");background-position:right 4px center;background-size:12px 8px;background-repeat:no-repeat;padding-right:28px}
.te-form__opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 24px}
@media (max-width:767px){.te-form__opts{grid-template-columns:1fr}}
.te-form__opt{display:inline-flex;align-items:center;gap:10px;font-size:15px;line-height:1.5;cursor:pointer;min-height:44px;color:var(--te-dark);transition:color .16s}
.te-form__opt:has(input:checked){color:var(--te-ink)}
.te-form__opt input{appearance:none;-webkit-appearance:none;width:16px;height:16px;margin:0;border:1px solid #111;border-radius:0;background:#fff;display:inline-grid;place-content:center;cursor:pointer;flex:0 0 auto}
.te-form__opt input[type="radio"]{border-radius:50%}
.te-form__opt input::before{content:"";width:8px;height:8px;background:#111;transform:scale(0);transition:transform .16s var(--te-pop)}
.te-form__opt input[type="radio"]::before{border-radius:50%}
.te-form__opt input:checked::before{transform:scale(1)}
.te-form__consent{font-size:14.5px;line-height:1.7;color:var(--te-dark)}
.te-form__consent a{color:var(--te-ink)}
.te-form__hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.te-form__msg{font-size:15px;line-height:1.8;color:var(--te-dark);border-top:1px solid var(--rule);padding-top:16px}
.te-form__msg[hidden]{display:none}
.te-form__done{position:relative;border-top:1px solid var(--te-ink);padding-top:24px}
.te-js .te-form__done:not([hidden]){animation:te-fade .6s var(--te-ease) both}
.te-js .te-form__done:not([hidden])::after{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:var(--bg);transform-origin:right;animation:te-wipe .6s var(--te-ease) both}
.te-form__done p{margin-top:12px;font-size:16px;line-height:1.9;color:var(--te-dark)}
.te-form__mail{margin-top:24px;border-top:1px solid var(--rule);padding-top:24px}
.te-form__mail p{font-size:15px;line-height:1.8;color:var(--te-dark)}
.te-form__mail a{font-family:Inter,sans-serif;font-size:17px;color:var(--te-ink);word-break:break-all}
/* JS 無効（または site.js が届かない）とき：欄を隠してメールアドレスだけを出す（生の POST をさせない）。送信ボタンは JS が有効化する */
.te-form__nojs{display:none}
html:not(.te-js) .te-form__fields{display:none}
html:not(.te-js) .te-form__nojs{display:block;margin-top:0}
.te-form.is-sending .te-btn{pointer-events:none;overflow:hidden}
.te-js .te-form.is-sending .te-btn__arrow{animation:te-send 1.2s var(--te-ease) infinite}
@keyframes te-send{0%{transform:translateX(0)}45%{transform:translateX(40px);opacity:0}50%{transform:translateX(-40px);opacity:0}100%{transform:translateX(0);opacity:1}}
.te-form__submit{margin-top:8px}
@media (max-width:767px){
.te-form__submit .te-btn{width:100%;justify-content:space-between;height:56px}
}

/* mobile: 章タイトルは全幅（上の 1 / 9 等と同じ詳細度なので、必ず末尾で上書きする） */
@media (max-width:767px){
.te-why__title,.te-approach__title,.te-approach__sub,.te-media__title,.te-about__title,.te-mission__title,.te-mission__geo{grid-column:1 / -1}
}

/* 静止版 html.te-st（reduced-motion／MOTION OFF。head の inline script が描画前に付ける）：全文を最初から表示、動きなし。読み進め線は残す */
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.te-st *,.te-st *::before,.te-st *::after{animation:none!important;transition-duration:.01ms!important;transition-delay:0ms!important}
.te-st .te-rv,.te-st .te-hi--f,.te-st .te-ledger__text,.te-st .te-ledger__key,.te-st .te-spread__en,.te-st .te-spread__name,.te-st .te-spread__side .te-figure,.te-st .te-bridge__new,.te-st .te-daruma-mark,.te-st .te-daruma-note,.te-st .te-concept__pct,.te-st .te-colophon>*,.te-st .te-concept__k,.te-st .te-concept__foot .te-x,.te-st .te-vision__title .te-dim,.te-st .te-final__fig .te-label{opacity:1!important;transform:none!important}
.te-st .te-rv-line>span,.te-st .te-rv-word>span,.te-st .te-hi>span,.te-st .te-slide>span,.te-st .te-ledger__num,.te-st .te-step__name,.te-st .te-mark__tilt{transform:none!important}
.te-st .te-slide>span,.te-st .te-slide .te-x,.te-st .te-menu__item{opacity:1!important}
.te-st .te-wipe::after,.te-st .te-hero__caption::after,.te-st .te-mark__light,.te-st .te-timeline__car,.te-st .te-bridge__drop,.te-st .te-lamp::after,.te-st .te-concept__v--last::after{display:none!important}
.te-st .te-odo__col{transform:translateY(calc(var(--n,0) * -1em))!important}
.te-st .te-rh__no,.te-st .te-step__no,.te-st .te-list__n,.te-st .te-hero__caption i,.te-st .te-bridge-wrap .te-list li,.te-st .te-bridge-wrap .te-label i{color:var(--head)!important}
.te-st .te-value__no{color:var(--fg)!important}
.te-st .te-timeline,html:not(.te-js) .te-timeline{--te-p:1}
html:not(.te-js) .te-lamp{background:var(--head)}
html:not(.te-js) .te-timeline__car{display:none}
.te-st .te-lamp{background:var(--head)!important}
.te-st .te-step__name::after,.te-st .te-value__item::before,.te-st .te-bridge__line,.te-st .te-bridge__down::before,.te-st .te-gauge i{transform:none!important}
.te-st .te-tr__item::before{transform:scaleX(.14)!important}
.te-st .te-hl,.te-st .te-bridge__new{background-size:100% .34em!important}
.te-st .te-tr__fig{background-size:100% .13em!important}
.te-st .te-step__text,.te-st .te-bridge-wrap .te-list li::before,.te-st .te-bridge__head{opacity:1!important}
.te-st .te-bridge__dot{display:none}
.te-st .te-concept::before,.te-st .te-concept::after,.te-st .te-concept__c::before,.te-st .te-concept__c::after{transform:none!important}
.te-st .te-type,.te-st .te-concept__seg{clip-path:none!important}
.te-st .te-concept__match .te-label{color:var(--fg)!important}
.te-st .te-belt__track{transform:none!important}
.te-st .te-belt b{color:var(--meta)!important}

/* te-fx：te-fx.js が svg.te-bridge の中に足す要素（線の束の端の点・流れる光の点とにじみ）。色はトークンだけ。
   canvas に描く絵（∞ の光の軌跡・粒の幾何学・ダルマ）の色は te-fx.js 側（無彩色・シアン・ダルマの赤だけ。--check が見る） */
.te-bridge__port{fill:var(--te-ink)}
.te-bridge__pkt{fill:var(--te-neon);stroke:var(--te-ink);stroke-width:1}
.te-bridge__halo{fill:var(--te-neon);opacity:.26}

/* polish 2026-10-03（依頼者指示）：余白を詰める／矢印のデザインを外す（幹は他の線と同じ細さ・先端なし）／図の位置を見出しに合わせる／実績は 2 つ */
:root{--te-sp:clamp(72px,7.5vw,112px);--te-sp-max:clamp(88px,9vw,136px)}
.te-rh + *{margin-top:clamp(36px,4.5vw,64px)}
.te-mission{min-height:0}
.te-mission__body,.te-mission__geo{margin-top:40px}
/* MISSION：本文を左の図と上下中央でそろえ、結びの一文を大きくして、文の下に空白を残さない */
@media (min-width:768px){
.te-mission__body,.te-mission__geo{align-self:center}
.te-mission__geo{--geo:clamp(220px,27vw,380px)}
.te-mission__body p.te-mission__quote{font-size:clamp(24px,2.7vw,38px);line-height:1.5;margin-top:36px;padding-top:28px}
}
.te-spread{min-height:0;padding-block:clamp(48px,5.5vw,80px)}
.te-services{padding-bottom:clamp(24px,3vw,48px)}
.te-services .te-spread:last-child{padding-bottom:clamp(24px,3vw,48px)}
.te-about{padding-block:var(--te-sp)}
.te-ledger,.te-bridge-wrap,.te-vision__grid{margin-top:clamp(36px,4.5vw,64px)}
.te-media__desc,.te-vision__desc{margin-top:40px}
.te-media__desc{word-break:normal;line-break:strict;text-wrap:pretty}
.te-final__cta{margin-top:40px}
/* WHAT WE DO：図は見出し（WHAT〜DO）と同じ高さの箱に。上端を見出しの上端、下端を副題の行にそろえる */
@media (min-width:768px){
.te-services__fx{left:42%;right:0;top:0;bottom:0;flex-direction:column;align-items:center;justify-content:center;gap:10px}
.te-services__fx .te-geo{--geo:clamp(240px,27vw,380px)}
.te-services__fx .te-geo__cap{text-align:center;min-width:0;min-height:3.2em}
}
/* X TIMES → tasuki-ecox：矢印のデザインは置かない。幹は線の束と同じ 1px、先端の山形なし。下向きも線だけ */
.te-bridge__line{height:1px;margin-top:0;right:calc(26% - 3px)}
.te-bridge__head{display:none}
.te-bridge__down::after,.te-bridge__arrow::after{content:none}
.te-bridge__down{margin-top:24px;padding-top:56px}
/* VISION：粒の図は CONCEPT UI の真下・右列の中央に置き、説明文と上端をそろえる */
@media (min-width:768px){
.te-vision__geo{grid-column:8 / 13;grid-row:1 / span 2;justify-self:center;align-self:start;margin-top:40px;--geo:clamp(220px,24vw,340px)}
}
/* TRACK RECORD：数字は 2 つ。横に並べ、下に 2 行の文 */
.te-tr{margin-top:clamp(40px,5vw,72px)}
.te-tr__item{padding-block:20px clamp(32px,4vw,56px)}
.te-tr__item--xl .te-tr__num{font-size:clamp(96px,15vw,232px)}
.te-track__body{max-width:none;border-top:1px solid var(--rule);padding-top:28px;color:var(--te-ink);font-weight:500}
@media (min-width:768px){.te-track__body{grid-column:1 / -1}}
