/* Portfolio v58: continuous grid, live layout, genre comparison. */
.cur-ring{transition:scale .5s cubic-bezier(.2,.75,.25,1),opacity .35s,width .35s,height .35s,margin .35s,background .35s}
body.cur-preview .cur-ring{opacity:0}
body.cur-preview .cur-dot{opacity:1;scale:.4}
.cur-dot{transition:opacity .3s,scale .4s}
.gv-vertical{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:none;padding:var(--grid-edge) var(--grid-edge) 110px}
.gv-vertical .gv-page{display:grid;grid-template-columns:repeat(auto-fill,var(--tile-width));justify-content:center;gap:var(--grid-gap);align-content:start}
.gv-vertical .gt{aspect-ratio:4/5;width:100%;min-width:0}
.gv-vertical .gt-cap b{font-size:var(--tile-label)}
.g2-in{padding-left:max(4px,var(--g2-edge,4px));padding-right:max(4px,var(--g2-edge,4px))}
.criteria-switch{display:flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line);border-radius:99px;white-space:nowrap}
.criteria-switch>span{font-size:10px;padding:0 7px;color:var(--muted)}
.criteria-switch button{width:28px;height:30px;border-radius:50%;font:600 11px var(--fb);transition:background .3s,color .3s}
.criteria-switch button[aria-pressed=true]{color:var(--bg);background:var(--ink)}
.criteria-switch[hidden],.genre-dock[hidden]{display:none!important}
.genre-dock{position:fixed;z-index:45;bottom:22px;right:50%;transform:translateX(50%);display:flex;align-items:center;height:44px;width:min(680px,calc(100vw - 32px));padding:4px;border:1px solid color-mix(in srgb,var(--ink) 23%,transparent);border-radius:99px;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(22px);box-shadow:0 10px 38px #0005;overflow:hidden;transition:width .6s cubic-bezier(.22,1,.36,1),box-shadow .4s}
.genre-options{display:flex;align-items:center;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;transition:opacity .25s,transform .45s}
.genre-options::-webkit-scrollbar{display:none}
.genre-options button{flex:1 0 auto;padding:0 12px;height:34px;border-radius:99px;white-space:nowrap;font:600 11px var(--fb);color:var(--muted);transition:background .3s,color .3s}
.genre-options button[aria-pressed=true]{background:var(--ink);color:var(--bg)}
.genre-options button:hover{color:var(--ink)}
.genre-options button[aria-pressed=true]:hover{color:var(--bg)}
.genre-eye{flex:0 0 34px;height:34px;display:grid;place-items:center;border-radius:50%;margin-left:4px;background:color-mix(in srgb,var(--ink) 7%,transparent)}
.genre-eye svg{width:19px;height:19px}
.eye-slash{opacity:0;transition:opacity .3s}
.genre-dock.collapsed{width:44px}
.genre-dock.collapsed .genre-options{opacity:0;transform:scale(.7)}
.genre-dock.collapsed .genre-eye{margin-left:0}
.genre-dock.collapsed .eye-slash{opacity:1}
.genre-inline{position:relative;inset:auto;transform:none;width:100%;height:40px;box-shadow:none;padding:3px}
.genre-inline .genre-eye{display:none}
.genre-inline .genre-options button{height:32px;padding:0 9px;font-size:10px}
.genre-empty{padding:40px;text-align:center;color:var(--muted)}
.menu-open .genre-dock,body:has(.lb.open)>.genre-dock{visibility:hidden}
.criteria-switch button:focus-visible,.genre-dock button:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
@media(min-width:900px) and (hover:hover) and (pointer:fine){
  body[data-pv=grid] .cfg-panel:not([hidden]){position:fixed;top:calc(var(--hdr) + 8px);left:auto;right:var(--gut);width:min(1120px,calc(100vw - 2 * var(--gut)));height:96px;display:flex;align-items:center;gap:24px;padding:12px 18px;transform-origin:top right;animation:cfg-popup .22s ease-out}
  body[data-pv=grid] .cfg-sec{padding:0;margin:0;border:0;flex:0 0 130px}
  body[data-pv=grid] .cfg-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px;flex:1}
  body[data-pv=grid] .cfg-grid h4{grid-column:1/-1}
  body[data-pv=grid] .cfg-row{margin:0}
  body[data-pv=grid] .cfg-row label{font-size:11px}
  body[data-pv=grid] .cfg-reset{width:90px;flex:none;font-size:9px}
  body[data-criteria="3"] .pfa-bar{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"l c r";gap:12px;padding:8px 0 14px;min-height:68px}
  body[data-criteria="3"] .pfa-c{justify-self:stretch;min-width:0}
  body[data-criteria="3"] .mode-sw{margin:0;padding:3px;height:40px;display:flex;align-items:center}
  body[data-criteria="3"] .mode-sw button{padding:0 12px;height:32px;font-size:12px;white-space:nowrap}
  body[data-criteria="3"] .mode-sw sup{display:none}
  body[data-criteria="3"] .vsw{height:40px;padding:3px}
  body[data-criteria="3"] .vsw button{height:32px;padding:0 10px;display:flex;align-items:center}
}
@media(min-width:900px) and (max-width:1599px){
  body[data-criteria="3"] .vsw button span{display:none}
  .pf-app .hdr-cta{display:none}
}
@media(max-width:899px),(pointer:coarse){
  .criteria-switch>span{display:none}
  .criteria-switch button{width:24px;height:28px}
  .pf-app .hdr-r{gap:8px}
  .genre-dock{bottom:max(14px,env(safe-area-inset-bottom))}
  .genre-inline{bottom:auto}
  body[data-criteria="3"] .pfa-bar{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"l r" "c c"}
  body[data-criteria="3"] .pfa-c{justify-self:stretch;width:100%}
  body[data-criteria="3"] .mode-sw{margin:0;padding:3px;display:flex}
  body[data-criteria="3"] .mode-sw button{padding:7px 8px;font-size:10px;white-space:nowrap}
  body[data-criteria="3"] .mode-sw sup{display:none}
}
@media(prefers-reduced-motion:reduce){
  .cur-ring,.cur-dot,.genre-dock,.genre-options,.tb img{transition:none}
}
body[data-criteria="2"] .pfa-stage:not([data-view="tube"]):not([data-view="grid"]):not([data-view="grid2"]):not([data-view="mobile"]){margin-bottom:64px}
body[data-criteria="2"] .mg{padding-bottom:88px}
body[data-criteria="2"] .g2{padding-bottom:100px}
@media(max-width:360px){body[data-criteria="3"] .mode-sw button{font-size:8.5px;padding-left:5px;padding-right:5px}}

/* v59: floating settings, edge-to-edge vertical galleries, original Tube. */
body[data-pv="grid"] .pfa,body[data-pv="grid2"] .pfa{padding-bottom:0}
.gv-vertical,.g2{scrollbar-width:none;-ms-overflow-style:none}
.gv-vertical::-webkit-scrollbar,.g2::-webkit-scrollbar{display:none;width:0;height:0}
@keyframes cfg-popup{from{opacity:0;transform:translateY(-6px) scale(.985)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){body[data-pv=grid] .cfg-panel:not([hidden]){animation:none}}

/* v60: raise only the best-photo cylinder, keeping its geometry. */
.tube2-best .t2-cam{top:-32px;bottom:32px}
.tube2-best .t2-cap{bottom:50px}
