.project-page{--container:min(1360px,calc(100% - 48px));display:flex;flex-direction:column;justify-content:space-around;flex:1 1 auto;min-height:0;gap:20px}.project-page>*{flex:0 0 auto}.project-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);min-height:min(62vh,28rem);color:var(--color-text);font-size:.9375rem;font-weight:600;text-align:center}.project-loading p{margin:0}.project-loading__spinner{width:28px;height:28px;border:2px solid color-mix(in srgb,var(--color-teal) 28%,transparent);border-top-color:var(--color-teal);border-radius:50%;animation:uiButtonSpin .7s linear infinite}section:has(.project-page){flex:1 1 auto;min-height:0;padding-top:calc(var(--nav-height) + var(--space-5));padding-bottom:var(--space-7)}.project-overview{display:flex;flex-direction:column;gap:var(--space-4)}.project-context{justify-content:space-between;gap:var(--space-3)}.project-context,.project-hero__kicker{display:flex;flex-wrap:wrap;align-items:center}.project-hero__kicker{gap:.75rem 1rem;font-family:var(--font-mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-dim)}.project-hero__lede{max-width:34rem}.project-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));grid-gap:var(--space-4);gap:var(--space-4);margin:0;padding:var(--space-4) var(--space-5);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:color-mix(in srgb,var(--color-surface) 40%,transparent)}.project-facts dt{margin:0 0 .25rem;font-family:var(--font-mono);font-size:.625rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-dim)}.project-facts dd{margin:0;color:var(--color-text);font-size:.9375rem}.project-facts dd .project-type{margin-top:2px}.project-features,.project-story{display:grid;grid-gap:var(--space-3);gap:var(--space-3)}.project-features h2,.project-page .project-stack__title,.project-story h2{font-family:var(--font-display);font-size:.78rem;letter-spacing:.12em;text-transform:uppercase}.project-story p{margin:0;max-width:46rem;color:var(--color-text-muted);line-height:1.7}.project-nav__copy{display:flex;flex-flow:row nowrap;align-items:baseline;gap:.4rem;min-width:0}.project-nav__dir{flex-shrink:0;font-family:var(--font-mono);font-size:.625rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-dim)}.project-nav__name{overflow:hidden;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap}.project-eof{justify-content:flex-start}.project-back{color:var(--brand-cyan);text-decoration:none;font-size:var(--text-caption);font-weight:500;letter-spacing:.01em;width:-moz-fit-content;width:fit-content;opacity:.82;transition:opacity var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.project-back:hover{opacity:1;color:var(--brand-cyan)}.project-hero{display:grid;grid-template-columns:minmax(0,.42fr) minmax(0,.58fr);grid-gap:clamp(var(--space-5),4vw,var(--space-7));gap:clamp(var(--space-5),4vw,var(--space-7));align-items:center}.project-hero__copy{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);min-width:0;max-width:34rem}.project-hero__copy h1{margin:0;font-family:var(--font-display);font-size:clamp(2.15rem,3.4vw,3.15rem);font-weight:800;line-height:1.08;letter-spacing:-.03em;text-wrap:balance}.project-hero__copy p{margin:4px 0 0;color:var(--color-text-muted);font-size:.98rem;line-height:1.65;text-wrap:pretty}.project-hero__actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-3)}.project-hero__visual{position:relative;min-width:0}.project-hero__visual:before{content:"";position:absolute;inset:14% 8%;background:color-mix(in srgb,var(--brand-blue) 16%,transparent);filter:blur(42px);border-radius:48%;pointer-events:none;z-index:0}.project-hero__image{position:relative;z-index:1;display:block;width:100%;height:auto;border-radius:var(--radius-lg);border:1px solid color-mix(in srgb,var(--color-teal) 18%,var(--color-border));box-shadow:0 18px 36px color-mix(in srgb,#000 28%,transparent)}body:not(.dark) .project-hero__image{box-shadow:0 16px 32px color-mix(in srgb,var(--color-canvas-deep) 22%,transparent)}.project-highlights{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:var(--space-5) var(--space-6);gap:var(--space-5) var(--space-6);margin:0;padding:var(--space-5) var(--space-6);list-style:none;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--color-surface) 42%,transparent)}.project-highlights li{display:flex;align-items:flex-start;gap:var(--space-3);min-width:0}.project-highlights__icon{display:inline-flex;color:var(--brand-cyan);flex-shrink:0;margin-top:1px;opacity:.88}.project-highlights__icon svg{width:18px;height:18px}.project-highlights__copy{display:flex;flex-direction:column;gap:4px;min-width:0}.project-highlights__copy strong{color:var(--color-text);font-size:.92rem;font-weight:600;letter-spacing:-.01em;line-height:1.3}.project-highlights__copy span{color:var(--color-text-dim);font-size:.8125rem;font-weight:400;line-height:1.45}.project-stack{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);text-align:center}.project-page .project-stack__title{margin:0;color:var(--color-text);font-size:.75rem;font-weight:700;letter-spacing:.16em;line-height:1.2;text-transform:uppercase}.project-tech{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2)}.project-tech .reveal{display:inline-flex}.project-tech .ui-tech-badge{padding:5px 12px;pointer-events:none}.project-nav-wrap{width:100%}.project-nav{display:flex;justify-content:space-between;gap:12px;width:100%;min-height:44px;padding:8px 14px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:color-mix(in srgb,var(--color-surface-glass) 28%,transparent)}.project-nav,.project-nav__link{flex-flow:row nowrap;align-items:center}.project-nav__link{display:inline-flex;gap:.4rem;min-width:0;flex:1 1;max-width:50%;min-height:36px;color:var(--color-text-dim);font-size:var(--text-caption);font-weight:500;letter-spacing:.01em;line-height:1.2;text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}.project-nav__link--next{justify-content:flex-end;text-align:right}.project-nav__link svg{width:14px;height:14px;flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out)}.project-nav__link:hover{color:var(--color-text-muted)}.project-nav__link:hover:not(.is-disabled):not(.project-nav__link--next) svg{transform:translateX(-3px)}.project-nav__link--next:hover:not(.is-disabled) svg{transform:translateX(3px)}.project-nav__link:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;border-radius:var(--radius-sm)}.project-nav__link.is-disabled{opacity:.38;pointer-events:none}.project-page .reveal{--reveal-duration:0.36s}.project-hero__visual.reveal{--reveal-y:8px;--reveal-scale:0.99;--reveal-duration:0.42s}@media(max-width:1100px){.project-highlights{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5);padding:var(--space-5)}}@media(max-width:899px){.project-hero{grid-template-columns:1fr;gap:var(--space-5)}.project-hero__copy{max-width:none}}@media(max-width:767px){.project-page{--container:min(1360px,calc(100% - 32px))}.project-hero__copy,.project-overview{gap:var(--space-3)}.project-hero__copy h1{font-size:clamp(1.85rem,8vw,2.35rem)}.project-nav{gap:8px;padding:8px 10px}.project-nav__link{min-height:32px}}@media(max-width:539px){.project-highlights{grid-template-columns:1fr;gap:var(--space-4);padding:var(--space-4) var(--space-5)}}@media(prefers-reduced-motion:reduce){.project-back,.project-nav__link,.project-nav__link svg{transition:none}.project-nav__link--next:hover svg,.project-nav__link:hover svg{transform:none}.project-loading__spinner{animation:none;border-top-color:currentColor;opacity:.7}}.swal2-popup{background-color:var(--color-surface-glass)!important;-webkit-backdrop-filter:blur(var(--glass-blur,5px));backdrop-filter:blur(var(--glass-blur,5px));border:1px solid var(--color-border);font-family:var(--font-sans)!important;border-radius:var(--radius-lg);color:var(--color-text)}.swal2-popup h2{font-weight:600!important;margin-top:0!important;font-size:1.125rem!important;color:var(--color-text)!important}.swal2-popup .swal2-html-container{color:var(--color-text-muted);font-family:var(--font-sans)!important;font-size:.9375rem}.swal2-popup .swal2-confirm{border-radius:var(--radius-pill)!important;background:var(--color-teal)!important;color:#041016!important}