:root{--bg:#f8f3f1;--card:#fff;--ink:#2d2527;--muted:#76696d;--accent:#8c5d67;--accent2:#71454f;--line:#eadfdd;--danger:#b3261e}*{box-sizing:border-box}body{margin:0;background:linear-gradient(180deg,#fbf7f5,var(--bg));color:var(--ink);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent2)}h1,h2,p{margin-top:0}.shell{margin:0 auto;padding:32px 18px 64px}.narrow{max-width:720px}.wide{max-width:1280px}.hero{text-align:center;padding:32px 10px 22px}.hero h1{font:700 clamp(2rem,7vw,3.8rem)/1.05 Georgia,serif;margin-bottom:12px}.hero p{color:var(--muted);font-size:1.08rem}.heart{font-size:2rem;color:var(--accent)}.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:24px;box-shadow:0 16px 44px rgba(74,45,52,.08)}.stack{display:grid;gap:18px}label{display:grid;gap:7px;font-weight:650}input[type=text],input[type=password],input:not([type]){width:100%;padding:13px 14px;border:1px solid #d9ccca;border-radius:12px;font:inherit;background:#fff}.upload-box{padding:34px 20px;border:2px dashed #ceb9bd;border-radius:18px;text-align:center;cursor:pointer;background:#fdfafa}.upload-box input{position:absolute;opacity:0;pointer-events:none}.upload-box strong,.upload-box small{display:block}.upload-box small,.muted,.optional{color:var(--muted);font-weight:400}.upload-icon{font-size:2.2rem;color:var(--accent)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #cebfc1;background:#fff;color:var(--ink);padding:12px 18px;border-radius:12px;font-weight:750;text-decoration:none;cursor:pointer}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-size:1.05rem}.btn:hover{filter:brightness(.97)}.btn:disabled{opacity:.55;cursor:wait}.btn.small{padding:8px 12px}.center{text-align:center}.text-link{text-decoration:none;font-weight:700}.preview-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.preview-item{aspect-ratio:1;border-radius:10px;overflow:hidden;background:#eee}.preview-item img{width:100%;height:100%;object-fit:cover}.progress-wrap{display:grid;gap:6px}.hidden{display:none}.progress{height:10px;background:#eee4e3;border-radius:99px;overflow:hidden}.progress span{display:block;height:100%;width:0;background:var(--accent);transition:width .2s}.alert{padding:13px 15px;border-radius:12px;background:#f2eceb}.alert.success{background:#e8f5eb;color:#226530}.alert.error{background:#fdecea;color:#9c1d18}.topbar{min-height:58px;padding:12px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);background:#fff;position:sticky;top:0;z-index:5}.topbar a{text-decoration:none}.gallery-heading,.admin-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}.masonry{columns:4 250px;column-gap:14px}.photo-card{break-inside:avoid;margin:0 0 14px;background:#fff;border-radius:15px;overflow:hidden;box-shadow:0 5px 18px rgba(0,0,0,.07)}.photo-card img{display:block;width:100%;height:auto}.photo-card figcaption{display:grid;padding:12px 14px}.photo-card figcaption span{color:var(--muted)}.actions{display:flex;gap:10px;flex-wrap:wrap}.settings{margin-bottom:20px}.settings-form{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.settings-form label{display:flex;align-items:center;gap:8px}.admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:15px}.admin-photo{background:#fff;border-radius:15px;overflow:hidden;border:1px solid var(--line)}.admin-photo img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.admin-meta{display:grid;gap:5px;padding:12px}.admin-meta small,.admin-meta span{color:var(--muted)}.danger-link{border:0;background:none;color:var(--danger);padding:4px 0;cursor:pointer}.qr{display:inline-block;background:#fff;padding:16px;margin:10px auto 18px}.qr img,.qr canvas{max-width:100%;height:auto!important}.mono{font-family:ui-monospace,monospace;word-break:break-all}@media(max-width:650px){.grid2{grid-template-columns:1fr}.preview-grid{grid-template-columns:repeat(4,1fr)}.card{padding:19px}.admin-head,.gallery-heading{align-items:flex-start;flex-direction:column}.topbar strong{display:none}}@media print{body{background:#fff}.btn,.topbar,a{display:none!important}.card{box-shadow:none;border:0}.qr{margin-top:30px}}
