/* ═══ PAGE TRANSITION — the page reduces to its digits ═══════════════════════
   2026-09-22. Click a project: its frame grows into the case page's cover while
   the rest of the page breaks into the site's own digits — tinted into the blue
   ramp — and drains away from where you clicked. Back runs it the other way;
   See-also cards on the case pages do the same between projects. The nav
   island does not dissolve: it is its own group and simply stays.

   Native cross-document View Transitions: Chrome/Edge 126+, Safari 18.2+.
   Any other browser gets an ordinary page load, and so does reduced-motion.
   BOTH documents must opt in, and every pseudo-element below is styled by the
   page being ARRIVED AT — which is why this one file is linked, render-blocking,
   by site.html and all five case pages. vt.js names the element that flies and
   hands the drain origin to the next page.

   KNOBS
     --vt-dur    the whole transition
     --vt-tint   the colour the page takes as it turns to digits
     vt-old      30% = fully digits · 40% = drain starts · 100% = gone
     vt-new      when the arriving page starts to show
     the cubic-bezier on the case-hero group = how the frame flies

   The digit tile: 24x24 cells of 10 CSS px (the hero's cell), IBM Plex Mono
   600 at 10px, digits from a seeded LCG (seed 20260922), rendered at 2x and
   stored as lossless WebP. Inlined so it can never arrive late — a mask that
   is still loading renders as NOTHING, and the page would vanish instead of
   turning to digits. */

@view-transition { navigation: auto; }
@media (prefers-reduced-motion: reduce){ @view-transition { navigation: none; } }

@property --vt-solid { syntax: '<number>'; inherits: false; initial-value: 1; }
@property --vt-drain { syntax: '<length>'; inherits: false; initial-value: 0px; }

:root{
  --vt-dur: 1100ms;
  --vt-x: 50%;
  --vt-y: 50%;
  /* same functions, same order as the vt-old stops — see the note there */
  /* 2026-10-23, Jesse: leaving a page full of white designs flashed the screen to WHITE
     digits — sepia cannot tint pure white. brightness(.6) after grayscale dims white to
     grey first. .6 landed on a bright sky blue (#74d9ff) that made headlines pop
     (Jesse, same day); .4 lands white on #4e91ff, the site's own blue; hue 175 -> 185 keeps the mids
     in the site blues (measured with the filter matrices). Was: grayscale(1) sepia(1)
     hue-rotate(175deg) saturate(5) brightness(1.15). */
  --vt-tint: grayscale(1) brightness(.4) sepia(1) hue-rotate(185deg) saturate(5) brightness(1.15);
  --vt-digits: url("data:image/webp;base64,UklGRhQ1AABXRUJQVlA4TAc1AAAv38F3ED+loG0bJvxJ7/RgmP/5JxCgDCkobNu2Sbon74DMAiAIgLeul9oHn2YAoGKkBg4IADXP31MLaB16KFHM4EwhxHCbrcNMIserdM8dIKwY8l6q6zmAArltI0ESlX/Y01Ndu3v3j4gJ8F5BFVSZpjrV6XloWWcTk6FB5QWlZT3l5GYozV3ss+YxVMmbVger+kY+83e6M/tGW27cbBpZeFrycumga6f/14cqUbtt25QkncpIs6wo27Zdbdu2bdtddiIi3vqfGfHu3edEf+tRY0T0XxLbRpIkOX97KlyFPmaE3Nx+0m0kSZAknW6v0uvPHcbbIvu4BiL671uSJEuSJNuy+AEV0b43ATMr+5v9j7zWb9y4SCDZOJjOxsSakszw8Sfu29GZS+/Oh+/b2mnSHLlMWX73PSubQ+TngGeO6MVsYJJkXiZ92x66Z12n2H3aSzxf3bN73uG9Dz+8d9gklvFOpWuUz3Hgp0xeAHgsmU4Sqy8F834LSO1UOnfVAcZ2SXNksmwcYGK5mTKHO7PaSzpLx2BiUzp3tPQyulHrvu2lna/u2TvvSwVA8bzGst2pdI3yt3gtn2ME5ZcyyrbkZSuhFFXnHLakKPEtNmkOd2Z/Vhfw90ia+WQZb7HUfdtLPF/cszKvxMcdGst2p5lrpOVzsllbUPwo5LMNGzbsgaKSyJc0bpu+YxS+Sj1INuCzbffW4T1xjiQzH/UPfASfmjSHO7O3F5s2Ad91ZB50G/DGjHmfwZ9S93Ev7Xxxz7557Qy8MTj4BpzRWLY79V4js83wXiazanDsFSGvmNnLuZ6fXmNmj8C/iYx83PjLzN6Bf5xz9BZQMatA0SPNAc/s7eU3+CX3VLkE6h1mA4DUfd1LOl/bs3Neu07RbdZdcF1j2e7UeY3MKje4Oi+TOdd53rKpXLhwh1nHBCyz7Poe3k/fgYPNGwR+ds6xGi6ZmV2CldIc8MxSLxnA2tD0aekchAtmZuNQLbuve0nna3t2zmvvwQazDfCexrLdqe8atd6OG+bmuup/2Fr5pBeA5zMgXZ9+V4PxaXnAi/Csc4798EXl8OHKF7BPmgOe2dnLj/DVGNTuT75qAmaZrQOWlt3X2dIdtT0757WlNerffFOnsVxjme7Ufb8sho9N6ErOWci9ph4GuDYnz/ch1Pucc9wP7xyDY+/A/dIc8MzOXiYorccT6ajBxPsf14HOsvs6W7mjuGfnvGZzawC1WSaxjHfqvV/OUeuPyzKoVzIZnGgA4wtyeRvY6p3j7snsgl2TuUuaA57Z10sfcOnuW89AkbqHjgBQwJjUfZ0t3VHas3veAwUUzXG3m8Qy3qkvd8Axi8vn8Jbl16p/4I/Mc8X3UOwyb/bAtzZ7tn0Lu6U54Jl9vawFqq2v4dYmv0jxd63286fwidR9nS3dUdmzf94rcGdn551wxSSW8U59+ZzEetef/gLm5io1M1sJRTLTLsDYUnNnOVxvfenKEmkOeGZfL7Ng1MzsPOzPDbKwgDli9222dkdhz+55F8ENM7MbsEhj2e40LB/48zj8ngG5s7F1MkehkXytMg7/DJk/nXXoa3l4q1WkOeCZnb0UMNusp4B5mQxcho/U7tts7Y5+79k/7xaod7aOs0Vj2e7UlzUnmusBuHJiZSLVBx988Df45cEHN6QzCnvSuR0a7x14cRz+SqUOjReem1zP9jvneBPO7NhxBl4T53Bn9vViX8GZo/t/hdHci9HLcLFT7T7NFs/X9uybtxv4Ztu2b4BujWW7U//9IjyXHae8Pk9mN4xlaHsulb8muCQVEmuBc44Zo60ko9PEOdyZfb3Y1HoJeVM6q8dgdKaZtd2n2dr54p6d8z5SxntEZJnuVLxfhPyQzBExP8MzOdzu9xvN/LJc7LnqnWPotwKKP4bVOdyZH+7FZvzazIXMK5/TwF8t39ppuy+ztfPVPT+d9+SNZm6cVFmWO83/eLny17l4+5LO9kF3rFjZoc0Bz0z+KqvW9ra5l/S3m3dw/fpBjWW804/yX+ObFJdJdaPcDlVXWVGaKTFLjpfYQWKZ1NkSW+bYLc3TKgwa3H3judSuFGZ4540ja7tqfJPmMmnOk9uhWkZpvS4xa46X5lo1lkmcjbFlan+FoWoMmtt947nEriRmd+dttraryDdpLpPkPLkdqq2JaMya46W5Vo1l0mZL55PsVmGo4l7c7hvPpXUlMcM7b7O1XTXOSHOZJOfJ7VAdgntuaa6lGrPmeGmuVWOZtNkcWyZ2UBiquBe3+8ZzaV1pzO7OGzPWdhU5I81lUpwnt0N1J5SeZ0VmyfESO0gskzYbZMukDiRPK+7F7b4xXlJXKjO78zZb21XkmzSXSXGe3A7VkzSsb92iyWjMmjMmdtBYpjQbZMukDiRPK+4F7j4xXkJXuoPm7jzN1nYVOSPNZVKcJ7dD9TrjdxfQeMhEZsnxEjtoLFObrZzPsVuaQxWZNrj7xHhJXakOmrvzNFvbVeSMNJdJcp68DtXHlF5MPSwyS46Xv4NE2mzlfI7dEh2qthe4+8J4iV2JzOzOG0fWdhU5I83d0pwnp0P1Ofxw+IHLUEzRfCnJ8RI7SJ84W/kcu6U6VIlBg7tPjJfYlcbM7jzOlnYVOSPNZdKcJ59DZda/1FoAWaIwi86Y6DwlhkWcrXyO3VIdqrQXuPvEeIldadeN3Xmcre2qcUaBZZL9MMmhSqZzSslz2K4xJ8Yr7iB9cbb2OXarMVRpL3D3jedqu2r35u68zdZ2pXlGgWWS/TDNoUqVev3VycwHRjTmxHjFHZSvzub4sLaDxlClvcDdN56r7ardm7vzNlvj5jTPqLFMmvMkOVSZrwt8vfvRa3DFNObEeLUdRJYpzeb4sLiDxlC1vbjdN56r7SqdGd55my3dpeYZVZYpuUrP3V6H6qky8mrNl2qMV9tBZJnSbJAPK/uLDFXcC9t947nafbQzszuPs7VdaZ5R+6qKG+V3qI5fb+bsUs2XioxX2kFlmcpskg8r+2sMVd2L2n3judp9tDO7O2+ztV1JftOpv1mbV3dFOmNlB9vZtgzVlmlrPJfb1Xa2uKubgJfmPCVeKnAvqThfqpyPMmPpLE6biu2v7qCd5Rzntt1fZcaU/ZsaLxW3l1ScL9XOB5mxdBanTeX2F3fQznKOc9vurzFjkvNUeam4vaTifKl2PseMtbM4bSq3v7aDdpZ7nNu1/RVVxXmqvJTEF+gexXlfjhlrZ3HaVG5/bQftLPc4t+3+GjOmOE+ZlwrbSyrOl2rnY8xYPYvTpmL7aztoZznIuU3315gxxXnKvFTYXlJxvlQ8n2LG6lmcNhXbX9tBPMs9zm27v8SMSc5T5aWYlpTjpUQ+xYzVszhtKra/tgOR5R7ntt1fYsYa8xR5KaYlxXgplU8xY3UOp02l9hd3ILLc49y2+0vMWGSeGi/ltKQYL6XxOWYszuG0qdj+4g40lnuc23Z/hRmrzFPjpZyWFOOlND7HjMU5nDYV21/cgcZyj3Pb7q8xY415arxU05Jy7BHjviAz1vgrp03V9uc4LY3lHue23V/TPGvMU+OvmpaUY48Y9wWZscZfOW2qtj/HaWks9zi37f5+a4Bl/abGX8XzMfbIcV+QGWv8FdOmgvtrO5BYDnJu2/01DbCm39R4KaYl5Xgpjc8xY+0sTpvK7a/tQGO5x7lt9xeZsaYR1XgppSXleCmNzzFj7SxOd8vtr+1AY7nHuW33V5mx3/pNjZdqWlJb9kjju8dGtV05Tay2A43lHuc23t83+S9zRkgPaqxrpc1RzpJZsHMeh4x9UztgGmCQc1P+ktKvMnIoSg9qq2ulzRHP0riqcx6Hjn0TO2AaYI1zkztlGmBl3vwxPaitrlWbQ2NpXNU5j0PIvjXui2mAQc7N+Us6v0rRM2J6UFtdqzaHNlvjqu55HDr2rXFfTAMMcm7OXxL6VUqekdOD2upatTk0bylyVec8DiH7Rriv7D/IODfpLwn9KiXPyOlBMV0ryChpLJGrOudxCNk3w31V/0HGuUl/SeZXqflSUA+K6VpBRkljiVzVOY9DyL4V7stpgEXOze2UsXR1XskzcnpQTtfKMUoaS9TYOudxCNm3xH0xDbDIubGdEpaO+xkqPSipa+UYJYWlamyd8ziE7JvjvpREzs3tVLB03M8Q6UFRXSvHKGksjbW65nEo2TfHginXN3JubqeQpXN+hkgPiupaOUZJY2l6Vfc8Dh375lgwLY5zY/6S0K9S84yQHhTVtXKMksbS9KrueRw69s2xYFoc58b8JZ1fpeYZQT2oqa5VnENjSXpVBz0OGfsWuS+nAeY4N+YvCf0qJc8I6kFNda3iHBpL4qoOehwy9i1yX04DrHFubKcLDbDjvn/PUOpBLXWt6hzabIWruuhxqNi3yn05DTDHuTl/SehX2ba19ejb6njdnM2wb/e4r/GZv9N/VPup5atC2ackaxU1rAzPVRm0dL68061PYWGylI9i3RXTMhP52p1L7aeWr0pln4KsVdSwUjxXY9Da+epOtz6FhclyPoptV07LTDuzVrxzqP2k8lWJ7pFjraKGFeO5GqeVzld3uvUpTExW8lGEPo9Oy0zja3cOtZ9aviqWfcqxVlHDivFcbX/tfJGr2voUJiYr7RT6PDotM42v3bnTfjL5qhzOE/Ea7BpWjueK+0vna1zV1qewMVnORzGyZU7LTOJrd+60n1i+KtU9cixY4qogz9X2187Xdrr1KUxMlvNRjGyZ0zKT+NqdM+0nl69KdY8YC5Y4KMlztf01fq3tdOtTmJgs56MY79xpmUl86c6d9lPMVwWzTzEWrHFQkOdq+2v8Wtvp1qewMFnOR7HeudMyk/janTPtJ5mvSotjwRoHxXiuuL/Gr6Wdbn0KG5MV78PpbjktM4mvfUz7Sear0uJYsMZBMZ4r7q/xa2mnW5/CxmQ5H8W4K6dlJvG1D2o/uXxVWhwL1jgoxnNFz8TGr6Wdbn0KI5PFfBTjrpyWmcaXPqj95PJVaXEsWOOgFM9V99f4tbLTrU9h5bmYj2LcldMy0/jSvydD7SeXr0pzjxhr1TgoxnPF/bXzpZ2ufQqTnlbcFdPdclpmIl/jvpT2U81X5bJPMdaqcVCQ50r7a9xX2enWp7AyWc5Hse3KaZl5u/oPZ7jqXzXu7FOKtWoclOS5lP4a91WYsa1PYWWynI9i25XTMmvnq3d+K1/V9syNg7Kz5fvb+hRumSzno9h25bTM2q4+1dyX8u0TPSOZGV5luGrzsvPleacaW4gtkzwcY8HYnutZnHaWy+QutZ/SbIyrcuer8041thhb5ng4x4K5+4C5s5xvn+YZ/TiLL2k2x1W580V9rqnGlmPLFA8nWTB3Hy53lvPtkxwvmRk+zea4Kne+6CE41diCbFmazWlxudnamWHuLObbJ3lGMDO8y3DV5nXna/pcW40tx5YpHo6yYIw3g7mzmG+f5hnFsySODGa4SvO68zV9rrHGlmPLEA9HWTDGm8HcWcynUHO84lkaR1Zmg1yV46+SPtdaY8uxZYqHkywY2zPMnaV8CjXPqJ6lsVZpNsZVufO1edcaW44tYzwcZMHUnmXuLOZTGBfRtWqzMa7KnS/Nu9bYYmwZ5OEcC8b2DHNnMd++uIiuVZuNcVXufGnetcYWY8sYDye9ENmeYe4s5lPovsJa0RxbbV52vjjvVmOLsWWQh3PZu9yeXe4s5lPIvsJa2RxbbV52vjjvVmNLsWWSh3PZu9ie41mcdpbL5M4yw8MMV21edr6ozzXV2IJsmePhmBei23PcPdPOgpncWWb4NlucV+XOl/S5xhpbkC1zPBzzQnR7ZrmznG9f5YxIZng1P8R5Ve58TZ9rq7El2TLHwykWzO1Z5c56r/ZT3LxuL/c0tu7pjDkWzJ05/mPjA/wn/QdV9inGPDl9KXkW5hfo3j/oPBPTmdO96b0s33YIdcug/6DKPuW0uJy+FDwL8wt07x90nontzO3e1F6WbzuEumXQf5Bln3LMk9OXcmdxfoHu/YPOM1HNUVTFTN926HTLoP8gy3DlmCenL+XO4vwC3fsHnWdiO3O7N7GX6dsOnW6Z8x90Ga4U8yQza7mzOL9A9/5B55nYztzuTetl+7ZDpFtG/Qdh9inEPMnMWu4szi/QvX+QeSbG/bV703rZvu2Q6ZZB/0GYfUoxTzCzljuL8wt07x9knolxf+0u017Gbzt0umXOfxBmn3LMk9KXcmeB70J07x9knolN/yreZdrL+G2HULdM+Q/K7FOOeWL6UvAszi/QvX9QeSbG/bW7THu5+LbD5qOI/Adp9inHPDF9KXcW+C5E9/5B5ZkY99fenpj2sn3bodQtQ/6DNPuUY56cvpQ7i/MLdO8fdJ6J7czp7YlxL9u3HTrdMuM/aLNPOebJ5VZ3Z3F+ge79g84zsZ05vT0x7mX7tkOnW+b8B1n2Kcg8MX0pxzc5v0D4/kHnmdjO3O6tMWjbtx0y3TLoP+iyTzktLqYv5fgm5xfo3j/oPBPbmWN298agMd/IOAfTLYP+gy7DldPiUvpSjm9yfoHu/YPOMzGeOd5lYdDWbztUumXLDFfbPFROX2rLN7XzufcPbjW7tm87PKhb9v39ozpZRV9qnKEd6lohdsvl4so7TTtQvoL03pBumeshou0+/uNA6mQVfamDGdpZFw6OtZKejmkHzFdQ3pvSLXN5strun//j4BjhZ9G6l6HddeHgWCvo6Zh2wHwF5b0l3TLmERnozZV/HFCdrKQvdS9Du+vCwbFWMFd72oHyFaT3xnTLXJ6stpfyjwOqk5X0pa5laJddODjWyuVqb3tRvoL13hyDxjwiA7258o8DqpPV9KWOZWiXXTg41sp5Ora9KF9BeW9Ot8zlyYq7D/84oDpZTV/qWoZ22IWDY62Yp2PcgfIVhPcGdctYnqy4l+f5vtpwFq1zGdpZFw6QtWKejnEvzFdw2xFEO7PLk1V3n/S+xlm07mVoZ104MNYKejrGvTBfQXZvULfM5clqu496X9ssWvcytLMuHBRrJT0d416cr6C6N6hb5vJktd1Hva9tFq1thnana+U8/1wurrbTtgPnKzjtCKJ9Lk9W3H3T+9pm0bqXod114YBYK+rp2HbgfAWnHUG474P0xd03FozpZDV9qYMZ2l0XDo61Yp6ObQfQV3DaEQT0iHTcXGPumE5W05c6mKGddeEAWSvm6dh2AH0Fpx1BOI/IOG/u6T8OjsSfRetihnbVhYNkrVSu9rYD6Su47AjCeUTGeXPtHwfLXO3bDO1O18qxW1uuqu3gnq/gPU2stpePchb47A2IesJq7FFmnhgL5pisJS8Ve9GK44M9P7Q7KmeRO9j24xC941SHDI09Gue6ckzWlJdqvWjF8cGeH9odpbPAHUz7cahf4oxcRqptrivHZF3jpYpqHJ/r+SHdUczF5XYw7cehMkqsQ4bGHm1zXTkma8tLtV604vhazw+OX2v9QrgdTPtxiIwS7JAhsUfjXFeMydryUq0XrTg+1fNDvqPWLwTawbgfh8gowQ4ZGnu0zXXFmKwtL9V60YrjUz0/5Dtq/UKgHYz7cWiMkuyQofFX21xXjMla8lJVZyyOj/X8UO+o9QuhdrDux+Fxxqy/PpmRapvrijFZU14qamLF8bmeH+IdtX4h2A7G/TiUjFnxcxmpxrmuHJOVPpeDPfWiFccne35od9T6hXA7WPbj0Bil+LmMVONcV47JSp/LwZ560Yrjkz0/tDtq/UK4HSz7cUiMV/1gRqptrivHZDGe5l0psRctdz7X80O7o8aguR1s+3EIjFf9YEaqba4rx2Sx7wMpsRctdz7X80O7I9MvhJ5tPw6J8YIdMjS9qmmuK8dkjXmp1ouWO5/r+SHxZvEsbgfbfhwSB+U6ZGh6VdtcV+3MGt+Yl2q9aLnzuZ4f0h3Fs7gdpHlhNxGFUZIdMhT2aJvryjFZG17q4Vd153M9P5Q7qmdxOyjz1jOXNyouNaIaG3Uv19W/T0vK+SNGja1v/F/im2CuqzEz5rK7T/vJamfe8lftLPTthGheekcsq3zim1yuqy0z5rK7b/vJamfe8lftLPJdiGped0dQ36zxTS7X1ZYZc9ndl/1k1aztW/6qnQXya2xeeEeMpXN8U/Ma3DJjLrv7tp+sduYtf+U60HIeh04rbNttluObmtfgmBlz2d23/WS1M0/5q3YWx6+5eV3uLKVvRvmm5DU4ZsZcdvdtP1ntzFP+qp3F8WtuXpg7C+mbUb4peQ2OmbE2W9Pd2vaT5c7MWLB2FsevuXlh7izF0km+qXgNrpmxNlvT3dr2k+XOzFiwdBbHr8F5Ye4sxtI5vql5DY6ZMZfdfdtPVjsz46/c5/g1Ni+8I8jSMb6peQ2OmTGX3X3bT1Y7s+Kv4Of4NTWvvCPI0jG+qXkNjpkxl91920+Wxoz4K/oxfk3NK+8IsnSMb4peg1tmzGV33/aTpTEb/sp+jF9T88I7kixd45tcrqspMwazu2/7yZKYx/wV60Cr3QecV92RZOka3+RyXU2ZMZjdnWWzcrmuIH/lNLYYvwbnRXdEWTrFNzWvwS0z5rK7r/vJUpglf+U0thS/Juc1dyRZujfoRjnmSepubbNyvaFnrXu7H7N0n+C/4mfIcmIx/8GsTaXyvDs2SnorTnu9qp05sDPHeRH3Je883mXxM3Q+e85/MPJILM+7Y6OgtyLMAl/OUt+PyM4c51XcF7zzeJfFzzAyVC6vleuugeV5j2zUpJOGpx/K1JW1vdSZ68d26u683WVjipzPnvMfbNpUMc/7tG8H56247Ccra3uxM8d52U5dZ+/xLhNT5Hz2nP9g45Fanvdx3w7KW3HdT1bqjNScuc8Ld8ruPN5lY4qYz57zHyw8UmWyxn07OG/FYa9X9f2I6Mx9XrdTdufxLhtTxHz2XOaqyCO5PO/Oz9B1grXs9aq9HzHuM8Gq87qdsjtvd9k0nZKXGsxrBbtrKHneob7UuJOGaa9X6f2IkZ8JFnvLItM3c7m9KuOVPpfXCnbXwPK8xzm2nTRse70q70eMZE6MHNwpu/PG5jXGq30urxXsroHleY9zbDtp2PZ6Vd6PGMmM3rIo9c1gbq/0NsH2wbxWrrsGl+e9sVHbThq2vV659yM2/0H0lkWqb+Zye6W3CbYP5rVy3TW4PO+Njdp20rDt9aq9HzHu7F1lXrlTd+fpLiN/5Xz2nP9g4pFcnnfIRjFvxW2vV7Ezh7Czd8G3LDp9M9b7aGKKpM9eOwvrrsHleXdslOsEa9zr1Y+/lt8WyAzfssj0zVznW4kpcj570n+w8Eguz7tjo5y34rifrPL9EMcs37Ko9M1c51vKZ8/ltXJs1JYj23bSsO31at0J1jV9M5fb67P87kLVNYPTg4KdZbHM8NJ/EHbY7n6/nembDV2+epV3C87mOh5tTJbTg3KdZbnM8NB/EHbY7n6/nembDV2+epZ3y80GOx5NTJbUg2J8k8sM7/wHoTeg+/12Fm82HOSrd3m33Gyu49HGZDk9KNdZlssM7/wHYYft7vfbmb7Z0OWrd3m33Gyu49HGZLWzuExYbl7nA9gYL9dhu/v9drZvNnT56mHeLTab63g0MllMDwryTSwzPPQfZN6A7vfbGfaTRfPVw7xbbDbX8WhkspgeFOSbWGZ46D/ovAGTppjL2s4YNJivHubdYrO5jkcjk6X0oCTf5HJTtXkb4+W8AYumGMza7hi0Nkc7C8y75WZzHY82JovpQUG+SeWmkn2/M2/ApikGs7Y7Bs31rOXybrnZXMejjclielCQb0K5qaj/oPIGdL/fzrqfLNezlsu7hWbLnJHrmsHpQTm+CeWmov6DzhvQ/X47rp8st4N2Fpd3y8zWGSrXNYPTg3LsFnqvIPUfdN6AjZdyWdsdg+by1bu8W2y21vGo65oB6kE1fSk3L/MBbIwX9AZMvFQ88/bNhi5fvcu75WZjHY+2HOxODyryTW5e5gPYNKeYN6D8/XambzaE+epd3i23Z9XxaNN+amfZZsKSmeGV/6DzBpS/3456s6HcQZvN9dng9vybM9pyS9tMWO/oJ+u9bzbc3tvWD/Kz3Ls70sQa57VybFmbQ3JfY59Cpc8F32zI9L7gXTJvRdeRFdTnYj6Kji0b579qvBTU4lL6XPDNhkzvC96l81Z0HVk5fS7mowjZMjgHy6cFtbiYPpd7s6HT+3J36bwVG8vkumbY5rVybNk2/9XYp5Dpc8E3G7I53F06b0XXkZXT54I+iowt2+a/KryU1OJy+lzuzYZmjr6r8TsOWUdWSp+L+ig6tmya/6rwUlKLy+lzwTcbTn87wvE7DllHVkqfi/ooup5Gt/mv0l5Y16JQnwu+2VDNAbNyQW9F1pEV0+eSPoqup9Ft/quyF9i1qNPngm82dHOwu4Teiuw3v3H6XNBHkbFl4/xX7XNaXE6fi73ZEM7h7tJ5K7KOrKA+l/NRZGzZOP+V46Waf6PrlpS92RDO4e7SeSuyjqygPpfzUWRs2Tj/Vftc3i2nz8XebAjncHfpvBVZR1ZQn8v5KCq2TM7h+hd1WlxOn0u92VDO4e7SeSuyjqygPhfzUYRs2Tb/1dSnEOpzqTcbwjniXU7fcdg6soKaWNO8VpAt2+a/mvoUOn0u9WZDOUe8y+k7Dl1HVlCfS/koSraszeG4r6VPodPnUm82lHPUu1y+45D95jfn/u5lVN/m2LqXc/69u/8qZ9uSHn2uN3aV051pXW1zum87LZ3ycJDJgrplcV52l9Kjr/TGvu2h3WlduZzu7t2Fzn9wy8M5JsvplsV52V1Kj770O+Xc66HdaVM53mzbaemUh6uzTfNktXndXUKPPvY75TD+CmpdbXO6bzstdTwcZLymebLavO4unUef+51yGH8Fta62Od23nZY6Hs4xXi5PlvMzdHfpPPrc75TDcrpDrattTvdxp6WMh3OMF8yTxfwM3V0yj77aG/u5HtqdNpVjo8adljIezjFeME8W8zN0d8k8+mRv7Iq/glpX7SyOjRp3Wrrl4RyTpXTLXOdb9XzKo0/2xq74K6d1tc3pvu60lPFwjPEa58lynW/F8yGPPtobu+KvmNbVNqf7vNNSxsMpxkvmyYJ+hu4ukUdf7o39Xg/tTpsKsVHzTksdD4cYL5ony/kZurtEHn25N/Z7PbS7Dh4QGzXvtNTxcIbxsnmynJ8hu0vn0ddYsHEP7U7rapvTfdtp6ZSHi7O5PFnMz9DdJfToS72x3+uhHWpTOTZq22nplIeLs7E8Wc7P0N0l9OhTvbFL/sppXbWzODZq22npkoers6k8Wc7P0OXsWnZktfUadGzZmzkoxcPd24HzM3R3+al+dyHUptp2guXmRT0wRI9D1+173IHEJ3eFcs67brPgew9hdneoXbTtBMvNq3pgaB6Hstv3NJvEJ3eluoJvu4IZ3yec2zHis+0Ey83LemBIHoey2/c0m8YHd6VyzsNus9x7D112d6hNte0Ey83LemBIHoe123emf6XxwV2xnPNpV7BLiMa5qezuUptq2wmWm9f1wJA8DmG374WrkvjmvUG4zk1dxvc4B8ruLrWptp1guXldj1nJ4xB2+15mk/j2vUGo3rHiTmFvECq7u9SmYvngIcvk9pJ4qeRx6Lp9b7M1nax1bxCqd6y4U9gbBMvuzrSptp1guXnr+RIv1TwOG5fG9K+iTta4NwjVO1bcKewNonBQ9WPaVNtOsNi88Wu8VPQ4dN2+l6/qZLlduZzzrNusuL/Gubns7kybatsJFps3fo2Xih6HjUtj+lexz9FpbxCsd6y4U/jeQ5fdnWlTbTvBUvPWL/JSzePQdfvevubLOO0NIrJgrtss10upy+7OtKm2nWCpeeNXeanmcei6fW87aL6My94gZO9YLuN7Y8tcdnemTbXtBIvNK3NxNY9D1u173EHyZXR35HLOw26zWC+lMLs70qaS+eAhy+T28lj/6s9f/x7qun2PsyVfRndHriv4tCuY8b3NAbO7G22qmg/enU/NK3NxtZxYjVWTfovpfMPeIGTvWC7je5vjX9fT6Dv8ArcZs+5xaW6nrpfSj3Lud9f1ldOwotpe066vVNcMLIM8zCrv9MNoj6SoAy04b+u63XV9tdWwqmeedn3FumZwGeTd+Zx+mOyRVHWgBedNna7Drq+mGlb1m3Z95bpmcBnk3fmcfhjskZR1oOXmbZ2uu66vnIZV4N5e066vXNcMkZdimmKu63bn/ei4tKbFBedtna67rq+YhlXc3l7Lrq9o1wyJ+3KaYq6DUuf96Li0psXl5o1eg67rK6ZhFbe317LrK9o1g8sgz87n9MPi/TIurd2Hmze+sdB1fTXVsHL9OLD3D8quGVwGeXY+px8W71dxafE+3LzxjYWu6yumYRW3t9e26yvYNYPLIK/OB/XD4v0yLi3dB9Qti28sdF1fbTWs2pm3XV+5rhlcBnl2Pqcf5nokjfMmLS6mWybfWNg6bthqWLF+HODnumZwGeTZ+Zh+WLxfyKUlLS6lW0bfWNg6bthqWLl+HNzXmCeXCatpirHzQf0w1yOp60DLzNvfWOi6vtr+PjquHwf3ua4ZXAZ5dj6oH+Z+A0PXgZabl72x0HXcEPNaMW2vcddXrmsGlkHena+dBXo1Mi4tanG5edkbC13HDS6vVTvzuOsr1zUDyyAPz+f0w1SPpLADLTivemMh6rihf1Wl7bXu+sp1zaAyyLvzycxaqkdS14GWnNcwWe/w92uzbRkqlwmraYq58235NdeBFtTiujl5OYZK9rwec7VvtbgQC+a6a3DZ3cfsVpqjcXNMn8sxaHUHjqGCPa/HXO1bLS7FgrnuGlx29y275d5O6PS53LsV2w4gQ+V6Xo8s01aLi7Fgzh/RZXefsluwoy2mzwVZtbQDyFC534kw5mp3Wlzs9xXc9onlsrtP2S3Y0ZbT53IMWtqBZKhYz+suV7vzVnQsmPNHhNndl+wW7GjL6XM5Bi3tQDJUrOf1lqv9v/c5uW/7xILZ3ZfsFuxoC/Zryhi0dOeyYyzW83rL1f7f+5zcXTYrjQ9md1+yW+OOtlimrniXz3vH+vtzmdwbo5Rytbd3Ly7Igjl/RJjdfclujTvairMpBs11ryUzuTdGqeRqb/NeXIwFk/6IbX+tC4cluwU72nL6XI5BU91r0UzujVEqudrbvBeXYsGcPyLN7r5kt2BHW06fyzFoaQeSoXI9r7ffTOdeT+7hc/6INLv7lt1ybydk+lyOQVPda9FM7o1Rar+Zzr2e3MPn/BFpdvctu9XmMNyczdSV7ijuwDFUruf1lqv9Xk/u2z6xWHb3Mbu17WgrzeYYtLgDx1ANel43s9bnnjbvxQVZMOePyLK7j9kt93ZCp8/F3q0Yd+AYKtXzemOZ7vXkvu4TS2V3X7NbrqMtpc/lWDWtg2Um973H4X3ebJvd/Z6eltvfvXcrfpd9D6fdMDAeqZ0ZdubAPA5ZVvl4FuePCLN3Md6M6ZFRLbPmdzfthoHxSO3MsDMH5nHossq3szh/RJi9i/FmTo9Mapm1b9oNA+OR4pldZw7O47Blld/2ieXYN3dmmItLdeyuxvkZsn4XGI8Uz+w6c3Aeh67TB5cP3rFv7swwFxfr2F1knmZe/30WyiPFM6vOHKTHocoqT/PBI/ZNntn1Ag87dpeYt5nXXTYr1xeD6sxBehy6rPLwXYOIfZNndrm42p5dXrBt5nWXzcr1xcA6c4AehzGr/LZPLMW+wTOzXFxxz65bh23mdZfNyvXF4DpzYB6HMqu8wgL9EV32LsibMT0y1q2D8zOU/S4oHqlqcbnOHJjHYcwqrz7pj9j20s7seDOmRwa1zLaZ1102K9cXg+vMgXkctqzy7JP+iC57l+PNmB4ZzAu2zbzuslm5vhhcZw7O4zBllYef80d02bscb+b0yFxesG3mdZfNyvXF4DpzcB6HKas8/Jw/osve5Xgzp0fG8oKNM6+zbFawLwbXmYPzOHRZ5Vk+eMe+iSyMN4N6ZKxbh23m9XYWxiPFOWBnDszjEGaVZ/ngIfvmzsxyccU9Ky2zdeZ1lc3K9cVQWSulQyV/x8Jln1iSfXNnVr3A1z0TLbMxL+WyWTktrvd24r71R3TZuxxvNu7Y/ablNfw9c8ZaXGw22KMD68eBeTXCTkthdqyttle8S8i0LX/PnK0Wl5vN9ejg+nFwXo0u75bLjrXV9op3CZm26e+Zs9XicrO5Hh1cPw7Oq9Hl3WLZscbaXu0uIdM2/T1ztlpcbjbXo4Prx8F5Nbq8Wyw71ljbq92lY9rGv2fOVIvLzeZ6dHD9ODivxnGnpU6La/mmRMi0uTcRRvZoq8XFZotn2fbVzrwax33EOy2u5ZsSHdO2/j1ztlpcbLZ4lm1f7cyrcdxHvNPiWr4p0TFt698zZ6nFFc98pdssM2enzKsRdlrKsmONtb3SXTKmTb6JsLFHUy2uONu226ywTplXI8y7BbNjbbW92l0ipm3+e+Y4LS7HfU27zYrr1Hk1jjstdVpc2zclIqZt/nvmbLW43GysR4fATplX47jTUqfFtX1TImLa5r9nzlaLq8027TYrsFPm1TjutNRpcW3flIiYtvnvmbPV4mqzuW6ztn21O6/GaaelTotr/KZEx7SxNxE29miqxVVn23abFfb5OECvxmmnpU6La/umRMi0LX/PnK0Wl5tN9ugQ9fk4SK9G12mpyo611fZqdymZtt37Au1vH7ib7R2M1z2NLXe+cacPX+o/9xvdLHuzgnM4tsz16Q41seCuHB+mdLeYLhjMAp/mkHmtpr1ZuTkcW+b6dIeaWHBXjg9TultOF8xlgW9zwLxW296slnNwR9zeXtsuSLe7ip/S3YK6YIkjg307uLxW296s2hzuzHF7e227IIW7cnyY0t2CumCJI4N9O8Df6Gbam1WcjZ05bm+vbRek412x37HQ9fzAftMd2LcD/I1upr1ZxdnYmeP29tp2QQp3xfgwpLtl2a2ws8DHOdxvdLPtzYrNwfSlZJ/uTBML7krxYU53S+qChZ0FPs7R8lo5RkliiZxWm4OdOW5vr20XpHBXjA9zuluQ3Qo7C3ycw/1GN9verNoc7sxhe3uNuyB1u1J8mNTscuxW3Fng2xzuN7qZ9mYVZ3NnDtvba9wFqdsV4sOoZpdjt+LOAp/mgHmttr1ZuTkcW+b6dHeaWG5Xjg9z2eIduxV3Fvg0B8xrte3Nys3h2DLXp7vTxNruyv1WO6zLLff9z/p2cL/Rzbg3qzaHO3Pc/39w2wUp25Xjw5zuFmS34s4C3+Zgea22vVnBORxbxvp0h5pYbFeOD3O6WxN2y6z0w7BvB5XXSr6JsLBbdQ515si9vbZdkKpdOT7M6W5JdivqLPBlDpfXapu//Z6+lOvT3WlibXe1zRZ/L+f8F933UHWvIHmupKclc3GNfQWVVljci+O5mPaY7EXL9XC69D103Ss4nqvpacFcXGNfQacVpvpxcPm0oG4Zy6fVdMbk594myLJjOd9Dl4tr7CuotMLiXhzP5bTHYFfwrofTqe+h616h8VzO99Dl4hr7CjqtMJZp3uXTcrplLp9W1Bmb+h667hUcz9X0tGAurqmvoNMKc5nmXcZ3p1vm8mm1s2x9D133Co7nanpaMBfX1FfQ5edymeZdPi2nWwbzabV5p76HrnsF5tsX9a9gLq6lr6DLzwUzzbuM7063DObTajpjqnMr9+ZAlx0L+h7CXFxTX0GXn6vtBfJcTHvM9aIVZ2sc2db3sHwwO1aco+hpyVxcW19BpRUmM82zfFpQt4zl04pn2XZuFT6ZHYv5HspcXFtfQZWfS2aad/m0nI8iy6fVzjL2PQwfzY6lfA9lLq6tr6DLz9X2wngu6P3oetFiPZyOfQ/DR7NjOd9Dl4tr6yvotMJcpnmX8d35KKp8Wu0sY99D170C9O1relosF9fWVxBqhblM8y6fltMtU+84bGcZ+x667hWcZlfU02K5uLa+gkwrTGaaZ/m0nG6ZyqfVzjL2PZTdKyieq+ppqVxcW19BpxVW96J4Lqc91nag8mmls4yzu2+zY93rpt35Cr6ji6ztmbcaW99v30PUm5XTiIrnm/ZNms5Hz8zeNSg5ssJ4pXnzmRlLxzqFl76HqjcrpxHVzuf6JnVdvMMzs3cNypxYZfdtXuetKN92WOaVvoesNyunEZXOB/smdR6H7szuXYOQI0uMV5uXeSvKXuDLvNL3kPVm5TSi0vlg36TO49Cd2XV9BTmytNNppw+yF/gyb/U9dAyV4ptcJw3jvkkdB+U6c2jaXo4jazuddvoAe4FP81bfQ8dQKb7JddKw7Zu07g/pWsl3Dboes9pOXacP24620rzV99AxVIpvcp00bPsmrRyUOjN816DrMSvutM3LOodwbyxM81bfQ8dQKb4JdtIw7Zu0clDszO5dg4wjk/nbVecQ8I2FaV7pe8h6s3IaUfF8y75JJQfVPveuQcaRsfzt0FuRvbGwzSt9D1lvVk4jKp5v2Dep5KDi5941yDiyXzt99LHOIdQbC+O81ffQMVSOb3I5sYZ9k0oOKn7uXYOMI4P5213nEOiNhXne5nvoGCrHN7mcWMO+SSUHFT/3rkHFkdXdt891DmHeWNjnTZ2MOoYK8k0uJ9a2b9LEQcEzs3cNMo6sMl6s0wfX0RbsFD75HjqGyvFNLifWuG/SxEHBM7N3DSqOrO7edfow7mirzVt8Dx1D5fgmlxNr3Tdp4aDkmdVviKM4srp71+nDuqOtkvt9mY39nkbUvSzr271Aba9zf/A+PtR/1T8PdWRFz6xyxDdtKsWHQf0r2qGo4a/kTt07DuP5phpg1T9PdWR1r3P2pk3l+DCnfyU7FFX8ldupe8dh5LmmGmDOPy96Id7rnL1pUzk+zOlfuQ5F01nk+xGZppjrGX6qAVb981hHVvc6Z2/aVI4Pc/pXsENRxl+5nbqMWZDnUl2VRv882JHVuc7ZGwvm+DCnf+X6znL8Fdwpy5jVeK6pBpj0z2tvCTzXOXtjwRwfBvWvWN9ZkL9yO3XvOGS/1Q7rqlT657G3BLKsV/B3HXR8GNS/amdWWeDh+xGdppjrGb6te4A1/zzZkdW5ztkTtwT5MOgrqPrOcvyV1ChzGbMSz9XePcCafx7syOpe5+yJW3J8WNS/Yp0+sC++HxHulGXMijzXVgMs+efBjqzudc6euCXHh8U5WKcP7IPvR4SaYq5n+K0GWPPPcx1Z3eucvXFLjg9jvoKq7yzJX8GdsoxZkefaaoA1/zzXkdW9ztkbt8T4sDgH6/QBfu79iE5TzPUMv9UAa/55rCOrg52zN27J8WFK/0r2ncX4K7hT1kd85LmmGmDNP891ZHWvc/bGS0E+TOlfxTPDLPDs/YhQU8z1DD/VAGP+efItgSrrlftdByUfpvSv2plrFnjVq6jbKcuYVb/qUgNs+Tvl3OucfctBbXXB7vFX78jk7ub9KPfesP3tCOMc8G2CKi975KCYVpjjviD7Jn0KWUZ6d2+wDwjVoajrtb3NAd8m6PKyp/M5rTDHfTn2TfoUsoz07t5AHxCP+Kbtb0dY5pBvE0x8E8zVzrTCIPfl2DfoU8gy0rt7c31AOB0q12s7fMOg8hqEudqdVpjjvhz7Bn0K017a7t29uT4gnA4V7LWdvWHQeQ26bkShVhjjviD7xnwKocchuzfYBwTToYK9trc5XP4rl5e9eQg6rTDGfUH2jfkUQo9Ddm+wDwimQwV7bW9zuPxXLi+78hCsZ2bcF2Tf1O+oIz0O2b1t+oD46ywwa3vUoWpzuPxXLi878xCMe1Hcl2TflE+h9Dhk97btaMtlbY86VO1z+a9cXnbnIdj2wrgvyL4pn0LpcejubdrRlsvaHnWo2mwu/5XLy97O53wPGfcF2TflUyg9Dt29bTvaclnbmxZX+1z+K5eX3XkItr047suxb86n0HkcuntbdrS1/u0I2+fyX7m87M5DsO3FcV+OfXM+hc7j0N2b6gNC6lC5XtvZGwah16DL1c60wmDfpIx9gz6FzOPQ3RvsA8J1KOp6bWdvGIRegypXO9QKg9wXY9+YTyH0OHT3BvuAaDpU29+OUL1hUHoNqlztTitMcl+KfXM+hc7jUN6b+30KdzpZzlfQ9fMuZ1tqhW01rFy2ra3H4fjtif9nrz8A");
}

/* The page stays. */
.topbar{ view-transition-name: vt-topbar; }
/* A case page's cover is always the landing spot. vt.js names the index card. */
.cover .deck{ view-transition-name: case-hero; }

/* Under the dissolve: the page ground, not the browser's white. */
::view-transition{ background:#050F1C; }

::view-transition-group(root){ animation-duration: var(--vt-dur); }
::view-transition-image-pair(root){ isolation:auto; }

/* The page being left: solid → digits (tinted) → drained from the click. */
::view-transition-old(root){
  z-index:1;
  /* screen (2026-10-23): the leaving page's DARK ground also becomes digits,
     and over the arriving page's bright thumbnails those read as black numbers
     (Jesse). Screen drops dark digits out and keeps lit ones. */
  mix-blend-mode:screen;
  animation: vt-old var(--vt-dur) linear both;
  mask-image:
    radial-gradient(circle at var(--vt-x) var(--vt-y),
      transparent var(--vt-drain), #000 calc(var(--vt-drain) + 22vmax)),
    linear-gradient(rgb(0 0 0 / var(--vt-solid)), rgb(0 0 0 / var(--vt-solid))),
    var(--vt-digits);
  mask-size: 100% 100%, 100% 100%, 240px 240px;
  mask-repeat: no-repeat, no-repeat, repeat;
  mask-composite: intersect, add;
}
/* The tint goes GREY first, then blue — never through a hue sweep. Animating
   straight to --vt-tint interpolates hue-rotate from 0deg across a sepia tone,
   which passes through GREEN (filmed, 2026-09-22; directive 3 bans it). So:
   0→15% drains the colour out; at 15% hue-rotate jumps to its final angle,
   which is invisible because hue-rotate is the identity on grey; 15→30% the
   sepia comes up already rotated, so grey goes straight to blue. Every stop
   lists the SAME functions in the same order, or filter interpolation fails. */
@keyframes vt-old{
  0%     { --vt-solid:1; --vt-drain:-22vmax; filter:grayscale(0) brightness(1) sepia(0) hue-rotate(0deg)   saturate(1) brightness(1); }
  15%    {                                   filter:grayscale(1) brightness(1) sepia(0) hue-rotate(0deg)   saturate(1) brightness(1); }
  15.01% {                                   filter:grayscale(1) brightness(1) sepia(0) hue-rotate(185deg) saturate(1) brightness(1); }
  30%    { --vt-solid:0;                     filter:var(--vt-tint); }
  40%    { --vt-drain:-22vmax; }
  100%   { --vt-solid:0; --vt-drain:160vmax; filter:var(--vt-tint); }
}

/* The page arriving: underneath, showing through as the digits drain. */
::view-transition-new(root){
  mix-blend-mode:normal;
  animation: vt-new var(--vt-dur) ease both;
}
@keyframes vt-new{
  0%, 35% { opacity:0; }
  100%    { opacity:1; }
}

/* The frame that flies: card ↔ cover. Clipped and rounded like a .deck, both
   pictures cropped to the moving frame rather than stretched. */
::view-transition-group(case-hero){
  animation-duration: var(--vt-dur);
  animation-timing-function: cubic-bezier(.65, 0, .15, 1);
  overflow: clip;
  border-radius: clamp(10px, 1vw, 18px);
}
::view-transition-old(case-hero),
::view-transition-new(case-hero){
  height:100%;
  object-fit:cover;
  animation-duration: calc(var(--vt-dur) * .7);
}

::view-transition-group(vt-topbar){ animation-duration: var(--vt-dur); }

/* ── Case-page title block fades; it never becomes digits (2026-10-23) ──────
   Jesse, after two recordings: the big headline "filled with blue numbers" on
   the way back reads as a glitch, even dimmed to the site blue. Naming .casetop
   lifts it out of the root snapshot, so the digit mask never touches it: it
   simply fades out (gone by ~35%, when the digits are fully formed) and the
   arriving page's title fades in on the same schedule as the page. Between two
   case pages (See also) the two title blocks cross-fade in place. */
.casetop{ view-transition-name: vt-casetop; }
::view-transition-group(vt-casetop){ animation-duration: var(--vt-dur); }
::view-transition-old(vt-casetop){ animation: vt-text-out calc(var(--vt-dur) * .35) ease both; }
::view-transition-new(vt-casetop){ animation: vt-new var(--vt-dur) ease both; }
@keyframes vt-text-out{ to{ opacity:0; } }
