html,body{min-height:100vh;margin:0;padding:0;background-color:#f4f6f8;display:flex;flex-direction:column}.gallery-page-container{flex:1;display:flex;flex-direction:column;align-items:center;padding:120px 20px 60px;position:relative;width:100%;box-sizing:border-box;color:var(--secondary)}.gallery-wrapper{position:relative;z-index:2;width:100%;max-width:1200px;display:flex;flex-direction:column;gap:30px}.gallery-header{text-align:center}.section-title-tech.light-mode{font-size:3rem;font-weight:900;color:var(--primary);text-transform:uppercase;margin:0 0 10px;line-height:1}.section-text-tech.light-mode{color:#475569;max-width:640px;margin:0 auto;line-height:1.6}.hero-coverflow{position:relative;width:100%;height:clamp(380px,48vw,540px);perspective:1700px;margin:10px 0 28px;padding:24px 0 20px;overflow-x:hidden;overflow-y:visible;--coverflow-interval:5000ms;--coverflow-progress-gap:22px}.coverflow-stage{position:relative;width:100%;height:100%;transform-style:preserve-3d}.coverflow-slide{position:absolute;top:50%;left:50%;width:clamp(240px,33vw,420px);height:clamp(240px,33vw,420px);margin:0;padding:0;border:none;border-radius:22px;overflow:hidden;cursor:pointer;background:#0e1830;box-shadow:0 30px 60px rgba(9,18,40,.35);transform:translate(-50%,-50%);transition:transform .65s cubic-bezier(.22,.61,.36,1),opacity .65s ease,box-shadow .4s ease;will-change:transform,opacity;outline:none}.coverflow-slide-media{position:absolute;inset:0;overflow:hidden;border-radius:inherit}.coverflow-slide-media .coverflow-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;user-select:none;transition:filter .55s ease,transform .55s ease,opacity .4s ease}.coverflow-img-full{opacity:0;z-index:1}.coverflow-img-full.is-ready{opacity:1}.coverflow-slide.is-side .coverflow-img-thumb{filter:blur(5px)saturate(.85);transform:scale(1.06)}.coverflow-slide.is-side .coverflow-img-full{opacity:0;visibility:hidden}.coverflow-slide.is-active .coverflow-img-thumb{filter:none;transform:scale(1)}.coverflow-slide::after{content:"";position:absolute;inset:0;border-radius:22px;box-shadow:inset 0 0 0 1px rgba(255,255,255,8%);background:linear-gradient( 180deg,rgba(9,18,40,0) 55%,rgba(9,18,40,.35) 100% );opacity:.6;transition:opacity .5s ease;pointer-events:none}.coverflow-slide.is-active{box-shadow:none}@media(hover:hover) and (pointer:fine){.coverflow-slide.is-active:hover{box-shadow:0 0 0 2px rgba(252,175,23,.38),0 18px 36px rgba(9,18,40,.14)}.coverflow-slide.is-active:hover .coverflow-img-thumb,.coverflow-slide.is-active:hover .coverflow-img-full.is-ready{transform:scale(1.045)}.coverflow-slide.is-active:hover::after{opacity:.12}}.coverflow-slide.is-active::after{opacity:.25}.coverflow-progress{position:absolute;left:50%;top:calc(50% + clamp(120px,16.5vw,210px) + var(--coverflow-progress-gap));transform:translateX(-50%);width:clamp(240px,33vw,420px);z-index:160;pointer-events:none}.coverflow-progress-track{position:relative;height:4px;border-radius:999px;overflow:hidden;background:linear-gradient( 90deg,transparent 0%,rgba(21,41,80,.1) 14%,rgba(21,41,80,.24) 50%,rgba(21,41,80,.1) 86%,transparent 100% )}.coverflow-progress-track::before{content:"";position:absolute;left:0;right:0;top:-10px;height:2px;border-radius:999px;background:linear-gradient( 90deg,transparent 0%,rgba(21,41,80,.45) 18%,rgba(21,41,80,.9) 50%,rgba(21,41,80,.45) 82%,transparent 100% );box-shadow:0 0 14px rgba(21,41,80,.25)}.coverflow-progress-fill{position:absolute;left:0;top:0;height:100%;width:0;border-radius:inherit;background:linear-gradient( 90deg,rgba(21,41,80,.35) 0%,#152950 50%,rgba(21,41,80,.75) 100% );box-shadow:0 0 16px rgba(21,41,80,.35)}.coverflow-progress-fill.is-animating{animation:coverflow-progress-fill var(--coverflow-interval)linear forwards}.hero-coverflow.is-paused .coverflow-progress-fill.is-animating{animation-play-state:paused}@keyframes coverflow-progress-fill{from{width:0%}to{width:100%}}.coverflow-controls{position:absolute;inset:0;pointer-events:none;z-index:200}.coverflow-nav{position:absolute;top:50%;transform:translateY(-50%);pointer-events:auto;width:48px;height:48px;border-radius:50%;border:1px solid rgba(21,41,80,.12);background:rgba(255,255,255,.85);color:var(--primary);font-size:1.1rem;cursor:pointer;display:grid;place-items:center;backdrop-filter:blur(6px);box-shadow:0 8px 20px rgba(9,18,40,.18);transition:transform .25s ease,background .25s ease,color .25s ease}.coverflow-nav.prev{left:max(6px,calc(50% - clamp(280px,36vw,460px)))}.coverflow-nav.next{right:max(6px,calc(50% - clamp(280px,36vw,460px)))}.coverflow-nav:hover{background:var(--accent);color:var(--primary);transform:translateY(-50%)scale(1.08)}.year-block{margin-top:10px}.year-separator{display:flex;align-items:center;width:100%;margin:10px 0 24px;gap:14px}.year-title{font-size:2.2rem;font-weight:900;color:var(--primary);margin:0;letter-spacing:2px}.year-line{flex-grow:1;height:3px;background:linear-gradient(90deg,var(--accent) 0%,transparent 100%);border-radius:2px}.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:30px;width:100%}.album-folder{position:relative;appearance:none;font:inherit;text-align:left;padding:0;border:1px solid rgba(21,41,80,8%);border-radius:18px;background:#fff;box-shadow:0 10px 30px rgba(9,18,40,8%);cursor:pointer;overflow:hidden;display:flex;flex-direction:column;transition:transform .4s cubic-bezier(.22,.61,.36,1),box-shadow .4s ease,border-color .4s ease}.album-cover{position:relative;width:100%;aspect-ratio:4/3;overflow:hidden;background:#0e1830}.album-cover img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.22,.61,.36,1)}.album-cover-empty{width:100%;height:100%;display:grid;place-items:center;color:rgba(255,255,255,.4);font-size:3rem}.album-cover::after{content:"";position:absolute;inset:0;background:linear-gradient( 180deg,rgba(9,18,40,0) 40%,rgba(9,18,40,.55) 100% );transition:opacity .4s ease}.album-count{position:absolute;bottom:12px;left:12px;z-index:3;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:rgba(9,18,40,.65);color:#fff;font-size:.78rem;font-weight:600;letter-spacing:.4px;backdrop-filter:blur(4px)}.album-hover-open{position:absolute;top:14px;right:14px;z-index:3;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--primary);font-size:1rem;transform:translateY(-8px)scale(.8);opacity:0;transition:transform .4s cubic-bezier(.22,.61,.36,1),opacity .4s ease}.album-info{display:grid;grid-template-columns:40px 1fr;column-gap:12px;row-gap:4px;align-items:center;padding:18px 20px}.album-icon{grid-row:1/span 2;display:grid;place-items:center;width:40px;height:40px;flex-shrink:0;border-radius:11px;background:rgba(252,175,23,.12);border:1px solid rgba(252,175,23,.25);color:var(--accent);font-size:1.05rem}.album-name{grid-column:2;font-size:1.15rem;font-weight:900;color:var(--primary);text-transform:uppercase;letter-spacing:1px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.album-open{grid-column:2;display:inline-flex;align-items:center;gap:6px;max-height:0;overflow:hidden;opacity:0;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);transform:translateX(-6px);transition:opacity .35s ease,transform .35s ease,max-height .35s ease;white-space:nowrap}.album-open i{font-size:.7rem}@media(hover:hover) and (pointer:fine){.album-folder:hover{transform:translateY(-8px);box-shadow:0 22px 48px rgba(9,18,40,.18);border-color:rgba(252,175,23,.4)}.album-folder:hover .album-cover img{transform:scale(1.07)}.album-folder:hover .album-hover-open{transform:translateY(0)scale(1);opacity:1}.album-folder:hover .album-open{opacity:1;transform:translateX(0);max-height:1.5em}}@media(hover:hover) and (pointer:fine){.album-folder:focus-visible{outline:3px solid rgba(252,175,23,.6);outline-offset:3px}}.photos-header{display:flex;flex-direction:column;gap:18px}.photos-header-meta{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.photos-count-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;background:rgba(252,175,23,.12);border:1px solid rgba(252,175,23,.3);color:#a9760a;font-size:.85rem;font-weight:700}.btn-back{align-self:flex-start;background:rgba(21,41,80,5%);border:1px solid rgba(21,41,80,.1);color:var(--primary);padding:10px 20px;border-radius:10px;font-family:inherit;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:10px;transition:all .3s ease}.btn-back:hover{background:var(--accent);color:var(--primary);border-color:var(--accent);transform:translateX(-3px)}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:22px;margin-top:10px;width:100%}.photo-panel{position:relative;appearance:none;padding:0;border:1px solid rgba(21,41,80,6%);background:#0e1830;border-radius:14px;overflow:hidden;box-shadow:0 8px 22px rgba(9,18,40,.1);cursor:zoom-in;transition:transform .4s cubic-bezier(.22,.61,.36,1),box-shadow .4s ease,border-color .4s ease}.photo-item{width:100%;aspect-ratio:3/2;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.25,.46,.45,.94);background-color:rgba(0,0,0,5%)}.photo-zoom{position:absolute;top:12px;right:12px;z-index:3;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:rgba(9,18,40,.6);color:#fff;font-size:.9rem;opacity:0;transform:scale(.8);transition:opacity .35s ease,transform .35s ease,background .25s ease;backdrop-filter:blur(4px)}.photo-label{position:absolute;bottom:10px;right:12px;color:#cbd5e1;font-family:monospace;font-size:.7rem;font-weight:500;letter-spacing:1px;opacity:.55;z-index:3;transition:all .3s ease;text-shadow:0 1px 3px rgba(0,0,0,.6)}@media(hover:hover) and (pointer:fine){.photo-panel:hover{transform:translateY(-6px);box-shadow:0 18px 38px rgba(9,18,40,.28);border-color:rgba(252,175,23,.35)}.photo-panel:hover .photo-item{transform:scale(1.06)}.photo-panel:hover .photo-zoom{opacity:1;transform:scale(1)}.photo-panel:hover .photo-zoom:hover{background:var(--accent);color:var(--primary)}.photo-panel:hover .photo-label{color:var(--accent);opacity:1;letter-spacing:2px}}@media(hover:hover) and (pointer:fine){.photo-panel:focus-visible{outline:3px solid rgba(252,175,23,.6);outline-offset:3px}}.empty-gallery-msg{grid-column:1/-1;text-align:center;padding:40px 20px;border-radius:14px;background:rgba(21,41,80,5%);color:var(--primary);font-weight:600}.lightbox-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(10,15,28,.95);backdrop-filter:blur(8px);z-index:9999;display:flex;justify-content:center;align-items:center;opacity:0;pointer-events:none;transition:opacity .3s ease}.lightbox-overlay.active{opacity:1;pointer-events:auto}.lightbox-close{position:absolute;top:20px;right:30px;background:0 0;border:none;color:#fff;font-size:2.4rem;cursor:pointer;transition:transform .2s ease,color .2s ease;z-index:10000}.lightbox-close:hover{transform:scale(1.1)rotate(90deg);color:var(--accent)}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:54px;height:54px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.1);color:#fff;font-size:1.3rem;cursor:pointer;display:grid;place-items:center;z-index:10000;transition:background .25s ease,color .25s ease,transform .25s ease}.lightbox-nav:hover{background:var(--accent);color:var(--primary)}.lightbox-prev{left:20px}.lightbox-prev:hover{transform:translateY(-50%)scale(1.08)}.lightbox-next{right:20px}.lightbox-next:hover{transform:translateY(-50%)scale(1.08)}.lightbox-content{position:relative;display:flex;justify-content:center;align-items:center}.lightbox-content img{max-width:88vw;max-height:88vh;object-fit:contain;border-radius:10px;box-shadow:0 20px 50px rgba(0,0,0,.5);transition:opacity .3s ease}@media(max-width:992px){.gallery-page-container{padding-top:100px}.section-title-tech.light-mode{font-size:2.4rem}}@media(max-width:768px){.album-grid{grid-template-columns:1fr;gap:24px}.year-title{font-size:1.8rem}.hero-coverflow{height:clamp(300px,68vw,420px);padding:18px 0 16px;--coverflow-progress-gap:18px}.coverflow-slide{width:clamp(200px,62vw,300px);height:clamp(200px,62vw,300px)}.coverflow-progress{top:calc(50% + clamp(100px,31vw,150px) + var(--coverflow-progress-gap));width:clamp(200px,62vw,300px)}.coverflow-nav.prev{left:max(4px,calc(50% - clamp(220px,50vw,340px)))}.coverflow-nav.next{right:max(4px,calc(50% - clamp(220px,50vw,340px)))}.lightbox-nav{width:44px;height:44px;font-size:1.1rem}}@media(max-width:480px){.section-title-tech.light-mode{font-size:1.9rem}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}.coverflow-nav{width:40px;height:40px;font-size:.95rem}}