@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Playfair+Display:ital,wght@1,600&display=swap');
.stats{grid-template-columns:repeat(4,1fr)!important}
:root{--ink:#23221f;--cream:#f4f0e8;--paper:#faf8f3;--red:#dd624d;--line:#d8d1c5;--muted:#777169}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}button,input,textarea{font:inherit;color:inherit}button,a{cursor:pointer}button{border:0;background:transparent}a{text-decoration:none;color:inherit}svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.brand{display:flex;gap:5px;align-items:baseline;font-size:19px}.brand span,.loading span{font-family:'Playfair Display',serif;font-style:italic}.brand b{font-size:14px;letter-spacing:-.3px}.loading{min-height:100vh;display:grid;place-content:center;grid-auto-flow:column;gap:6px;align-items:baseline;font-size:23px}.loading b{font-size:13px;color:var(--muted)}
body>div#app>header{height:88px;display:flex;align-items:center;justify-content:space-between;padding:0 4.5vw;border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(250,248,243,.92);backdrop-filter:blur(18px);z-index:20}header nav,.tools{display:flex;gap:10px;align-items:center}.privacy,.primary,.tools button,footer button,.owner-link{height:43px;padding:0 17px;border:1px solid var(--line);border-radius:30px;display:flex;gap:8px;align-items:center;font-size:12px}.primary{background:var(--ink);color:#fff;border-color:var(--ink);justify-content:center}.owner-link{border:0;color:var(--muted)}
.hero{padding:76px 6vw 63px;background:var(--cream);border-bottom:1px solid var(--line);position:relative;overflow:hidden}.hero:after{content:'03';position:absolute;right:5vw;bottom:-52px;font-family:'Playfair Display';font-size:210px;color:#e7e0d4}.hero>*{position:relative;z-index:1}.eyebrow{font-size:11px;font-weight:600;letter-spacing:2.1px;margin-bottom:24px}.eyebrow span{color:var(--red);padding:0 8px}.hero h1{font-size:clamp(59px,8vw,112px);font-weight:500;letter-spacing:-6px;line-height:.78;margin:0;max-width:1050px}.hero h1 em{font-family:'Playfair Display';font-weight:600;color:var(--red)}.hero p{font-size:17px;line-height:1.55;max-width:560px;margin:34px 0}.meta{display:flex;align-items:center;gap:18px;font-size:12px;color:var(--muted)}.meta b{color:var(--ink)}.meta i{width:3px;height:3px;background:var(--red);border-radius:50%}
.toolbar{height:86px;padding:0 4.5vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:sticky;top:88px;background:rgba(250,248,243,.94);backdrop-filter:blur(14px);z-index:10}.select{display:flex;align-items:center;gap:10px}.select span{width:22px;height:22px;border:1px solid #aaa297;display:grid;place-items:center}.select.on span{background:var(--red);color:#fff;border-color:var(--red)}.tools button{height:39px;padding:0 14px}.tools .download{background:var(--red);border-color:var(--red);color:#fff}.grid{padding:18px 4.5vw 80px;display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:95px;gap:13px;min-height:400px}.photo{position:relative;overflow:hidden;background:#ddd;cursor:zoom-in}.photo img{width:100%;height:100%;object-fit:cover;transition:transform .55s}.photo:hover img{transform:scale(1.025)}.photo.p0,.photo.p5{grid-column:span 7;grid-row:span 5}.photo.p1,.photo.p6{grid-column:span 5;grid-row:span 3}.photo.p2,.photo.p7{grid-column:span 5;grid-row:span 4}.photo.p3,.photo.p8{grid-column:span 4;grid-row:span 4}.photo.p4{grid-column:span 8;grid-row:span 4}.tick{position:absolute;top:13px;right:13px;width:35px;height:35px;background:rgba(255,255,255,.92);border-radius:50%;display:grid;place-items:center;opacity:0;transform:translateY(-5px);transition:.2s}.photo:hover .tick,.photo.picked .tick{opacity:1;transform:none}.photo.picked .tick{background:var(--red);color:#fff}.caption{position:absolute;inset:auto 0 0;padding:25px 14px 13px;color:#fff;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(transparent,rgba(0,0,0,.65));opacity:0;transition:.2s}.photo:hover .caption{opacity:1}.caption span{font-size:12px}.caption a{color:#fff}.empty-gallery{grid-column:1/-1;grid-row:span 4;display:grid;place-content:center;text-align:center;color:var(--muted)}.empty-gallery svg{width:36px;height:36px;margin:auto}.empty-gallery h2{color:var(--ink);margin:18px 0 4px}.empty-gallery p{margin:0;font-size:13px}footer{min-height:180px;border-top:1px solid var(--line);padding:44px 4.5vw;display:grid;grid-template-columns:1fr 2fr auto;align-items:center;gap:30px}footer p{font-size:12px;color:var(--muted)}footer button{font-size:12px}
.lightbox{position:fixed;inset:0;background:rgba(25,23,20,.96);z-index:50;display:grid;place-items:center;padding:50px;opacity:0;visibility:hidden;pointer-events:none;transition:.2s}.lightbox.open{opacity:1;visibility:visible;pointer-events:auto}.lightbox>img{max-width:88vw;max-height:80vh;object-fit:contain}.lightbox .close{position:absolute;right:24px;top:24px;color:#fff}.lightbox>div{position:absolute;bottom:23px;left:6vw;right:6vw;color:white;display:flex;justify-content:space-between}.light-download{display:flex;gap:8px}.toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%,15px);opacity:0;visibility:hidden;background:var(--ink);color:#fff;border-radius:40px;padding:12px 19px;display:flex;gap:8px;z-index:70;font-size:13px;box-shadow:0 10px 30px #0004;transition:.2s}.toast.show{opacity:1;visibility:visible;transform:translate(-50%,0)}
.admin{min-height:100vh;display:grid;grid-template-columns:250px 1fr;background:#f7f5ef}.admin aside{height:100vh;position:sticky;top:0;padding:34px 26px;border-right:1px solid var(--line);display:flex;flex-direction:column}.admin-label,.modal-kicker,.signin>div>span{font-size:10px;letter-spacing:2px;font-weight:600;color:var(--red);margin:54px 0 18px}.admin aside nav button{width:100%;display:flex;gap:11px;align-items:center;padding:12px;background:#eae5dc;border-radius:7px;font-size:13px}.aside-bottom{margin-top:auto;display:grid;gap:12px}.aside-bottom a{display:flex;gap:8px;color:var(--muted);font-size:12px}.admin>main{padding:50px 5vw}.admin>main>header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:40px}.admin>main>header span{font-size:10px;letter-spacing:2px;color:var(--red);font-weight:600}.admin>main>header h1{font-size:45px;letter-spacing:-2px;margin:7px 0 0}.stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);background:var(--paper);margin-bottom:26px}.stats div{padding:22px 25px;border-right:1px solid var(--line);display:flex;align-items:baseline;gap:10px}.stats div:last-child{border:0}.stats b{font-size:28px}.stats span{font-size:11px;color:var(--muted)}.album-list{border-top:1px solid var(--line)}.album-row{display:grid;grid-template-columns:150px 1fr auto;align-items:center;gap:25px;padding:20px 0;border-bottom:1px solid var(--line)}.album-cover{height:94px;background:#e6e0d5;position:relative;display:grid;place-items:center;overflow:hidden}.album-cover img{width:100%;height:100%;object-fit:cover}.album-cover>span svg{width:27px;height:27px;color:#9b9488}.album-cover label{position:absolute;left:8px;bottom:8px;background:var(--ink);color:#fff;padding:5px 7px;font-size:8px;letter-spacing:1px}.album-info>span{font-size:9px;letter-spacing:1.4px;color:var(--red);font-weight:600}.album-info h2{margin:5px 0;font-size:22px}.album-info p{margin:0;font-size:11px;color:var(--muted)}.album-actions{display:flex;align-items:center;gap:6px}.album-actions button,.album-actions a{height:38px;border:1px solid var(--line);padding:0 12px;display:flex;gap:7px;align-items:center;border-radius:5px;font-size:11px}.album-actions .danger{padding:0 10px;color:#a44}.empty-admin{padding:60px 0;text-align:center}.admin-loading{padding:70px;color:var(--muted)}
.modal{position:fixed;inset:0;background:#211f1bd9;z-index:80;display:grid;place-items:center;padding:25px}.modal-card{width:min(620px,100%);max-height:90vh;overflow:auto;background:var(--paper);padding:40px;position:relative}.modal-close{position:absolute;right:20px;top:20px}.modal-kicker{display:block;margin:0 0 12px}.modal-card h2{font-size:42px;line-height:.95;letter-spacing:-2px;margin:0 0 30px}.modal-card h2 em{font-family:'Playfair Display';color:var(--red)}form label{display:grid;gap:7px;font-size:11px;font-weight:600;margin-bottom:17px}input,textarea{width:100%;border:1px solid var(--line);background:#fff;padding:12px;border-radius:3px;outline:0}input:focus,textarea:focus{border-color:var(--red)}textarea{height:80px;resize:vertical}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}form label.check{display:flex;grid-auto-flow:column;align-items:center;justify-content:start;font-weight:400}label.check input{width:auto}.modal form .primary{width:100%;margin-top:5px}.dropzone{height:190px;border:1px dashed #a8a094;background:#f4f0e8;display:grid;place-content:center;text-align:center;gap:8px;cursor:pointer;transition:.2s}.dropzone.over{background:#ebe1d4;border-color:var(--red)}.dropzone svg{width:32px;height:32px;margin:auto;color:var(--red)}.dropzone span{font-size:11px;color:var(--muted)}.upload-list{margin-top:15px}.upload-item{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);font-size:11px}.upload-item label{color:var(--muted)}.upload-item.done label{color:#46805a}.upload-item.failed label{color:#a44}
.signin,.error-page{min-height:100vh;background:var(--cream);padding:40px 5vw}.signin>div,.error-page>div{min-height:75vh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start}.signin h1{font-size:clamp(55px,8vw,100px);line-height:.85;letter-spacing:-5px;margin:0}.signin h1 em{font-family:'Playfair Display';color:var(--red)}.signin p{max-width:420px;line-height:1.5;color:var(--muted);margin:28px 0}.signin .primary{display:inline-flex}.error-page>div{align-items:center;text-align:center}.error-page>div b{font-size:45px}.error-page>div p{color:var(--muted)}
.pin-gate{min-height:100vh;background:var(--cream);padding:40px 5vw;position:relative;overflow:hidden}.pin-gate:after{content:'PRIVATE';position:absolute;right:-50px;bottom:-55px;font-family:'Playfair Display';font-style:italic;font-size:170px;color:#e8e1d5}.pin-card{min-height:78vh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;position:relative;z-index:1}.pin-card>span{font-size:10px;letter-spacing:2px;color:var(--red);font-weight:600}.pin-card h1{font-size:clamp(55px,8vw,96px);line-height:.83;letter-spacing:-5px;margin:18px 0}.pin-card h1 em{font-family:'Playfair Display';color:var(--red)}.pin-card>p{color:var(--muted);margin:0 0 25px}.pin-card form{width:min(390px,100%)}.pin-card form label{font-size:10px;letter-spacing:1px}.pin-card input{font-size:24px;letter-spacing:8px;padding:14px}.pin-card .primary{width:100%}.pin-card small{display:block;color:#a44;margin-top:10px}
.home{min-height:100vh;background:var(--paper)}.home>header{height:88px;display:flex;align-items:center;justify-content:space-between;padding:0 4.5vw;border-bottom:1px solid var(--line)}.home>header nav{display:flex;align-items:center;gap:12px}.home-private{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--muted)}.home-hero{min-height:510px;background:var(--cream);padding:82px 6vw 70px;display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,.75fr);gap:8vw;align-items:end;border-bottom:1px solid var(--line);position:relative;overflow:hidden}.home-hero:after{content:'ARCHIVE';position:absolute;right:-30px;bottom:-58px;font-family:'Playfair Display';font-style:italic;font-size:150px;color:#e8e1d5}.home-hero>div,.home-hero>p{position:relative;z-index:1}.home-hero .eyebrow{display:block;color:var(--red);margin-bottom:26px}.home-hero h1{font-size:clamp(60px,7.7vw,108px);font-weight:500;letter-spacing:-6px;line-height:.79;margin:0}.home-hero h1 em{font-family:'Playfair Display';color:var(--red)}.home-hero>p{font-size:15px;line-height:1.7;color:var(--muted);margin:0 0 5px}.album-lobby{padding:65px 4.5vw 95px}.lobby-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--ink);padding-bottom:14px}.lobby-heading>span{font-size:10px;letter-spacing:2px;font-weight:600}.lobby-heading p{font-size:11px;color:var(--muted);margin:0}.lobby-grid{display:grid;grid-template-columns:repeat(2,1fr)}.lobby-card{min-height:305px;padding:34px 30px 28px;border-bottom:1px solid var(--line);display:grid;grid-template-rows:auto 1fr auto;transition:.2s;position:relative;overflow:hidden}.lobby-card:nth-child(odd){border-right:1px solid var(--line)}.lobby-card:hover{background:var(--cream)}.lobby-cover{height:180px;margin:-34px -30px 28px;overflow:hidden}.lobby-cover img{width:100%;height:100%;object-fit:cover;transition:transform .5s}.lobby-card:hover .lobby-cover img{transform:scale(1.025)}.lobby-card.has-cover{min-height:475px}.lobby-number{font-family:'Playfair Display';font-style:italic;color:var(--red);font-size:21px}.lobby-copy{align-self:center}.lobby-copy>span{font-size:9px;letter-spacing:1.7px;color:var(--red);font-weight:600}.lobby-copy h2{font-size:34px;letter-spacing:-1.6px;margin:8px 0 12px}.lobby-copy p{font-size:12px;line-height:1.6;color:var(--muted);max-width:470px;margin:0}.lobby-meta{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:16px;font-size:11px;color:var(--muted)}.lobby-meta span,.lobby-meta b{display:flex;gap:7px;align-items:center}.lobby-meta b{color:var(--ink);font-weight:500}.lobby-empty{grid-column:1/-1;padding:80px 0;text-align:center}.lobby-empty p{color:var(--muted)}.settings-group{border:1px solid var(--line);padding:15px 16px;margin:14px 0}.settings-group>b{display:block;font-size:10px;letter-spacing:1.5px;color:var(--red);margin-bottom:12px}.settings-group .check{margin-bottom:10px}.settings-group small{font-size:10px;color:var(--muted);line-height:1.4;display:block}
select{width:100%;border:1px solid var(--line);background:#fff;padding:12px;border-radius:3px}form label small{font-weight:400;color:var(--muted)}.modal-copy{color:var(--muted);font-size:13px;line-height:1.55}.download-options{display:grid;gap:10px;margin-top:22px}.download-options button{border:1px solid var(--line);padding:17px;display:flex;align-items:center;gap:15px;text-align:left}.download-options button:hover{border-color:var(--red)}.download-options button>span{display:grid;gap:3px}.download-options small{color:var(--muted)}.zip-status{font-size:12px;color:var(--red);margin-top:15px}.manager-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.manager-grid article{border:1px solid var(--line);background:#fff}.manager-grid img{width:100%;height:120px;object-fit:cover}.manager-grid .manager-details{padding:9px;display:grid;gap:7px}.manager-grid span{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.manager-grid .caption-input{font-size:10px;padding:8px}.raw-badge,.raw-empty{font-size:8px;padding:6px 7px;background:#edf3ed;color:#3f704b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.raw-empty{background:#f2efe9;color:var(--muted)}.manager-buttons{display:flex;align-items:center;gap:5px}.manager-grid button{font-size:9px;padding:5px;border:1px solid var(--line)}.manager-grid button:disabled{opacity:.35;cursor:default}.manager-grid .cover-action{margin-left:auto}.manager-grid .delete-photo{color:#a44}.upload-item button{font-size:9px;color:var(--red);text-decoration:underline}.light-prev,.light-next{position:absolute;top:50%;transform:translateY(-50%);color:#fff;font-size:50px;z-index:2}.light-prev{left:24px}.light-next{right:24px}.theme-night{--paper:#171715;--cream:#211f1c;--ink:#f4f0e8;--line:#3f3b36;--muted:#aaa39a;background:var(--paper)}.theme-night .hero:after{color:#2a2723}.theme-night .photo{background:#292724}.layout-grid .grid{grid-template-columns:repeat(4,1fr);grid-auto-rows:280px}.layout-grid .photo.p0,.layout-grid .photo.p1,.layout-grid .photo.p2,.layout-grid .photo.p3,.layout-grid .photo.p4,.layout-grid .photo.p5,.layout-grid .photo.p6,.layout-grid .photo.p7,.layout-grid .photo.p8{grid-column:span 1;grid-row:span 1}
@media(max-width:800px){body>div#app>header{height:72px;padding:0 18px}.privacy,.owner-link{display:none}.hero{padding:48px 20px}.hero h1{font-size:59px;letter-spacing:-3.8px}.hero:after{font-size:140px}.meta{flex-wrap:wrap;gap:10px}.toolbar{top:72px;height:auto;padding:12px 18px}.select label{display:none}.tools button:nth-child(2){display:none}.grid,.layout-grid .grid{padding:10px;grid-template-columns:1fr 1fr;grid-auto-rows:180px;gap:7px}.photo.p0,.photo.p1,.photo.p2,.photo.p3,.photo.p4,.photo.p5,.photo.p6,.photo.p7,.photo.p8{grid-column:span 1;grid-row:span 1}.photo.p0,.photo.p5{grid-column:span 2;grid-row:span 2}.caption,.tick{opacity:1;transform:none}footer{grid-template-columns:1fr;padding:34px 20px}.admin{grid-template-columns:1fr}.admin aside{height:auto;position:relative;border-right:0;border-bottom:1px solid var(--line);padding:20px;flex-direction:row;align-items:center}.admin-label,.admin aside nav{display:none}.aside-bottom{margin:0 0 0 auto;grid-auto-flow:column}.aside-bottom a:last-child{display:none}.admin>main{padding:30px 18px}.admin>main>header h1{font-size:34px}.admin>main>header .primary{font-size:0;width:42px;padding:0}.stats div{padding:15px 10px;display:grid}.album-row{grid-template-columns:90px 1fr;gap:12px}.album-cover{height:70px}.album-actions{grid-column:1/-1;flex-wrap:wrap}.album-actions button{flex:1;justify-content:center}.field-row{grid-template-columns:1fr}.modal-card{padding:30px 20px}.modal-card h2{font-size:34px}.manager-grid{grid-template-columns:1fr 1fr}.light-prev{left:8px}.light-next{right:8px}}
@media(max-width:800px){.album-home-link{display:flex!important}.home>header{height:72px;padding:0 20px}.home-private{font-size:0}.home-hero{min-height:520px;padding:62px 20px 50px;grid-template-columns:1fr;gap:35px;align-content:center}.home-hero h1{font-size:58px;letter-spacing:-3.8px}.home-hero:after{font-size:90px;bottom:-30px}.album-lobby{padding:45px 20px 70px}.lobby-grid{grid-template-columns:1fr}.lobby-card{min-height:280px;padding:28px 4px}.lobby-card:nth-child(odd){border-right:0}.lobby-cover{margin:-28px -4px 24px}.lobby-copy h2{font-size:30px}}
