/* 11 s: weave → simultaneous T/Y drawing → light sweep → hold → dissolve. */
.ty-art{--ty-cycle:11s;--ty-grid:#7aa8ef35;--ty-t:#3977ff;--ty-y:#b4ceff;--ty-edge:#c3ddff;--ty-shadow:#3261a96b;--ty-energy:#a7d4ff;isolation:isolate}
.ty-stage,.ty-grid-svg,.ty-mark-svg,.ty-aura{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.ty-stage{transform-origin:50% 48%;animation:ty-scene-finish var(--ty-cycle) linear infinite}
.ty-art .ty-animate{animation-play-state:paused}
.ty-art.is-running .ty-animate{animation-play-state:running}
.ty-grid-svg{overflow:visible}
.ty-thread{fill:none;stroke:var(--ty-grid);stroke-width:.8;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:1;animation:ty-weave var(--ty-cycle) cubic-bezier(.22,.65,.3,1) infinite;animation-delay:calc(var(--thread)*.07s)}
.ty-intersection{fill:var(--ty-energy);opacity:0;animation:ty-node-light var(--ty-cycle) linear infinite;animation-delay:calc(var(--spark)*.035s)}
.ty-mark-svg{overflow:visible}
.ty-ink{fill:none;stroke:#fff;stroke-width:76;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:ty-write-bar var(--ty-cycle) cubic-bezier(.4,0,.2,1) infinite}
.ty-ink-stem{animation-name:ty-write-stem}
.ty-fill{opacity:0;animation:ty-letter-reveal var(--ty-cycle) linear infinite}
.ty-letter-t{fill:var(--ty-t)}.ty-letter-y{fill:var(--ty-y)}
.ty-shadow{fill:var(--ty-shadow);opacity:0;animation:ty-letter-reveal var(--ty-cycle) linear infinite}
.ty-outline{fill:none;stroke:var(--ty-edge);stroke-width:1.1;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:1;opacity:0;animation:ty-outline-draw var(--ty-cycle) linear infinite}
.ty-sheen{opacity:0;animation:ty-light-sweep var(--ty-cycle) cubic-bezier(.32,0,.22,1) infinite}
.ty-energy-front{fill:none;stroke:var(--ty-energy);stroke-width:1.4;vector-effect:non-scaling-stroke;opacity:0;animation:ty-grid-charge var(--ty-cycle) cubic-bezier(.3,0,.3,1) infinite}
.ty-arrow{fill:none;stroke:var(--ty-edge);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;opacity:0;animation:ty-arrow-charge var(--ty-cycle) linear infinite}
.ty-aura{background:radial-gradient(ellipse at 52% 48%,#6ba5ff55,transparent 67%);mix-blend-mode:screen;opacity:0;animation:ty-completion-aura var(--ty-cycle) linear infinite}
.ty-art :is(.about-art-top,.about-art-bottom,.about-location){z-index:2}
/* The unenhanced page retains a complete static brand image. */
.ty-art:not([data-motion-ready]) .ty-animate{animation:none}
.ty-art:not([data-motion-ready]) :is(.ty-stage,.ty-fill,.ty-shadow){opacity:1}
.ty-art:not([data-motion-ready]) .ty-stage{transform:none}
.ty-art:not([data-motion-ready]) .ty-thread{stroke-dashoffset:0;opacity:1}
.ty-art:not([data-motion-ready]) .ty-ink{stroke-dashoffset:0}
html[data-theme="light"] .ty-art{--ty-grid:#4376bd2b;--ty-t:#2c69eb;--ty-y:#719cde;--ty-edge:#487ec7;--ty-shadow:#729bdb40;--ty-energy:#3279dc}
html[data-theme="light"] .ty-aura{mix-blend-mode:multiply;background:radial-gradient(ellipse at 52% 48%,#77a6f62e,transparent 67%)}
@keyframes ty-weave{0%{stroke-dashoffset:1;opacity:0}3%{opacity:1}23%,80%{stroke-dashoffset:0;opacity:1}89%,100%{stroke-dashoffset:0;opacity:0}}
@keyframes ty-write-bar{0%,22%{stroke-dashoffset:1}32%,92%{stroke-dashoffset:0}100%{stroke-dashoffset:1}}
@keyframes ty-write-stem{0%,28%{stroke-dashoffset:1}46%,92%{stroke-dashoffset:0}100%{stroke-dashoffset:1}}
@keyframes ty-letter-reveal{0%,21%{opacity:0}23%,84%{opacity:1}92%,100%{opacity:0}}
@keyframes ty-outline-draw{0%,19%{stroke-dashoffset:1;opacity:0}22%{opacity:.7}38%{stroke-dashoffset:0;opacity:.7}50%,100%{stroke-dashoffset:0;opacity:0}}
@keyframes ty-light-sweep{0%,52%{opacity:0;transform:translateX(0)}53%{opacity:1;transform:translateX(0)}67%{opacity:1;transform:translateX(880px)}68%,100%{opacity:0;transform:translateX(880px)}}
@keyframes ty-grid-charge{0%,53%{opacity:0;transform:translateY(0)}55%{opacity:.85;transform:translateY(0)}70%{opacity:.7;transform:translateY(475px)}72%,100%{opacity:0;transform:translateY(475px)}}
@keyframes ty-node-light{0%,55%{opacity:0}60%{opacity:1}66%{opacity:.25}72%,100%{opacity:0}}
@keyframes ty-arrow-charge{0%,42%{opacity:0}48%{opacity:.65}60%{opacity:1}76%,84%{opacity:.65}92%,100%{opacity:0}}
@keyframes ty-completion-aura{0%,53%{opacity:0}61%{opacity:.7}75%,100%{opacity:0}}
@keyframes ty-scene-finish{0%{opacity:0;transform:scale(1)}3%,55%{opacity:1;transform:scale(1)}61%{opacity:1;transform:scale(1.012)}70%,84%{opacity:1;transform:scale(1)}94%,100%{opacity:0;transform:scale(1)}}
@media(max-width:700px){.ty-art .about-art-bottom{font-size:15px;bottom:58px;line-height:1.7;max-width:calc(100% - 44px)}.ty-art .about-location{bottom:16px;right:20px}}
@media(prefers-reduced-motion:reduce){.ty-art .ty-animate{animation:none!important}.ty-art :is(.ty-stage,.ty-fill){opacity:1;transform:none}.ty-art .ty-shadow{opacity:1}.ty-art .ty-thread{stroke-dashoffset:0;opacity:1}.ty-art .ty-ink{stroke-dashoffset:0}.ty-art :is(.ty-sheen,.ty-energy-front,.ty-intersection,.ty-aura){display:none}.ty-art .ty-arrow{opacity:.65}}
