:root{--ink:#1c1d1b;--ink-soft:#65665f;--paper:#f4f2eb;--paper-deep:#e8e5db;--line:#1c1d1b2e;--accent:#a94f32;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;color:var(--ink);background:var(--paper);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0}button,a{color:inherit}button{font:inherit}a{text-decoration:none}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:3px}img{max-width:100%;display:block}::selection{color:var(--paper);background:var(--accent)}@media (forced-colors:active){:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline-color:highlight}}#root{min-height:100vh}.site-shell{width:min(100% - 40px,1480px);min-height:100vh;margin:0 auto}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:64px;display:flex}.wordmark{font-family:var(--serif);letter-spacing:-.02em;align-items:center;gap:12px;font-size:1.15rem;display:inline-flex}.wordmark-mark{border:1px solid var(--ink);border-radius:50%;place-items:center;width:34px;height:34px;font-size:.95rem;font-style:italic;display:grid}.site-nav{letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:clamp(20px,3vw,48px);font-size:.78rem;font-weight:600;display:flex}.nav-link{padding:12px 0;position:relative}.nav-link:after{content:"";background:currentColor;height:1px;transition:transform .18s;position:absolute;bottom:7px;left:0;right:0;transform:scaleX(0)}.nav-link:hover:after,.nav-link.active:after{transform:scaleX(1)}.sign-in{cursor:pointer;border:1px solid var(--ink);background:0 0;border-radius:999px;padding:10px 16px;transition:color .18s,background .18s}.auth-message{max-width:92rem;color:var(--muted);margin:0 auto;padding:0 2.5rem 1rem;font-size:.82rem}.sign-in:hover{color:var(--paper);background:var(--ink)}.admin-workspace{gap:28px;margin-top:36px;display:grid}.admin-nav{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding-bottom:12px;display:flex}.admin-nav a{letter-spacing:.06em;text-transform:uppercase;border:1px solid #0000;padding:9px 14px;font-size:.72rem;font-weight:700}.admin-nav a[aria-current=page]{background:var(--paper-deep);border-color:var(--line)}.admin-token-tool{align-items:center;gap:10px;margin-left:auto;display:flex}.admin-token-tool span{color:var(--ink-soft);font-size:.72rem}.admin-token-tool button{color:var(--paper);cursor:pointer;background:var(--ink);border:1px solid var(--ink);font:700 .72rem var(--sans);letter-spacing:.06em;text-transform:uppercase;padding:9px 14px}.upload-panel{background:var(--paper-deep);border:1px solid var(--line);grid-template-columns:1fr auto;align-items:center;gap:24px 48px;padding:28px;display:grid}.review-panel{border:1px solid var(--line);padding:28px}.album-admin{border:1px solid var(--line);grid-template-columns:minmax(180px,.5fr) minmax(0,1.5fr);align-items:end;gap:18px 36px;padding:28px;display:grid}.user-admin{border:1px solid var(--line);grid-template-columns:minmax(180px,.5fr) minmax(0,1.5fr);gap:18px 36px;padding:28px;display:grid}.user-admin h2,.user-admin p{margin:0}.user-admin h2{font-family:var(--serif);font-size:1.8rem;font-weight:400}.managed-users{gap:8px;display:grid}.managed-user{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding-bottom:8px;font-size:.72rem;display:flex}.managed-user select{color:var(--ink);background:var(--paper);border:1px solid var(--line);padding:8px}.album-admin h2,.album-admin p{margin:0}.album-admin h2{font-family:var(--serif);font-size:1.8rem;font-weight:400}.album-admin>div>p:last-child,.album-message{color:var(--ink-soft);margin-top:6px;font-size:.75rem}.album-admin form{grid-template-columns:1fr 1fr minmax(130px,.7fr) auto auto;gap:8px;display:grid}.album-admin .group-create{grid-template-columns:1fr auto}.managed-groups{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-column:1/-1;gap:8px;padding:14px 0;display:grid}.album-admin .managed-groups form{grid-template-columns:1fr 1fr minmax(110px,auto) auto auto}.album-admin input,.album-admin select,.album-admin button{min-width:0;color:var(--ink);background:var(--paper);border:1px solid var(--line);font:.75rem var(--sans);padding:10px}.album-admin button{cursor:pointer;color:var(--paper);background:var(--ink);border-color:var(--ink)}.album-message{grid-column:1/-1}.managed-albums{border-top:1px solid var(--line);grid-column:1/-1;gap:8px;padding-top:18px;display:grid}.album-save-bar{color:var(--ink-soft);font:.75rem var(--sans);justify-content:flex-end;align-items:center;gap:12px;padding-bottom:10px;display:flex}.album-save-bar button:disabled{cursor:default;opacity:.45}.managed-albums form{grid-template-columns:1fr 1fr minmax(130px,.7fr) auto auto auto}.managed-album{border-left:4px solid #0000;gap:10px;padding:10px;transition:background-color .14s,border-color .14s;display:grid}.managed-album-private{background:#2e5b841f;border-left-color:#2e5b84}.managed-album-hidden{background:#ad5b2b24;border-left-color:#ad5b2b}.managed-album-private select[name=visibility]{color:#244b70;background:#e8f0f6;border-color:#6f94b3;font-weight:700}.managed-album-hidden select[name=visibility]{color:#783b18;background:#f8ece4;border-color:#c98a64;font-weight:700}.album-members{border:1px solid var(--line);flex-wrap:wrap;gap:8px 20px;margin:0;padding:12px;display:flex}.album-members legend{color:var(--ink-soft);letter-spacing:.06em;text-transform:uppercase;padding:0 6px;font-size:.65rem}.album-members label{align-items:center;gap:7px;font-size:.7rem;display:flex}.album-members p{color:var(--ink-soft);margin:0;font-size:.7rem}.album-count{color:var(--ink-soft);white-space:nowrap;align-self:center;font-size:.66rem}.album-admin .delete-album{color:var(--accent);border-color:var(--accent);background:0 0}.review-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.review-heading h2{font-family:var(--serif);margin:0;font-size:2.4rem;font-weight:400}.text-button,.load-more,.review-filters button{cursor:pointer;border:1px solid var(--line);background:0 0}.text-button,.load-more{padding:10px 16px}.review-filters{flex-wrap:wrap;gap:8px;margin:0;display:flex}.review-filters button{letter-spacing:.06em;text-transform:uppercase;padding:7px 11px;font-size:.68rem;font-weight:700}.review-filters button[aria-pressed=true]{color:var(--paper);background:var(--ink);border-color:var(--ink)}.photo-filter-toolbar{background:var(--paper-deep);border:1px solid var(--line);grid-template-columns:auto minmax(150px,1fr) minmax(150px,1fr) auto auto auto;align-items:end;gap:10px;margin:20px 0 10px;padding:12px;display:grid}.photo-filter-toolbar>label,.advanced-photo-filters label{color:var(--ink-soft);letter-spacing:.06em;text-transform:uppercase;gap:5px;font-size:.62rem;font-weight:700;display:grid}.photo-filter-toolbar input,.photo-filter-toolbar select{min-width:0;color:var(--ink);background:var(--paper);border:1px solid var(--line);font:.72rem var(--sans);padding:7px 9px}.advanced-photo-filters{position:relative}.advanced-photo-filters summary,.clear-photo-filters{cursor:pointer;border:1px solid var(--line);background:0 0;padding:8px 10px;font-size:.68rem}.advanced-photo-filters[open] label{z-index:3;background:var(--paper);border:1px solid var(--line);min-width:190px;padding:12px;position:absolute;top:calc(100% + 5px);right:0;box-shadow:0 10px 25px #1c1d1b1f}.clear-photo-filters{color:var(--accent)}.review-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.review-card{background:var(--paper-deep);min-width:0;position:relative}.photo-select{z-index:1;color:var(--paper);text-transform:uppercase;background:#1c1d1bdb;align-items:center;gap:5px;padding:6px 8px;font-size:.64rem;font-weight:700;display:flex;position:absolute;top:8px;left:8px}.bulk-actions{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 0 18px;display:flex}.bulk-actions span{color:var(--ink-soft);margin-right:auto;font-size:.72rem}.bulk-actions button,.bulk-actions select,.record-actions button{cursor:pointer;border:1px solid var(--line);background:0 0;padding:7px 10px;font-size:.65rem}.bulk-actions select{min-width:150px}.bulk-actions button:disabled{cursor:default;opacity:.4}.bulk-actions .reject-action,.record-actions .reject-action{color:var(--accent);border-color:var(--accent)}.record-actions{border-top:1px solid var(--line);flex-wrap:wrap;gap:6px;margin-top:12px;padding-top:12px;display:flex}.record-actions button:disabled{cursor:default;opacity:.65}.review-preview{aspect-ratio:4/3;color:var(--ink-soft);background:#dedbd1;place-items:center;font-size:.75rem;display:grid;overflow:hidden}.review-preview img{object-fit:contain;width:100%;height:100%}.review-meta{padding:14px}.review-meta h3,.review-meta p{margin:0}.review-meta h3{font-family:var(--serif);text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:400;overflow:hidden}.review-meta p{color:var(--ink-soft);margin-top:5px;font-size:.7rem}.status{letter-spacing:.06em;text-transform:uppercase;background:#1c1d1b14;margin-top:10px;padding:4px 7px;font-size:.62rem;font-weight:700;display:inline-block}.status+.status{margin-left:6px}.moderation-approved{color:#315f3b;background:#315f3b1f}.moderation-rejected{color:var(--accent);background:#a94f321f}.edit-status{color:#31536a;background:#31536a21}.review-form{gap:10px;margin-top:14px;display:grid}.review-form label{color:var(--ink-soft);letter-spacing:.05em;text-transform:uppercase;gap:5px;font-size:.66rem;font-weight:700;display:grid}.review-form textarea,.review-form input,.review-form select{width:100%;color:var(--ink);background:var(--paper);border:1px solid var(--line);font:.75rem/1.4 var(--sans);resize:vertical;padding:8px}.review-actions{flex-wrap:wrap;gap:6px;display:flex}.review-actions button{cursor:pointer;border:1px solid var(--line);background:0 0;padding:7px 9px;font-size:.65rem}.review-actions button:nth-child(2){color:var(--paper);background:var(--ink);border-color:var(--ink)}.review-actions .reject-action{color:var(--accent);border-color:var(--accent)}.status-failed,.failure-reason{color:var(--accent)!important}.review-empty,.review-message{color:var(--ink-soft);font-family:var(--serif)}.load-more{margin:24px auto 0;display:block}.upload-panel h2,.upload-panel p{margin:0}.upload-panel h2{font-family:var(--serif);margin-bottom:6px;font-size:1.8rem;font-weight:400}.upload-panel .eyebrow{margin-bottom:8px}.upload-panel>div>p:last-child{color:var(--ink-soft);font-size:.82rem}.upload-button{cursor:pointer;border:1px solid var(--ink);letter-spacing:.08em;text-transform:uppercase;padding:12px 18px;font-size:.72rem;font-weight:700}.upload-button input{clip:rect(0, 0, 0, 0);width:1px;height:1px;position:absolute;overflow:hidden}.upload-list{grid-column:1/-1;gap:10px;margin:0;padding:0;list-style:none;display:grid}.upload-list li{grid-template-columns:minmax(0,1fr) minmax(120px,auto);gap:6px 20px;font-size:.78rem;display:grid}.upload-list li>span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.upload-list li>span:nth-child(2){color:var(--ink-soft);text-align:right}.upload-list progress{width:100%;height:4px;accent-color:var(--accent);grid-column:1/-1}.collection-heading{grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr);align-items:end;gap:48px;padding:clamp(40px,6vw,84px) 0 clamp(30px,4vw,54px);display:grid}.collection-heading-album{grid-template-columns:minmax(0,1fr) minmax(260px,.8fr);gap:24px;padding:10px 0}.collection-heading-album h1{font-size:clamp(1.8rem,3.4vw,3.2rem);line-height:1}.collection-heading-album .collection-intro{font-size:clamp(.85rem,1.1vw,1.05rem);line-height:1.3}.eyebrow{color:var(--accent);letter-spacing:.17em;text-transform:uppercase;margin:0 0 16px;font-size:.72rem;font-weight:700}h1{font-family:var(--serif);letter-spacing:-.065em;margin:0;font-size:clamp(4rem,10vw,9.5rem);font-weight:400;line-height:.76}.collection-intro{max-width:430px;color:var(--ink-soft);font-family:var(--serif);margin:0 0 2px;font-size:clamp(1.1rem,1.7vw,1.5rem);line-height:1.45}.album-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(30px,4vw,64px) clamp(16px,2.3vw,34px);padding-bottom:clamp(80px,10vw,144px);display:grid}.group-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(30px,4vw,64px) clamp(16px,2.3vw,34px);padding-bottom:clamp(32px,5vw,64px);display:grid}.gallery-load-sentinel{min-height:1px;color:var(--ink-soft);letter-spacing:.06em;text-align:center;text-transform:uppercase;padding:14px 0;font-size:.72rem}.group-covers{aspect-ratio:4/3;background:var(--paper-deep);grid-template-rows:1fr 1fr;grid-template-columns:1.35fr 1fr;gap:3px;display:grid;overflow:hidden}.group-covers img{object-fit:cover;width:100%;height:100%}.group-covers img:first-child{grid-row:1/-1}.group-covers-1{display:block}.group-covers-2{grid-template-rows:1fr}.group-covers-2 img:first-child{grid-row:auto}.gallery-toolbar{letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;align-items:end;gap:24px;margin-bottom:8px;padding:10px 0;font-size:.72rem;display:flex}.album-toolbar-heading{min-width:0}.album-toolbar-heading h1{text-overflow:ellipsis;white-space:nowrap;font-size:clamp(1.65rem,3vw,2.8rem);line-height:1;overflow:hidden}.album-toolbar-heading p{max-width:720px;color:var(--ink-soft);font-family:var(--serif);letter-spacing:normal;text-transform:none;margin:5px 0 0;font-size:.88rem;font-weight:400;line-height:1.3}.gallery-layout-controls{flex:none;gap:8px;display:flex}.gallery-toolbar button{cursor:pointer;border:1px solid var(--line);background:0 0;padding:7px 10px}.gallery-toolbar button[aria-pressed=true]{color:var(--paper);background:var(--ink)}.photo-gallery{gap:clamp(20px,4vw,64px);padding-bottom:40px;display:grid}.photo-gallery-spacious{width:min(100%,1100px);margin:0 auto}.photo-gallery-justified{flex-wrap:wrap;gap:10px;display:flex}.photo-gallery-justified:after{content:"";flex-grow:999;flex-basis:280px}.photo-gallery-justified figure{flex-basis:var(--photo-width,390px);flex-grow:var(--photo-ratio,1.5);height:clamp(170px,18vw,280px);position:relative;overflow:hidden;aspect-ratio:auto!important}.photo-gallery-justified figcaption{color:#fff;background:linear-gradient(#0000,#000000a6);padding:24px 10px 9px;position:absolute;bottom:0;left:0;right:0}.photo-gallery figure{background:var(--paper-deep);min-width:0;margin:0;position:relative}.photo-edit-indicator{color:#fff;letter-spacing:.06em;text-transform:uppercase;pointer-events:none;background:#14242ed1;padding:5px 8px;font-size:.62rem;font-weight:700;position:absolute;top:8px;right:8px}.photo-gallery img{object-fit:cover;width:100%;height:100%;display:block}.photo-gallery figcaption{color:var(--ink-soft);font-family:var(--serif);padding:10px 0;font-size:.85rem}.gallery-message{color:var(--ink-soft);font-family:var(--serif)}.photo-detail{padding-top:8px;padding-bottom:clamp(70px,9vw,130px)}.detail-navigation{color:var(--ink-soft);letter-spacing:.06em;text-transform:uppercase;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;margin-bottom:12px;font-size:.7rem;display:grid}.detail-navigation>div{justify-content:flex-end;gap:18px;display:flex}.detail-navigation>div>span{opacity:.35}.detail-image{object-fit:contain;width:auto;max-width:100%;max-height:calc(100svh - 124px);margin:0 auto;display:block}.detail-meta{border-top:1px solid var(--line);grid-template-columns:minmax(200px,1fr) minmax(0,2fr);gap:30px;margin-top:24px;padding-top:20px;display:grid}.detail-admin-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;margin-top:12px;display:flex}.detail-admin-actions .status{margin-top:0}.detail-admin-actions .reject-action{color:var(--accent);border-color:var(--accent)}.detail-meta>p{font-family:var(--serif);margin:0;font-size:1.05rem}.detail-meta dl{flex-wrap:wrap;justify-content:flex-end;gap:14px 28px;margin:0;display:flex}.detail-meta dl div{gap:4px;display:grid}.detail-meta dt{color:var(--ink-soft);letter-spacing:.06em;text-transform:uppercase;font-size:.62rem}.detail-meta dd{margin:0;font-size:.75rem}.photo-engagement{border-top:1px solid var(--line);max-width:900px;margin:52px auto 0;padding-top:24px}.engagement-like-count{color:var(--ink-soft);margin:0 0 8px;font-size:.72rem}.comment-actions button,.comment-form button,.comment-list button{cursor:pointer;border:1px solid var(--line);background:0 0;padding:8px 12px}.comment-actions button[aria-pressed=true]{color:var(--paper);background:var(--ink)}.comment-form{grid-template-columns:1fr auto;align-items:end;gap:8px;margin:22px 0;display:grid}.comment-actions{flex-direction:column;gap:8px;display:flex}.comment-form textarea{resize:vertical;min-height:76px;color:var(--ink);background:var(--paper);border:1px solid var(--line);font:.82rem var(--sans);padding:10px}.comment-list{gap:14px;padding:0;list-style:none;display:grid}.comment-list li{border-bottom:1px solid var(--line);padding:14px 80px 14px 0;position:relative}.comment-list li>div{gap:12px;font-size:.72rem;display:flex}.comment-list time{color:var(--ink-soft)}.comment-list p{white-space:pre-wrap;margin:8px 0 0}.comment-list button{color:var(--accent);position:absolute;top:10px;right:0}.album-link{display:block}.album-image-wrap{aspect-ratio:1;background:var(--paper-deep);position:relative;overflow:hidden}.album-image{object-fit:cover;filter:saturate(.84)contrast(1.02);width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.7,0,1),filter .4s}.open-album{color:var(--paper);letter-spacing:.08em;opacity:0;text-transform:uppercase;background:#1c1d1be6;align-items:center;gap:18px;padding:10px 13px;font-size:.68rem;font-weight:700;transition:opacity .18s,transform .18s;display:flex;position:absolute;bottom:14px;right:14px;transform:translateY(8px)}.album-link:hover .album-image,.album-link:focus-visible .album-image{filter:saturate()contrast();transform:scale(1.025)}.album-link:hover .open-album,.album-link:focus-visible .open-album{opacity:1;transform:translateY(0)}.album-meta{justify-content:space-between;align-items:baseline;gap:16px;padding-top:15px;display:flex}.album-meta h2{font-family:var(--serif);letter-spacing:-.025em;margin:0;font-size:clamp(1.18rem,1.65vw,1.55rem);font-weight:400;line-height:1.2}.album-meta p{color:var(--ink-soft);letter-spacing:.05em;text-transform:uppercase;flex:none;margin:0;font-size:.68rem;font-weight:600}.album-link:focus-visible,.sign-in:focus-visible,.wordmark:focus-visible,.nav-link:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.site-footer{color:var(--ink-soft);border-top:1px solid var(--line);font-family:var(--serif);justify-content:flex-end;padding:16px 0 20px;font-size:.88rem;display:flex}.site-footer p{margin:0}@media (width<=920px){.collection-heading{grid-template-columns:1fr;gap:28px}.album-grid,.group-grid,.review-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-filter-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}.photo-filter-toolbar .review-filters{grid-column:1/-1}.album-admin,.user-admin{grid-template-columns:1fr}.album-admin form{grid-template-columns:1fr 1fr}.managed-albums form{grid-template-columns:1fr 1fr auto}}@media (width<=580px){.site-shell{width:min(100% - 24px,1480px)}.site-header{min-height:60px}.photo-filter-toolbar{grid-template-columns:1fr}.photo-filter-toolbar .review-filters{grid-column:auto}.wordmark>span:last-child,.nav-link{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.collection-heading{padding-top:36px}.collection-heading-album{gap:8px;padding:8px 0}.upload-panel{grid-template-columns:1fr}.admin-token-tool{justify-content:flex-end;width:100%;margin-top:4px}.review-grid,.album-admin form,.managed-albums form{grid-template-columns:1fr}.upload-button{text-align:center}h1{font-size:clamp(4.1rem,23vw,7rem)}.album-grid,.group-grid{grid-template-columns:1fr;gap:42px}.photo-gallery-justified{grid-template-columns:1fr;display:grid}.photo-gallery-justified:after{display:none}.photo-gallery-justified figure{height:auto;aspect-ratio:var(--photo-ratio)!important}.detail-navigation{grid-template-columns:1fr auto}.detail-navigation>span{text-align:right}.detail-navigation>div{grid-column:1/-1;justify-content:space-between}.detail-meta{grid-template-columns:1fr}.detail-meta dl{justify-content:flex-start}.open-album{opacity:1;transform:none}.site-footer{gap:12px;font-size:.78rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
