/* ct-shots: screenshot slider + lightbox, shared by every tech-* page.
   Markup contract and behaviour: js/tech-shots.js. Per-instance accent: --shots-accent (default --ct-accent).
   Optional per-instance: --shots-max (width, 860px), --shots-ratio (viewport aspect-ratio, default: image height). */
.ct-shots{--_a:var(--shots-accent,var(--ct-accent));max-width:var(--shots-max,860px);margin:0 auto;text-align:left;background:var(--ct-shot-panel);border:1px solid var(--ct-border);border-radius:14px;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.65);}
:where(.ct-shots) button{font:inherit;color:inherit;cursor:pointer;}
.ct-shots button:focus-visible,.ct-lb button:focus-visible{outline:2px solid var(--_a,var(--ct-accent));outline-offset:2px;}
.ct-shots__chrome{background:var(--ct-shot-bar);border-bottom:1px solid var(--ct-border);padding:.55rem 1rem;display:flex;align-items:center;gap:.75rem;}
.ct-shots__dots{display:flex;gap:.35rem;}
.ct-shots__dots span{width:8px;height:8px;border-radius:50%;}
.ct-shots__dots span:nth-child(1){background:#ef4444;}
.ct-shots__dots span:nth-child(2){background:#f59e0b;}
.ct-shots__dots span:nth-child(3){background:#22c55e;}
.ct-shots__url{flex:1;min-width:0;background:var(--ct-shot);border-radius:5px;padding:.22rem .75rem;font-size:.75rem;line-height:1.4;color:var(--ct-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ct-shots__viewport{position:relative;overflow:hidden;background:var(--ct-shot);aspect-ratio:var(--shots-ratio,auto);}
.ct-shots__track{display:flex;height:100%;transition:transform .45s cubic-bezier(.4,0,.2,1);}
.ct-shots__slide{flex:0 0 100%;min-width:0;height:100%;}
.ct-shots__slide img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;}
.ct-shots__zoom,.ct-shots__play{position:relative;display:block;width:100%;height:100%;padding:0;margin:0;border:0;background:none;}
.ct-shots__zoom{cursor:zoom-in;}
.ct-shots__hint{position:absolute;right:.5rem;bottom:.5rem;width:28px;height:28px;border-radius:6px;background:rgba(0,0,0,.6);color:var(--ct-text);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .18s;pointer-events:none;}
.ct-shots__zoom:hover .ct-shots__hint,.ct-shots__zoom:focus-visible .ct-shots__hint{opacity:1;}
.ct-shots__playbtn{position:absolute;inset:0;margin:auto;width:72px;height:72px;border-radius:50%;background:var(--shots-play,var(--ct-blue));color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 30px rgba(0,0,0,.5);transition:transform .18s;}
.ct-shots__play:hover .ct-shots__playbtn{transform:scale(1.08);}
.ct-shots__slide iframe{width:100%;height:100%;border:0;display:block;aspect-ratio:16/9;}
.ct-shots__arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:44px;height:44px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.2);color:var(--ct-text);transition:background .18s;}
.ct-shots__arrow:hover{background:rgba(0,0,0,.85);}
.ct-shots__arrow--prev{left:.5rem;}
.ct-shots__arrow--next{right:.5rem;}
.ct-shots__caption{display:flex;gap:.85rem;align-items:flex-start;background:var(--ct-shot);border-top:1px solid var(--ct-border);padding:1rem 1.15rem;min-height:98px;}
.ct-shots__num{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;margin-top:.12rem;border-radius:50%;background:var(--ct-shot-bar);border:1px solid var(--_a);color:var(--_a);font-size:.78rem;font-weight:800;line-height:1;}
.ct-shots__cap-title{font-size:1rem;font-weight:800;line-height:1.2;color:var(--ct-text);margin:0 0 .3rem;letter-spacing:-.01em;}
.ct-shots__cap-text{font-size:.88rem;color:var(--ct-muted);line-height:1.6;margin:0;}
.ct-shots__thumbs{position:relative;background:var(--ct-shot);border-top:1px solid var(--ct-border);padding:.5rem 1rem;display:flex;gap:.35rem;align-items:flex-end;overflow-x:auto;}
.ct-shots__thumb:first-child{margin-left:auto;}
.ct-shots__thumb:last-child{margin-right:auto;}
.ct-shots__thumb{flex-shrink:0;min-width:44px;min-height:44px;padding:.3rem .35rem;border:0;border-radius:6px;background:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;}
.ct-shots__thumb img{width:64px;height:38px;object-fit:cover;object-position:top;border-radius:5px;border:2px solid transparent;background:#000;opacity:.5;transition:border-color .18s,opacity .18s,transform .18s;}
.ct-shots__thumb:hover img{opacity:1;}
.ct-shots__thumb[aria-current="true"] img{opacity:1;border-color:var(--_a);}
.ct-shots__thumb span{font-size:.75rem;font-weight:600;line-height:1.2;color:var(--ct-muted);white-space:nowrap;}
.ct-shots__thumb[aria-current="true"] span{color:var(--_a);}
@media(max-width:640px){.ct-shots__caption{min-height:132px;}}
@media(prefers-reduced-motion:reduce){.ct-shots__track,.ct-shots__hint,.ct-shots__playbtn,.ct-shots__thumb img{transition:none;}}

/* Lightbox: built by tech-shots.js on first open */
.ct-lb{position:fixed;inset:0;z-index:999;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center;animation:ct-lb-in .2s ease-out;}
.ct-lb[hidden]{display:none;}
@keyframes ct-lb-in{from{opacity:0}to{opacity:1}}
.ct-lb__img{max-width:92vw;max-height:88vh;border-radius:8px;box-shadow:0 24px 80px rgba(0,0,0,.8);object-fit:contain;display:block;}
.ct-lb__close,.ct-lb__arrow{position:absolute;width:44px;height:44px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--ct-shot-bar);border:1px solid var(--ct-border);color:var(--ct-text);cursor:pointer;transition:background .18s;}
.ct-lb__close:hover,.ct-lb__arrow:hover{background:var(--ct-surface);}
.ct-lb__close{top:1rem;right:1rem;}
.ct-lb__arrow{top:50%;transform:translateY(-50%);}
.ct-lb__arrow--prev{left:1rem;}
.ct-lb__arrow--next{right:1rem;}
.ct-lb__arrow[hidden],.ct-lb__counter[hidden]{display:none;}
.ct-lb__counter{position:absolute;bottom:1rem;left:50%;transform:translateX(-50%);font-size:.8rem;color:var(--ct-muted);}
@media(max-width:640px){.ct-lb__arrow{top:auto;bottom:.75rem;transform:none;}.ct-lb__counter{bottom:1.4rem;}}
@media(prefers-reduced-motion:reduce){.ct-lb{animation:none;}}
