:root{--paper:#fcf5f8;--surface:#fffafb;--ink:#3c3042;--muted:#725c6e;--accent:#e6c2cf;--line:#e5ccd8;--radius:14px}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 'Trebuchet MS',Arial,sans-serif;-webkit-font-smoothing:antialiased}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{font:400 30px/1.2 Georgia,'Times New Roman',serif}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 #8d6688;outline-offset:3px}
.button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border:1px solid transparent;border-radius:var(--radius);font-size:14px;font-weight:700;text-decoration:none;white-space:nowrap;transition:background .15s,transform .15s}.button:active:not(:disabled){transform:translateY(1px)}.button-primary{background:var(--accent);color:#302b40}.button-primary:hover{background:#dab8bc}.button-outline{background:transparent;border-color:#a4869b;color:#62485f}.button-outline:hover,.button-ghost:hover{background:#f1e7ec}.button-ghost{background:#f2ecee;color:#564b5b}.text-button,.subtle-link{min-height:44px;padding:10px 8px;border:0;background:transparent;color:#68566d;font-size:14px}.text-button:hover,.subtle-link:hover{text-decoration:underline;text-underline-offset:4px}
.login-screen{min-height:100dvh;display:grid;place-items:center;padding:24px}.login-card{width:min(100%,390px);padding:32px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.login-card h1{font-size:34px;letter-spacing:-1px}.login-form .field-label{margin-top:16px}.login-form .button{width:100%;margin-top:20px}.login-card .subtle-link{display:block;margin:12px auto 0}
.site-shell{min-height:100dvh}.topbar{position:sticky;top:0;z-index:20;min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px max(24px,calc((100vw - 1320px)/2));border-bottom:1px solid var(--line);background:var(--surface)}.brand{display:flex;align-items:center;gap:8px;font:22px Georgia,serif;text-decoration:none;letter-spacing:-.5px}.brand-moon{color:#876a91;font-size:26px}.header-actions{display:flex}.moments-section{max-width:1368px;margin:0 auto;padding:28px 24px 40px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.upload-actions{display:flex;gap:8px;flex-wrap:wrap}.gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;align-items:start}.moment-card{display:block;min-width:0;padding:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface);color:var(--ink);text-align:left}.moment-card:hover{border-color:#bfa4b8}.moment-image-wrap{position:relative;display:block;overflow:hidden;background:#ead7e1}.moment-image{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}.moment-image-badge{position:absolute;right:10px;bottom:10px;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#172033d9;color:#fff;pointer-events:none}.moment-card-content{display:block;padding:10px 12px}.moment-date{display:block;font-size:12px;color:var(--muted)}.moment-caption{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:14px;line-height:1.45;overflow-wrap:anywhere}.moment-date+.moment-caption{margin-top:4px}.moment-location{display:block;font-size:12px;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gallery-status,.form-error{padding:12px 14px;border-radius:var(--radius);font-size:14px;line-height:1.5;background:#fae8ec;color:#8a2943;overflow-wrap:anywhere}.gallery-status{margin-bottom:16px;background:#f0e8ed;color:#58435a}.form-error{margin-top:12px}.empty-state{text-align:center;padding:56px 16px;border:1px dashed #cbb6c4;border-radius:var(--radius)}.empty-state h4{font-size:26px}.empty-state p{margin-top:8px;color:var(--muted)}
.modal{width:min(calc(100vw - 32px),520px);max-height:calc(100dvh - 32px);padding:24px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);overflow:auto;box-shadow:0 20px 70px #17203340}.modal:not([open]){display:none}.modal::backdrop{background:#172033b8}.modal-header{display:flex;align-items:center;justify-content:flex-end;gap:16px}.upload-modal h3{font-size:28px;margin:0 0 18px}.close-button{display:grid;place-items:center;flex:none;width:44px;height:44px;border:0;border-radius:var(--radius);background:#f1e7ec;color:#544158;font-size:30px;line-height:1}.close-button:hover{background:#e8d8e2}
.field-label{display:block;margin-top:16px;font-size:14px;font-weight:700}.optional{font-size:12px;color:var(--muted);font-weight:400}.field-label input,.field-label textarea{display:block;width:100%;min-width:0;margin-top:7px;padding:10px 12px;border:1px solid #a4869b;border-radius:var(--radius);background:#fff;color:var(--ink);font-size:16px;line-height:1.5}.field-label input{min-height:44px}.field-label textarea{resize:vertical}.field-label input:focus,.field-label textarea:focus{outline:2px solid #8d6688;outline-offset:1px}.field-label input::placeholder{color:var(--muted)}.form-two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-two-col>*{min-width:0}.drop-zone{position:relative;display:flex;align-items:center;justify-content:center;min-height:136px;border:1px dashed #b89bb0;border-radius:var(--radius);background:#f8f0f3;text-align:center;overflow:hidden;cursor:pointer}.drop-zone:hover,.drop-zone.is-dragging{border-color:#876a91;background:#f1e6ee}#dropPrompt strong{font-size:15px}#dropPrompt p{margin-top:4px;color:var(--muted);font-size:13px}.upload-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#e7dfe5}.privacy-tip,.bulk-hint{font-size:12px;color:#6e5d70;line-height:1.6;margin:12px 0}.bulk-choose{display:flex;flex-direction:column;align-items:center;gap:12px;padding:18px 12px;border:1px dashed #b89bb0;border-radius:var(--radius);background:#f8f0f3;font-weight:700;text-align:center;cursor:pointer}.bulk-choose input{max-width:100%;font-size:13px;color:#594a5d}.bulk-selection{font-size:13px;margin-top:10px;color:var(--muted)}.bulk-capture{display:flex;align-items:flex-start;gap:8px}.bulk-capture input{flex:none;accent-color:#876a91;margin-top:3px;width:17px;height:17px}.bulk-progress-wrap{margin-top:16px}.bulk-progress-wrap progress{display:block;width:100%;height:12px;accent-color:#876a91}.bulk-progress-wrap p{font-size:13px;line-height:1.5;margin-top:8px;overflow-wrap:anywhere}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}
.photo-modal{padding:0;width:min(calc(100vw - 24px),1100px)}.photo-close{position:absolute;right:12px;top:12px;z-index:2;background:#172033e8;color:#fff}.photo-close:hover{background:#293247}.photo-large-wrap{background:#172033;display:flex;align-items:center;justify-content:center;min-height:160px}.photo-large{display:block;max-width:100%;max-height:72dvh;object-fit:contain}.photo-details{padding:16px 20px}.photo-detail-caption{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}.photo-metadata{display:flex;flex-wrap:wrap;gap:4px 16px;color:var(--muted);font-size:13px}.photo-metadata:not(:empty){margin-top:8px}.photo-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}.photo-detail-caption.hidden+.photo-metadata:empty+.photo-actions{margin-top:0}.delete-link{min-height:44px;padding:10px;border:0;background:transparent;color:#94344e;font-size:13px}.delete-link:hover{text-decoration:underline}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);max-width:min(420px,calc(100vw - 32px));z-index:500;padding:12px 16px;border-radius:var(--radius);background:#293247;color:#fff;font-size:14px;box-shadow:0 8px 30px #17203330}
.modal-header{margin-bottom:16px}.modal-header>h3{margin:0 auto 0 0}
@media(max-width:1000px){.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:660px){.topbar{min-height:60px;padding:8px 16px;gap:8px}.brand{font-size:18px;gap:5px}.brand-moon{font-size:23px}.text-button{font-size:13px;padding:10px 4px}.moments-section{padding:20px 14px 28px}.section-heading{align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:16px}.section-heading h2{font-size:27px}.upload-actions{margin-left:auto}.upload-actions .button{padding:8px 12px;font-size:13px}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.moment-card-content{padding:8px 10px}.moment-caption{font-size:13px}.modal{padding:20px;width:calc(100vw - 24px)}.upload-modal h3{font-size:26px}.photo-modal{padding:0}.photo-details{padding:14px 16px}.login-screen{padding:16px}.login-card{padding:26px 24px}}
@media(max-width:380px){.form-two-col{grid-template-columns:1fr;gap:0}.section-heading{display:block}.upload-actions{margin-top:12px}.brand{font-size:16px}}
.header-actions{align-items:center;gap:12px}.header-actions a{text-decoration:none}.header-actions a:hover{text-decoration:underline}.journal-description{font-size:13px;color:var(--muted);margin-top:4px}
.activity-notice,.activity-description{font-size:13px;color:var(--muted);line-height:1.6}.activity-notice{margin-top:24px}.activity-description{margin:10px 0 18px}.activity-toolbar{display:flex;align-items:center;gap:16px;margin:16px 0}.activity-toolbar .activity-description{margin:0}.activity-table-wrap{width:100%;overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.activity-table{border-collapse:collapse;width:100%;min-width:660px;text-align:left;font-size:14px}.activity-table th,.activity-table td{padding:12px 16px;vertical-align:top}.activity-table th{background:#f1e7ec;font-weight:700}.activity-table tbody tr+tr{border-top:1px solid var(--line)}.activity-table code{display:block;font:12px/1.6 monospace;color:var(--muted);overflow-wrap:anywhere}.activity-table td:last-child{max-width:240px;overflow-wrap:anywhere}#olderActivity{margin-top:16px}
@media(max-width:660px){.header-actions{gap:8px}.topbar .brand{font-size:16px}.topbar .text-button{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

/* Restore the original rose journal character while retaining natural media proportions. */
.login-screen{background:radial-gradient(ellipse at 20% 10%,#f6e9f0 0,transparent 55%),radial-gradient(ellipse at 85% 85%,#faf0f5 0,transparent 50%),var(--paper)}
.login-card{border-radius:24px;box-shadow:0 18px 60px #70445414}
.login-mark{display:block;width:44px;height:44px;margin:0 auto 20px;padding:8px;border-radius:50%;background:#f0dce7}
.login-card h1{text-align:center;font-size:38px;line-height:1.18;letter-spacing:-.8px}.login-title-tail{display:block}
.login-form{margin-top:24px}.login-form .button,.login-form input{min-height:48px}
.field-label input,.field-label textarea{font-weight:400}
.moment-card{align-self:start;box-shadow:0 5px 18px #70445408}.gallery-grid.is-masonry{grid-auto-rows:1px}
@media(max-width:660px){.login-card h1{font-size:34px}.login-card{padding:28px 24px}.login-screen{padding:20px}.moment-card-content{padding:10px}}
