:root{--bg:#f5f2ed;--card:#fff;--text:#282622;--muted:#77716a;--line:#ddd6cd;--accent:#6b5845;--danger:#a33d32}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input{font:inherit}[hidden]{display:none!important}.no-scroll{overflow:hidden}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);background:var(--card);padding:42px;border-radius:20px;box-shadow:0 10px 35px #00000012}.brand-mark{font-size:42px;text-align:center}.login-card h1{text-align:center;margin:8px 0}.muted{text-align:center;color:var(--muted);margin:0 0 30px}.login-card label{display:block;font-size:14px;font-weight:650;margin:15px 0}.login-card input{width:100%;margin-top:7px;padding:13px;border:1px solid var(--line);border-radius:10px;outline:none}.login-card input:focus{border-color:var(--accent)}.primary{width:100%;padding:13px;border:0;border-radius:10px;background:var(--accent);color:white;font-weight:700;cursor:pointer;margin-top:10px}.primary:disabled{opacity:.6}.error{color:var(--danger);min-height:20px;font-size:14px}.topbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:16px max(18px,calc((100vw - 1100px)/2));background:#f5f2edf0;backdrop-filter:blur(10px);border-bottom:1px solid #0000000b}.user-label{color:var(--muted);font-size:13px;margin-left:10px}.top-actions{display:flex;align-items:center;gap:14px}.view-all-button{border:0;background:var(--accent);color:white;padding:9px 14px;border-radius:999px;cursor:pointer;font-weight:650;font-size:14px}.view-all-button:disabled{opacity:.6;cursor:wait}.secondary-button{border:1px solid var(--line);background:var(--card);color:var(--accent);padding:8px 12px;border-radius:999px;cursor:pointer;font-weight:650;font-size:14px}.secondary-button:disabled{opacity:.6;cursor:wait}.text-button{border:0;background:none;color:var(--accent);cursor:pointer;font-weight:650}.gallery{width:min(1100px,100%);margin:auto;padding:15px 18px 60px}.day{padding:16px 0 30px}.day h2{position:sticky;top:61px;z-index:10;width:max-content;max-width:100%;padding:8px 12px;margin:0 0 12px;background:#f5f2eddd;backdrop-filter:blur(8px);border-radius:10px;font-size:17px}.slot-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.slot{aspect-ratio:1;border:0;padding:0;background:#e7e1d9;border-radius:12px;overflow:hidden;cursor:pointer;position:relative}.slot img{width:100%;height:100%;object-fit:cover;display:block}.slot.empty{border:2px dashed #c8bfb5;background:transparent;color:#8a8178}.slot.empty span{font-size:38px;font-weight:250;line-height:1}.loading{text-align:center;padding:35px;color:var(--muted)}.sentinel{height:1px}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:#292622;color:white;padding:11px 16px;border-radius:999px;opacity:0;pointer-events:none;transition:.2s;z-index:100}.toast.show{opacity:1;transform:translate(-50%,0)}.lightbox{position:fixed;inset:0;z-index:100;background:#000e;display:flex;align-items:center;justify-content:center;padding:30px}.lightbox figure{margin:0;max-width:min(92vw,1300px);max-height:92vh;text-align:center}.lightbox img{display:block;max-width:92vw;max-height:85vh;object-fit:contain}.lightbox figcaption{color:white;padding:10px}.lb-close,.lb-prev,.lb-next{position:absolute;border:0;background:#ffffff1a;color:white;width:48px;height:48px;border-radius:50%;font-size:34px;line-height:1;cursor:pointer}.lb-close{top:20px;right:20px}.lb-prev{left:20px}.lb-next{right:20px}@media(max-width:700px){.topbar{gap:10px}.brand-area{min-width:0}.brand-area strong{font-size:14px}.user-label{display:none}.top-actions{gap:8px}.view-all-button,.secondary-button{padding:8px 10px;font-size:12px}.slot-grid{gap:6px}.gallery{padding-left:10px;padding-right:10px}.day h2{top:58px;font-size:15px}.slot{border-radius:8px}.lightbox{padding:10px}.lb-prev,.lb-next{bottom:25px;top:auto}.lb-prev{left:25%;transform:translateX(-50%)}.lb-next{right:25%;transform:translateX(50%)}}

/* Lightbox state: hidden means genuinely removed from the visual layer. */
.lightbox[hidden]{display:none!important;visibility:hidden!important;pointer-events:none!important}
.lightbox:not([hidden]){display:flex;visibility:visible;pointer-events:auto}
.lb-close,.lb-prev,.lb-next{z-index:5;pointer-events:auto}

/* Gallery image actions */
.slot[role="button"]{cursor:pointer}
.slot.is-uploading{display:flex;align-items:center;justify-content:center;cursor:wait;background:#e7e1d9}
.uploading-label{font-size:12px;font-weight:750;letter-spacing:.08em;color:var(--accent)}
.delete-image{position:absolute;top:7px;right:7px;width:30px;height:30px;padding:0;border:0;border-radius:50%;background:#000b;color:#fff;font-size:22px;line-height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:3;opacity:.9;box-shadow:0 1px 4px #0006}
.delete-image:hover{background:var(--danger);opacity:1}
.delete-image:disabled{opacity:.45;cursor:wait}
.slot.is-deleting img{opacity:.35;filter:grayscale(.4)}
@media(max-width:700px){.delete-image{top:5px;right:5px;width:26px;height:26px;font-size:19px;line-height:24px}}
