/* v5.1 round 2 gallery: sidebar list + one player pane (gallery.html, assets/gallery.js). Linked on every page. */
.gx{--gx-acc:var(--acc51);display:grid;grid-template-columns:minmax(300px,360px) minmax(0,1fr);align-items:start;max-width:1600px;margin:0 auto}
.gx-side{position:sticky;top:0;height:100vh;height:100dvh;display:flex;flex-direction:column;border-right:1px solid var(--border);background:var(--background);min-width:0}
.gx-side-h{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 4px}
.gx-h1{font-size:1.35rem;margin:0}
.gx-x{display:none}
.gx-form{padding:4px 16px 8px;display:grid;gap:8px}
.gx-f{display:grid;gap:2px;font-size:.78rem;color:var(--mut);min-width:0}
.gx-f span{font-weight:600}
.gx-f input,.gx-f select{font:inherit;font-size:.9rem;color:var(--ink,inherit);background:transparent;border:1px solid var(--border);border-radius:8px;min-height:36px;padding:0 8px;width:100%;min-width:0}
.gx-row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gx-more>summary{cursor:pointer;font-size:.82rem;color:var(--gx-acc);font-weight:600;min-height:28px;display:flex;align-items:center}
.gx-more[open]>summary{margin-bottom:6px}
.gx-checks{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.84rem}
.gx-checks label{display:inline-flex;align-items:center;gap:6px;min-height:30px;cursor:pointer}
.gx-count{margin:0;font-size:.82rem;color:var(--mut);display:flex;align-items:center;justify-content:space-between;gap:8px}
.gx-reset{font:inherit;font-size:.8rem;border:0;background:none;color:var(--gx-acc);cursor:pointer;padding:4px 0}
.gx-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;border-top:1px solid var(--border);position:relative;min-height:120px}
.gx-list{position:relative}
.gx-row{position:absolute;left:0;right:0;height:72px;display:flex;align-items:center;gap:10px;padding:8px 14px;text-decoration:none;color:inherit;border-left:3px solid transparent;box-sizing:border-box}
.gx-row:hover{background:var(--soft)}
.gx-row[aria-selected="true"]{background:var(--soft);border-left-color:var(--gx-acc)}
.gx-row img,.gx-ni{flex:none;width:80px;height:54px;border-radius:6px;object-fit:cover;background:var(--soft)}
.gx-rt{display:grid;flex:1;min-width:0;line-height:1.25}
.gx-rt b,.gx-rt>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-rt b{font-size:.88rem;font-weight:600}
.gx-rt>span{font-size:.78rem;color:var(--mut)}
.gx-cs{display:flex;gap:4px;margin-top:2px;overflow:hidden}
.gx-c{font-size:.66rem;line-height:1;padding:3px 6px;border-radius:999px;border:1px solid var(--border);white-space:nowrap}
.gx-cp{border-color:var(--gx-acc);color:var(--gx-acc)}
.gx-cw{border-color:#c98a1a;color:#c98a1a}
.gx-d{font-size:.66rem;color:var(--mut);margin-left:auto;white-space:nowrap}
.gx-empty{padding:16px;font-size:.9rem}
.gx-how{padding:8px 16px 12px;font-size:.78rem;color:var(--mut);border-top:1px solid var(--border)}
.gx-how summary{cursor:pointer;color:var(--gx-acc);font-weight:600}
.gx-pane{min-width:0;padding:16px clamp(16px,3vw,40px) 40px}
.gx-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.gx-open{display:none}
.gx-mode{font-size:.85rem;font-weight:600;color:var(--gx-acc);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.gx-nav{display:inline-flex;align-items:center;gap:8px;margin-left:auto}
.gx-nav button,.gx-open,.gx-acts button,.gx-rv,.gx-more-p{font:inherit;font-size:.88rem;font-weight:600;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--border);background:transparent;color:inherit;cursor:pointer}
.gx-nav button:disabled{opacity:.4;cursor:default}
.gx-pos{font-size:.85rem;color:var(--mut);font-variant-numeric:tabular-nums;white-space:nowrap}
.gx-stage{position:relative;background:#0b0d10;border-radius:12px;overflow:hidden;aspect-ratio:16/10;max-height:68vh;width:100%}
.gx-media{position:absolute;inset:0}
.gx-media img,.gx-media video,.gx-media iframe{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;border:0;display:block}
.gx-media .gx-svg{background:#fff;padding:2%;box-sizing:border-box}
.gx-media iframe{background:#fff}
.gx-none,.gx-wait{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;margin:0;color:#aab;font-size:.95rem;text-align:center;padding:16px}
.gx-fsbar{display:none}
.gx-acts{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}
.gx-acts .gx-live{background:var(--acc51-fill,#2f5fd0);border-color:var(--acc51-fill,#2f5fd0);color:var(--on-acc51,#fff)}
.gx-title{font-size:1.4rem;margin:14px 0 2px;line-height:1.2}
.gx-sub{margin:0 0 10px;color:var(--mut)}
.gx-st{margin:0 0 8px;font-weight:600;font-size:.95rem}
.gx-st-fail{color:var(--c-dnf,#d9534f)}
.gx-st-err,.gx-st-nf,.gx-st-issue{color:#c98a1a}
.gx-vn,.gx-fine{font-size:.8rem;margin:0 0 8px}
.gx-facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px 18px;margin:8px 0 12px}
.gx-facts div{min-width:0}
.gx-facts dt{font-size:.75rem;color:var(--mut);font-weight:600}
.gx-facts dd{margin:0;font-size:.92rem;overflow-wrap:anywhere}
.gx-note{font-size:.88rem;color:var(--mut);max-width:70ch}
.gx-score{margin:14px 0;max-width:560px}
.gx-score h3,.gx-prompt h3{font-size:.95rem;margin:0 0 6px}
.gx-score ul{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.gx-score li{display:grid;grid-template-columns:minmax(80px,120px) 1fr auto;gap:10px;align-items:center;font-size:.84rem}
.gx-sb{height:8px;border-radius:4px;background:var(--soft);overflow:hidden}
.gx-sb i{display:block;height:100%;background:var(--gx-acc);border-radius:4px}
.gx-sw{color:var(--mut);font-variant-numeric:tabular-nums;white-space:nowrap}
.gx-prompt{margin:14px 0;max-width:75ch}
.gx-pt{margin:0 0 6px;white-space:pre-wrap;font-size:.9rem;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gx-pt.open{display:block;-webkit-line-clamp:unset}
.gx-more-p{min-height:32px;font-size:.8rem;padding:0 12px}
.gx-links{display:flex;flex-wrap:wrap;gap:8px 18px;margin:14px 0 0;font-size:.9rem}
.gx-go{font-weight:700}
.gx-foot{padding:0 16px 24px}
/* full-screen viewer: the stage covers the screen with a compact one-line title bar (tap to expand) */
.gx-stage.is-full{position:fixed;inset:0;z-index:1000;max-height:none;aspect-ratio:auto;border-radius:0}
.gx-stage.is-full .gx-fsbar{display:flex;position:absolute;left:0;right:0;top:0;z-index:2;gap:8px;align-items:center;padding:4px 8px;padding-top:max(4px,env(safe-area-inset-top));background:rgba(8,10,14,.82);color:#fff}
.gx-stage.is-full .gx-media{top:calc(30px + env(safe-area-inset-top))}
.gx-fst{flex:1;min-width:0;text-align:left;font:inherit;font-size:.82rem;line-height:22px;height:22px;color:#fff;background:none;border:0;padding:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.gx-stage.is-open .gx-fst{white-space:normal;height:auto}
.gx-fsx{font:inherit;font-size:.8rem;color:#fff;background:none;border:1px solid rgba(255,255,255,.4);border-radius:999px;padding:2px 10px;cursor:pointer}
body.gx-fs-on{overflow:hidden}
/* the gallery page: no page footer clutter under the app on desktop */
body[data-page="gallery"] .site-foot{margin-top:0}
@media (max-width:899px){
 .gx{display:block}
 .gx-side{position:fixed;left:0;top:0;bottom:0;height:auto;width:min(92vw,420px);z-index:900;transform:translateX(-102%);visibility:hidden;transition:transform .2s ease,visibility 0s linear .2s;background:var(--background);box-shadow:none}
 body.gx-drawer .gx-side{transform:none;visibility:visible;transition:transform .2s ease;box-shadow:0 0 0 100vmax rgba(0,0,0,.5)}
 .gx-x{display:inline-flex;align-items:center;font:inherit;font-size:.88rem;font-weight:600;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--border);background:transparent;color:inherit;cursor:pointer}
 .gx-open{display:inline-flex;align-items:center;gap:6px}
 .gx-pane{padding:10px 12px 28px}
 .gx-bar{gap:8px}
 .gx-mode{order:3;flex-basis:100%}
 .gx-nav button{padding:0 12px}
 .gx-stage{aspect-ratio:4/3;border-radius:10px}
 .gx-title{font-size:1.2rem}
 .gx-facts{grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion:reduce){.gx-side{transition:none!important}}
@media (max-width:899px){
 .gx-bar{gap:6px}
 .gx-mode{order:-1;flex-basis:100%}
 .gx-nav button,.gx-open{white-space:nowrap}
 .gx-nav{gap:4px}
 .gx-nav button,.gx-open{padding:0 10px;font-size:.84rem}
 .gx-pos{font-size:.78rem}
}
.gx-cta{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:6px 0 14px}
.gx-cta a.btn-g{display:inline-flex;align-items:center;min-height:42px;padding:0 18px;border-radius:999px;background:var(--acc51-fill,#2f5fd0);color:var(--on-acc51,#fff);font-weight:700;text-decoration:none}
/* result pages r/<id>/ match the player pane: rounded dark stage, one accent, gallery links under the title */
.r-gx{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0}
.r-gx a{display:inline-flex;align-items:center;min-height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--border);font-size:.88rem;font-weight:600;text-decoration:none;color:inherit}
.r-gx a:first-child{border-color:var(--acc51);color:var(--acc51)}
body[data-page="result"] .r-media .viewer{border-radius:12px;overflow:hidden;background:#0b0d10}
body[data-page="result"] .r-media .btn-primary{background:var(--acc51-fill,#2f5fd0);border-color:var(--acc51-fill,#2f5fd0);color:var(--on-acc51,#fff);border-radius:999px}
/* v5.1.2: tap fallback and saved stills in the player pane */
.tap-fallback{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:4;padding:.5em 1em;border:0;border-radius:999px;background:var(--acc51-fill,#2f5fd0);color:var(--on-acc51,#fff);font:inherit;font-weight:600;cursor:pointer}
.gx-snaps .snap-strip{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:6px 0 0;padding:0}
.gx-snaps .snap-strip img{display:block;width:88px;height:auto;border-radius:4px}

/* v5.2.5: served model unverified (proxy log lost) */
.gx-c.gx-cu{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:.6rem;padding:3px 5px}
.gx-st.gx-unverified{color:var(--c-cfg,#b26b00);font-weight:600}
