/* LIMBO — limboart.com */

:root{
  --bg:#ffffff;
  --ink:#0E0E0E;
  --mut:#8E8E8E;
  --line:rgba(14,14,14,.12);
  --dark:#0C0C0C;
  --onDark:#F5F3EF;
  --r:22px;
  --pad:clamp(18px,4vw,44px);
  --w:1240px;
}

*,*::before,*::after{box-sizing:border-box}
html{
  -webkit-text-size-adjust:100%;overflow-x:clip;
  scroll-snap-type:y mandatory;
  scroll-behavior:smooth;
}
@media(prefers-reduced-motion:reduce){html{scroll-snap-type:none;scroll-behavior:auto}}
body{
  margin:0;width:100%;max-width:100%;background:var(--bg);color:var(--ink);overflow-x:clip;
  font-family:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",system-ui,sans-serif;
  font-size:16px;line-height:1.5;font-weight:500;
  -webkit-font-smoothing:antialiased;
  word-break:keep-all;
  -webkit-tap-highlight-color:transparent;
}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%;height:auto}
h2,p{margin:0}
:focus-visible{outline:2px solid var(--ink);outline-offset:3px}

/* ── nav ─────────────────────────────────────── */
.nav{
  position:fixed;left:0;right:0;top:0;width:100%;z-index:30;
  display:flex;align-items:center;justify-content:center;
  padding:18px var(--pad);
  background:linear-gradient(var(--bg) 60%,transparent);
}
.nav .wm{min-width:0}
.nav .wm img{width:78px}


/* ── sections ────────────────────────────────── */
.s{
  width:100%;max-width:100%;min-width:0;min-height:100svh;
  scroll-snap-align:start;scroll-snap-stop:always;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:clamp(26px,4vw,52px);
  padding:clamp(88px,10vw,132px) var(--pad);
  text-align:center;
}
.hero{padding-top:74px;padding-bottom:clamp(56px,8vw,110px)}
.hero .panel.dark{aspect-ratio:1240/760;max-height:calc(100svh - 190px)}

h2{
  font-size:clamp(24px,3.4vw,46px);
  font-weight:700;letter-spacing:-.03em;line-height:1.2;
  max-width:22ch;text-wrap:balance;
}
.logs h2{white-space:nowrap;max-width:none;font-size:clamp(19px,3.4vw,46px)}
:lang(ko) h2,:lang(ja) h2{letter-spacing:-.045em;line-height:1.24;max-width:18ch}
.under{font-size:13px;font-weight:500;color:var(--mut);letter-spacing:.01em}

/* ── panels ──────────────────────────────────── */
.panel{
  position:relative;width:100%;max-width:min(var(--w),100%);min-width:0;
  border-radius:var(--r);overflow:hidden;
}
.panel.dark{background:var(--dark);color:var(--onDark)}

.geisai .panel.dark{aspect-ratio:1240/620;max-height:calc(100svh - 300px)}
@media(max-width:760px){.hero .panel.dark{aspect-ratio:390/620}.geisai .panel.dark{aspect-ratio:390/440}}
.panel .bg{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;opacity:.34;
}
.panel::after{content:"";position:absolute;inset:0;background:radial-gradient(115% 85% at 50% 46%,rgba(12,12,12,.30),rgba(12,12,12,.80));pointer-events:none}
.panel.plain::after{display:none}
.panel .on{
  position:absolute;inset:0;z-index:1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:clamp(20px,3.2vw,36px);padding:clamp(28px,5vw,64px);
}
.panel.plain{background:none;display:flex;align-items:center;justify-content:center;padding:0 0 8px}

.mark{width:clamp(132px,18vw,230px);margin-top:clamp(-70px,-5vh,-24px)}
.heroline{font-size:clamp(20px,2.4vw,32px);font-weight:700;letter-spacing:-.01em;color:#fff;opacity:1;margin:-6px 0 0}

.figs{display:flex;gap:clamp(40px,9vw,120px);max-width:100%;flex-wrap:wrap;justify-content:center}
.figs div{display:flex;flex-direction:column;gap:10px}
.figs b{
  font-size:clamp(46px,9.4vw,124px);font-weight:700;
  letter-spacing:-.05em;line-height:.92;font-variant-numeric:tabular-nums;
}
.figs > div > span{font-size:16px;font-weight:700;letter-spacing:.16em;opacity:.72}
.figs b .odo,.figs b .odo *{font-size:inherit;letter-spacing:inherit;font-weight:inherit;opacity:1}

.get{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:48px;padding:0 22px;border-radius:999px;
  background:var(--onDark);color:var(--dark);
  font-size:15px;font-weight:600;white-space:nowrap;
  transition:transform .12s ease,opacity .12s ease;
}
.btn:active{transform:scale(.98);opacity:.9}
.btn svg{width:17px;height:17px;flex:none}
.btn.solid{background:var(--ink);color:var(--bg)}
.btn.line{background:none;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn.line:hover{box-shadow:inset 0 0 0 1.5px var(--ink)}
.acts{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}

/* odometer */
.odo{display:inline-flex;align-items:baseline}
.odo-d{display:inline-block;height:1em;line-height:1;overflow:hidden;position:relative;top:.04em}
.odo-s{display:flex;flex-direction:column;line-height:1;will-change:transform;transition:transform 1.7s cubic-bezier(.16,.84,.28,1)}
/* the ones digit keeps turning: -10em lands on the same numeral, so the loop is seamless */
.odo-s.roll{animation:odoroll 6.2s cubic-bezier(.3,.7,.2,1) 2.4s infinite}
@keyframes odoroll{
  0%   { transform:translateY(var(--to)); }
  24%  { transform:translateY(calc(var(--to) - 10em)); }
  100% { transform:translateY(calc(var(--to) - 10em)); }
}
@media(prefers-reduced-motion:reduce){.odo-s.roll{animation:none}}
.odo-s span{display:block;height:1em;line-height:1}

/* ── logs ────────────────────────────────────── */
.logs{position:relative;isolation:isolate;gap:clamp(18px,2.4vw,30px);padding-left:0;padding-right:0}
.logsbg{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:min(1260px,92%);height:auto;opacity:.24;z-index:-1;
  -webkit-mask-image:radial-gradient(78% 70% at 50% 50%,#000 62%,transparent);
  mask-image:radial-gradient(78% 70% at 50% 50%,#000 62%,transparent);
}
@media(max-width:760px){.logsbg{width:150%;opacity:.18}}
.marquee{
  --dur:80s;width:100%;max-width:100%;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
}
.marquee .track{display:flex;gap:14px;width:max-content;animation:slide var(--dur) linear infinite}
.marquee.rev .track{animation-direction:reverse}
@keyframes slide{to{transform:translateX(-50%)}}
.card{
  width:min(340px,74vw);flex:none;text-align:left;
  padding:20px 22px;border-radius:16px;background:#F4F2EF;
  display:flex;flex-direction:column;gap:10px;
}
.card p{
  font-size:15px;font-weight:500;line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;
}
.card .m{font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--mut)}
@media(prefers-reduced-motion:reduce){.marquee .track{animation:none}.odo-s{transition:none}}

/* ── geisai ──────────────────────────────────── */
.panel.link .on{gap:14px}
.panel .big{font-size:clamp(20px,3.2vw,40px);font-weight:700;letter-spacing:-.03em}
.panel .small{font-size:12px;font-weight:600;letter-spacing:.12em;opacity:.6}
.panel.link:hover .bg{opacity:.36}

/* ── end ─────────────────────────────────────── */
/* closing screen */
.end{gap:clamp(40px,6vw,84px)}
.end footer{color:var(--mut)}
.end footer a:hover{color:var(--ink)}
.teamline{font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--mut);margin-bottom:-14px}
.team{display:flex;flex-direction:column;align-items:center;gap:10px}
.team b{font-size:clamp(26px,4.6vw,58px);font-weight:700;letter-spacing:-.04em}
.team small{font-size:20px;font-weight:500;letter-spacing:.1em;color:var(--mut)}
.team small a:hover{color:var(--ink)}
.end footer{display:flex;flex-direction:column;gap:9px;font-size:13px;font-weight:500;text-align:center}


/* ── spaces page ─────────────────────────────── */
.page{min-height:auto;padding:120px var(--pad) 80px;display:flex;flex-direction:column;align-items:center;gap:clamp(28px,5vh,56px);text-align:center}
.page h1{margin:0;font-size:clamp(28px,5vw,58px);font-weight:700;letter-spacing:-.035em;line-height:1.16;max-width:18ch;text-wrap:balance}
.page .lede{font-size:16px;color:var(--mut);max-width:46ch}
.form{width:100%;max-width:640px;display:grid;gap:14px;text-align:left}
.form .row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:560px){.form .row{grid-template-columns:1fr}}
.form label{display:block;font-size:12px;font-weight:600;color:var(--mut);margin-bottom:6px;letter-spacing:.02em}
.form input,.form select,.form textarea{
  width:100%;font:inherit;font-size:16px;font-weight:500;color:var(--ink);background:#F6F4F1;
  border:0;border-radius:12px;padding:14px 16px;
}
.form textarea{min-height:110px;resize:vertical}
.form .consent{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--mut);font-weight:500}
.form .consent input{width:auto;margin-top:3px}
.form .go{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:4px}
.status{font-size:13px;font-weight:500;color:var(--mut)}
.status.ok{color:var(--ink)}
.status.err{color:#C0392B}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* ── agents: living network + figures ────────── */
.agents{position:relative;isolation:isolate;justify-content:center;gap:clamp(30px,4.4vw,58px)}
.agents h2{max-width:none}
.agents .btn{margin-top:4px}
#net{position:absolute;inset:0;width:100%;height:100%;z-index:-1;display:block}
.figures{
  display:grid;grid-template-columns:repeat(3,auto);gap:clamp(34px,7vw,110px);
  margin:0;align-items:end;justify-content:center;
}
.figures div{display:flex;flex-direction:column;align-items:center;gap:8px}
.figures dt{
  font-size:clamp(42px,7.2vw,104px);font-weight:700;line-height:.9;
  letter-spacing:-.05em;font-variant-numeric:tabular-nums;
}
.figures dd{
  margin:0;font-size:10.5px;font-weight:600;letter-spacing:.22em;color:var(--mut);white-space:nowrap;
}
@media(max-width:760px){
  .figures{grid-template-columns:repeat(3,auto);gap:26px 22px}
  .figures dt{font-size:clamp(34px,12vw,52px)}
  .figures dd{font-size:9px;letter-spacing:.16em}
}

/* ── where you are (right edge) ──────────────── */
.dots{
  position:fixed;left:18px;top:50%;transform:translateY(-50%);z-index:40;
  display:flex;flex-direction:column;align-items:flex-start;gap:15px;
  mix-blend-mode:difference;
}
.dot{display:flex;flex-direction:row-reverse;align-items:center;gap:9px;color:#8a8a8a;padding:3px 0}
.dot .l{
  font-size:9.5px;font-weight:600;letter-spacing:.2em;white-space:nowrap;
  opacity:0;transform:translateX(-4px);transition:opacity .35s ease,transform .35s ease;
}
.dot .b{display:block;width:13px;height:1px;background:currentColor;transition:width .35s ease,background-color .35s ease}
.dot:hover{color:#fff}
.dot:hover .l{opacity:.55;transform:none}
.dot.on{color:#fff}
.dot.on .l{opacity:1;transform:none}
.dot.on .b{width:30px}
@media(max-width:820px){.dots{display:none}}
@media(prefers-reduced-motion:reduce){.dot .l,.dot .b{transition:none}}

/* ── notices (bottom of the last screen) ─────── */
.navlink{position:absolute;right:var(--pad);font-size:13px;font-weight:600;color:var(--mut)}
.navlink:hover{color:var(--ink)}
.board{width:100%;max-width:620px;text-align:left}
.board h2{
  margin:0 0 14px;font-size:11px;font-weight:700;letter-spacing:.2em;
  text-transform:uppercase;color:var(--mut);text-align:center;max-width:none;
}
.board .none{
  margin:0;padding:26px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  color:var(--mut);font-size:13px;text-align:center;
}
.posts{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}
.posts li{padding:22px 2px;border-bottom:1px solid var(--line)}
.posts time{font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--mut);font-variant-numeric:tabular-nums}
.posts h3{margin:6px 0 10px;font-size:16px;font-weight:700;letter-spacing:-.02em}
.posts .body p{margin:0 0 10px;font-size:14px;line-height:1.7;color:#3A3A3A}
.posts .body p:last-child{margin-bottom:0}


/* ── Limbot mark animation (from limbot-states-refined) ──────── */
:root{
  --spark:oklch(0.80 0.125 72);
  --spark-deep:oklch(0.70 0.14 64);
  --motion-base:200ms;
  --motion-scan-cycle:1880ms;
  --motion-loading-spin:900ms;
  --motion-found-duration:1500ms;
  --motion-error-duration:820ms;
  --motion-state-fade:var(--motion-base);
  --ease-out:cubic-bezier(.2,.8,.2,1);
  --ease-scan-decel:cubic-bezier(.15,.85,.25,1);
}
@keyframes lb-scan{
  0%{transform:rotate(0deg);animation-timing-function:var(--ease-scan-decel);}
  74%{transform:rotate(720deg);animation-timing-function:steps(1,end);}
  100%{transform:rotate(720deg);}
}
@keyframes lb-blur{
  0%{filter:blur(var(--blur-peak,0.55px));}
  60%{filter:blur(calc(var(--blur-peak,0.55px)*0.9));}
  72%{filter:blur(calc(var(--blur-peak,0.55px)*0.3));animation-timing-function:var(--ease-out);}
  74%{filter:blur(0);}
  100%{filter:blur(0);}
}
@keyframes lb-spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
@keyframes lb-blur-steady{0%,100%{filter:blur(var(--blur-peak,0.55px));}}
@keyframes lb-eye-whip{
  0%{transform:translate(0,0);animation-timing-function:cubic-bezier(.35,0,.65,1);}
  5%{transform:translate(0,-2.4px);animation-timing-function:linear;}
  70%{transform:translate(0,-2.4px);animation-timing-function:var(--ease-scan-decel);}
  74%{transform:translate(0,0);animation-timing-function:cubic-bezier(.3,0,.4,1);}
  79%{transform:translate(0,-1.0px);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  82%{transform:translate(0,0.35px);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  87%{transform:translate(0,-0.45px);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  91%{transform:translate(0,0.18px);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  95%,100%{transform:translate(0,0);}
}
@keyframes lb-eye-merge-l{
  0%{transform:translate(1.7px,0);animation-timing-function:cubic-bezier(.3,0,.6,1);}
  5%{transform:translate(0,0);animation-timing-function:linear;}
  95%{transform:translate(0,0);animation-timing-function:var(--ease-in-out);}
  100%{transform:translate(1.7px,0);}
}
@keyframes lb-eye-merge-r{
  0%{transform:translate(-1.7px,0);animation-timing-function:cubic-bezier(.3,0,.6,1);}
  5%{transform:translate(0,0);animation-timing-function:linear;}
  95%{transform:translate(0,0);animation-timing-function:var(--ease-in-out);}
  100%{transform:translate(-1.7px,0);}
}
@keyframes lb-thinking-sway{
  0%,100%{transform:rotate(-3deg);transform-origin:12px 20px;}
  50%{transform:rotate(3deg);transform-origin:12px 20px;}
}
@keyframes lb-thinking-eyes{
  0%,100%{transform:translate(-0.8px,0.4px);}
  45%,55%{transform:translate(0.8px,0.4px);}
}
@keyframes lb-thinking-blink{
  0%,20%{transform:scaleY(1);}
  22%{transform:scaleY(0.05);}
  24%{transform:scaleY(1);}
  24%,70%{transform:scaleY(1);}
  72%{transform:scaleY(0.05);}
  74%{transform:scaleY(1);}
  74%,100%{transform:scaleY(1);}
}
@keyframes lb-found-spin{
  0%{transform:translate(0,0) rotate(0deg);animation-timing-function:var(--ease-scan-decel);}
  60%{transform:translate(0,0) rotate(720deg);animation-timing-function:cubic-bezier(.3,1.6,.5,1);}
  70%{transform:translate(0,-3px) rotate(720deg);animation-timing-function:cubic-bezier(.5,0,.5,1);}
  85%{transform:translate(0,0.5px) rotate(720deg);animation-timing-function:var(--ease-out);}
  100%{transform:translate(0,0) rotate(720deg);}
}
@keyframes lb-found-blur{
  0%{filter:blur(0.55px);}
  52%{filter:blur(0.45px);}
  60%{filter:blur(0.18px);animation-timing-function:var(--ease-out);}
  66%{filter:blur(0);}
  100%{filter:blur(0);}
}
@keyframes lb-found-body {
  0%, 52% {
    d: path("M 6.34 6.34 A 8 8 0 1 0 17.66 6.34");
  }
  64%, 100% {
    d: path("M 12 10 A 5 5 0 1 0 12.01 10");
  }
}
@keyframes lb-found-eyes {
  0% {
    transform: translate(0, 0) rotate(0deg) scale(1);
    opacity: 1;
  }
  52% {
    transform: translate(0, 0) rotate(0deg) scale(1);
    opacity: 1;
  }
  65% {
    transform: translate(0, 3px) rotate(-540deg) scale(0);
    opacity: 0;
  }
  100% {
    transform: translate(0, 3px) rotate(-540deg) scale(0);
    opacity: 0;
  }
}
@keyframes lb-found-rays{
  0%,64%{opacity:0;transform:scale(0);}
  74%{opacity:1;transform:scale(1.18);animation-timing-function:var(--ease-out);}
  84%{transform:scale(.96);}
  100%{opacity:1;transform:scale(1);}
}
@keyframes lb-error-shake{
  0%{transform:translate(0,0) rotate(0deg);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  12%{transform:translate(0,1.6px) rotate(0deg);animation-timing-function:cubic-bezier(.3,0,.4,1);}
  28%{transform:translate(0,1.6px) rotate(-13deg);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  48%{transform:translate(0,1.6px) rotate(11deg);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  66%{transform:translate(0,1.5px) rotate(-6deg);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  82%{transform:translate(0,1.2px) rotate(3deg);animation-timing-function:var(--ease-out);}
  100%{transform:translate(0,0) rotate(0deg);}
}
@keyframes lb-error-eye-l{
  0%{transform:translate(0,0) scale(1,1);}
  20%{transform:translate(0.4px,0.9px) scale(0.85,0.55);}
  85%{transform:translate(0.4px,0.9px) scale(0.85,0.55);}
  100%{transform:translate(0,0) scale(1,1);}
}
@keyframes lb-error-eye-r{
  0%{transform:translate(0,0) scale(1,1);}
  20%{transform:translate(-0.4px,0.9px) scale(0.85,0.55);}
  85%{transform:translate(-0.4px,0.9px) scale(0.85,0.55);}
  100%{transform:translate(0,0) scale(1,1);}
}
.limbot{display:inline-block;vertical-align:middle;color:currentColor;
  transition:filter var(--motion-state-fade) var(--ease-out);
  transform-origin:50% 50%;transform-box:fill-box;will-change:auto;overflow:visible;}
.limbot .eyes{transform-origin:12px 12px;transform-box:view-box;}
.limbot .eye{transform-box:fill-box;transform-origin:center;}
.limbot .body-path{transform-origin:12px 12px;transition:d var(--motion-state-fade) var(--ease-out), transform var(--motion-state-fade) var(--ease-out);}
.limbot .rays{opacity:0;transform-box:view-box;transform-origin:12px 7px;}
.limbot .ray{stroke:var(--spark);stroke-width:2;}

/* DORMANT — no motion, eyes up, resting */
.limbot[data-state="dormant"]{animation:none;filter:none;}

/* IDLE — ambient scan loop */
.limbot[data-state="idle"]{animation:lb-scan var(--motion-scan-cycle) infinite,lb-blur var(--motion-scan-cycle) infinite;}
.limbot[data-state="idle"] .eyes{animation:lb-eye-whip var(--motion-scan-cycle) infinite;}
.limbot[data-state="idle"] .eye-left{animation:lb-eye-merge-l var(--motion-scan-cycle) infinite;}
.limbot[data-state="idle"] .eye-right{animation:lb-eye-merge-r var(--motion-scan-cycle) infinite;}

/* LOADING — continuous spin, eyes merged into the streak */
.limbot[data-state="loading"]{animation:lb-spin var(--motion-loading-spin) linear infinite,lb-blur-steady var(--motion-loading-spin) linear infinite;}
.limbot[data-state="loading"] .eye-left{transform:translate(1.7px,0);}
.limbot[data-state="loading"] .eye-right{transform:translate(-1.7px,0);}

/* THINKING — calm, rocking sway + side-to-side scanning eyes with blinks */
.limbot[data-state="thinking"]{animation:lb-thinking-sway 2200ms ease-in-out infinite;}
.limbot[data-state="thinking"] .eyes{animation:lb-thinking-eyes 2200ms ease-in-out infinite;}
.limbot[data-state="thinking"] .eye{animation:lb-thinking-blink 2200ms linear infinite;}

/* FOUND — one-shot: fast spin → hard decel to top → lock-on hop → SPARK burst (v2). */
.limbot[data-state="found"]{animation:lb-found-spin var(--motion-found-duration) 1 forwards,lb-found-blur var(--motion-found-duration) linear 1 forwards;}
.limbot[data-state="found"] .body-path{animation:lb-found-body var(--motion-found-duration) 1 forwards;}
.limbot[data-state="found"] .eyes{animation:lb-found-eyes var(--motion-found-duration) 1 forwards;}
.limbot[data-state="found"] .rays{animation:lb-found-rays var(--motion-found-duration) 1 forwards;}

/* ERROR — one-shot: sad slump + damped headshake + squinted eyes */
.limbot[data-state="error"]{animation:lb-error-shake var(--motion-error-duration) ease-in-out 1 forwards;}
.limbot[data-state="error"] .eye-left{animation:lb-error-eye-l var(--motion-error-duration) ease-in-out 1 forwards;}
.limbot[data-state="error"] .eye-right{animation:lb-error-eye-r var(--motion-error-duration) ease-in-out 1 forwards;}

/* Disable blur filters, blur animations, and will-change layer promotion on small/medium SVGs (widths 76, 64, 40, 24, 18) to prevent pixelation/blurriness */
.limbot[data-size="nav"],
.limbot[width="76"],
.limbot[width="64"],
.limbot[width="48"],
.limbot[width="40"],
.limbot[width="24"],
.limbot[width="18"] {
  will-change: auto !important;
  filter: none !important;
}
.limbot[data-size="nav"][data-state="found"],
.limbot[width="76"][data-state="found"],
.limbot[width="64"][data-state="found"],
.limbot[width="48"][data-state="found"],
.limbot[width="40"][data-state="found"],
.limbot[width="24"][data-state="found"],
.limbot[width="18"][data-state="found"] {
  animation: lb-found-spin var(--motion-found-duration) 1 forwards !important;
}
.limbot[data-size="nav"][data-state="idle"],
.limbot[width="76"][data-state="idle"],
.limbot[width="64"][data-state="idle"],
.limbot[width="48"][data-state="idle"],
.limbot[width="40"][data-state="idle"],
.limbot[width="24"][data-state="idle"],
.limbot[width="18"][data-state="idle"] {
  animation: lb-scan var(--motion-scan-cycle) infinite !important;
}

.limbot[data-size="nav"][data-state="loading"],
.limbot[width="76"][data-state="loading"],
.limbot[width="64"][data-state="loading"],
.limbot[width="48"][data-state="loading"],
.limbot[width="40"][data-state="loading"],
.limbot[width="24"][data-state="loading"],
.limbot[width="18"][data-state="loading"] {
  animation: lb-spin var(--motion-loading-spin) linear infinite !important;
}

/* ── keyframes ── */
@keyframes lb-scan{
  0%{transform:rotate(0deg);animation-timing-function:var(--ease-scan-decel);}
  74%{transform:rotate(720deg);animation-timing-function:steps(1,end);}
  100%{transform:rotate(720deg);}
}
@keyframes lb-blur{
  0%{filter:blur(var(--blur-peak,0.55px));}
  60%{filter:blur(calc(var(--blur-peak,0.55px)*0.9));}
  72%{filter:blur(calc(var(--blur-peak,0.55px)*0.3));animation-timing-function:var(--ease-out);}
  74%{filter:blur(0);}
  100%{filter:blur(0);}
}
@keyframes lb-spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
@keyframes lb-blur-steady{0%,100%{filter:blur(var(--blur-peak,0.55px));}}
@keyframes lb-eye-whip{
  0%{transform:translate(0,0);animation-timing-function:cubic-bezier(.35,0,.65,1);}
  5%{transform:translate(0,-2.4px);animation-timing-function:linear;}
  70%{transform:translate(0,-2.4px);animation-timing-function:var(--ease-scan-decel);}
  74%{transform:translate(0,0);animation-timing-function:cubic-bezier(.3,0,.4,1);}
  79%{transform:translate(0,-1.0px);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  82%{transform:translate(0,0.35px);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  87%{transform:translate(0,-0.45px);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  91%{transform:translate(0,0.18px);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  95%,100%{transform:translate(0,0);}
}
@keyframes lb-eye-merge-l{
  0%{transform:translate(1.7px,0);animation-timing-function:cubic-bezier(.3,0,.6,1);}
  5%{transform:translate(0,0);animation-timing-function:linear;}
  95%{transform:translate(0,0);animation-timing-function:var(--ease-in-out);}
  100%{transform:translate(1.7px,0);}
}
@keyframes lb-eye-merge-r{
  0%{transform:translate(-1.7px,0);animation-timing-function:cubic-bezier(.3,0,.6,1);}
  5%{transform:translate(0,0);animation-timing-function:linear;}
  95%{transform:translate(0,0);animation-timing-function:var(--ease-in-out);}
  100%{transform:translate(-1.7px,0);}
}
@keyframes lb-thinking-sway{
  0%,100%{transform:rotate(-3deg);transform-origin:12px 20px;}
  50%{transform:rotate(3deg);transform-origin:12px 20px;}
}
@keyframes lb-thinking-eyes{
  0%,100%{transform:translate(-0.8px,0.4px);}
  45%,55%{transform:translate(0.8px,0.4px);}
}
@keyframes lb-thinking-blink{
  0%,20%{transform:scaleY(1);}
  22%{transform:scaleY(0.05);}
  24%{transform:scaleY(1);}
  24%,70%{transform:scaleY(1);}
  72%{transform:scaleY(0.05);}
  74%{transform:scaleY(1);}
  74%,100%{transform:scaleY(1);}
}
/* FOUND spin — 2 revs + decel → arrive top → little lock-on hop → settle */
@keyframes lb-found-spin{
  0%{transform:translate(0,0) rotate(0deg);animation-timing-function:var(--ease-scan-decel);}
  60%{transform:translate(0,0) rotate(720deg);animation-timing-function:cubic-bezier(.3,1.6,.5,1);}
  70%{transform:translate(0,-3px) rotate(720deg);animation-timing-function:cubic-bezier(.5,0,.5,1);}
  85%{transform:translate(0,0.5px) rotate(720deg);animation-timing-function:var(--ease-out);}
  100%{transform:translate(0,0) rotate(720deg);}
}
@keyframes lb-found-blur{
  0%{filter:blur(0.55px);}
  52%{filter:blur(0.45px);}
  60%{filter:blur(0.18px);animation-timing-function:var(--ease-out);}
  66%{filter:blur(0);}
  100%{filter:blur(0);}
}
/* FOUND body morph — stays open during spin, then seals and squashes to center (12, 15) */
@keyframes lb-found-body {
  0%, 52% {
    d: path("M 6.34 6.34 A 8 8 0 1 0 17.66 6.34");
  }
  64%, 100% {
    d: path("M 12 10 A 5 5 0 1 0 12.01 10");
  }
}
/* FOUND eyes spiral — merged in spin, then spirals down to descending center and vanishes */
@keyframes lb-found-eyes {
  0% {
    transform: translate(0, 0) rotate(0deg) scale(1);
    opacity: 1;
  }
  52% {
    transform: translate(0, 0) rotate(0deg) scale(1);
    opacity: 1;
  }
  65% {
    transform: translate(0, 3px) rotate(-540deg) scale(0);
    opacity: 0;
  }
  100% {
    transform: translate(0, 3px) rotate(-540deg) scale(0);
    opacity: 0;
  }
}
/* FOUND rays — the v2 spark: burst out of the top, overshoot, hold (parks visible) */
@keyframes lb-found-rays{
  0%,64%{opacity:0;transform:scale(0);}
  74%{opacity:1;transform:scale(1.18);animation-timing-function:var(--ease-out);}
  84%{transform:scale(.96);}
  100%{opacity:1;transform:scale(1);}
}
/* ERROR — sad slump + damped headshake */
@keyframes lb-error-shake{
  0%{transform:translate(0,0) rotate(0deg);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  12%{transform:translate(0,1.6px) rotate(0deg);animation-timing-function:cubic-bezier(.3,0,.4,1);}
  28%{transform:translate(0,1.6px) rotate(-13deg);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  48%{transform:translate(0,1.6px) rotate(11deg);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  66%{transform:translate(0,1.5px) rotate(-6deg);animation-timing-function:cubic-bezier(.4,0,.6,1);}
  82%{transform:translate(0,1.2px) rotate(3deg);animation-timing-function:var(--ease-out);}
  100%{transform:translate(0,0) rotate(0deg);}
}
@keyframes lb-error-eye-l{
  0%{transform:translate(0,0) scale(1,1);}
  20%{transform:translate(0.4px,0.9px) scale(0.85,0.55);}
  85%{transform:translate(0.4px,0.9px) scale(0.85,0.55);}
  100%{transform:translate(0,0) scale(1,1);}
}
@keyframes lb-error-eye-r{
  0%{transform:translate(0,0) scale(1,1);}
  20%{transform:translate(-0.4px,0.9px) scale(0.85,0.55);}
  85%{transform:translate(-0.4px,0.9px) scale(0.85,0.55);}
  100%{transform:translate(0,0) scale(1,1);}
}
@media(prefers-reduced-motion:reduce){
  .limbot[data-state]{animation:none !important;filter:none !important;}
  .limbot .eye-left,.limbot .eye-right,.limbot .eyes{transform:translate(0,0) !important;}
  .limbot[data-state="found"] .rays{opacity:1;}
}

/* our placement: big, centred, on the dark hero */
.hero .limbot{width:clamp(120px,15vw,190px);height:auto;color:var(--onDark)}
