/* Immutable photo-frame v1 series. All ornamentation is outside the original image. */
.keepsake .pf-master,.pf-master{--gold:#b68b48;position:relative;isolation:isolate;box-sizing:border-box;margin:0;overflow:hidden;color:#9f753b;background:repeating-linear-gradient(12deg,#fff9ea 0 3px,#faf1df 4px 5px);border:1px solid var(--gold);border-radius:15px;padding:30px 13px 10px;box-shadow:0 5px 12px #62401720,inset 0 0 0 3px #fffdf3,inset 0 0 0 4px #d8bd88;transform:none}
.keepsake .pf-master:before,.keepsake .pf-master:after{display:none}.pf-master .photo-window{position:relative;z-index:2;padding:6px;border:1px solid #c6a76b;background:#fffdf6;border-radius:10px;box-shadow:0 3px 8px #5634152e;overflow:hidden}.keepsake .pf-master .image-shell,.pf-master .image-shell{height:auto!important;min-height:0!important;aspect-ratio:var(--photo-ratio,auto);display:block;background:transparent}.keepsake .pf-master .photo-window img,.pf-master .photo-window img{width:100%;height:auto;max-height:none;display:block;object-fit:contain!important;border-radius:4px;filter:none}.pf-master figcaption{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:9px;min-height:24px;padding:0 4px;color:#684823}.pf-caption{font-size:14px;letter-spacing:.03em}.pf-master .photo-count{font-size:14px;white-space:nowrap;color:#775226;background:transparent;border:0;padding:0}.pf-art{position:absolute;z-index:0;display:block;pointer-events:none;color:#b28b51;opacity:.6}.pf-art svg{display:block;width:100%;height:100%}.pf-left{left:0;top:0;width:100px;height:60px}.pf-right{right:0;bottom:12px;width:90px;height:64px}.pf-stamp{position:absolute;top:5px;right:17px;border:1px solid #a67d42;border-radius:50%;padding:6px 9px;font-size:10px;text-align:center;line-height:1.1;transform:rotate(12deg);z-index:1}.pf-seal{position:absolute;top:6px;left:50%;transform:translateX(-50%);font-size:13px;letter-spacing:.2em}.pf-master.portrait{padding:31px 44px 11px}.keepsake .pf-master.portrait .photo-window,.pf-master.portrait .photo-window{width:100%;max-width:270px;margin:auto}.pf-master.portrait .pf-left{width:65px;height:120px;top:26%;left:-8px}.pf-master.portrait .pf-right{width:62px;height:120px;bottom:15%;right:-7px}.pf-master.portrait .pf-caption{font-size:13px}.pf-master.portrait figcaption{margin-left:-29px;margin-right:-29px}
/* PF01: double-bordered illustrated travel postcard. */
.pf-PF01-v1{border-radius:19px 19px 12px 12px!important;padding-top:39px!important}.pf-PF01-v1 .pf-left{top:0;width:130px;height:52px}.pf-PF01-v1 .pf-right{bottom:6px}.pf-PF01-v1 .photo-window{border:3px double #c69b50;border-radius:18px 18px 7px 7px}.pf-PF01-v1 figcaption .pf-caption{background:#fffaf0;padding:3px 8px;clip-path:polygon(2% 0,97% 4%,100% 90%,3% 100%,0 10%)}
/* PF02: certificate mat, mirrored botanical gold and clean tailored corners. */
.keepsake .pf-PF02-v1,.pf-PF02-v1{padding:31px 23px 13px;background:linear-gradient(135deg,#fffaf0,#f7e8c6 50%,#fffaf2);border-radius:9px;border:3px double #b0873e;box-shadow:inset 0 0 0 5px #fffaf0,inset 0 0 0 6px #d6b66e,0 6px 12px #67482125}.pf-PF02-v1 .pf-left{top:20%;left:-28px;width:84px;height:155px;opacity:.8}.pf-PF02-v1 .pf-right{top:20%;right:-28px;width:84px;height:155px;transform:scaleX(-1);opacity:.8}.pf-PF02-v1 .photo-window{border:4px double #b28a40;border-radius:2px;padding:8px;background:#fffdf4;box-shadow:0 1px 0 3px #ecd9b0}.pf-PF02-v1 figcaption{border-top:1px solid #d9bc7e;padding-top:8px;justify-content:center}.pf-PF02-v1 .pf-caption{letter-spacing:.08em}.pf-PF02-v1 .photo-count{position:absolute;right:0;font-size:12px}
/* PF03: scrapbook layering, taped photo paper and a torn handwritten note. */
.keepsake .pf-PF03-v1,.pf-PF03-v1{padding:26px 19px 36px;background:repeating-linear-gradient(0deg,#f9f0dc 0 22px,#e7d9ba 23px,#f9f0dc 24px);border-radius:7px;box-shadow:inset 7px 0 #e2d0ac,inset 9px 0 #fff8e8,0 5px 9px #63421a24}.pf-PF03-v1 .photo-window{border:0;padding:9px 9px 20px;border-radius:1px;box-shadow:2px 4px 6px #65431b38}.pf-tape{position:absolute;z-index:3;left:34%;top:14px;width:34%;height:21px;background:repeating-linear-gradient(45deg,#cbb9889c 0 4px,#dfd2aeb0 4px 8px);transform:rotate(-5deg);clip-path:polygon(2% 0,100% 3%,97% 94%,0 100%)}.pf-note{position:absolute;bottom:5px;right:17px;font-size:14px;background:#fff9e8;padding:4px 12px;transform:rotate(-3deg);box-shadow:1px 2px 3px #75521b26;z-index:3}.pf-PF03-v1 .pf-stamp{top:auto;bottom:12px;left:15px;right:auto;transform:rotate(-12deg);font-size:11px}.pf-PF03-v1 .pf-left{top:auto;bottom:15px;height:95px;left:-15px}.pf-PF03-v1 figcaption{margin-top:5px;justify-content:flex-end}.pf-PF03-v1 .pf-caption{display:none}.pf-PF03-v1.portrait{padding-bottom:40px}
/* PF04: perforated ticket edge, postmark and mountain-sea line work. */
.keepsake .pf-PF04-v1,.pf-PF04-v1{padding:39px 20px 13px;border-radius:3px;border:1px solid #aa8151;outline:3px dotted #c3a777;outline-offset:-7px;background:linear-gradient(110deg,#f0dfbb,#fff6e2 48%,#ead6ad);box-shadow:0 5px 8px #5d3d2024}.pf-ticket{position:absolute;top:8px;left:15px;font-size:13px;letter-spacing:.08em;border-bottom:1px dashed #ac8a56;padding-bottom:3px}.pf-PF04-v1 .pf-stamp{top:3px;right:14px;font-size:10px;padding:7px;border-radius:4px;border:2px dotted #967045}.pf-PF04-v1 .photo-window{border:1px solid #96724b;border-radius:3px;padding:5px;box-shadow:inset 0 0 0 2px #eee0c4}.pf-PF04-v1 .pf-left{top:auto;bottom:1px;width:100px}.pf-PF04-v1 .pf-right{top:0;height:45px;right:50px}.pf-PF04-v1 figcaption{border-top:1px dashed #ad8b56;padding-top:7px;font-size:13px}.pf-PF04-v1.portrait .pf-right{right:-8px;top:30%;height:90px}
/* PF05: restrained Japanese cream stationery, blossom and small vermilion seal. */
.keepsake .pf-PF05-v1,.pf-PF05-v1{padding:25px 17px 14px;border-radius:18px;background:linear-gradient(145deg,#fffcf3,#f8f1df);box-shadow:inset 0 0 0 5px #fffaf0,0 3px 9px #654f221a;border:1px solid #c7ad76}.pf-PF05-v1 .photo-window{border:1px solid #c6b384;border-radius:12px;padding:6px;box-shadow:none}.pf-PF05-v1 .pf-left{top:0;left:3px;width:42px;height:30px;color:#b58c77;opacity:.65}.pf-PF05-v1 .pf-right{bottom:0;right:12px;width:50px;height:30px;opacity:.3}.pf-PF05-v1 .pf-seal{left:auto;right:18px;top:3px;transform:none;border:1px solid #ac7460;color:#9a5f4e;font-size:10px;padding:0 3px;letter-spacing:.1em}.pf-PF05-v1 figcaption{justify-content:center}.pf-PF05-v1 .photo-count{position:absolute;right:0;font-size:12px}.pf-PF05-v1 .pf-caption{font-size:14px;letter-spacing:.07em}.pf-PF05-v1.portrait .pf-left{width:42px;height:60px;left:0;top:20%}
.frame-picker{width:min(710px,calc(100vw - 22px));max-height:90dvh;overflow:auto;padding:18px;border:1px solid #bb985b;border-radius:22px;background:#fff8e9;color:#51341f;font-family:PlayerKai,serif;box-shadow:0 20px 60px #34211250}.frame-picker::backdrop{background:#33271ac9}.frame-picker-head{display:flex;justify-content:space-between;align-items:center}.frame-picker h2{font-size:25px;margin:0}.frame-picker p{font-size:18px}.frame-close{font-size:25px;min-width:44px;min-height:44px}.frame-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.frame-option{min-width:0;display:block;padding:8px;border:1px solid #ddcba5;border-radius:14px;background:#fbf2de;color:#4c301b;cursor:pointer}.frame-option[aria-pressed=true]{outline:2px solid #a47835;background:#f2dfb9}.frame-option strong{display:block;font-size:17px;margin:8px 0 1px}.frame-option .pf-master{pointer-events:none}.frame-option .pf-caption,.frame-option .pf-note,.frame-option .pf-ticket,.frame-option .pf-seal,.frame-option .pf-stamp,.frame-option .photo-count{font-size:8px!important}.frame-option .pf-master{padding:22px 8px 7px!important}.frame-option .pf-master.portrait{padding-inline:20px!important}.frame-option .photo-window{padding:3px}.frame-option figcaption{margin-left:0!important;margin-right:0!important}.frame-option .image-shell{min-height:0}.gallery .thumb{background:#fff7e6;border:1px solid #d1b987;border-radius:12px}.gallery .thumb.selected{outline:2px solid #ae823c;background:#f4e3bc}.gallery .badge{background:#795727;color:#fff9e8}.gallery .image-shell{background:#fbf3e1;border-radius:10px}
.keepsake .pf-master.portrait{padding-left:38px;padding-right:38px}.keepsake .pf-master.portrait figcaption{margin-left:-25px;margin-right:-25px}.keepsake .pf-master.portrait .photo-count{flex-shrink:0}
@media(max-width:375px){.keepsake .pf-master.portrait{padding-inline:34px}.keepsake .pf-master.portrait figcaption{margin-left:-21px;margin-right:-21px}.pf-caption{font-size:13px}.pf-master .photo-count{font-size:12px}.frame-picker{padding:13px}.frame-options{gap:8px}}
