/* The five practice-area arts, as tiles and heroes (site v3, 2026-09-24). Canvas art
   classes t0 (strategy and governance) to t4 (technology): every piece rests at its final
   frame and the keyframes say where it comes from, so reduced motion (site.css) shows it
   finished. Wrap each art container in .site-reveal so it plays once, on scroll into view.
   Loaded by the homepage and every practice page. */
@keyframes t0-1{from{transform:translate(-34px,-40px) rotate(30deg);opacity:.35}}
.t0-1{transform-box:fill-box;transform-origin:50% 50%;animation:t0-1 1.5s 0.5s cubic-bezier(.2,.7,.2,1) both}
@keyframes t0-2{from{transform:translate(22px,38px) rotate(-24deg);opacity:.35}}
.t0-2{transform-box:fill-box;transform-origin:50% 50%;animation:t0-2 1.5s 0.57s cubic-bezier(.2,.7,.2,1) both}
@keyframes t0-3{from{transform:translate(-12px,-46px) rotate(38deg);opacity:.35}}
.t0-3{transform-box:fill-box;transform-origin:50% 50%;animation:t0-3 1.5s 0.64s cubic-bezier(.2,.7,.2,1) both}
@keyframes t0-4{from{transform:translate(30px,30px) rotate(-8deg);opacity:.35}}
.t0-4{transform-box:fill-box;transform-origin:50% 50%;animation:t0-4 1.5s 0.71s cubic-bezier(.2,.7,.2,1) both}
@keyframes t0-5{from{transform:translate(-26px,-34px) rotate(-30deg);opacity:.35}}
.t0-5{transform-box:fill-box;transform-origin:50% 50%;animation:t0-5 1.5s 0.78s cubic-bezier(.2,.7,.2,1) both}
@keyframes t0-6{from{transform:translate(16px,44px) rotate(22deg);opacity:.35}}
.t0-6{transform-box:fill-box;transform-origin:50% 50%;animation:t0-6 1.5s 0.85s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-1{from{transform:scaleY(0)}}
.t1-1{transform-box:fill-box;transform-origin:50% 100%;animation:t1-1 0.8s 0.7s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-2{from{transform:scaleY(0);opacity:0}}
.t1-2{transform-box:fill-box;transform-origin:50% 100%;animation:t1-2 0.45s 1.3s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-3{from{transform:scaleY(0);opacity:0}}
.t1-3{transform-box:fill-box;transform-origin:50% 100%;animation:t1-3 0.45s 1.335s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-4{from{transform:scaleY(0);opacity:0}}
.t1-4{transform-box:fill-box;transform-origin:50% 100%;animation:t1-4 0.45s 1.37s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-5{from{transform:scaleY(0);opacity:0}}
.t1-5{transform-box:fill-box;transform-origin:50% 100%;animation:t1-5 0.45s 1.405s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-6{from{transform:scaleY(0);opacity:0}}
.t1-6{transform-box:fill-box;transform-origin:50% 100%;animation:t1-6 0.45s 1.44s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-7{from{transform:scaleY(0);opacity:0}}
.t1-7{transform-box:fill-box;transform-origin:50% 100%;animation:t1-7 0.45s 1.475s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-8{from{transform:scaleY(0);opacity:0}}
.t1-8{transform-box:fill-box;transform-origin:50% 100%;animation:t1-8 0.45s 1.51s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-9{from{transform:scaleY(0);opacity:0}}
.t1-9{transform-box:fill-box;transform-origin:50% 100%;animation:t1-9 0.45s 1.545s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-10{from{transform:scaleY(0);opacity:0}}
.t1-10{transform-box:fill-box;transform-origin:50% 100%;animation:t1-10 0.45s 1.58s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-11{from{transform:scaleY(0);opacity:0}}
.t1-11{transform-box:fill-box;transform-origin:50% 100%;animation:t1-11 0.45s 1.615s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-12{from{transform:scaleY(0);opacity:0}}
.t1-12{transform-box:fill-box;transform-origin:50% 100%;animation:t1-12 0.45s 1.65s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-13{from{transform:scaleY(0);opacity:0}}
.t1-13{transform-box:fill-box;transform-origin:50% 100%;animation:t1-13 0.45s 1.685s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-14{from{transform:scaleY(0);opacity:0}}
.t1-14{transform-box:fill-box;transform-origin:50% 100%;animation:t1-14 0.45s 1.72s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-15{from{transform:scaleY(0);opacity:0}}
.t1-15{transform-box:fill-box;transform-origin:50% 100%;animation:t1-15 0.45s 1.755s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-16{from{transform:scaleY(0);opacity:0}}
.t1-16{transform-box:fill-box;transform-origin:50% 100%;animation:t1-16 0.45s 1.79s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-17{from{transform:scaleY(0);opacity:0}}
.t1-17{transform-box:fill-box;transform-origin:50% 100%;animation:t1-17 0.45s 1.825s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-18{from{transform:scaleY(0);opacity:0}}
.t1-18{transform-box:fill-box;transform-origin:50% 100%;animation:t1-18 0.45s 1.86s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-19{from{transform:scaleY(0);opacity:0}}
.t1-19{transform-box:fill-box;transform-origin:50% 100%;animation:t1-19 0.45s 1.895s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-20{from{transform:scaleY(0);opacity:0}}
.t1-20{transform-box:fill-box;transform-origin:50% 100%;animation:t1-20 0.45s 1.93s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-21{from{transform:scaleY(0);opacity:0}}
.t1-21{transform-box:fill-box;transform-origin:50% 100%;animation:t1-21 0.45s 1.965s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-22{from{transform:scaleY(0);opacity:0}}
.t1-22{transform-box:fill-box;transform-origin:50% 100%;animation:t1-22 0.45s 2.0s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-23{from{transform:scaleY(0);opacity:0}}
.t1-23{transform-box:fill-box;transform-origin:50% 100%;animation:t1-23 0.45s 2.035s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-24{from{transform:scaleY(0);opacity:0}}
.t1-24{transform-box:fill-box;transform-origin:50% 100%;animation:t1-24 0.45s 2.07s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-25{from{transform:scaleY(0);opacity:0}}
.t1-25{transform-box:fill-box;transform-origin:50% 100%;animation:t1-25 0.45s 2.105s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-26{from{transform:scaleY(0);opacity:0}}
.t1-26{transform-box:fill-box;transform-origin:50% 100%;animation:t1-26 0.45s 2.14s cubic-bezier(.2,.7,.2,1) both}
@keyframes t1-27{from{transform:scaleY(0);opacity:0}}
.t1-27{transform-box:fill-box;transform-origin:50% 100%;animation:t1-27 0.45s 2.175s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-1{from{transform:translateX(-60px);opacity:0}}
.t2-1{transform-box:fill-box;transform-origin:50% 50%;animation:t2-1 0.9s 0.85s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-2{from{transform:translateX(-60px);opacity:0}}
.t2-2{transform-box:fill-box;transform-origin:50% 50%;animation:t2-2 0.9s 0.93s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-3{from{transform:translateX(-60px);opacity:0}}
.t2-3{transform-box:fill-box;transform-origin:50% 50%;animation:t2-3 0.9s 1.01s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-4{from{transform:translateX(-60px);opacity:0}}
.t2-4{transform-box:fill-box;transform-origin:50% 50%;animation:t2-4 0.9s 1.09s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-5{from{transform:translateX(-60px);opacity:0}}
.t2-5{transform-box:fill-box;transform-origin:50% 50%;animation:t2-5 0.9s 1.17s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-6{from{transform:translateX(-60px);opacity:0}}
.t2-6{transform-box:fill-box;transform-origin:50% 50%;animation:t2-6 0.9s 1.25s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-7{from{opacity:.15}}
.t2-7{transform-box:fill-box;transform-origin:50% 50%;animation:t2-7 0.5s 1.6s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-8{from{transform:translateX(-70px) scaleY(.2);opacity:0}}
.t2-8{transform-box:fill-box;transform-origin:50% 50%;animation:t2-8 0.8s 1.85s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-9{from{transform:translateX(-100px) scaleY(.2);opacity:0}}
.t2-9{transform-box:fill-box;transform-origin:50% 50%;animation:t2-9 0.8s 1.99s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-10{from{transform:translateX(-130px) scaleY(.2);opacity:0}}
.t2-10{transform-box:fill-box;transform-origin:50% 50%;animation:t2-10 0.8s 2.13s cubic-bezier(.2,.7,.2,1) both}
@keyframes t2-11{from{transform:translateX(-160px) scaleY(.2);opacity:0}}
.t2-11{transform-box:fill-box;transform-origin:50% 50%;animation:t2-11 0.8s 2.27s cubic-bezier(.2,.7,.2,1) both}
@keyframes t3-1{from{transform:scaleX(0)}}
.t3-1{transform-box:fill-box;transform-origin:0% 50%;animation:t3-1 0.6s 0.55s cubic-bezier(.2,.7,.2,1) both}
@keyframes t3-2{from{transform:scaleY(0)}}
.t3-2{transform-box:fill-box;transform-origin:50% 100%;animation:t3-2 0.8s 0.85s cubic-bezier(.2,.7,.2,1) both}
@keyframes t3-3{from{transform:scaleY(0)}}
.t3-3{transform-box:fill-box;transform-origin:50% 100%;animation:t3-3 0.8s 0.99s cubic-bezier(.2,.7,.2,1) both}
@keyframes t3-4{from{transform:scaleY(0)}}
.t3-4{transform-box:fill-box;transform-origin:50% 100%;animation:t3-4 0.8s 1.13s cubic-bezier(.2,.7,.2,1) both}
@keyframes t3-5{from{transform:scaleY(0)}}
.t3-5{transform-box:fill-box;transform-origin:50% 100%;animation:t3-5 0.8s 1.27s cubic-bezier(.2,.7,.2,1) both}
@keyframes t3-6{from{transform:scaleY(0)}}
.t3-6{transform-box:fill-box;transform-origin:50% 100%;animation:t3-6 0.8s 1.41s cubic-bezier(.2,.7,.2,1) both}
@keyframes t3-7{from{transform:scaleY(0)}}
.t3-7{transform-box:fill-box;transform-origin:50% 100%;animation:t3-7 0.8s 1.55s cubic-bezier(.2,.7,.2,1) both}
@keyframes t4-1{from{transform:translateY(-30px)}}
.t4-1{transform-box:fill-box;transform-origin:50% 50%;animation:t4-1 1.0s 0.85s cubic-bezier(.2,.7,.2,1) both}
@keyframes t4-2{from{transform:translateY(22px)}}
.t4-2{transform-box:fill-box;transform-origin:50% 50%;animation:t4-2 1.0s 1.09s cubic-bezier(.2,.7,.2,1) both}
@keyframes t4-3{from{transform:scaleX(0)}}
.t4-3{transform-box:fill-box;transform-origin:0% 50%;animation:t4-3 0.7s 1.85s cubic-bezier(.2,.7,.2,1) both}
@keyframes t4-4{from{opacity:0}}
.t4-4{transform-box:fill-box;transform-origin:50% 50%;animation:t4-4 0.4s 2.3s cubic-bezier(.2,.7,.2,1) both}
@keyframes t4-5{from{opacity:0}}
.t4-5{transform-box:fill-box;transform-origin:50% 50%;animation:t4-5 0.4s 2.3s cubic-bezier(.2,.7,.2,1) both}
@keyframes t4-6{from{opacity:0}}
.t4-6{transform-box:fill-box;transform-origin:50% 50%;animation:t4-6 0.4s 2.3s cubic-bezier(.2,.7,.2,1) both}
