:root{--color-bg: #faf5eb;--color-surface: #fffdf8;--color-surface-alt: #f3ead9;--color-text: #3f3a30;--color-muted: #8a8271;--color-sage: #8ea176;--color-sage-dark: #6f8459;--color-champagne: #f0dfc0;--color-champagne-dark: #d9be8c;--color-gold: #b8944f;--color-gold-light: #e4cf9a;--color-border: #e6dbc2;--color-error: #a34a3a;--color-success: #6f8459;--font-heading: "Playfair Display", "Iowan Old Style", serif;--font-script: "Parisienne", cursive;--font-accent: "Cormorant Garamond", "Playfair Display", serif;--font-body: "Lato", "Segoe UI", sans-serif;--radius: 14px;--radius-sm: 8px;--max-width: 480px;--shadow-soft: 0 4px 18px rgba(63, 58, 48, .08)}*{box-sizing:border-box}body{margin:0;font-family:var(--font-body);background:var(--color-bg);background-image:radial-gradient(circle at top,#fffdf8 0%,var(--color-bg) 60%);color:var(--color-text)}.app{min-height:100vh;display:flex;flex-direction:column}h1,h2{font-family:var(--font-heading);font-weight:600;letter-spacing:.01em;margin:0 0 8px}h1{font-size:2.1rem}h2{font-size:1.3rem;color:var(--color-sage-dark)}p{line-height:1.5}.floral-divider{display:block;width:160px;height:20px;margin:14px auto 22px;color:var(--color-gold)}.login-page,.rsvp-page,.gallery-page,.info-page,.admin-login{max-width:var(--max-width);margin:0 auto;padding:32px 20px 80px}.admin-page{max-width:900px;margin:0 auto;padding:24px 16px 80px}.login-page,.info-page{text-align:center}.login-page h1{font-family:var(--font-script);font-weight:400;font-size:3rem;color:var(--color-sage-dark)}.rsvp-page h1{color:var(--color-sage-dark)}.login-form,.rsvp-form,.admin-create-form{display:flex;flex-direction:column;gap:14px;margin-top:8px;text-align:left}.login-form label,.rsvp-form label{font-family:var(--font-accent);font-size:1rem;font-style:italic;color:var(--color-muted)}input,textarea,select,button{font:inherit;padding:11px 14px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-gold);box-shadow:0 0 0 3px #b8944f2e}textarea{min-height:80px;resize:vertical}button{background:var(--color-sage);color:#fff;border:1px solid var(--color-sage);cursor:pointer;font-weight:600;letter-spacing:.02em;border-radius:999px;padding:12px 20px}button:disabled{opacity:.55;cursor:not-allowed}button:hover:not(:disabled){background:var(--color-sage-dark);border-color:var(--color-sage-dark)}fieldset{border:1px solid var(--color-border);border-radius:var(--radius);padding:14px;background:var(--color-surface)}legend{font-family:var(--font-accent);font-style:italic;padding:0 6px;color:var(--color-sage-dark)}.checkbox-label{display:flex;align-items:center;gap:8px}.checkbox-label input{width:auto;accent-color:var(--color-sage)}.form-error{color:var(--color-error)}.form-success{color:var(--color-success)}.countdown{display:flex;justify-content:center;gap:18px;margin:16px 0;font-family:var(--font-accent);font-style:italic;font-size:1.15rem;color:var(--color-sage-dark)}.countdown span{padding:4px 10px;border-bottom:1px solid var(--color-gold-light)}.navbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;background:var(--color-surface);border-bottom:1px solid var(--color-champagne-dark);position:sticky;top:0;z-index:10;flex-wrap:wrap}.navbar-name{font-family:var(--font-heading);font-size:1.1rem;color:var(--color-sage-dark)}.navbar-links{display:flex;gap:18px}.navbar-links a{color:var(--color-text);text-decoration:none;font-family:var(--font-accent);font-style:italic;font-size:1.05rem;padding-bottom:2px;border-bottom:2px solid transparent}.navbar-links a.active{color:var(--color-gold);border-bottom-color:var(--color-gold)}.navbar-logout{background:none;color:var(--color-muted);padding:4px 10px;border:none;border-radius:var(--radius-sm);font-size:.85rem}.navbar-logout:hover:not(:disabled){background:var(--color-surface-alt);color:var(--color-text)}.upload-box{border:1px dashed var(--color-gold-light);border-radius:var(--radius);padding:20px;text-align:center;margin-bottom:20px;background:var(--color-surface)}.upload-button{display:inline-block;background:var(--color-gold);color:#fff;padding:11px 20px;border-radius:999px;cursor:pointer;font-weight:600}.upload-hint{color:var(--color-muted);font-size:.9rem;margin-bottom:0}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.photo-tile{position:relative;display:block;aspect-ratio:1;overflow:hidden;border-radius:var(--radius);background:#000;box-shadow:var(--shadow-soft)}.photo-tile img,.photo-tile video{width:100%;height:100%;object-fit:cover}.photo-meta{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(63,58,48,.65),transparent);color:#fff;font-size:.7rem;padding:10px 8px 6px}.info-page section{text-align:left;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:18px 20px;margin-bottom:16px;box-shadow:var(--shadow-soft)}.placeholder-hint{color:var(--color-muted);font-style:italic;font-size:.85rem}.admin-page{display:flex;flex-direction:column;gap:20px}.admin-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.admin-header h1{margin-bottom:2px}.admin-subtitle{margin:0;color:var(--color-muted);font-family:var(--font-accent);font-style:italic}.admin-logout{background:none;border:1px solid var(--color-border);color:var(--color-muted);border-radius:999px;padding:8px 16px;font-size:.85rem;font-weight:400}.admin-logout:hover:not(:disabled){background:var(--color-surface-alt);color:var(--color-text)}.admin-page section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow-soft)}.admin-page section h2{margin-top:0}.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.admin-stats>div{background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:14px;text-align:center}.admin-stats strong{display:block;font-family:var(--font-heading);font-size:1.5rem;color:var(--color-sage-dark)}.admin-field{display:flex;flex-direction:column;gap:6px}.admin-field label{font-family:var(--font-accent);font-style:italic;font-size:.9rem;color:var(--color-muted)}.admin-create-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px 16px;align-items:end;margin-top:4px}.admin-create-form .checkbox-label{padding-bottom:11px}.admin-create-form>button{grid-column:1 / -1;width:fit-content}.admin-table-wrap{overflow-x:auto;border-radius:var(--radius-sm);border:1px solid var(--color-border);margin-top:4px}.admin-table{width:100%;border-collapse:collapse;font-size:.85rem}.admin-table th,.admin-table td{border-bottom:1px solid var(--color-border);padding:10px 12px;text-align:left;white-space:nowrap}.admin-table tbody tr:hover{background:var(--color-surface-alt)}.admin-table th{background:var(--color-surface-alt);font-family:var(--font-heading);font-weight:600;color:var(--color-sage-dark)}.code-badge{font-weight:700;letter-spacing:.04em;background:var(--color-champagne);color:var(--color-sage-dark);padding:3px 10px;border-radius:999px;font-size:.8rem}.status-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.78rem;font-weight:600}.status-badge.pending{background:var(--color-surface-alt);color:var(--color-muted)}.status-badge.attending{background:#8ea17633;color:var(--color-sage-dark)}.status-badge.declined{background:#a34a3a24;color:var(--color-error)}.btn-delete{background:none;border:1px solid var(--color-border);color:var(--color-error);padding:6px 14px;font-size:.8rem;font-weight:400;border-radius:999px}.btn-delete:hover:not(:disabled){background:#a34a3a14;border-color:var(--color-error)}.admin-empty{color:var(--color-muted);font-style:italic}.song-list{list-style:none;margin:4px 0 0;padding:0}.song-list li{padding:10px 2px;border-bottom:1px solid var(--color-border)}.song-list li:last-child{border-bottom:none}.song-list li:before{content:"♪ ";color:var(--color-gold)}.admin-video-upload{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:4px}
