
/* =====================================================================
   Image viewer (assets/lightbox.js) — full page, thumbnails, zoom, details
   ===================================================================== */
html.lbx-lock,html.lbx-lock body{overflow:hidden}
.lbx-trigger{cursor:zoom-in}
.lbx{--lbx-ac:var(--sun,var(--accent,#10b981));position:fixed;inset:0;z-index:400;display:flex;flex-direction:column;background:rgba(5,6,10,.97);color:#eef0f5;
  font-family:var(--font-body,var(--font-sans,system-ui,sans-serif));opacity:0;outline:none;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transition:opacity .3s ease;-webkit-tap-highlight-color:transparent}
.lbx.open{opacity:1}
.lbx[hidden]{display:none}
.lbx svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.lbx-top{display:flex;align-items:center;gap:18px;padding:14px 18px 10px}
.lbx-count{font-family:var(--font-mono,ui-monospace,monospace);font-size:12px;letter-spacing:.12em;color:#fff;padding:7px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.16)}
.lbx-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;color:rgba(238,240,245,.72)}
.lbx-tools{display:flex;gap:6px;margin-left:auto}
.lbx-btn{width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.05);color:#fff;display:grid;place-items:center;cursor:pointer;transition:background .2s,border-color .2s;text-decoration:none}
.lbx-btn:hover{background:rgba(255,255,255,.14)}
.lbx-btn.on{background:var(--lbx-ac);border-color:var(--lbx-ac);color:#fff}
.lbx-btn:focus-visible,.lbx-nav:focus-visible,.lbx-th:focus-visible,.lbx-pill:focus-visible{outline:2px solid var(--lbx-ac);outline-offset:2px}
.lbx-stage{position:relative;flex:1;min-height:0;overflow:hidden;touch-action:none;user-select:none}
.lbx-frame{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:6px 84px}
.lbx-img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px;box-shadow:0 40px 90px -30px rgba(0,0,0,.9);transform-origin:center center;
  -webkit-user-drag:none;cursor:zoom-in;transition:opacity .35s ease;will-change:transform}
.lbx-img.out{opacity:0}
.lbx.zoomed .lbx-img{cursor:grab;border-radius:0}
.lbx.dragging .lbx-img{cursor:grabbing}
.lbx-spin{position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;border:2px solid rgba(255,255,255,.15);border-top-color:var(--lbx-ac);opacity:0;transition:opacity .2s;animation:lbxSpin .8s linear infinite;pointer-events:none}
.lbx.loading .lbx-spin{opacity:1}
@keyframes lbxSpin{to{transform:rotate(360deg)}}
.lbx-nav{position:absolute;top:50%;z-index:3;width:54px;height:54px;margin-top:-27px;border-radius:50%;border:1px solid rgba(255,255,255,.18);background:rgba(10,11,16,.55);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#fff;display:grid;place-items:center;cursor:pointer;transition:background .2s,transform .2s}
.lbx-nav:hover{background:var(--lbx-ac);border-color:var(--lbx-ac)}
.lbx-prev{left:16px}.lbx-next{right:16px}
.lbx-prev:hover{transform:translateX(-2px)}.lbx-next:hover{transform:translateX(2px)}
.lbx.zoomed .lbx-nav{opacity:.25}
.lbx-hint{position:absolute;left:50%;bottom:14px;transform:translate(-50%,8px);margin:0;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.08);
  font-family:var(--font-mono,ui-monospace,monospace);font-size:11px;letter-spacing:.06em;color:rgba(238,240,245,.8);opacity:0;transition:opacity .4s,transform .4s;pointer-events:none;white-space:nowrap}
.lbx.hinting .lbx-hint{opacity:1;transform:translate(-50%,0)}
.lbx-info{position:absolute;top:10px;right:14px;bottom:10px;z-index:4;width:min(320px,calc(100% - 28px));overflow-y:auto;padding:22px;border-radius:18px;
  border:1px solid rgba(255,255,255,.12);background:rgba(14,16,24,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  transform:translateX(calc(100% + 30px));transition:transform .45s cubic-bezier(.16,1,.3,1)}
.lbx.info-on .lbx-info{transform:none}
.lbx-info h4{margin:0 0 16px;font-size:13px;font-family:var(--font-mono,ui-monospace,monospace);font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--lbx-ac)}
.lbx-info dl{margin:0}
.lbx-info dl div{padding:11px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.lbx-info dt{font-family:var(--font-mono,ui-monospace,monospace);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:rgba(238,240,245,.5);margin-bottom:4px}
.lbx-info dd{margin:0;font-size:14px;line-height:1.5;color:#fff;overflow-wrap:anywhere}
.lbx-info-actions{display:flex;flex-direction:column;gap:8px;margin-top:18px}
.lbx-pill{display:flex;align-items:center;justify-content:center;gap:8px;padding:11px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:transparent;color:#fff;
  font:inherit;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;transition:background .2s,border-color .2s}
.lbx-pill:hover{background:var(--lbx-ac);border-color:var(--lbx-ac)}
.lbx-pill svg{width:15px;height:15px}
.lbx-bottom{padding:10px 18px 16px}
.lbx-cap{max-width:860px;margin:0 auto 12px;text-align:center;font-size:14.5px;line-height:1.5;color:rgba(238,240,245,.85);min-height:1.5em}
.lbx-strip{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 6px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent;justify-content:safe center}
.lbx-th{flex:0 0 auto;width:76px;height:54px;padding:0;border-radius:9px;overflow:hidden;border:2px solid transparent;background:#14151c;opacity:.45;cursor:pointer;
  transition:opacity .2s,border-color .2s,transform .25s}
.lbx-th img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.lbx-th:hover{opacity:.85}
.lbx-th.on{opacity:1;border-color:var(--lbx-ac);transform:translateY(-3px)}
.lbx--single .lbx-nav,.lbx--single .lbx-strip,.lbx--single .lbx-count{display:none}
@media(max-width:700px){
  .lbx-top{padding:10px 10px 6px;gap:10px}
  .lbx-title{display:none}
  .lbx-btn{width:38px;height:38px}
  .lbx-frame{padding:4px}
  .lbx-nav{width:42px;height:42px;margin-top:-21px;background:rgba(10,11,16,.4)}
  .lbx-prev{left:6px}.lbx-next{right:6px}
  .lbx-info{top:auto;bottom:0;right:0;left:0;width:auto;max-height:65%;border-radius:20px 20px 0 0;transform:translateY(105%)}
  .lbx-th{width:58px;height:42px}
  .lbx-bottom{padding:8px 10px 12px}
  .lbx-cap{font-size:13.5px}
}
@media(prefers-reduced-motion:reduce){.lbx,.lbx-img,.lbx-info,.lbx-th{transition:none}}
