.repo-projects{padding:80px 0 110px;border-top:1px solid var(--line-2)}
.repo-projects-head{max-width:760px;margin:0 auto 34px;text-align:center}
.repo-projects-head h2{font-family:var(--display);font-size:clamp(32px,5vw,58px);line-height:.98;letter-spacing:-.035em;margin:8px 0 14px;color:var(--ink)}
.repo-projects-head p{color:var(--ink-soft);font-size:16px;line-height:1.55}
.repo-media-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:start}
.repo-media-card{min-width:0;border:1px solid var(--line-2);border-radius:16px;background:#fff;overflow:hidden;box-shadow:0 20px 50px -38px rgba(20,32,43,.45)}
.repo-media-card summary{position:relative;display:block;cursor:pointer;list-style:none}
.repo-media-card summary::-webkit-details-marker{display:none}
.repo-media-cover{display:block;width:100%;height:230px;object-fit:contain;background:#f3f6f8}
.repo-media-info{display:flex;flex-direction:column;gap:5px;padding:16px 56px 17px 18px}
.repo-media-info strong{font:700 20px/1.15 var(--display);color:var(--ink)}
.repo-media-info small{font:700 10px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
.repo-media-chevron{position:absolute;right:17px;bottom:20px;color:var(--brand);font:700 23px/1 var(--mono);transition:transform .2s}
.repo-media-card[open] .repo-media-chevron{transform:rotate(45deg)}
.repo-media-content{padding:0 18px 18px;border-top:1px solid var(--line-2)}
.repo-source{display:inline-block;margin:14px 0;font:700 11px/1.4 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--brand);text-decoration:none}
.repo-source:hover{text-decoration:underline}
.repo-media-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.repo-media-item{min-width:0;margin:0;border:1px solid var(--line-2);border-radius:9px;overflow:hidden;background:#f6f8fa}
.repo-media-item img,.repo-media-item video{display:block;width:100%;height:150px;object-fit:contain;background:#edf1f4}
.repo-media-item figcaption{padding:7px 9px;font:10px/1.3 var(--mono);color:var(--ink-soft);overflow-wrap:anywhere}
.repo-media-empty{font-size:13px;color:var(--ink-soft)}
@media(max-width:760px){.repo-projects{padding:60px 0 80px}.repo-media-list{grid-template-columns:1fr}.repo-media-cover{height:210px}.repo-media-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.repo-media-chevron{transition:none}}
.repo-media-cover.repo-media-logo{padding:28px;background:#14202b}
.repo-media-cover.repo-media-branded{background:#14202b}

.repo-media-item img{cursor:zoom-in}
.repo-media-item img:focus-visible{outline:3px solid var(--brand);outline-offset:3px}
.repo-lightbox{position:fixed;inset:0;margin:auto;padding:18px;width:fit-content;max-width:94vw;max-height:94vh;overflow:visible;border:1px solid rgba(255,255,255,.22);border-radius:14px;background:rgba(14,24,34,.97);color:#fff;box-shadow:0 24px 90px rgba(0,0,0,.55)}
.repo-lightbox[open]{animation:repoLightboxIn .2s ease both}
.repo-lightbox::backdrop{background:rgba(5,10,16,.82);backdrop-filter:blur(5px)}
.repo-lightbox-frame{display:grid;justify-items:center;gap:10px;margin:0;padding-top:24px}
.repo-lightbox-image{display:block;width:auto;height:auto;max-width:min(88vw,1400px);max-height:82vh;object-fit:contain;border-radius:7px}
.repo-lightbox-caption{max-width:88vw;color:rgba(255,255,255,.78);font:12px/1.4 var(--mono);text-align:center}
.repo-lightbox-close{position:absolute;top:8px;right:10px;z-index:1;display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font:26px/1 Arial,sans-serif;cursor:pointer}
.repo-lightbox-close:hover,.repo-lightbox-close:focus-visible{background:rgba(255,255,255,.24);outline:2px solid #fff;outline-offset:2px}
@keyframes repoLightboxIn{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}
@media(max-width:600px){.repo-lightbox{max-width:96vw;padding:12px}.repo-lightbox-image{max-width:90vw;max-height:78vh}}
@media(prefers-reduced-motion:reduce){.repo-lightbox[open]{animation:none}}
/* The custom cursor layer sits behind native dialog top-layer content. */
.repo-lightbox,.repo-lightbox *{cursor:auto!important}
.repo-lightbox-close{cursor:pointer!important}
