:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Noto Serif JP,Yu Mincho,Hiragino Mincho ProN,serif}*{box-sizing:border-box}html{overscroll-behavior:none;background:#05050b}body{overscroll-behavior:none;min-width:320px;min-height:100svh;margin:0}button,input,textarea{font:inherit}.App{min-height:100svh;padding:max(32px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(64px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));color:#fff;background:radial-gradient(circle at 50% 38%,#b9904329,#0000 32%),linear-gradient(145deg,#12110f,#030303);place-items:center;display:grid;overflow:hidden}.scene{aspect-ratio:2/3;perspective:1000px;width:min(72vw,66.6667svh - 85.3333px,320px);animation:.9s ease-out both reveal-card;position:relative}@keyframes reveal-card{0%{opacity:0;filter:blur(8px)}to{opacity:1;filter:blur()}}.card{--shine-x:50%;--shine-y:50%;--card-thickness:12px;--card-half-thickness:6px;width:100%;height:100%;transform-style:preserve-3d;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;will-change:transform;position:relative}.card:active{cursor:grabbing}.card:focus-visible{outline-offset:8px;outline:2px solid #d4af65}.gesture-hint{color:#f3dfa3ad;letter-spacing:.08em;opacity:0;pointer-events:none;width:max-content;max-width:90vw;margin:0;font-size:12px;transition:opacity .35s,transform .35s;position:absolute;top:calc(100% + 22px);left:50%;transform:translate(-50%,6px)}.gesture-hint-visible{opacity:1;transition-delay:1.4s;transform:translate(-50%)}.card-face{text-align:center;backface-visibility:hidden;color:#f3dfa3;border:1px solid #d4af6594;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;padding:32px;display:flex;position:absolute;inset:0;overflow:hidden;box-shadow:0 34px 78px #000000ad,0 0 30px #b9904314,inset 0 0 38px #d4af650f}.card-face:before{content:"";z-index:1;pointer-events:none;border:1px solid #d4af6552;border-radius:11px;position:absolute;inset:11px}.card-shine{z-index:0;pointer-events:none;background:radial-gradient(circle at var(--shine-x) var(--shine-y), #ffefb55c 0%, #d4af601f 16%, transparent 34%), linear-gradient(115deg, transparent 38%, #c99c480d 44%, #ffe79f2e 50%, #996c2a0d 56%, transparent 62%);mix-blend-mode:screen;position:absolute;inset:0}.card-face>:not(.card-shine,.card-number){z-index:1;position:relative}.card-front{transform:translateZ(var(--card-half-thickness));background:radial-gradient(circle at 16% 18%,#d4af6552 0 1px,#0000 2px),radial-gradient(circle at 78% 30%,#d4af6538 0 1px,#0000 2px),radial-gradient(circle at 32% 76%,#d4af652e 0 1px,#0000 2px),repeating-linear-gradient(8deg,#0000 0 5px,#ffffff04 6px),linear-gradient(145deg,#1a1916,#090909)}.card-back{transform:rotateY(180deg) translateZ(var(--card-half-thickness));color:#f3dfa3;background:repeating-linear-gradient(95deg,#0000 0 7px,#ffffff04 8px),radial-gradient(circle at 35% 25%,#d4af6517,#0000 32%),linear-gradient(145deg,#151411,#050505)}.card-edges{transform-style:preserve-3d;pointer-events:none;position:absolute;inset:0}.card-edge-layer{background:linear-gradient(135deg,#5d4116,#b78d43 28%,#70501f 55%,#d4af65 78%,#4b3412);border:1px solid #d4af656b;border-radius:18px;position:absolute;inset:0;box-shadow:inset 0 0 7px #00000094,inset 0 0 2px #f3dfa352}.card-label{letter-spacing:.36em;color:#d4af65;margin-bottom:6px;font-size:14px}.card-face h1{letter-spacing:.14em;color:#f3dfa3;text-shadow:0 1px 10px #d4af652e;margin:0;font-family:Yuji Syuku,Yu Mincho,serif;font-size:clamp(34px,9vw,48px)}.card-face p{opacity:.85;max-width:220px;margin:16px 0 0;line-height:1.6}.stamp-grid{grid-template-columns:repeat(5,1fr);gap:12px 8px;width:100%;margin-top:28px;display:grid}.stamp{aspect-ratio:1;border-radius:50%;place-items:center;display:grid;position:relative}.stamp span{font-size:clamp(28px,8vw,42px);line-height:1;display:block}.stamp-collected{filter:drop-shadow(0 3px 4px #b7352d52)}.stamp-new span{opacity:0;animation:stamp-arrival .72s cubic-bezier(.2, .9, .25, 1.25) var(--stamp-delay) both}.stamp-new{animation:stamp-slot-complete .26s ease-out var(--stamp-delay) forwards;background:#d4af650a;border:1px dashed #d4af656b;box-shadow:inset 0 0 10px #d4af650a}.stamp-new:after{content:"";opacity:0;animation:stamp-ink-ring .7s ease-out var(--stamp-delay) both;border:2px solid #b7352da6;border-radius:50%;position:absolute;inset:2px}@keyframes stamp-arrival{0%{opacity:0;filter:blur(3px);transform:scale(1.8)rotate(-12deg)}58%{opacity:1;filter:blur();transform:scale(.88)rotate(3deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes stamp-slot-complete{0%{background:#d4af650a;border-color:#d4af656b}to{box-shadow:none;background:0 0;border-color:#0000}}@keyframes stamp-ink-ring{0%{opacity:0;transform:scale(.55)}35%{opacity:.7}to{opacity:0;transform:scale(1.45)}}.stamp-empty{background:#d4af650a;border:1px dashed #d4af656b;box-shadow:inset 0 0 10px #d4af650a}.card-face>.completion-celebration{z-index:3;opacity:0;pointer-events:none;background:radial-gradient(circle,#d4af6538,#050505b8 48%,#0000 72%);place-items:center;display:grid;position:absolute;inset:0}.completion-celebration span{color:#f3dfa3;letter-spacing:.16em;text-shadow:0 0 12px #f3dfa38c,0 0 28px #d4af6559;border-block:1px solid #f3dfa3a3;padding:12px 18px;font-family:Yuji Syuku,Yu Mincho,serif;font-size:38px}.card-completing .completion-celebration{animation:completion-message 1.4s ease var(--completion-delay) both}.card-completing .stamp-collected{animation:completed-stamp-glow 1.1s ease var(--completion-delay) both}.card-completing .completion-seal{animation:completion-seal-reveal .9s cubic-bezier(.2, .9, .25, 1.2) calc(var(--completion-delay) + 1.95s) both}@keyframes completion-message{0%{opacity:0}25%,72%{opacity:1}to{opacity:0}}@keyframes completed-stamp-glow{0%,to{filter:drop-shadow(0 3px 4px #b7352d52)}50%{filter:drop-shadow(0 0 7px #f3dfa3d9)drop-shadow(0 0 14px #d4af6599)}}@keyframes completion-seal-reveal{0%{opacity:0;filter:drop-shadow(0 0 #0000);transform:rotate(-10deg)scale(1.65)}to{opacity:1;filter:drop-shadow(0 0 10px #d95a4f6b);transform:rotate(-4deg)scale(1)}}.card-face .stamp-progress{color:#d4af65;letter-spacing:.14em;margin-top:24px;font-size:17px;font-weight:600}.card-face .stamp-remaining{color:#f3dfa39e;letter-spacing:.08em;margin-top:4px;font-size:13px}.card-face>.card-number{letter-spacing:.12em;color:#d4af65b3;font-size:12px;position:absolute;top:28px;left:30px}.card-back-title{background:#d4af6508;border:1px solid #d4af6585;flex-direction:column;align-items:center;padding:18px 22px;display:flex;box-shadow:inset 0 0 18px #d4af650d,0 0 18px #0000003d}.card-back-title span{letter-spacing:.36em;color:#d4af65bf;margin-bottom:5px;font-size:13px}.card-back-title strong{letter-spacing:.2em;font-family:Yuji Syuku,Yu Mincho,serif;font-size:40px;font-weight:500}.card-details{width:100%;margin:28px 0 0;font-size:14px}.card-details div{border-bottom:1px solid #d4af653d;grid-template-columns:64px 1fr;align-items:center;padding:8px 4px;display:grid}.card-details dt{color:#d4af659e;letter-spacing:.12em}.card-details dd{text-align:right;letter-spacing:.12em;margin:0}.completion-seal{aspect-ratio:1;color:#d95a4f;letter-spacing:.16em;border:3px double #b7352d;place-content:center;gap:1px;width:68px;margin-top:24px;font-family:Yuji Syuku,Yu Mincho,serif;font-size:16px;line-height:1.15;display:grid;transform:rotate(-4deg)}.completion-seal span{display:block}@media (height<=560px){.App{padding-block:20px 44px}.scene{width:min(48vw,66.6667svh - 48px,280px)}.gesture-hint{top:calc(100% + 12px)}}@media (prefers-reduced-motion:reduce){.scene,.stamp-new,.stamp-new span,.card-completing .completion-celebration,.card-completing .stamp-collected,.card-completing .completion-seal{animation:none}.scene{opacity:1;filter:none}.stamp-new{box-shadow:none;background:0 0;border-color:#0000}.stamp-new span{opacity:1}.stamp-new:after,.completion-celebration{display:none}.gesture-hint,.gesture-hint-visible{transition:none}}.card-status,.card-error{text-align:center;width:min(72vw,66.6667svh - 85.3333px,320px)}.card-status>p,.card-error>p{color:#f3dfa39e;letter-spacing:.08em;margin:20px 0 0;font-size:13px}.card-skeleton{aspect-ratio:2/3;background:linear-gradient(145deg,#171612,#080808);border:1px solid #d4af6547;border-radius:18px;flex-direction:column;justify-content:center;width:100%;padding:32px;animation:1.6s ease-in-out infinite skeleton-breathe;display:flex;box-shadow:0 30px 70px #0000007a}.card-skeleton-title{background:#d4af6529;border-radius:3px;width:55%;height:28px;margin:0 auto 34px}.card-skeleton-grid{grid-template-columns:repeat(5,1fr);gap:12px 8px;display:grid}.card-skeleton-grid span{aspect-ratio:1;background:#d4af650d;border:1px dashed #d4af6533;border-radius:50%}@keyframes skeleton-breathe{0%,to{opacity:.65}50%{opacity:1}}.card-error{background:#0a0a09b8;border:1px solid #d4af654d;border-radius:18px;padding:40px 28px}.card-error-seal{aspect-ratio:1;color:#d95a4f;border:3px double #b7352d;place-items:center;width:58px;margin:0 auto 24px;font-family:Yuji Syuku,Yu Mincho,serif;font-size:28px;display:grid;transform:rotate(-4deg)}.card-error h1{color:#f3dfa3;margin:0;font-size:20px;font-weight:600}.card-error button{color:#f3dfa3;cursor:pointer;background:#d4af6514;border:1px solid #d4af657a;border-radius:999px;margin-top:28px;padding:10px 18px}.card-error button:focus-visible{outline-offset:4px;outline:2px solid #d4af65}@media (prefers-reduced-motion:reduce){.card-skeleton{animation:none}}
