.projects-section{overflow:hidden;background:radial-gradient(circle at 50% 44%,rgba(var(--accent-rgb),.08),transparent 38%)}
.project-carousel{position:relative;margin-top:6px;isolation:isolate}
.project-carousel::before{content:"";position:absolute;z-index:-1;left:50%;top:44%;width:min(78vw,1050px);height:280px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(var(--accent-rgb),.14),transparent 68%);filter:blur(12px);pointer-events:none}
.project-carousel::after{content:"";position:absolute;z-index:-1;left:50%;bottom:84px;width:min(82vw,1080px);height:1px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,rgba(var(--accent-rgb),.42),transparent);box-shadow:0 0 30px rgba(var(--accent-rgb),.24)}
.carousel-viewport{display:grid;place-items:start center;width:100%;padding:18px 0 48px;perspective:1500px;perspective-origin:50% 44%;transform-style:preserve-3d;touch-action:pan-y;cursor:grab;outline:none}
.carousel-viewport:focus-visible{outline:1px solid rgba(var(--accent-rgb),.6);outline-offset:10px;border-radius:18px}
.carousel-viewport.is-dragging{cursor:grabbing}
.carousel-viewport .project-card{position:relative;grid-area:1/1;width:min(640px,52vw);transform:translate3d(var(--carousel-x,0),0,var(--carousel-z,0)) rotateY(var(--carousel-rotate,0)) scale(var(--carousel-scale,1));transform-origin:center center;opacity:var(--carousel-opacity,0);transition:transform .72s cubic-bezier(.2,.85,.25,1),opacity .52s ease,border-color .35s,box-shadow .35s;will-change:transform,opacity;backface-visibility:hidden}
.carousel-viewport .project-card::before{content:"";position:absolute;z-index:5;inset:0;border-radius:inherit;background:linear-gradient(115deg,transparent 18%,rgba(255,255,255,.08) 44%,transparent 64%);transform:translateX(-120%);transition:transform .8s var(--ease);pointer-events:none}
.carousel-viewport .project-card.is-active{border-color:rgba(var(--accent-rgb),.38);box-shadow:0 42px 100px rgba(0,0,0,.34),0 0 0 1px rgba(var(--accent-rgb),.08),0 0 54px rgba(var(--accent-rgb),.1)}
.carousel-viewport .project-card.is-active:hover{transform:translate3d(var(--carousel-x,0),-5px,var(--carousel-z,0)) rotateY(var(--carousel-rotate,0)) scale(var(--carousel-scale,1))}
.carousel-viewport .project-card.is-active:hover::before{transform:translateX(120%)}
.carousel-viewport .project-card:not(.is-active){cursor:pointer;user-select:none}
.carousel-viewport .project-card:not(.is-active) .project-body,.carousel-viewport .project-card:not(.is-active) .project-image{filter:saturate(.55) brightness(.74)}
.carousel-viewport .project-card:not(.is-active) a,.carousel-viewport .project-card:not(.is-active) button{pointer-events:none}
.carousel-viewport .project-card:not(.is-active):hover{border-color:rgba(var(--accent-rgb),.32)}
.carousel-viewport .project-desc{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:5;line-clamp:5}
.project-image.is-scrollable{overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(var(--accent-rgb),.5) transparent;touch-action:pan-y;cursor:ns-resize;box-shadow:inset 0 -24px 30px -30px rgba(var(--accent-rgb),.75)}
.project-image.is-scrollable::-webkit-scrollbar{width:4px}.project-image.is-scrollable::-webkit-scrollbar-track{background:transparent}.project-image.is-scrollable::-webkit-scrollbar-thumb{border-radius:99px;background:rgba(var(--accent-rgb),.55)}
.project-image.is-scrollable>img{height:auto;min-height:100%;object-fit:contain;transform:none!important;transition:none!important}
.project-image.is-scrollable.is-auto-scrolling{cursor:progress}
.project-preview-frame{position:relative;min-width:0;min-height:0;overflow:hidden}.project-preview-frame>.project-image{width:100%}.project-preview-frame>.project-logo{z-index:4}
.project-scroll-cue{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:38px;padding:8px 14px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface-2) 82%,var(--bg));color:var(--text-soft);font:600 .62rem var(--mono);letter-spacing:.04em;transition:background .2s,color .2s}.project-scroll-cue span{display:flex;align-items:center;gap:8px}.project-scroll-cue svg{width:15px;height:15px;color:var(--accent);animation:previewCue 1.8s ease-in-out infinite}.project-scroll-cue small{color:var(--muted);font:600 .54rem var(--mono);letter-spacing:.13em}.project-scroll-cue:hover,.project-scroll-cue:focus-visible{background:rgba(var(--accent-rgb),.09);color:var(--accent)}.project-scroll-cue.has-progress svg{transform:rotate(180deg);animation:none}.carousel-viewport .project-card:not(.is-active) .project-scroll-cue{opacity:.35}.projects-list .project-scroll-cue{min-height:34px}.projects-list .project-scroll-cue small{display:none}@keyframes previewCue{0%,100%{transform:translateY(-1px)}50%{transform:translateY(3px)}}
.service-visual{position:relative;isolation:isolate;gap:8px;overflow:hidden;background:radial-gradient(circle at 50% 45%,rgba(var(--accent-rgb),.2),transparent 34%),linear-gradient(145deg,#071522,var(--surface-2));color:#dff6ff}
.service-visual::before{content:"";position:absolute;width:68%;aspect-ratio:1;border:1px solid rgba(var(--accent-rgb),.25);border-radius:50%;background:radial-gradient(circle,transparent 48%,rgba(var(--accent-rgb),.04) 49%,transparent 52%);box-shadow:0 0 45px rgba(var(--accent-rgb),.12);animation:orbit 16s linear infinite}
.service-visual::after{content:"";position:absolute;width:88%;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);box-shadow:0 0 13px rgba(var(--accent-rgb),.5)}
.service-visual img{position:relative;z-index:2;width:74px;height:74px;object-fit:contain;filter:drop-shadow(0 0 18px rgba(var(--accent-rgb),.34))}
.service-visual strong,.service-visual>span:last-child{position:relative;z-index:2}.service-visual strong{font:600 .65rem var(--mono);letter-spacing:.14em}.service-visual>span:last-child{color:#8faaba;font:500 .57rem var(--mono)}
.service-orbit{position:absolute!important;z-index:1!important;width:46%;aspect-ratio:1;border:1px dashed rgba(124,140,255,.35);border-radius:50%;animation:orbit 10s linear reverse infinite}
.carousel-controls{position:relative;z-index:30;display:flex;align-items:center;justify-content:center;gap:clamp(18px,4vw,54px);margin-top:2px}
.carousel-controls[hidden],.carousel-hint[hidden]{display:none}
.carousel-arrow{display:grid;place-items:center;width:50px;height:50px;border:1px solid var(--line-strong);border-radius:50%;background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--text);box-shadow:0 10px 30px rgba(0,0,0,.16);transition:transform .25s var(--ease),border-color .25s,color .25s,box-shadow .25s}
.carousel-arrow svg{width:19px;height:19px}.carousel-arrow.prev svg{transform:rotate(180deg)}
.carousel-arrow:hover{transform:scale(1.08);border-color:var(--accent);color:var(--accent);box-shadow:0 0 28px rgba(var(--accent-rgb),.18)}
.carousel-position{display:flex;align-items:center;gap:14px;color:var(--muted);font:600 .68rem var(--mono);letter-spacing:.06em}
.carousel-dots{display:flex;align-items:center;gap:7px}
.carousel-dots button{display:grid;place-items:center;width:18px;height:30px}
.carousel-dots button span{display:block;width:5px;height:5px;border-radius:99px;background:var(--muted);opacity:.52;transition:width .3s var(--ease),background .3s,opacity .3s,box-shadow .3s}
.carousel-dots button.active span{width:22px;background:var(--accent);opacity:1;box-shadow:0 0 14px rgba(var(--accent-rgb),.6)}
.carousel-hint{display:flex;justify-content:center;gap:22px;margin-top:13px;color:var(--muted);font:500 .58rem var(--mono);letter-spacing:.1em}
.carousel-hint span{display:flex;align-items:center;gap:7px}.carousel-hint span::before{content:"";width:3px;height:3px;border-radius:50%;background:var(--accent)}
.project-carousel.is-empty .carousel-viewport,.project-carousel.is-empty .carousel-controls,.project-carousel.is-empty .carousel-hint{display:none}
.project-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:17px}.project-facts li{padding:9px;border-left:2px solid var(--accent);background:var(--surface-2);color:var(--text-soft);font:500 .59rem/1.4 var(--mono)}
@media(max-width:860px){.carousel-viewport .project-card{width:min(610px,72vw)}.carousel-viewport{perspective:1200px}.project-carousel::before{width:110vw}}
@media(max-width:620px){.project-carousel{margin-inline:0}.carousel-viewport{padding:12px 18px 34px;perspective:900px}.carousel-viewport .project-card{width:calc(100vw - 72px);border-radius:14px}.carousel-viewport .project-desc{-webkit-line-clamp:7;line-clamp:7}.carousel-viewport .project-card:not(.is-active) .project-body{visibility:hidden}.carousel-controls{position:absolute;top:66px;left:0;right:0;justify-content:space-between;padding:0 4px;pointer-events:none}.carousel-controls>*{pointer-events:auto}.carousel-arrow{width:42px;height:42px;background:rgba(6,16,29,.76);color:#eaf7ff;backdrop-filter:blur(12px)}.carousel-position{gap:7px;padding:7px 10px;border:1px solid rgba(255,255,255,.15);border-radius:999px;background:rgba(6,16,29,.76);color:#a9c1d2;backdrop-filter:blur(12px)}.carousel-dots{display:none}.carousel-hint{gap:11px;font-size:.5rem}.carousel-hint span:nth-child(3){display:none}.project-facts{grid-template-columns:1fr}}
@media(max-width:370px){.carousel-hint span:nth-child(2){display:none}.carousel-controls{gap:10px}.carousel-position{gap:5px}}
@media(prefers-reduced-motion:reduce){.carousel-viewport .project-card,.carousel-dots button span,.carousel-arrow{transition-duration:.01ms!important}.service-visual::before,.service-orbit{animation:none}}

/* Project discovery and case-study layer */
.carousel-guide{position:absolute;z-index:40;left:50%;top:34px;display:flex;align-items:center;gap:12px;width:min(92%,420px);padding:12px 14px;transform:translate(-50%,-10px);border:1px solid rgba(var(--accent-rgb),.34);border-radius:12px;background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:0 18px 50px rgba(0,0,0,.24);backdrop-filter:blur(14px);opacity:0;visibility:hidden;transition:.3s var(--ease)}
.carousel-guide.show{transform:translate(-50%,0);opacity:1;visibility:visible}.carousel-guide>svg{flex:0 0 auto;color:var(--accent);transform:rotate(180deg)}.carousel-guide span{min-width:0;flex:1}.carousel-guide strong,.carousel-guide small{display:block}.carousel-guide strong{font-size:.78rem}.carousel-guide small{margin-top:2px;color:var(--muted);font:500 .62rem var(--mono)}.carousel-guide button{display:grid;place-items:center;width:31px;height:31px;border:1px solid var(--line);border-radius:8px;color:var(--muted)}.carousel-guide button:hover{color:var(--accent)}.carousel-guide button svg{width:15px;height:15px}
.case-study-overlay{padding:clamp(10px,3vw,28px);overflow-y:auto}.case-study-dialog{width:min(100%,920px);max-height:calc(100dvh - 40px);overflow:auto;border:1px solid var(--line-strong);border-radius:18px;background:var(--surface);box-shadow:0 40px 120px rgba(0,0,0,.46);transform:translateY(20px) scale(.985);transition:.28s var(--ease)}.case-study-overlay.open .case-study-dialog{transform:none}.case-study-head{position:sticky;z-index:2;top:0;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:28px 30px 24px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(16px)}.case-study-head h2{margin-top:11px;font-size:clamp(2rem,5vw,3.5rem)}.case-study-meta{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:14px;color:var(--muted);font:500 .65rem var(--mono)}.case-study-meta>span:not(.status-badge){padding-left:9px;border-left:1px solid var(--line)}.case-study-content{display:grid;grid-template-columns:repeat(2,1fr)}.case-study-content section{padding:27px 30px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.case-study-content section:nth-child(2n){border-right:0}.case-study-content section:nth-last-child(-n+2){border-bottom:0}.case-study-content section>span{color:var(--accent);font:600 .61rem var(--mono);letter-spacing:.12em}.case-study-content h3{margin-top:10px;font-size:1.15rem}.case-study-content p{margin-top:12px;font-size:.86rem;line-height:1.75}.case-study-content ul{display:grid;gap:8px;margin-top:14px}.case-study-content li{padding-left:14px;position:relative;color:var(--text-soft);font:.76rem/1.55 var(--mono)}.case-study-content li::before{content:"";position:absolute;left:0;top:.57em;width:4px;height:4px;border-radius:50%;background:var(--accent)}.case-study-stack{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}.case-study-actions{display:flex;flex-wrap:wrap;gap:9px;padding:20px 30px;border-top:1px solid var(--line);background:var(--surface-2)}
@media(max-width:620px){.carousel-guide{top:12px}.case-study-overlay{padding:0}.case-study-dialog{max-height:100dvh;border-radius:0}.case-study-head{padding:22px 18px 18px}.case-study-content{grid-template-columns:1fr}.case-study-content section,.case-study-content section:nth-child(2n),.case-study-content section:nth-last-child(-n+2){padding:22px 18px;border-right:0;border-bottom:1px solid var(--line)}.case-study-content section:last-child{border-bottom:0}.case-study-actions{padding:17px 18px}.case-study-actions .btn{width:100%}}
@media(prefers-reduced-motion:reduce){.carousel-guide,.case-study-dialog{transition:none}}
