/* Lim — shared motion & readability layer (loaded on every page after corporate.css) */
:root{--intro:1.25s;--ease:cubic-bezier(.2,.7,.2,1)}
:root.lim-seen{--intro:.3s}

/* ── Opening veil / page transition ── */
.lim-veil{position:fixed;inset:0;z-index:300;display:grid;place-items:center;background:linear-gradient(180deg,#c9dcf0,#eedfe4 62%,#d7e2f1);pointer-events:none;animation:limVeilOut 1s cubic-bezier(.7,0,.2,1) .75s both}
.lim-veil img{width:112px;height:auto;animation:limVeilLogo 1.35s ease both}
.lim-seen .lim-veil{animation-duration:.5s;animation-delay:0s}
.lim-seen .lim-veil img{display:none}
body[data-daylight="false"] .lim-veil{background:#0f1b33}
.lim-leave .lim-veil{animation:limVeilIn .24s ease both}
.lim-leave .lim-veil img{display:none}
@keyframes limVeilOut{from{opacity:1;visibility:visible}to{opacity:0;visibility:hidden}}
@keyframes limVeilIn{from{opacity:0;visibility:visible}to{opacity:1;visibility:visible}}
@keyframes limVeilLogo{0%{opacity:0;transform:translateY(10px)}35%,70%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-6px)}}
@keyframes limRise{from{transform:translateY(112%)}to{transform:none}}
@keyframes limFadeUp{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

/* ── Hero: letters rise, copy follows, fades away on scroll ── */
.lim-word{display:inline-block;white-space:nowrap;perspective:900px}
.type-motion .hero .kinetic-title .glyph{transition-delay:calc(var(--intro) - .15s + var(--glyph-index)*38ms)}
.type-motion .hero .hero-jp.kinetic-title .glyph{transition-delay:calc(var(--intro) + .55s + var(--glyph-index)*22ms)}
.hero .lp-hero-lead{animation:limFadeUp 1.3s ease calc(var(--intro) + 1.1s) both}
.hero-meta>*{animation:limFadeUp 1.2s ease calc(var(--intro) + 1.3s) both}
.hero-copy{transform:translate3d(0,calc(var(--hp,0)*-70px),0);opacity:calc(1 - var(--hp,0)*1.15)}

/* ── Headings: masked reveal, eyebrow line draws in ── */
.motion-ready .eyebrow.reveal:before,.motion-ready .project-number.reveal:before{transform:scaleX(0);transition:transform 1.2s var(--ease) .25s}
.motion-ready .eyebrow.reveal.visible:before,.motion-ready .project-number.reveal.visible:before{transform:scaleX(1)}
.motion-ready .jp-heading.reveal{transition-delay:.12s}
.text-stage .project-intro .display-heading{font-size:clamp(30px,3.5vw,52px)}

/* ── Chapter navigation (desktop) ── */
.lim-nav{position:fixed;right:20px;top:50%;z-index:60;transform:translateY(-50%);opacity:0;visibility:hidden;transition:opacity .6s,visibility .6s}
.lim-nav.show{opacity:1;visibility:visible}
.menu-open .lim-nav{opacity:0;visibility:hidden}
.lim-nav ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.lim-nav a{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-height:30px;color:var(--paper)}
.lim-nav i{display:block;width:14px;height:1px;background:currentColor;opacity:.5;transition:width .55s var(--ease),opacity .4s,height .3s}
.lim-nav a:hover i{width:26px;opacity:.9}
.lim-nav a.active i{width:38px;height:2px;opacity:1}
.lim-nav-label{font:600 11px/1.5 var(--label);letter-spacing:.16em;text-transform:uppercase;text-align:right;white-space:nowrap;opacity:0;transform:translateX(10px);transition:opacity .4s,transform .5s var(--ease);text-shadow:0 1px 2px #ffffff55}
.lim-nav-label small{display:block;font:10px var(--jp);letter-spacing:.1em;text-transform:none;opacity:.8}
.lim-nav a.active .lim-nav-label,.lim-nav a:hover .lim-nav-label,.lim-nav a:focus-visible .lim-nav-label{opacity:1;transform:none}
body[data-daylight="false"] .lim-nav-label{text-shadow:none}
@media(max-width:1180px){.lim-nav{display:none}}

/* ── Home: project numerals, journal rows ── */
.project[data-no]:after{content:attr(data-no);position:absolute;right:5vw;top:90px;font:400 clamp(130px,24vw,380px)/1 var(--serif);letter-spacing:-.04em;color:var(--paper);opacity:.07;pointer-events:none;z-index:0}
.project .project-copy{position:relative;z-index:1}
.journal-list a{grid-template-columns:120px 1fr 54px;align-items:center;position:relative;transition:padding .55s var(--ease),opacity .35s}
.journal-list a:hover{opacity:1;padding-left:20px}
.journal-list a:before{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease)}
.journal-list a:hover:before{transform:scaleX(1)}
.journal-list time{font-size:12px;letter-spacing:.08em}
.journal-list .article-open{transition:transform .5s var(--ease)}
.journal-list a:hover .article-open{transform:translateX(6px)}
.motion-ready .journal-list li.reveal:nth-child(2){transition-delay:.07s}
.motion-ready .journal-list li.reveal:nth-child(3){transition-delay:.14s}
.motion-ready .journal-list li.reveal:nth-child(4){transition-delay:.21s}
.motion-ready .journal-list li.reveal:nth-child(5){transition-delay:.28s}
.motion-ready .journal-list li.reveal:nth-child(6){transition-delay:.35s}
@media(max-width:800px){
 .journal-list a{grid-template-columns:1fr 42px}
 .journal-list a:hover{padding-left:0}
 .project[data-no]:after{top:70px;right:4vw;opacity:.06}
}

/* ── Buttons ── */
.text-link{transition:transform .45s var(--ease),background .4s,box-shadow .4s}
.text-link .cta-mark,.lp-plan-link .cta-mark,.service-lp-cta .cta-mark{transition:transform .6s var(--ease)}
.text-link:hover .cta-mark,.lp-plan-link:hover .cta-mark,.service-lp-cta a:hover .cta-mark{transform:rotate(180deg)}
.footer-bottom>a,.detail-back,.detail-end a{transition:transform .45s var(--ease),background .4s}
.footer-bottom>a:hover,.detail-back:hover,.detail-end a:hover{transform:translateY(-3px)}
.footer-grid nav a,.footer-legal a{position:relative;width:fit-content}
.footer-grid nav a:after,.footer-legal a:after{content:'';position:absolute;left:0;right:0;bottom:-3px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.footer-grid nav a:hover:after,.footer-legal a:hover:after{transform:scaleX(1)}

/* ── Detail pages (service / articles / contact) ── */
.detail-page .detail-back{animation:limFadeUp 1s ease calc(var(--intro) - .1s) both}
.detail-page .detail-article{animation:limArticle 1.2s var(--ease) var(--intro) both}
@keyframes limArticle{from{opacity:0;transform:translateY(46px)}to{opacity:1;transform:none}}
.lim-js .lim-reveal{opacity:0;transform:translateY(22px);transition:opacity 1s ease,transform 1.1s var(--ease)}
.lim-js .lim-reveal.in{opacity:1;transform:none}
.article-body h2{position:relative}
.article-body h2:after{content:'';position:absolute;left:0;bottom:-1px;width:72px;height:2px;background:#355f7c}
.article-body table{width:100%;border-collapse:collapse;font-size:.92em;line-height:1.7}
.article-body th,.article-body td{padding:11px 14px;border-bottom:1px solid #2436481f;text-align:left}
.article-body thead td,.article-body th,.article-body table:not(:has(thead)) tr:first-child td{font-weight:600;border-bottom:1px solid #24364866}
.article-body tbody tr:nth-child(even){background:#ffffff73}
.article-body tbody tr{transition:background .3s}
.article-body tbody tr:hover{background:#d9e7f0}
.article-body figure:has(table){overflow-x:auto}
.article-body img{border-radius:3px}

@media(prefers-reduced-motion:reduce){
 .lim-veil{display:none}
 .hero .lp-hero-lead,.hero-meta>*,.detail-page .detail-back,.detail-page .detail-article{animation:none}
 .hero-copy{transform:none;opacity:1}
 .lim-js .lim-reveal{opacity:1;transform:none;transition:none}
}
