/* ============================================
   FRAMES PAGE
   ============================================ */

.frames-section{
    padding:calc(var(--letterbox) + 140px) 40px 72px;
    max-width:1480px;margin:0 auto;
}

.frames-header{
    margin-bottom:64px;
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(280px,420px);
    gap:32px;
    align-items:end;
}
.frames-title{
    font-family:var(--font-display);font-size:var(--t-lg);font-weight:700;
    letter-spacing:-.01em;text-transform:uppercase;line-height:1;
    grid-column:1;
}
.frames-intro{
    grid-column:2;grid-row:1 / span 2;
    max-width:420px;justify-self:end;
    font-family:var(--font-mono);font-size:.55rem;font-weight:300;line-height:1.9;
    color:rgba(229,229,229,.5);
    letter-spacing:.18em;text-transform:uppercase;
}

/* ---- Project group separators ---- */
.frames-group-label{
    display:flex;align-items:center;gap:16px;
    margin:56px 0 20px;
    font-family:var(--font-mono);font-size:var(--t-micro);
    letter-spacing:.25em;text-transform:uppercase;
}
.frames-groups > .frames-group-label:first-child{margin-top:0}
.frames-group-name{color:rgba(226,212,189,.75)}
.frames-group-count{color:var(--text-dim);opacity:.75}
.frames-group-line{flex:1;height:1px;background:rgba(255,255,255,.07)}

/* ---- Masonry wall — native ratios, no cropping ---- */
.frames-grid{
    columns:3;
    column-gap:18px;
}
.frame{
    break-inside:avoid;
    margin:0 0 18px;
    position:relative;
    overflow:hidden;
    border-radius:4px;
    background:var(--surface);
    outline:1px solid rgba(255,255,255,.055);
    cursor:pointer;
}
.frame img{
    width:100%;display:block;
    transition:transform 1.2s var(--ease),filter 1.2s var(--ease);
    will-change:transform;
}
.frame:hover img{
    transform:scale(1.03);
    filter:brightness(.72);
}

/* gradient + caption on hover */
.frame::after{
    content:'';position:absolute;inset:0;z-index:1;
    background:linear-gradient(to top, rgba(8,8,8,.72) 0%, rgba(8,8,8,.12) 40%, transparent 62%);
    opacity:0;
    transition:opacity .5s var(--ease);
    pointer-events:none;
}
.frame:hover::after{opacity:1}

.frame-caption{
    position:absolute;left:14px;right:14px;bottom:12px;z-index:2;
    display:flex;align-items:baseline;justify-content:space-between;gap:12px;
    font-family:var(--font-mono);font-size:var(--t-micro);letter-spacing:.14em;
    text-transform:uppercase;
    opacity:0;transform:translateY(8px);
    transition:opacity .45s var(--ease),transform .45s var(--ease);
    pointer-events:none;
}
.frame:hover .frame-caption{opacity:1;transform:translateY(0)}
.frame-num{color:rgba(226,212,189,.85)}
.frame-project{color:rgba(255,255,255,.82);text-align:right}

/* ============================================
   LIGHTBOX
   ============================================ */
.lightbox{
    position:fixed;inset:0;z-index:9950;
    background:rgba(8,8,8,.96);
    backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    opacity:0;visibility:hidden;
    transition:opacity .5s var(--ease),visibility .5s;
}
.lightbox.active{opacity:1;visibility:visible}

.lightbox-stage{
    position:relative;
    display:flex;align-items:center;justify-content:center;
    width:min(92vw,1400px);
    height:min(74vh,900px);
}
.lightbox-img{
    max-width:100%;max-height:100%;
    object-fit:contain;
    border-radius:2px;
    box-shadow:0 40px 120px rgba(0,0,0,.6);
    opacity:0;transform:scale(.985);
    transition:opacity .45s var(--ease),transform .45s var(--ease);
}
.lightbox-img.loaded{opacity:1;transform:scale(1)}

.lightbox-meta{
    margin-top:26px;
    display:flex;align-items:baseline;gap:22px;
    font-family:var(--font-mono);font-size:var(--t-micro);letter-spacing:.18em;
    text-transform:uppercase;
}
.lightbox-counter{color:rgba(226,212,189,.8)}
.lightbox-project{color:rgba(255,255,255,.85)}
.lightbox-fmt{color:var(--text-dim)}
.lightbox-link{
    color:var(--text-dim);position:relative;transition:color .3s;
}
.lightbox-link::after{
    content:'';position:absolute;bottom:-3px;left:0;width:0;height:1px;
    background:var(--accent);transition:width .5s var(--ease);
}
.lightbox-link:hover{color:var(--text)}
.lightbox-link:hover::after{width:100%}

.lightbox-btn{
    position:absolute;top:50%;transform:translateY(-50%);
    font-size:1.3rem;color:var(--text-dim);
    padding:20px;
    transition:color .3s,transform .3s var(--ease);
    z-index:2;
}
.lightbox-btn:hover{color:var(--accent)}
.lightbox-btn--prev{left:-72px}
.lightbox-btn--next{right:-72px}
.lightbox-btn--prev:hover{transform:translateY(-50%) translateX(-3px)}
.lightbox-btn--next:hover{transform:translateY(-50%) translateX(3px)}

.lightbox-close{
    position:fixed;top:calc(var(--letterbox) + 20px);right:40px;
    font-family:var(--font-mono);font-size:.75rem;letter-spacing:.2em;
    text-transform:uppercase;color:var(--text-dim);
    padding:10px;transition:color .3s;
    z-index:3;
}
.lightbox-close:hover{color:var(--white)}

/* ============================================
   RESPONSIVE
   ============================================ */
@media(max-width:1024px){
    .frames-section{padding-left:28px;padding-right:28px}
    .frames-grid{columns:2}
    .lightbox-btn--prev{left:-8px}
    .lightbox-btn--next{right:-8px}
    .lightbox-close{right:28px}
}
@media(max-width:640px){
    .frames-section{padding:calc(var(--letterbox) + 110px) 20px 40px}
    .frames-header{margin-bottom:36px;display:block}
    .frames-intro{margin-top:14px;max-width:100%;font-size:.45rem}
    .frames-grid{columns:1;column-gap:0}
    .frames-group-label{margin:36px 0 14px}
    .frame{margin-bottom:14px}
    .frame::after{opacity:1;background:linear-gradient(to top, rgba(8,8,8,.6) 0%, transparent 34%)}
    .frame-caption{opacity:1;transform:none}
    .lightbox-stage{width:94vw;height:62vh}
    .lightbox-meta{flex-wrap:wrap;justify-content:center;gap:10px 16px;padding:0 20px;text-align:center}
    .lightbox-btn{padding:14px}
    .lightbox-close{right:20px}
}
