:root{--color-primary:#2c3e50;--color-primary-light:#34495e;--color-secondary:#7f8c8d;--color-accent:#8b7355;--color-accent-light:#a08b70;--color-bg:#faf9f7;--color-bg-warm:#f5f3ef;--color-bg-card:#fff;--color-bg-dark:#2c3e50;--color-text:#2c3e50;--color-text-light:#5a6c7d;--color-text-muted:#7f8c8d;--color-text-inverse:#faf9f7;--color-border:#e0ddd8;--color-border-light:#eae7e2;--shadow-sm:0 1px 3px #2c3e5014;--shadow-md:0 4px 12px #2c3e501a;--shadow-lg:0 8px 24px #2c3e501f;--font-serif:"Cormorant Garamond",Georgia,serif;--font-sans:"Source Sans 3",-apple-system,BlinkMacSystemFont,sans-serif;--spacing-xs:0.25rem;--spacing-sm:0.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--spacing-3xl:4rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--transition-fast:150ms ease;--transition-normal:250ms ease;--transition-slow:400ms ease}*{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#faf9f7;background-color:var(--color-bg);color:#2c3e50;color:var(--color-text);font-family:Source Sans\ 3,-apple-system,BlinkMacSystemFont,sans-serif;font-family:var(--font-sans);font-weight:400;line-height:1.6}h1,h2,h3,h4,h5,h6{color:#2c3e50;color:var(--color-primary);font-family:Cormorant Garamond,Georgia,serif;font-family:var(--font-serif);font-weight:500;line-height:1.3}h1{font-size:2.5rem;font-weight:600}h2{font-size:2rem}h3{font-size:1.5rem}p{margin-bottom:1rem;margin-bottom:var(--spacing-md)}a{color:#8b7355;color:var(--color-accent);text-decoration:none;transition:color .15s ease;transition:color var(--transition-fast)}a:hover{color:#a08b70;color:var(--color-accent-light)}button{background:none;border:none;cursor:pointer}button,input,select,textarea{font-family:Source Sans\ 3,-apple-system,BlinkMacSystemFont,sans-serif;font-family:var(--font-sans)}input,select,textarea{font-size:1rem}img{height:auto;max-width:100%}.container{margin:0 auto;max-width:1200px;padding:0 1.5rem;padding:0 var(--spacing-lg)}.section{padding:4rem 0;padding:var(--spacing-3xl) 0}.text-center{text-align:center}.text-muted{color:#7f8c8d;color:var(--color-text-muted)}:focus-visible{outline:2px solid #8b7355;outline:2px solid var(--color-accent);outline-offset:2px}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#f5f3ef;background:var(--color-bg-warm)}::-webkit-scrollbar-thumb{background:#7f8c8d;background:var(--color-secondary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#34495e;background:var(--color-primary-light)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.fade-in{animation:fadeIn ease .4s ease forwards;animation:fadeIn var(--transition-slow) ease forwards}.fade-in-up{animation:fadeInUp .6s ease forwards}.loading{animation:pulse 1.5s ease-in-out infinite}@media (max-width:768px){html{font-size:15px}h1{font-size:2rem}h2{font-size:1.75rem}.container{padding:0 1rem;padding:0 var(--spacing-md)}.section{padding:3rem 0;padding:var(--spacing-2xl) 0}}@media (max-width:480px){html{font-size:14px}h1{font-size:1.75rem}}.navbar{background-color:var(--color-bg-card);border-bottom:1px solid var(--color-border-light);box-shadow:var(--shadow-sm);left:0;position:fixed;right:0;top:0;z-index:1000}.navbar-container{align-items:center;display:flex;height:80px;justify-content:space-between;margin:0 auto;max-width:1200px;padding:0 var(--spacing-lg)}.navbar-brand{display:flex;flex-direction:column;text-decoration:none}.brand-text{color:var(--color-primary);font-family:var(--font-serif);font-size:1.5rem;font-weight:600;line-height:1.2}.brand-subtitle{color:var(--color-text-muted);font-family:var(--font-sans);font-size:.75rem;font-weight:400;letter-spacing:.05em;text-transform:uppercase}.navbar-menu{display:flex;gap:var(--spacing-xl)}.navbar-link{color:var(--color-text-light);font-family:var(--font-sans);font-size:.9375rem;font-weight:500;padding:var(--spacing-sm) 0;position:relative;text-decoration:none;transition:color var(--transition-fast)}.navbar-link:after{background-color:var(--color-accent);bottom:0;content:"";height:2px;left:0;position:absolute;transition:width var(--transition-normal);width:0}.navbar-link:hover{color:var(--color-primary)}.navbar-link.active:after,.navbar-link:hover:after{width:100%}.navbar-link.active{color:var(--color-primary)}.navbar-toggle{background:none;border:none;cursor:pointer;display:none;flex-direction:column;gap:5px;height:32px;justify-content:center;padding:4px;width:32px}.toggle-bar{background-color:var(--color-primary);border-radius:1px;display:block;height:2px;transition:all var(--transition-fast);width:24px}.navbar-toggle.active .toggle-bar:first-child{transform:translateY(7px) rotate(45deg)}.navbar-toggle.active .toggle-bar:nth-child(2){opacity:0}.navbar-toggle.active .toggle-bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}@media (max-width:768px){.navbar-container{height:70px}.navbar-toggle{display:flex}.navbar-menu{background-color:var(--color-bg-card);border-top:1px solid var(--color-border-light);box-shadow:var(--shadow-md);flex-direction:column;gap:0;left:0;max-height:0;overflow:hidden;position:absolute;right:0;top:100%;transition:max-height var(--transition-normal)}.navbar-menu.open{max-height:300px}.navbar-link{border-bottom:1px solid var(--color-border-light);padding:var(--spacing-md) var(--spacing-lg)}.navbar-link:after{display:none}.navbar-link.active{background-color:var(--color-bg-warm)}}.calendar-button-container{text-align:center}.calendar-button{align-items:center;background-color:var(--color-accent);border:none;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);color:#fff;cursor:pointer;display:inline-flex;font-family:var(--font-sans);font-size:1rem;font-weight:500;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-xl);transition:all var(--transition-fast)}.calendar-button:hover:not(:disabled){background-color:var(--color-accent-light);box-shadow:var(--shadow-md);transform:translateY(-1px)}.calendar-button:active:not(:disabled){transform:translateY(0)}.calendar-button:disabled{cursor:not-allowed;opacity:.7}.calendar-icon{height:20px;width:20px}.calendar-hint{color:var(--color-text-muted);font-size:.8125rem;margin-top:var(--spacing-sm)}.hero-section{background:linear-gradient(135deg,#2c3e50,#34495e 50%,#3d566e);display:flex;justify-content:center;min-height:70vh;overflow:hidden}.hero-container,.hero-section{align-items:center;position:relative}.hero-container{grid-gap:var(--spacing-2xl);display:grid;gap:var(--spacing-2xl);grid-template-columns:1fr 1fr;max-width:1200px;padding:var(--spacing-2xl);width:100%;z-index:1}.hero-image{align-items:center;display:flex;justify-content:center}.hero-image img{aspect-ratio:1/1;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);height:auto;max-width:400px;object-fit:cover;width:100%}.hero-section:before{background:radial-gradient(circle at 20% 50%,#8b73551a 0,#0000 50%),radial-gradient(circle at 80% 50%,#8b735514 0,#0000 50%);content:""}.hero-overlay,.hero-section:before{bottom:0;left:0;position:absolute;right:0;top:0}.hero-overlay{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z' fill='%23fff' fill-opacity='.02' fill-rule='evenodd'/%3E%3C/svg%3E");opacity:.5}.hero-content{animation:fadeInUp .8s ease;padding:var(--spacing-2xl);position:relative;text-align:center}.hero-subtitle{color:#ffffffb3;font-family:var(--font-sans);font-size:.875rem;font-weight:500;letter-spacing:.2em;margin-bottom:var(--spacing-md);text-transform:uppercase}.hero-title{color:#fff;font-family:var(--font-serif);font-size:4rem;font-weight:600;text-shadow:0 2px 4px #0003}.hero-divider,.hero-title{margin-bottom:var(--spacing-lg)}.hero-divider{align-items:center;display:flex;gap:var(--spacing-md);justify-content:center}.divider-line{background:linear-gradient(90deg,#0000,#ffffff80,#0000);height:3px;width:60px}.divider-symbol{color:var(--color-accent-light);font-size:.875rem}.hero-tagline{color:#ffffffd9;font-family:var(--font-serif);font-size:1.5rem;font-style:italic;margin:0}.event-section{background-color:var(--color-bg)}.event-card{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);margin:0 auto;max-width:950px;padding:var(--spacing-2xl);position:relative}.section-title{margin-bottom:var(--spacing-2xl);position:relative;text-align:center}.section-title:after{background-color:var(--color-accent);content:"";display:block;height:2px;margin:var(--spacing-md) auto 0;width:60px}.event-content-wrapper{align-items:start;display:grid;grid-template-columns:40% 60%;margin-bottom:var(--spacing-2xl)}.event-details{display:flex;flex-direction:column;gap:var(--spacing-xl)}.event-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;padding:var(--spacing-md);width:100%}.event-image img{border-radius:var(--radius-md);box-shadow:var(--shadow-md);display:block;height:100%;max-height:100%;max-width:100%;object-fit:cover;width:100%}.event-detail{align-items:flex-start;display:flex;gap:var(--spacing-lg)}.detail-icon{align-items:center;background-color:var(--color-bg-warm);border-radius:50%;color:var(--color-accent);display:flex;flex-shrink:0;height:48px;justify-content:center;width:48px}.detail-icon svg{height:24px;width:24px}.detail-content h3{color:#8b7355;font-family:var(--font-sans);font-size:.75rem;font-weight:600;letter-spacing:.1em;margin-bottom:var(--spacing-xs);text-transform:uppercase}.detail-content p{color:var(--color-text);font-size:1.125rem;margin:0}.detail-secondary{color:var(--color-text-light)!important;font-size:.9375rem!important;margin-top:var(--spacing-xs)!important}.maps-link{color:var(--color-accent);display:inline-block;font-size:.875rem;margin-top:var(--spacing-sm);text-decoration:none}.maps-link:hover{text-decoration:underline}.event-actions{align-items:center;display:flex;flex-direction:column;gap:var(--spacing-md);margin-top:var(--spacing-lg)}.rsvp-button{align-items:center;background-color:initial;border:2px solid var(--color-accent);border-radius:var(--radius-md);color:var(--color-accent);display:inline-flex;font-family:var(--font-sans);font-size:1rem;font-weight:500;justify-content:center;padding:var(--spacing-md) var(--spacing-2xl);text-decoration:none;transition:all var(--transition-fast)}.rsvp-button:hover{background-color:var(--color-accent);color:#fff}.schedule-section{background-color:var(--color-bg-warm)}.schedule-timeline{margin:0 auto;max-width:600px}.timeline-item{display:flex;gap:var(--spacing-lg);padding-bottom:var(--spacing-xl)}.timeline-item:last-child{padding-bottom:0}.timeline-marker{align-items:center;display:flex;flex-direction:column;flex-shrink:0}.marker-dot{background-color:var(--color-accent);border:3px solid var(--color-bg-warm);border-radius:50%;box-shadow:0 0 0 2px var(--color-accent);height:16px;width:16px}.marker-line{background-color:var(--color-border);flex:1 1;margin-top:var(--spacing-sm);width:2px}.timeline-content{padding-top:0}.timeline-time{color:var(--color-primary);font-family:var(--font-serif);font-size:1.25rem;margin-bottom:var(--spacing-xs)}.timeline-description{color:var(--color-text-light);font-size:1rem;line-height:1.6;margin:0}.memories-section{background-color:var(--color-bg);overflow:hidden}.memories-gallery{align-items:center;display:flex;gap:var(--spacing-lg);justify-content:center;margin:0 auto;max-width:1000px}.memory-item{aspect-ratio:4/5;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex:1 1;max-width:280px;overflow:hidden;position:relative;transition:transform var(--transition-normal),box-shadow var(--transition-normal)}.memory-item:after{background:linear-gradient(180deg,#0000 60%,#0000001a);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.memory-item img{filter:saturate(.9);height:100%;object-fit:cover;transition:filter var(--transition-normal),transform var(--transition-slow);width:100%}.memory-item:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.memory-item:hover img{filter:saturate(1);transform:scale(1.02)}.memory-item.featured{align-items:center;aspect-ratio:auto;display:flex;justify-content:center;max-width:420px;transform:scale(1.02);z-index:1}.memory-item.featured img{height:auto;max-height:400px;max-width:100%;object-fit:contain;width:auto}.memory-item.featured:hover{transform:scale(1.02) translateY(-4px)}.obituary-section{background-color:var(--color-bg)}.obituary-card{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin:0 auto;max-width:950px;padding:var(--spacing-2xl)}.obituary-quote{margin-bottom:0!important;text-indent:0!important}.obituary-content{color:var(--color-text);font-family:var(--font-serif);font-size:1.125rem;line-height:1.8}.obituary-content p{margin-bottom:var(--spacing-lg);text-indent:2em}.obituary-content p:first-child{text-indent:0}.obituary-content p:first-child:first-letter{color:var(--color-accent);float:left;font-size:3rem;font-weight:600;line-height:1;margin-right:var(--spacing-sm)}.obituary-content p:last-child{margin-bottom:0}.schedule-list{list-style:none;margin:var(--spacing-sm) 0 0 0;padding:0}.schedule-list li{color:var(--color-text);font-size:1rem}.schedule-list li:last-child{border-bottom:none;padding-bottom:0}.schedule-list li strong{color:var(--color-primary)}.schedule-detail .detail-content{flex:1 1}.rsvp-section{background-color:var(--color-bg-warm)}.rsvp-card{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin:0 auto;max-width:950px;padding:var(--spacing-2xl)}.section-subtitle{color:var(--color-text-light);margin-bottom:var(--spacing-xl);margin-top:calc(var(--spacing-lg)*-1);text-align:center}.rsvp-form{gap:var(--spacing-md)}.rsvp-form,.rsvp-form .form-group{display:flex;flex-direction:column}.rsvp-form .form-group{gap:var(--spacing-xs)}.rsvp-form label{color:var(--color-text);font-size:.9375rem;font-weight:500}.rsvp-form .form-input,.rsvp-form .form-select{background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-sans);font-size:1rem;padding:var(--spacing-md);transition:border-color var(--transition-fast)}.rsvp-form .form-input:focus,.rsvp-form .form-select:focus{border-color:var(--color-accent);outline:none}.rsvp-form .checkbox-label{align-items:flex-start;cursor:pointer;display:flex;font-weight:400;gap:var(--spacing-sm)}.rsvp-form .checkbox-label input[type=checkbox]{accent-color:var(--color-accent);cursor:pointer;flex-shrink:0;height:18px;margin-top:2px;width:18px}.rsvp-form .checkbox-text{line-height:1.4}.rsvp-form .guest-group{background-color:var(--color-bg-warm);border-radius:var(--radius-md);padding:var(--spacing-md)}.rsvp-form .form-hint{color:var(--color-text-muted);font-size:.875rem;margin-top:var(--spacing-sm)}.rsvp-form .checking-text{color:var(--color-text-muted);font-size:.8125rem;font-style:italic}.rsvp-form .existing-text{color:var(--color-accent);font-size:.8125rem}.rsvp-form .subscribed-badge{color:var(--color-accent);font-weight:500}.rsvp-form .btn-block{background-color:var(--color-accent);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-family:var(--font-sans);font-size:1rem;font-weight:500;margin-top:var(--spacing-md);padding:var(--spacing-md) var(--spacing-xl);transition:background-color var(--transition-fast);width:100%}.rsvp-form .btn-block:hover:not(:disabled){background-color:var(--color-accent-light)}.rsvp-form .btn-block:disabled{cursor:not-allowed;opacity:.7}.rsvp-message{border-radius:var(--radius-md);margin-top:var(--spacing-lg);padding:var(--spacing-md);text-align:center}.rsvp-message.success{background-color:#e8f5e9;border:1px solid #c8e6c9;color:#2e7d32}.rsvp-message.error{background-color:#ffebee;border:1px solid #ffcdd2;color:#c62828}.rsvp-message.info{background-color:#e3f2fd;border:1px solid #bbdefb;color:#1565c0}.donations-section{background-color:var(--color-bg-warm)}.donations-card{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin:0 auto;max-width:950px;padding:var(--spacing-2xl)}.donations-intro{color:var(--color-text-light);line-height:1.7;margin-bottom:var(--spacing-2xl);margin-left:auto;margin-right:auto;max-width:700px;text-align:center}.donation-options{grid-gap:var(--spacing-xl);display:grid;gap:var(--spacing-xl);grid-template-columns:repeat(2,1fr)}.donation-option{word-wrap:break-word;background-color:var(--color-bg-warm);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-width:0;overflow-wrap:break-word;padding:var(--spacing-xl)}.donation-option h3{color:var(--color-primary);font-family:var(--font-serif);font-size:1.25rem;margin-bottom:var(--spacing-sm)}.donation-description{color:var(--color-text-light);font-size:.9375rem;margin-bottom:var(--spacing-lg)}.donation-methods{grid-gap:var(--spacing-lg);display:grid;gap:var(--spacing-lg);grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.donation-method{background-color:var(--color-bg-card);border-radius:var(--radius-md);padding:var(--spacing-md)}.donation-method h4{color:var(--color-text-muted);font-family:var(--font-sans);font-size:.8125rem;font-weight:600;letter-spacing:.05em;margin-bottom:var(--spacing-sm);text-transform:uppercase}.donation-method p{color:var(--color-text);font-size:.9375rem;line-height:1.6;margin:0}.donation-method ul{list-style:none;margin:0;padding:0}.donation-method li{color:var(--color-text);font-size:.9375rem;line-height:1.5;padding:var(--spacing-xs) 0}.donation-method a{color:var(--color-accent);overflow-wrap:break-word;text-decoration:none;word-break:break-word}.donation-method a:hover{text-decoration:underline}.donation-note{border-top:1px solid var(--color-border);color:var(--color-text-muted);font-size:.875rem;margin-top:var(--spacing-md);padding-top:var(--spacing-md)}.condolences-cta-section{background-color:var(--color-bg-warm)}.condolences-cta{margin:0 auto;max-width:950px;text-align:center}.cta-text{color:var(--color-text-light);line-height:1.7;margin-bottom:var(--spacing-xl)}.btn-lg,.cta-text{font-size:1.125rem}.btn-lg{padding:var(--spacing-md) var(--spacing-2xl)}@media (max-width:1024px){.donation-options{grid-template-columns:1fr}}@media (max-width:768px){.hero-section{min-height:60vh}.hero-container{gap:var(--spacing-xl);grid-template-columns:1fr;text-align:center}.hero-image{order:-1}.hero-image img{max-width:300px}.hero-content{text-align:center}.hero-title{font-size:2.5rem}.hero-tagline{font-size:1.25rem}.event-card,.obituary-card{padding:var(--spacing-xl)}.event-content-wrapper{gap:var(--spacing-xl);grid-template-columns:1fr}.event-image{max-height:300px;order:-1}.event-detail{align-items:center;flex-direction:column;text-align:center}.event-detail,.timeline-item{gap:var(--spacing-md)}.obituary-content{font-size:1rem}.obituary-content p:first-child:first-letter{font-size:2.5rem}.memories-gallery{flex-direction:column;gap:var(--spacing-md)}.memory-item{aspect-ratio:16/10;max-width:100%;width:100%}.memory-item.featured{aspect-ratio:auto;max-width:100%;transform:none}.memory-item.featured img{max-height:320px}.memory-item.featured:hover{transform:translateY(-4px)}.memory-item.portrait{aspect-ratio:3/4;max-width:100%;width:100%}.memory-item.portrait img{height:100%;object-fit:cover;width:100%}.schedule-list li{font-size:.9375rem}.rsvp-card{padding:var(--spacing-xl)}.section-subtitle{font-size:.9375rem}.donations-card{padding:var(--spacing-xl)}.donations-intro{font-size:.9375rem}.donation-option{padding:var(--spacing-md)}.donation-option h3{font-size:1.125rem}.donation-methods{grid-template-columns:1fr}}.photo-upload{width:100%}.upload-dropzone{background-color:var(--color-bg);border:2px dashed var(--color-border);border-radius:var(--radius-md);cursor:pointer;padding:var(--spacing-md);text-align:center;transition:all var(--transition-fast)}.upload-dropzone:hover:not(.disabled){background-color:#8b73550d;border-color:var(--color-accent)}.upload-dropzone.disabled{cursor:not-allowed;opacity:.7}.upload-dropzone.at-max{background-color:#8b735514;border-color:var(--color-accent);border-style:solid;cursor:default}.upload-dropzone.at-max:hover{background-color:#8b735514;border-color:var(--color-accent)}.upload-dropzone.at-max .upload-icon.check-icon{color:var(--color-accent)}.upload-dropzone.at-max .dropzone-text{color:var(--color-accent);font-weight:500}.file-input{display:none}.dropzone-content{align-items:center;display:flex;flex-direction:column;gap:var(--spacing-sm)}.upload-icon{color:var(--color-text-muted);height:36px;margin-bottom:var(--spacing-xs);width:36px}.dropzone-text{color:var(--color-text);font-size:1rem;margin:0}.dropzone-hint{color:var(--color-text-muted);font-size:.8125rem;margin:0}.preview-grid{grid-gap:var(--spacing-md);display:grid;gap:var(--spacing-md);grid-template-columns:repeat(auto-fill,minmax(100px,1fr));margin-top:var(--spacing-md)}.preview-item{aspect-ratio:1;background-color:var(--color-bg-warm);border-radius:var(--radius-md);overflow:hidden;position:relative}.preview-image{height:100%;object-fit:cover;width:100%}.upload-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.progress-ring{height:40px;width:40px}.progress-svg{height:100%;width:100%}.remove-btn{align-items:center;background-color:#0009;border:none;border-radius:50%;cursor:pointer;display:flex;height:24px;justify-content:center;opacity:0;padding:4px;position:absolute;right:4px;top:4px;transition:opacity var(--transition-fast);width:24px}.preview-item:hover .remove-btn{opacity:1}.remove-btn svg{color:#fff;height:14px;width:14px}.remove-btn:hover{background-color:#c62828e6}@media (max-width:480px){.preview-grid{grid-template-columns:repeat(3,1fr)}}.condolence-form-container{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);display:flex;flex-direction:column;max-height:100%;overflow-y:auto;padding:var(--spacing-xl)}.condolence-form-container h2{flex-shrink:0;font-size:1.5rem;margin-bottom:var(--spacing-md)}.condolence-form{display:flex;flex:1 1;flex-direction:column;min-height:0}.condolence-form .form-group{margin-bottom:var(--spacing-md)}.condolence-form label{color:var(--color-text);display:block;font-weight:500;margin-bottom:var(--spacing-sm)}.condolence-form .optional{color:var(--color-text-muted);font-size:.8125rem;font-weight:400}.condolence-form .form-input,.condolence-form .form-textarea{background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-sans);font-size:1rem;padding:var(--spacing-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);width:100%}.condolence-form .form-input:focus,.condolence-form .form-textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #8b73551a;outline:none}.condolence-form .form-input::placeholder,.condolence-form .form-textarea::placeholder{color:var(--color-text-muted)}.condolence-form .form-textarea{line-height:1.6;min-height:80px;resize:vertical}.condolence-form .form-input:disabled,.condolence-form .form-textarea:disabled{background-color:var(--color-bg-warm);cursor:not-allowed}.condolence-form .checkbox-group{margin-bottom:var(--spacing-md)}.condolence-form .checkbox-label{align-items:flex-start;cursor:pointer;display:flex;font-weight:400;gap:var(--spacing-sm)}.condolence-form .checkbox-label input[type=checkbox]{accent-color:var(--color-accent);cursor:pointer;flex-shrink:0;height:18px;margin-top:2px;width:18px}.condolence-form .checkbox-text{display:flex;flex-direction:column;gap:2px}.condolence-form .checkbox-hint{color:var(--color-text-muted);font-size:.8125rem;font-weight:400}.form-message{font-size:.9375rem;margin-bottom:var(--spacing-lg);padding:var(--spacing-md)}.form-message.error{border:1px solid #ffcdd2}.form-message.success{border:1px solid #c8e6c9}.submit-btn{background-color:var(--color-accent);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;flex-shrink:0;font-family:var(--font-sans);font-size:1rem;font-weight:500;margin-top:auto;padding:var(--spacing-md) var(--spacing-xl);transition:all var(--transition-fast);width:100%}.submit-btn:hover:not(:disabled){background-color:var(--color-accent-light)}.submit-btn:disabled{cursor:not-allowed;opacity:.7}.photo-upload-disabled{background-color:var(--color-bg-warm);border:2px dashed var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);padding:var(--spacing-xl);text-align:center}.photo-upload-disabled p{margin:0}.photo-upload-disabled .hint{font-size:.875rem;margin-top:var(--spacing-sm)}@media (max-width:768px){.condolence-form-container{padding:var(--spacing-xl)}}.condolence-list{display:flex;flex-direction:column;gap:var(--spacing-lg)}.condolence-card{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--spacing-lg);transition:box-shadow var(--transition-fast)}.condolence-card:hover{box-shadow:var(--shadow-md)}.condolence-header{align-items:center;display:flex;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.condolence-avatar{align-items:center;background-color:var(--color-accent);border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-family:var(--font-serif);font-size:1.25rem;font-weight:600;height:44px;justify-content:center;width:44px}.condolence-meta{flex:1 1;min-width:0}.condolence-name{color:var(--color-text);font-family:var(--font-sans);font-size:1rem;font-weight:600;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.condolence-avatar.anonymous{background-color:var(--color-text-muted)}.condolence-name.anonymous{color:var(--color-text-muted);font-style:italic}.condolence-date{color:var(--color-text-muted);font-size:.8125rem}.condolence-message{color:var(--color-text);font-size:.9375rem;line-height:1.7;margin:0;white-space:pre-wrap}.condolence-photos{grid-gap:var(--spacing-sm);display:grid;gap:var(--spacing-sm);margin-top:var(--spacing-md)}.condolence-photos.photos-1{grid-template-columns:1fr}.condolence-photos.photos-2,.condolence-photos.photos-3{grid-template-columns:1fr 1fr}.condolence-photos.photos-3{grid-template-rows:1fr 1fr}.condolence-photos.photos-3 .photo-thumbnail:first-child{grid-row:span 2}.condolence-photos.photos-4{grid-template-columns:1fr 1fr}.photo-thumbnail{aspect-ratio:1;background-color:var(--color-bg-warm);border-radius:var(--radius-md);cursor:pointer;overflow:hidden;position:relative}.photo-thumbnail img{height:100%;object-fit:cover;transition:transform var(--transition-normal);width:100%}.photo-thumbnail:hover img{transform:scale(1.05)}.more-photos-overlay{background-color:#0009;color:#fff;font-size:1.5rem;font-weight:600;position:absolute}.image-modal,.more-photos-overlay{align-items:center;bottom:0;display:flex;justify-content:center;left:0;right:0;top:0}.image-modal{background-color:#000000e6;cursor:pointer;padding:var(--spacing-xl);position:fixed;z-index:2000}.image-modal img{border-radius:var(--radius-md);cursor:default;max-height:90vh;max-width:100%;object-fit:contain}.modal-close{align-items:center;background-color:#ffffff1a;border:none;border-radius:50%;cursor:pointer;display:flex;height:44px;justify-content:center;position:absolute;right:var(--spacing-lg);top:var(--spacing-lg);transition:background-color var(--transition-fast);width:44px}.modal-close:hover{background-color:#fff3}.modal-close svg{color:#fff;height:24px;width:24px}.gallery-nav{align-items:center;background-color:#ffffff26;border:none;border-radius:50%;cursor:pointer;display:flex;height:48px;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);transition:background-color var(--transition-fast);width:48px;z-index:10}.gallery-nav:hover{background-color:#ffffff4d}.gallery-nav svg{color:#fff;height:28px;width:28px}.gallery-prev{left:var(--spacing-lg)}.gallery-next{right:var(--spacing-lg)}.gallery-counter{color:#fff;font-size:.9375rem;font-weight:500;padding:.5rem 1rem;top:var(--spacing-lg)}.gallery-counter,.gallery-thumbnails{background-color:#0009;border-radius:var(--radius-md);left:50%;position:absolute;transform:translateX(-50%)}.gallery-thumbnails{bottom:var(--spacing-lg);display:flex;gap:.5rem;max-width:90vw;overflow-x:auto;padding:.5rem}.gallery-thumb{background:none;border:2px solid #0000;border-radius:var(--radius-sm);cursor:pointer;flex-shrink:0;height:60px;opacity:.6;overflow:hidden;padding:0;transition:border-color var(--transition-fast),opacity var(--transition-fast);width:60px}.gallery-thumb:hover{opacity:.9}.gallery-thumb.active{border-color:#fff;opacity:1}.gallery-thumb img{height:100%;object-fit:cover;width:100%}@media (max-width:768px){.gallery-nav{height:40px;width:40px}.gallery-nav svg{height:24px;width:24px}.gallery-prev{left:var(--spacing-sm)}.gallery-next{right:var(--spacing-sm)}.gallery-thumb{height:50px;width:50px}.image-modal img{max-height:70vh}}@media (max-width:480px){.condolence-photos.photos-3 .photo-thumbnail:first-child{grid-row:span 1}.condolence-photos.photos-3{grid-template-columns:repeat(3,1fr);grid-template-rows:1fr}.gallery-thumb{height:40px;width:40px}.gallery-counter{font-size:.8125rem;padding:.375rem .75rem}}.condolences-page{background:linear-gradient(180deg,var(--color-bg) 0,var(--color-bg-warm) 100%);min-height:calc(100vh - 80px);padding:var(--spacing-2xl) 0 var(--spacing-3xl)}.condolences-page .page-header{margin:0 auto var(--spacing-2xl);max-width:900px;text-align:center}.condolences-page .page-header h1{margin-bottom:var(--spacing-md)}.condolences-page .page-subtitle{color:var(--color-text-light);font-size:1.125rem;margin:0}.condolences-content{grid-gap:var(--spacing-2xl);display:grid;gap:var(--spacing-2xl);grid-template-columns:1fr 1fr;margin:0 auto;max-width:1100px}.form-column{display:flex;flex-direction:column;height:-webkit-fit-content;height:fit-content;max-height:calc(100vh - 120px);position:-webkit-sticky;position:sticky;top:100px}.list-column{min-height:400px}.list-title{border-bottom:2px solid var(--color-border-light);font-size:1.5rem;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md)}.loading-state{color:var(--color-text-muted);padding:var(--spacing-2xl);text-align:center}.loading-state .loading-spinner{animation:spin 1s linear infinite;border:3px solid var(--color-border);border-radius:50%;border-top-color:var(--color-accent);height:40px;margin:0 auto var(--spacing-md);width:40px}.empty-state{background-color:var(--color-bg-card);border-radius:var(--radius-lg);color:var(--color-text-muted);padding:var(--spacing-2xl);text-align:center}.load-more-btn{background-color:initial;border:2px solid var(--color-accent);border-radius:var(--radius-md);color:var(--color-accent);cursor:pointer;display:block;font-family:var(--font-sans);font-size:.9375rem;font-weight:500;margin-top:var(--spacing-lg);padding:var(--spacing-md);transition:all var(--transition-fast);width:100%}.load-more-btn:hover:not(:disabled){background-color:var(--color-accent);color:#fff}.load-more-btn:disabled{cursor:not-allowed;opacity:.6}@media (max-width:900px){.condolences-content{grid-template-columns:1fr}.form-column{position:static}}.gallery-layout{align-items:center;background-color:#0a0a0a;display:flex;height:100vh;justify-content:center;position:relative;width:100vw}.fullscreen-image-layout .fullscreen-image{height:100%;object-fit:contain;width:100%}.text-only-layout{background:linear-gradient(135deg,#1a1a2e,#16213e 50%,#0f3460)}.text-only-layout .text-background{background-image:radial-gradient(circle at 20% 30%,#8b73551a 0,#0000 40%),radial-gradient(circle at 80% 70%,#8b735514 0,#0000 40%);bottom:0;left:0;position:absolute;right:0;top:0}.text-only-layout .text-content-wrapper{max-width:900px;padding:3rem;position:relative;text-align:center}.text-only-layout .quote-mark{color:var(--color-accent);font-family:Georgia,serif;font-size:6rem;line-height:.5;margin-bottom:1rem;opacity:.4}.text-only-layout .quote-mark.closing{margin-bottom:0;margin-top:1rem}.text-only-layout .text-content{color:#fff;font-family:var(--font-serif);line-height:1.6;margin:0;text-shadow:0 2px 4px #0000004d}.landscape-image-text-layout .background-image{height:100%;object-fit:cover;position:absolute;width:100%}.landscape-image-text-layout .image-overlay{background:linear-gradient(180deg,#0000004d 0,#00000080 50%,#000000b3);bottom:0;left:0;position:absolute;right:0;top:0}.landscape-image-text-layout .content-overlay{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;padding:4rem;position:relative;width:100%}.landscape-image-text-layout .text-box{max-width:900px;text-align:center}.landscape-image-text-layout .overlay-text{color:#fff;font-family:var(--font-serif);line-height:1.7;margin:0;text-shadow:0 2px 8px #0009}.landscape-image-text-layout .name-attribution{align-items:center;bottom:3rem;display:flex;gap:.5rem;left:50%;position:absolute;transform:translateX(-50%)}.portrait-image-text-layout{display:flex;flex-direction:row}.portrait-image-text-layout .portrait-image-side{align-items:center;background-color:#0a0a0a;display:flex;height:100%;justify-content:center;padding:2rem;width:50%}.portrait-image-text-layout .portrait-image{border-radius:8px;box-shadow:0 10px 40px #00000080;max-height:100%;max-width:100%;object-fit:contain}.portrait-image-text-layout .portrait-text-side{align-items:center;background:linear-gradient(135deg,#1a1a2e,#16213e);display:flex;height:100%;justify-content:center;padding:3rem;width:50%}.portrait-image-text-layout .portrait-text-content{max-width:500px;text-align:center}.portrait-image-text-layout .quote-mark{color:var(--color-accent);font-family:Georgia,serif;font-size:4rem;line-height:.5;margin-bottom:1rem;opacity:.4}.portrait-image-text-layout .quote-mark.closing{margin-bottom:0;margin-top:1rem}.portrait-image-text-layout .portrait-text{color:#fff;font-family:var(--font-serif);line-height:1.7;margin:0}.portrait-image-text-layout .portrait-name{align-items:center;display:flex;gap:.5rem;justify-content:center;margin-top:2rem}.name-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background-color:#0009;border-radius:8px;display:flex;flex-direction:column;gap:.25rem;padding:1rem 1.5rem;position:absolute}.name-overlay.name-bottom-left{bottom:2rem;left:2rem}.name-overlay.name-bottom-right{align-items:center;bottom:2rem;flex-direction:row;right:2rem}.name-overlay .shared-by{color:#fff9;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase}.name-attribution .name-text,.name-overlay .name-text,.portrait-name .name-text{color:#fff;font-family:var(--font-serif);font-size:1.25rem;font-weight:500}.name-dash{color:#fff9;font-size:1.25rem}@media (max-width:1024px){.portrait-image-text-layout{flex-direction:column}.portrait-image-text-layout .portrait-image-side,.portrait-image-text-layout .portrait-text-side{height:50%;width:100%}.portrait-image-text-layout .portrait-image-side{padding:1rem}.portrait-image-text-layout .portrait-text-side{padding:2rem}.portrait-image-text-layout .portrait-text-content{max-width:100%}.portrait-image-text-layout .quote-mark{font-size:3rem}}@media (max-width:768px){.text-only-layout .text-content-wrapper{padding:2rem}.text-only-layout .quote-mark{font-size:4rem}.landscape-image-text-layout .content-overlay{padding:2rem}.name-overlay{padding:.75rem 1rem}.name-overlay.name-bottom-left{bottom:1rem;left:1rem}.name-overlay.name-bottom-right{bottom:1rem;right:1rem}.name-attribution .name-text,.name-overlay .name-text,.portrait-name .name-text{font-size:1rem}}.gallery-container{background-color:#0a0a0a;cursor:none;height:100vh;left:0;overflow:hidden;position:fixed;top:0;width:100vw}.gallery-container:hover{cursor:default}.gallery-empty,.gallery-loading{align-items:center;background-color:#0a0a0a;color:#fff;display:flex;flex-direction:column;height:100vh;justify-content:center;width:100vw}.gallery-loading .loading-spinner{animation:spin 1s linear infinite;border:3px solid #fff3;border-radius:50%;border-top-color:#fff;height:60px;margin-bottom:1.5rem;width:60px}.gallery-empty p,.gallery-loading p{font-size:1.25rem;opacity:.8}.gallery-empty h2{font-family:var(--font-serif);font-size:2rem;margin-bottom:.5rem}.gallery-slide{height:100%;transition:opacity .3s ease;width:100%}.gallery-slide.transitioning{opacity:0}.gallery-controls{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:#000000b3;border-radius:50px;bottom:2rem;display:flex;gap:1rem;left:50%;opacity:0;padding:.75rem 1.5rem;position:fixed;transform:translateX(-50%);transition:opacity .3s ease;z-index:100}.gallery-controls.visible{opacity:1}.gallery-btn{align-items:center;background:none;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;height:48px;justify-content:center;transition:background-color .2s ease;width:48px}.gallery-btn:hover{background-color:#ffffff1a}.gallery-btn svg{height:24px;width:24px}.controls-center{align-items:center;display:flex;gap:1rem}.slide-counter{color:#fffc;font-size:.875rem;min-width:60px;text-align:center}.progress-bar{background-color:#fff3;bottom:0;height:4px;left:0;position:fixed;width:100%;z-index:99}.progress-fill{animation:progress linear forwards;background-color:var(--color-accent);height:100%;width:0}@keyframes progress{0%{width:0}to{width:100%}}.keyboard-hints{bottom:6rem;color:#ffffff80;display:flex;font-size:.75rem;gap:1.5rem;left:50%;opacity:0;position:fixed;transform:translateX(-50%);transition:opacity .3s ease}.keyboard-hints.visible{opacity:1}.keyboard-hints span{background-color:#00000080;border-radius:4px;padding:.25rem .5rem}@media (max-width:768px){.gallery-controls{bottom:1rem;gap:.5rem;padding:.5rem 1rem}.gallery-btn{height:40px;width:40px}.gallery-btn svg{height:20px;width:20px}.keyboard-hints{display:none}}.admin-login{align-items:center;background:linear-gradient(135deg,var(--color-bg-dark) 0,#1a252f 100%);display:flex;justify-content:center;min-height:100vh}.login-card{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:400px;padding:3rem;text-align:center;width:100%}.login-card h1{margin-bottom:.5rem}.login-card p{color:var(--color-text-muted);margin-bottom:2rem}.login-card input{border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:1rem;margin-bottom:1rem;padding:1rem;width:100%}.login-card input:focus{border-color:var(--color-accent);outline:none}.login-card .error{color:#c62828;font-size:.875rem;margin-bottom:1rem}.login-card button{background-color:var(--color-accent);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:1rem;font-weight:500;padding:1rem;transition:background-color .2s;width:100%}.login-card button:hover{background-color:var(--color-accent-light)}.admin-container{display:flex;min-height:100vh}.admin-mobile-header{align-items:center;background-color:var(--color-bg-dark);color:#fff;display:none;gap:1rem;height:60px;left:0;padding:0 1rem;position:fixed;right:0;top:0;z-index:1001}.admin-mobile-header h1{font-size:1.125rem;font-weight:500;margin:0}.hamburger-btn{align-items:center;background:none;border:none;cursor:pointer;display:flex;flex-direction:column;gap:5px;height:40px;justify-content:center;padding:8px;width:40px}.hamburger-btn span{background-color:#fff;border-radius:2px;display:block;height:2px;transition:all .3s ease;width:24px}.hamburger-btn.open span:first-child{transform:translateY(7px) rotate(45deg)}.hamburger-btn.open span:nth-child(2){opacity:0}.hamburger-btn.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.mobile-menu-overlay{background-color:#00000080;display:none;right:0;z-index:999}.admin-sidebar,.mobile-menu-overlay{bottom:0;left:0;position:fixed;top:0}.admin-sidebar{background-color:var(--color-bg-dark);color:var(--color-text-inverse);display:flex;flex-direction:column;width:250px}.sidebar-header{border-bottom:1px solid #ffffff1a;padding:1.5rem}.sidebar-header h2{color:#fff;font-size:1.25rem;margin:0}.sidebar-header .subtitle{color:#fff9;font-size:.75rem}.sidebar-nav{flex:1 1;padding:1rem 0}.sidebar-nav a{color:#ffffffb3;display:block;padding:.875rem 1.5rem;text-decoration:none;transition:all .2s}.sidebar-nav a:hover{background-color:#ffffff0d;color:#fff}.sidebar-nav a.active{background-color:#8b73554d;border-left:3px solid var(--color-accent);color:#fff}.sidebar-footer{border-top:1px solid #ffffff1a;display:flex;flex-direction:column;gap:.5rem;padding:1rem 1.5rem}.sidebar-footer a{color:#fff9;font-size:.875rem}.sidebar-footer a:hover{color:#fff}.sidebar-footer button{background:none;border:1px solid #fff3;border-radius:var(--radius-sm);color:#fff9;cursor:pointer;font-size:.875rem;padding:.5rem 1rem;transition:all .2s}.sidebar-footer button:hover{border-color:#fff6;color:#fff}.admin-main{background-color:var(--color-bg);flex:1 1;margin-left:250px;min-height:100vh}.admin-page{max-width:1200px;padding:2rem}.admin-page h1{margin-bottom:.5rem}.page-description{color:var(--color-text-muted);margin-bottom:2rem}.admin-loading{color:var(--color-text-muted);padding:4rem;text-align:center}.stats-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-top:2rem}.stat-card{background-color:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:1.5rem;text-align:center}.stat-value{color:var(--color-primary);display:block;font-family:var(--font-serif);font-size:2.5rem;font-weight:600}.stat-label{color:var(--color-text-muted);font-size:.875rem}.rsvps-section{margin-top:3rem}.rsvps-section h2{color:var(--color-text-primary);font-family:var(--font-serif);font-size:1.5rem;font-weight:500;margin-bottom:1.5rem}.summary-bar{background-color:var(--color-bg-warm);border-radius:var(--radius-md);display:flex;gap:2rem;margin-bottom:1.5rem;padding:1rem 1.5rem}.summary-bar span{color:var(--color-text-light);font-size:.9375rem}.table-container{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.admin-table{border-collapse:collapse;width:100%}.admin-table td,.admin-table th{padding:1rem 1.5rem;text-align:left}.admin-table th{background-color:var(--color-bg-warm);color:var(--color-text-muted);font-size:.8125rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.admin-table td{border-bottom:1px solid var(--color-border-light)}.admin-table tr:last-child td{border-bottom:none}.badge{border-radius:20px;display:inline-block;font-size:.875rem;font-weight:500;padding:.25rem .75rem}.badge.attending{background-color:#e8f5e9;color:#2e7d32}.badge.not-attending,.btn-delete{background-color:#ffebee;color:#c62828}.btn-delete{border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;padding:.375rem .75rem;transition:background-color .2s}.btn-delete:hover{background-color:#ffcdd2}.btn-edit{background-color:#e3f2fd;border:none;border-radius:var(--radius-sm);color:#1565c0;cursor:pointer;font-size:.8125rem;padding:.375rem .75rem;transition:background-color .2s}.btn-edit:hover{background-color:#bbdefb}.actions-cell{display:flex;gap:.5rem}.badge.subscribed{background-color:#e8f5e9;color:#2e7d32}.badge.not-subscribed{background-color:#fafafa;color:#9e9e9e}.modal-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal-content{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-height:90vh;max-width:450px;overflow-y:auto;padding:2rem;width:100%}.modal-content h3{font-size:1.25rem;margin:0 0 1.5rem}.modal-content .form-group{margin-bottom:1rem}.modal-content .form-group label{color:var(--color-text-light);display:block;font-size:.875rem;font-weight:500;margin-bottom:.5rem}.modal-content .form-group input[type=email],.modal-content .form-group input[type=number],.modal-content .form-group input[type=text]{border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:1rem;padding:.75rem;width:100%}.modal-content .form-group input:focus{border-color:var(--color-accent);outline:none}.modal-content .checkbox-group label{align-items:center;cursor:pointer;display:flex;gap:.5rem}.modal-content .checkbox-group input[type=checkbox]{cursor:pointer;height:18px;width:18px}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem}.btn-cancel{background-color:var(--color-bg-warm);border:none;border-radius:var(--radius-md);color:var(--color-text-light);cursor:pointer;font-size:.9375rem;padding:.75rem 1.5rem;transition:background-color .2s}.btn-cancel:hover{background-color:var(--color-border)}.condolence-edit-modal{max-width:550px}.condolence-edit-modal .modal-subtitle{color:var(--color-text-muted);font-size:.9375rem;margin:-1rem 0 1.5rem}.condolence-edit-modal textarea{border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:inherit;font-size:1rem;min-height:120px;padding:.75rem;resize:vertical;width:100%}.condolence-edit-modal textarea:focus{border-color:var(--color-accent);outline:none}.edit-photos-grid{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.edit-photo-item{aspect-ratio:1;position:relative}.edit-photo-item img{border-radius:var(--radius-md);height:100%;object-fit:cover;width:100%}.photo-remove-btn{align-items:center;background-color:#000000b3;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:18px;height:24px;justify-content:center;line-height:1;position:absolute;right:4px;top:4px;transition:background-color .2s;width:24px}.photo-remove-btn:hover{background-color:#c62828}.validation-warning{background-color:#fff3e0;border-radius:var(--radius-md);color:#e65100;font-size:.875rem;margin-bottom:1rem;padding:.75rem 1rem}.condolences-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.condolence-admin-card{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.5rem}.condolence-admin-card.hidden{border:2px dashed var(--color-border);opacity:.6}.condolence-admin-card .card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:1rem}.condolence-admin-card .card-header strong{display:block}.condolence-admin-card .card-header .date{color:var(--color-text-muted);display:block;font-size:.8125rem}.anonymous-badge{background-color:#e3f2fd;border-radius:var(--radius-sm);color:#1565c0;display:inline-block;font-size:.6875rem;font-weight:500;letter-spacing:.5px;margin-left:.5rem;padding:.125rem .5rem;text-transform:uppercase;vertical-align:middle}.status-badge{border-radius:var(--radius-sm);font-size:.75rem;padding:.25rem .5rem}.status-badge.approved{background-color:#e8f5e9;color:#2e7d32}.status-badge.hidden{background-color:#fff3e0;color:#e65100}.card-message{color:var(--color-text);font-size:.9375rem;line-height:1.6;margin-bottom:1rem}.card-photos{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));margin-bottom:1rem}.card-photos img{aspect-ratio:1;border-radius:var(--radius-sm);object-fit:cover;width:100%}.card-actions{display:flex;gap:.5rem}.btn-toggle{border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;padding:.375rem .75rem;transition:background-color .2s}.btn-toggle.hide{background-color:#fff3e0;color:#e65100}.btn-toggle.show{background-color:#e8f5e9;color:#2e7d32}.btn-toggle:hover{opacity:.8}.event-form{max-width:700px}.form-section{background-color:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:1.5rem;padding:1.5rem}.form-section h3{border-bottom:1px solid var(--color-border-light);font-size:1rem;padding-bottom:.5rem}.form-group,.form-section h3{margin-bottom:1rem}.form-group:last-child{margin-bottom:0}.form-group label{color:var(--color-text-light);display:block;font-size:.875rem;font-weight:500;margin-bottom:.5rem}.form-group input,.form-group textarea{background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:1rem;padding:.75rem;width:100%}.form-group input:focus,.form-group textarea:focus{border-color:var(--color-accent);outline:none}.form-group textarea{min-height:120px;resize:vertical}.schedule-item{display:flex;gap:1rem;margin-bottom:.75rem}.schedule-item .time-input{flex-shrink:0;width:120px}.schedule-item .description-input{flex:1 1}.form-message{border-radius:var(--radius-md);margin-bottom:1rem;padding:1rem}.form-message.success{background-color:#e8f5e9;color:#2e7d32}.form-message.error{background-color:#ffebee;color:#c62828}.btn-save{background-color:var(--color-accent);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:1rem;font-weight:500;padding:1rem 2rem;transition:background-color .2s}.btn-save:hover:not(:disabled){background-color:var(--color-accent-light)}.btn-save:disabled{cursor:not-allowed;opacity:.7}@media (max-width:1024px){.admin-sidebar{width:200px}.admin-main{margin-left:200px}}@media (max-width:768px){.admin-mobile-header{display:flex}.mobile-menu-overlay{display:block}.admin-sidebar{flex-direction:column;height:100vh;left:-280px;position:fixed;top:0;transition:left .3s ease;width:280px;z-index:1000}.admin-sidebar.open{left:0}.sidebar-header{padding-top:1rem}.sidebar-nav{flex-direction:column;overflow-x:visible;padding:1rem 0}.sidebar-nav a{padding:.875rem 1.5rem;white-space:normal}.sidebar-footer{align-items:stretch;flex-direction:column;gap:.5rem;margin-top:auto;padding:1rem 1.5rem}.sidebar-footer a,.sidebar-footer button{text-align:center}.admin-main{margin-left:0;margin-top:60px}.admin-page{padding:1rem}.admin-page h1{font-size:1.5rem}.stats-grid{grid-template-columns:repeat(2,1fr)}.summary-bar{flex-wrap:wrap;gap:1rem}.condolences-grid{grid-template-columns:1fr}.schedule-item{flex-direction:column;gap:.5rem}.schedule-item .time-input{width:100%}}.app{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1 1;padding-top:80px}.app-loading{align-items:center;background:linear-gradient(135deg,var(--color-bg) 0,var(--color-bg-warm) 100%);display:flex;justify-content:center;min-height:100vh}.loading-content{text-align:center}.loading-spinner{animation:spin 1s linear infinite;border:3px solid var(--color-border);border-radius:50%;border-top-color:var(--color-accent);height:48px;margin:0 auto var(--spacing-md);width:48px}@keyframes spin{to{transform:rotate(1turn)}}.loading-content p{color:var(--color-text-muted);font-family:var(--font-serif);font-size:1.125rem}.footer{background-color:var(--color-bg-dark);color:var(--color-text-inverse);padding:var(--spacing-xl) 0;text-align:center}.footer-text{font-family:var(--font-serif);font-size:1rem;font-style:italic;margin:0;opacity:.9}.page-enter{opacity:0;transform:translateY(10px)}.page-enter-active{opacity:1;transform:translateY(0);transition:opacity .3s ease,transform .3s ease}.page-exit{opacity:1}.page-exit-active{opacity:0;transition:opacity .2s ease}@media (max-width:768px){.main-content{padding-top:70px}}
/*# sourceMappingURL=main.881442d2.css.map*/