@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400;1,600&display=swap";:root{--font-serif: "Playfair Display", Georgia, serif;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--color-bg: #fdfbf7;--color-card-bg: #ffffff;--color-text-main: #3a3835;--color-text-muted: #747069;--color-text-heading: #262421;--color-sage: #7a8b71;--color-sage-light: #f0f4ee;--color-sage-dark: #586650;--color-rose: #d4a5a5;--color-rose-light: #fbf0f0;--color-rose-dark: #b87c7c;--color-gold: #c9b37c;--color-border: #ebd9d8;--radius-sm: 8px;--radius-md: 16px;--radius-lg: 24px;--radius-full: 9999px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .04);--shadow-md: 0 8px 24px rgba(122, 139, 113, .08);--shadow-lg: 0 16px 32px rgba(58, 56, 53, .1);--shadow-glass: 0 8px 32px 0 rgba(212, 165, 165, .12);font-family:var(--font-sans);color:var(--color-text-main);background-color:var(--color-bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-tap-highlight-color:transparent}body{margin:0;min-height:100vh;min-height:100dvh;background:var(--color-bg);color:var(--color-text-main);background-image:radial-gradient(circle at 8% 15%,rgba(212,165,165,.08) 0%,transparent 35%),radial-gradient(circle at 92% 85%,rgba(122,139,113,.08) 0%,transparent 35%),radial-gradient(circle at 50% 50%,rgba(201,179,124,.03) 0%,transparent 60%);background-attachment:fixed;padding-bottom:env(safe-area-inset-bottom,0px)}#root{width:100%;max-width:960px;margin:0 auto;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;padding:16px;position:relative}h1,h2,h3,.font-serif{font-family:var(--font-serif);color:var(--color-text-heading)}button{font-family:var(--font-sans);cursor:pointer;border:none;outline:none;transition:all .2s cubic-bezier(.4,0,.2,1);touch-action:manipulation}input,textarea,select{font-family:var(--font-sans);touch-action:manipulation}.floral-corner{position:absolute;pointer-events:none;z-index:0;width:72px;height:72px}.floral-corner:first-of-type{top:-6px;right:-6px}.floral-corner:nth-of-type(2){bottom:-6px;left:-6px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes floralFloat{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-6px) rotate(3deg)}}@keyframes pulseGlow{0%,to{box-shadow:0 0 #7a8b7133}50%{box-shadow:0 0 0 8px #7a8b7100}}.animate-fade-in{animation:fadeIn .3s cubic-bezier(.4,0,.2,1) forwards}.animate-slide-up{animation:slideUp .35s cubic-bezier(.4,0,.2,1) forwards}.password-gate-container{display:flex;align-items:center;justify-content:center;min-height:80vh;padding:16px}.password-card{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:36px 24px;width:100%;max-width:420px;box-shadow:var(--shadow-md);text-align:center;position:relative;overflow:hidden}.password-card:before{content:"";position:absolute;top:0;left:0;right:0;height:6px;background:linear-gradient(90deg,var(--color-rose),var(--color-sage),var(--color-gold))}.floral-badge{display:inline-flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;background:var(--color-rose-light);color:var(--color-rose);margin-bottom:16px;box-shadow:0 4px 16px #d4a5a540;animation:floralFloat 4s ease-in-out infinite}.floral-corner{position:absolute;pointer-events:none;z-index:0}.floral-corner:first-of-type{top:-8px;right:-8px}.floral-corner:nth-of-type(2){bottom:-8px;left:-8px}.wedding-title{font-size:32px;margin-bottom:4px;color:var(--color-text-heading)}.wedding-subtitle{font-size:14px;color:var(--color-sage);font-weight:600;letter-spacing:1px;text-transform:uppercase;margin-bottom:20px}.gate-instructions{font-size:15px;color:var(--color-text-muted);line-height:1.5;margin-bottom:24px}.password-form{display:flex;flex-direction:column;gap:16px}.password-input{width:100%;padding:14px 14px 14px 44px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:16px;outline:none;transition:border-color .2s,box-shadow .2s;background:var(--color-bg)}.password-input:focus{border-color:var(--color-sage);box-shadow:0 0 0 3px var(--color-sage-light)}.error-message{color:#d9534f;font-size:14px;background:#fdf2f2;border:1px solid #f8d7da;padding:8px 12px;border-radius:var(--radius-sm)}.submit-button{width:100%;padding:14px;background:var(--color-sage);color:#fff;border-radius:var(--radius-md);font-size:16px;font-weight:600;letter-spacing:.5px;transition:background-color .2s,transform .1s}.submit-button:hover:not(:disabled){background:var(--color-sage-dark)}.submit-button:active:not(:disabled){transform:scale(.99)}.submit-button:disabled{opacity:.6;cursor:not-allowed}.photo-uploader-container{display:flex;flex-direction:column;gap:20px;width:100%;max-width:500px;margin:0 auto}.challenge-banner{position:relative;background:var(--color-sage-light);border:1px solid rgba(122,139,113,.3);border-radius:var(--radius-md);padding:18px 16px;text-align:center;overflow:hidden}.challenge-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--color-sage-dark)}.challenge-title{font-size:22px;color:var(--color-text-heading);margin-top:4px}.dropzone-area{display:flex;flex-direction:column;gap:12px;padding:16px;background:var(--color-card-bg);border:2px dashed var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:border-color .2s ease,background-color .2s ease,box-shadow .2s ease}.dropzone-area.dragging{border-color:var(--color-sage-dark);background:var(--color-sage-light);box-shadow:var(--shadow-md)}.dropzone-hint{font-size:13px;color:var(--color-text-muted);text-align:center;margin:0}.picker-buttons{display:grid;grid-template-columns:1fr 1fr;gap:12px}.hidden-input{display:none}.picker-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px 16px;min-height:100px;background:var(--color-card-bg);border:2px dashed var(--color-border);border-radius:var(--radius-md);color:var(--color-text-main);font-weight:500;font-size:15px;box-shadow:var(--shadow-sm);transition:border-color .2s,background-color .2s,transform .15s ease}.picker-button:hover:not(:disabled){border-color:var(--color-sage);background:var(--color-bg);transform:translateY(-2px)}.picker-button:active:not(:disabled){transform:translateY(0)}.picker-button.camera{color:var(--color-sage-dark)}.picker-button.gallery{color:var(--color-text-heading)}.global-error{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#fdf2f2;border:1px solid #f8d7da;border-radius:var(--radius-sm);color:#d9534f;font-size:14px}.files-list-section{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:16px}.files-list-header{display:flex;justify-content:space-between;align-items:center;font-size:14px;font-weight:600;color:var(--color-text-muted)}.text-button{background:none;color:var(--color-rose);font-size:13px;font-weight:500;padding:4px 8px}.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;max-height:340px;overflow-y:auto;padding-right:4px}.file-card{position:relative;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:8px;display:flex;flex-direction:column;gap:6px}.thumbnail-wrapper{position:relative;width:100%;height:100px;border-radius:6px;overflow:hidden;background:#e9e8e5}.preview-img{width:100%;height:100%;object-fit:cover}.remove-btn{position:absolute;top:4px;right:4px;width:28px;height:28px;border-radius:50%;background:#0009;color:#fff;display:flex;align-items:center;justify-content:center}.file-info{display:flex;flex-direction:column;gap:2px}.file-name{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-size{font-size:11px;color:var(--color-text-muted)}.progress-bar-wrapper{width:100%;height:6px;background:var(--color-border);border-radius:3px;overflow:hidden;margin-top:4px}.progress-bar-fill{height:100%;background:var(--color-sage);transition:width .2s ease}.file-error{font-size:11px;color:#d9534f}.upload-submit-button{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:14px;min-height:48px;background:var(--color-sage);color:#fff;border-radius:var(--radius-md);font-size:16px;font-weight:600;box-shadow:var(--shadow-sm);transition:background-color .2s ease,transform .1s ease}.upload-submit-button:hover:not(:disabled){background:var(--color-sage-dark)}.upload-submit-button:active:not(:disabled){transform:scale(.99)}.upload-submit-button:disabled{opacity:.6;cursor:not-allowed}.success-card{position:relative;background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:36px 20px;text-align:center;box-shadow:var(--shadow-md);display:flex;flex-direction:column;align-items:center;gap:12px;overflow:hidden}.success-icon{color:var(--color-sage)}.success-actions{display:flex;flex-direction:column;gap:10px;width:100%;margin-top:12px}.primary-button{display:inline-block;padding:12px 20px;background:var(--color-sage);color:#fff;border-radius:var(--radius-md);text-decoration:none;font-weight:600;font-size:15px}.secondary-button{padding:12px 20px;background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-main);border-radius:var(--radius-md);font-size:15px;font-weight:500}.photo-grid-container{width:100%;display:flex;flex-direction:column;gap:20px}.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:100%}@media(min-width:600px){.photo-grid{grid-template-columns:repeat(3,1fr);gap:16px}}@media(min-width:900px){.photo-grid{grid-template-columns:repeat(4,1fr);gap:20px}}.photo-grid-item{display:block;width:100%;aspect-ratio:1 / 1;padding:0;background:var(--color-card-bg);border:none;border-radius:var(--radius-sm);overflow:hidden;cursor:pointer;position:relative;box-shadow:var(--shadow-sm);transition:transform .25s ease,box-shadow .25s ease}.photo-grid-item:hover{transform:scale(1.025);box-shadow:var(--shadow-md);z-index:2}.photo-grid-img{display:block;width:100%;height:100%;border-radius:var(--radius-sm);object-fit:cover;background:var(--color-border);transition:opacity .35s cubic-bezier(.4,0,.2,1),transform .25s ease}.photo-grid-img.img-loading{opacity:0}.photo-grid-img.img-loaded{opacity:1}.photo-grid-skeleton{display:block;width:100%;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--color-border) 25%,#f5f0ee 50%,var(--color-border) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite;aspect-ratio:1 / 1}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.photo-grid-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:64px 24px;background:var(--color-card-bg);border:1px dashed var(--color-border);border-radius:var(--radius-lg);text-align:center}.photo-grid-empty-icon{color:var(--color-border)}.photo-grid-empty-title{font-family:var(--font-serif);font-size:20px;color:var(--color-text-heading)}.photo-grid-empty-subtitle{font-size:14px;color:var(--color-text-muted)}.load-more-wrapper{display:flex;justify-content:center;padding:8px 0 16px}.load-more-btn{padding:12px 32px;background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:14px;font-weight:600;color:var(--color-text-main);cursor:pointer;transition:all .2s ease}.load-more-btn:hover{border-color:var(--color-sage);color:var(--color-sage-dark);background:var(--color-sage-light)}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#1e1a18eb;display:flex;align-items:center;justify-content:center;animation:lightbox-fade-in .2s ease;overscroll-behavior:contain}@keyframes lightbox-fade-in{0%{opacity:0}to{opacity:1}}.lightbox-content{position:relative;max-width:min(90vw,900px);max-height:85vh;display:flex;align-items:center;justify-content:center;animation:lightbox-zoom-in .2s ease}@keyframes lightbox-zoom-in{0%{transform:scale(.93);opacity:0}to{transform:scale(1);opacity:1}}.lightbox-img-wrapper{position:relative;max-width:min(90vw,900px);max-height:85vh;display:flex;align-items:center;justify-content:center}.lightbox-img{position:relative;max-width:100%;max-height:85vh;object-fit:contain;border-radius:var(--radius-sm);box-shadow:0 24px 60px #00000080;display:block;transition:filter .3s ease}.lightbox-img.thumbnail-loading{filter:blur(2px)}.lightbox-img.loaded{filter:none}.lightbox-close-btn{position:fixed;top:16px;right:16px;width:44px;height:44px;border-radius:50%;background:#ffffff26;color:#fff;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:background .2s ease;cursor:pointer}.lightbox-close-btn:hover{background:#ffffff47}.lightbox-nav-btn{position:fixed;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;background:#ffffff26;color:#fff;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:background .2s ease;cursor:pointer}.lightbox-nav-btn:hover{background:#ffffff47}.lightbox-nav-prev{left:12px}.lightbox-nav-next{right:12px}.lightbox-counter{position:fixed;bottom:20px;left:50%;transform:translate(-50%);color:#fffc;font-size:14px;font-weight:500;background:#00000059;padding:6px 14px;border-radius:20px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap}.admin-gate-container{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 64px);padding:20px}.admin-gate-card{background:var(--color-card-bg);border-radius:var(--radius-lg);padding:40px 32px;width:100%;max-width:440px;box-shadow:var(--shadow-md);text-align:center;border:1px solid var(--color-border);position:relative;overflow:hidden}.admin-shield-badge{width:64px;height:64px;border-radius:50%;background-color:var(--color-sage-light);color:var(--color-sage-dark);display:flex;align-items:center;justify-content:center;margin:0 auto 20px}.admin-title{font-size:26px;font-weight:700;margin-bottom:4px}.admin-subtitle{font-size:14px;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:20px}.admin-instructions{font-size:15px;color:var(--color-text-main);line-height:1.5;margin-bottom:24px}.admin-form{display:flex;flex-direction:column;gap:16px}.input-wrapper{position:relative;display:flex;align-items:center}.lock-icon{position:absolute;left:14px;color:var(--color-text-muted)}.admin-input{width:100%;padding:14px 14px 14px 44px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:16px;outline:none;transition:border-color .2s ease}.admin-input:focus{border-color:var(--color-sage)}.admin-error-message{color:#d9534f;background-color:#fdf2f2;padding:10px 14px;border-radius:var(--radius-sm);font-size:14px}.admin-submit-btn{background-color:var(--color-sage);color:#fff;padding:14px;border-radius:var(--radius-sm);font-weight:600;font-size:16px}.admin-submit-btn:hover:not(:disabled){background-color:var(--color-sage-dark)}.admin-submit-btn:disabled{opacity:.6;cursor:not-allowed}.admin-dashboard-container{display:flex;flex-direction:column;gap:20px;max-width:900px;margin:0 auto;width:100%}.admin-header{display:flex;align-items:center;justify-content:space-between;background:var(--color-card-bg);padding:16px 24px;border-radius:var(--radius-md);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);flex-wrap:wrap;gap:16px}.admin-header-title{display:flex;align-items:center;gap:12px}.admin-header-title h1{font-size:22px;margin:0}.admin-badge{background:var(--color-sage-light);color:var(--color-sage-dark);font-size:12px;font-weight:600;padding:4px 10px;border-radius:12px}.admin-header-actions{display:flex;align-items:center;gap:10px}.qr-global-btn{display:flex;align-items:center;gap:6px;background:var(--color-sage-light);color:var(--color-sage-dark);padding:8px 14px;border-radius:var(--radius-sm);font-size:14px;font-weight:500}.qr-global-btn:hover{background:#e2ebd9}.logout-btn{display:flex;align-items:center;gap:6px;background:#fdf2f2;color:#d9534f;padding:8px 14px;border-radius:var(--radius-sm);font-size:14px;font-weight:500}.logout-btn:hover{background:#fbe6e6}.admin-tabs{display:flex;gap:8px;border-bottom:1px solid var(--color-border);padding-bottom:4px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.admin-tabs::-webkit-scrollbar{display:none}.admin-tab{display:flex;align-items:center;gap:8px;padding:10px 16px;background:none;color:var(--color-text-muted);border-radius:var(--radius-sm) var(--radius-sm) 0 0;font-weight:500;font-size:15px;white-space:nowrap;flex-shrink:0}.admin-tab:hover{color:var(--color-text-main);background:#7a8b710d}.admin-tab.active{color:var(--color-sage-dark);background:var(--color-card-bg);border:1px solid var(--color-border);border-bottom:2px solid var(--color-sage);font-weight:600}@media(max-width:600px){.admin-tabs{gap:4px}.admin-tab{padding:8px 12px;font-size:14px;gap:6px}}.section-top-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.section-top-bar h2{font-size:20px;margin:0}.icon-refresh-btn{background:var(--color-card-bg);border:1px solid var(--color-border);padding:8px;border-radius:50%;color:var(--color-text-muted)}.icon-refresh-btn:hover{color:var(--color-text-main)}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.top-bar-actions{display:flex;align-items:center;gap:10px}.primary-action-btn{display:flex;align-items:center;gap:6px;background:var(--color-sage);color:#fff;padding:10px 16px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;transition:all .2s ease}.primary-action-btn:hover{background:var(--color-sage-dark)}.secondary-action-btn{display:flex;align-items:center;gap:6px;background:var(--color-sage-light);color:var(--color-sage-dark);border:1px solid rgba(114,136,114,.25);padding:10px 16px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.secondary-action-btn:hover:not(:disabled){background:#e2ebd9;border-color:var(--color-sage);transform:translateY(-1px)}.secondary-action-btn:disabled{opacity:.6;cursor:not-allowed}.admin-error-box{background:#fdf2f2;color:#d9534f;padding:12px 16px;border-radius:var(--radius-sm);margin-bottom:16px;font-size:14px}.stats-cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:24px}.stat-card{background:var(--color-card-bg);padding:20px;border-radius:var(--radius-md);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:16px}.stat-icon-wrapper{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}.stat-icon-wrapper.photos{background:var(--color-sage-light);color:var(--color-sage-dark)}.stat-icon-wrapper.storage{background:#fbf0f0;color:var(--color-rose)}.stat-icon-wrapper.hidden{background:#f4f4f6;color:#6c757d}.stat-info{display:flex;flex-direction:column}.stat-value{font-size:22px;font-weight:700;color:var(--color-text-heading)}.stat-label{font-size:13px;color:var(--color-text-muted)}.challenge-stats-card{background:var(--color-card-bg);padding:24px;border-radius:var(--radius-md);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.challenge-stats-card h3{font-size:16px;margin-bottom:16px}.challenge-stats-list{display:flex;flex-direction:column;gap:16px}.challenge-stat-row{display:flex;flex-direction:column;gap:6px}.challenge-stat-header{display:flex;justify-content:space-between;font-size:14px}.ch-name{font-weight:500}.ch-count{color:var(--color-text-muted)}.ch-progress-bar{height:8px;background:var(--color-sage-light);border-radius:4px;overflow:hidden}.ch-progress-fill{height:100%;background:var(--color-sage);border-radius:4px}.challenges-list{display:flex;flex-direction:column;gap:12px}.challenge-card{background:var(--color-card-bg);padding:16px 20px;border-radius:var(--radius-md);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);display:flex;align-items:center;justify-content:space-between;gap:16px}.challenge-card-body{display:flex;flex-direction:column;gap:4px}.challenge-card-header{display:flex;align-items:center;gap:10px}.challenge-card-title{font-size:17px;margin:0}.challenge-slug-tag{font-size:11px;font-family:monospace;background:#f0f0f0;padding:2px 8px;border-radius:4px;color:var(--color-text-muted)}.challenge-card-desc{font-size:14px;color:var(--color-text-muted);margin:0}.challenge-card-actions{display:flex;align-items:center;gap:8px}.action-btn{display:flex;align-items:center;gap:4px;padding:6px 12px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;border:1px solid var(--color-border);background:var(--color-bg)}.action-btn.qr:hover{background:var(--color-sage-light);color:var(--color-sage-dark)}.action-btn.edit:hover{background:#eef4ff;color:#3b82f6}.action-btn.delete:hover{background:#fdf2f2;color:#d9534f}.moderation-filter-bar{display:flex;gap:16px;margin-bottom:20px;flex-wrap:wrap}.filter-group{display:flex;align-items:center;gap:8px;font-size:14px}.filter-select{padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-card-bg);font-size:14px;outline:none}.moderation-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}.moderation-card{background:var(--color-card-bg);border-radius:var(--radius-md);border:1px solid var(--color-border);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-sm)}.moderation-card.is-hidden{opacity:.75;border-color:#d9534f}.mod-thumb-container{position:relative;width:100%;padding-top:75%;background:#eee}.mod-thumb-img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}.hidden-badge{position:absolute;top:8px;right:8px;background:#d9534f;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px}.mod-card-details{padding:10px 12px;display:flex;flex-direction:column;gap:4px}.mod-filename{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mod-challenge-badge{font-size:11px;color:var(--color-text-muted)}.mod-card-actions{padding:8px 12px 12px}.mod-toggle-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px;border-radius:var(--radius-sm);font-size:13px;font-weight:500}.mod-toggle-btn.hide{background:#fdf2f2;color:#d9534f}.mod-toggle-btn.hide:hover{background:#fbe6e6}.mod-toggle-btn.unhide{background:var(--color-sage-light);color:var(--color-sage-dark)}.mod-toggle-btn.unhide:hover{background:#e2ebd9}.empty-state-box{background:var(--color-card-bg);padding:40px;text-align:center;border-radius:var(--radius-md);border:1px dashed var(--color-border);color:var(--color-text-muted);display:flex;flex-direction:column;align-items:center;gap:12px;grid-column:1 / -1}.admin-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.admin-modal-card{background:var(--color-card-bg);border-radius:var(--radius-lg);padding:24px;width:100%;max-width:480px;box-shadow:var(--shadow-lg)}.admin-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.admin-modal-header h3{font-size:18px;margin:0}.close-modal-btn{background:none;color:var(--color-text-muted)}.admin-modal-form{display:flex;flex-direction:column;gap:16px}.form-field{display:flex;flex-direction:column;gap:6px}.form-field label{font-size:14px;font-weight:500}.form-field input,.form-field textarea{padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:14px;outline:none}.form-field small{font-size:12px;color:var(--color-text-muted)}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:12px}.modal-cancel-btn{background:var(--color-bg);border:1px solid var(--color-border);padding:8px 16px;border-radius:var(--radius-sm);font-size:14px}.modal-submit-btn{background:var(--color-sage);color:#fff;padding:8px 16px;border-radius:var(--radius-sm);font-size:14px;font-weight:600}.modal-danger-btn{background:#d9534f;color:#fff;padding:8px 16px;border-radius:var(--radius-sm);font-size:14px;font-weight:600}.admin-modal-card.confirm{text-align:center}.confirm-icon.warning{color:#f59e0b;margin-bottom:12px}.qr-modal-card{max-width:400px}.qr-preview-body{display:flex;flex-direction:column;align-items:center;gap:16px}.qr-image-wrapper{background-color:#fff;background-image:linear-gradient(45deg,#f0f0f0 25%,transparent 25%),linear-gradient(-45deg,#f0f0f0 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#f0f0f0 75%),linear-gradient(-45deg,transparent 75%,#f0f0f0 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0px;padding:16px;border-radius:var(--radius-md);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.qr-code-img{width:220px;height:220px;display:block}.qr-url-text{font-size:12px;font-family:monospace;color:var(--color-text-muted);word-break:break-all;text-align:center}.qr-download-buttons{display:flex;gap:10px;width:100%}.download-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:10px;border-radius:var(--radius-sm);font-size:13px;font-weight:500}.download-btn.png{background:var(--color-sage);color:#fff}.download-btn.svg{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-main)}.page-container{display:flex;flex-direction:column;min-height:100vh;width:100%}.app-header{display:flex;align-items:center;justify-content:center;padding:16px 0;border-bottom:1px solid var(--color-border);margin-bottom:24px}.logo-link{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--color-text-heading)}.header-heart{color:var(--color-rose)}.header-title{font-family:var(--font-serif);font-size:20px;font-weight:600}.app-main{flex:1;display:flex;flex-direction:column;align-items:center;width:100%}.landing-container{display:flex;align-items:center;justify-content:center;min-height:85vh;width:100%;padding:16px}.landing-card{position:relative;background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:44px 28px;max-width:440px;width:100%;text-align:center;box-shadow:var(--shadow-md);display:flex;flex-direction:column;align-items:center;overflow:hidden}.floral-badge{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;background:var(--color-rose-light);color:var(--color-rose);margin-bottom:12px;box-shadow:0 4px 16px #d4a5a540;animation:floralFloat 4s ease-in-out infinite}.floral-divider{margin:12px 0 16px;display:flex;justify-content:center;width:100%}.landing-title{font-size:34px;margin-top:8px;color:var(--color-text-heading)}.landing-date{font-size:14px;font-weight:600;letter-spacing:1.5px;color:var(--color-sage);text-transform:uppercase;margin-top:4px}.landing-intro{font-size:16px;color:var(--color-text-muted);line-height:1.5;margin-bottom:28px}.landing-actions{display:flex;flex-direction:column;gap:12px;width:100%}.landing-btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 20px;min-height:48px;border-radius:var(--radius-md);text-decoration:none;font-size:16px;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1)}.landing-btn.primary{background:var(--color-sage);color:#fff;box-shadow:var(--shadow-sm)}.landing-btn.primary:hover{background:var(--color-sage-dark);transform:translateY(-2px);box-shadow:var(--shadow-md)}.landing-btn.primary:active{transform:translateY(0)}.landing-btn.secondary{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-main)}.landing-btn.secondary:hover{background:var(--color-card-bg);border-color:var(--color-sage);transform:translateY(-2px)}.landing-btn.secondary:active{transform:translateY(0)}.placeholder-card{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:40px 24px;max-width:440px;width:100%;text-align:center;box-shadow:var(--shadow-sm)}.gallery-container{width:100%;max-width:600px;display:flex;flex-direction:column;gap:20px}.gallery-top-bar{display:flex;align-items:center;justify-content:space-between;width:100%}.gallery-title{font-size:26px;color:var(--color-text-heading)}.upload-nav-btn{display:flex;align-items:center;gap:6px;padding:8px 14px;background:var(--color-sage-light);color:var(--color-sage-dark);border:1px solid var(--color-sage);border-radius:var(--radius-md);text-decoration:none;font-size:14px;font-weight:500;transition:all .2s ease}.upload-nav-btn:hover{background:var(--color-sage);color:#fff}.challenge-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;width:100%;scrollbar-width:thin}.challenge-tab{padding:8px 16px;border-radius:20px;background:var(--color-card-bg);border:1px solid var(--color-border);color:var(--color-text-muted);font-size:13px;font-weight:500;white-space:nowrap;transition:all .2s ease}.challenge-tab:hover{border-color:var(--color-sage);color:var(--color-text-heading)}.challenge-tab.active{background:var(--color-sage);color:#fff;border-color:var(--color-sage)}.gallery-error{padding:12px 16px;background:#fdf2f2;border:1px solid #f8d7da;border-radius:var(--radius-sm);color:#d9534f;font-size:14px}
