:root{--bg: #fafaf7;--panel: #ffffff;--text: #1f2a1f;--muted: #6b7a6b;--line: #e3e7df;--accent: #2f7d4a;--accent-ink: #ffffff;--warn: #b7791f;--bad: #b23a3a}*{box-sizing:border-box}body{margin:0;font:16px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%}h1{font-size:24px;margin:0 0 4px}h2{font-size:17px;margin:0 0 12px}p{margin:0 0 12px}.muted{color:var(--muted)}.small{font-size:13px}.error{color:var(--bad)}.notice{color:var(--warn)}button,.button{font:inherit;color:inherit;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 14px;border:1px solid var(--line);border-radius:10px;background:var(--panel);cursor:pointer;text-decoration:none}button:disabled{opacity:.5;cursor:default}.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.big{width:100%;min-height:54px;font-size:17px;font-weight:600;border-radius:12px}button.link{border:none;background:none;padding:4px;color:var(--accent)}label.button input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}label.button{position:relative}label.button:focus-within{outline:2px solid var(--accent);outline-offset:2px}.phone{max-width:480px;margin:0 auto;padding:max(24px,env(safe-area-inset-top)) 20px max(24px,env(safe-area-inset-bottom))}.no-link .button{margin-top:12px}.uploader{display:flex;flex-direction:column;gap:12px;margin-top:16px}.pick{display:flex;flex-direction:column;gap:10px}.shots{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.shots li{position:relative;aspect-ratio:3 / 4;border-radius:10px;overflow:hidden;background:#eceee8}.shots img{width:100%;height:100%;object-fit:cover;display:block}.no-preview{padding:38px 8px 8px;font-size:12px;color:var(--muted);word-break:break-all}.shot-n{position:absolute;left:6px;top:6px;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:#0009;color:#fff;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center}.shot-remove{position:absolute;right:4px;top:4px;width:32px;height:32px;padding:0;border:none;border-radius:16px;background:#0009;color:#fff;font-size:20px;line-height:1}.sending progress{width:100%;height:10px;accent-color:var(--accent)}.sending p{margin:6px 0 0}.desk{max-width:960px;margin:0 auto;padding:32px 24px}.cards{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}@media(max-width:760px){.cards{grid-template-columns:1fr}}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px;min-width:0}.card .uploader{margin-top:0}.desk .uploader{border:2px dashed transparent;border-radius:12px}.desk .uploader.dragging{border-color:var(--accent);background:#f1f8f3}.desk .shots{grid-template-columns:repeat(4,1fr)}.qr{width:240px;max-width:100%;margin:0 auto 12px}.qr svg{display:block;width:100%;height:auto}.card:first-child{text-align:center}.expired{padding:48px 0}.arrived ul{list-style:none;margin:0 0 12px;padding:0}.arrived li{padding:4px 0}.applause{text-align:center;padding:24px 0 8px}.applause h2{font-size:26px;margin:8px 0}.clap{font-size:88px;line-height:1;display:inline-block;animation:pop .4s cubic-bezier(.2,1.6,.4,1) both,clap .36s ease-in-out .4s 6}@keyframes pop{0%{transform:scale(.2);opacity:0}}@keyframes clap{0%,to{transform:scale(1) rotate(0)}45%{transform:scale(1.22) rotate(-10deg)}75%{transform:scale(.94) rotate(6deg)}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:30}.confetti span{position:absolute;top:-16px;width:9px;height:15px;border-radius:2px;opacity:.95;animation-name:fall;animation-timing-function:cubic-bezier(.3,.6,.7,1);animation-fill-mode:both}@keyframes fall{to{transform:translate(var(--drift),110vh) rotate(var(--spin))}}@media(prefers-reduced-motion:reduce){.confetti{display:none}.clap{animation:none}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:24px;background:#fafaf7eb}.overlay .applause{width:100%;max-width:360px}
