*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body,h1,h2,h3,p,figure,dl,dd,ol{margin:0}
button,input,textarea{font:inherit}
button{cursor:pointer}
img{display:block;width:100%;height:auto}
a{color:inherit}
[hidden]{display:none!important}
:root{--paper:#f3f0e8;--ink:#191916;--muted:#6a685f;--accent:#a63220;--line:color-mix(in srgb,var(--ink) 20%,transparent);--serif:Iowan Old Style,Baskerville,Georgia,serif;--sans:Arial,Helvetica,sans-serif;--mono:Consolas,monospace;--edge:clamp(1rem,3.5vw,4rem)}
body{min-width:320px;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}
::selection{background:var(--ink);color:var(--paper)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--ink);color:var(--paper);padding:.75rem}
.skip-link:focus{left:0}
.site-header{position:relative;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem var(--edge);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:.75rem;text-decoration:none;font-weight:700;letter-spacing:-.04em;font-size:1.2rem}
.brand-mark{display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;background:var(--ink);color:var(--paper);font-family:var(--serif);font-style:italic}
.site-nav{display:flex;align-items:center;gap:clamp(.7rem,2.4vw,2.5rem);font-size:.82rem}
.site-nav a,.site-nav button{padding:0;border:0;background:none;text-decoration:none}
.site-nav a:hover,.site-nav button:hover{color:var(--accent)}
.design-number{display:inline-grid;place-items:center;width:1.7rem;height:1.7rem;margin-left:.25rem;border:1px solid currentColor;border-radius:50%;font-size:.65rem}
.intro{padding:clamp(4rem,9vw,10rem) var(--edge) clamp(4rem,8vw,8rem)}
.eyebrow{color:var(--muted);font:600 .68rem/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.intro>.eyebrow{display:flex;justify-content:space-between;max-width:27rem;margin-bottom:2rem}
.intro h1{max-width:11ch;font:400 clamp(4rem,11vw,11rem)/.87 var(--serif);letter-spacing:-.075em}
.intro h1 em{color:var(--accent);font-weight:400}
.intro-bottom{display:flex;justify-content:flex-end;align-items:flex-end;gap:clamp(2rem,7vw,8rem);margin-top:3.5rem}
.intro-bottom p{max-width:28rem;font-size:clamp(1rem,1.4vw,1.3rem);line-height:1.45}
.intro-bottom a{min-width:12rem;padding-top:.7rem;border-top:1px solid var(--ink);font-size:.75rem;text-transform:uppercase;text-decoration:none;letter-spacing:.08em}
.intro-bottom a span{float:right}
.browse{padding:clamp(4rem,7vw,7rem) var(--edge) clamp(6rem,12vw,12rem);border-top:1px solid var(--line)}
.browse-heading{display:flex;justify-content:space-between;align-items:end;gap:1rem}
.browse-heading h2{margin-top:.5rem;font:400 clamp(2.6rem,5vw,5.5rem)/.98 var(--serif);letter-spacing:-.05em}
.shuffle{border:1px solid var(--ink);background:none;padding:.75rem 1rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}
.shuffle:hover{background:var(--ink);color:var(--paper)}
.shuffle span{margin-left:1.5rem}
.browse-tools{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin:2.5rem 0 3rem;padding-top:1rem;border-top:1px solid var(--line)}
.tag-list{display:flex;flex:1;flex-wrap:nowrap;gap:.45rem;min-width:0;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:none;-ms-overflow-style:none;padding:.2rem .15rem .4rem}
.tag-list::-webkit-scrollbar{display:none}
.detail-tags{display:flex;flex-wrap:wrap;gap:.45rem}
.tag{flex:none;border:1px solid color-mix(in srgb,var(--ink) 38%,transparent);border-radius:.35rem;padding:.47rem .7rem;background:transparent;color:var(--ink);font-size:.72rem;line-height:1;white-space:nowrap}
.tag:hover,.tag[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.browse-tools>p{flex:none;color:var(--muted);font:.68rem var(--mono)}
.gallery{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(3rem,6vw,7rem) clamp(1rem,2.4vw,3rem)}
.photo-card{grid-column:span 6;min-width:0}
.photo-card:nth-child(4n+2),.photo-card:nth-child(4n+3){grid-column:span 5}
.photo-card:nth-child(4n+3){grid-column-start:8}
.photo-open{display:block;width:100%;padding:0;border:0;background:#d5d2ca;overflow:hidden;text-align:left}
.photo-open picture{display:block}
.photo-open img{width:100%;aspect-ratio:var(--ratio);object-fit:cover;background-size:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.photo-open:hover img{transform:scale(1.025)}
.photo-card figcaption{display:grid;grid-template-columns:2.2rem 1fr auto;gap:.5rem;padding-top:.75rem;font-size:.75rem}
.photo-index,.photo-subtitle{color:var(--muted)}
.photo-title{font-weight:650}
.note{display:grid;grid-template-columns:1fr 3fr 1fr;gap:1rem;padding:4rem var(--edge);border-top:1px solid var(--line);font-size:.8rem}
.note p{max-width:34rem;font:400 clamp(1.3rem,2.5vw,2.5rem)/1.2 var(--serif)}
.note a{text-align:right}
footer{display:flex;justify-content:space-between;gap:1rem;padding:1.2rem var(--edge);border-top:1px solid var(--line);font:.68rem var(--mono);text-transform:uppercase}
.empty{padding:3rem 0;color:var(--muted)}
dialog{color:var(--ink);background:var(--paper);border:1px solid var(--line);box-shadow:0 25px 80px #0004}
dialog::backdrop{background:#080909bd;backdrop-filter:blur(8px)}
dialog button{color:inherit}
.photo-dialog{position:fixed;inset:2vw;max-width:none;max-height:none;width:96vw;height:96vh;padding:0;overflow:hidden;display:none;grid-template-columns:minmax(0,1fr) minmax(18rem,26rem)}
.photo-dialog[open]{display:grid}
.photo-viewer{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;background:#111;color:#fff}
.viewer-toolbar,.viewer-arrows{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.2rem;font:.73rem var(--mono)}
.viewer-toolbar button,.viewer-arrows button{border:0;background:none;color:inherit}
.viewer-image{display:grid;place-items:center;min-height:0;overflow:hidden}
.viewer-image picture{display:grid;place-items:center;width:100%;height:100%}
.viewer-image img{width:auto;max-width:100%;max-height:100%;height:auto;object-fit:contain}
.photo-details{overflow:auto;padding:clamp(1.2rem,3vw,3rem)}
.photo-details h2{margin:1.5rem 0;font:400 clamp(2.5rem,4vw,4.5rem)/.98 var(--serif);letter-spacing:-.05em}
.detail-description{max-width:30rem;margin-bottom:2rem;line-height:1.45}
.detail-tags{margin-bottom:2rem}
.photo-details dl div{display:grid;grid-template-columns:5.5rem 1fr;gap:.5rem;border-top:1px solid var(--line);padding:.8rem 0;font-size:.8rem}
.photo-details dt{color:var(--muted)}
.detail-credit{padding-top:2rem;font-size:.73rem;line-height:1.5}
.account-dialog,.design-dialog{width:min(92vw,32rem);max-height:88vh;padding:1.5rem}
.upload-dialog{width:min(94vw,47rem);max-height:88vh;padding:1.5rem}
.modal-heading{display:flex;justify-content:space-between;align-items:start;gap:1rem;margin-bottom:2rem}
.modal-heading h2{margin-top:.25rem;font:400 clamp(2rem,4vw,3.2rem) var(--serif)}
.modal-heading button{border:0;background:none;white-space:nowrap}
.account-form{display:grid;gap:1rem}
.account-form h3{font-size:1rem}
.account-form label,.upload-fields label{display:grid;gap:.45rem;font-size:.73rem;font-weight:700}
.account-form input,.upload-fields input,.upload-fields textarea{width:100%;min-height:2.6rem;border:1px solid var(--line);border-radius:0;padding:.6rem .7rem;background:transparent;color:var(--ink);font-size:.9rem;font-weight:400}
.account-form [role=status]{overflow-wrap:anywhere;font-size:.75rem;line-height:1.5}
.primary-button{width:max-content;border:0;padding:.85rem 1.15rem;background:var(--ink);color:var(--paper);font-size:.8rem}
.primary-button:disabled{opacity:.5;cursor:wait}
.text-button{margin-top:2rem;padding:0;border:0;background:none;text-decoration:underline}
.form-note{color:var(--muted);font-size:.75rem;line-height:1.5}
.drop-zone{display:block;border:1px dashed var(--ink);padding:1.5rem;margin-bottom:1.5rem;font-size:.9rem}
.drop-zone input{display:block;margin-top:1rem;max-width:100%}
.upload-fields{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.upload-fields .wide{grid-column:1/-1}
.upload-dialog .form-note{margin:1rem 0}
.form-status{margin-top:1rem;font-size:.8rem}
progress{display:block;width:100%;height:.45rem;margin-top:.6rem;accent-color:var(--accent)}
.design-dialog ol{padding:0;list-style:none}
.design-dialog li{border-top:1px solid var(--line)}
.design-dialog a{display:block;padding:.75rem 0;text-decoration:none;font:.9rem var(--mono)}
.design-dialog a:hover,.design-dialog a[aria-current=page]{color:var(--accent)}

/* The ten layouts share browsing and account behavior, but not the same visual voice. */
body[data-design="02"]{--paper:#e7e5dd;--ink:#262923;--accent:#d54d24}
body[data-design="02"] .gallery{grid-template-columns:repeat(5,1fr);gap:1rem}
body[data-design="02"] .photo-card,body[data-design="02"] .photo-card:nth-child(n){grid-column:auto}
body[data-design="02"] .photo-card figcaption{display:block;font:.66rem var(--mono)}
body[data-design="02"] .photo-card figcaption>*{display:block;margin-bottom:.2rem}
body[data-design="03"]{--paper:#101820;--ink:#f1e8d7;--muted:#aaadab;--accent:#f5a75e;color-scheme:dark}
body[data-design="03"] .intro{min-height:70vh;display:flex;flex-direction:column;justify-content:flex-end}
body[data-design="03"] .gallery{gap:1rem}
body[data-design="03"] .photo-card,body[data-design="03"] .photo-card:nth-child(n){grid-column:span 6}
body[data-design="03"] .photo-open img{filter:brightness(.8)}
body[data-design="04"]{--paper:#fff;--ink:#222;--accent:#222}
body[data-design="04"] .intro{text-align:center}
body[data-design="04"] .intro>.eyebrow{margin-inline:auto}
body[data-design="04"] .intro h1{margin:auto}
body[data-design="04"] .intro-bottom{justify-content:center}
body[data-design="04"] .gallery{gap:6vw 10vw}
body[data-design="04"] .photo-card,body[data-design="04"] .photo-card:nth-child(n){grid-column:span 6}
body[data-design="05"]{--paper:#f7f6f1;--ink:#111;--accent:#111}
body[data-design="05"] .intro h1{font-family:Arial,Helvetica,sans-serif;font-weight:800;text-transform:uppercase}
body[data-design="05"] .intro h1 em{font-style:normal}
body[data-design="05"] .photo-open img{filter:grayscale(1)}
body[data-design="05"] .gallery{grid-template-columns:repeat(3,1fr);gap:4rem 1rem}
body[data-design="05"] .photo-card,body[data-design="05"] .photo-card:nth-child(n){grid-column:auto}
body[data-design="06"]{--paper:#e9dfcd;--ink:#302a21;--muted:#756b5b;--accent:#315e4a;background-image:repeating-linear-gradient(0deg,transparent 0 31px,#5145330b 31px 32px)}
body[data-design="06"] .intro h1,body[data-design="06"] .browse h2{font-family:Segoe Print,Bradley Hand,cursive}
body[data-design="06"] .photo-card{padding:.7rem .7rem 1.7rem;background:#faf2e6;box-shadow:0 4px 17px #3b2b1d2c;transform:rotate(calc((var(--i) - 4)*.14deg))}
body[data-design="07"]{--paper:#11110f;--ink:#eee9df;--muted:#aaa49a;--accent:#f16d48;color-scheme:dark}
body[data-design="07"] .gallery{display:flex;gap:1.5rem;overflow-x:auto;padding-bottom:2rem;scroll-snap-type:x mandatory}
body[data-design="07"] .photo-card,body[data-design="07"] .photo-card:nth-child(n){flex:0 0 min(70vw,60rem);scroll-snap-align:center}
body[data-design="07"] .photo-open img{height:min(65vh,48vw);aspect-ratio:auto;object-fit:cover}
body[data-design="08"]{--paper:#101820;--ink:#f1f0e9;--muted:#a6b0b2;--accent:#f1f0e9;color-scheme:dark}
body[data-design="08"] .site-header{position:relative;background:var(--paper);border-bottom:0}
body[data-design="08"] .site-nav{gap:2.5rem}
body[data-design="08"] [data-open-designs],body[data-design="08"] .intro,body[data-design="08"] .browse-heading,body[data-design="08"] .note{display:none}
body[data-design="08"] .browse{padding-top:3.5rem;padding-bottom:clamp(8rem,16vw,17rem);border-top:0}
body[data-design="08"] .browse-tools{margin:0 0 4.8rem;border-top:0;padding-top:0}
body[data-design="08"] .gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:8px;column-gap:clamp(.75rem,1.2vw,1.25rem);row-gap:0}
body[data-design="08"] .photo-card,body[data-design="08"] .photo-card:nth-child(n){display:block;grid-column:auto;min-width:0;align-self:start}
body[data-design="08"] .photo-open{width:100%;height:auto}
body[data-design="08"] .photo-open img{width:100%;height:auto;aspect-ratio:var(--ratio);object-fit:cover}
body[data-design="08"] .photo-card figcaption{display:grid;grid-template-columns:1.8rem minmax(0,1fr) auto;gap:.5rem;height:2rem;padding-top:.35rem;font:.66rem var(--mono)}
body[data-design="08"] .photo-card figcaption>*{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body[data-design="08"] footer{border-top:0;padding:2rem var(--edge);font-size:.62rem}
body[data-design="08"] footer a{text-underline-offset:2px}
body[data-design="09"]{--paper:#070707;--ink:#f1f1f1;--muted:#aaa;--accent:#f1f1f1;color-scheme:dark}
body[data-design="09"] .intro{min-height:85vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
body[data-design="09"] .intro h1{margin:auto}
body[data-design="09"] .gallery{display:block}
body[data-design="09"] .photo-card,body[data-design="09"] .photo-card:nth-child(n){position:relative;height:90vh}
body[data-design="09"] .photo-open,body[data-design="09"] .photo-open picture,body[data-design="09"] .photo-open img{height:100%}
body[data-design="09"] .photo-open img{aspect-ratio:auto;object-fit:cover;filter:brightness(.7)}
body[data-design="09"] .photo-card figcaption{position:absolute;bottom:2rem;left:2rem;right:2rem;color:#fff}
body[data-design="10"]{--paper:#f0ef37;--ink:#1529c5;--muted:#1529c5;--accent:#fa371f}
body[data-design="10"] .intro h1,body[data-design="10"] .browse h2{font-family:Arial,Helvetica,sans-serif;font-weight:900;text-transform:uppercase}
body[data-design="10"] .intro h1 em{font-style:normal}
body[data-design="10"] .gallery{grid-template-columns:repeat(6,1fr);gap:1rem}
body[data-design="10"] .photo-card,body[data-design="10"] .photo-card:nth-child(n){grid-column:span 2;border:3px solid var(--ink)}
body[data-design="10"] .photo-card:nth-child(4n+1){grid-column:span 4}
body[data-design="10"] .photo-card figcaption{padding:.6rem;font-weight:800}

@media(max-width:760px){
  .site-header{align-items:flex-start}.site-nav{flex-wrap:wrap;justify-content:flex-end}.site-nav>a{display:none}
  .intro{padding-top:5rem}.intro h1{font-size:clamp(3.5rem,16vw,6rem)}
  .intro-bottom{display:block}.intro-bottom a{display:block;margin-top:2rem}
  .browse-heading{align-items:start;flex-direction:column}.browse-tools{display:block}.browse-tools>p{margin-top:.5rem}
  .gallery,body[data-design="02"] .gallery,body[data-design="05"] .gallery,body[data-design="10"] .gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem .7rem}
  .photo-card,.photo-card:nth-child(n),body[data-design="02"] .photo-card,body[data-design="05"] .photo-card,body[data-design="10"] .photo-card,body[data-design="10"] .photo-card:nth-child(n){grid-column:auto}
  .photo-card figcaption{display:block;font-size:.7rem}.photo-card figcaption>*{display:block;margin-bottom:.2rem}
  .note{grid-template-columns:1fr}.note a{text-align:left}
  .photo-dialog[open]{inset:0;width:100vw;height:100dvh;grid-template-columns:1fr;grid-template-rows:minmax(0,60vh) minmax(0,1fr)}
  .photo-details{padding:1rem}.photo-details h2{margin:.5rem 0;font-size:2rem}.detail-description{margin-bottom:1rem}.detail-tags{margin-bottom:1rem}
  .upload-fields{grid-template-columns:1fr}.upload-fields .wide{grid-column:auto}
  body[data-design="07"] .gallery{display:flex}
  body[data-design="07"] .photo-card,body[data-design="07"] .photo-card:nth-child(n){flex-basis:85vw}
  body[data-design="08"] .site-header{align-items:center}
  body[data-design="08"] .site-nav{gap:1rem}
  body[data-design="08"] .site-nav>a{display:inline}
  body[data-design="08"] .browse{padding-top:2rem;padding-bottom:6rem}
  body[data-design="08"] .browse-tools{margin-bottom:1.75rem}
  body[data-design="08"] .gallery{display:block}
  body[data-design="08"] .photo-card,body[data-design="08"] .photo-card:nth-child(n){display:block;margin-bottom:1.5rem}
  body[data-design="08"] .photo-card figcaption{display:grid;grid-template-columns:1.8rem minmax(0,1fr) auto;font-size:.66rem}
  body[data-design="08"] footer{display:block;padding:1.5rem var(--edge)}
  body[data-design="08"] footer span+span{display:block;margin-top:1rem}
  body[data-design="09"] .gallery{display:block}
  body[data-design="09"] .photo-card,body[data-design="09"] .photo-card:nth-child(n){height:72vh}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
