/* Victoria Bell Portfolio — the art does the talking; the frame stays quiet */
.vbp{--vbp-ink:#23262b;--vbp-soft:#6b6f76;--vbp-line:#e3e1dc;--vbp-mark:#2f5d50;--vbp-gap:14px;color:var(--vbp-ink);margin:0 auto}
.vbp *{box-sizing:border-box}

/* section picker: a contact sheet of covers */
.vbp-nav{display:flex;gap:18px;overflow-x:auto;padding:4px 2px 14px;margin:0 0 28px;border-bottom:1px solid var(--vbp-line);scrollbar-width:thin}
.vbp-tab{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:8px;width:96px;text-decoration:none;color:var(--vbp-soft);border-radius:6px;outline-offset:3px}
.vbp-cover{display:block;width:84px;height:84px;border-radius:50%;overflow:hidden;background:#f1efea;border:2px solid transparent;transition:border-color .2s}
.vbp-cover img{width:100%;height:100%;object-fit:cover;display:block}
.vbp-name{font-size:14px;line-height:1.25;text-align:center}
.vbp-tab:hover .vbp-cover{border-color:var(--vbp-line)}
.vbp-tab[aria-current="true"]{color:var(--vbp-ink)}
.vbp-tab[aria-current="true"] .vbp-cover{border-color:var(--vbp-mark)}
.vbp-tab:focus-visible{outline:2px solid var(--vbp-mark)}

.vbp-sec{display:none}
.vbp-sec.is-on,.vbp-single .vbp-sec{display:block}
.vbp-title{font-size:clamp(1.5rem,1.2rem + 1.2vw,2.2rem);font-weight:400;margin:0 0 20px;letter-spacing:.01em}
.vbp-nav ~ .vbp-sec .vbp-title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.vbp-letters{margin:0 0 36px}

/* masonry: every picture keeps its own shape */
.vbp-grid{columns:4 240px;column-gap:var(--vbp-gap)}
.vbp-item{display:block;break-inside:avoid;margin:0 0 var(--vbp-gap);cursor:zoom-in;outline-offset:3px;border-radius:3px;overflow:hidden;background:#f6f5f2}
.vbp-item img{display:block;width:100%;height:auto}
.vbp-item:focus-visible{outline:2px solid var(--vbp-mark)}
@media (max-width:600px){.vbp-grid{columns:2;--vbp-gap:10px}.vbp-tab{width:76px}.vbp-cover{width:64px;height:64px}}

/* lightbox */
.vbp-box{padding:0;border:0;width:100vw;height:100vh;max-width:none;max-height:none;background:rgba(18,19,21,.96);color:#eee}
.vbp-box::backdrop{background:rgba(18,19,21,.96)}
.vbp-box figure{margin:0;position:absolute;inset:48px 64px 64px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}
.vbp-box img{max-width:100%;max-height:100%;object-fit:contain;min-height:0;flex:1 1 auto}
.vbp-box figcaption{font-size:15px;color:#cfcfcf;text-align:center;max-width:70ch}
.vbp-box button{position:absolute;background:transparent;border:0;color:#ddd;font-size:44px;line-height:1;width:56px;height:56px;cursor:pointer;border-radius:50%}
.vbp-box button:hover{background:rgba(255,255,255,.08)}
.vbp-box button:focus-visible{outline:2px solid #fff}
.vbp-prev{left:6px;top:50%;transform:translateY(-50%)}
.vbp-next{right:6px;top:50%;transform:translateY(-50%)}
.vbp-close{right:8px;top:6px;font-size:36px!important}
@media (max-width:600px){.vbp-box figure{inset:44px 8px 70px}.vbp-prev,.vbp-next{top:auto;bottom:8px;transform:none}}
@media (prefers-reduced-motion:reduce){.vbp-cover{transition:none}}

/* portals: one doorway per gallery */
.vbp-portals{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:22px;margin:0 0 12px}
.vbp-portals[hidden]{display:none}
.vbp-portal{display:flex;flex-direction:column;gap:12px;text-decoration:none;color:var(--vbp-ink);outline-offset:4px}
.vbp-portal-pic{display:block;aspect-ratio:4/5;border-radius:6px;overflow:hidden;background:#f1efea;box-shadow:0 1px 2px rgba(0,0,0,.06),0 10px 26px rgba(0,0,0,.08)}
.vbp-portal-pic img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.vbp-portal:hover .vbp-portal-pic img{transform:scale(1.035)}
.vbp-portal-tf .vbp-portal-pic{background:#1c2541}
.vbp-portal-tf .vbp-portal-pic img{object-fit:contain;background:#fff}
.vbp-portal-text{display:flex;flex-direction:column;gap:2px}
.vbp-portal-name{font-size:clamp(1.15rem,1rem + .5vw,1.45rem);letter-spacing:.01em}
.vbp-portal-count{font-size:14px;color:var(--vbp-soft)}
.vbp-portal:focus-visible{outline:2px solid var(--vbp-mark)}
.vbp-has-portals .vbp-sec .vbp-title{position:static;width:auto;height:auto;overflow:visible;clip:auto}
.vbp-back{display:inline-block;margin:0 0 14px;color:var(--vbp-soft);text-decoration:none;font-size:15px}
.vbp-back:hover{color:var(--vbp-ink);text-decoration:underline}
@media (max-width:600px){.vbp-portals{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}}
@media (prefers-reduced-motion:reduce){.vbp-portal-pic img{transition:none}}
