:root{--color-primary: #6B8F71;--color-primary-light: #8FB896;--color-primary-dark: #4A6B50;--color-secondary: #9B8EC4;--color-secondary-light: #B8AED6;--color-secondary-dark: #7B6EA4;--color-accent: #D4C5A9;--color-accent-light: #E8DCC8;--color-accent-dark: #B5A78A;--color-bg: #FAF9F6;--color-bg-warm: #F5F0EB;--color-bg-card: #FFFFFF;--color-text: #2C2C2C;--color-text-light: #6B6B6B;--color-text-muted: #999999;--color-border: #E8E4DF;--color-border-light: #F0ECE7;--color-error: #C45B5B;--color-error-light: #F5E8E8;--color-success: #5BAF7C;--color-success-light: #E8F5EC;--color-warning: #D4A04A;--color-warning-light: #FFF8E8;--font-display: "Cormorant Garamond", "Georgia", serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-size-4xl: 2.5rem;--font-size-5xl: 3.5rem;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.06);--shadow-md: 0 4px 12px rgba(0,0,0,.08);--shadow-lg: 0 8px 30px rgba(0,0,0,.1);--shadow-xl: 0 16px 50px rgba(0,0,0,.12);--shadow-glow: 0 0 30px rgba(107, 143, 113, .15);--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .4s ease;--transition-spring: .6s cubic-bezier(.34, 1.56, .64, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);color:var(--color-text);background-color:var(--color-bg);line-height:1.6;min-height:100vh}h1,h2,h3,h4{font-family:var(--font-display);font-weight:500;line-height:1.2;letter-spacing:-.01em}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-dark)}img,video{max-width:100%;height:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:.7rem 1.5rem;border:none;border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-base);text-decoration:none;line-height:1.4;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-dark));color:#fff;box-shadow:0 2px 8px #6b8f714d}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 16px #6b8f7166}.btn-secondary{background:linear-gradient(135deg,var(--color-secondary),var(--color-secondary-dark));color:#fff;box-shadow:0 2px 8px #9b8ec44d}.btn-secondary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 16px #9b8ec466}.btn-outline{background:transparent;color:var(--color-primary);border:1.5px solid var(--color-primary)}.btn-outline:hover:not(:disabled){background:var(--color-primary);color:#fff}.btn-ghost{background:transparent;color:var(--color-text-light)}.btn-ghost:hover:not(:disabled){background:var(--color-bg-warm);color:var(--color-text)}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover:not(:disabled){background:#a94848;transform:translateY(-1px)}.btn-sm{padding:.4rem .9rem;font-size:var(--font-size-xs)}.btn-lg{padding:.9rem 2rem;font-size:var(--font-size-base)}.btn-icon{width:36px;height:36px;padding:0;border-radius:var(--radius-full)}.card{background:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light);overflow:hidden;transition:all var(--transition-base)}.card:hover{box-shadow:var(--shadow-md)}.card-body{padding:var(--space-lg)}.form-group{margin-bottom:var(--space-lg)}.form-label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text);margin-bottom:var(--space-xs)}.form-input,.form-select,.form-textarea{width:100%;padding:.7rem 1rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--font-size-base);color:var(--color-text);background:#fff;transition:all var(--transition-fast);outline:none}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #6b8f711f}.form-textarea{resize:vertical;min-height:80px}.form-checkbox{display:flex;align-items:center;gap:var(--space-sm);cursor:pointer}.form-checkbox input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-primary)}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-xs)}.form-error{font-size:var(--font-size-xs);color:var(--color-error);margin-top:var(--space-xs)}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 var(--space-lg)}.container-sm{max-width:600px}.container-md{max-width:800px}.page{min-height:100vh;padding-bottom:var(--space-3xl)}.flex{display:flex}.flex-wrap{flex-wrap:wrap}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.guest-page{min-height:100vh;background:var(--color-bg)}.guest-hero{position:relative;text-align:center;padding:var(--space-3xl) var(--space-lg) var(--space-2xl);background:linear-gradient(180deg,rgba(107,143,113,.08) 0%,transparent 100%)}.guest-hero:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--color-primary),var(--color-secondary),var(--color-accent))}.guest-hero .wedding-logo{width:72px;height:72px;border-radius:var(--radius-full);object-fit:cover;margin-bottom:var(--space-md);border:2px solid white;box-shadow:var(--shadow-md)}.guest-hero h1{font-size:var(--font-size-4xl);color:var(--color-text);margin-bottom:var(--space-sm)}.guest-hero .wedding-date{font-size:var(--font-size-lg);color:var(--color-text-light);font-weight:300;letter-spacing:.05em}.guest-hero .welcome-text{max-width:500px;margin:var(--space-lg) auto 0;font-size:var(--font-size-base);color:var(--color-text-light);line-height:1.7}.view-toggle-wrapper{display:flex;justify-content:center;margin-bottom:var(--space-xl)}.view-toggle{display:grid;grid-template-columns:1fr 1fr;position:relative;background:#0000000f;border-radius:999px;padding:4px;min-width:280px;max-width:340px;width:100%}.view-toggle-blob{position:absolute;top:4px;left:4px;width:calc(50% - 4px);height:calc(100% - 8px);background:var(--color-primary, #7a9e7e);border-radius:999px;transition:transform .35s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #00000026;z-index:0}.view-toggle-btn{position:relative;z-index:1;border:none;background:transparent;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);font-weight:600;font-family:inherit;cursor:pointer;border-radius:999px;color:var(--color-text, #333);transition:color .3s ease;white-space:nowrap}.view-toggle-btn.active{color:#fff}.view-toggle-btn:hover:not(.active){color:var(--color-primary, #7a9e7e)}.upload-zone{border:2px dashed var(--color-border);border-radius:var(--radius-xl);padding:var(--space-3xl) var(--space-xl);text-align:center;cursor:pointer;transition:all var(--transition-base);background:#ffffff80;position:relative;overflow:hidden}.upload-zone:hover,.upload-zone.dragover{border-color:var(--color-primary);background:#6b8f710a;transform:scale(1.01)}.upload-zone.dragover{box-shadow:var(--shadow-glow)}.upload-zone-icon{font-size:3rem;margin-bottom:var(--space-md);opacity:.6}.upload-zone h3{font-size:var(--font-size-xl);color:var(--color-text);margin-bottom:var(--space-sm)}.upload-zone p{color:var(--color-text-muted);font-size:var(--font-size-sm)}.upload-actions{display:flex;gap:var(--space-md);justify-content:center;margin-top:var(--space-lg);flex-wrap:wrap}.upload-progress{margin-top:var(--space-lg)}.progress-item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border-light)}.progress-item:last-child{border-bottom:none}.progress-thumb{width:48px;height:48px;border-radius:var(--radius-sm);object-fit:cover;background:var(--color-bg-warm)}.progress-info{flex:1;min-width:0}.progress-name{font-size:var(--font-size-sm);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-bar-container{width:100%;height:4px;background:var(--color-border-light);border-radius:var(--radius-full);margin-top:var(--space-xs);overflow:hidden}.progress-bar{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-secondary));border-radius:var(--radius-full);transition:width var(--transition-base)}.progress-status{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap}.progress-status.success{color:var(--color-success)}.progress-status.error{color:var(--color-error)}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--space-sm)}.gallery-item{position:relative;aspect-ratio:1;border-radius:var(--radius-md);overflow:hidden;cursor:pointer;transition:all var(--transition-base)}.gallery-item:hover{transform:scale(1.03);box-shadow:var(--shadow-lg)}.gallery-item img,.gallery-item video{width:100%;height:100%;object-fit:cover}.gallery-item .favorite-badge{position:absolute;top:var(--space-sm);left:var(--space-sm);width:28px;height:28px;background:#ffffffe6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:14px;box-shadow:var(--shadow-sm)}.gallery-item .video-badge{position:absolute;bottom:var(--space-sm);right:var(--space-sm);background:#0009;color:#fff;padding:2px 8px;border-radius:var(--radius-sm);font-size:var(--font-size-xs);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.gallery-item .select-overlay{position:absolute;top:var(--space-sm);right:var(--space-sm);width:24px;height:24px;border-radius:var(--radius-full);border:2px solid white;background:#0003;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.gallery-item .select-overlay.selected{background:var(--color-primary);border-color:var(--color-primary)}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn var(--transition-base)}.lightbox-content{position:relative;max-width:90vw;max-height:90vh}.lightbox-content img,.lightbox-content video{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:var(--radius-md)}.lightbox-close{position:absolute;top:-40px;right:0;width:36px;height:36px;background:#ffffff26;border:none;border-radius:var(--radius-full);color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast)}.lightbox-close:hover{background:#ffffff40}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;background:#ffffff1f;border:none;border-radius:var(--radius-full);color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast)}.lightbox-nav:hover{background:#ffffff40}.lightbox-nav.prev{left:-56px}.lightbox-nav.next{right:-56px}.lightbox-actions{position:absolute;bottom:-48px;left:50%;transform:translate(-50%);display:flex;gap:var(--space-md)}.lightbox-actions button{background:#ffffff1f;border:none;color:#fff;padding:6px 16px;border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}.lightbox-actions button:hover{background:#ffffff40}.admin-layout{display:flex;min-height:100vh}.admin-sidebar{width:260px;background:linear-gradient(180deg,#2c2c2c,#1a1a1a);color:#fff;padding:var(--space-lg);position:fixed;top:0;left:0;bottom:0;z-index:100;overflow-y:auto}.admin-sidebar .logo{font-family:var(--font-display);font-size:var(--font-size-xl);font-weight:500;color:#fff;margin-bottom:var(--space-2xl);padding-bottom:var(--space-md);border-bottom:1px solid rgba(255,255,255,.1)}.admin-sidebar .nav-item{display:flex;align-items:center;gap:var(--space-sm);padding:.6rem .8rem;margin-bottom:2px;border-radius:var(--radius-md);color:#ffffffa6;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);text-decoration:none}.admin-sidebar .nav-item:hover,.admin-sidebar .nav-item.active{background:#ffffff14;color:#fff}.admin-sidebar .nav-item.active{background:#6b8f714d}.admin-main{flex:1;margin-left:260px;padding:var(--space-xl);min-height:100vh}.mobile-menu-btn{display:none;position:fixed;top:var(--space-md);left:var(--space-md);z-index:300;width:40px;height:40px;padding:0;font-size:1.2rem;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);cursor:pointer;align-items:center;justify-content:center}.admin-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border-light)}.admin-header h1{font-size:var(--font-size-2xl)}.pin-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:500;animation:fadeIn var(--transition-base)}.pin-card{background:#fff;border-radius:var(--radius-xl);padding:var(--space-2xl);text-align:center;max-width:380px;width:90%;box-shadow:var(--shadow-xl);animation:slideUp var(--transition-slow)}.pin-card h2{font-size:var(--font-size-2xl);margin-bottom:var(--space-sm)}.pin-card p{color:var(--color-text-light);margin-bottom:var(--space-lg)}.pin-inputs{display:flex;gap:var(--space-sm);justify-content:center;margin-bottom:var(--space-lg)}.pin-inputs input{width:52px;height:60px;text-align:center;font-size:var(--font-size-2xl);font-family:var(--font-display);border:2px solid var(--color-border);border-radius:var(--radius-md);outline:none;transition:all var(--transition-fast)}.pin-inputs input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #6b8f7126}.stat-card{background:#fff;border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light)}.stat-value{font-family:var(--font-body);font-size:var(--font-size-3xl);font-weight:700;color:var(--color-primary);line-height:1}.stat-label{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--space-xs)}.quota-bar{width:100%;height:8px;background:var(--color-border-light);border-radius:var(--radius-full);overflow:hidden;margin-top:var(--space-sm)}.quota-bar-fill{height:100%;border-radius:var(--radius-full);background:linear-gradient(90deg,var(--color-primary),var(--color-secondary));transition:width var(--transition-slow)}.quota-bar-fill.warning{background:linear-gradient(90deg,var(--color-warning),var(--color-error))}.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:500}.badge-success{background:var(--color-success-light);color:var(--color-success)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning)}.badge-error{background:var(--color-error-light);color:var(--color-error)}.badge-neutral{background:var(--color-bg-warm);color:var(--color-text-light)}.toast{position:fixed;bottom:var(--space-xl);left:50%;transform:translate(-50%);background:var(--color-text);color:#fff;padding:.8rem 1.5rem;border-radius:var(--radius-lg);font-size:var(--font-size-sm);box-shadow:var(--shadow-lg);z-index:9999;animation:slideUp var(--transition-spring);max-width:90vw}.toast.success{background:var(--color-success)}.toast.error{background:var(--color-error)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:900;animation:fadeIn var(--transition-base)}.modal{background:#fff;border-radius:var(--radius-xl);padding:var(--space-xl);max-width:560px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-xl);animation:slideUp var(--transition-slow)}.modal h2{font-size:var(--font-size-xl);margin-bottom:var(--space-lg)}.modal-actions{display:flex;gap:var(--space-sm);justify-content:flex-end;margin-top:var(--space-xl)}.table{width:100%;border-collapse:collapse}.table th{text-align:left;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--color-border)}.table td{padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);border-bottom:1px solid var(--color-border-light)}.table tbody tr:hover{background:var(--color-bg-warm)}.consent-banner{background:var(--color-bg-warm);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);margin:var(--space-lg) 0;font-size:var(--font-size-sm);color:var(--color-text-light);line-height:1.6}.consent-banner strong{color:var(--color-text);display:block;margin-bottom:var(--space-xs)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-fadeIn{animation:fadeIn var(--transition-base)}.animate-slideUp{animation:slideUp var(--transition-slow)}.spinner{width:32px;height:32px;border:3px solid var(--color-border-light);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-page{display:flex;align-items:center;justify-content:center;min-height:100vh;flex-direction:column;gap:var(--space-md)}.empty-state{text-align:center;padding:var(--space-3xl);color:var(--color-text-muted)}.empty-state-icon{font-size:3rem;margin-bottom:var(--space-md);opacity:.4}@media(max-width:768px){.admin-sidebar{position:fixed;transform:translate(-100%);transition:transform var(--transition-base);z-index:200}.admin-sidebar.open{transform:translate(0)}.admin-main{margin-left:0;padding:var(--space-md);padding-top:calc(var(--space-md) + 56px)}.mobile-menu-btn{display:flex}.admin-header h1{font-size:var(--font-size-xl)}.guest-hero h1{font-size:var(--font-size-3xl)}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:4px}.lightbox-nav.prev{left:var(--space-sm)}.lightbox-nav.next{right:var(--space-sm)}.table{display:block;overflow-x:auto}.modal{width:95%;margin:var(--space-md)}.pin-inputs input{width:44px;height:52px;font-size:var(--font-size-xl)}}@media(max-width:480px){.gallery-grid{grid-template-columns:repeat(3,1fr);gap:3px}.upload-zone{padding:var(--space-xl) var(--space-md)}.container{padding:0 var(--space-md)}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.color-preview{width:32px;height:32px;border-radius:var(--radius-full);border:2px solid var(--color-border);cursor:pointer}.color-picker-group{display:flex;align-items:center;gap:var(--space-sm)}.color-picker-group input[type=color]{width:40px;height:40px;padding:0;border:2px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;background:none}.success-screen{text-align:center;padding:var(--space-3xl) var(--space-lg);animation:slideUp var(--transition-spring)}.success-icon{font-size:4rem;margin-bottom:var(--space-lg);animation:pulse 2s infinite}.success-screen h2{font-size:var(--font-size-3xl);color:var(--color-primary);margin-bottom:var(--space-md)}.success-screen p{color:var(--color-text-light);font-size:var(--font-size-lg);max-width:400px;margin:0 auto var(--space-xl)}
