.projects-page{animation:.8s ease-out fadeInUp}.projects-page,.placeholder-page{min-height:100vh;padding:calc(var(--nav-height) + 5rem) 2rem 5rem}.container{max-width:1200px;margin:0 auto}.projects-header{text-align:center;margin-bottom:5.5rem}.header-top-nav{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;display:flex}.back-link{color:var(--color-accent-purple);align-items:center;gap:.4rem;padding:.3rem 0;font-size:.85rem;font-weight:500;text-decoration:none;transition:all .3s cubic-bezier(.4,0,.2,1);display:inline-flex;position:relative}.back-link:before{content:"";background:linear-gradient(90deg, var(--color-accent-purple), var(--color-primary));border-radius:1px;width:0;height:1.5px;transition:width .25s cubic-bezier(.4,0,.2,1);position:absolute;bottom:-2px;left:0}.back-link:hover{color:var(--color-primary);transform:translate(-4px)}.back-link:hover:before{width:100%}.back-link i{transition:transform .2s}.back-link:hover i{transform:translate(-3px)}[data-theme=light] .back-link{color:var(--color-text)}[data-theme=light] .back-link:before{background:linear-gradient(90deg, var(--color-text), var(--color-accent-purple))}[data-theme=light] .back-link:hover{color:var(--color-accent-purple)}.page-title{font-family:var(--font-heading);color:var(--color-text);margin-bottom:.75rem;font-size:clamp(2.5rem,8vw,4rem);font-weight:700}.page-subtitle{color:var(--color-text-dim);max-width:500px;margin:0 auto;font-size:1.1rem;line-height:1.6}.category-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:2.5rem;display:grid}.category-card{color:#fff;perspective:1000px;touch-action:manipulation;text-decoration:none;display:block;position:relative}.card-inner{background:var(--color-bg-card);isolation:isolate;min-height:420px;transform-style:preserve-3d;backface-visibility:hidden;will-change:transform;border:1px solid #ffffff14;border-radius:1.5rem;flex-direction:column;padding:2.5rem;transition:transform .6s cubic-bezier(.4,0,.2,1),box-shadow .6s cubic-bezier(.4,0,.2,1),border-color .3s;display:flex;position:relative;overflow:hidden;box-shadow:0 4px 6px #00000012,0 12px 24px #0000001f}.card-inner.tilt-active{transition:transform .12s ease-out,box-shadow .12s ease-out,border-color .3s}.category-card:hover .card-inner{border-color:#ffffff1f}.card-glare{border-radius:inherit;pointer-events:none;z-index:3;opacity:0;mix-blend-mode:overlay;background:radial-gradient(circle at var(--gx,50%) var(--gy,50%), #fff3 0%, #ffffff12 20%, transparent 50%);transition:opacity .3s;position:absolute;inset:0}.card-glare:after{content:"";border-radius:inherit;background:linear-gradient(var(--ga,135deg), transparent 20%, #ffffff0d 42%, #ffffff1a 50%, #ffffff0d 58%, transparent 80%);position:absolute;inset:0}.animated-scene{z-index:0;width:100%;height:100%;position:absolute;inset:0}.category-card-overlay{z-index:1;background:linear-gradient(to top, var(--overlay-color-top) 0%, var(--overlay-color-mid) 20%, var(--overlay-color-mid2) 45%, var(--overlay-color-bot) 100%);-webkit-backdrop-filter:blur(1px);transition:background .4s,backdrop-filter .4s;position:absolute;inset:0}.card-anim-0:hover .category-card-overlay,.card-anim-1:hover .category-card-overlay,.card-anim-2:hover .category-card-overlay{background:linear-gradient(to top, var(--overlay-color-top) 0%, var(--overlay-color-mid) 20%, var(--overlay-color-mid2) 45%, var(--overlay-color-bot) 100%)}.category-card-content{z-index:2;flex-direction:column;flex-grow:1;justify-content:flex-end;height:100%;margin-top:auto;display:flex;position:relative}.category-title{font-family:var(--font-heading);color:var(--color-text);letter-spacing:-.02em;text-shadow:0 2px 20px #00000080;margin-bottom:.75rem;font-size:clamp(2rem,5vw,3.5rem);font-weight:700}.category-description{color:var(--color-text);text-shadow:0 1px 10px #00000080;margin-bottom:2rem;font-size:1rem;line-height:1.6}[data-theme=light] .category-title,[data-theme=light] .category-description{text-shadow:none;font-weight:500}[data-theme=light] .category-description{color:#6b4f00}.category-arrow{backdrop-filter:blur(10px);color:#fff;background:#ffffff1a;border:1px solid #fff3;border-radius:50%;justify-content:center;align-self:flex-start;align-items:center;width:48px;height:48px;transition:all .3s;display:inline-flex}.category-card:hover .category-arrow{background:var(--color-primary);border-color:var(--color-primary);transform:translate(8px);box-shadow:0 8px 24px #f1c40f66}[data-theme=light] .category-arrow{background:var(--color-text-muted)}.net-line{stroke:#3b82f640;stroke-width:1px;stroke-dasharray:200;stroke-dashoffset:200px;transition:stroke-dashoffset .6s ease var(--i,0s)}.card-anim-0:hover .net-line{stroke-dashoffset:0}.net-line-dim{stroke:#3b82f61a;stroke-dasharray:4 6;stroke-dashoffset:200px;opacity:0;transition:stroke-dashoffset .8s ease var(--i,0s), opacity .5s ease var(--i,0s)}.card-anim-0:hover .net-line-dim{stroke-dashoffset:0;opacity:1}.net-node{opacity:0;transform-box:fill-box;transform-origin:50%;transition:all .35s cubic-bezier(.34,1.56,.64,1);transform:scale(0)}.card-anim-0:hover .net-node{opacity:1;transition-delay:var(--i,0s);transform:scale(1)}.net-label{opacity:0;transition:opacity .3s .12s}.card-anim-0:hover .net-label{opacity:1}.node-led{transition:opacity .3s}.card-anim-0:hover .node-led{opacity:1;filter:url(#node-glow)}.net-hub{transition:filter .4s}.card-anim-0:hover .net-hub{filter:url(#hub-glow)}.net-hub-ring{opacity:0;transform-box:fill-box;transform-origin:50%;transition:opacity .4s,transform .4s;transform:scale(.8)}.card-anim-0:hover .net-hub-ring{opacity:.5;animation:2s ease-in-out .3s infinite ringPulse;transform:scale(1)}@keyframes ringPulse{0%,to{opacity:.4;transform:scale(1)}50%{opacity:.05;transform:scale(1.4)}}.net-particle{opacity:0}.card-anim-0:hover .net-particle{animation:particleTravel 1.4s ease-in-out var(--i,0s) infinite}@keyframes particleTravel{0%{opacity:0;transform:translate(0)scale(.4)}8%{opacity:1;transform:scale(1)}82%{opacity:.7}to{opacity:0;transform:translate(var(--tx,0px), var(--ty,0px)) scale(.4)}}.net-status{transition:opacity .5s}.card-anim-0:hover .net-status{opacity:.85;transition-delay:1.2s;animation:4s ease-in-out 1.7s infinite statusFlicker}@keyframes statusFlicker{0%,to{opacity:.85}47%{opacity:.85}49%{opacity:.35}51%{opacity:.85}80%{opacity:.85}82%{opacity:.5}84%{opacity:.85}}.geo-circle{transition:filter .5s}.card-anim-1:hover .geo-primary{filter:url(#geo-glow)}.card-anim-1:hover .geo-secondary{filter:url(#geo-glow);transition-delay:.1s}.geo-small-circle{transition:filter .5s}.card-anim-1:hover .geo-small-circle{filter:url(#geo-glow);transition-delay:.15s}.geo-tri{transform-origin:125px 94px}.card-anim-1:hover .geo-tri{animation:10s linear infinite triSpin}@keyframes triSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.geo-sq{transform-origin:378px 96px}.card-anim-1:hover .geo-sq{animation:14s linear infinite sqSpin}@keyframes sqSpin{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.geo-conn{stroke:#ffffff14;stroke-width:1px;stroke-dasharray:150;stroke-dashoffset:0;transition:stroke .4s ease var(--i,0s)}.card-anim-1:hover .geo-conn{stroke:#fff3}.geo-dot{transform-box:fill-box;transform-origin:50%;transition:transform .4s cubic-bezier(.34,1.56,.64,1)}.card-anim-1:hover .geo-dot{animation:dotBounce .5s cubic-bezier(.34, 1.56, .64, 1) var(--i,0s)}@keyframes dotBounce{0%{transform:scale(1)}35%{transform:scale(1.45)}to{transform:scale(1)}}.geo-plus{transition:opacity .4s ease var(--i,0s)}.card-anim-1:hover .geo-plus{opacity:.8!important}.eq-bar{transform-box:fill-box;transform-origin:bottom;transition:transform .55s cubic-bezier(.34,1.56,.64,1);transform:scaleY(.08)}.card-anim-2:hover .eq-bar{transform:scaleY(var(--target,1));transition-delay:var(--i,0s)}.waveform{transition:opacity .5s}.card-anim-2:hover .waveform{opacity:.5}.music-note{opacity:0}.card-anim-2:hover .music-note{animation:noteFloat 2.2s ease-out var(--i,0s) infinite}@keyframes noteFloat{0%{opacity:0;transform:translate(0)scale(.8)}12%{opacity:.85;transform:translate(calc(var(--dx,0px) * .1), calc(var(--dy,-80px) * .1)) scale(1)}to{opacity:0;transform:translate(var(--dx,0px), var(--dy,-80px)) scale(.3)}}.placeholder-header{text-align:center;padding:4rem 0}.placeholder-icon{width:120px;height:120px;color:var(--color-text);background:linear-gradient(135deg,#4facfe26 0%,#00f2fe26 100%);border:1px solid #4facfe4d;border-radius:2rem;justify-content:center;align-items:center;margin-bottom:2rem;display:inline-flex}.placeholder-page .back-link{border:1px solid var(--color-border);color:var(--color-text-dim);background:#ffffff0d;border-radius:.5rem;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:.9rem;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.placeholder-page .back-link:hover{border-color:var(--color-primary);color:var(--color-primary);background:#ffffff14}@media (width<=768px){.projects-page,.placeholder-page{padding-top:calc(var(--nav-height) + 1rem)}.category-grid{grid-template-columns:1fr;gap:2rem}.card-inner{will-change:auto;min-height:320px;padding:2rem;transition:none}.projects-header{margin-bottom:3rem}.category-card{perspective:none}.card-inner{transform-style:flat;backface-visibility:visible}.card-glare{display:none}.net-line{stroke-dashoffset:0!important;transition:none!important}.net-line-dim{stroke-dashoffset:0!important;opacity:1!important;transition:none!important}.net-node{opacity:1!important;transition:none!important;transform:scale(1)!important}.net-label{opacity:1!important;transition:none!important}.node-led{opacity:1!important;filter:none!important;transition:none!important}.net-hub{filter:none!important;transition:none!important}.net-hub-ring{opacity:.3!important;transition:none!important;animation:none!important;transform:scale(1)!important}.net-particle{opacity:0!important;animation:none!important}.net-status{opacity:.8!important;transition:none!important;animation:none!important}.card-anim-0:hover .net-line,.card-anim-0:hover .net-line-dim,.card-anim-0:hover .net-node,.card-anim-0:hover .net-label{transition:none!important}.card-anim-0:hover .node-led{filter:none!important;animation:none!important}.card-anim-0:hover .net-hub{filter:none!important}.card-anim-0:hover .net-hub-ring,.card-anim-0:hover .net-particle,.card-anim-0:hover .net-status{animation:none!important}.geo-circle,.geo-small-circle{filter:none!important;transition:none!important}.geo-conn{stroke:#ffffff14!important;transition:none!important}.geo-dot{transition:none!important;animation:none!important}.card-anim-1:hover .geo-circle,.card-anim-1:hover .geo-small-circle{filter:none!important}.card-anim-1:hover .geo-tri,.card-anim-1:hover .geo-sq{animation:none!important}.card-anim-1:hover .geo-conn{stroke:#ffffff14!important}.card-anim-1:hover .geo-dot{animation:none!important}.card-anim-1:hover .geo-plus{transition:none!important}.eq-bar{transform:scaleY(var(--target,1))!important;transition:none!important}.waveform{opacity:.4!important;transition:none!important}.music-note{opacity:0!important;animation:none!important}.card-anim-2:hover .eq-bar{transition:none!important}.card-anim-2:hover .waveform{opacity:.4!important}.card-anim-2:hover .music-note{opacity:0!important;animation:none!important}.card-anim-0 .category-card-overlay,.card-anim-1 .category-card-overlay,.card-anim-2 .category-card-overlay{background:linear-gradient(to top, var(--overlay-color-top) 0%, var(--overlay-color-mid) 30%, var(--overlay-color-mid2) 60%, var(--overlay-color-bot) 100%)}}
