.home{background:linear-gradient(180deg,#fff8f0,#f5e6e0,#fff8f0);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.home-hero{margin-bottom:48px}.home-icon{font-size:64px;margin-bottom:16px}.home h1{font-size:32px;color:var(--color-primary-dark);margin-bottom:12px;letter-spacing:4px}.home-subtitle{font-size:15px;color:var(--color-text-light);line-height:1.6}.home-features{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:48px;width:100%;max-width:360px}.feature-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 8px;background:var(--color-white);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft)}.feature-icon{font-size:28px}.feature-text{font-size:12px;color:var(--color-text-light)}.home-actions{display:flex;flex-direction:column;gap:16px;width:100%;max-width:300px}.create-page{background:linear-gradient(180deg,#fff8f0,#f5e6e0);padding:8px 0 48px}.create-header{text-align:center;margin-bottom:32px}.create-header h1{font-size:26px;color:var(--color-primary-dark);margin-bottom:8px}.create-header p{font-size:14px;color:var(--color-text-light)}.create-form .card{margin-bottom:24px}.create-actions{display:flex;flex-direction:column;gap:12px}.success-page{background:linear-gradient(180deg,#fff8f0,#f5e6e0);padding:8px 20px 40px;text-align:center}.success-icon{font-size:72px;margin-bottom:16px}.success-page h1{font-size:26px;color:var(--color-primary-dark);margin-bottom:8px}.success-page .couple-names{font-size:20px;font-family:var(--font-serif);color:var(--color-text);margin-bottom:24px}.qr-section{background:var(--color-white);border-radius:var(--radius);padding:32px 24px;box-shadow:var(--shadow-card);margin-bottom:24px}.qr-section img{width:200px;height:200px;margin-bottom:16px;border-radius:8px}.qr-hint{font-size:13px;color:var(--color-text-light);margin-bottom:12px}.share-url{display:flex;align-items:center;gap:8px;background:var(--color-cream);padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;word-break:break-all}.pin-info{background:#fff3e0;border:1px solid #ffe0b2;border-radius:var(--radius-sm);padding:16px;margin-bottom:24px;text-align:left}.pin-info strong{color:var(--color-primary-dark);font-size:20px;letter-spacing:4px}.pin-info p{font-size:13px;color:var(--color-text-light);margin-top:4px}.success-actions{display:flex;flex-direction:column;gap:12px}.album-page{background:var(--color-cream);padding-bottom:80px}.album-header{background:linear-gradient(135deg,#d4a5a5,#c9a87c);color:#fff;padding:56px 20px 32px;text-align:center;position:relative}.album-header:after{content:"";position:absolute;bottom:-20px;left:50%;transform:translate(-50%);width:40px;height:40px;background:var(--color-cream);border-radius:50%}.album-couple{font-family:var(--font-serif);font-size:28px;margin-bottom:8px;letter-spacing:2px}.album-date{font-size:14px;opacity:.9;margin-bottom:12px}.album-blessing{font-size:14px;opacity:.85;font-style:italic;max-width:300px;margin:0 auto;line-height:1.5}.album-stats{display:flex;justify-content:center;gap:24px;margin-top:16px;font-size:13px;opacity:.9}.album-toolbar{display:flex;gap:10px;padding:28px 16px 16px;position:sticky;top:0;background:var(--color-cream);z-index:10}.toolbar-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:12px;background:var(--color-white);border-radius:var(--radius-sm);font-size:14px;color:var(--color-text);box-shadow:var(--shadow-soft);transition:transform .15s}.toolbar-btn:active{transform:scale(.96)}.toolbar-btn.primary{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-dark));color:#fff}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:0 3px}.photo-item{aspect-ratio:1;overflow:hidden;cursor:pointer;position:relative}.photo-item img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.photo-item:active img{transform:scale(1.05)}.empty-state{text-align:center;padding:60px 20px;color:var(--color-text-light)}.empty-state .empty-icon{font-size:48px;margin-bottom:16px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;z-index:1000;display:flex;flex-direction:column}.lightbox-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;color:#fff;font-size:14px}.lightbox-close{background:none;color:#fff;font-size:28px;padding:4px 8px}.lightbox-image{flex:1;display:flex;align-items:center;justify-content:center;padding:0 10px;overflow:hidden}.lightbox-image img{max-width:100%;max-height:100%;object-fit:contain}.lightbox-footer{display:flex;justify-content:center;gap:16px;padding:20px;padding-bottom:calc(20px + env(safe-area-inset-bottom))}.lightbox-btn{padding:12px 32px;border-radius:50px;font-size:15px;background:#ffffff26;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.lightbox-btn.download{background:var(--color-primary)}.upload-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:100;display:flex;align-items:flex-end}.upload-panel{width:100%;background:var(--color-white);border-radius:20px 20px 0 0;padding:24px 20px;padding-bottom:calc(24px + env(safe-area-inset-bottom));animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.upload-panel h3{text-align:center;margin-bottom:20px;font-size:18px}.upload-preview{display:flex;gap:8px;overflow-x:auto;margin-bottom:16px;padding:4px 0}.upload-preview img{width:64px;height:64px;object-fit:cover;border-radius:8px;flex-shrink:0}.upload-actions{display:flex;flex-direction:column;gap:10px}.admin-panel{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}.admin-content{background:var(--color-white);border-radius:var(--radius);padding:28px 24px;width:100%;max-width:340px}.admin-content h3{text-align:center;margin-bottom:20px}.admin-actions{display:flex;flex-direction:column;gap:10px;margin-top:20px}.progress-bar{height:4px;background:#e8ddd0;border-radius:2px;overflow:hidden;margin-top:12px}.progress-bar-fill{height:100%;background:var(--color-primary);transition:width .3s;border-radius:2px}.admin-login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#fff8f0,#f5e6e0);padding:40px 20px}.admin-login-card{max-width:400px;width:100%}.admin-login-header{text-align:center;margin-bottom:28px}.admin-icon{font-size:48px;display:block;margin-bottom:12px}.admin-login-header h1{font-size:24px;color:var(--color-primary-dark);margin-bottom:8px}.admin-login-header p{font-size:14px;color:var(--color-text-light)}.admin-back-link{display:block;text-align:center;margin-top:20px;font-size:14px;color:var(--color-text-light)}.admin-page{max-width:800px;margin:0 auto;padding:8px 16px 60px}.admin-topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.admin-topbar h1{font-size:22px;color:var(--color-primary-dark)}.admin-logout-btn{background:none;color:var(--color-text-light);font-size:14px;padding:8px 12px}.admin-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}.stat-card{background:var(--color-white);border-radius:var(--radius-sm);padding:16px;text-align:center;box-shadow:var(--shadow-soft)}.stat-num{display:block;font-size:28px;font-weight:700;color:var(--color-primary-dark)}.stat-label{font-size:12px;color:var(--color-text-light)}.admin-tabs{display:flex;gap:8px;margin-bottom:16px}.admin-tabs button{flex:1;padding:12px;border-radius:var(--radius-sm);background:var(--color-white);color:var(--color-text-light);font-size:14px;box-shadow:var(--shadow-soft)}.admin-tabs button.active{background:var(--color-primary);color:#fff}.admin-album-list{display:flex;flex-direction:column;gap:16px}.admin-album-card h3{font-size:18px;margin-bottom:4px}.admin-album-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.admin-meta{font-size:13px;color:var(--color-text-light)}.admin-badge{background:var(--color-rose-light);color:var(--color-primary-dark);padding:4px 12px;border-radius:20px;font-size:13px;flex-shrink:0}.admin-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px;font-size:13px}.admin-info-grid span{display:block;color:var(--color-text-light);margin-bottom:2px}.admin-info-grid strong{color:var(--color-text);word-break:break-all}.admin-info-grid strong.pin{color:var(--color-primary-dark);letter-spacing:2px;font-size:16px}.admin-card-actions{display:flex;gap:10px}.admin-card-actions .btn{flex:1;padding:10px;font-size:14px;text-align:center}.btn.danger,.admin-card-actions .danger{border-color:#c0392b;color:#c0392b}.admin-photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.admin-photo-item{aspect-ratio:1;overflow:hidden;position:relative;cursor:pointer}.admin-photo-item img{width:100%;height:100%;object-fit:cover}.admin-photo-info{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#000000b3);color:#fff;padding:20px 6px 6px;font-size:10px;display:flex;flex-direction:column}.admin-empty{text-align:center;color:var(--color-text-light);padding:40px}.home-admin-link{margin-top:32px;font-size:13px;color:var(--color-text-light);opacity:.6}.admin-entry-qr{margin-bottom:20px;text-align:center}.admin-entry-qr h3{font-size:16px;color:var(--color-primary-dark);margin-bottom:8px}.admin-entry-hint{font-size:13px;color:var(--color-text-light);margin-bottom:16px;line-height:1.5}.admin-entry-img{width:180px;height:180px;margin-bottom:12px}.admin-entry-alt{font-size:13px;color:var(--color-text-light)}.danmaku-layer{position:fixed;top:0;left:0;right:0;height:55vh;z-index:50;pointer-events:none;overflow:hidden}.danmaku-item{position:absolute;left:100%;white-space:nowrap;font-size:14px;font-weight:500;padding:4px 12px;background:#fff8f0e6;border-radius:999px;box-shadow:0 2px 10px #3d2c1e1f;animation-name:danmaku-fly;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes danmaku-fly{0%{transform:translate(0)}to{transform:translate(calc(-100vw - 100%))}}.gift-float{position:fixed;left:50%;top:38%;transform:translate(-50%,-50%);z-index:60;display:flex;flex-direction:column;align-items:center;pointer-events:none;animation:gift-pop 2.6s ease forwards}.gift-float-emoji{font-size:64px;line-height:1}.gift-float-text{margin-top:8px;padding:6px 16px;background:#3d2c1ec7;color:#fff8f0;border-radius:999px;font-size:14px}@keyframes gift-pop{0%{opacity:0;transform:translate(-50%,-40%) scale(.6)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}70%{opacity:1;transform:translate(-50%,-55%) scale(1)}to{opacity:0;transform:translate(-50%,-70%) scale(.9)}}.gift-feed{margin:16px;padding:12px;background:#fff;border-radius:12px;box-shadow:0 2px 10px #8b691414}.gift-feed-title{font-size:12px;color:var(--color-text-light);margin-bottom:8px}.gift-feed-row{display:flex;gap:12px;overflow-x:auto}.gift-feed-item{display:flex;flex-direction:column;align-items:center;min-width:52px}.gf-emoji{font-size:22px}.gf-name{font-size:11px;color:var(--color-text-light);max-width:52px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-sub{text-align:center;font-size:13px;color:var(--color-text-light);margin:-4px 0 12px}.color-row{display:flex;gap:10px;justify-content:center;margin-bottom:12px}.color-dot{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}.color-dot.on{border-color:#3d2c1e;transform:scale(1.1)}.gift-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}.gift-card{background:#fff8f0;border:1px solid #e8ddd0;border-radius:12px;padding:12px 6px;text-align:center;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px}.gift-card.on{border-color:#c9a87c;background:#fff3e0;box-shadow:0 0 0 1px #c9a87c}.gift-emoji{font-size:28px}.gift-label{font-size:13px;color:var(--color-text)}.gift-hint{font-size:10px;color:#b0a090}:root{--color-primary: #c9a87c;--color-primary-dark: #8b6914;--color-rose: #d4a5a5;--color-rose-light: #f5e6e0;--color-cream: #fff8f0;--color-text: #3d2c1e;--color-text-light: #7a6b5d;--color-white: #ffffff;--shadow-soft: 0 4px 20px rgba(139, 105, 20, .1);--shadow-card: 0 8px 32px rgba(139, 105, 20, .15);--radius: 16px;--radius-sm: 10px;--font-serif: "Noto Serif SC", "Songti SC", serif}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{min-height:100vh;min-height:100dvh}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,sans-serif;background:var(--color-cream);color:var(--color-text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}h1,h2,h3,.serif{font-family:var(--font-serif)}a{color:var(--color-primary-dark);text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;outline:none}input,textarea{font-family:inherit;outline:none}.page{min-height:100vh;min-height:100dvh;padding-bottom:env(safe-area-inset-bottom,20px)}.container{max-width:480px;margin:0 auto;padding:0 20px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 28px;border-radius:50px;font-size:16px;font-weight:500;transition:all .2s ease}.btn-primary{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-dark));color:var(--color-white);box-shadow:var(--shadow-soft)}.btn-primary:active{transform:scale(.97)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-outline{background:transparent;border:2px solid var(--color-primary);color:var(--color-primary-dark)}.btn-outline:active{background:var(--color-rose-light)}.btn-block{width:100%}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-size:14px;color:var(--color-text-light);font-weight:500}.form-group input,.form-group textarea{width:100%;padding:14px 16px;border:1.5px solid #e8ddd0;border-radius:var(--radius-sm);font-size:16px;background:var(--color-white);transition:border-color .2s}.form-group input:focus,.form-group textarea:focus{border-color:var(--color-primary)}.form-group textarea{resize:vertical;min-height:80px}.card{background:var(--color-white);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow-card)}.loading{display:flex;align-items:center;justify-content:center;min-height:200px;color:var(--color-text-light)}.error-msg{color:#c0392b;font-size:14px;margin-top:8px}.toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#000000bf;color:#fff;padding:12px 24px;border-radius:8px;font-size:14px;z-index:9999;animation:fadeInOut 2s ease forwards}@keyframes fadeInOut{0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}15%{opacity:1;transform:translate(-50%,-50%) scale(1)}85%{opacity:1}to{opacity:0}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .4s ease forwards}.back-bar{display:none}.nav-back{border:none;background:none;padding:0;cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:transparent;z-index:100}.nav-back:active .nav-back-inner{transform:scale(.94);opacity:.88}.nav-back--pill{display:inline-flex;margin:12px 0 4px 16px}.nav-back--float{position:absolute;left:16px;top:16px;z-index:10}.nav-back-inner{display:inline-flex;align-items:center;gap:6px;padding:10px 16px 10px 14px;border-radius:100px;transition:transform .15s ease,opacity .15s ease}.nav-back--pill .nav-back-inner{background:#ffffffd1;border:1px solid rgba(201,168,124,.28);box-shadow:0 4px 16px #8b69141a}.nav-back--float .nav-back-inner{padding:12px;border-radius:50%;width:40px;height:40px;justify-content:center;box-sizing:border-box}.nav-back--light .nav-back-chevron{border-color:var(--color-primary-dark)}.nav-back--light .nav-back-label{color:var(--color-primary-dark);font-size:14px;font-weight:500;letter-spacing:.5px}.nav-back--dark .nav-back-inner{background:#ffffff38;border:1px solid rgba(255,255,255,.35);box-shadow:0 4px 12px #0000001f}.nav-back--dark .nav-back-chevron{border-color:#fff}.nav-back-chevron{display:block;width:9px;height:9px;border-left:2.5px solid var(--color-primary-dark);border-bottom:2.5px solid var(--color-primary-dark);transform:rotate(45deg);margin-left:3px;flex-shrink:0}.nav-back--float .nav-back-chevron{width:10px;height:10px;margin-left:4px}
