:root{--bg:#faf8f4;--gold:#b68a43;--beige:#eee4d4;--sage:#52784d;--blue:#456c9d;--pink:#b7798d;--lav:#895a96;--ink:#514638;--card:#fffdf9;--line:#e9dfcf;--soft:#8a7d6b;--shadow:0 6px 22px #785f321a}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--ink);margin:0;font-family:Hiragino Maru Gothic ProN,Hiragino Sans,Yu Gothic UI,Meiryo,sans-serif;line-height:1.7}button,input,select,textarea{font:inherit;color:inherit}.app{max-width:520px;min-height:100vh;margin:0 auto;padding:0 16px 120px}.serif{letter-spacing:.08em;font-family:Hiragino Mincho ProN,Yu Mincho,Georgia,serif}.top{justify-content:space-between;align-items:center;padding:16px 0 8px;display:flex}.logo{color:var(--gold);font-size:15px;font-weight:700}.logo small{color:var(--soft);letter-spacing:.2em;font-size:10px;font-weight:400;display:block}.iconbtn{background:var(--card);border:1px solid var(--line);cursor:pointer;color:var(--ink);border-radius:999px;padding:6px 12px;font-size:13px}.row{align-items:center;gap:8px;display:flex}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:22px;margin:14px 0;padding:18px}.card h2,.card h3{margin:0 0 8px;font-size:15px}.hero{background:linear-gradient(160deg,#fff7e6,var(--beige));border-radius:26px;margin:10px 0;padding:22px 20px}.hero .hello{color:var(--soft);font-size:13px}.hero .msg{margin:6px 0 10px;font-size:19px;line-height:1.5}.pill{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:999px;padding:3px 12px;font-size:12px;display:inline-block}.muted{color:var(--soft);font-size:13px}.big{color:var(--gold);font-size:34px;font-weight:700;line-height:1.1}.bar{background:var(--beige);border-radius:99px;height:10px;margin:10px 0;overflow:hidden}.bar i{background:linear-gradient(90deg,#d8b370,var(--gold));border-radius:99px;height:100%;transition:width .8s;display:block}.hearts{grid-template-columns:repeat(7,1fr);gap:8px;margin:12px 0;display:grid}.heart{aspect-ratio:1;color:#cbb994;background:#fff;border:1.5px dashed #d8c9ae;border-radius:50%;justify-content:center;align-items:center;font-size:13px;display:flex}.heart.on{color:var(--pink);background:#fbeaf0;border:none;animation:.5s both pop}.heart svg{width:62%;height:62%}@keyframes pop{0%{opacity:0;transform:scale(.3)}70%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}.btn{background:var(--gold);color:#fff;cursor:pointer;border:none;border-radius:999px;width:100%;padding:13px 22px;font-size:15px;font-weight:700;box-shadow:0 6px 16px #b68a434d}.btn.sub{color:var(--ink);border:1px solid var(--line);box-shadow:none;background:#fff}.btn.small{width:auto;padding:7px 16px;font-size:13px}.btn:disabled{opacity:.5}.stats{grid-template-columns:1fr 1fr;gap:10px;display:grid}.stat{border:1px solid var(--line);background:#fff;border-radius:18px;padding:12px}.stat b{font-size:24px;line-height:1.2;display:block}.stat span{color:var(--soft);font-size:12px}.c-trust{color:var(--gold)}.c-growth{color:var(--sage)}.c-contrib{color:var(--blue)}.c-thanks{color:var(--pink)}.c-future{color:var(--lav)}label{color:var(--soft);margin:12px 0 4px;font-size:13px;display:block}input[type=text],input[type=date],input[type=number],input[type=time],select,textarea{border:1px solid var(--line);background:#fff;border-radius:14px;width:100%;padding:11px 12px;font-size:16px}textarea{resize:vertical;min-height:84px}.chips{flex-wrap:wrap;gap:7px;display:flex}.chip{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:999px;padding:7px 13px;font-size:13px}.chip.on{background:var(--gold);border-color:var(--gold);color:#fff}.tabs{gap:6px;padding:4px 0;display:flex;overflow-x:auto}.tabs .chip{white-space:nowrap}.nav{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:6px 8px calc(8px + env(safe-area-inset-bottom));z-index:20;background:#fffdf9f5;position:fixed;bottom:0;left:0;right:0}.nav div{grid-template-columns:repeat(5,1fr);align-items:end;max-width:520px;margin:0 auto;display:grid}.nav button{color:var(--soft);cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:1px;padding:4px 0;font-size:10.5px;display:flex;position:relative}.nav button.on{color:var(--gold);font-weight:700}.nav button svg{width:24px;height:24px}.nav .center span.disk{background:var(--gold);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;margin-top:-26px;font-size:28px;display:flex;box-shadow:0 8px 18px #b68a4366}.nav .badge{background:var(--pink);color:#fff;text-align:center;border-radius:99px;min-width:16px;height:16px;font-size:10px;line-height:16px;position:absolute;top:0;right:22%}.letter{cursor:pointer;background:linear-gradient(160deg,#fff,#fbeaf0);border:1px solid #f0d9df;border-radius:20px;margin:10px 0;padding:16px;position:relative}.letter.thanks{background:linear-gradient(160deg,#fff,#f7efdc);border-color:#eadbb8}.letter.unread:after{content:"NEW";background:var(--pink);color:#fff;border-radius:99px;padding:1px 8px;font-size:10px;position:absolute;top:10px;right:14px}.letter .cat{color:var(--pink);font-size:12px;font-weight:700}.envelope{text-align:center;padding:40px 10px;font-size:54px;animation:.9s both open}@keyframes open{0%{opacity:0;transform:scale(.7)rotateX(70deg)}60%{transform:scale(1.1)rotateX(0)}to{opacity:1;transform:scale(1)}}.unfold{transform-origin:top;animation:.7s both unfold}@keyframes unfold{0%{opacity:0;transform:scaleY(.1)}to{opacity:1;transform:scaleY(1)}}.toast{background:var(--ink);color:#fff;z-index:60;border-radius:99px;max-width:90%;padding:10px 18px;font-size:14px;animation:.3s pop;position:fixed;bottom:96px;left:50%;transform:translate(-50%)}.toast.err{background:#9b4a4a}.overlay{z-index:50;background:#51463873;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--bg);text-align:center;border-radius:26px;width:100%;max-width:380px;padding:26px 22px;animation:.45s pop}.modal h2{color:var(--gold);margin:6px 0;font-size:24px}.confetti{z-index:55;pointer-events:none;font-size:20px;animation:linear forwards fall;position:fixed;top:-20px}@keyframes fall{to{opacity:.2;transform:translateY(110vh)rotate(540deg)}}.gold-line{background:linear-gradient(90deg,transparent,var(--gold),transparent);height:1px;margin:14px 0}.hist{border-top:1px dashed var(--line);padding:10px 0;font-size:14px}.hist:first-child{border-top:none}.cal{text-align:center;grid-template-columns:repeat(7,1fr);gap:4px;font-size:12px;display:grid}.cal div{aspect-ratio:1;border-radius:10px;justify-content:center;align-items:center;display:flex}.cal .d{border:1px solid var(--line);background:#fff}.cal .h{color:var(--pink);background:#fbeaf0;font-weight:700}.notice{color:#7b6130;background:#fff7e6;border:1px solid #efdcb4;border-radius:14px;padding:10px 12px;font-size:12.5px}.login{text-align:center;padding-top:50px}.login h1{color:var(--gold);margin:0;font-size:30px}.userbtn{text-align:left;background:var(--card);border:1px solid var(--line);cursor:pointer;border-radius:18px;justify-content:space-between;align-items:center;width:100%;margin:8px 0;padding:12px 16px;display:flex}.sticker{background:var(--beige);border-radius:99px;margin-left:6px;padding:1px 9px;font-size:11px}table{border-collapse:collapse;width:100%;font-size:13px}td,th{border-bottom:1px solid var(--line);text-align:left;padding:8px 4px}svg.chart{width:100%;height:auto;display:block}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
