:root{--stone:#D7C094;--stone-lt:#EAD9B5;--mortar:#9E8660;--night:#1B1611;--night-2:#2A231B;--paper:#FBF7EE;--ink:#1B1611;--lips:#C8102E;--tape:#F2E6B3;--h:clamp(260px,44vh,430px)}@media (max-width:720px){:root{--h:clamp(220px,34vh,280px)}}*{box-sizing:border-box}body,html{margin:0;height:100%}body{background:var(--night);color:var(--paper);font-family:Karla,system-ui,sans-serif;font-size:16px;line-height:1.45;display:flex;flex-direction:column;min-height:100vh}button{font:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--tape);outline-offset:3px}.bar{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:18px clamp(16px,4vw,40px) 10px}.wordmark{font-family:Anton,Impact,sans-serif;font-size:clamp(28px,5vw,44px);letter-spacing:.02em;line-height:1;text-transform:uppercase;color:var(--stone-lt);margin:0}.wordmark small{display:block;font-family:Karla,sans-serif;font-weight:500;font-size:clamp(12px,1.6vw,14px);letter-spacing:.14em;color:var(--stone);margin-top:6px;direction:rtl;text-transform:none}.count{text-align:right;color:var(--stone);font-size:14px;letter-spacing:.06em}.count b{display:block;font-family:Anton,Impact,sans-serif;font-size:clamp(26px,4vw,40px);line-height:1;color:var(--lips);letter-spacing:.02em}.stage{position:relative;margin-top:auto;margin-bottom:auto}.scroller{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:-webkit-grab;cursor:grab}.scroller::-webkit-scrollbar{display:none}.scroller.dragging{cursor:-webkit-grabbing;cursor:grabbing;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wall{width:max-content;min-width:100%;display:flex;align-items:flex-end;background-color:var(--stone);background-image:url(/wall/tile.jpg);background-repeat:repeat-x;background-size:auto 100%;background-position:calc(var(--h) * 3) 0;box-shadow:inset 0 0 0 1px #000,0 30px 60px -20px #000}.cornerstone,.wall{position:relative;height:var(--h)}.cornerstone{width:calc(var(--h) * 3);flex:none;display:block;z-index:1;-webkit-mask-image:linear-gradient(90deg,#000 96%,transparent);mask-image:linear-gradient(90deg,#000 96%,transparent)}.kissers{display:flex;align-items:flex-end;flex:none;height:100%;margin-left:calc(var(--h) * -1);position:relative;z-index:2}.tail{width:calc(var(--h)*2.2)}.k,.tail{flex:none}.k{position:relative;margin:0;margin-right:calc(var(--h)*-.05);margin-bottom:calc(var(--h)*-.035);height:calc(var(--h)*.96);animation:arrive .5s cubic-bezier(.2,1.4,.4,1) both;transform-origin:50% 100%}.k.old{animation:none}@keyframes arrive{0%{transform:translateY(10px) scale(.9);opacity:0}}.k img{height:100%;width:auto;display:block;filter:drop-shadow(calc(var(--h)*-.01) calc(var(--h)*.012) calc(var(--h)*.012) rgba(30,15,0,.45))}.k .tag{position:absolute;left:50%;bottom:calc(var(--h)*.02);transform:translateX(-50%) rotate(-2deg);background:var(--tape);color:var(--ink);font-family:Permanent Marker,cursive;font-size:calc(var(--h)*.045);line-height:1;padding:.25em .6em;white-space:nowrap;box-shadow:0 1px 2px rgba(0,0,0,.4);opacity:0;transition:opacity .15s;pointer-events:none}.k.show .tag,.k:focus-within .tag,.k:hover .tag{opacity:.95}.k .tag:empty{display:none}.track{height:4px;background:var(--night-2);position:relative;margin:0 clamp(16px,4vw,40px)}.track,.track i{border-radius:2px}.track i{position:absolute;top:0;height:100%;background:var(--stone);left:0;width:10%}.cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 24px;padding:22px clamp(16px,4vw,40px) 28px}.cta p{margin:0;color:var(--stone);max-width:44ch}.cta p b{color:var(--stone-lt)}.btn{border:0;border-radius:999px;padding:14px 22px;font-weight:700;letter-spacing:.02em;background:var(--lips);color:#fff;display:inline-flex;align-items:center;gap:10px;box-shadow:0 8px 24px -8px rgba(200,16,46,.8)}.btn:hover{filter:brightness(1.08)}.btn:disabled{opacity:.6;cursor:default;filter:none}.btn svg{width:22px;height:auto}.btn.ghost{background:transparent;color:var(--stone-lt);box-shadow:inset 0 0 0 1.5px var(--mortar);padding:12px 18px}.actions{display:flex;gap:10px;flex-wrap:wrap}.note{padding:0 clamp(16px,4vw,40px) 24px;color:var(--mortar);font-size:13px;margin:0}.sheet{position:fixed;inset:0;z-index:50;background:rgba(10,7,4,.78);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:16px}.card{width:min(520px,100%);background:var(--paper);color:var(--ink);border-radius:14px;padding:22px;display:grid;grid-gap:16px;gap:16px;box-shadow:0 30px 80px -20px #000}.card h2{font-family:Anton,Impact,sans-serif;letter-spacing:.02em;font-size:28px;margin:0;text-transform:uppercase}.preview{display:flex;gap:18px;align-items:center;justify-content:center;padding:18px;background:var(--stone);background-image:url(/wall/tile.jpg);background-size:auto 100%;border-radius:10px;min-height:200px}.preview img{max-height:200px;max-width:100%;border-radius:6px;box-shadow:0 8px 20px rgba(0,0,0,.4)}.field{display:grid;grid-gap:6px;gap:6px}.field label{font-weight:700;font-size:14px}.field input{font:inherit;padding:12px 14px;border:1.5px solid var(--mortar);border-radius:8px;background:#fff}.field small{color:#6a5a3e}.card .row{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.card .btn{box-shadow:none}.card .btn.ghost{color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--mortar)}.err{color:var(--lips);font-weight:700;min-height:1.2em;margin:0}.progress{display:grid;grid-gap:10px;gap:10px}.progress .steps{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.progress li{display:flex;align-items:center;gap:10px;color:#8a7752}.progress li.on{color:var(--ink);font-weight:700}.progress li.done{color:#3d6b3a}.progress li i{width:10px;height:10px;border-radius:50%;background:currentColor;flex:none}.progress li.on i{animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.3}}.progress small{color:#6a5a3e}.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:60;background:var(--paper);color:var(--ink);padding:12px 18px;border-radius:999px;font-weight:700;box-shadow:0 12px 30px -8px #000;opacity:0;pointer-events:none;transition:opacity .25s}.toast.show{opacity:1}@media (prefers-reduced-motion:reduce){.k{animation:none}.toast{transition:none}.progress li.on i{animation:none}}