:root{color:#3f3735;background:#fff8f6;font-family:Hiragino Sans,Yu Gothic,YuGothic,Noto Sans JP,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;font-synthesis:none;line-height:1.5;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;overflow:hidden}button,input{font:inherit}.app-shell{position:relative;display:grid;min-height:100vh;min-height:100svh;place-items:center;background:radial-gradient(circle at 24% 18%,rgba(255,214,216,.85),transparent 28%),radial-gradient(circle at 86% 12%,rgba(255,241,196,.72),transparent 26%),linear-gradient(160deg,#fffafb,#f7fff6 48%,#fff1f0)}.stage{position:relative;display:grid;width:min(100vw,480px);min-height:100svh;padding:max(22px,env(safe-area-inset-top)) 22px max(18px,env(safe-area-inset-bottom));grid-template-rows:1fr auto;isolation:isolate}.ambient-petals{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.ambient-petals span,.send-petal{position:absolute;width:var(--size, 12px);height:calc(var(--size, 12px) * 1.55);border-radius:80% 12% 80% 18%;background:linear-gradient(135deg,#fff,#ffc7cf 52%,#f7aebc);box-shadow:0 7px 16px #e2788c2e;transform-origin:50% 100%}.ambient-petals span{left:var(--x);top:-12vh;animation:drift var(--dur) linear infinite;animation-delay:var(--delay)}.bloom-area{position:absolute;top:16vh;left:50%;width:190px;height:190px;transform:translate(-50%);pointer-events:none}.glow{position:absolute;top:28px;right:28px;bottom:28px;left:28px;border-radius:999px;background:radial-gradient(circle,rgba(255,237,178,.88),rgba(255,188,198,.1) 68%,transparent);filter:blur(2px)}.bud,.flower{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center}.bud span{position:absolute;width:54px;height:88px;border-radius:70% 70% 18% 18%;background:linear-gradient(180deg,#ffcdd4,#fa95aa);transform:rotate(var(--rot, 0deg)) translateY(12px);transform-origin:50% 78%;box-shadow:inset 0 9px 15px #ffffff70}.bud span:nth-child(1){--rot: -24deg}.bud span:nth-child(2){--rot: 0deg;background:linear-gradient(180deg,#fff0f2,#ff9caf)}.bud span:nth-child(3){--rot: 24deg}.flower{opacity:0;transform:scale(.65) rotate(-12deg)}.flower span{position:absolute;width:48px;height:82px;border-radius:80% 80% 22% 22%;background:linear-gradient(180deg,#fff7f8,#ffb6c3 58%,#f7899f);transform:rotate(var(--turn)) translateY(-42px);transform-origin:50% 82px;box-shadow:0 9px 19px #db5d772e}.flower i{z-index:1;width:40px;height:40px;border-radius:999px;background:radial-gradient(circle,#ffe8a8 0,#ffe8a8 35%,#f7bd63 36%,#f7bd63);box-shadow:inset 0 -5px #c7892d1f}.copy{align-self:end;margin:0 auto 36vh;text-align:center;transition:opacity .22s ease,transform .22s ease}.eyebrow{margin:0 0 10px;color:#5f8c5a;font-size:.78rem;font-weight:700;letter-spacing:0;text-transform:uppercase}h1,h2,p{margin:0}h1{font-size:clamp(1.75rem,2.28rem,2.6rem);line-height:1.16}.message{max-width:19rem;margin:14px auto 0;color:#6a5e5b;font-size:.95rem;line-height:1.75}.card-zone{position:absolute;top:39vh;right:22px;left:22px;display:grid;justify-items:center;opacity:0;pointer-events:none;transform:translateY(26px);transition:opacity .26s ease,transform .26s ease}.photo-stack{position:relative;width:min(72vw,270px);aspect-ratio:4 / 5;cursor:grab;touch-action:none}.photo-stack:active{cursor:grabbing}.photo-stack:focus-visible{outline:3px solid rgba(255,143,165,.65);outline-offset:12px}.stack-shadow{position:absolute;right:12%;bottom:-14px;left:12%;height:25px;border-radius:999px;background:#7e514a2e;filter:blur(12px)}.photo-card{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;border:8px solid #fff;border-radius:8px;background:#fff;box-shadow:0 20px 40px #78534d38}.back-card{background:#ffe7e9;transform:rotate(-9deg) translate(-12px,16px)}.mid-card{background:#ecf7e7;transform:rotate(7deg) translate(12px,10px)}.main-card img{display:block;width:100%;height:100%;object-fit:cover}.placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;gap:8px;place-items:center;color:#9b8580;background:linear-gradient(145deg,#fff5f5,#eef9ea)}.main-card img+.placeholder{display:none}.placeholder span{width:58px;height:58px;border-radius:999px;background:radial-gradient(circle at 60% 40%,#ffdbe0 0 28%,transparent 29%),linear-gradient(135deg,#b5d7a6,#ffe2a6)}.count-badge{position:absolute;right:10px;bottom:10px;min-width:42px;padding:8px 10px;border-radius:999px;background:#3f3735c7;color:#fff;font-size:.88rem;font-weight:700;text-align:center}.swipe-hint,.error-message{max-width:min(100%,21rem);margin-top:28px;padding:10px 14px;border-radius:999px;background:#ffffffb8;box-shadow:0 10px 24px #ae6f691f;font-size:.92rem;font-weight:700;text-align:center}.swipe-hint{color:#7b605e}.error-message{margin-top:12px;border-radius:16px;color:#9d2432;line-height:1.55}.action-bar{position:relative;z-index:5;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:12px;align-self:end}.action-button,.reset-button{display:flex;min-height:58px;align-items:center;justify-content:center;gap:8px;border:1px solid rgba(193,151,145,.32);border-radius:999px;background:#ffffffbd;color:#554744;box-shadow:0 14px 34px #8a605b24;font-weight:800;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);cursor:pointer}.action-button.primary,.reset-button{border:0;background:linear-gradient(135deg,#ff8fa5,#ffbd8f);color:#fff}.action-button input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.icon{display:grid;width:28px;height:28px;place-items:center;border-radius:999px;background:#ffffff8c;line-height:1}.complete-panel{position:absolute;right:22px;bottom:max(26px,env(safe-area-inset-bottom));left:22px;display:grid;gap:18px;justify-items:center;opacity:0;pointer-events:none;text-align:center;transform:translateY(18px);transition:opacity .26s ease,transform .26s ease}.complete-panel h2{max-width:21rem;font-size:clamp(1.45rem,1.72rem,2rem);line-height:1.35}.reset-button{width:min(100%,280px)}.stage[data-state=selected] .copy,.stage[data-state=uploading] .copy,.stage[data-state=complete] .copy{opacity:0;pointer-events:none;transform:translateY(-10px)}.stage[data-state=selected] .card-zone,.stage[data-state=uploading] .card-zone{opacity:1;pointer-events:auto;transform:translateY(0)}.stage[data-state=uploading] .bud{animation:bud-open 1.45s ease forwards}.stage[data-state=uploading] .flower{animation:flower-open 1.45s ease forwards}.stage[data-state=complete] .bud{opacity:0}.stage[data-state=complete] .flower{opacity:1;transform:scale(1) rotate(0)}.stage[data-state=complete] .action-bar,.stage[data-state=complete] .card-zone{opacity:0;pointer-events:none}.stage[data-state=complete] .complete-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.send-petal{top:48%;left:50%;z-index:7;pointer-events:none;animation:burst 1.1s cubic-bezier(.19,1,.22,1) forwards}@keyframes drift{0%{opacity:0;transform:translate3d(-18px,-10vh,0) rotate(0)}12%,82%{opacity:.9}to{opacity:0;transform:translate3d(32px,115vh,0) rotate(360deg)}}@keyframes burst{to{opacity:0;transform:translate3d(var(--dx),var(--dy),0) rotate(var(--rot)) scale(.6)}}@keyframes bud-open{to{opacity:0;transform:scale(.7)}}@keyframes flower-open{to{opacity:1;transform:scale(1) rotate(0)}}@media (min-width: 760px){.stage{border-inline:1px solid rgba(255,255,255,.62);box-shadow:0 0 80px #a06f6929}}@media (max-height: 700px){.bloom-area{top:10vh;transform:translate(-50%) scale(.82)}.copy{margin-bottom:32vh}.card-zone{top:32vh}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:1ms!important}.ambient-petals span{top:14vh;opacity:.35;animation:none}}
