:root{--paper:#eae3cd;--ink:#181818;--pink:#cf2172;--pink-dark:#9e1a58;--pink-tint:#f7dbe7;--gold:#d9a520;--gold-dark:#a97d12;--gold-tint:#f5e6bd;--green:#16281a;--green-mid:#2c4a30;--lime:#a9c944;--lime-dark:#7fa02e;--blue:#3a6ea8;--blue-dark:#2b537f;--mat:#f2ecda;--brick:#b1633f;--mortar:#8a4a30}*{box-sizing:border-box}body,html{padding:0;margin:0}body{background:var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,sans-serif;padding-bottom:82px}.display{font-family:Archivo Black,ui-sans-serif,sans-serif;text-transform:none;letter-spacing:.005em;text-wrap:balance}.mono{font-family:Space Mono,ui-monospace,monospace}a{color:inherit;text-decoration:none}button{cursor:pointer}button,input,textarea{font-family:inherit}::selection{background:var(--pink);color:#fff}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.wrap{max-width:760px;margin:0 auto;padding:0 18px}.hardbtn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:2.5px solid var(--ink);border-radius:10px;padding:11px 20px;font-weight:700;font-size:14px;box-shadow:4px 4px 0 var(--ink);transition:transform .1s,box-shadow .1s;white-space:nowrap}.hardbtn:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}.hardbtn:disabled{opacity:.55;pointer-events:none}.btn-pink{background:var(--pink);color:#fff}.btn-gold{background:var(--gold);color:var(--ink)}.btn-lime{background:var(--lime);color:var(--ink)}.btn-blue{background:var(--blue);color:#fff}.btn-outline{background:var(--paper);color:var(--ink)}.btn-block{width:100%}header.topbar{background:var(--paper);position:-webkit-sticky;position:sticky;top:0;z-index:40}.logo-badge{border:2.5px solid var(--pink);border-radius:8px;padding:4px 8px;transform:rotate(-4deg);color:var(--pink);font-weight:700;font-size:13px;display:inline-flex;background:#fff}.ticker-wrap{background:var(--lime);overflow:hidden;white-space:nowrap;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink)}.ticker{display:inline-block;padding:7px 0;animation:ticker 22s linear infinite;font-weight:700;font-size:12px;letter-spacing:.04em}@keyframes ticker{0%{transform:translateX(0)}to{transform:translateX(-50%)}}@media (prefers-reduced-motion:reduce){.ticker{animation:none}}nav.bottombar{position:fixed;bottom:0;left:0;right:0;z-index:50;background:var(--green);border-top:3px solid var(--ink);display:flex;padding:6px 6px calc(6px + env(safe-area-inset-bottom))}nav.bottombar a{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 2px;border-radius:10px;color:#cfe0cf;font-size:10.5px;font-weight:700}nav.bottombar a .ic{font-size:18px}nav.bottombar a.active{background:var(--lime);color:var(--ink)}.field{width:100%;background:var(--mat);border:2.5px solid var(--ink);border-radius:10px;padding:12px 14px;color:var(--ink);font-size:14.5px;outline:none}.field::placeholder{color:#7a7a72}.label-mono{font-family:Space Mono,monospace;font-weight:700;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--pink-dark);display:block;margin-bottom:8px}.wallbg{background-color:var(--brick);background-image:repeating-linear-gradient(var(--mortar) 0 3px,transparent 3px 46px),repeating-linear-gradient(90deg,var(--mortar) 0 3px,transparent 3px 92px);position:relative}.pin-frame{position:relative;margin:0 auto 34px;max-width:340px;padding:14px;border-radius:4px;border:3px solid var(--ink);box-shadow:6px 6px 0 rgba(0,0,0,.35)}.pin-frame:before{content:"";position:absolute;top:-9px;left:50%;transform:translateX(-50%);width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#a9c9ff,var(--blue-dark) 70%);border:1.5px solid var(--ink);z-index:3}.pin-mat{border:2px solid var(--ink);border-radius:3px;padding:8px}.photo-tag,.pin-mat{background:var(--mat)}.photo-tag{position:absolute;bottom:6px;left:6px;border:1.5px solid var(--ink);border-radius:5px;padding:2px 7px;font-family:Space Mono,monospace;font-weight:700;font-size:9.5px;letter-spacing:.05em}.gallery-frame{position:relative;margin:0 auto 52px;max-width:540px;padding-top:38px;transform:rotate(var(--tilt,0deg));transform-origin:50% 0}.frame-nail{position:absolute;top:0;left:50%;transform:translateX(-50%);width:12px;height:12px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#d9d9d9,#5a5a5a 55%,#262626 100%);box-shadow:0 2px 3px rgba(0,0,0,.5);z-index:3}.frame-wire{position:absolute;top:5px;left:16px;right:16px;height:34px;overflow:visible;z-index:1}.frame-wire polyline{fill:none;stroke:#2a2320;stroke-width:1.6;vector-effect:non-scaling-stroke}.frame-wood{position:relative;padding:32px;border-radius:4px;box-shadow:inset 0 0 0 3px hsla(0,0%,100%,.35),inset 0 0 0 7px rgba(0,0,0,.5),inset 0 0 0 11px hsla(0,0%,100%,.18),inset 0 0 0 16px rgba(0,0,0,.32),inset 0 0 0 21px hsla(0,0%,100%,.1),inset 0 0 0 24px rgba(0,0,0,.4),0 24px 36px -10px rgba(0,0,0,.65),0 6px 12px rgba(0,0,0,.4)}.frame-wood:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(115deg,hsla(0,0%,100%,.28),hsla(0,0%,100%,.1) 18%,hsla(0,0%,100%,0) 32%,hsla(0,0%,100%,0) 70%,hsla(0,0%,100%,.08) 88%,hsla(0,0%,100%,.18));mix-blend-mode:screen}.frame-wood.onyx{background-color:#0c0c0c;background-image:linear-gradient(102deg,#050505,#050505 30%,#2c2c2c 46%,#3d3d3d 50%,#201f1f 54%,#050505 70%,#050505)}.frame-wood.gilt{background-color:#b8891f;background-image:linear-gradient(135deg,#e6c65a,#b8891f 35%,#8a6410 55%,#d9b33e 80%,#a87b17)}.frame-wood.lacquer{background-color:#1b1b1b;background-image:linear-gradient(180deg,#2e2e2e,#141414 50%,#262626)}.frame-wood.mahogany{background-color:#6b2a1e;background-image:repeating-linear-gradient(88deg,rgba(0,0,0,.2) 0 3px,transparent 3px 9px,rgba(255,220,190,.06) 9px 11px,transparent 11px 18px)}.frame-mat{background:#f4efe1;padding:18px 18px 14px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.14),inset 4px 4px 8px rgba(0,0,0,.2),inset -1px -1px 2px hsla(0,0%,100%,.8)}.frame-photos{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.frame-photo{position:relative;aspect-ratio:.8;overflow:hidden;background:#111;border:1px solid rgba(0,0,0,.55);box-shadow:inset 0 0 0 1px hsla(0,0%,100%,.35),0 0 0 1px rgba(0,0,0,.08)}.frame-photo img{width:100%;height:100%;object-fit:cover;display:block}.frame-caption{margin-top:7px;text-align:center;font-size:12px;letter-spacing:.1em;color:#2f2a1e}.frame-caption,.frame-where{font-family:Space Mono,monospace;font-weight:700}.frame-where{display:flex;justify-content:space-between;gap:10px;margin-top:10px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12);font-size:11.5px;letter-spacing:.04em;color:#4a4636}.frame-where span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.frame-where span:last-child{flex-shrink:0}.frame-boo{margin:16px auto 0;max-width:420px}.gallery-frame.shake{animation:shake .35s ease-in-out}.upload-box{position:relative;aspect-ratio:1;width:100%;border-radius:10px;border:2.5px dashed #8a8368;background:var(--mat);display:flex;align-items:center;justify-content:center;overflow:hidden}.upload-box img{width:100%;height:100%;object-fit:cover}@keyframes floatup{0%{transform:translate(-50%) scale(.7);opacity:1}to{transform:translate(-50%,-36px) scale(1.5);opacity:0}}.pop{animation:floatup .6s ease-out forwards}@keyframes burst{0%{transform:translate(-50%) scale(.6) rotate(0deg);opacity:1}70%{opacity:1}to{transform:translate(calc(-50% + var(--dx)),var(--dy)) scale(1.6) rotate(var(--rot));opacity:0}}.burst{position:absolute;left:50%;bottom:60%;pointer-events:none;z-index:6;animation:burst .8s cubic-bezier(.2,.7,.3,1) forwards;filter:drop-shadow(1px 1px 0 var(--ink))}@keyframes shake{0%,to{transform:translateX(0) rotate(var(--tilt))}20%{transform:translateX(-4px) rotate(calc(var(--tilt) - 1.5deg))}40%{transform:translateX(4px) rotate(calc(var(--tilt) + 1.5deg))}60%{transform:translateX(-3px) rotate(calc(var(--tilt) - 1deg))}80%{transform:translateX(3px) rotate(calc(var(--tilt) + 1deg))}}.pin-frame.shake{animation:shake .35s ease-in-out}.fx-layer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:9999}.fx-p{position:absolute;top:-60px;will-change:transform,opacity;animation-timing-function:linear;animation-fill-mode:forwards;line-height:1;filter:drop-shadow(1px 2px 0 rgba(0,0,0,.25))}@keyframes fx-fall{0%{transform:translateZ(0) rotate(0deg);opacity:0}8%{opacity:1}85%{opacity:1}to{transform:translate3d(var(--drift),115vh,0) rotate(var(--spin));opacity:0}}.fx-fall{animation-name:fx-fall}@keyframes fx-rise{0%{transform:translateZ(0) scale(.6) rotate(0deg);opacity:0}10%{opacity:1}80%{opacity:1}to{transform:translate3d(var(--drift),-115vh,0) scale(1.3) rotate(var(--spin));opacity:0}}.fx-rise{top:auto;bottom:-60px;animation-name:fx-rise;animation-timing-function:cubic-bezier(.2,.6,.4,1)}@keyframes fx-confetti{0%{transform:translateZ(0) rotate(0deg) rotateX(0deg);opacity:1}90%{opacity:1}to{transform:translate3d(var(--drift),112vh,0) rotate(var(--spin)) rotateX(2turn);opacity:0}}.fx-confetti{animation-name:fx-confetti;filter:none;box-shadow:0 0 0 1px rgba(0,0,0,.15)}@keyframes bounce{0%,to{transform:translateY(0) rotate(var(--tilt))}40%{transform:translateY(-8px) scale(1.02) rotate(var(--tilt))}70%{transform:translateY(2px) rotate(var(--tilt))}}.pin-frame.bounce{animation:bounce .4s ease-out}@keyframes spin{to{transform:rotate(1turn)}}.spin{animation:spin .8s linear infinite}.chip{display:inline-flex;align-items:center;gap:6px;border:2px solid var(--ink);border-radius:999px;padding:4px 12px;font-family:Space Mono,monospace;font-weight:700;font-size:11px;letter-spacing:.04em;text-transform:uppercase}img{max-width:100%}