/* Photo viewer dialog with room categories. Loaded after workspace-reference.css.
   Fixed geometry: every row except the stage has a fixed height and the stage is
   the remaining grid track, so image proportions never resize the dialog or move
   a control. Uses its own class names to stay clear of the legacy gallery sheets. */
html:has(dialog.aw-photo-viewer[open]){overflow:hidden!important;scrollbar-gutter:stable}
html[data-aw-theme] body dialog.aw-photo-viewer{--pv-bg:var(--ws-surface,#fff);--pv-ink:var(--ws-ink,#151b26);--pv-text:var(--ws-text,#3d4553);--pv-muted:var(--ws-muted,#636c7a);--pv-line:var(--ws-line,#e2e6eb);--pv-soft:var(--ws-soft,#f3f5f8);--pv-tint:var(--ws-tint,#edf3fe);--pv-blue:var(--ws-blue,#0b5cf2);--pv-stage:#f6f4ef;--pv-pad:24px;
 position:fixed!important;inset:0!important;box-sizing:border-box!important;width:min(calc(100vw - 32px),1720px)!important;height:calc(100dvh - 32px)!important;max-width:none!important;max-height:none!important;min-width:0!important;min-height:0!important;margin:auto!important;padding:0!important;border:1px solid var(--pv-line)!important;border-radius:8px!important;background:var(--pv-bg)!important;color:var(--pv-ink)!important;font-family:var(--ws-font,'Source Sans 3',system-ui,sans-serif)!important;overflow:hidden!important;box-shadow:0 24px 80px rgba(8,12,20,.38)!important}
html[data-aw-theme=dark] body dialog.aw-photo-viewer{--pv-stage:#0b1017;box-shadow:0 24px 80px rgba(0,0,0,.6)!important}
html[data-aw-theme] body dialog.aw-photo-viewer:not([open]){display:none!important}
html[data-aw-theme] body dialog.aw-photo-viewer[open]{display:grid!important;grid-template-rows:auto minmax(0,1fr)!important;grid-template-columns:minmax(0,1fr)!important}
html[data-aw-theme] body dialog.aw-photo-viewer::backdrop{background:rgba(9,13,20,.8)}
html[data-aw-theme] body dialog.aw-photo-viewer *{box-sizing:border-box}
html[data-aw-theme] body dialog.aw-photo-viewer :is(p,strong,span){letter-spacing:0}
html[data-aw-theme] body dialog.aw-photo-viewer button{font-family:inherit!important;cursor:pointer;box-shadow:none;transition:color .15s,background-color .15s,border-color .15s,opacity .15s}
/* [open] lifts these above the listing page's own focus rule so rings sit inside the strips. */
html[data-aw-theme] body dialog.aw-photo-viewer[open] :is(.aw-pv-bar,.aw-pv-panel) button:focus-visible{outline:3px solid var(--pv-blue)!important;outline-offset:2px!important}
html[data-aw-theme] body dialog.aw-photo-viewer [aria-disabled=true]{opacity:.42!important;cursor:default!important}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-sr{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}

/* Top bar: identifier · category tabs · count · close (one fixed-height row on wide screens). */
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-bar{display:flex!important;align-items:center;gap:20px;height:64px;min-width:0;margin:0!important;padding:0 14px 0 var(--pv-pad)!important;border:0!important;border-bottom:1px solid var(--pv-line)!important;background:var(--pv-bg)!important}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-id{display:flex;flex-direction:column;justify-content:center;gap:1px;flex:0 1 auto;min-width:0;max-width:min(340px,30%)}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-bar:not(.has-tabs) .aw-pv-id{flex:1 1 auto;max-width:none}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-id strong{display:block;overflow:hidden;font-size:16px!important;font-weight:650!important;line-height:1.25!important;color:var(--pv-ink)!important;white-space:nowrap;text-overflow:ellipsis}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-id span{display:block;font-size:14px;font-weight:600;line-height:1.3;color:var(--pv-text);white-space:nowrap;font-variant-numeric:tabular-nums}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs{position:relative;display:flex;align-items:stretch;align-self:stretch;gap:2px;flex:1 1 auto;min-width:0;margin:0;padding:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;scroll-behavior:smooth}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs::-webkit-scrollbar{display:none}
/* Fade hints when more tabs sit off either edge (flags set by the component). */
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs[data-end=true]{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 44px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 44px),transparent)}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs[data-start=true]{-webkit-mask-image:linear-gradient(to right,transparent,#000 44px);mask-image:linear-gradient(to right,transparent,#000 44px)}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs[data-start=true][data-end=true]{-webkit-mask-image:linear-gradient(to right,transparent,#000 44px,#000 calc(100% - 44px),transparent);mask-image:linear-gradient(to right,transparent,#000 44px,#000 calc(100% - 44px),transparent)}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs>[role=tab]{display:inline-flex!important;flex:none;align-items:center;gap:7px;height:auto!important;min-height:44px!important;margin:0!important;padding:0 12px!important;border:0!important;border-bottom:2px solid transparent!important;border-radius:0!important;background:transparent!important;color:var(--pv-muted)!important;font-size:15px!important;font-weight:600!important;line-height:1!important;white-space:nowrap}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs>[role=tab]:hover{color:var(--pv-ink)!important;background:var(--pv-soft)!important}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs>[role=tab][aria-selected=true]{color:var(--pv-ink)!important;border-bottom-color:var(--pv-blue)!important;background:transparent!important}
html[data-aw-theme] body dialog.aw-photo-viewer[open] .aw-pv-tabs>[role=tab]:focus-visible{outline:3px solid var(--pv-blue)!important;outline-offset:-3px!important}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tab-count{display:inline-block;min-width:22px;padding:0 6px;border-radius:999px;background:var(--pv-soft);color:var(--pv-muted);font-size:12px;font-weight:600;line-height:20px;text-align:center;font-variant-numeric:tabular-nums}
html[data-aw-theme] body dialog.aw-photo-viewer [aria-selected=true] .aw-pv-tab-count{background:var(--pv-tint);color:var(--pv-blue)}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-count{flex:none;min-width:76px;margin-left:auto;color:var(--pv-text);font-size:14px;font-weight:600;line-height:1;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-close{display:inline-grid!important;flex:none;place-items:center;width:40px!important;height:40px!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;border:1px solid var(--pv-line)!important;border-radius:6px!important;background:var(--pv-bg)!important;color:var(--pv-ink)!important}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-close:hover{background:var(--pv-soft)!important}

/* Stage, control row and thumbnail strip. */
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-panel{display:grid!important;grid-template-rows:minmax(0,1fr) 60px 96px;grid-template-columns:minmax(0,1fr);min-width:0;min-height:0;margin:0;padding:0}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-stage{position:relative;display:flex;min-width:0;min-height:0;margin:0;padding:0;overflow:hidden;background:var(--pv-stage);container-type:size;user-select:none;-webkit-user-select:none}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-stage>img{display:block!important;flex:none;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;object-fit:contain!important;object-position:center!important;transform:none!important;filter:none!important}
/* Enlarge: twice the fitted size, centred, panned by scrolling, dragging or arrow keys. */
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-stage.is-enlarged{overflow:auto;overscroll-behavior:contain;cursor:grab;scrollbar-width:thin}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-stage.is-enlarged:active{cursor:grabbing}
html[data-aw-theme] body dialog.aw-photo-viewer[open] .aw-pv-stage.is-enlarged:focus-visible{outline:3px solid var(--pv-blue)!important;outline-offset:-3px!important}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-stage.is-enlarged>img{width:calc(2 * min(100cqw,100cqh * var(--aw-pv-ratio,1.5)))!important;height:auto!important;margin:auto!important;object-fit:fill!important}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-controls{position:relative;display:flex;align-items:center;gap:16px;min-width:0;margin:0;padding:0 14px 0 var(--pv-pad);border-top:1px solid var(--pv-line);background:var(--pv-bg)}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-caption{display:flex;flex:1 1 auto;align-items:center;gap:10px;min-width:0;margin:0!important;color:var(--pv-text);font-size:15px;line-height:1.3}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-chip{flex:none;padding:2px 9px;border:1px solid var(--pv-line);border-radius:999px;background:var(--pv-soft);color:var(--pv-ink);font-size:12px;font-weight:600;line-height:18px}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-actions{display:flex;flex:none;gap:8px}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-actions>button{display:inline-flex!important;align-items:center;justify-content:center;gap:6px;height:40px!important;min-height:0!important;margin:0!important;padding:0 13px!important;border:1px solid var(--pv-line)!important;border-radius:6px!important;background:var(--pv-bg)!important;color:var(--pv-ink)!important;font-size:14px!important;font-weight:600!important;line-height:1!important;white-space:nowrap}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-actions>button:not([aria-disabled=true]):hover{background:var(--pv-soft)!important}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-actions>.aw-pv-fit{min-width:120px}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-thumbs{position:relative;display:flex;align-items:flex-start;gap:8px;min-width:0;margin:0;padding:11px var(--pv-pad) 0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;border-top:1px solid var(--pv-line);background:var(--pv-bg);scrollbar-width:thin;scroll-behavior:smooth}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-thumbs>button{display:block!important;flex:none;width:108px!important;height:72px!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;border-radius:6px!important;overflow:hidden;background:var(--pv-soft)!important;opacity:.7}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-thumbs>button:hover{opacity:1}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-thumbs>button[aria-current=true]{opacity:1;box-shadow:0 0 0 2px var(--pv-bg),0 0 0 4px var(--pv-ink)!important}
html[data-aw-theme] body dialog.aw-photo-viewer[open] .aw-pv-thumbs>button:focus-visible{opacity:1;outline:3px solid var(--pv-blue)!important;outline-offset:2px!important}
html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-thumbs img{display:block!important;width:100%!important;height:100%!important;max-width:none!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;object-fit:cover!important;filter:none!important}

/* Tablets and narrower windows: tabs get their own full-width row under the identifier. */
@media(max-width:1100px){
 html[data-aw-theme] body dialog.aw-photo-viewer{--pv-pad:16px}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-bar{display:grid!important;grid-template-columns:minmax(0,1fr) auto auto;grid-template-rows:60px;gap:0 12px;height:auto;padding:0!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-bar.has-tabs{grid-template-rows:60px 46px}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-id{grid-column:1;grid-row:1;max-width:none;padding-left:var(--pv-pad)}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-count{grid-column:2;grid-row:1;min-width:0}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-close{grid-column:3;grid-row:1;margin-right:10px!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs{grid-column:1/-1;grid-row:2;padding:0 calc(var(--pv-pad) - 12px);border-top:1px solid var(--pv-line);scroll-padding-inline:var(--pv-pad)}
}
/* Phones: the viewer takes the whole screen, respects safe areas, and keeps 44px targets. */
@media(max-width:640px){
 html[data-aw-theme] body dialog.aw-photo-viewer{--pv-pad:max(16px,env(safe-area-inset-left));width:100vw!important;height:100dvh!important;border:0!important;border-radius:0!important;box-shadow:none!important;padding:env(safe-area-inset-top) 0 0!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-bar{grid-template-rows:56px;gap:0 10px}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-bar.has-tabs{grid-template-rows:56px 46px}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-id strong{font-size:15px!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-id span{font-size:13px}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-count{font-size:13px}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-close{width:44px!important;height:44px!important;margin-right:max(6px,env(safe-area-inset-right))!important;border-color:transparent!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs>[role=tab]{font-size:14px!important;padding:0 11px!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-panel{grid-template-rows:minmax(0,1fr) 56px calc(70px + env(safe-area-inset-bottom))}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-controls{gap:8px;padding:0 max(6px,env(safe-area-inset-right)) 0 var(--pv-pad)}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-caption{font-size:14px;gap:8px}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-actions{gap:4px}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-actions>button,html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-actions>.aw-pv-fit{width:44px!important;min-width:44px;height:44px!important;padding:0!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-actions>button>span{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-thumbs{gap:6px;padding:9px var(--pv-pad) env(safe-area-inset-bottom)}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-thumbs>button{width:72px!important;height:50px!important}
}
/* Short screens (phones in landscape): full screen, one compact top row, shorter strips,
   so the photo keeps most of the height. */
@media(max-height:560px){
 html[data-aw-theme] body dialog.aw-photo-viewer{--pv-pad:max(16px,env(safe-area-inset-left));width:100vw!important;height:100dvh!important;border:0!important;border-radius:0!important;box-shadow:none!important;padding:env(safe-area-inset-top) 0 0!important}
 html[data-aw-theme] body dialog.aw-photo-viewer :is(.aw-pv-bar,.aw-pv-bar.has-tabs){display:flex!important;height:48px;gap:12px;padding:0 max(4px,env(safe-area-inset-right)) 0 0!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-id{max-width:min(260px,28%);padding-left:var(--pv-pad)}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-id strong{font-size:14px!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-id span{font-size:12px}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs{padding:0;border-top:0}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-tabs>[role=tab]{font-size:14px!important;padding:0 10px!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-close{width:44px!important;height:44px!important;margin:0!important;border-color:transparent!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-panel{grid-template-rows:minmax(0,1fr) 52px calc(58px + env(safe-area-inset-bottom))}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-controls{padding-right:max(4px,env(safe-area-inset-right))}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-actions>button{height:44px!important}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-thumbs{gap:6px;padding:6px var(--pv-pad) env(safe-area-inset-bottom)}
 html[data-aw-theme] body dialog.aw-photo-viewer .aw-pv-thumbs>button{width:66px!important;height:44px!important}
}
@media(prefers-reduced-motion:reduce){
 html[data-aw-theme] body dialog.aw-photo-viewer :is(.aw-pv-tabs,.aw-pv-thumbs,.aw-pv-stage){scroll-behavior:auto}
 html[data-aw-theme] body dialog.aw-photo-viewer button{transition:none!important}
}
