/* kit.css — owned by the signage lane (zone signs + doors). */
@keyframes bob { 50% { transform: translateY(-5px); } } /* also used by the street lane's .hint */
.sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* LEARN / BUILD / SHIP boards: dotted base, warm lamp halos, glowing title layer on top */
.zone-sign { position: absolute; translate: -50% 0; pointer-events: none; }
.zs-art { position: relative; }
.zs-art canvas { position: absolute; left: 0; top: 0; display: block; }
.zs-glow { filter: drop-shadow(0 0 2px rgba(150, 250, 170, .7)) drop-shadow(0 0 calc(var(--p) * 2.5) rgba(110, 235, 140, .35)); }
.zs-halo { position: absolute; width: calc(var(--p) * 9); height: calc(var(--p) * 9); translate: -50% -50%; border-radius: 50%; background: radial-gradient(circle, rgba(255, 214, 120, .5), rgba(255, 170, 60, .16) 45%, transparent 70%); }

/* neon doorways */
.door { position: absolute; display: block; text-decoration: none; --glow: rgba(60, 240, 110, .8); --spill: rgba(60, 240, 110, .22); }
.door.d-school { --glow: rgba(230, 242, 235, .62); --spill: rgba(230, 242, 235, .14); }
.door.d-labs { --glow: rgba(70, 175, 255, .8); --spill: rgba(70, 175, 255, .2); }
.door::after { content: ''; position: absolute; z-index: -1; left: -35%; right: -35%; bottom: calc(var(--p) * -6); height: calc(var(--p) * 11); background: radial-gradient(ellipse 50% 40% at 50% 55%, var(--spill), transparent); pointer-events: none; transition: opacity .3s; opacity: .75; }
.door-frame { position: relative; display: block; }
.door-art { display: block; filter: drop-shadow(0 0 calc(var(--p) * .8) var(--glow)); transition: filter .3s; }
.door-in { position: absolute; bottom: 8%; display: grid; place-items: center; }
.door-logo { display: block; max-width: 84%; max-height: 64%; object-fit: contain; }
.d-kd .door-logo { width: 150%; max-width: none; max-height: none; image-rendering: pixelated; filter: drop-shadow(0 0 6px rgba(60, 240, 110, .45)); }
.d-labs .door-logo { max-width: 92%; image-rendering: pixelated; filter: drop-shadow(0 0 5px rgba(70, 175, 255, .4)); }
.d-school .door-logo { max-width: 86%; filter: drop-shadow(0 0 5px rgba(255, 255, 255, .3)); }
.door-prompt { position: absolute; left: 50%; bottom: calc(100% + var(--p) * .5); translate: -50% 0; opacity: .72; transition: opacity .3s, filter .3s; }
.door-pill { display: block; }
.door.near .door-prompt { opacity: 1; filter: drop-shadow(0 0 5px rgba(175, 230, 184, .55)); animation: bob 1.1s ease-in-out infinite; }
.door.near .door-art { filter: drop-shadow(0 0 calc(var(--p) * 1) var(--glow)) drop-shadow(0 0 calc(var(--p) * 4) var(--glow)) brightness(1.12); }
.door.near::after { opacity: 1; }
.door:hover .door-art, .door:focus-visible .door-art { filter: drop-shadow(0 0 calc(var(--p) * 1) var(--glow)) drop-shadow(0 0 calc(var(--p) * 4) var(--glow)) brightness(1.2); }
