*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:Cormorant Garamond,serif;overflow-x:hidden}.page{min-height:100vh;min-height:100dvh;padding:2rem 1rem;display:flex;flex-direction:column;align-items:center;text-align:center}.heading{font-family:Playfair Display,serif;font-weight:600;letter-spacing:.5px;font-size:clamp(1.6rem,5vw,2.2rem);margin:0 0 .5rem;word-break:break-word}.subtext{font-size:clamp(1rem,3.5vw,1.25rem);max-width:500px;line-height:1.6;opacity:.85;padding:0 .5rem}.card{background:#ffffffa6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:16px;padding:1.5rem;box-shadow:0 8px 24px #0000000f;max-width:480px;width:100%}.btn{font-family:Playfair Display,serif;font-size:1rem;border:none;border-radius:999px;padding:.8rem 1.8rem;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;margin:.4rem;min-height:44px;touch-action:manipulation}.btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px #00000026}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{color:#fff}.btn-outline{background:transparent;border:2px solid currentColor}input[type=text],input[type=password],input[type=file],textarea{width:100%;font-family:Cormorant Garamond,serif;font-size:16px;padding:.7rem 1rem;border:1px solid #ddd;border-radius:10px;margin:.5rem 0;background:#fff}input[type=file]{padding:.5rem;font-size:.95rem}textarea{resize:vertical;min-height:70px}.radio-group{display:flex;gap:1.25rem;flex-wrap:wrap;justify-content:center;margin:.75rem 0;font-size:1.05rem}.radio-group label{display:flex;align-items:center;gap:.35rem;white-space:nowrap}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;width:100%;max-width:1100px;margin-top:1.5rem}.gallery-item{background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 4px 14px #00000014;text-align:left;cursor:pointer;transition:transform .15s ease}.gallery-item:hover{transform:translateY(-3px)}.gallery-item img,.gallery-item video{width:100%;display:block;aspect-ratio:1 / 1;object-fit:cover;background:#000}.gallery-item-body{padding:.6rem .75rem}.tag{display:inline-block;font-size:.8rem;background:#eaf4ef;color:#5c8374;padding:.2rem .65rem;border-radius:999px;margin:.15rem .25rem .15rem 0}.countdown{display:flex;gap:.75rem;justify-content:center;margin:1.25rem 0;flex-wrap:wrap}.countdown-unit{display:flex;flex-direction:column;align-items:center;min-width:55px}.countdown-number{font-family:Playfair Display,serif;font-size:clamp(1.5rem,6vw,2.2rem);font-weight:600}.countdown-label{font-size:.75rem;text-transform:uppercase;letter-spacing:1px;opacity:.7}.nav-links{margin-top:2rem;display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center;width:100%}.nav-links a,.nav-links button{flex:0 1 auto}.filter-bar{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center;align-items:flex-end;margin:1.5rem 0 1.25rem;background:#ffffff8c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:1rem 1.25rem;border-radius:18px;box-shadow:0 4px 18px #0000000d;max-width:700px;width:100%}.filter-group{display:flex;flex-direction:column;align-items:flex-start;flex:1 1 140px;min-width:120px}.filter-group label{font-family:Playfair Display,serif;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;opacity:.55;margin-bottom:.35rem}.filter-group select{font-family:Cormorant Garamond,serif;font-size:1rem;padding:.5rem .9rem;border-radius:999px;border:1px solid rgba(0,0,0,.1);background:#fff;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M0 0l5 6 5-6z' fill='%23999'/></svg>");background-repeat:no-repeat;background-position:right 1rem center;cursor:pointer}.uploader-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;opacity:.5;margin:0 0 .4rem}.tab-bar{display:flex;gap:.4rem;margin:1.25rem 0;background:#ffffff80;padding:.35rem;border-radius:999px;width:100%;max-width:400px}.tab-btn{flex:1;font-family:Playfair Display,serif;font-size:.9rem;padding:.55rem 1rem;border:2px solid transparent;border-radius:999px;background:transparent;cursor:pointer;opacity:.6;transition:all .15s ease;white-space:nowrap}.tab-btn-active{opacity:1;background:#fff;font-weight:600}.photobooth-embed{width:100%;max-width:900px;height:70vh;border-radius:16px;overflow:hidden;box-shadow:0 8px 24px #0000001a;margin-top:1rem}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#140f14e6;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.lightbox-content{display:flex;flex-direction:column;align-items:center;max-width:95vw;max-height:90vh;width:100%}.lightbox-image{max-width:100%;max-height:60vh;border-radius:12px;box-shadow:0 12px 40px #0006;object-fit:contain;background:#000}.lightbox-info{background:#fff;border-radius:14px;padding:1rem 1.25rem;margin-top:1rem;max-width:480px;width:100%;text-align:center;max-height:25vh;overflow-y:auto}.lightbox-close{position:fixed;top:env(safe-area-inset-top,1rem);right:1rem;background:#fff3;border:none;color:#fff;font-size:1.3rem;width:40px;height:40px;border-radius:50%;cursor:pointer;z-index:1001}.qr-card{background:#fff;border-radius:20px;padding:1.5rem;box-shadow:0 8px 24px #0000001a;display:flex;flex-direction:column;align-items:center;margin:1.5rem 0;max-width:100%}.qr-card svg{max-width:100%;height:auto}.qr-caption{margin-top:1rem;font-size:.9rem;opacity:.6;word-break:break-all;text-align:center}@media print{.no-print{display:none!important}body,.page{background:#fff!important}}@media (max-width: 600px){.page{padding:1.5rem .75rem}.card{padding:1.25rem;border-radius:14px}.gallery-grid{grid-template-columns:repeat(2,1fr);gap:.6rem}.filter-bar{padding:.85rem;gap:.6rem}.filter-group{flex:1 1 100%;min-width:0}.btn{padding:.75rem 1.4rem;font-size:.95rem}.nav-links{flex-direction:column;align-items:stretch}.nav-links a,.nav-links button{width:100%}.countdown{gap:.5rem}.countdown-unit{min-width:48px}.lightbox-overlay{padding:.5rem}.lightbox-image{max-height:50vh}.lightbox-info{max-height:30vh}.photobooth-embed{height:60vh}.tab-bar{max-width:100%}}@media (max-width: 380px){.gallery-grid{grid-template-columns:repeat(2,1fr);gap:.5rem}.heading{font-size:1.4rem}}.file-count-label{font-size:.85rem;opacity:.65;margin-top:.25rem 0}.hero-banner{position:relative;width:100%;height:42vh;min-height:260px;max-height:420px;overflow:hidden}.hero-banner-img{width:100%;height:100%;object-fit:cover;display:block}.hero-banner-fade{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.hero-banner-title{position:absolute;left:0;right:0;bottom:12%;text-align:center;color:#fff;font-size:clamp(1.8rem,7vw,2.8rem);font-style:italic;text-shadow:0 2px 14px rgba(0,0,0,.4);margin:0;padding:0 1rem}.hero-menu-btn{position:absolute;top:1rem;right:1rem;width:42px;height:42px;border-radius:50%;background:#ffffffd9;border:none;font-size:1.2rem;cursor:pointer;z-index:5}.hero-menu-dropdown{position:absolute;top:4rem;right:1rem;background:#fff;border-radius:12px;box-shadow:0 8px 24px #00000026;padding:.4rem;display:flex;flex-direction:column;z-index:6;min-width:160px}.hero-menu-dropdown a{padding:.6rem .8rem;text-decoration:none;color:#333;font-family:Cormorant Garamond,serif;font-size:1.05rem;border-radius:8px}.hero-menu-dropdown a:hover{background:#f3e4ef}.content-below-hero{padding:1.5rem 1rem 2.5rem;display:flex;flex-direction:column;align-items:center;text-align:center}@media (max-width: 600px){.hero-banner{height:38vh;min-height:220px}}.upload-trigger-btn{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;text-align:center;width:100%}.upload-preview-strip{display:flex;gap:.6rem;overflow-x:auto;padding:.75rem .25rem;margin:.5rem 0;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.25) transparent}.upload-preview-strip::-webkit-scrollbar{height:6px}.upload-preview-strip::-webkit-scrollbar-thumb{background:#00000040;border-radius:999px}.upload-preview-thumb{position:relative;flex:0 0 auto;width:80px;height:80px;border-radius:10px;overflow:hidden;background:#f0f0f0}.upload-preview-thumb img,.upload-preview-thumb video{width:100%;height:100%;object-fit:cover;display:block}.upload-preview-remove-left{position:absolute;top:4px;left:4px;background:#0009;color:#fff;border:none;width:20px;height:20px;border-radius:50%;cursor:pointer;font-size:.65rem;z-index:2;display:flex;align-items:center;justify-content:center;padding:0}.upload-add-more-thumb{flex:0 0 auto;width:80px;height:80px;border-radius:10px;border:2px dashed rgba(0,0,0,.2);display:flex;align-items:center;justify-content:center;font-size:1.5rem;color:#0006;cursor:pointer}.selection-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem;width:100%;max-width:700px;background:#fff9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:.75rem 1rem;border-radius:14px;margin-bottom:1rem}.selection-count{font-family:Playfair Display,serif;font-weight:600;font-size:.95rem;white-space:nowrap}.selection-actions{display:flex;gap:.5rem;flex-wrap:wrap}.selection-btn{margin:0;padding:.5rem 1rem;font-size:.9rem}.gallery-item{position:relative}.gallery-item-selected{outline:3px solid #4a8a5c;outline-offset:-3px}.select-checkbox{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;background:#ffffffd9;border:2px solid rgba(0,0,0,.2);display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;color:#fff;z-index:3}.select-checkbox-active{background:#4a8a5c;border-color:#4a8a5c}.position-adjust-card{background:#fff9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:14px;padding:1rem 1.25rem;max-width:400px;width:100%;margin-bottom:1.25rem;text-align:center}.position-adjust-label{font-family:Playfair Display,serif;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;opacity:.6;margin:0 0 .75rem}.position-preview-wrap{width:100%;height:100px;border-radius:10px;overflow:hidden;margin-bottom:.75rem}.position-preview-img{width:100%;height:100%;object-fit:cover;display:block}.position-slider{width:100%;cursor:pointer}.position-slider-labels{display:flex;justify-content:space-between;font-size:.75rem;opacity:.5;margin-top:.25rem}.couple-progress-wrap{display:flex;flex-direction:column;align-items:center;width:100%;max-width:320px;margin:0 auto}.couple-stage{position:relative;width:100%;height:140px;overflow:hidden;display:flex;align-items:flex-end;justify-content:center}.couple-figure{position:absolute;bottom:0;height:140px;width:auto;transition:transform 2.4s ease-out}.couple-groom,.couple-bride{left:50%}.couple-kiss{height:140px;animation:popIn .4s ease}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.couple-heart{position:absolute;font-size:1.4rem;animation:floatUp 1.6s ease-in forwards;opacity:0}.couple-heart-1{top:30%;left:42%;animation-delay:.1s}.couple-heart-2{top:20%;left:55%;animation-delay:.35s}.couple-heart-3{top:25%;left:48%;animation-delay:.6s}@keyframes floatUp{0%{transform:translateY(0) scale(.6);opacity:0}30%{opacity:1}to{transform:translateY(-60px) scale(1.1);opacity:0}}.couple-progress-bar-track{width:100%;height:8px;background:#eee;border-radius:999px;overflow:hidden;margin-top:.5rem}.couple-progress-bar-fill{height:100%;background:#8fb9a8;border-radius:999px;transition:width .3s ease}.couple-progress-text{margin-top:.5rem;font-size:.9rem;opacity:.7}.couple-progress-finished{color:#4a8a5c;font-weight:600}
