/* ===== tech_update_may_26 (HTML form, scoped) =====
   Loaded eagerly from anvil.yaml native_deps.head_html. The root rule is a bare class on purpose: it must
   outrank the zero-specificity :where() reset; every other rule stays :where()-scoped so it cannot leak off
   this screen. Rules gated on .tu-live hide content until the form's JavaScript runs, so the designer
   canvas - which runs neither Python nor JavaScript - shows the baked content instead of empty panels. */


        

        :where(.tech-update-may-26), :where(.tech-update-may-26) * { margin: 0; padding: 0; box-sizing: border-box; }
        

        .tech-update-may-26 {
            --bg-cream: #EEEFE9;
            --bg-white: #FFFFFF;
            --text-dark: #151515;
            --text-mid: #4A4A4A;
            --yellow: #F7A501;
            --yellow-light: #FEF3CD;
            --red: #F54E00;
            --red-light: #FFEBE5;
            --blue: #1D4AFF;
            --blue-light: #E5EBFF;
            --green: #2DB574;
            --green-light: #D4EDDA;
            --purple: #9B59B6;
            --purple-light: #F3E5F5;
            --border: #151515;
            --on-bright: var(--text-dark);
            --red-ink: color-mix(in srgb, var(--red) 75%, var(--text-dark));
            --highlight: var(--yellow);
            --font-main: "Gabarito", sans-serif;
            --font-hand: "Caveat", cursive;
        

            font-family: var(--font-main);
            background: var(--bg-cream);
            color: var(--text-dark);
            line-height: 1.6;
            font-weight: 500;
    position: relative;
    flex: 1 0 auto;
}

        /* Dark palette (screen only: print keeps the light one). Bright hues stay; text on them uses --on-bright. */
        @media screen {
            :where([data-theme="dark"]) .tech-update-may-26 {
                --bg-cream: var(--px-bg-deep);
                --bg-white: var(--px-bg-card);
                --text-dark: var(--px-text-primary);
                --text-mid: var(--px-text-secondary);
                --border: var(--px-border-strong);
                --on-bright: var(--px-ink-on-bright);
                --yellow-light: color-mix(in srgb, var(--yellow) 22%, var(--px-bg-card));
                --red-light: color-mix(in srgb, var(--red) 22%, var(--px-bg-card));
                --blue-light: color-mix(in srgb, var(--blue) 22%, var(--px-bg-card));
                --green-light: color-mix(in srgb, var(--green) 22%, var(--px-bg-card));
                --purple-light: color-mix(in srgb, var(--purple) 22%, var(--px-bg-card));
                --red-ink: color-mix(in srgb, var(--red) 50%, var(--px-text-primary));
                --highlight: color-mix(in srgb, var(--yellow) 45%, var(--px-bg-deep));
            }
        }
        /* Doodle outlines are template literals; follow the card edge colour. */
        :where(.tech-update-may-26) svg path[stroke="#151515"] { stroke: var(--border); }

        :where(.tech-update-may-26) .tu-noise {
            position: absolute; inset: 0;
            overflow: hidden; pointer-events: none;
        }
        :where(.tech-update-may-26) .tu-noise::before {
            content: "";
            position: absolute;
            inset: 0;
            background-image: url("../noise.png");
            opacity: 0.015;
            pointer-events: none;
            z-index: 0;
        }

        :where(.tech-update-may-26) .container { max-width: 1200px; width: 100%; margin: 0 auto; padding: 40px 24px 100px; position: relative; z-index: 1; }

        /* ===== DOODLE ANIMATIONS ===== */
        @keyframes tu526-wobble {
            0%, 100% { transform: rotate(-5deg) scale(1); }
            50% { transform: rotate(5deg) scale(1.1); }
        }
        @keyframes tu526-bounce {
            0%, 100% { transform: translateY(0) rotate(-2deg); }
            50% { transform: translateY(-8px) rotate(-2deg); }
        }
        @keyframes tu526-shake {
            0%, 100% { transform: rotate(0deg); }
            25% { transform: rotate(-3deg); }
            75% { transform: rotate(3deg); }
        }
        @keyframes tu526-popWiggle {
            0% { transform: scale(1) rotate(0deg); }
            20% { transform: scale(1.03) rotate(-2deg); }
            40% { transform: scale(1.05) rotate(2deg); }
            60% { transform: scale(1.03) rotate(-1deg); }
            80% { transform: scale(1.04) rotate(1deg); }
            100% { transform: scale(1.04) rotate(0deg); }
        }
        @keyframes tu526-slideIn {
            from { opacity: 0; transform: translateY(-30px); }
            to { opacity: 1; transform: translateY(0); }
        }
        @keyframes tu526-iconBounce {
            0%, 100% { transform: scale(1); }
            50% { transform: scale(1.15); }
        }
        @keyframes tu526-starBurst {
            0% { transform: scale(1) rotate(0deg); }
            20% { transform: scale(1.4) rotate(-20deg); }
            40% { transform: scale(1.1) rotate(15deg); }
            60% { transform: scale(1.35) rotate(-10deg); }
            80% { transform: scale(1.2) rotate(5deg); }
            100% { transform: scale(1.25) rotate(0deg); }
        }
        @keyframes tu526-sparkleShoot1 {
            0% { opacity: 0; transform: translate(-50%, -50%) scale(0); }
            30% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
            100% { opacity: 0; transform: translate(calc(-50% - 25px), calc(-50% - 25px)) scale(0.3); }
        }
        @keyframes tu526-sparkleShoot2 {
            0% { opacity: 0; transform: translate(-50%, -50%) scale(0); }
            30% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
            100% { opacity: 0; transform: translate(calc(-50% + 25px), calc(-50% - 20px)) scale(0.3); }
        }
        @keyframes tu526-starGlow {
            0% { box-shadow: 0 0 0 0 rgba(247, 165, 1, 0); }
            50% { box-shadow: 0 0 20px 8px rgba(247, 165, 1, 0.6), 0 0 40px 16px rgba(247, 165, 1, 0.3); }
            100% { box-shadow: 0 0 15px 5px rgba(247, 165, 1, 0.5), 0 0 30px 12px rgba(247, 165, 1, 0.2); }
        }
        @keyframes tu526-dotPop {
            0% { transform: scale(1); }
            30% { transform: scale(1.4); }
            50% { transform: scale(1.1); }
            70% { transform: scale(1.3); }
            100% { transform: scale(1.25); }
        }
        @keyframes tu526-rippleRing1 {
            0% { transform: scale(0.5); opacity: 1; border-width: 4px; }
            100% { transform: scale(2.5); opacity: 0; border-width: 1px; }
        }
        @keyframes tu526-rippleRing2 {
            0% { transform: scale(0.5); opacity: 0.8; border-width: 3px; }
            100% { transform: scale(3.5); opacity: 0; border-width: 1px; }
        }
        @keyframes tu526-cnIn {
            from { opacity: 0; transform: translateY(16px); }
            to { opacity: 1; transform: translateY(0); }
        }
        @keyframes tu526-relSlide { to { opacity: 1; transform: translateX(0); } }

        /* Glitch animations for issues (adapted to light theme) */
        @keyframes tu526-issGlitchIn {
            0% { opacity: 0; clip-path: inset(40% 0 40% 0); }
            20% { opacity: 1; clip-path: inset(10% 0 60% 0); }
            40% { clip-path: inset(50% 0 5% 0); }
            60% { clip-path: inset(0 0 30% 0); }
            80% { clip-path: inset(15% 0 0 0); }
            100% { clip-path: inset(0); opacity: 1; }
        }
        @keyframes tu526-issGlitchText {
            0%,100% { text-shadow: none; transform: translate(0); }
            25% { text-shadow: -2px 0 var(--red), 2px 0 var(--blue); transform: translate(2px, -1px); }
            25.5% { text-shadow: none; transform: translate(0); }
            50% { text-shadow: 2px 0 var(--red), -2px 0 var(--purple); transform: translate(-1px, 1px); }
            50.5% { text-shadow: none; transform: translate(0); }
            75% { text-shadow: -1px 0 var(--green), 1px 0 var(--red); transform: translate(1px, 0); }
            75.5% { text-shadow: none; transform: translate(0); }
        }
        @keyframes tu526-issScan {
            0% { left: -60%; }
            100% { left: 100%; }
        }
        @keyframes tu526-issSlideFlicker {
            0% { opacity: 0; transform: translateX(60px) scale(0.92) rotate(1deg); }
            20% { opacity: 0.7; transform: translateX(-8px) scale(1.02) rotate(-1deg); }
            30% { opacity: 0.3; transform: translateX(4px) scale(0.98) rotate(1deg); }
            50% { opacity: 0.9; transform: translateX(-2px) scale(1.01) rotate(0); }
            60% { opacity: 0.4; transform: translateX(1px) scale(1) rotate(0); }
            80% { opacity: 1; transform: translateX(0) scale(1) rotate(-1deg); }
            100% { opacity: 1; transform: translateX(0) scale(1) rotate(-1deg); }
        }

        /* ===== FLOATING DOODLES ===== */
        /* Handwritten note wiggle on hover */
        @keyframes tu526-noteWiggle {
            0% { transform: rotate(-6deg); }
            25% { transform: rotate(-3deg) scale(1.05); }
            50% { transform: rotate(-8deg) scale(1.08); }
            75% { transform: rotate(-4deg) scale(1.05); }
            100% { transform: rotate(-6deg); }
        }
        /* Staggered card entrance */
        @keyframes tu526-cardDrop {
            0% { opacity: 0; transform: translateY(-40px) rotate(-3deg) scale(0.9); }
            60% { opacity: 1; transform: translateY(8px) rotate(1deg) scale(1.02); }
            80% { transform: translateY(-3px) rotate(-0.5deg) scale(1); }
            100% { opacity: 1; transform: translateY(0) rotate(0) scale(1); }
        }
        /* Tab bounce on click */
        @keyframes tu526-tabPunch {
            0% { transform: translate(1px, 1px) scale(1); }
            30% { transform: translate(1px, 1px) scale(0.92); }
            60% { transform: translate(1px, 1px) scale(1.06); }
            100% { transform: translate(1px, 1px) scale(1); }
        }
        /* Confetti burst */
        @keyframes tu526-confetti1 { 0% { opacity:1; transform:translate(0,0) rotate(0); } 100% { opacity:0; transform:translate(-30px,-60px) rotate(200deg); } }
        @keyframes tu526-confetti2 { 0% { opacity:1; transform:translate(0,0) rotate(0); } 100% { opacity:0; transform:translate(25px,-55px) rotate(-180deg); } }
        @keyframes tu526-confetti3 { 0% { opacity:1; transform:translate(0,0) rotate(0); } 100% { opacity:0; transform:translate(-15px,-70px) rotate(260deg); } }
        @keyframes tu526-confetti4 { 0% { opacity:1; transform:translate(0,0) rotate(0); } 100% { opacity:0; transform:translate(35px,-45px) rotate(-220deg); } }
        @keyframes tu526-confetti5 { 0% { opacity:1; transform:translate(0,0) rotate(0); } 100% { opacity:0; transform:translate(5px,-75px) rotate(300deg); } }
        /* Release stamp effect */
        @keyframes tu526-stampIn {
            0% { transform: scale(2.5) rotate(-15deg); opacity: 0; }
            50% { transform: scale(0.9) rotate(3deg); opacity: 1; }
            70% { transform: scale(1.05) rotate(-1deg); }
            100% { transform: scale(1) rotate(0deg); opacity: 1; }
        }
        /* Floating arrow bob */
        @keyframes tu526-arrowFloat {
            0%, 100% { transform: translateY(0) rotate(12deg); }
            50% { transform: translateY(-12px) rotate(8deg); }
        }
        /* Squiggle draw */
        @keyframes tu526-squiggleDraw {
            from { stroke-dashoffset: 200; }
            to { stroke-dashoffset: 0; }
        }
        /* Counter badge pulse */
        @keyframes tu526-badgePulse {
            0%, 100% { transform: scale(1); }
            50% { transform: scale(1.15); }
        }
        /* Footer hover */
        @keyframes tu526-footerWiggle {
            0%, 100% { transform: rotate(0deg); }
            25% { transform: rotate(-2deg); }
            75% { transform: rotate(2deg); }
        }

        :where(.tech-update-may-26) .tu526-doodles {
            position: absolute; top: 0; left: 0; right: 0; height: 100vh;
            overflow: hidden; pointer-events: none; z-index: 0;
        }
        :where(.tech-update-may-26) .hero-doodle { position: absolute; z-index: 0; line-height: 0; }
        :where(.tech-update-may-26) .star-1 { top: 20px; right: 10%; animation: tu526-wobble 2s ease-in-out infinite; }
        :where(.tech-update-may-26) .star-2 { top: 100px; left: 5%; animation: tu526-wobble 2.5s ease-in-out infinite 0.5s; }
        :where(.tech-update-may-26) .star-3 { bottom: 200px; right: 3%; animation: tu526-wobble 3s ease-in-out infinite 1s; }
        :where(.tech-update-may-26) .squiggle-1 { top: 60px; right: 5%; }
        :where(.tech-update-may-26) .squiggle-1 path { stroke-dasharray: 200; animation: tu526-squiggleDraw 2s ease-out forwards; }
        :where(.tech-update-may-26) .arrow-1 { top: 160px; left: 2%; animation: tu526-arrowFloat 3s ease-in-out infinite; }

        /* ===== HEADER ===== */
        :where(.tech-update-may-26) header { margin-bottom: 40px; margin-left: 80px; position: relative; animation: tu526-slideIn 0.6s ease-out; }

        :where(.tech-update-may-26) .header-sticker {
            display: inline-flex; align-items: center; gap: 10px;
            background: var(--yellow); color: var(--on-bright);
            font-size: 0.95rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
            padding: 10px 20px; border: 3px solid var(--border); border-radius: 4px;
            box-shadow: 4px 4px 0 var(--border); margin-bottom: 24px;
            animation: tu526-bounce 2s ease-in-out infinite;
        }
        :where(.tech-update-may-26) .header-sticker::before { content: "📅"; }

        :where(.tech-update-may-26) h1 {
            font-size: clamp(2.8rem, 7vw, 4.5rem); font-weight: 900;
            line-height: 1; letter-spacing: -0.03em; margin-bottom: 16px; position: relative;
        }
        :where(.tech-update-may-26) h1 .highlight { position: relative; display: inline-block; }
        :where(.tech-update-may-26) h1 .highlight::after {
            content: ""; position: absolute; bottom: 5px; left: -4px; right: -4px;
            height: 16px; background: var(--highlight); z-index: -1; transform: rotate(-1deg);
        }

        :where(.tech-update-may-26) .title-row { display: flex; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
        :where(.tech-update-may-26) .handwritten-note {
            font-family: var(--font-hand); font-size: 2.8rem; color: var(--red);
            transform: rotate(-6deg); display: inline-block; white-space: nowrap; cursor: default;
            transition: transform 0.3s; margin-top: 0.4em; flex-shrink: 0;
        }
        :where(.tech-update-may-26) .handwritten-note:hover { animation: tu526-noteWiggle 0.6s ease-in-out; }
        :where(.tech-update-may-26) .handwritten-note::before { content: "←"; }

        /* ===== TABS (Dec style, Jan function) ===== */
        :where(.tech-update-may-26) .cn-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 32px; margin-bottom: 32px; }
        :where(.tech-update-may-26) .cn-tab {
            font-family: var(--font-main); font-size: 0.85rem; font-weight: 700;
            color: var(--text-dark); padding: 10px 18px; background: var(--bg-white);
            border: 3px solid var(--border); border-radius: 6px; cursor: pointer;
            transition: opacity 0.15s ease, transform 0.15s ease, background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; box-shadow: 3px 3px 0 var(--border);
        }
        :where(.tech-update-may-26) .cn-tab:hover { transform: translate(-2px, -2px); box-shadow: 5px 5px 0 var(--border); background: var(--yellow-light); }
        :where(.tech-update-may-26) .cn-tab:active { transform: translate(1px, 1px); box-shadow: 2px 2px 0 var(--border); }
        :where(.tech-update-may-26) .cn-tab.active {
            background: var(--yellow); color: var(--on-bright);
            transform: translate(1px, 1px); box-shadow: 2px 2px 0 var(--border);
            animation: tu526-tabPunch 0.3s ease-out;
        }
        :where(.tech-update-may-26) .cn-tab .tab-count {
            display: inline-flex; align-items: center; justify-content: center;
            min-width: 20px; height: 20px; border-radius: 50%;
            background: var(--text-dark); color: var(--bg-white);
            font-size: 0.6rem; font-weight: 800; margin-left: 6px; padding: 0 5px;
            transition: opacity 0.2s, transform 0.2s, background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
        }
        :where(.tech-update-may-26) .cn-tab.active .tab-count {
            background: var(--red); color: var(--on-bright); animation: tu526-badgePulse 0.4s ease-out;
        }
        /* Confetti container */
        :where(.tech-update-may-26) .confetti-wrap { position: absolute; pointer-events: none; z-index: 9999; }
        :where(.tech-update-may-26) .confetti-bit {
            position: absolute; width: 8px; height: 8px; border-radius: 2px;
        }
        :where(.tech-update-may-26) .confetti-bit:nth-child(1) { background: var(--yellow); animation: tu526-confetti1 0.7s ease-out forwards; }
        :where(.tech-update-may-26) .confetti-bit:nth-child(2) { background: var(--red); animation: tu526-confetti2 0.7s ease-out 0.05s forwards; }
        :where(.tech-update-may-26) .confetti-bit:nth-child(3) { background: var(--blue); animation: tu526-confetti3 0.7s ease-out 0.1s forwards; }
        :where(.tech-update-may-26) .confetti-bit:nth-child(4) { background: var(--green); animation: tu526-confetti4 0.7s ease-out 0.07s forwards; }
        :where(.tech-update-may-26) .confetti-bit:nth-child(5) { background: var(--purple); animation: tu526-confetti5 0.7s ease-out 0.12s forwards; }
        :where(.tech-update-may-26) .cn-panels-wrap { overflow: visible; }
        :where(.tech-update-may-26) .cn-panel { animation: tu526-cnIn 0.3s ease-out; }
        :where(.tech-update-may-26.tu-live) .cn-panel { display: none; }
        :where(.tech-update-may-26) .cn-panel.active { display: block; }

        /* ===== SECTION HEADER ===== */
        :where(.tech-update-may-26) .sh { display: flex; align-items: center; gap: 16px; margin-bottom: 28px; }
        :where(.tech-update-may-26) .sn { font-family: var(--font-hand); font-size: 2.5rem; font-weight: 700; color: var(--red); line-height: 1; }
        :where(.tech-update-may-26) .sh h2 { font-size: 1.8rem; font-weight: 800; letter-spacing: -0.02em; position: relative; }
        :where(.tech-update-may-26) .sh h2::after {
            content: ""; position: absolute; bottom: -4px; left: 0; width: 100%; height: 4px;
            background: repeating-linear-gradient(90deg, var(--border) 0, var(--border) 8px, transparent 8px, transparent 12px);
        }

        /* ===== FLIP CARDS (Jan layout, Dec look) ===== */
        :where(.tech-update-may-26) .hl-flip-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; overflow: visible; }
        :where(.tech-update-may-26) .hl-flip-card {
            perspective: 800px; height: 240px; cursor: pointer; overflow: visible;
            opacity: 0; animation: tu526-cardDrop 0.5s ease-out forwards;
        }
        :where(.tech-update-may-26) .hl-flip-card:nth-child(1) { animation-delay: 0.05s; }
        :where(.tech-update-may-26) .hl-flip-card:nth-child(2) { animation-delay: 0.12s; }
        :where(.tech-update-may-26) .hl-flip-card:nth-child(3) { animation-delay: 0.19s; }
        :where(.tech-update-may-26) .hl-flip-card:nth-child(4) { animation-delay: 0.26s; }
        :where(.tech-update-may-26) .hl-flip-card:nth-child(5) { animation-delay: 0.33s; }
        :where(.tech-update-may-26) .hl-flip-card:nth-child(6) { animation-delay: 0.4s; }
        :where(.tech-update-may-26) .hl-flip-inner {
            position: relative; width: 100%; height: 100%;
            transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); transform-style: preserve-3d;
        }
        :where(.tech-update-may-26) .hl-flip-card.flipped .hl-flip-inner { transform: rotateY(180deg); }
        :where(.tech-update-may-26) .hl-flip-card:not(.flipped):hover .hl-flip-inner { transform: rotateY(15deg); }

        :where(.tech-update-may-26) .hl-flip-front,
:where(.tech-update-may-26) .hl-flip-back {
            position: absolute; inset: 0; backface-visibility: hidden; border-radius: 8px;
            padding: 24px 18px; display: flex; flex-direction: column; align-items: center; justify-content: center;
            background: var(--bg-white); border: 3px solid var(--border); box-shadow: 5px 5px 0 var(--border);
        }
        :where(.tech-update-may-26) .hl-flip-card:not(.flipped):hover .hl-flip-front {
            box-shadow: 10px 10px 0 var(--border);
        }
        :where(.tech-update-may-26) .hl-flip-back {
            transform: rotateY(180deg); justify-content: flex-start; padding-top: 24px;
            text-align: center;
        }
        :where(.tech-update-may-26) .hl-flip-back-scroll { width: 100%; flex: 1; min-height: 0; overflow-y: auto; }

        /* Orange tape on cards */
        :where(.tech-update-may-26) .hl-flip-front::before {
            content: ""; position: absolute; top: -8px; right: 20px;
            width: 20px; height: 16px; background: var(--yellow);
            border: 2px solid var(--border); border-radius: 2px;
        }
        :where(.tech-update-may-26) .hl-flip-back::before {
            content: ""; position: absolute; top: -8px; right: 20px;
            width: 20px; height: 16px; background: var(--yellow);
            border: 2px solid var(--border); border-radius: 2px;
        }

        :where(.tech-update-may-26) .hl-flip-emoji {
            width: 52px; height: 52px; border-radius: 50%; display: flex;
            align-items: center; justify-content: center; font-size: 1.6rem;
            margin-bottom: 14px; border: 3px solid var(--border);
        }
        :where(.tech-update-may-26) .hl-flip-emoji.yellow { background: var(--yellow-light); }
        :where(.tech-update-may-26) .hl-flip-emoji.green { background: var(--green-light); }
        :where(.tech-update-may-26) .hl-flip-emoji.purple { background: var(--purple-light); }
        :where(.tech-update-may-26) .hl-flip-emoji.blue { background: var(--blue-light); }
        :where(.tech-update-may-26) .hl-flip-emoji.red { background: var(--red-light); }

        :where(.tech-update-may-26) .hl-flip-front h3 { font-size: 0.95rem; font-weight: 800; text-align: center; line-height: 1.3; }
        :where(.tech-update-may-26) .hl-flip-hint {
            font-size: 0.6rem; color: var(--px-text-muted); margin-top: 10px;
            letter-spacing: 0.06em; text-transform: uppercase;
        }
        :where(.tech-update-may-26) .hl-flip-back h3 { font-size: 0.95rem; font-weight: 800; color: var(--red-ink); margin-bottom: 10px; }
        :where(.tech-update-may-26) .hl-flip-back p { color: var(--text-mid); font-size: 0.82rem; line-height: 1.6; font-weight: 500; }

        /* Ribbon badge */
        :where(.tech-update-may-26) .hl-ribbon {
            position: absolute; top: 16px; right: -34px; z-index: 3;
            background: var(--red); color: var(--on-bright); font-size: 0.55rem; font-weight: 800;
            text-transform: uppercase; letter-spacing: 0.08em; padding: 4px 40px;
            transform: rotate(35deg); box-shadow: 2px 2px 0 var(--border); pointer-events: none;
            border: 2px solid var(--border);
        }

        /* ===== RELEASES (Jan slide-in, Dec checklist look) ===== */
        :where(.tech-update-may-26) .releases-box {
            background: var(--bg-white); border: 3px solid var(--border);
            border-radius: 12px; overflow: hidden; box-shadow: 6px 6px 0 var(--border);
        }
        :where(.tech-update-may-26) .shipped-badge {
            display: inline-flex; align-items: center; gap: 6px;
            background: var(--green); color: var(--on-bright); font-size: 0.85rem; font-weight: 800;
            padding: 7px 16px; border: 3px solid var(--border); border-radius: 4px;
            position: relative; top: 4px; left: -4px; box-shadow: 3px 3px 0 var(--border);
            transform: rotate(2deg); margin-left: 16px;
            animation: tu526-stampIn 0.6s ease-out both 0.2s;
        }
        :where(.tech-update-may-26) .cn-rel {
            padding: 16px 20px; display: flex; align-items: flex-start; gap: 14px;
            border-bottom: 2px dashed var(--border); transition: opacity 0.35s cubic-bezier(0.4, 0, 0.2, 1), transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.35s cubic-bezier(0.4, 0, 0.2, 1), color 0.35s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.35s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.35s cubic-bezier(0.4, 0, 0.2, 1);
        }
        :where(.tech-update-may-26.tu-live) .cn-rel { opacity: 0; }
        :where(.tech-update-may-26) .cn-rel:last-child { border-bottom: none; }
        :where(.tech-update-may-26.tu-live) .cn-rel:nth-child(odd) { transform: translateX(-40px); }
        :where(.tech-update-may-26.tu-live) .cn-rel:nth-child(even) { transform: translateX(40px); }
        :where(.tech-update-may-26) .cn-rel:nth-child(1) { animation-delay: 0s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(2) { animation-delay: 0.05s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(3) { animation-delay: 0.1s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(4) { animation-delay: 0.15s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(5) { animation-delay: 0.2s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(6) { animation-delay: 0.25s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(7) { animation-delay: 0.3s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(8) { animation-delay: 0.35s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(9) { animation-delay: 0.4s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(10) { animation-delay: 0.45s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(11) { animation-delay: 0.5s; }
        :where(.tech-update-may-26) .cn-rel:nth-child(12) { animation-delay: 0.55s; }
        :where(.tech-update-may-26) .cn-rel.anim { animation: tu526-relSlide 0.4s ease-out forwards; }
        :where(.tech-update-may-26) .cn-rel:hover { background: var(--yellow-light); }
        :where(.tech-update-may-26) .cn-rel strong { font-weight: 800; color: var(--text-dark); display: block; margin-bottom: 2px; }
        :where(.tech-update-may-26) .cn-rel span.desc { color: var(--text-mid); font-size: 0.85rem; font-weight: 500; }

        :where(.tech-update-may-26) .release-check {
            width: 24px; height: 24px; border: 3px solid var(--green); border-radius: 4px;
            display: flex; align-items: center; justify-content: center; flex-shrink: 0;
            background: var(--green-light); color: var(--px-success-text); font-weight: 900; font-size: 0.9rem;
            transition: opacity 0.2s, transform 0.2s, background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s;
        }

        /* Featured releases */
        :where(.tech-update-may-26) .cn-rel.feat {
            background: linear-gradient(90deg, var(--green-light) 0%, var(--bg-white) 40%);
            border-left: 5px solid var(--green); padding-left: 15px;
        }
        :where(.tech-update-may-26) .cn-rel.feat:hover {
            background: linear-gradient(90deg, var(--yellow-light) 0%, color-mix(in srgb, var(--yellow-light) 30%, transparent) 60%, var(--bg-white) 100%);
            border-left-color: var(--yellow);
        }
        :where(.tech-update-may-26) .cn-rel.feat .release-check {
            background: var(--green); color: var(--on-bright); width: 28px; height: 28px;
            font-size: 1rem; position: relative;
        }
        :where(.tech-update-may-26) .cn-rel.feat:hover .release-check {
            background: var(--yellow); border-color: var(--yellow); color: var(--on-bright);
            animation: tu526-starBurst 0.6s ease forwards, tu526-starGlow 0.6s ease forwards;
        }
        :where(.tech-update-may-26) .cn-rel.feat .release-check::before,
:where(.tech-update-may-26) .cn-rel.feat .release-check::after {
            content: "✦"; position: absolute; top: 50%; left: 50%;
            font-size: 14px; color: var(--yellow); opacity: 0; pointer-events: none; z-index: 10;
        }
        :where(.tech-update-may-26) .cn-rel.feat:hover .release-check::before { animation: tu526-sparkleShoot1 0.5s ease-out forwards; }
        :where(.tech-update-may-26) .cn-rel.feat:hover .release-check::after { animation: tu526-sparkleShoot2 0.5s ease-out 0.1s forwards; }
        :where(.tech-update-may-26) .cn-rel.feat strong { font-size: 1.05rem; }
        :where(.tech-update-may-26) .featured-label {
            display: inline-block; font-size: 0.55rem; font-weight: 800;
            letter-spacing: 0.08em; text-transform: uppercase; background: var(--green);
            color: var(--on-bright); padding: 3px 6px; border-radius: 3px; margin-left: 8px; vertical-align: middle;
        }

        /* ===== ISSUES (Jan glitch, Dec sticky note) ===== */
        :where(.tech-update-may-26) #iss-panel { min-height: 200px; display: flex; flex-direction: column; gap: 20px; }

        :where(.tech-update-may-26) .cn-issue {
            padding: 24px; position: relative; border-radius: 2px;
            box-shadow: 4px 4px 12px rgba(0,0,0,0.1); overflow: hidden;
            animation: tu526-issGlitchIn 0.5s steps(1) both;
        }
        :where(.tech-update-may-26) .cn-issue.monitoring { background: var(--yellow-light); }
        :where(.tech-update-may-26) .cn-issue.investigating { background: var(--red-light); }
        :where(.tech-update-may-26) .cn-issue.iss-alt { animation: tu526-issSlideFlicker 0.6s ease-out both; }
        :where(.tech-update-may-26) .cn-issue.iss-alt:nth-child(2) { animation-delay: 0.4s; }
        :where(.tech-update-may-26) .cn-issue.iss-alt:nth-child(3) { animation-delay: 0.8s; }
        :where(.tech-update-may-26) .cn-issue.iss-alt:nth-child(4) { animation-delay: 1.2s; }
        :where(.tech-update-may-26) .cn-issue.iss-alt:nth-child(5) { animation-delay: 1.6s; }
        :where(.tech-update-may-26) .cn-issue.iss-alt:nth-child(6) { animation-delay: 2.0s; }
        :where(.tech-update-may-26) .cn-issue.iss-alt:nth-child(7) { animation-delay: 2.4s; }
        :where(.tech-update-may-26) .cn-issue.iss-alt:nth-child(8) { animation-delay: 2.8s; }
        :where(.tech-update-may-26) .cn-issue.iss-alt:nth-child(n+9) { animation-delay: 2.8s; }
        :where(.tech-update-may-26) .cn-issue-head {
            display: flex; align-items: flex-start; justify-content: space-between;
            gap: 16px; margin-bottom: 12px; flex-wrap: wrap;
        }

        /* Tape on sticky note */
        :where(.tech-update-may-26) .cn-issue::before {
            content: ""; position: absolute; top: 0; left: 30px;
            width: 40px; height: 12px; background: color-mix(in srgb, var(--text-dark) 10%, transparent); border-radius: 0 0 4px 4px;
        }

        /* Scan line */
        :where(.tech-update-may-26) .cn-issue::after {
            content: ""; position: absolute; top: 0; left: -100%; width: 60%; height: 100%;
            background: linear-gradient(90deg, transparent, rgba(247,165,1,0.08), rgba(247,165,1,0.15), rgba(247,165,1,0.08), transparent);
            animation: tu526-issScan 3s ease-in-out infinite;
            animation-delay: var(--jitter, 0s);
        }

        :where(.tech-update-may-26) .cn-issue h3 {
            font-size: 1.15rem; font-weight: 800; margin-bottom: 12px;
            animation: tu526-issGlitchText 4s steps(2) infinite;
            animation-delay: calc(0.5s + var(--jitter, 0s));
        }
        :where(.tech-update-may-26) .cn-issue p { color: var(--text-mid); font-size: 0.9rem; font-weight: 500; line-height: 1.6; margin-top: 12px; }
        :where(.tech-update-may-26) .cn-issue cite {
            display: block; margin-top: 16px; padding-top: 12px; font-style: normal;
            border-top: 2px dashed color-mix(in srgb, var(--text-dark) 15%, transparent); font-family: var(--font-hand);
            font-size: 1.1rem; color: var(--text-dark);
        }

        :where(.tech-update-may-26) .ibadge {
            font-size: 0.65rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase;
            padding: 6px 10px; border-radius: 4px; white-space: nowrap; border: 2px solid var(--border);
        }
        :where(.tech-update-may-26) .ibadge.monitoring { background: var(--yellow); color: var(--on-bright); }
        :where(.tech-update-may-26) .ibadge.investigating { background: var(--red); color: var(--on-bright); animation: tu526-shake 0.5s ease-in-out infinite; }

        /* ===== THE ROAD AHEAD ===== */
        @keyframes tu526-dashDrive {
            from { background-position-y: 0; }
            to { background-position-y: 32px; }
        }
        @keyframes tu526-vanBounce {
            0%, 100% { transform: translateY(0); }
            30% { transform: translateY(-8px) rotate(-3deg); }
            60% { transform: translateY(-3px) rotate(2deg); }
        }
        @keyframes tu526-treeWave {
            0%, 100% { transform: rotate(0deg); }
            50% { transform: rotate(3deg) scale(1.05); }
        }
        :where(.tech-update-may-26) .road {
            position: relative;
            padding: 70px 20px 130px;
        }
        /* Asphalt surface */
        :where(.tech-update-may-26) .road::before {
            content: "";
            position: absolute;
            left: 50%;
            top: 0;
            bottom: 0;
            width: 68px;
            transform: translateX(-50%);
            background: linear-gradient(90deg, #2a2a2a 0%, #3a3a3a 30%, #424242 50%, #3a3a3a 70%, #2a2a2a 100%);
            border-left: 4px solid #555;
            border-right: 4px solid #555;
            border-radius: 34px;
            box-shadow:
                -8px 0 0 -1px rgba(76,175,80,0.15),
                8px 0 0 -1px rgba(76,175,80,0.15),
                -16px 0 0 -3px rgba(76,175,80,0.08),
                16px 0 0 -3px rgba(76,175,80,0.08),
                inset 0 0 20px rgba(0,0,0,0.3);
        }
        /* Animated center dashes */
        :where(.tech-update-may-26) .road::after {
            content: "";
            position: absolute;
            left: 50%;
            top: 30px;
            bottom: 60px;
            width: 4px;
            transform: translateX(-50%);
            background: repeating-linear-gradient(
                180deg,
                rgba(255,255,255,0.85) 0, rgba(255,255,255,0.85) 14px,
                transparent 14px, transparent 30px
            );
            z-index: 2;
            animation: tu526-dashDrive 1.2s linear infinite;
            border-radius: 2px;
        }

        /* Delivery van */
        :where(.tech-update-may-26) .road-van {
            position: absolute;
            top: 22px;
            left: 50%;
            transform: translateX(-50%);
            font-size: 2.2rem;
            z-index: 5;
            filter: drop-shadow(0 4px 10px rgba(0,0,0,0.25));
            line-height: 1;
            will-change: top;
            transition: font-size 0.4s ease;
        }
        :where(.tech-update-may-26) .road-van-bounce {
            display: inline-block;
            animation: tu526-vanBounce 2.5s ease-in-out infinite;
        }
        /* Tyre marks behind van */
        :where(.tech-update-may-26) .road-van::after {
            content: "";
            position: absolute;
            top: 100%;
            left: 50%;
            transform: translateX(-50%);
            width: 20px;
            height: 24px;
            background: repeating-linear-gradient(
                180deg, rgba(80,80,80,0.15) 0, rgba(80,80,80,0.15) 3px, transparent 3px, transparent 7px
            );
            border-radius: 0 0 4px 4px;
            pointer-events: none;
        }

        /* Trees */
        :where(.tech-update-may-26) .road-tree {
            position: absolute;
            z-index: 0;
            opacity: 0.45;
            font-size: 1.3rem;
            animation: tu526-treeWave 4s ease-in-out infinite;
            pointer-events: none;
            user-select: none;
        }

        /* Horizon fog at bottom */
        :where(.tech-update-may-26) .road-fog {
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            height: 110px;
            background: linear-gradient(to top, var(--bg-cream), transparent);
            z-index: 3;
            pointer-events: none;
        }
        :where(.tech-update-may-26) .road-end {
            position: absolute;
            bottom: 28px;
            left: 50%;
            transform: translateX(-50%);
            z-index: 4;
            font-family: var(--font-hand);
            font-size: 1.4rem;
            color: var(--text-mid);
            white-space: nowrap;
        }

        /* Road stops wrapper */
        :where(.tech-update-may-26) .road-stops { position: relative; z-index: 1; }

        /* Each road stop */
        :where(.tech-update-may-26) .road-stop {
            position: relative;
            margin-bottom: -20px;
            width: 44%;
            transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1), transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
        }
        :where(.tech-update-may-26.tu-live) .road-stop { opacity: 0; }
        :where(.tech-update-may-26) .road-stop:nth-child(odd) { margin-left: 0; text-align: right; }
        :where(.tech-update-may-26.tu-live) .road-stop:nth-child(odd) { transform: translateX(-80px); }
        :where(.tech-update-may-26) .road-stop:nth-child(even) { margin-left: auto; text-align: left; }
        :where(.tech-update-may-26.tu-live) .road-stop:nth-child(even) { transform: translateX(80px); }
        :where(.tech-update-may-26) .road-stop:nth-child(1) { transition-delay: 0s; }
        :where(.tech-update-may-26) .road-stop:nth-child(2) { transition-delay: 0.08s; }
        :where(.tech-update-may-26) .road-stop:nth-child(3) { transition-delay: 0.16s; }
        :where(.tech-update-may-26) .road-stop:nth-child(4) { transition-delay: 0.24s; }
        :where(.tech-update-may-26) .road-stop:nth-child(5) { transition-delay: 0.32s; }
        :where(.tech-update-may-26) .road-stop:nth-child(6) { transition-delay: 0.40s; }
        :where(.tech-update-may-26) .road-stop:nth-child(7) { transition-delay: 0.48s; }
        :where(.tech-update-may-26) .road-stop:nth-child(8) { transition-delay: 0.56s; }
        :where(.tech-update-may-26) .road-stop:nth-child(9) { transition-delay: 0.64s; }
        :where(.tech-update-may-26) .road-stop:nth-child(10) { transition-delay: 0.72s; }
        :where(.tech-update-may-26) .road-stop:nth-child(11) { transition-delay: 0.80s; }
        :where(.tech-update-may-26) .road-stop.visible { opacity: 1; transform: translateX(0); }

        /* Highway sign */
        :where(.tech-update-may-26) .road-sign-plate {
            display: inline-block;
            background: #006B3F;
            color: #fff;
            font-family: var(--font-main);
            font-weight: 800;
            font-size: 0.7rem;
            letter-spacing: 0.1em;
            text-transform: uppercase;
            padding: 5px 14px;
            border-radius: 4px;
            border: 2px solid var(--border);
            box-shadow: 3px 3px 0 var(--border);
            margin-bottom: 8px;
            position: relative;
        }
        :where(.tech-update-may-26) .road-sign-plate.soon {
            background: var(--red); color: var(--on-bright);
            animation: tu526-shake 2s ease-in-out infinite;
        }

        /* Road card */
        :where(.tech-update-may-26) .road-card {
            background: var(--bg-white);
            border: 3px solid var(--border);
            border-radius: 8px;
            padding: 18px;
            transition: opacity 0.3s, transform 0.3s, background-color 0.3s, color 0.3s, border-color 0.3s, box-shadow 0.3s;
            text-align: left;
            box-shadow: 4px 4px 0 var(--border);
            cursor: default;
            position: relative;
        }
        :where(.tech-update-may-26) .road-card::before {
            content: "";
            position: absolute;
            top: -8px;
            right: 18px;
            width: 18px;
            height: 14px;
            background: var(--yellow);
            border: 2px solid var(--border);
            border-radius: 2px;
        }
        :where(.tech-update-may-26) .road-card:hover {
            box-shadow: 7px 7px 0 var(--border);
            transform: translateY(-5px);
        }
        :where(.tech-update-may-26) .road-card-header { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
        :where(.tech-update-may-26) .road-card h3 { font-size: 1rem; font-weight: 800; }
        :where(.tech-update-may-26) .road-card p { color: var(--text-mid); font-size: 0.85rem; font-weight: 500; margin-bottom: 10px; line-height: 1.5; }
        :where(.tech-update-may-26) .road-eta { font-family: var(--font-hand); font-size: 1rem; color: var(--text-mid); }

        /* Checkpoint gate */
        :where(.tech-update-may-26) .road-gate {
            position: absolute;
            top: 30%;
            width: 90px;
            height: 7px;
            z-index: 4;
            background: repeating-linear-gradient(90deg, var(--border) 0 4px, #fff 4px 8px);
            border: 1px solid rgba(0,0,0,0.15);
            pointer-events: none;
        }
        :where(.tech-update-may-26) .road-gate::before,
:where(.tech-update-may-26) .road-gate::after {
            content: "🏁";
            position: absolute;
            top: 50%;
            transform: translateY(-50%);
            font-size: 0.85rem;
            line-height: 1;
        }
        :where(.tech-update-may-26) .road-gate::before { right: calc(100% + 3px); }
        :where(.tech-update-may-26) .road-gate::after { left: calc(100% + 3px); }
        :where(.tech-update-may-26) .road-stop:nth-child(odd) .road-gate { left: 114%; transform: translateX(-50%) translateY(-50%); }
        :where(.tech-update-may-26) .road-stop:nth-child(even) .road-gate { left: -14%; transform: translateX(-50%) translateY(-50%); }

        /* Sign plate color variants */
        :where(.tech-update-may-26) .road-sign-plate.orange { background: var(--yellow); color: var(--on-bright); }
        :where(.tech-update-may-26) .road-sign-plate.mellow { background: #FFD54F; color: var(--on-bright); }
        :where(.tech-update-may-26) .road-sign-plate.lemon { background: #FFE082; color: var(--on-bright); }
        :where(.tech-update-may-26) .tag.tag-sm { font-size: 0.5rem; padding: 2px 6px; border-width: 1px; margin-left: 8px; vertical-align: middle; }

        /* ===== TAGS ===== */
        :where(.tech-update-may-26) .tag {
            font-size: 0.6rem; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase;
            padding: 4px 8px; border-radius: 4px; border: 2px solid var(--border); display: inline-block;
        }
        :where(.tech-update-may-26) .tag.new { background: var(--green); color: var(--on-bright); }
        :where(.tech-update-may-26) .tag.not-scoped { background: var(--px-purple-bg); color: var(--px-purple-text); }
        :where(.tech-update-may-26) .tag.negotiating { background: var(--yellow); color: var(--on-bright); }
        :where(.tech-update-may-26) .tag.delay { background: var(--red); color: var(--on-bright); }

        /* ===== FOOTER ===== */
        :where(.tech-update-may-26) footer { text-align: center; padding: 40px 0 20px; }
        :where(.tech-update-may-26) .footer-content {
            display: inline-flex; align-items: center; gap: 10px;
            background: var(--bg-white); padding: 12px 24px;
            border: 3px solid var(--border); border-radius: 50px;
            box-shadow: 4px 4px 0 var(--border);
        }
        :where(.tech-update-may-26) .footer-content span { font-weight: 700; font-size: 0.9rem; }
        :where(.tech-update-may-26) .footer-content { transition: opacity 0.2s, transform 0.2s, background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; cursor: default; }
        :where(.tech-update-may-26) .footer-content:hover {
            animation: tu526-footerWiggle 0.4s ease-in-out;
            box-shadow: 6px 6px 0 var(--border);
            transform: translate(-2px, -2px);
        }
        :where(.tech-update-may-26) .footer-content svg { transition: transform 0.3s; }
        :where(.tech-update-may-26) .footer-content:hover svg { transform: rotate(20deg) scale(1.2); }

        /* ===== RESPONSIVE ===== */
        @media (max-width: 768px) {
            :where(.tech-update-may-26) header { margin-left: 0; }
            :where(.tech-update-may-26) .container { padding: 24px 16px 60px; }
            :where(.tech-update-may-26) h1 { font-size: 2.2rem; }
            :where(.tech-update-may-26) .handwritten-note {
                display: block; transform: rotate(2deg);
                margin-top: 8px; font-size: 2.2rem;
            }
            :where(.tech-update-may-26) .handwritten-note::before { content: "↑"; }
            :where(.tech-update-may-26) .hl-flip-grid { grid-template-columns: 1fr; }
            :where(.tech-update-may-26) .cn-tabs { flex-wrap: wrap; }
            :where(.tech-update-may-26) .cn-tab { font-size: 0.75rem; padding: 8px 12px; }
            :where(.tech-update-may-26) .road::before { left: 22px; transform: none; width: 48px; border-radius: 24px; }
            :where(.tech-update-may-26) .road::after { left: 44px; transform: none; }
            :where(.tech-update-may-26) .road { padding: 60px 0 100px 10px; }
            :where(.tech-update-may-26) .road-van { left: 46px; font-size: 1.6rem; }
            :where(.tech-update-may-26) .road-stops { padding-left: 0; }
            :where(.tech-update-may-26) .road-stop { width: calc(100% - 86px) !important; margin-left: 86px !important; text-align: left !important; margin-bottom: 14px !important; }
            :where(.tech-update-may-26) .road-stop .road-gate { left: -42px !important; transform: translateX(-50%) !important; width: 48px; top: 18px; }
            :where(.tech-update-may-26) .road-stop .road-gate::before,
:where(.tech-update-may-26) .road-stop .road-gate::after { font-size: 0.75rem; }
            :where(.tech-update-may-26) .road-tree { display: none; }
            :where(.tech-update-may-26) .hero-doodle { display: none; }
        }
        /* Motion-sensitive readers get the content without the choreography.
           Reveal states are forced on so nothing stays stuck at opacity 0, and the
           card flip keeps working - only its transition is dropped, not its transform. */
        @media (prefers-reduced-motion: reduce) {
            :where(.tech-update-may-26), :where(.tech-update-may-26) *,
:where(.tech-update-may-26) *::before, :where(.tech-update-may-26)::before,
:where(.tech-update-may-26) *::after, :where(.tech-update-may-26)::after {
                animation-duration: 0.001ms !important;
                animation-iteration-count: 1 !important;
                transition-duration: 0.001ms !important;
                transition-delay: 0s !important;
                animation-delay: 0s !important;
                scroll-behavior: auto !important;
            }
            :where(.tech-update-may-26) .road-stop,
:where(.tech-update-may-26) .cn-rel,
:where(.tech-update-may-26) .hl-flip-card {
                opacity: 1 !important;
                transform: none !important;
            }
            :where(.tech-update-may-26) .hl-flip-card.flipped .hl-flip-inner { transform: rotateY(180deg) !important; }
            :where(.tech-update-may-26) .hl-flip-card:not(.flipped):hover .hl-flip-inner { transform: none !important; }
            :where(.tech-update-may-26) .road-card:hover { transform: none !important; }
            :where(.tech-update-may-26) .confetti-wrap { display: none !important; }
            :where(.tech-update-may-26) .road-van { display: none !important; }
        }
    