:root{--fg:#111;--muted:#888;--bg:#fff;--thumb:150px;--gap:14px}
*{box-sizing:border-box}html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--fg);font:15px/1.5 -apple-system,system-ui,"Avenir Next",Avenir,"Helvetica Neue",Helvetica,Arial,sans-serif}
.wrap{max-width:1180px;margin:0 auto;padding:42px 28px 80px}
header.site{margin-bottom:30px}header.site h1{font-size:1.4rem;font-weight:600;margin:0 0 14px}
header.site h1 a{color:var(--fg);text-decoration:none}
a.backlink{display:inline-block;margin-bottom:14px;color:var(--muted);text-decoration:none;font-size:.85rem}
a.backlink:hover{color:var(--fg)}
nav.tags{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline}
nav.tags button{background:none;border:0;padding:0;margin:0;cursor:pointer;font:inherit;color:var(--muted);line-height:1.8}
nav.tags button:hover{color:var(--fg)}nav.tags button.active{color:var(--fg);font-weight:600}
img{-webkit-user-drag:none;user-drag:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;pointer-events:none}
.gallery{display:flex;flex-wrap:wrap;gap:var(--gap)}
.gallery figure{margin:0;width:var(--thumb);height:var(--thumb);overflow:hidden;cursor:pointer;background:#f2f2f2}
.gallery figure img{width:100%;height:100%;object-fit:cover;display:block;transition:opacity .18s}
.gallery figure:hover img{opacity:.82}.gallery figure.hidden{display:none}
footer.site{margin-top:46px;color:var(--muted);font-size:.8rem}
#lb{position:fixed;inset:0;background:rgba(255,255,255,.97);display:none;align-items:center;justify-content:center;z-index:50;flex-direction:column}
#lb.open{display:flex}#lb img{max-width:90vw;max-height:84vh;object-fit:contain;box-shadow:0 8px 40px rgba(0,0,0,.18)}
#lb-link{display:block;line-height:0}
#lb .cap{color:#555;margin-top:14px;font-size:.82rem;text-align:center}
#lb .cap a.lb-src{color:#06c;text-decoration:none;margin-left:8px;pointer-events:auto}
#lb .cap a.lb-src:hover{text-decoration:underline}
#lb .x{position:absolute;top:16px;right:24px;color:#111;font-size:1.8rem;cursor:pointer}
#lb .nav{position:absolute;top:50%;transform:translateY(-50%);color:#111;font-size:2rem;cursor:pointer;padding:0 24px;opacity:.5}
#lb .nav:hover{opacity:1}#lb .prev{left:0}#lb .next{right:0}
@media(max-width:600px){:root{--thumb:104px;--gap:8px}.wrap{padding:28px 16px 60px}}