:root{--color-background: #fdf2f8;--color-foreground: #831843;--color-primary: #db2777;--color-accent: #a16207;--color-border: #fbcfe8;--font-display: "Great Vibes", cursive;--font-body: "Cormorant Infant", Georgia, serif;--space-2: 8px;--space-3: 16px;--space-4: 24px;--space-6: 48px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--color-background);color:var(--color-foreground);font-family:var(--font-body);font-size:18px;line-height:1.5;-webkit-font-smoothing:antialiased}.invite{max-width:560px;min-height:100dvh;margin:0 auto;padding:var(--space-6) var(--space-4);display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-6);animation:fade-in .6s ease-out both}.countdown{width:100%}.countdown__title{margin:0 0 var(--space-4);font-family:var(--font-display);font-weight:400;font-size:clamp(2.75rem,9vw,4rem);line-height:1.1;color:var(--color-primary)}.countdown__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2)}.unit{display:flex;flex-direction:column;align-items:center;padding:var(--space-3) var(--space-2);background:#fff;border:1px solid var(--color-border);border-radius:14px;box-shadow:0 6px 18px #8318430f}.unit__value{font-size:clamp(1.75rem,7vw,2.5rem);font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--color-foreground)}.unit__label{margin-top:4px;font-size:.95rem;letter-spacing:.04em;color:var(--color-accent)}.countdown__reached{margin:0;font-family:var(--font-display);font-size:clamp(2rem,8vw,3rem);color:var(--color-primary)}.when{margin-top:var(--space-4)}.when__date{margin:0;font-size:1.25rem;font-weight:600;letter-spacing:.02em;color:var(--color-foreground)}.when__venue{margin:var(--space-2) 0 0;font-size:1.15rem;color:var(--color-primary)}.when__address{margin:4px 0 0;font-size:1rem;color:var(--color-accent)}.couple__names{margin:0;font-family:var(--font-display);font-size:clamp(2.5rem,10vw,3.75rem);line-height:1.15;color:var(--color-foreground)}.couple__amp{color:var(--color-primary)}.couple__sub{margin:var(--space-2) 0 0;font-size:1.15rem;color:var(--color-accent)}.photos{width:100%;display:grid;grid-template-columns:1fr;gap:var(--space-3)}.photos__img{width:100%;height:auto;aspect-ratio:4 / 5;object-fit:cover;border-radius:16px;border:1px solid var(--color-border);box-shadow:0 8px 24px #8318431a}@media(min-width:768px){.photos{grid-template-columns:1fr 1fr}}.guest__line{margin:0;font-family:var(--font-display);font-size:clamp(2rem,8vw,3rem);line-height:1.2;color:var(--color-primary)}.admin{max-width:480px;margin:0 auto;padding:var(--space-6) var(--space-4);display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-4)}.admin__title{margin:0;font-family:var(--font-display);font-weight:400;font-size:clamp(2.25rem,8vw,3rem);color:var(--color-primary)}.admin__field{width:100%;display:flex;flex-direction:column;gap:var(--space-2);text-align:left}.admin__label{font-size:1rem;color:var(--color-accent)}.admin__input{width:100%;padding:12px 14px;font-family:var(--font-body);font-size:1.1rem;color:var(--color-foreground);background:#fff;border:1px solid var(--color-border);border-radius:12px}.admin__input:focus{outline:2px solid var(--color-primary);outline-offset:1px}.admin__result{width:100%;display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.admin__link{word-break:break-all;font-size:.95rem;color:var(--color-primary)}.admin__qr{width:100%;max-width:320px;height:auto;border:1px solid var(--color-border);border-radius:16px;background:#fff}.admin__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2)}.admin__btn{padding:12px 20px;font-family:var(--font-body);font-size:1.05rem;color:var(--color-foreground);background:#fff;border:1px solid var(--color-border);border-radius:999px;cursor:pointer}.admin__btn--primary{color:#fff;background:var(--color-primary);border-color:var(--color-primary)}.admin__hint{margin:0;color:var(--color-accent)}@keyframes fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.invite{animation:none}}
