:root{ --red:#c8202f; --red-dark:#9c1822; --ink:#3a2b2b; --muted:#8a7676; }
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Quicksand',system-ui,Arial,sans-serif;color:var(--ink);overflow-x:hidden;
  background:linear-gradient(180deg,#d7e8f6 0%,#e9f3fb 30%,#f7fbff 65%);min-height:100vh}

.wrap{max-width:480px;margin:0 auto;padding:18px 18px 40px;position:relative;z-index:2}
.topnav{margin-bottom:8px}
.topnav a{color:var(--red-dark);text-decoration:none;font-size:14px;font-weight:600}
.topnav a:hover{text-decoration:underline}
.brand{text-align:center;margin-bottom:14px}
.logo{display:inline-block;width:96px;height:96px;border-radius:50%;overflow:hidden;border:3px solid #fff;
  box-shadow:0 7px 20px rgba(20,40,70,.28)}
.logo.sm{width:74px;height:74px}
.logo img{width:100%;height:100%;object-fit:cover;object-position:50% 56%;transform:scale(1.16)}
.brand h1{font-family:'Mountains of Christmas',cursive;font-weight:700;font-size:34px;color:var(--red);margin-top:8px;line-height:1.05}
.brand .sub,.ghead .sub{font-size:13.5px;color:var(--muted);margin-top:4px}

.card{background:#fff;border-radius:18px;padding:22px 20px;box-shadow:0 8px 24px rgba(60,43,43,.14);margin-top:8px}
.card h2{font-size:18px;color:var(--red-dark)}
.muted-sub{font-size:13px;color:var(--muted);margin:2px 0 10px}
label{display:block;font-size:13px;font-weight:600;margin:14px 0 6px;color:var(--ink)}
input{width:100%;padding:12px 14px;border:1.5px dashed #e3c7c7;border-radius:12px;font-size:16px;font-family:inherit;background:#fffafa}
input:focus{outline:none;border-color:var(--red);border-style:solid}
.note{font-size:12.5px;color:var(--muted);margin-top:12px;line-height:1.5}
.note span{color:#b0a0a0}
.err{color:var(--red);font-weight:600;font-size:13.5px;margin-top:12px;text-align:center}
.btn-red{display:block;width:100%;margin-top:16px;padding:14px;background:var(--red);color:#fff;border:none;
  border-radius:30px;font-size:16px;font-weight:700;font-family:inherit;cursor:pointer;text-align:center}
.btn-red:hover{background:var(--red-dark)}

footer{text-align:center;font-size:12px;color:#a99;margin:22px 0 10px;line-height:1.6}
footer a{color:var(--muted)}

/* gallery */
.gwrap{max-width:900px;margin:0 auto;padding:16px 16px 40px;position:relative;z-index:2}
.gtop{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;font-size:13px}
.gtop .back{color:var(--red-dark);text-decoration:none;font-weight:600}
.gtop .back:hover{text-decoration:underline}
.gtop .who{font-weight:600;color:var(--red-dark)}
.gtop .hi{display:inline-block;background:#fff3d6;color:#b07a18;font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;margin-left:6px}
.gtop .logout{color:var(--muted);text-decoration:none}
.gtop .logout:hover{text-decoration:underline}
.ghead{text-align:center;margin:14px 0 8px}
.ghead h1{font-family:'Mountains of Christmas',cursive;font-weight:700;font-size:30px;color:var(--red);line-height:1}
.centraide{font-size:14px;color:var(--ink);background:#fff6fb;border:1px solid #f0d3e0;border-radius:12px;
  padding:11px 16px;max-width:560px;margin:14px auto 0;box-shadow:0 2px 4px rgba(0,0,0,.06)}
.centraide span{color:var(--muted);font-size:12.5px}
.instruction{font-size:14px;color:var(--red-dark);font-weight:600;background:#fff;border:1px solid #e5b3d2;
  border-radius:12px;padding:11px 16px;max-width:560px;margin:12px auto 0;box-shadow:0 2px 4px rgba(0,0,0,.06)}
.instruction span{color:var(--muted);font-weight:500;font-size:12.5px}

.gallery{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;margin:22px 0}
.photo-card{background:#fff;border:1px solid #f0d3e0;border-radius:14px;box-shadow:0 2px 6px rgba(0,0,0,.08);
  padding:10px;width:260px;transition:transform .2s,box-shadow .2s}
.photo-card:hover{transform:scale(1.03);box-shadow:0 6px 16px rgba(0,0,0,.15)}
.photo-card img{width:100%;height:auto;border-radius:10px;display:block;background:#f3eaea}
.photo-card .dl{display:block;text-align:center;margin-top:8px;color:var(--red);text-decoration:none;font-size:13px;font-weight:600}
.photo-card .dl:hover{text-decoration:underline}
.empty{text-align:center;color:var(--muted);margin:30px 0;line-height:1.6}

.snow{position:fixed;top:-14px;color:#fff;opacity:.9;pointer-events:none;z-index:1;animation:fall linear infinite;text-shadow:0 1px 2px rgba(120,150,180,.3)}
@keyframes fall{to{transform:translateY(108vh)}}
@media (max-width:600px){ .photo-card{width:100%;max-width:340px} }
