@font-face{font-family:'Abril Fatface';src:url('fonts/abril-fatface-latin-400-normal.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Raleway;src:url('fonts/raleway-latin-400-normal.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Raleway;src:url('fonts/raleway-latin-700-normal.woff2') format('woff2');font-weight:700;font-display:swap}
*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable}body{margin:0;background:#fff;color:#333;font-family:Arial,Helvetica,sans-serif;font-size:14px}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible{outline:2px solid #31679b;outline-offset:5px}svg.icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;vertical-align:middle}button{border:0;background:none}img{max-width:100%}button[hidden],[hidden]{display:none!important}.skip-link{position:fixed;left:10px;top:-100px;background:#fff;padding:15px;z-index:50000}.skip-link:focus{top:10px}
/* Berlin cover: same inset frame, text placement and typography as the reference. */
.cover{height:100vh;height:100svh;position:relative;isolation:isolate;background:#737771;color:#fff}.cover-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--cover-position,50% 50%);z-index:-2}.cover:after{content:'';position:absolute;inset:0;background:rgba(0,0,0,var(--cover-overlay,.08));z-index:-1}.cover-frame{position:absolute;inset:20px;border:2px solid #fff}.cover-content{position:absolute;left:15%;right:15%;top:50%;transform:translateY(-50%)}.wordmark{display:inline-flex;flex-direction:column;align-items:center;line-height:1;color:inherit;white-space:nowrap}.wordmark strong{font-family:'Abril Fatface',Georgia,serif;font-size:30px;font-weight:400;letter-spacing:-1px}.wordmark small{font-family:Raleway,Arial,sans-serif;font-size:7px;text-transform:uppercase;letter-spacing:2.6px;margin-top:7px}.cover-brand{display:inline-block;margin-bottom:70px}.cover h1{font-family:'Abril Fatface',Georgia,serif;font-size:84px;font-weight:400;letter-spacing:2px;line-height:1.3;margin:0 0 10px;overflow-wrap:anywhere}.cover p{font-family:Raleway,Arial,sans-serif;font-weight:700;font-size:14px;letter-spacing:2px;line-height:1.2;margin:0}.view-images{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border:3px solid currentColor;margin-top:25px;padding:10px 18px;font-family:Raleway,Arial,sans-serif;font-size:12px;letter-spacing:2px;font-weight:700;transition:opacity .2s}.view-images:hover{opacity:.8}.view-images svg{display:none}
/* Sticky gallery navigation. Client galleries are never listed on the portfolio. */
.gallery-header{position:sticky;top:0;background:#fff;z-index:100;padding:6px 25px 10px;scroll-margin-top:0}.header-row{display:flex;align-items:center;min-height:64px;gap:24px}.header-brand{margin-right:auto;flex-shrink:0}.header-brand strong{font-size:25px}.header-brand small{font-size:5px;letter-spacing:2px;margin-top:5px}.tabs{display:flex;gap:20px;align-items:center}.tab{padding:10px 0 6px;border-bottom:2px solid transparent;text-transform:uppercase;font-size:12px;letter-spacing:.5px;color:#888;line-height:20px}.tab[aria-pressed=true]{border-color:#555;color:#333}.header-actions{display:flex;gap:3px;align-items:center}.icon-button{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;color:#888;position:relative}.icon-button:hover{color:#222}.icon-button .action-label{display:none}.icon-button .badge{position:absolute;top:0;right:0;background:#555;color:white;font-size:9px;border-radius:12px;min-width:14px;padding:2px}.menu-toggle{display:none}.mobile-menu{border-top:1px solid #eee}.mobile-menu a,.mobile-menu button{display:flex;align-items:center;gap:12px;padding:12px 0;width:100%;text-transform:uppercase;text-align:left;font-size:12px;letter-spacing:.5px;border-bottom:1px solid #eee;min-height:48px}.mobile-menu svg{width:22px;color:#888}.mobile-menu .mobile-download{font-weight:bold}
/* Items have fixed intrinsic ratios; columns use shortest-column placement in JS. */
.photo-grid{--columns:4;--gap:20px;position:relative;margin:10px 10px 10px;display:grid;grid-template-columns:repeat(var(--columns),minmax(0,1fr));gap:var(--gap);align-items:start}.photo-grid.masonry{display:block}.photo-grid.masonry .photo{position:absolute;width:calc((100% - (var(--columns) - 1)*var(--gap))/var(--columns));top:0;left:0}.photo{position:relative;min-width:0;overflow:hidden;background:#f5f5f5}.photo-link{display:block;cursor:zoom-in;line-height:0;aspect-ratio:var(--ratio)}.photo img{display:block;width:100%;height:100%;object-fit:cover}.photo-controls{position:absolute;bottom:0;left:0;right:0;padding:16px 10px 8px;display:flex;align-items:center;gap:0;color:#fff;opacity:0;transition:opacity .25s;background:linear-gradient(transparent,rgba(0,0,0,.4));pointer-events:none}.photo:hover .photo-controls,.photo:focus-within .photo-controls{opacity:1}.photo-controls button,.photo-controls a{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;width:36px;height:40px;color:#fff}.photo-controls svg{width:20px;height:20px;filter:drop-shadow(0 1px 2px #333)}.is-favourite svg.heart{fill:#d64541;stroke:#d64541}.photo.is-favourite:after{content:'♥';position:absolute;bottom:14px;left:15px;color:#d64541;text-shadow:0 1px 3px #fff;font-size:20px;pointer-events:none}.photo.is-favourite:hover:after,.photo.is-favourite:focus-within:after{opacity:0}.gallery-footer{text-align:center;padding:65px 20px 35px;font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:#888;line-height:2}.gallery-footer a:hover{color:#333}.footer-separator{margin:0 9px}.empty-state{padding:70px 24px;text-align:center;color:#777;line-height:1.8;max-width:650px;margin:auto}.download-strip{text-align:center;padding:22px 15px 0}.text-download{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid #ddd;padding:12px 20px;min-height:46px;font-size:11px;letter-spacing:1px;text-transform:uppercase}.text-download:hover{border-color:#777}
/* PhotoSwipe 5.4.4, the same gesture/viewer engine as the reference. */
.pswp{--pswp-bg:#fff;--pswp-icon-color:#fff;--pswp-icon-color-secondary:#444;--pswp-icon-stroke-color:#666;--pswp-icon-stroke-width:1px;--pswp-error-text-color:#555;z-index:10000}.pswp__bg{opacity:1!important}.pswp__top-bar{align-items:center;padding:4px 10px;min-height:58px;padding-top:max(4px,env(safe-area-inset-top))}.pswp__counter{color:#222;font-size:14px;background:rgba(245,245,245,.8);height:auto;line-height:28px;align-self:center;margin:0 15px 0 10px;padding:0 8px;border-radius:6px;text-shadow:none}.pswp__preloader{margin-right:auto}.pswp__button.pswp__button--custom,.pswp__button--close,.pswp__button--zoom{width:44px;height:44px;margin:0;color:#333;display:flex;align-items:center;justify-content:center;opacity:1}.pswp__button--custom .icon,.pswp__button--close .icon,.pswp__button--zoom .icon{width:35px;height:35px;padding:8px;border-radius:50%;background:rgba(245,245,245,.8);stroke-width:1.3}.pswp__button--custom:hover .icon,.pswp__button--close:hover .icon,.pswp__button--zoom:hover .icon{background:#e5e5e5}.pswp__button--custom[aria-pressed=true] .heart{fill:#d64541;stroke:#d64541}.pswp__button--arrow .pswp__icn{filter:drop-shadow(0 1px 1px #555)}.pswp__button--arrow{width:60px}.pswp__button--arrow--prev .pswp__icn{left:13px}.pswp__button--arrow--next .pswp__icn{right:13px}.pswp__button--zoom .pswp__icn,.pswp__button--close .pswp__icn{position:static;transform:none}.pswp__custom-caption{position:absolute;bottom:max(8px,env(safe-area-inset-bottom));left:20px;right:20px;text-align:center;font-size:11px;pointer-events:none}.pswp__custom-caption span{padding:3px 8px;background:rgba(245,245,245,.8);color:#666;border-radius:4px}.pswp__ui--hidden .pswp__custom-caption{opacity:0}
/* Accessible dialogs; download links remain ordinary same-origin links. */
.panel{padding:50px 40px 35px;border:0;border-radius:0;width:min(520px,calc(100% - 30px));max-height:calc(100dvh - 30px);overflow-y:auto;color:#444;box-shadow:0 10px 50px #0002;z-index:20000}.panel::backdrop{background:rgba(0,0,0,.45)}.panel h2{font-family:'Abril Fatface',Georgia,serif;font-size:30px;font-weight:400;margin:0 30px 24px 0}.panel p{line-height:1.75;color:#666}.panel a.inline-link{text-decoration:underline}.panel-close{position:absolute;top:8px;right:8px;font-size:28px;line-height:1}.panel .download-file{display:flex;gap:12px;align-items:center;justify-content:space-between;border:1px solid #ddd;padding:15px;margin:12px 0;min-height:54px}.download-file:hover{border-color:#555}.download-file small{color:#999}.panel label{display:block;font-size:12px;margin:12px 0 6px}.panel input{width:100%;padding:12px;border:1px solid #ccc;font-size:16px}.panel .copy-button{border:1px solid #777;padding:12px 20px;margin-top:12px;min-height:44px}.favourite-list{font-size:12px;line-height:1.8;max-height:160px;overflow-y:auto;background:#f6f6f6;padding:12px;white-space:pre-line}.meta-list{display:grid;grid-template-columns:auto 1fr;gap:10px 20px;font-size:13px;line-height:1.6}.meta-list dt{color:#999}.meta-list dd{margin:0;overflow-wrap:anywhere}#toast{position:fixed;bottom:max(25px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);background:#333;color:#fff;padding:13px 20px;border-radius:3px;font-size:13px;z-index:30000;opacity:0;pointer-events:none;transition:opacity .2s}#toast.show{opacity:1}
@media(min-width:1701px){.photo-grid{--columns:5}}@media(min-width:2201px){.photo-grid{--columns:7}}@media(min-width:4001px){.photo-grid{--columns:8}}
@media(max-width:1200px){.cover h1{font-size:63px;line-height:1.2}.cover p{font-size:10.5px}.view-images{font-size:9px}}
@media(max-width:900px){html{scrollbar-gutter:auto}.cover-frame{inset:10px;border-width:1px}.cover-content{left:5%;right:5%;text-align:center}.cover-brand{margin-bottom:50px}.cover h1{font-size:50.4px;line-height:1.2}.cover p{font-size:9px}.view-images{border:0;width:55px;height:55px;padding:0;font-size:0;margin-top:5px}.view-images span{display:none}.view-images svg{display:block;width:28px;height:28px}.gallery-header{padding:10px 15px;box-shadow:1px 3px 4px -2px #0002}.header-row{gap:12px;min-height:44px;flex-wrap:wrap}.header-brand{flex:1 1 auto}.header-brand strong{font-size:22px}.header-brand small{font-size:5px}.header-actions{display:none}.menu-toggle{display:flex}.tabs{order:3;width:100%;gap:20px}.tab{font-size:10px;padding:5px 0;min-height:36px;line-height:24px}.photo-grid{--columns:2;--gap:10px;margin:5px 5px 10px}.photo-controls{display:none}.gallery-footer{padding:50px 15px 30px}.pswp__counter{display:none}.pswp__button--zoom{display:none!important}.pswp__top-bar{padding-left:max(5px,env(safe-area-inset-left));padding-right:max(5px,env(safe-area-inset-right))}.pswp__button--custom .icon,.pswp__button--close .icon{background:rgba(245,245,245,.7);width:33px;height:33px;padding:6px}.pswp__button--custom:hover .icon,.pswp__button--close:hover .icon{background:rgba(245,245,245,.7)}.pswp__button--custom,.pswp__button--close{min-width:44px;min-height:44px}.pswp__custom-caption{bottom:max(12px,env(safe-area-inset-bottom))}.panel{padding:45px 25px 25px}.download-strip{padding-top:18px}}
@media(max-width:480px){.cover h1{font-size:24px;line-height:1;letter-spacing:2px}.cover-brand{margin-bottom:50px}.cover p{font-size:9px;line-height:1.2}.cover .wordmark strong{font-size:26px}.cover .wordmark small{font-size:6px}.view-images{min-height:44px;width:44px;height:44px}.gallery-footer .footer-separator{display:none}.gallery-footer .contact-footer{display:block}.pswp__button--arrow{display:none}.panel h2{font-size:25px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
