:root{--color-bg: #FFF9F2;--color-surface: #FFFFFF;--color-text: #4A3B32;--color-text-sub: #8C7B6E;--color-primary: #F0955A;--color-primary-deep: #D97B3F;--color-secondary: #7FB77E;--color-secondary-deep: #5E9A5D;--color-info: #7BA6C9;--color-caution: #E8B04B;--color-caution-deep: #8A6420;--color-meter-track: #F3E8DC;--radius-card: 20px;--radius-chip: 999px;--shadow-card: 0 2px 8px rgba(74, 59, 50, .08);--font-body: "Zen Maru Gothic", "Hiragino Maru Gothic ProN", "BIZ UDGothic", sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:16px;font-weight:500;line-height:1.7;-webkit-font-smoothing:antialiased}button,input,textarea{font-family:inherit;color:inherit}.shell{min-height:100vh;display:flex;flex-direction:column}.screen{width:100%;max-width:640px;margin:0 auto;padding:16px 16px 108px;flex:1}.topbar{position:sticky;top:0;z-index:10;background:#fff9f2eb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;gap:10px;padding:12px 16px;max-width:640px;margin:0 auto;width:100%}.topbar-title{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px;min-width:0}.topbar-sub{font-size:13px;font-weight:500;color:var(--color-text-sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-spacer{margin-left:auto}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:10;background:var(--color-surface);border-top:1px solid var(--color-meter-track);display:flex;justify-content:center;gap:4px;padding:6px 8px calc(6px + env(safe-area-inset-bottom))}.tabbar button{flex:1;max-width:140px;min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:none;background:none;color:var(--color-text-sub);font-size:12px;font-weight:700;border-radius:14px;cursor:pointer}.tabbar button.on{color:var(--color-primary-deep);background:#f0955a1a}.card{background:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:16px}.card+.card{margin-top:12px}.card-title{display:flex;align-items:center;gap:8px;font-weight:700;font-size:16px;margin:0 0 10px}.balance-card{border-radius:var(--radius-card);padding:20px;color:#fff9f2;box-shadow:var(--shadow-card)}.balance-label{font-size:14px;font-weight:700;opacity:.92}.balance-num{font-size:44px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.15;letter-spacing:.02em}.balance-unit{font-size:18px;font-weight:700;margin-left:6px}.btn{min-height:48px;border:none;border-radius:var(--radius-chip);padding:0 24px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:16px;font-weight:700;cursor:pointer;transition:transform .1s ease,background .15s ease}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--color-primary);color:#fff9f2}.btn-primary:active{background:var(--color-primary-deep)}.btn-secondary{background:var(--color-meter-track);color:var(--color-text)}.btn-ghost{background:none;color:var(--color-text-sub);min-height:44px}.btn-block{width:100%}.btn-small{min-height:40px;font-size:14px;padding:0 16px}.icon-btn{border:none;background:none;color:var(--color-text-sub);min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer}.icon-btn:active{background:var(--color-meter-track)}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;border-radius:var(--radius-chip);padding:8px 16px;min-height:44px;background:var(--color-surface);border:2px solid var(--color-meter-track);font-weight:700;font-size:15px;color:var(--color-text);cursor:pointer}.chip.on{border-color:var(--color-primary);background:#f0955a1f;color:var(--color-primary-deep)}.field{margin-bottom:14px}.field label{display:block;font-size:14px;font-weight:700;color:var(--color-text-sub);margin-bottom:6px}.field input,.field textarea{width:100%;border:2px solid var(--color-meter-track);border-radius:14px;background:var(--color-surface);padding:12px 14px;font-size:16px;line-height:1.5}.field input:focus,.field textarea:focus{outline:none;border-color:var(--color-primary)}.field textarea{resize:vertical;min-height:72px}.notice{border-radius:14px;padding:10px 14px;font-size:14px;font-weight:700}.notice-caution{background:#e8b04b2e;color:var(--color-caution-deep)}.notice-ok{background:#7fb77e2e;color:#3f6b3e}.notice-info{background:#7ba6c929;color:#3d6483}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;border-radius:999px;background:var(--color-caution);color:#fff9f2;font-size:13px;font-weight:700}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;flex:none}.avatar-photo{object-fit:cover;background:var(--color-meter-track)}.pin-dots{display:flex;gap:16px;justify-content:center;margin:20px 0}.pin-dot{width:16px;height:16px;border-radius:50%;background:var(--color-meter-track);transition:background .12s ease}.pin-dot.filled{background:var(--color-primary)}.keypad{display:grid;grid-template-columns:repeat(3,minmax(72px,88px));gap:12px;justify-content:center}.keypad button{min-height:64px;border:none;border-radius:18px;background:var(--color-surface);box-shadow:var(--shadow-card);font-size:26px;font-weight:700;color:var(--color-text);cursor:pointer;display:flex;align-items:center;justify-content:center}.keypad button:active{transform:scale(.95);background:var(--color-meter-track)}.keypad button.keypad-empty{visibility:hidden}.date-sep{display:flex;align-items:center;gap:10px;color:var(--color-text-sub);font-size:13px;font-weight:700;margin:18px 0 8px}.date-sep:before,.date-sep:after{content:"";height:2px;border-radius:1px;background:var(--color-meter-track);flex:1}.entry-card{display:flex;gap:12px;align-items:flex-start}.entry-body{min-width:0;flex:1}.entry-title{font-weight:700;font-size:16px;overflow-wrap:anywhere}.entry-meta{font-size:13px;color:var(--color-text-sub)}.entry-amount{margin-left:auto;font-weight:700;font-size:18px;font-variant-numeric:tabular-nums;white-space:nowrap}.entry-amount.plus{color:var(--color-secondary-deep)}.entry-amount.minus{color:var(--color-text-sub)}.empty-state{text-align:center;color:var(--color-text-sub);padding:32px 16px}.center-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px}.logo-badge{width:88px;height:88px;border-radius:26px;background:var(--color-surface);box-shadow:var(--shadow-card);display:flex;align-items:center;justify-content:center;color:var(--color-primary)}.profile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px;width:100%}.profile-card{border:2px solid var(--color-meter-track);border-radius:var(--radius-card);background:var(--color-surface);padding:18px 12px;display:flex;flex-direction:column;align-items:center;gap:8px;font-weight:700;font-size:16px;cursor:pointer}.profile-card:active{transform:scale(.97)}.profile-card.on{border-color:var(--color-primary);background:#f0955a1a}.row{display:flex;align-items:center;gap:10px}.grow{flex:1;min-width:0}.sub{color:var(--color-text-sub);font-size:13px}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;letter-spacing:.08em;overflow-wrap:anywhere}.stack>*+*{margin-top:12px}.section-label{font-size:14px;font-weight:700;color:var(--color-text-sub);margin:20px 0 8px}@keyframes pop-in{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}.pop-in{animation:pop-in .25s ease}.template-btn{width:100%;text-align:left;border:2px solid var(--color-meter-track);border-radius:16px;background:var(--color-surface);padding:14px 16px;font-size:16px;font-weight:700;color:var(--color-text);cursor:pointer;transition:transform .1s ease,border-color .15s ease}.template-btn:active{transform:scale(.98)}.template-btn.on{border-color:var(--color-primary);background:#f0955a1a;color:var(--color-primary-deep)}.status-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:700}.status-chip.st-pending,.status-chip.st-accepted{background:#f0955a24;color:var(--color-primary-deep)}.status-chip.st-reported{background:#7ba6c929;color:#3d6483;animation:soft-blink 3s ease-in-out infinite}.status-chip.st-approved{background:#7fb77e2e;color:#3f6b3e}.status-chip.st-returned{background:#7ba6c929;color:#3d6483}@keyframes soft-blink{0%,to{opacity:1}50%{opacity:.55}}.cheer-bubble{margin-top:10px;background:#7ba6c924;color:#3d6483;border-radius:14px;padding:10px 14px;font-size:14px;font-weight:500;line-height:1.6;overflow-wrap:anywhere}.photo-fallback{display:flex;align-items:center;justify-content:center;background:var(--color-meter-track);color:var(--color-text-sub);border-radius:14px;min-height:96px}.photo-add{width:100%;min-height:96px;border:2px dashed var(--color-meter-track);border-radius:16px;background:var(--color-surface);color:var(--color-text-sub);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:14px;font-weight:700;cursor:pointer}.photo-add:active{transform:scale(.99)}.photo-preview{position:relative;border-radius:16px;overflow:hidden;background:var(--color-meter-track)}.photo-preview img{display:block;width:100%;max-height:320px;object-fit:cover}.photo-remove{position:absolute;top:8px;right:8px;width:36px;height:36px;border:none;border-radius:50%;background:#4a3b329e;color:#fff9f2;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.photo-strip{display:flex;gap:8px;overflow-x:auto;margin-bottom:12px}.photo-thumb{width:96px;height:96px;flex:none;object-fit:cover;border-radius:12px;background:var(--color-meter-track)}.album-card{padding:0;overflow:hidden}.album-photos{display:grid;gap:2px;grid-template-columns:1fr}.album-photos:has(.album-photo:nth-child(2)){grid-template-columns:1fr 1fr}.album-photo{width:100%;aspect-ratio:4 / 3;object-fit:cover;background:var(--color-meter-track);display:block}.album-body{padding:12px 16px 14px}.seg{display:flex;gap:6px;background:var(--color-meter-track);border-radius:14px;padding:4px}.seg button{flex:1;min-height:44px;border:none;border-radius:11px;background:none;color:var(--color-text-sub);font-size:14px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer}.seg button.on{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-card)}.queue-cta{display:flex;align-items:center;gap:12px;width:100%;border:none;text-align:left;cursor:pointer}.queue-cta:active{transform:scale(.99)}.fab{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:20;width:64px;height:64px;border:none;border-radius:50%;background:var(--color-primary);color:#fff9f2;box-shadow:0 6px 18px #d97b3f66;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.fab:active{transform:translate(-50%) scale(.94);background:var(--color-primary-deep)}.sheet-backdrop{position:fixed;inset:0;z-index:30;background:#4a3b3259;display:flex;align-items:flex-end;justify-content:center;animation:fade-in .15s ease}.sheet{width:100%;max-width:640px;background:var(--color-surface);border-radius:24px 24px 0 0;padding:12px 16px calc(20px + env(safe-area-inset-bottom));animation:sheet-up .22s ease}.sheet-handle{width:44px;height:5px;border-radius:3px;background:var(--color-meter-track);margin:4px auto 16px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translateY(16px);opacity:.4}to{transform:none;opacity:1}}.celebration{position:fixed;inset:0;z-index:40;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:22vh;gap:12px}.celebration-stamp{color:var(--color-secondary-deep);filter:drop-shadow(0 4px 10px rgba(94,154,93,.35));animation:stamp-pop .5s cubic-bezier(.22,1.4,.4,1) both}.celebration-msg{background:var(--color-surface);color:var(--color-text);border-radius:999px;padding:10px 20px;font-size:16px;font-weight:700;box-shadow:var(--shadow-card);animation:pop-in .3s ease .1s both}@keyframes stamp-pop{0%{transform:scale(1.4) rotate(-8deg);opacity:0}60%{opacity:1}to{transform:scale(1) rotate(0);opacity:1}}.confetti{position:absolute;left:0;right:0;bottom:0;height:34vh;overflow:hidden}.confetti-piece{position:absolute;top:-12px;width:9px;height:14px;border-radius:2px;animation-name:confetti-fall;animation-timing-function:ease-in;animation-iteration-count:1;animation-fill-mode:both}@keyframes confetti-fall{0%{transform:translateY(-10px) rotate(0);opacity:0}10%{opacity:1}to{transform:translateY(34vh) rotate(300deg);opacity:0}}.goal-card{border-left:6px solid var(--color-primary)}.goal-head{display:flex;align-items:flex-start;gap:10px}.goal-icon{flex:none;width:40px;height:40px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center}.goal-title{font-weight:700;font-size:17px;overflow-wrap:anywhere}.goal-reward{font-size:13px;color:var(--color-text-sub);margin-top:2px;overflow-wrap:anywhere}.goal-meter{margin-top:12px}.goal-meter-track{position:relative;height:16px;border-radius:999px;background:var(--color-meter-track);overflow:hidden}.goal-meter-fill{display:block;height:100%;border-radius:999px;min-width:6px;transition:width .6s cubic-bezier(.22,1,.36,1)}.goal-meter-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;flex-wrap:wrap}.goal-meter-remain{font-size:14px;font-weight:700;color:var(--color-text)}.goal-meter-remain strong{font-variant-numeric:tabular-nums;color:var(--color-primary-deep)}.goal-meter-nums{font-size:12px;color:var(--color-text-sub);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto}.goal-reach{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:700;color:var(--color-secondary-deep)}.goal-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.goal-cta{display:flex;align-items:center;gap:12px;width:100%;border:none;text-align:left;cursor:pointer}.goal-cta:active{transform:scale(.99)}.reward-row{display:flex;align-items:center;gap:12px}.reward-icon{flex:none;width:44px;height:44px;border-radius:14px;background:#f0955a24;color:var(--color-primary-deep);display:inline-flex;align-items:center;justify-content:center}.reward-name{font-weight:700;font-size:16px;overflow-wrap:anywhere}.reward-meta{font-size:13px;color:var(--color-text-sub)}.reward-points{margin-left:auto;font-weight:700;font-size:16px;font-variant-numeric:tabular-nums;color:var(--color-text-sub);white-space:nowrap}@media(prefers-reduced-motion:reduce){.status-chip.st-reported{animation:none}.confetti-piece{display:none}.celebration-stamp{animation:none}.goal-meter-fill{transition:none}}
