.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:16px;align-items:stretch}@media (max-width:720px){.gallery{grid-template-columns:1fr!important}}.g-item{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;display:block;box-shadow:0 1px 2px rgba(0,0,0,.05);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;position:relative;color:var(--text);text-decoration:none}a.g-item:where(:link,:visited,:hover,:active){color:inherit;text-decoration:none}.g-item *{text-decoration:none}.g-item:hover{transform:translateY(-3px);border-color:rgba(0,0,0,.14);box-shadow:0 14px 34px rgba(0,0,0,.14)}.theme-dark .g-item:hover{border-color:rgba(255,255,255,.18);box-shadow:0 14px 34px rgba(0,0,0,.35)}.g-imgwrap{aspect-ratio:1/1;width:100%;background:var(--surface-2);display:grid;place-items:center;position:relative}.g-th{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;transition:transform .2s ease,filter .2s ease}.g-item:hover .g-th{transform:scale(1.03)}.g-hover-hint{position:absolute;right:10px;bottom:10px;padding:7px 10px;font-size:12px;line-height:1;border-radius:12px;background:rgba(17,24,39,.78);color:#fff;opacity:0;transform:translateY(4px);transition:opacity .18s ease,transform .18s ease;pointer-events:none;backdrop-filter:blur(6px)}.g-item:hover .g-hover-hint{opacity:1;transform:translateY(0)}.g-title{padding:12px;display:flex;align-items:center;justify-content:space-between;gap:10px}.g-title strong{margin:0;font-size:15px;font-weight:800;letter-spacing:.01em;color:var(--heading);line-height:1.2;min-width:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.g-badge{flex:0 0 auto;font-size:12px;line-height:1;padding:6px 10px;border-radius:999px;background:rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.08);color:var(--text);text-decoration:none;user-select:none}.theme-dark .g-badge{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1);color:rgba(255,255,255,.92)}.g-meta{padding:12px;display:flex;gap:8px;justify-content:flex-end}.pagination{margin-top:16px;display:flex;gap:8px;flex-wrap:wrap}.viewer{position:fixed;inset:0;background:rgba(0,0,0,.86);display:none;z-index:9999}.viewer[data-open="1"]{display:flex}.v-wrap{margin:auto;max-width:min(96vw,1200px);max-height:90vh;display:grid;gap:12px}.v-img{max-width:100%;max-height:80vh;border-radius:12px;border:1px solid rgba(255,255,255,.25);background:#111;display:block;margin:0 auto}.v-bar{display:flex;gap:8px;justify-content:flex-end;align-items:center}.v-actions{display:flex;gap:8px}.viewer .btn{height:44px;padding:0 16px;border-radius:10px}.viewer .btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}.viewer .btn-ghost{background:0 0;color:#fff;border:1px solid rgba(255,255,255,.55)}.viewer .btn-ghost:hover{background:rgba(255,255,255,.06)}.v-nav{position:fixed;top:50%;transform:translateY(-50%);width:56px;height:56px;border-radius:50%;background:rgba(255,255,255,.92);color:#000;border:0;cursor:pointer;box-shadow:var(--shadow-md);font-size:32px;font-weight:800;line-height:1;display:grid;place-items:center;user-select:none}.v-prev{left:12px}.v-next{right:12px}body.modal-open{overflow:hidden}.gal-topbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.gal-back{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 14px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border);color:var(--text);text-decoration:none;font-weight:800;letter-spacing:.01em;box-shadow:0 1px 2px rgba(0,0,0,.06);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background-color .16s ease;user-select:none}.gal-back:hover{transform:translateY(-1px);border-color:rgba(0,0,0,.14);box-shadow:0 12px 26px rgba(0,0,0,.12)}.theme-dark .gal-back:hover{border-color:rgba(255,255,255,.18);box-shadow:0 12px 26px rgba(0,0,0,.35)}.gal-back:active{transform:translateY(0)}.gal-back:focus-visible{outline:3px solid color-mix(in oklab,var(--brand) 45%,transparent);outline-offset:3px}.gal-back__icon{width:18px;height:18px;flex:0 0 auto}