*,*::before,*::after{box-sizing:border-box}
html{background:var(--color-bg);scroll-behavior:smooth}
body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-ui);font-size:var(--font-size-base);line-height:var(--line-body);-webkit-font-smoothing:antialiased}
body.menu-open{overflow:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit}
button,a{touch-action:manipulation}
.skip-link{position:fixed;z-index:1000;top:var(--space-3);left:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--color-text);color:var(--color-bg);transform:translateY(-200%)}
.skip-link:focus{transform:none}
.site-shell{min-height:100vh}
.site-sidebar{position:fixed;z-index:50;inset:0 auto 0 0;width:var(--sidebar-width);display:flex;flex-direction:column;padding:var(--space-7) var(--space-5) var(--space-6);background:var(--color-sidebar)}
.brand{display:flex;flex-direction:column;font-size:var(--font-size-lg);line-height:1.65;letter-spacing:var(--tracking-brand);text-transform:uppercase}
.brand small{margin-top:var(--space-1);color:var(--color-muted);font-size:var(--font-size-xs);letter-spacing:var(--tracking-brand)}
.brand-rule{width:var(--space-5);height:1px;margin:var(--space-7) 0 var(--space-5);background:var(--color-accent)}
.site-nav{display:flex;flex-direction:column;gap:var(--space-4)}
.site-nav__link{position:relative;padding-left:var(--space-2);color:var(--color-text);font-size:var(--font-size-sm);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase;transition:color var(--transition-fast)}
.site-nav__link:hover{color:var(--color-accent)}
.site-nav__link.is-active::before{content:'';position:absolute;top:50%;left:calc(var(--space-2) * -1);width:var(--space-1);height:var(--space-1);border-radius:var(--radius-round);background:var(--color-accent);transform:translateY(-50%)}
.sidebar-bottom{margin-top:auto}
.social-links{display:flex;gap:var(--space-4);margin-bottom:var(--space-7)}
.social-links a{width:var(--space-4);height:var(--space-4)}
.social-links svg{width:100%;fill:none;stroke:currentColor;stroke-width:1.7}
.social-links .fill{fill:currentColor;stroke:none}
.copyright{margin:0;color:var(--color-muted);font-size:var(--font-size-xs)}
.site-main{margin-left:var(--sidebar-width);min-width:0;overflow:hidden}
.mobile-menu-button{display:none}
.hero{position:relative;min-height:100svh;display:grid;place-items:center;overflow:hidden;background:var(--color-bg)}
.hero__media,.hero__scrim,.hero__empty{position:absolute;inset:0}
.hero__media img{width:100%;height:100%;object-fit:cover}
.hero__empty{background:var(--gradient-empty)}
.hero__scrim{background:var(--gradient-hero)}
.hero__copy{position:relative;z-index:2;width:min(80%,70rem);text-align:center}
.hero h1{max-width:65rem;margin:0 auto var(--space-4);font-family:var(--font-display);font-size:var(--font-size-hero);font-weight:400;line-height:var(--line-tight);text-wrap:balance}
.micro-label,.eyebrow{font-size:var(--font-size-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase}
.micro-label{white-space:pre-wrap}
.micro-label__dot{margin-inline:var(--space-2);color:var(--color-accent)}
.eyebrow{margin:0 0 var(--space-2);color:var(--color-accent)}
.scroll-cue{position:absolute;z-index:3;bottom:var(--space-6);left:50%;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);font-size:var(--font-size-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;transform:translateX(-50%)}
.scroll-cue span{display:block;width:1px;height:var(--space-6);background:var(--color-text)}
.intro-section,.featured-section,.album-grid,.journal-grid,.text-page,.contact-page,.post-page,.page-header{max-width:var(--content-max);margin-inline:auto}
.intro-section{display:grid;grid-template-columns:1fr 2fr;gap:var(--space-page);padding:var(--space-section) var(--space-page)}
.intro-section__copy{max-width:var(--text-max)}
h1,h2,h3,p{margin-top:0}
.intro-section h2,.section-heading h2,.album-card h2,.album-card h3,.post-card h2,.form-success h2{margin:0;font-family:var(--font-display);font-weight:400;line-height:var(--line-tight)}
.intro-section h2,.section-heading h2{font-size:var(--font-size-2xl)}
.intro-section__copy>p{color:var(--color-muted);font-size:var(--font-size-lg)}
.featured-section{padding:0 var(--space-page) var(--space-section)}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:var(--space-5);margin-bottom:var(--space-6)}
.text-link{display:inline-block;border-bottom:1px solid var(--color-accent);padding-bottom:var(--space-1);font-size:var(--font-size-xs);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}
.album-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-7) var(--space-5);padding:0 var(--space-page) var(--space-section)}
.album-grid--featured{grid-template-columns:repeat(3,minmax(0,1fr));padding:0}
.album-card__image{display:block;aspect-ratio:4/5;margin-bottom:var(--space-4);overflow:hidden;background:var(--color-surface)}
.album-card__image picture,.album-card__image img{width:100%;height:100%}
.album-card__image img{object-fit:cover;transition:transform var(--transition-slow)}
.album-card__image:hover img{transform:scale(1.025)}
.album-card h2,.album-card h3{font-size:var(--font-size-xl)}
.album-card h2{margin-bottom:var(--space-2)}
.album-card>p:last-child{color:var(--color-muted)}
.page-header{padding:var(--space-section) var(--space-page) var(--space-8)}
.page-header h1,.split-page h1,.text-page h1,.contact-page h1,.post-page h1,.error-page h1{margin:0 0 var(--space-5);font-family:var(--font-display);font-size:var(--font-size-2xl);font-weight:400;line-height:var(--line-tight)}
.page-header__intro{max-width:var(--text-max);color:var(--color-muted);font-family:var(--font-display);font-size:var(--font-size-lg)}
.page-header--gallery{text-align:center}
.page-header--gallery .page-header__intro{margin-inline:auto}
.photo-grid{columns:2;column-gap:var(--space-2);padding:0 var(--space-2) var(--space-section)}
.photo-grid__item{display:block;break-inside:avoid;margin-bottom:var(--space-2);overflow:hidden;background:var(--color-surface);cursor:zoom-in}
.photo-grid__item img{width:100%;transition:filter var(--transition-slow),opacity var(--transition-slow),transform var(--transition-slow)}
.photo-grid__item:hover img{transform:scale(1.01)}
.blur-image{filter:blur(var(--space-2));opacity:.72}
.blur-image.is-loaded{filter:none;opacity:1}
.no-js .blur-image{display:none}
.lightbox{position:fixed;z-index:100;inset:0;display:none;grid-template-columns:auto 1fr auto;align-items:center;background:var(--color-overlay);padding:var(--space-5)}
.lightbox.is-open{display:grid}
.lightbox figure{display:grid;place-items:center;margin:0;min-width:0;max-height:calc(100vh - var(--space-7))}
.lightbox__image{max-width:100%;max-height:calc(100vh - var(--space-8));box-shadow:var(--shadow-soft)}
.lightbox figcaption{margin-top:var(--space-2);color:var(--color-muted);font-size:var(--font-size-sm)}
.lightbox button{border:0;background:transparent;color:var(--color-text);cursor:pointer;font-size:var(--font-size-xl)}
.lightbox__close{position:absolute;top:var(--space-4);right:var(--space-4)}
.split-page{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}
.split-page__copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:var(--space-section) var(--space-page)}
.split-page__media{min-height:70vh;background:var(--color-surface)}
.split-page__media picture,.split-page__media img{width:100%;height:100%}
.split-page__media img{object-fit:cover}
.prose{max-width:var(--text-max);color:var(--color-muted);font-size:var(--font-size-lg)}
.prose p{margin-bottom:var(--space-4)}
.prose a{color:var(--color-accent);text-decoration:underline}
.split-page .text-link{margin-top:var(--space-4)}
.portrait-placeholder{display:grid;place-items:center;width:100%;height:100%;min-height:70vh;background:var(--gradient-empty)}
.portrait-placeholder span{font-family:var(--font-display);font-size:var(--font-size-2xl)}
.journal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-7) var(--space-5);padding:0 var(--space-page) var(--space-section)}
.post-card__image{display:block;aspect-ratio:16/10;margin-bottom:var(--space-4);overflow:hidden;background:var(--color-surface)}
.post-card__image img{width:100%;height:100%;object-fit:cover}
.post-card h2{margin-bottom:var(--space-4);font-size:var(--font-size-xl)}
.post-page{padding:var(--space-section) var(--space-page)}
.post-page header{max-width:var(--text-max);margin:0 auto var(--space-7);text-align:center}
.post-page__cover{margin:0 0 var(--space-7)}
.post-page__cover img{width:100%;max-height:78vh;object-fit:cover}
.prose--post{margin:0 auto var(--space-6);color:var(--color-text)}
.post-page>.text-link{display:table;margin-inline:auto}
.text-page{min-height:80vh;padding:var(--space-section) var(--space-page)}
.text-page .prose{margin-bottom:var(--space-5)}
.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--color-accent);padding:var(--space-3) var(--space-5);background:transparent;color:var(--color-text);font-size:var(--font-size-xs);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}
.button:hover{background:var(--color-accent);color:var(--color-sidebar)}
.contact-page{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-8);padding:var(--space-section) var(--space-page)}
.contact-details{margin-top:var(--space-6)}
.contact-details .eyebrow{margin-top:var(--space-4)}
.contact-form{display:grid;gap:var(--space-4)}
.contact-form label{display:grid;gap:var(--space-1);color:var(--color-muted);font-size:var(--font-size-xs);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}
.contact-form input,.contact-form textarea{width:100%;border:0;border-bottom:1px solid var(--color-line);border-radius:var(--radius-sm);padding:var(--space-3);background:var(--color-surface);color:var(--color-text);letter-spacing:normal;text-transform:none;outline:none}
.contact-form input:focus,.contact-form textarea:focus{border-color:var(--color-accent)}
.contact-form .button{justify-self:start}
.honeypot{position:absolute;left:-10000px}
.form-error{border-left:2px solid var(--color-danger);padding:var(--space-2) var(--space-3);color:var(--color-danger)}
.form-success{padding:var(--space-6);border:1px solid var(--color-line)}
.form-success h2{font-size:var(--font-size-2xl)}
.empty-state{column-span:all;color:var(--color-muted)}
.error-page{min-height:80vh;padding:var(--space-section) var(--space-page)}
.site-footer{display:flex;justify-content:space-between;gap:var(--space-5);border-top:1px solid var(--color-line);padding:var(--space-5) var(--space-page);color:var(--color-muted);font-size:var(--font-size-xs)}
.site-footer p{margin:0}
@media(max-width:1099px){
  .mobile-menu-button{position:fixed;z-index:80;top:0;right:0;display:flex;align-items:center;gap:var(--space-2);height:var(--topbar-height);border:0;padding:0 var(--space-4);background:transparent;color:var(--color-text);font-size:var(--font-size-xs);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase}
  .mobile-menu-button i{display:block;width:var(--space-4);height:1px;background:currentColor}.mobile-menu-button i:last-child{display:none}
  .site-sidebar{inset:0;width:100%;padding:var(--space-6) var(--space-page);transform:translateY(-102%);transition:transform var(--transition-slow)}
  .site-sidebar::before{content:'';position:absolute;top:0;left:0;right:0;height:var(--topbar-height);border-bottom:1px solid var(--color-line)}
  .menu-open .site-sidebar{transform:none}.menu-open .mobile-menu-button i{transform:rotate(45deg)}
  .brand{position:relative;z-index:1;font-size:var(--font-size-sm);line-height:1.4}.brand small{display:none}.brand-rule{margin:var(--space-6) 0}
  .site-nav{gap:var(--space-4)}.site-nav__link{font-family:var(--font-display);font-size:var(--font-size-xl);font-weight:400;letter-spacing:normal;text-transform:none}
  .site-main{margin-left:0}.hero{min-height:100svh}.hero__copy{width:90%}
  .no-js .mobile-menu-button{display:none}.no-js .site-sidebar{position:static;inset:auto;width:100%;transform:none}.no-js .site-sidebar::before{display:none}
  .photo-grid{columns:2}.split-page{min-height:auto}.contact-page{gap:var(--space-6)}
}
@media(max-width:700px){
  .hero h1{font-size:clamp(2.8rem,14vw,4.8rem)}.micro-label{line-height:2}
  .intro-section{grid-template-columns:1fr}.album-grid,.album-grid--featured,.journal-grid,.contact-page,.split-page{grid-template-columns:1fr}
  .section-heading{align-items:start;flex-direction:column}.photo-grid{columns:1;padding-inline:0}.photo-grid__item{margin-bottom:var(--space-1)}
  .split-page__media{grid-row:1}.contact-page{padding-top:var(--space-8)}.site-footer{flex-direction:column}
  .lightbox{grid-template-columns:var(--space-5) 1fr var(--space-5);padding:var(--space-2)}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition-duration:1ms!important;animation-duration:1ms!important}}
