:root{font-family:Avenir Next,Segoe UI,system-ui,sans-serif;color:#223229;background:#fbfaf6;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--sage: #9fa88d;--sage-dark: #6f7b63;--ink: #1f2b24;--paper: #fffefa;--line: rgba(126, 136, 105, .42)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}button{cursor:pointer}.page{min-height:100vh;background:radial-gradient(circle at 20% 10%,rgba(159,168,141,.12),transparent 28rem),linear-gradient(180deg,#fffefa,#fbfaf6 52%,#f5f2ea)}.hero{position:relative;display:grid;place-items:center;min-height:210px;padding:44px 20px 28px;overflow:hidden}.overline{margin:0 0 6px;color:#5f6a56;font-family:Bradley Hand,Segoe Print,cursive;font-size:clamp(1.5rem,4vw,2.4rem)}h1{margin:0;color:var(--ink);font-family:Snell Roundhand,Brush Script MT,Segoe Script,cursive;font-size:clamp(4rem,15vw,8.5rem);font-weight:400;line-height:.9;white-space:nowrap}.leaf{position:absolute;width:280px;height:172px;opacity:.26;pointer-events:none;fill:#84977c6b;stroke:#6b7e6385;stroke-width:2}.leafOne{top:12px;right:-38px;transform:rotate(-18deg)}.leafTwo{bottom:-10px;left:-56px;transform:rotate(162deg)}.loginWrap{display:grid;place-items:start center;padding:12px 20px 64px}.loginBox{display:grid;grid-template-columns:auto minmax(0,260px) auto;align-items:center;gap:10px;width:min(100%,470px);padding:12px;border:1px solid var(--line);border-radius:8px;background:#fffefad1;box-shadow:0 18px 50px #353d2d14;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.loginBox input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--ink)}.loginBox button,.primaryButton{border:1px solid var(--sage-dark);border-radius:6px;background:#758169;color:#fffefa;padding:10px 16px}.loginBox button:disabled,.primaryButton:disabled{cursor:default;opacity:.5}.loginBox p{grid-column:1 / -1;margin:0;color:#8d4238;font-size:.92rem;text-align:center}.galleryWrap{width:min(1440px,100%);margin:0 auto;padding:8px 14px 86px}.masonry{column-count:2;column-gap:10px}.photoTile{display:block;width:100%;margin:0 0 10px;padding:0;break-inside:avoid;overflow:hidden;border:1px solid rgba(126,136,105,.24);border-radius:8px;background:#ece8dc;box-shadow:0 8px 26px #2d342814}.photoTile img{display:block;width:100%;height:auto}.photoTile:hover{transform:translateY(-1px)}.sentinel{height:1px}.emptyState,.loader{display:grid;place-items:center;min-height:120px;color:#65715c}.loader svg{animation:spin 1s linear infinite}.fab{position:fixed;right:20px;bottom:20px;z-index:10;display:grid;place-items:center;width:58px;height:58px;border:1px solid rgba(255,255,255,.72);border-radius:50%;background:#758169;color:#fffefa;box-shadow:0 16px 38px #2d34283d}.adminButton{position:fixed;right:20px;bottom:88px;z-index:10;display:grid;place-items:center;width:48px;height:48px;border:1px solid rgba(255,255,255,.72);border-radius:50%;background:#fffefa;color:#5f6a56;box-shadow:0 16px 38px #2d34282e}.adminButton:disabled{cursor:default;opacity:.55}.rebuildPanel{position:fixed;right:18px;bottom:150px;z-index:10;display:grid;gap:8px;width:min(330px,calc(100vw - 36px));padding:12px;border:1px solid var(--line);border-radius:8px;background:#fffefaf2;box-shadow:0 18px 54px #1f2b242e}.rebuildHeader{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:.95rem}.rebuildPanel p{margin:0;color:#65715c;font-size:.86rem}.modalBackdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:18px;background:#222b2452;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.uploadDialog{position:relative;display:grid;gap:14px;width:min(100%,390px);padding:28px 18px 18px;border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 24px 80px #1f2b243d}.dropzone{display:grid;place-items:center;gap:10px;min-height:150px;border:1px dashed var(--sage);border-radius:8px;color:var(--sage-dark);background:#9fa88d14;cursor:pointer}.dropzone input{position:absolute;inline-size:1px;block-size:1px;opacity:0}.softNote{margin:0;color:#65715c;text-align:center}.errorNote{margin:0;color:#8d4238;text-align:center}.progressWrap{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;color:#65715c;font-size:.9rem}.progressMeta{grid-column:1 / -1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progressTrack{height:8px;overflow:hidden;border-radius:999px;background:#9fa88d2e}.progressFill{height:100%;border-radius:inherit;background:#758169;transition:width .18s ease}.iconButton{display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(255,255,255,.48);border-radius:50%;background:#1f2b249e;color:#fffefa;text-decoration:none}.closeButton{position:absolute;top:10px;right:10px}.lightboxBackdrop{background:#151b16b8}.lightbox{position:relative;display:grid;place-items:center;width:100%;height:100%}.lightboxImage{max-width:min(100%,1180px);max-height:88vh;border-radius:8px;box-shadow:0 24px 80px #00000057;object-fit:contain;opacity:0;transform:scale(.992);transition:opacity .18s ease,transform .18s ease}.lightboxImage.isLoaded{opacity:1;transform:scale(1)}.lightbox>.loader{position:absolute;inset:0;z-index:1;min-height:0;color:#fffefa}.lightboxTools{position:fixed;top:18px;right:18px;z-index:2;display:flex;gap:8px}.navButton{position:fixed;top:50%;z-index:2;display:grid;place-items:center;width:48px;height:48px;border:1px solid rgba(255,255,255,.42);border-radius:50%;background:#1f2b248f;color:#fffefa}.navButton:disabled{opacity:.22}.navLeft{left:18px}.navRight{right:18px}@media(min-width:700px){.masonry{column-count:3;column-gap:12px}.photoTile{margin-bottom:12px}}@media(min-width:1100px){.masonry{column-count:5;column-gap:14px}.photoTile{margin-bottom:14px}}@media(max-width:560px){.hero{min-height:178px;padding-top:32px}h1{font-size:clamp(3.1rem,15vw,3.7rem)}.leaf{width:190px;height:118px;opacity:.2}.leafOne{top:-6px;right:-74px}.leafTwo{bottom:-26px;left:-96px}.loginBox{grid-template-columns:auto minmax(0,1fr)}.loginBox button{grid-column:1 / -1;width:100%}.navButton{width:42px;height:42px}.navLeft{left:8px}.navRight{right:8px}}@keyframes spin{to{transform:rotate(360deg)}}
