:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#233852;background:#eef4fc;--blue:#345b8a;--muted:#566c84;--mint:#087656;--rose:#b52e47}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #345b8a;outline-offset:2px}button:disabled{opacity:.55;cursor:wait}.phone{max-width:460px;min-height:100dvh;margin:auto;background:radial-gradient(circle at 90% 5%,#d5e6fa,transparent 40%),radial-gradient(circle at 0% 80%,#fce5ef,transparent 38%),#f3f6fc;display:flex;flex-direction:column}header{padding:20px 18px 8px;display:flex;justify-content:space-between;align-items:center}h1{font-size:22px;margin:0}header p{font-size:12px;color:var(--muted);margin:5px 0}#identity{color:var(--blue);font-size:13px}main{padding:10px 14px 120px;flex:1}.card{background:rgba(255,255,255,.82);border:1px solid #fff;border-radius:22px;padding:16px;margin-bottom:12px;box-shadow:0 5px 20px #50689012}.row{display:flex;justify-content:space-between;align-items:center;gap:10px}.muted{color:var(--muted);font-size:13px;line-height:1.5}.pos{color:var(--mint)}.neg{color:var(--rose)}.totals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.totals span{display:block;color:var(--muted);font-size:12px}.totals strong{display:block;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin-top:5px}.month button,.day,.ghost{border:0;background:#eaf1f9;color:var(--blue);border-radius:12px;min-height:42px;padding:8px 12px}.week,.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.week span{text-align:center;color:var(--muted);font-size:12px;padding:8px 0}.day{padding:5px 0;min-width:0;min-height:52px;font-size:13px}.day.selected{background:#d5e7fa;box-shadow:inset 0 0 0 2px #6689b5}.day small{display:block;font-size:10px;overflow:hidden}.list-item{width:100%;border:0;border-bottom:1px solid #dce6f1;background:transparent;min-height:60px;text-align:left;color:inherit;display:flex;justify-content:space-between;align-items:center;gap:8px}.list-item span{min-width:0;overflow-wrap:anywhere}.list-item small{display:block;color:var(--muted);margin-top:4px}.primary{border:0;background:#345b8a;color:white;border-radius:14px;min-height:48px;padding:10px 16px;font-weight:700}.danger{background:#fff0f1;color:#ae2e45;border:0;border-radius:12px;min-height:44px;padding:9px 14px}.wide{width:100%}nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(460px,100%);padding:8px 12px max(8px,env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,1fr);gap:4px;background:rgba(245,249,255,.96);border-top:1px solid #dce6f1}nav[hidden]{display:none}nav button{border:0;background:transparent;min-height:52px;border-radius:12px;color:#506983;font-size:12px}nav button.active{background:#dceafb;color:#274f80;font-weight:bold}nav .add{font-size:24px;color:white;background:#345b8a}nav .add span{display:block;font-size:10px}label{display:block;font-size:13px;font-weight:600;margin:14px 0 6px}input,select,textarea{width:100%;min-height:46px;border:1px solid #cbd9e8;border-radius:12px;background:#fff;padding:10px;color:#233852;font-size:16px}textarea{min-height:100px;resize:none}dialog{width:min(430px,calc(100% - 24px));max-height:90dvh;border:0;border-radius:22px;padding:20px;background:#f8fbff;color:inherit;box-shadow:0 15px 60px #23385255}dialog::backdrop{background:#24344d80}.dialog-header{display:flex;align-items:center;justify-content:space-between}.dialog-header h2{font-size:19px;margin:0}.dialog-header button{border:0;background:#e8eff7;border-radius:50%;width:42px;height:42px;font-size:24px;color:#3c5674}#dialog-content{overflow-y:auto;max-height:calc(90dvh - 90px)}.error{color:#a6233a;font-size:13px;min-height:1em;line-height:1.4}.empty{text-align:center;padding:28px 12px;color:var(--muted);font-size:14px}#notice{position:fixed;top:18px;left:50%;transform:translateX(-50%);background:#273e5a;color:white;padding:10px 16px;border-radius:14px;font-size:13px;z-index:20}#notice:empty{display:none}.login{margin-top:12vh}.login h2{margin:0 0 8px}.note{padding:12px;border-radius:14px;background:#f5effb;margin:8px 0;overflow-wrap:anywhere}.tabs{display:flex;gap:6px;flex-wrap:wrap}.tabs button{border:0;background:#e8f0f9;padding:10px;border-radius:10px}.bar{height:8px;background:#dce6ef;border-radius:8px;overflow:hidden;margin:8px 0}.bar span{height:100%;display:block;background:#4d9f80}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

progress.bar{display:block;width:100%;height:8px;border:0;appearance:none}progress.bar::-webkit-progress-bar{background:#dce6ef;border-radius:8px}progress.bar::-webkit-progress-value{background:#4d9f80;border-radius:8px}progress.bar::-moz-progress-bar{background:#4d9f80;border-radius:8px}

.stats-tabs{margin-top:12px}.stats-tabs button[aria-pressed="true"]{background:#cddff6;color:#234d7e;font-weight:700}.trend-row{padding:9px 0;border-bottom:1px solid #dce6f1;font-size:12px}.trend-row span{font-variant-numeric:tabular-nums}

.goal-celebration{text-align:center;padding:20px 0 0;overflow-wrap:anywhere}.goal-seal{display:inline-grid;place-items:center;width:60px;height:60px;border-radius:50%;background:#e0f3ec;color:var(--mint);font-size:32px;font-weight:700}.goal-message{color:var(--muted);font-size:14px;line-height:1.7}.goal-celebration h3{font-size:19px;margin:18px 0 8px}.goal-balance{display:block;color:var(--mint);font-size:clamp(24px,7vw,34px);font-variant-numeric:tabular-nums}.goal-actions{display:grid;grid-template-columns:1fr 1.6fr;gap:10px;padding:4px 0}.goal-actions button{min-height:48px}.goal-actions .ghost:hover{background:#dceafb}.goal-actions .primary:hover{filter:brightness(.93)}.goal-actions button:active{transform:translateY(1px)}
.site-filing{text-align:center;padding:16px 0 4px;font-size:12px}.site-filing a{display:inline-block;color:var(--muted);padding:12px 4px;text-underline-offset:3px}
