:root{--ink:#20252b;--muted:#69727d;--paper:#f7f5f1;--card:#fff;--line:#e7e2da;--accent:#9c3c3d;--accent-dark:#78292a}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;line-height:1.5}.topbar{min-height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 5vw;border-bottom:1px solid var(--line);background:rgba(255,255,255,.78);backdrop-filter:blur(12px);position:sticky;top:0;z-index:5}.brand{font-weight:750;font-size:1.1rem;letter-spacing:.08em;color:var(--ink);text-decoration:none}.topbar nav{display:flex;align-items:center;gap:1.1rem}.topbar nav a,.link-button{color:var(--muted);font:inherit;text-decoration:none}.link-button{padding:0;border:0;background:transparent;cursor:pointer}.container{width:min(1120px,90vw);margin:0 auto;padding:52px 0 80px}.auth-card{max-width:430px;margin:8vh auto;background:var(--card);border:1px solid var(--line);padding:42px;border-radius:18px;box-shadow:0 16px 50px rgba(55,40,24,.07)}h1,h2,p{margin-top:0}h1{font-size:clamp(2rem,5vw,3.2rem);letter-spacing:-.04em;margin-bottom:.35em}h2{font-size:1.25rem}.eyebrow{font-size:.72rem;letter-spacing:.18em;font-weight:700;color:var(--accent);margin-bottom:.8rem}.muted{color:var(--muted);font-size:.92rem}.form-stack{display:grid;gap:16px;margin-top:26px}.form-stack label{display:grid;gap:6px;font-size:.9rem;font-weight:600}.form-stack input{font:inherit;padding:11px 12px;border:1px solid #cfc8bd;border-radius:8px;background:#fff}button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;padding:10px 14px;border-radius:8px;cursor:pointer}button:hover{background:var(--accent-dark)}.flash{padding:13px 16px;margin-bottom:20px;border-radius:9px;background:#edf5ef;color:#185d32}.flash.error{background:#fff0ef;color:#9a2d28}.gallery-heading{margin-bottom:32px}.gallery-heading h1{margin-bottom:0}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.photo-card{border:0;border-radius:13px;padding:0;background:#202020;overflow:hidden;text-align:left;position:relative;aspect-ratio:1/1;box-shadow:0 4px 20px rgba(0,0,0,.1)}.photo-card:hover{transform:translateY(-2px);background:#202020}.photo-card img{width:100%;height:100%;object-fit:cover;display:block;opacity:.94;transition:transform .25s,opacity .25s}.photo-card:hover img{transform:scale(1.03);opacity:.75}.photo-card span{position:absolute;left:13px;right:13px;bottom:10px;text-shadow:0 1px 5px #000;font-size:.85rem}.empty{padding:50px;text-align:center;border:1px dashed #cfc8bd;border-radius:16px}.admin-heading{margin-bottom:26px}.admin-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:24px;margin:20px 0}.admin-grid .panel{margin:0}.admin-list{display:grid;gap:10px}.admin-list>div{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}.admin-list span{flex:1}.admin-list form,.table-wrap form,.inline-form{display:inline}.admin-list button,.table-wrap button{padding:5px 9px;font-size:.84rem}.danger{background:#fff;color:#a12425;border-color:#a12425}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--line)}th{color:var(--muted);font-weight:600}dialog{border:0;padding:0;background:transparent;width:min(94vw,1200px);max-height:94vh}.close{position:fixed;right:3vw;top:3vh;border:0;border-radius:50%;width:42px;height:42px;padding:0;font-size:2rem;line-height:1;background:rgba(0,0,0,.55)}dialog img{display:block;max-width:100%;max-height:86vh;margin:auto}dialog p{background:#111;color:#fff;padding:10px 14px;margin:0;text-align:center}dialog::backdrop{background:rgba(0,0,0,.86)}@media(max-width:720px){.container{width:min(92vw,1120px);padding-top:35px}.topbar{padding:0 4vw}.topbar nav{gap:.7rem;font-size:.85rem}.gallery-grid{grid-template-columns:repeat(2,1fr);gap:10px}.admin-grid{grid-template-columns:1fr}.auth-card{padding:28px;margin:3vh auto}.topbar nav a[href*="password"]{display:none}}
