/* Stable source geometry: expansion never changes row height or page length. */
.work-collage{max-width:none;width:calc(100% + 48px);margin:44px -24px 72px;padding:0;gap:20px;overflow-anchor:none}
.work-collage .work-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));height:clamp(240px,25vw,400px);gap:16px;margin:0;align-items:center;transition:none;position:relative}
.work-collage .work-row:nth-child(even){height:clamp(230px,23vw,365px)}
.work-collage .work-row .work-tile{width:100%!important;height:82%!important;min-width:0;flex:none!important;order:0!important;transition:opacity .3s,filter .3s;position:relative}
.work-collage .work-row .work-tile:nth-child(2){height:100%!important}
.work-collage .work-row .work-tile:nth-child(4){height:91%!important}
.work-collage .work-row .work-photo{height:100%;width:100%;border:0;box-shadow:none;border-radius:9px;overflow:hidden;background:transparent}
.work-collage .work-photo img{object-fit:cover;transform:none;transition:transform .3s}
.work-collage:not(.has-selection) .work-tile.is-hovered .work-photo img{transform:scale(1.025)}
.work-collage.has-selection .work-tile:not(.is-source){filter:blur(4px);opacity:.58}
.work-collage .work-tile.is-source{opacity:0;pointer-events:none}
.work-collage .photo-info{display:none!important}
.work-collage .photo-view{opacity:0;transition:opacity .18s ease;transition-delay:0s!important;transform:none;white-space:nowrap;width:154px}
.work-collage .is-hovered .photo-view,.work-collage .work-photo:focus-visible .photo-view{opacity:1;transition-delay:0s!important}
.portfolio-focus{position:fixed;z-index:90;margin:0;padding:0;box-sizing:border-box;isolation:isolate;border-radius:10px;overflow:hidden;box-shadow:0 12px 42px #222d4020;background:transparent}
.portfolio-focus .work-photo{position:absolute;inset:0;display:block;width:100%;height:100%;padding:0;border:0;background:transparent;border-radius:0;box-shadow:none}
.portfolio-focus .work-photo img{display:block;width:100%;height:100%;object-fit:contain;transform:none;transition:none;background:transparent}
.portfolio-focus .photo-view{display:none}
.portfolio-focus .photo-info{position:absolute;inset:auto 22px 22px;display:flex;justify-content:flex-end;align-items:stretch;gap:14px;padding:0;background:transparent;pointer-events:none;z-index:2;opacity:0;transition:opacity .2s}
.portfolio-focus.is-open .photo-info{opacity:1}
.portfolio-focus .photo-info .photo-book{position:relative;pointer-events:auto;width:220px;max-width:calc(50% - 7px);min-height:64px;font:600 16px/1.25 Montserrat,Arial,sans-serif;padding:16px 10px;border-radius:12px;background:#fff;color:var(--ink);box-shadow:0 3px 12px #222d4025;text-align:center;white-space:normal;transform:none;animation:none}
.portfolio-focus .photo-info .photo-book:hover,.portfolio-focus .photo-info .photo-book:focus-visible{background:var(--orange);transform:none}
.portfolio-focus .photo-info .photo-book::after{content:'';position:absolute;inset:-6px}
.portfolio-focus.is-narrow .photo-info{inset:auto 14px 14px;gap:10px}
.portfolio-focus.is-narrow .photo-info .photo-book{min-height:54px;font-size:13px;padding:10px 6px;max-width:calc(50% - 5px)}
@media(max-width:640px){.work-collage{width:calc(100% + 24px);margin-left:-12px;margin-right:-12px;gap:12px}.work-collage .work-row,.work-collage .work-row:nth-child(even){height:auto;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:170px;gap:12px}.work-collage .work-row .work-tile:nth-child(n){height:100%!important}.work-collage .photo-view{right:10px;bottom:10px;font-size:12px;width:138px;min-height:44px;padding:10px}.portfolio-focus .photo-info{inset:auto 14px 14px;gap:10px}.portfolio-focus .photo-info .photo-book{font-size:14px;min-height:58px;padding:10px 7px}}
@media(prefers-reduced-motion:reduce){.work-collage .work-tile,.work-collage .work-photo img,.work-collage .photo-view,.portfolio-focus .photo-info{transition:none}}
.work-collage.has-selection .work-tile.is-source{opacity:0;filter:none;pointer-events:none}
.work-collage .work-row .work-tile{transition:opacity .3s,filter .3s,transform .3s}
.work-collage.has-selection .work-tile:not(.is-source){transform:scale(.96)}
@media(prefers-reduced-motion:reduce){.work-collage .work-row .work-tile{transition:none}}
