
.zva-portal,.zva-walkthrough,.zva-restricted{--purple:#9a65ff;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.zva-portal{background:linear-gradient(180deg,#080b11,#0b1018);color:#edf1f7;border:1px solid #252e3d;border-radius:14px;padding:22px;box-shadow:0 18px 60px rgba(0,0,0,.32)}
.zva-portal-head{display:flex;justify-content:space-between;gap:22px;align-items:flex-start;padding:6px 2px 20px;border-bottom:1px solid #232c3b}.zva-portal-head h1{color:#fff;margin:3px 0;font-size:clamp(30px,5vw,48px)}.zva-portal-head p{margin:0;color:#9fa9b8}.zva-kicker{color:#b68cff;font-size:10px;font-weight:900;letter-spacing:.16em}.zva-admin-badge{border:1px solid #704aa8;border-radius:999px;padding:7px 10px;color:#d8c4ff;background:#171023;font-size:10px;font-weight:800;letter-spacing:.08em}
.zva-gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;padding-top:20px}.zva-gallery-card{display:flex;flex-direction:column;min-height:210px;padding:20px;background:linear-gradient(145deg,#111824,#0c1119);border:1px solid #293447;border-radius:12px}.zva-gallery-state{color:#a77bf1;font-size:10px;font-weight:900;letter-spacing:.12em}.zva-gallery-card h2{color:#fff;margin:10px 0 8px;font-size:24px}.zva-gallery-card p{color:#aeb7c5}.zva-gallery-meta{margin-top:auto;color:#758197;font-size:12px}.zva-enter{display:inline-flex;margin-top:12px;color:#d7c4ff!important;text-decoration:none!important;font-weight:800}.zva-back{display:flex;justify-content:space-between;padding:14px 2px}.zva-back a{color:#cab1ff!important;text-decoration:none!important;font-weight:700}
.zva-walkthrough{background:#0a0d13;color:#eef1f7;border:1px solid #232b39;border-radius:14px;overflow:hidden}.zva-head{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 22px;background:#111722;border-bottom:1px solid #242d3b}.zva-head h2{margin:2px 0;color:#fff}.zva-slide{display:none}.zva-slide.is-active{display:block}.zva-image{display:flex;min-height:360px;align-items:center;justify-content:center;background:#05070a}.zva-image img{display:block;width:100%;max-height:78vh;object-fit:contain}.zva-caption{display:flex;justify-content:space-between;gap:20px;padding:18px 22px;background:#111722;border-top:1px solid #242d3b}.zva-caption h3{color:#fff;margin:3px 0}.zva-area{color:#a97cff;text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:900}.zva-notes{color:#c7ced9}.zva-badge-stack{display:flex;gap:6px;flex-wrap:wrap}.zva-badge{border:1px solid #3b465a;border-radius:999px;padding:5px 8px;color:#ceb7fb;font-size:10px;font-weight:800}.zva-controls{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding:14px 18px;background:#0d121b}.zva-controls button{background:#161d2a;color:#efe9ff;border:1px solid #4a3b66;border-radius:8px;padding:9px 13px;cursor:pointer}.zva-progress{height:3px;background:#293140;border-radius:99px;overflow:hidden}.zva-progress i{display:block;height:100%;background:#9a65ff}
.zva-restricted{position:relative;overflow:hidden;min-height:450px;display:flex;align-items:center;justify-content:center;padding:42px 22px;background:radial-gradient(circle at 50% 25%,rgba(103,65,155,.13),transparent 35%),linear-gradient(180deg,#090c12,#05070a);border:1px solid #2b3442;border-radius:14px;color:#eef1f7}.zva-restricted:before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(to bottom,rgba(255,255,255,.018) 0 1px,transparent 1px 4px)}.zva-scan{position:absolute;left:0;right:0;top:-15%;height:10%;background:linear-gradient(to bottom,transparent,rgba(154,101,255,.08),transparent);animation:zvaScan 6s linear infinite}.zva-restricted-inner{position:relative;z-index:2;width:min(760px,100%);text-align:center}.zva-restricted-inner h2{color:#fff;font-size:clamp(28px,5vw,44px);margin:4px 0 18px}.zva-lock{display:inline-block;padding:7px 12px;border:1px solid #704aa8;border-radius:4px;color:#d8c4ff;font-size:11px;font-weight:900;letter-spacing:.17em}.zva-restricted-inner h3{color:#c7a6ff;font-size:18px;letter-spacing:.08em}.zva-notices{display:grid;gap:9px;margin:18px 0}.zva-public-notice{padding:11px 14px;background:#101722;border:1px solid #273247;border-left:3px solid #7e4ec5;border-radius:6px;color:#c8d0dc;text-align:left}.zva-ai-note{display:flex;flex-direction:column;gap:5px;margin-top:24px;padding:14px 16px;background:#0b1018;border:1px solid #202a3a;border-radius:7px;color:#919cad;text-align:left;font-size:12px}.zva-ai-note strong{color:#bda2ed;font-size:10px;letter-spacing:.1em}.zva-restricted-foot{margin-top:24px;color:#5f6c80;font-size:10px;font-weight:800;letter-spacing:.12em}.zva-empty{padding:18px;border:1px solid #3a4454;border-radius:8px;background:#111722;color:#dce3ed}@keyframes zvaScan{from{transform:translateY(0)}to{transform:translateY(1100%)}}
@media(max-width:700px){.zva-portal-head,.zva-caption{flex-direction:column}.zva-controls{grid-template-columns:1fr 1fr}.zva-progress{grid-column:1/-1;grid-row:2}}


/* v0.2.1 — compact the site footer ONLY on the Visual Archive page */
.zva-archive-page footer,
.zva-archive-page .site-footer,
.zva-archive-page #colophon{
    min-height:0 !important;
    padding-top:8px !important;
    padding-bottom:8px !important;
    margin-top:0 !important;
}

.zva-archive-page footer > *,
.zva-archive-page .site-footer > *,
.zva-archive-page #colophon > *{
    margin-top:0 !important;
    margin-bottom:0 !important;
}

.zva-archive-page footer .footer-inner,
.zva-archive-page footer .site-info,
.zva-archive-page .site-footer .footer-inner,
.zva-archive-page .site-footer .site-info,
.zva-archive-page #colophon .footer-inner,
.zva-archive-page #colophon .site-info{
    min-height:0 !important;
    padding-top:6px !important;
    padding-bottom:6px !important;
}

.zva-archive-page footer p,
.zva-archive-page .site-footer p,
.zva-archive-page #colophon p{
    margin-top:2px !important;
    margin-bottom:2px !important;
}


/* ==========================================================
   v0.2.2 — VISUAL ARCHIVE POLISH
   Compact, cleaner viewer. No functionality changes.
   ========================================================== */

/* Main archive panel: slightly tighter and cleaner */
.zva-archive-page .zva-shell,
.zva-archive-page .zva-archive-shell,
.zva-archive-page .zva-gallery-shell,
.zva-archive-page .zva-wrap{
    border-radius:18px !important;
}

.zva-archive-page .zva-gallery-view,
.zva-archive-page .zva-single-gallery,
.zva-archive-page .zva-viewer{
    overflow:hidden;
}

/* Reduce excess vertical breathing room around archive headings */
.zva-archive-page .zva-header,
.zva-archive-page .zva-archive-header,
.zva-archive-page .zva-gallery-header{
    padding-top:22px !important;
    padding-bottom:18px !important;
}

.zva-archive-page .zva-header h1,
.zva-archive-page .zva-archive-header h1,
.zva-archive-page .zva-gallery-header h1{
    margin-bottom:8px !important;
}

.zva-archive-page .zva-header p,
.zva-archive-page .zva-archive-header p,
.zva-archive-page .zva-gallery-header p{
    margin-top:0 !important;
    margin-bottom:0 !important;
}

/* Gallery title/header bar */
.zva-archive-page .zva-gallery-card-header,
.zva-archive-page .zva-viewer-header,
.zva-archive-page .zva-gallery-titlebar{
    padding-top:14px !important;
    padding-bottom:14px !important;
}

/* Image metadata area: less dead space */
.zva-archive-page .zva-image-meta,
.zva-archive-page .zva-slide-meta,
.zva-archive-page .zva-item-meta,
.zva-archive-page .zva-image-info{
    padding-top:14px !important;
    padding-bottom:14px !important;
    min-height:0 !important;
}

.zva-archive-page .zva-image-meta h2,
.zva-archive-page .zva-image-meta h3,
.zva-archive-page .zva-slide-meta h2,
.zva-archive-page .zva-slide-meta h3,
.zva-archive-page .zva-item-meta h2,
.zva-archive-page .zva-item-meta h3,
.zva-archive-page .zva-image-info h2,
.zva-archive-page .zva-image-info h3{
    margin-top:4px !important;
    margin-bottom:0 !important;
    line-height:1.2 !important;
}

/* Make status pills compact rather than large floating circles */
.zva-archive-page .zva-badge,
.zva-archive-page .zva-status,
.zva-archive-page .zva-visibility,
.zva-archive-page .zva-chip,
.zva-archive-page [class*="badge"],
.zva-archive-page [class*="status-pill"]{
    min-width:0 !important;
    min-height:0 !important;
    width:auto !important;
    height:auto !important;
    padding:6px 10px !important;
    border-radius:999px !important;
    line-height:1 !important;
    font-size:10px !important;
    letter-spacing:.04em !important;
    white-space:nowrap !important;
}

/* Viewer controls: tighter, aligned, deliberate */
.zva-archive-page .zva-controls,
.zva-archive-page .zva-nav,
.zva-archive-page .zva-viewer-nav,
.zva-archive-page .zva-gallery-nav{
    padding-top:10px !important;
    padding-bottom:10px !important;
    min-height:0 !important;
    gap:12px !important;
}

.zva-archive-page .zva-controls button,
.zva-archive-page .zva-controls a,
.zva-archive-page .zva-nav button,
.zva-archive-page .zva-nav a,
.zva-archive-page .zva-viewer-nav button,
.zva-archive-page .zva-viewer-nav a,
.zva-archive-page .zva-gallery-nav button,
.zva-archive-page .zva-gallery-nav a{
    min-height:32px !important;
    padding:7px 12px !important;
    border-radius:7px !important;
}

/* Keep progress line visually slim */
.zva-archive-page .zva-progress,
.zva-archive-page .zva-progress-track,
.zva-archive-page [class*="progress"]{
    max-height:4px;
}

/* Prevent unnecessary blank space at bottom of the viewer */
.zva-archive-page .zva-gallery-card,
.zva-archive-page .zva-viewer-card,
.zva-archive-page .zva-slide{
    margin-bottom:0 !important;
}

/* Admin-private indicator: smaller and less dominant */
.zva-archive-page .zva-admin-badge,
.zva-archive-page .zva-private-admin,
.zva-archive-page [class*="admin-view"]{
    padding:7px 12px !important;
    border-radius:999px !important;
    font-size:10px !important;
    line-height:1.25 !important;
}

/* Mobile: retain comfortable touch targets */
@media (max-width: 700px){
    .zva-archive-page .zva-controls button,
    .zva-archive-page .zva-controls a,
    .zva-archive-page .zva-nav button,
    .zva-archive-page .zva-nav a,
    .zva-archive-page .zva-viewer-nav button,
    .zva-archive-page .zva-viewer-nav a{
        min-height:38px !important;
    }
}


/* ==========================================================
   v0.2.3 — FULL IMAGE POPUP / LIGHTBOX
   Click any Visual Archive gallery image to inspect it closely.
   ========================================================== */
.zva-archive-page .zva-lightbox-target{
    cursor:zoom-in !important;
}

#zva-lightbox{
    position:fixed;
    inset:0;
    z-index:999999;
    display:none;
    align-items:center;
    justify-content:center;
    padding:28px;
    background:rgba(2,5,12,.94);
    backdrop-filter:blur(8px);
}

#zva-lightbox.zva-open{
    display:flex;
}

#zva-lightbox .zva-lightbox-stage{
    position:relative;
    width:100%;
    height:100%;
    display:flex;
    align-items:center;
    justify-content:center;
}

#zva-lightbox img{
    display:block;
    max-width:96vw;
    max-height:92vh;
    width:auto;
    height:auto;
    object-fit:contain;
    box-shadow:0 18px 70px rgba(0,0,0,.65);
    cursor:zoom-in;
    transform-origin:center center;
    transition:transform .16s ease;
    user-select:none;
    -webkit-user-drag:none;
}

#zva-lightbox.zva-zoomed img{
    cursor:zoom-out;
}

#zva-lightbox .zva-lightbox-close{
    position:fixed;
    top:22px;
    right:24px;
    z-index:2;
    width:44px;
    height:44px;
    border:1px solid rgba(183,117,255,.55);
    border-radius:50%;
    background:#0c1220;
    color:#fff;
    font-size:28px;
    line-height:40px;
    text-align:center;
    cursor:pointer;
    box-shadow:0 0 24px rgba(141,72,218,.22);
}

#zva-lightbox .zva-lightbox-hint{
    position:fixed;
    left:50%;
    bottom:18px;
    transform:translateX(-50%);
    padding:7px 12px;
    border:1px solid rgba(183,117,255,.28);
    border-radius:999px;
    background:rgba(8,12,22,.88);
    color:#c9b1e8;
    font-size:11px;
    letter-spacing:.06em;
    text-transform:uppercase;
    pointer-events:none;
}

body.zva-lightbox-lock{
    overflow:hidden !important;
}

@media (max-width:700px){
    #zva-lightbox{ padding:12px; }
    #zva-lightbox img{ max-width:98vw; max-height:88vh; }
    #zva-lightbox .zva-lightbox-close{ top:10px; right:10px; }
}


/* ==========================================================
   v0.2.4 — DRAGGABLE / PANNABLE IMAGE INSPECTION
   ========================================================== */
#zva-lightbox .zva-lightbox-stage{
    overflow:hidden;
    touch-action:none;
}

#zva-lightbox img{
    cursor:grab;
    will-change:transform;
    transition:transform .08s linear;
}

#zva-lightbox.zva-dragging img{
    cursor:grabbing !important;
    transition:none !important;
}

#zva-lightbox .zva-lightbox-hint{
    white-space:nowrap;
}
