.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fn-topnav{position:sticky;top:0;z-index:80;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px;background:#ffffffe0;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid rgba(43,31,40,.07)}.fn-back{display:flex;align-items:center;gap:5px;font:600 13px Inter,sans-serif;color:#2b1f288c;text-decoration:none;padding:6px 10px;border-radius:99px;background:#2b1f280d;transition:background .15s,color .15s}.fn-back:hover{background:#2b1f281a;color:#2b1f28}.fn-nav-title{font:700 14px Inter,sans-serif;color:#2b1f28;position:absolute;left:50%;transform:translate(-50%);white-space:nowrap;pointer-events:none}.fn-nav-btn{display:flex;align-items:center;gap:5px;font:700 13px Inter,sans-serif;color:#f45b8c;background:#f45b8c1a;border:none;cursor:pointer;padding:7px 14px;border-radius:99px;border:1px solid rgba(244,91,140,.2);transition:background .15s,transform .1s}.fn-nav-btn:active{transform:scale(.94)}.fn-hero{position:relative;overflow:hidden;padding:48px 20px 56px;background:linear-gradient(160deg,#fff0f3,#ffe8d9,#ede9ff 80%,#fff5f0);text-align:center}.fn-hero-blob{position:absolute;border-radius:50%;pointer-events:none;filter:blur(60px);z-index:0}.fn-hero-blob-1{width:300px;height:300px;top:-80px;left:-80px;background:radial-gradient(circle,rgba(244,91,140,.2),transparent);opacity:.7}.fn-hero-blob-2{width:250px;height:250px;bottom:-60px;right:-60px;background:radial-gradient(circle,rgba(199,184,255,.3),transparent);opacity:.6}.fn-hero-blob-3{width:200px;height:200px;top:50%;left:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(255,122,89,.1),transparent);opacity:.5}.fn-hero-inner{position:relative;z-index:1;max-width:560px;margin:0 auto}.fn-hero-eyebrow{font:700 11px Inter,sans-serif;color:#2b1f2866;text-transform:uppercase;letter-spacing:.12em;margin-bottom:14px}.fn-hero-title{font-family:Playfair Display,serif;font-weight:700;font-style:italic;font-size:clamp(32px,8vw,52px);line-height:1.15;color:#2b1f28;margin-bottom:14px}.fn-hero-sub{font:400 16px/1.6 Inter,sans-serif;color:#2b1f288c;margin-bottom:20px}.fn-count-chip{display:inline-flex;align-items:baseline;gap:5px;background:#f45b8c1a;border:1px solid rgba(244,91,140,.2);border-radius:99px;padding:5px 14px;margin-bottom:24px}.fn-count-num{font:700 18px Inter,sans-serif;color:#f45b8c}.fn-count-label{font:600 12px Inter,sans-serif;color:#f45b8cb3}.fn-hero-cta{margin-top:4px}.fn-hero-locked,.fn-hero-unlocked{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;font:500 13px Inter,sans-serif;color:#2b1f2880;background:#ffffffb3;border:1px solid rgba(43,31,40,.1);border-radius:99px;padding:8px 12px 8px 16px;backdrop-filter:blur(10px)}.fn-hero-unlock{background:linear-gradient(135deg,#f45b8c,#ff7a59);color:#fff;border:none;cursor:pointer;font:700 12px Inter,sans-serif;padding:6px 14px;border-radius:99px;box-shadow:0 4px 14px #f45b8c59;transition:transform .15s,box-shadow .15s}.fn-hero-unlock:active{transform:scale(.94);box-shadow:none}.fn-hero-unlocked{border-color:#22c55e4d;background:#f0fff4cc;color:#15803d}.fn-hero-upload-btn{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,#f45b8c,#c7b8ff);color:#fff;border:none;cursor:pointer;font:700 12px Inter,sans-serif;padding:6px 14px;border-radius:99px;box-shadow:0 4px 14px #f45b8c4d;transition:transform .15s,box-shadow .15s}.fn-hero-upload-btn:active{transform:scale(.94)}.fn-gallery-section{padding:28px 14px 100px;background:linear-gradient(180deg,#fff5f0,#fff0f3);min-height:40vh}@media(min-width:640px){.fn-gallery-section{padding:36px 24px 120px}}@media(min-width:1024px){.fn-gallery-section{padding:44px 40px 140px}}.fn-masonry{columns:2;column-gap:10px;max-width:1200px;margin:0 auto}@media(min-width:540px){.fn-masonry{columns:3;column-gap:12px}}@media(min-width:900px){.fn-masonry{columns:4;column-gap:14px}}.fn-card{break-inside:avoid;margin-bottom:10px;cursor:pointer;position:relative;will-change:transform;opacity:0}@media(min-width:540px){.fn-card{margin-bottom:12px}}.fn-card.fn-visible{opacity:1}@keyframes fn-card-in{0%{opacity:0;transform:translateY(18px) rotate(var(--rot, 0deg)) scale(.97)}to{opacity:1;transform:translateY(0) rotate(var(--rot, 0deg)) scale(1)}}.fn-card-anim{animation:fn-card-in .55s cubic-bezier(.16,1,.3,1) both}.fn-card-inner{background:#fff;border-radius:16px;overflow:hidden;border:4px solid #fff;box-shadow:0 4px 18px #2b1f281a,0 1px 4px #2b1f2812;transform:rotate(var(--rot, 0deg));transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .3s ease;user-select:none}.fn-card:hover .fn-card-inner,.fn-card:focus-visible .fn-card-inner{transform:rotate(0) scale(1.04) translateY(-5px);box-shadow:0 20px 50px #2b1f282e,0 4px 12px #2b1f281a}.fn-card:active .fn-card-inner{transform:rotate(0) scale(.97);box-shadow:0 4px 12px #2b1f281a;transition-duration:.1s}.fn-img-wrap{position:relative;overflow:hidden;display:block}.fn-img{width:100%;height:auto;display:block}.fn-img-shine{position:absolute;inset:0;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.18) 0%,transparent 60%);border-radius:inherit}.fn-caption{padding:8px 10px 10px;font:500 12px/1.4 Inter,sans-serif;color:#2b1f2899;background:#fff;margin:0}.fn-empty{max-width:400px;margin:40px auto;background:#ffffffbf;border:1px dashed rgba(244,91,140,.3);border-radius:28px;padding:48px 32px;text-align:center;backdrop-filter:blur(10px)}.fn-empty-icon{font-size:48px;margin-bottom:16px;display:block}.fn-empty-title{font-family:Playfair Display,serif;font-weight:700;font-style:italic;font-size:20px;color:#2b1f28;margin-bottom:8px}.fn-empty-sub{font:400 14px/1.6 Inter,sans-serif;color:#2b1f2880;margin-bottom:24px}.fn-empty-btn{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#f45b8c,#c7b8ff);color:#fff;border:none;cursor:pointer;font:700 14px Inter,sans-serif;padding:13px 24px;border-radius:99px;box-shadow:0 6px 20px #f45b8c4d;transition:transform .15s,box-shadow .15s}.fn-empty-btn:active{transform:scale(.95);box-shadow:none}.fn-fab{position:fixed;bottom:max(28px,env(safe-area-inset-bottom,20px));right:20px;z-index:50;width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f45b8c,#c7b8ff);border:none;cursor:pointer;color:#fff;box-shadow:0 8px 28px #f45b8c66,0 3px 8px #f45b8c33;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s ease;will-change:transform}@media(min-width:640px){.fn-fab{bottom:36px;right:32px;width:64px;height:64px}}.fn-fab:hover{transform:scale(1.08) translateY(-2px);box-shadow:0 14px 36px #f45b8c80,0 4px 12px #f45b8c40}.fn-fab:active{transform:scale(.92);box-shadow:0 4px 12px #f45b8c4d}.fn-fab-badge{position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;border-radius:10px;padding:0 5px;background:#ff7a59;color:#fff;font:700 11px Inter,sans-serif;display:flex;align-items:center;justify-content:center;border:2px solid #fff}@keyframes fn-fab-pulse{0%,to{box-shadow:0 8px 28px #f45b8c66,0 0 #f45b8c66}50%{box-shadow:0 8px 28px #f45b8c66,0 0 0 10px #f45b8c00}}.fn-fab.fn-fab-pulse{animation:fn-fab-pulse 2.5s ease-in-out infinite}.fn-backdrop{position:fixed;inset:0;z-index:60;background:#2b1f2873;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);transition:opacity .25s ease}.fn-backdrop.hidden{opacity:0;pointer-events:none}.fn-sheet{position:fixed;bottom:0;left:0;right:0;z-index:70;background:#fff;border-radius:24px 24px 0 0;padding:0 0 max(24px,env(safe-area-inset-bottom));box-shadow:0 -8px 40px #2b1f2826;transform:translateY(100%);transition:transform .4s cubic-bezier(.16,1,.3,1);max-height:90svh;overflow-y:auto;overscroll-behavior:contain}.fn-sheet.fn-sheet-open{transform:translateY(0)}.fn-sheet.hidden{display:none}.fn-sheet-handle{width:40px;height:4px;border-radius:2px;background:#2b1f2826;margin:12px auto 0}.fn-step{padding:20px 24px 28px}.fn-step-icon{width:52px;height:52px;border-radius:16px;background:#f45b8c1a;border:1.5px solid rgba(244,91,140,.2);display:flex;align-items:center;justify-content:center;font-size:26px;margin:0 auto 16px}.fn-step-icon-success{background:#22c55e1a;border-color:#22c55e40;font-size:24px;color:#22c55e;font-weight:700;font-family:Inter,sans-serif}.fn-step-title{font-family:Playfair Display,serif;font-weight:700;font-style:italic;font-size:22px;color:#2b1f28;text-align:center;margin-bottom:6px}.fn-step-sub{font:400 14px/1.5 Inter,sans-serif;color:#2b1f2880;text-align:center;margin-bottom:24px}.fn-pw-wrap{position:relative;margin-bottom:8px;border:1.5px solid rgba(43,31,40,.12);border-radius:14px;background:#fffffff2;transition:border-color .15s,box-shadow .15s}.fn-pw-wrap:focus-within{border-color:#f45b8c;box-shadow:0 0 0 3px #f45b8c26}.fn-pw-wrap.fn-pw-error{border-color:#ef4444;box-shadow:0 0 0 3px #ef44441f}.fn-pw-input{width:100%;padding:14px 48px 14px 16px;font:500 16px Inter,sans-serif;color:#2b1f28;background:transparent;border:none;outline:none;border-radius:14px;box-sizing:border-box}.fn-pw-toggle{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:#2b1f2866;padding:4px;transition:color .15s}.fn-pw-toggle:hover{color:#2b1f28b3}@keyframes fn-shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.fn-pw-wrap.fn-shaking{animation:fn-shake .45s cubic-bezier(.36,.07,.19,.97)}.fn-pw-error{font:500 13px Inter,sans-serif;color:#ef4444;text-align:center;margin-bottom:8px}.fn-pw-submit{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:15px;background:linear-gradient(135deg,#f45b8c,#ff7a59);color:#fff;border:none;cursor:pointer;font:700 15px Inter,sans-serif;border-radius:14px;box-shadow:0 6px 20px #f45b8c59;transition:transform .15s,box-shadow .15s,opacity .15s;margin-top:12px}.fn-pw-submit:active{transform:scale(.97)}.fn-pw-submit:disabled{opacity:.55;cursor:not-allowed}.fn-upload-opts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}.fn-upload-opt{display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 12px;border:1.5px solid rgba(43,31,40,.1);border-radius:20px;background:#fffc;cursor:pointer;transition:all .18s ease}.fn-upload-camera{border-color:#f45b8c40;background:#f45b8c0a}.fn-upload-library{border-color:#c7b8ff59;background:#c7b8ff12}.fn-upload-opt:hover,.fn-upload-opt:active{transform:scale(.97);border-color:#f45b8c;box-shadow:0 4px 16px #f45b8c26}.fn-upload-opt-icon{font-size:36px;line-height:1}.fn-upload-opt-label{font:700 13px Inter,sans-serif;color:#2b1f28}.fn-queue{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.fn-queue-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;background:#2b1f2808;border:1px solid rgba(43,31,40,.07)}.fn-queue-thumb{width:48px;height:48px;border-radius:10px;object-fit:cover;flex-shrink:0;border:2px solid rgba(43,31,40,.08)}.fn-queue-info{flex:1;min-width:0}.fn-queue-name{font:600 13px Inter,sans-serif;color:#2b1f28;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.fn-queue-bar-wrap{height:4px;border-radius:2px;background:#2b1f281a;overflow:hidden}.fn-queue-bar{height:100%;border-radius:2px;background:linear-gradient(90deg,#f45b8c,#c7b8ff);transition:width .3s ease;width:0%}.fn-queue-status{font:500 11px Inter,sans-serif;color:#2b1f2873;margin-top:3px}.fn-queue-icon{flex-shrink:0;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px}.fn-queue-icon-pending{background:#2b1f2812}.fn-queue-icon-done{background:#22c55e26;animation:fn-check-pop .4s cubic-bezier(.16,1,.3,1)}.fn-queue-icon-error{background:#ef44441a}@keyframes fn-check-pop{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.fn-sheet-close{display:block;width:100%;padding:13px;background:#2b1f280d;border:none;cursor:pointer;font:600 14px Inter,sans-serif;color:#2b1f2880;border-radius:14px;transition:background .15s}.fn-sheet-close:hover{background:#2b1f2817}.fn-lb{position:fixed;inset:0;z-index:90;display:flex;flex-direction:column;align-items:center;justify-content:center}.fn-lb.hidden{display:none}.fn-lb-backdrop{position:absolute;inset:0;background:#0a0609ed;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.fn-lb-close{position:absolute;top:max(16px,env(safe-area-inset-top));right:16px;z-index:2;width:40px;height:40px;border-radius:50%;background:#ffffff1f;border:none;cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);transition:background .15s,transform .15s}.fn-lb-close:hover{background:#fff3}.fn-lb-close:active{transform:scale(.88)}.fn-lb-stage{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;width:100%;flex:1;padding:60px 16px 8px;box-sizing:border-box}.fn-lb-img-wrap{display:flex;align-items:center;justify-content:center;max-width:100%;max-height:100%;transition:transform .35s cubic-bezier(.16,1,.3,1),opacity .25s ease}.fn-lb-img-wrap.fn-lb-entering{animation:fn-lb-in .4s cubic-bezier(.16,1,.3,1) both}@keyframes fn-lb-in{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}.fn-lb-img{max-width:min(95vw,900px);max-height:calc(100dvh - 140px);border-radius:14px;display:block;box-shadow:0 30px 80px #00000080;object-fit:contain;user-select:none;-webkit-user-drag:none}.fn-lb-footer{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:10px 20px max(20px,env(safe-area-inset-bottom));width:100%;box-sizing:border-box;gap:12px}.fn-lb-caption{font:400 14px/1.5 Inter,sans-serif;color:#ffffffb3;flex:1;margin:0;text-align:left}.fn-lb-counter{font:700 12px Inter,sans-serif;color:#fff6;white-space:nowrap;flex-shrink:0}.fn-lb-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;background:#ffffff1f;border:none;cursor:pointer;color:#fff;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);transition:background .15s,transform .15s}.fn-lb-nav:hover{background:#ffffff38}.fn-lb-nav:active{transform:translateY(-50%) scale(.88)}.fn-lb-prev{left:12px}.fn-lb-next{right:12px}@media(max-width:480px){.fn-lb-prev{left:6px}.fn-lb-next{right:6px}}.fn-toasts{position:fixed;bottom:100px;left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:max-content;max-width:calc(100vw - 32px)}.fn-toast{display:flex;align-items:center;gap:8px;padding:11px 18px;border-radius:99px;font:600 13px Inter,sans-serif;color:#fff;box-shadow:0 8px 24px #0003;backdrop-filter:blur(12px);animation:fn-toast-in .4s cubic-bezier(.16,1,.3,1) both}.fn-toast-success{background:#22c55ee6}.fn-toast-error{background:#ef4444e0}.fn-toast-info{background:#2b1f28d9}@keyframes fn-toast-in{0%{opacity:0;transform:translateY(12px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fn-toast-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.88)}}@keyframes fn-new-card{0%{opacity:0;transform:rotate(var(--rot,0deg)) scale(.8) translateY(-10px)}to{opacity:1;transform:rotate(var(--rot,0deg)) scale(1) translateY(0)}}.fn-card-new{animation:fn-new-card .55s cubic-bezier(.16,1,.3,1) both}@keyframes fn-drift{0%,to{transform:translateY(0)}30%{transform:translateY(var(--drift-y, -4px))}70%{transform:translateY(calc(var(--drift-y, -4px) * -.2))}}.fn-drift-wrap{animation:fn-drift var(--drift-dur, 3.5s) ease-in-out var(--drift-delay, 0s) infinite}.fn-card:hover .fn-drift-wrap,.fn-card:focus-visible .fn-drift-wrap{animation-play-state:paused}.fn-card-overlap{margin-top:-22px;position:relative;z-index:3}@keyframes fn-sparkle-fly{0%{transform:translate(0) rotate(0) scale(1);opacity:1}to{transform:translate(var(--dx,0px),var(--dy,-60px)) rotate(var(--dr,30deg)) scale(.1);opacity:0}}.fn-sparkle{position:fixed;pointer-events:none;z-index:9999;animation:fn-sparkle-fly .75s ease-out forwards;transform-origin:center;line-height:1;user-select:none}.fn-mosaic-overlay{position:fixed;inset:0;z-index:95;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;box-sizing:border-box}.fn-mosaic-overlay.hidden{display:none}.fn-mosaic-bg{position:absolute;inset:0;background:#0a0609f5;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.fn-mosaic-inner{position:relative;z-index:1;width:100%;max-width:1000px;display:flex;flex-direction:column;align-items:center;gap:20px}.fn-mosaic-close{position:absolute;top:-8px;right:0;width:40px;height:40px;border-radius:50%;background:#ffffff1f;border:none;cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;transition:background .15s}.fn-mosaic-close:hover{background:#ffffff38}.fn-mosaic-eyebrow{display:block;font:700 11px Inter,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:#f45b8ccc;margin-bottom:4px;text-align:center}.fn-mosaic-title{font-family:Playfair Display,serif;font-weight:900;font-style:italic;font-size:clamp(28px,8vw,64px);color:#ffffff1f;text-align:center;margin:0;letter-spacing:.04em}.fn-mosaic-canvas-wrap{position:relative;width:100%;border-radius:16px;overflow:hidden}.fn-mosaic-canvas{display:block;width:100%;height:auto;border-radius:16px;box-shadow:0 20px 60px #f45b8c4d;cursor:zoom-in;transition:transform .4s cubic-bezier(.16,1,.3,1)}.fn-mosaic-canvas.fn-mosaic-zoomed{cursor:zoom-out}@keyframes fn-mosaic-sweep{0%{clip-path:inset(0 101% 0 0 round 8px)}to{clip-path:inset(0 0% 0 0 round 8px)}}.fn-mosaic-canvas.fn-mosaic-built{animation:fn-mosaic-sweep 1.5s cubic-bezier(.16,1,.3,1) both}@keyframes fn-mosaic-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes fn-mosaic-inner-in{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.fn-mosaic-overlay.fn-mosaic-open{animation:fn-mosaic-overlay-in .3s ease both}.fn-mosaic-overlay.fn-mosaic-open .fn-mosaic-inner{animation:fn-mosaic-inner-in .5s cubic-bezier(.16,1,.3,1) .08s both}.fn-mosaic-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:#fff9;font:500 14px Inter,sans-serif;background:#0a060999}.fn-mosaic-loading.hidden{display:none}@keyframes fn-spin{to{transform:rotate(360deg)}}.fn-mosaic-spinner{width:32px;height:32px;border-radius:50%;border:3px solid rgba(244,91,140,.2);border-top-color:#f45b8c;animation:fn-spin .8s linear infinite}.fn-mosaic-sub{font:500 13px Inter,sans-serif;color:#ffffff59;text-align:center;margin:0}.fn-gallery-header{display:flex;align-items:center;justify-content:space-between;padding:0 4px;margin-bottom:16px;max-width:1200px;margin-left:auto;margin-right:auto}.fn-gallery-count-label{font:600 12px Inter,sans-serif;color:#2b1f2866;margin:0 0 16px}.fn-mosaic-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:99px;font:700 12px Inter,sans-serif;color:#fff;background:linear-gradient(135deg,#f45b8ce6,#c7b8ffe6);border:none;cursor:pointer;box-shadow:0 4px 16px #f45b8c40;transition:transform .15s,box-shadow .15s;margin-bottom:16px}.fn-mosaic-btn:hover{transform:scale(1.04)}.fn-mosaic-btn:active{transform:scale(.95)}
