:root{--night:#151e33;--night-deep:#10182b;--night-light:#242e47;--lilac:#baa9cb;--moon:#f1ddc1;--cream:#fbf5eb;--ink:#293247;--ink-soft:#746d78;--line:#e8e0dd;--pink:#ce9bb2;--soft:#fbf8f5}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--night-deep);color:var(--cream);font-family: 'Trebuchet MS',Arial,sans-serif;-webkit-font-smoothing:antialiased;min-height:100vh}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}a{color:inherit}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4,.serif-pretitle,.hero-scribble,.orbit-label{font-family:Georgia,'Times New Roman',serif;font-weight:400}em{font-weight:400}img{max-width:100%}.hidden{display:none!important}.sr-only{position:absolute;overflow:hidden;width:1px;height:1px;margin:-1px;clip:rect(0,0,0,0);white-space:nowrap;border:0} :focus-visible{outline:3px solid #cba8b9;outline-offset:4px}
.ambient-sky{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(1.5px 1.5px at 8% 17%,#f6ebdf 99%,transparent),radial-gradient(1px 1px at 25% 51%,#ead8d2 99%,transparent),radial-gradient(2px 2px at 55% 12%,#d9c0de 99%,transparent),radial-gradient(1px 1px at 79% 27%,#ede5cf 99%,transparent),radial-gradient(1px 1px at 92% 73%,#f8eae8 99%,transparent),radial-gradient(2px 2px at 65% 81%,#dac3cd 99%,transparent),radial-gradient(1px 1px at 10% 83%,#eadccc 99%,transparent),linear-gradient(145deg,#17223a,#10182a 62%,#1d233d)}.ambient-glow{position:absolute;width:750px;height:750px;left:50%;top:20%;transform:translateX(-50%);background:radial-gradient(circle,rgba(176,138,167,.11),transparent 65%)}
.login-screen{min-height:100svh;display:flex;align-items:center;flex-direction:column;justify-content:center;padding:65px 20px 24px;position:relative;overflow:hidden}.login-decoration{position:absolute;color:#f1dcca;font-size:38px;opacity:.5}.login-decoration-left{left:15%;top:25%}.login-decoration-right{right:16%;bottom:23%}.login-card{position:relative;width:min(100%,494px);text-align:center;padding:45px 57px 30px;border:1px solid rgba(239,220,214,.19);border-radius:10px;background:linear-gradient(155deg,rgba(247,237,231,.08),rgba(215,186,207,.025));box-shadow:0 23px 100px #070d1b3b,0 0 70px #e8c4d005;backdrop-filter:blur(14px)}.eyebrow{display:inline-block;font-size:9px;font-weight:700;letter-spacing:2.8px;color:#e8cbbf;line-height:1.8}.tiny-star{font-size:15px;margin-right:8px}.moon-illustration{width:73px;height:73px;margin:29px auto 24px;border-radius:50%;position:relative;background:radial-gradient(circle at 30% 29%,#fff6e5,#ddbb9d 67%,#ac879a);box-shadow:0 0 39px #f0d4bb54,0 0 85px #f5d9ad27,inset -7px -7px 13px #8c789554;transform:rotate(-12deg)}.moon-crater{position:absolute;border-radius:50%;box-shadow:inset 2px 2px 4px #ad8e9955;background:#d0adac31}.crater-one{height:15px;width:15px;left:19px;top:15px}.crater-two{height:10px;width:10px;left:42px;top:39px}.crater-three{height:7px;width:7px;left:13px;top:46px}.serif-pretitle{font-style:italic;font-size:15px;color:#cfb7ba;margin-bottom:11px}.login-card h1{font-size:clamp(49px,7.1vw,70px);line-height:1.03;letter-spacing:-2px;color:#fff7ed}.login-card h1 em{color:#d8b2c2}.login-description{font-size:12.5px;line-height:1.9;color:#c6bfca;max-width:290px;margin:18px auto 24px}.login-form{text-align:left}.field-label{display:flex;flex-direction:column;gap:9px;font-size:11px;color:inherit;letter-spacing:.2px;font-weight:700}.field-label input,.field-label textarea{display:block;width:100%;border:1px solid #ded6d3;border-radius:5px;background:#fffdfa;padding:14px 15px;font-size:13px;color:#26304a;outline:none;transition:border-color .2s,box-shadow .2s}.field-label input:focus,.field-label textarea:focus{border-color:#b595bc;box-shadow:0 0 0 3px #b595bc24}.field-label textarea{resize:vertical;line-height:1.6}.login-form .field-label{color:#dad0d5;margin-bottom:14px}.login-form input{color:#fff5ec;background:#171f35;border-color:#3d3d56;padding:14px 16px;border-radius:5px}.login-form input::placeholder{color:#8e8999}.login-form input:focus{border-color:#ceb0c4}.button{border:0;border-radius:5px;padding:14px 19px;display:inline-flex;align-items:center;justify-content:center;gap:11px;font-size:12px;letter-spacing:.2px;font-weight:700;transition:transform .2s,background-color .2s,box-shadow .2s}.button:not(:disabled):hover{transform:translateY(-2px)}.button-primary{background:#e5c9c8;color:#302b40}.button-primary:hover{background:#f1d7d2;box-shadow:0 7px 22px #e5c9c823}.login-form .button{width:100%;margin-top:8px}.login-separator{color:#d6bac3;opacity:.7;margin:19px auto 10px}.subtle-link,.text-button{border:0;background:transparent;color:#c3b3c3;font-size:11px;letter-spacing:.1px;padding:7px}.subtle-link{text-decoration:underline;text-decoration-color:#74677e;text-underline-offset:5px}.subtle-link:hover,.text-button:hover{color:white}.small-private-note{font-family:Georgia,serif;font-size:11px;font-style:italic;color:#8e8899;margin-top:30px}.small-private-note span{color:#dcb8c4}.login-footnote{margin-top:35px;font-family:Georgia,serif;font-size:12px;font-style:italic;letter-spacing:.2px;color:#a89fae;text-align:center}.login-footnote span{color:#dfb5b8;margin-left:10px}.form-error{font-size:11px;line-height:1.5;color:#ae354c;background:#fae4e7;padding:10px 11px;border-radius:5px;margin-top:10px}.login-form .form-error{background:#4d2938;color:#ffe0e2}
.site-shell{background:#fcf9f6;color:var(--ink);min-height:100vh}.topbar{height:90px;padding:0 max(6.6%,calc((100vw - 1230px)/2));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #eee7e3;background:#fffcf9}.brand{text-decoration:none;font-family:Georgia,serif;font-size:21px;letter-spacing:-.5px;color:#303349;display:flex;align-items:center;gap:10px}.brand-moon{font-size:28px;color:#ab92b5}.brand-sparkle{font-size:13px;color:#ca9ba8;align-self:start}.header-actions{display:flex;align-items:center;gap:25px}.private-badge{border:1px solid #e8dce2;color:#8e798d;padding:9px 14px;border-radius:99px;font-size:10px}.private-badge span{color:#c49caf;margin-right:4px}.text-button{color:#777082}.text-button:hover{color:#a57c9b}.hero{margin:0 auto;min-height:478px;max-width:1230px;padding:76px 54px 68px;display:grid;grid-template-columns:1.08fr .92fr;gap:30px;align-items:center;position:relative;overflow:hidden}.hero-copy{position:relative;z-index:2}.hero .eyebrow{color:#a38ca9}.hero h2{font-size:clamp(52px,6.2vw,86px);line-height:1.07;letter-spacing:-3.8px;margin-top:14px;color:#303449}.hero h2 em{color:#b68caa}.hero-copy>p{font-size:13px;color:#827d8b;max-width:465px;line-height:2.05;margin-top:24px}.hero-scribble{display:flex;align-items:center;gap:13px;font-size:16px;font-style:italic;color:#b88ea1;margin-top:25px}.scribble-line{display:block;width:38px;height:1px;background:#cfb5bf}.hero-scribble span:last-child{font-style:normal}.hero-art{position:relative;min-height:330px;display:flex;align-items:center;justify-content:center}.hero-art::before{content:'';position:absolute;inset:12% 6%;background:radial-gradient(ellipse,#f7ebe5 9%,#f6e9ee75 32%,transparent 67%);filter:blur(10px)}.hero-moon{width:226px;height:226px;position:relative;border-radius:50%;background:radial-gradient(circle at 30% 30%,#ffeedb 7%,#ebd4cf 45%,#b6accb 96%);box-shadow:0 0 38px 18px #e8dce680,0 0 110px #e5c9d150,inset -23px -14px 38px #ac9db66e;z-index:2}.hero-moon::before,.hero-moon::after{content:'';position:absolute;border-radius:50%;background:#b5a7b51c;box-shadow:inset 3px 3px 7px #af9caf55}.hero-moon::before{width:44px;height:44px;top:48px;left:45px}.hero-moon::after{width:26px;height:26px;right:57px;bottom:54px}.moon-shadow{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 72% 82%,#817d9e3d,transparent 36%)}.orbit{border:1px solid #d5c5d229;border-radius:50%;position:absolute;z-index:1;transform:rotate(-21deg)}.orbit-a{width:380px;height:285px}.orbit-b{width:465px;height:360px;border-color:#d5b4ce33;transform:rotate(27deg)}.hero-star{position:absolute;color:#bf9bb5;z-index:4}.hero-star.one{top:16%;left:17%;font-size:31px}.hero-star.two{right:15%;top:30%;font-size:17px}.hero-star.three{right:25%;bottom:15%;font-size:26px}.orbit-label{position:absolute;bottom:8%;left:4%;color:#a68da4;font-size:16px;font-style:italic;transform:rotate(-12deg)}.orbit-label span{font-style:normal;font-size:13px}
.moments-section{border-top:1px solid #f1e9e4;padding:65px max(6.6%,calc((100vw - 1230px)/2)) 110px;background:#fffdfa}.section-heading{display:flex;justify-content:space-between;gap:25px;align-items:center;margin-bottom:35px}.section-kicker{font-size:10px;letter-spacing:2.2px;font-weight:700;color:#b298b0}.section-heading h3,.upload-modal h3{font-size:clamp(34px,4.2vw,49px);margin:10px 0 10px;letter-spacing:-1.8px;line-height:1.15}.section-heading h3 em,.upload-modal h3 em,.photo-detail-heading h3 em{color:#bc94aa}.section-heading p{font-size:12px;color:#8a8390;line-height:1.7}.button-outline{background:#fff7f7;border:1px solid #dfcbd6;color:#8c6884;white-space:nowrap}.button-outline:hover{background:#f8eaf0}.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.moment-card{align-self:start;display:flex;flex-direction:column;border:1px solid #eee6e4;min-width:0;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 8px 29px #49374808;transition:transform .25s,box-shadow .25s;text-align:left;padding:0;color:var(--ink)}.moment-card:hover{transform:translateY(-5px);box-shadow:0 16px 30px #57475a18}.moment-image-wrap{background:#d4c5cd;overflow:hidden;display:block;position:relative;aspect-ratio:1.15}.moment-card:nth-child(5n + 2) .moment-image-wrap{aspect-ratio:.94}.moment-card:nth-child(5n + 4) .moment-image-wrap{aspect-ratio:1.32}.moment-image{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}.moment-card:hover .moment-image{transform:scale(1.035)}.moment-image-badge{position:absolute;top:14px;right:14px;color:#fff7ec;font-size:23px;text-shadow:0 2px 8px #15152588}.moment-card-content{padding:20px 21px 24px;display:block}.moment-date{font-size:10px;color:#b397a8;letter-spacing:1px;text-transform:uppercase;display:block;margin-bottom:11px}.moment-caption{font-family:Georgia,serif;font-size:20px;line-height:1.4;color:#423c4d;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.moment-caption.is-placeholder{color:#a19aaa;font-style:italic}.moment-location{font-size:11px;line-height:1.4;color:#9d91a0;margin-top:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.moment-location:before{content:'⌁';margin-right:8px;color:#bb97ab}.gallery-status{border:1px solid #eddce2;background:#fbf3f5;color:#725b72;padding:15px 18px;border-radius:6px;font-size:12px;margin-bottom:20px}.empty-state{border:1px dashed #e8d9df;border-radius:8px;padding:62px 25px;text-align:center;background:#fdf9f8}.empty-moon{font-size:58px;color:#ba9ab5;margin-bottom:9px}.empty-state h4{font-size:29px;color:#4b4153}.empty-state p{font-size:12px;line-height:1.7;color:#857d8a;max-width:340px;margin:12px auto}.site-footer{padding:27px 6%;background:#fcf9f6;color:#ad9fa9;display:flex;justify-content:space-between;gap:10px;font-family:Georgia,serif;font-size:11px;font-style:italic;border-top:1px solid #f0e8e5}.site-footer>span:nth-child(2){color:#c999ad}
.modal{background:#fffdfa;color:#372f42;padding:32px;width:min(calc(100vw - 28px),525px);max-height:calc(100svh - 30px);border:1px solid #eadde3;border-radius:10px;box-shadow:0 33px 100px #0e102766}.modal::backdrop{background:#101729bf;backdrop-filter:blur(5px)}.modal-header{display:flex;align-items:center;justify-content:space-between}.close-button{font-size:28px;line-height:1;border:0;background:#f7eef1;color:#755e79;border-radius:50%;height:35px;width:35px;display:inline-grid;place-items:center}.close-button:hover{background:#eddce5}.upload-modal h3{font-size:37px;margin-top:15px}.modal-intro{color:#89808d;font-size:12px;line-height:1.7;margin:0 0 22px}.upload-modal .field-label{margin-top:16px;color:#5c5261}.optional{color:#ac9ba5;font-weight:400;font-size:10px}.drop-zone{height:165px;border:1.5px dashed #d1b8c9;border-radius:7px;background:#fbf4f6;position:relative;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden}.drop-zone:hover,.drop-zone.is-dragging{background:#f9ebf1;border-color:#b78eaa}.drop-icon{font-size:28px;color:#aa8dad;margin-bottom:8px}#dropPrompt strong{font-family:Georgia,serif;font-size:17px;font-weight:400;color:#60495d}#dropPrompt p{color:#a28e9c;font-size:10px;margin-top:8px}.upload-preview{height:100%;width:100%;object-fit:contain;position:absolute;inset:0;background:#e8dfe5}.form-two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}.privacy-tip{font-size:10px;color:#928394;line-height:1.65;margin-top:15px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.button-ghost{background:#f6f1ef;color:#897c89}.photo-modal{padding:0;width:min(calc(100vw - 24px),960px);max-height:calc(100svh - 30px);overflow:auto;display:block}.photo-modal:not([open]){display:none}.photo-close{position:absolute;right:14px;top:14px;z-index:2;background:#1d203aaf;color:#fff}.photo-close:hover{background:#30334e}.photo-large-wrap{background:#171f2e;display:flex;align-items:center;justify-content:center;max-height:65svh;min-height:210px}.photo-large{max-width:100%;max-height:65svh;object-fit:contain;display:block}.photo-details{padding:27px 33px 35px}.photo-detail-heading h3{font-size:30px;margin-top:8px}.photo-detail-caption{font:italic 18px/1.7 Georgia,serif;white-space:pre-wrap;margin-top:13px;color:#55485c}.photo-metadata{display:flex;flex-wrap:wrap;gap:9px 20px;margin-top:15px;font-size:11px;color:#948797}.delete-link{border:0;background:transparent;color:#ac667b;padding:7px 0;margin-top:22px;text-decoration:underline;text-underline-offset:4px;font-size:11px}.toast{position:fixed;right:25px;bottom:25px;z-index:500;background:#242a3e;border:1px solid #756172;color:#fff7f6;padding:13px 18px;border-radius:7px;box-shadow:0 15px 40px #080a122e;font-size:12px;max-width:340px}
@media(max-width:900px){.topbar{padding:0 5%}.hero{padding:60px 5%;gap:0}.hero-moon{width:180px;height:180px}.orbit-a{width:300px;height:250px}.orbit-b{width:345px;height:310px}.moments-section{padding:55px 5% 80px}.gallery-grid{gap:16px}.moment-card-content{padding:17px}.moment-caption{font-size:18px}.hero h2{font-size:60px}}
@media(max-width:660px){.login-card{padding:39px 27px 28px}.login-screen{padding-top:30px}.login-footnote{font-size:10px}.topbar{height:72px}.brand{font-size:15px;gap:5px}.brand-moon{font-size:24px}.private-badge{display:none}.header-actions{gap:5px}.text-button{font-size:10px}.hero{padding:55px 6% 35px;display:flex;flex-direction:column;align-items:stretch}.hero-copy{text-align:center}.hero h2{font-size:clamp(51px,13vw,70px);letter-spacing:-2.9px}.hero-copy>p{margin:20px auto 0}.hero-scribble{justify-content:center}.hero-art{min-height:260px;margin-top:5px}.hero-moon{width:165px;height:165px}.orbit-a{width:288px;height:215px}.orbit-b{width:320px;height:260px}.orbit-label{left:10%;bottom:3%}.hero-star.one{left:9%}.moments-section{padding:48px 6% 70px}.section-heading{flex-direction:column;align-items:flex-start;margin-bottom:26px}.section-heading h3{font-size:39px}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.moment-image-wrap,.moment-card:nth-child(5n + 2) .moment-image-wrap,.moment-card:nth-child(5n + 4) .moment-image-wrap{aspect-ratio:.95}.moment-card-content{padding:13px 12px 18px}.moment-caption{font-size:15px}.moment-date{font-size:9px}.moment-location{font-size:10px}.site-footer{align-items:center;flex-direction:column;gap:7px;padding:25px}.site-footer>span:nth-child(2){display:none}.modal{padding:23px}.upload-modal h3{font-size:30px}.photo-details{padding:22px}.photo-detail-heading h3{font-size:25px}}
@media(max-width:390px){.gallery-grid{grid-template-columns:1fr}.moment-image-wrap,.moment-card:nth-child(5n + 2) .moment-image-wrap,.moment-card:nth-child(5n + 4) .moment-image-wrap{aspect-ratio:1.3}.moment-caption{font-size:19px}.login-card h1{font-size:48px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

/* Bulk import: quiet, responsive controls that match the existing upload modal. */
.upload-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.bulk-choose{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;border:1.5px dashed #d1b8c9;border-radius:7px;background:#fbf4f6;color:#60495d;font:18px Georgia,serif;padding:24px 14px;text-align:center;cursor:pointer}
.bulk-choose input{max-width:100%;width:260px;font:12px Arial,sans-serif;color:#78657c;cursor:pointer}
.bulk-selection{font:13px Arial,sans-serif;color:#6b526c;margin:12px 0 4px}
.bulk-hint{font-size:11px;line-height:1.7;color:#958797;margin:12px 0}
.bulk-progress-wrap{margin-top:20px}
.bulk-progress-wrap progress{display:block;width:100%;height:12px;accent-color:#85739c}
.bulk-progress-wrap p{color:#74647b;font-size:12px;line-height:1.5;margin-top:8px;overflow-wrap:anywhere}
@media(max-width:660px){.upload-actions{width:100%}.upload-actions .button{flex:1;min-width:135px}.bulk-choose{padding:20px 10px}}
