/* A shared, read-only photo experience. Scoped away from chat/header/footer UI. */
.photo-viewer-open{overflow:hidden}
dialog.photo-viewer{box-sizing:border-box;width:min(1120px,calc(100vw - 48px));max-width:none;height:min(880px,calc(100dvh - 48px));max-height:calc(100dvh - 48px);margin:auto;padding:0;border:1px solid #c8ceda;border-radius:24px;background:#f7f8fb;color:#1d2c52;overflow:hidden;box-shadow:0 32px 120px #040b1d66}
dialog.photo-viewer[open]{display:flex;flex-direction:column}
dialog.photo-viewer::backdrop{background:#0d1529bd;backdrop-filter:blur(9px)}
.photo-viewer svg,.hotel-photo-gallery svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.photo-viewer .pv-header{position:static;display:flex;flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;height:auto;min-height:82px;padding:15px 24px;background:#f7f8fb;border:0;box-shadow:none;z-index:auto}
.pv-heading{min-width:0}.pv-eyebrow{font-size:10px;letter-spacing:.02em;color:#727987}.photo-viewer .pv-title{font-size:18px;line-height:1.7;margin:2px 0 0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.photo-viewer .pv-icon-button{display:inline-grid;place-items:center;flex-shrink:0;width:44px;height:44px;min-width:44px;padding:0;border:1px solid #d9dee6;border-radius:13px;color:#24355d;background:transparent;box-shadow:none;cursor:pointer}
.photo-viewer .pv-icon-button:hover:not(:disabled){background:#e1e6ef;border-color:#aeb9cc}.photo-viewer button:disabled{opacity:.35;cursor:default}
.photo-viewer button:focus-visible,.photo-viewer a:focus-visible,.pv-canvas:focus-visible,.hotel-gallery-photo:focus-visible{outline:3px solid #889bc4;outline-offset:-4px}
.pv-stage{position:relative;flex:1;min-height:160px;background:#111a30;overflow:hidden}
.pv-canvas{position:absolute;inset:0;overflow:auto;overscroll-behavior:contain}
.pv-surface{width:100%;height:100%;min-width:100%;min-height:100%}.pv-surface img{display:block;opacity:0;width:100%;height:100%;object-fit:contain}.pv-surface.is-loaded img{opacity:1}
.pv-load-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;color:#dee3ec;padding:24px;text-align:center;font-size:13px}
.pv-loader{width:26px;height:26px;border:2px solid #8693ae40;border-top-color:#c1cce2;border-radius:50%;animation:spin 1s linear infinite}
.photo-viewer .pv-retry{font:inherit;border:1px solid #a4b0ca;border-radius:12px;padding:10px 16px;background:#e8edf6;color:#1d2c52;min-height:44px;cursor:pointer}
.photo-viewer .pv-previous,.photo-viewer .pv-next{position:absolute;top:50%;transform:translateY(-50%);color:#fff;background:#142140c9;border-color:#b5bfd044;backdrop-filter:blur(8px);z-index:1}.pv-previous{right:16px}.pv-next{left:16px}.photo-viewer .pv-previous:hover:not(:disabled),.photo-viewer .pv-next:hover:not(:disabled){background:#2f3d5e;color:#fff}
.photo-viewer [hidden]{display:none!important}
.pv-toolbar{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;gap:12px;padding:10px 22px;border-bottom:1px solid #dee3ea}
.pv-counter{font-size:12px;white-space:nowrap;color:#5f687a;font-variant-numeric:tabular-nums}.pv-zoom-controls{display:flex;align-items:center;gap:5px;direction:ltr}.pv-scale{width:48px;text-align:center;font-size:11px;font-variant-numeric:tabular-nums}
.pv-thumbnails{display:flex;gap:8px;overflow:auto;flex-shrink:0;padding:12px 22px;scrollbar-width:thin;overscroll-behavior:contain}
.photo-viewer .pv-thumbnail{display:block;flex:0 0 72px;width:72px;height:54px;border:2px solid transparent;border-radius:10px;overflow:hidden;background:#e1e6ef;padding:2px;cursor:pointer;opacity:.6}.photo-viewer .pv-thumbnail[aria-pressed=true]{opacity:1;border-color:#253f7c}.photo-viewer .pv-thumbnail:hover{opacity:1}
.pv-image-frame{position:relative;width:100%;height:100%;overflow:hidden;background:linear-gradient(130deg,#dee3ec,#ecf1f7);display:grid;place-items:center;border-radius:inherit}
.pv-image-frame img{display:block;width:100%;height:100%;object-fit:cover;opacity:0}.pv-image-frame.is-loaded img{opacity:1}.pv-image-status{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:10px;font-size:11px;color:#636e84}.pv-thumbnail .pv-image-status{font-size:0}.pv-thumbnail .pv-image-status:after{content:'…';font-size:20px}
.photo-viewer .pv-footer{display:block;grid-area:auto;position:static;bottom:auto;width:100%;max-height:160px;overflow:auto;flex-shrink:0;padding:14px 24px;margin:0;background:#f7f8fb;border:0;box-shadow:none;font-size:12px;line-height:1.9;box-sizing:border-box}
.pv-footer .tourism-photo-credit{display:flex;flex-wrap:wrap;column-gap:18px;row-gap:4px;padding:0;font-size:11px}.pv-footer .tourism-photo-credit>a{min-height:30px;margin-inline-start:auto}.pv-footer .tourism-photo-credit>span:last-child:not(:first-child){color:#697383}.pv-footer .tourism-photo-actions{margin:8px 0 0;gap:8px}.pv-address{margin:0;color:#5f6777}
dialog.photo-viewer.is-expanded{width:100vw;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0}
.hotel-photo-gallery{margin:20px 0 24px}.hotel-photo-grid{display:grid;grid-template-columns:1.7fr 1fr;grid-template-rows:150px 150px;gap:8px;border-radius:20px;overflow:hidden}
.hotel-gallery-photo{position:relative;display:block;min-width:0;padding:0;border:0;border-radius:0;background:#dbe3ef;overflow:hidden;cursor:zoom-in}.hotel-gallery-photo:first-child{grid-row:span 2}.hotel-photo-grid[data-count="1"]{grid-template-columns:1fr;grid-template-rows:320px}.hotel-photo-grid[data-count="1"] .hotel-gallery-photo{grid-row:auto}.hotel-photo-grid[data-count="2"] .hotel-gallery-photo{grid-row:span 2}
.hotel-photo-badge{position:absolute;bottom:16px;right:16px;display:flex;align-items:center;gap:8px;background:#fffef4ed;backdrop-filter:blur(5px);color:#1f325e;border:1px solid #ffffff8c;border-radius:11px;padding:9px 12px;font-size:12px;box-shadow:0 3px 15px #131e3322}.hotel-photo-more{position:absolute;inset:0;display:grid;place-items:center;background:#0d1c3966;color:#fff;font-size:25px;font-variant-numeric:tabular-nums}
.hotel-photo-more{direction:ltr}.pv-thumbnail .pv-image-frame.is-failed .pv-image-status:after{content:'—'}
.hotel-photo-empty{display:grid;place-items:center;min-height:130px;background:#e5ebf3;border:1px dashed #c3ccdc;border-radius:18px;text-align:center;padding:20px;font-size:13px}
.tourism-photo-card:only-child{max-width:520px}.tourism-photo-card{box-shadow:0 8px 28px #121d3908}.tourism-photo-open:hover .tourism-photo-expand{background:#fff;transform:scale(1.06)}
@media(max-width:600px){dialog.photo-viewer{width:100vw;height:100dvh;max-height:100dvh;border:0;border-radius:0}.photo-viewer .pv-header{min-height:74px;padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top))}.photo-viewer .pv-title{font-size:16px}.pv-toolbar{padding:8px 12px;gap:5px}.pv-zoom-controls{gap:2px}.pv-scale{width:40px}.pv-thumbnails{padding:10px 14px}.photo-viewer .pv-footer{padding:12px 16px max(12px,env(safe-area-inset-bottom));max-height:190px}.pv-footer .tourism-photo-credit{column-gap:12px}.pv-footer .tourism-photo-credit>a{margin-inline-start:0}.pv-previous{right:8px}.pv-next{left:8px}.hotel-photo-grid{grid-template-rows:110px 110px;grid-template-columns:1.6fr 1fr;gap:5px;border-radius:16px}.hotel-photo-grid[data-count="1"]{grid-template-rows:240px}.hotel-photo-badge{right:8px;bottom:8px;font-size:10px;padding:8px;gap:5px}.hotel-photo-badge svg{width:16px}.pv-counter{font-size:11px}}
@media(max-height:550px) and (orientation:landscape){.photo-viewer .pv-header{min-height:54px;padding:6px 18px}.pv-thumbnails{display:none}.photo-viewer .pv-footer{max-height:90px;padding:6px 18px}.pv-toolbar{padding-block:3px}.pv-stage{min-height:100px}}
@media(prefers-reduced-motion:reduce){.pv-loader{animation:none}.tourism-photo-open:hover .tourism-photo-expand{transform:none}}
