.project-thumb{aspect-ratio:16/9;background:var(--surface-muted);overflow:hidden;position:relative}.project-thumb img{height:100%;object-fit:cover;transition:transform var(--duration-slow) var(--easing-spring);width:100%}.card--project:hover .project-thumb img{transform:scale(1.05)}.project-carousel{aspect-ratio:16/9;background:var(--color-space-900);border-radius:var(--radius-cartoon);margin-bottom:var(--sp-4);overflow:hidden;position:relative;width:100%}.carousel-track{height:100%;position:relative;width:100%}.carousel-slide{height:100%;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition:opacity var(--duration-base) ease-in-out;width:100%}.carousel-slide.active{opacity:1;pointer-events:auto}.carousel-slide img{background:var(--color-space-900);height:100%;object-fit:contain;width:100%}.carousel-btn{align-items:center;backdrop-filter:blur(4px);background:rgba(0,0,0,.6);border:none;border-radius:var(--radius-full);box-shadow:0 2px 8px rgba(0,0,0,.3);color:#fff;cursor:pointer;display:flex;height:40px;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);transition:all var(--duration-fast) ease;width:40px;z-index:10}.carousel-btn:hover{background:rgba(0,0,0,.8);transform:translateY(-50%) scale(1.1)}.carousel-btn:active{transform:translateY(-50%) scale(.95)}.carousel-prev{left:var(--sp-2)}.carousel-next{right:var(--sp-2)}.carousel-btn .icon{height:20px;width:20px}.carousel-indicators{bottom:var(--sp-2);display:flex;gap:var(--sp-1);left:50%;position:absolute;transform:translateX(-50%);z-index:10}.carousel-indicator{background:hsla(0,0%,100%,.4);border:none;border-radius:var(--radius-full);cursor:pointer;height:8px;padding:0;transition:all var(--duration-fast) ease;width:8px}.carousel-indicator:hover{background:hsla(0,0%,100%,.7);transform:scale(1.2)}.carousel-indicator.active{background:#fff;width:24px}.project-modal-content{padding:var(--sp-4) 0}.project-modal-content header{align-items:center;display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3)}.project-modal-content h2{color:var(--color-text-primary);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin:0}.project-modal-content .lead{color:var(--color-text-secondary);font-size:var(--font-size-lg);line-height:1.6;margin-bottom:var(--sp-4)}.project-long-desc{color:var(--color-text-primary);line-height:1.7;margin-bottom:var(--sp-4);white-space:pre-wrap}.project-features{margin:var(--sp-4) 0}.project-features h3{color:var(--color-text-primary);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--sp-2)}.project-features ul{display:flex;flex-direction:column;gap:var(--sp-2);list-style:none;margin:0;padding:0}.project-features li{color:var(--color-text-primary);padding-left:var(--sp-4);position:relative}.project-features li:before{color:var(--color-accent-primary);content:"✓";font-weight:700;left:0;position:absolute}.tags-section{margin:var(--sp-4) 0}.tags-section h4{color:var(--color-text-secondary);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);letter-spacing:.05em;margin-bottom:var(--sp-2);text-transform:uppercase}.project-links{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-5)}@media (max-width:768px){.project-carousel{aspect-ratio:4/3}.carousel-btn{height:32px;width:32px}.carousel-btn .icon{height:16px;width:16px}.carousel-indicators{bottom:var(--sp-1)}.carousel-indicator{height:6px;width:6px}.carousel-indicator.active{width:18px}.project-modal-content h2{font-size:var(--font-size-xl)}.project-links{flex-direction:column}.project-links .btn{width:100%}}@media (prefers-reduced-motion:reduce){.carousel-btn,.carousel-indicator,.carousel-slide,.project-thumb img{transition:none}}.carousel-btn:focus-visible,.carousel-indicator:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}