:root{
  --bg:#f7f5fb;--card:#fff;--ink:#171320;--muted:#777281;--line:#e8e3ef;
  --brand:#24184f;--brand-soft:#ece8f7;--danger:#b33a3a;--shadow:0 14px 36px rgba(29,19,61,.08)
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR","Segoe UI",sans-serif}
body{min-height:100dvh}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}
.app-shell{width:min(100%,520px);min-height:100dvh;margin:0 auto;padding:max(24px,env(safe-area-inset-top)) 18px max(28px,env(safe-area-inset-bottom))}
.app-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:10px 4px 22px}
.brand,.eyebrow{margin:0;color:var(--brand);font-size:12px;font-weight:800;letter-spacing:.14em}
h1,h2{margin:6px 0 0}h1{font-size:clamp(30px,8vw,42px);line-height:1.08;letter-spacing:-.04em}h2{font-size:24px;letter-spacing:-.03em}
.date-line{margin:10px 0 0;color:var(--muted);font-size:14px;font-weight:700}
.icon-btn{width:42px;height:42px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.75);color:var(--ink);font-size:20px;cursor:pointer}
.hero-card{padding:28px 22px 20px;text-align:center;background:var(--card);border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow)}
.big-number{margin-top:8px;font-size:clamp(72px,22vw,116px);font-weight:900;line-height:.95;letter-spacing:-.07em}
.big-number .unit{margin-left:8px;font-size:.28em;font-weight:800;letter-spacing:-.02em}
.hole-breakdown{margin:10px 0 0;color:var(--brand);font-size:13px;font-weight:850}
.income{margin:13px 0 3px;font-size:22px;font-weight:850}.breakdown{margin:0 0 24px;color:var(--muted);font-size:13px;font-weight:700}
.primary-btn,.secondary-btn{width:100%;min-height:60px;border-radius:19px;font-size:17px;font-weight:850;cursor:pointer}
.primary-btn{border:0;background:var(--brand);color:#fff;box-shadow:0 9px 22px rgba(36,24,79,.2)}
.secondary-btn{border:1px solid var(--brand);background:#fff;color:var(--brand)}
.primary-btn:active,.secondary-btn:active{transform:translateY(1px) scale(.995)}
.plus{display:inline-block;margin-right:4px;font-size:22px;vertical-align:-1px}.primary-btn.compact{min-height:54px;margin-top:8px;font-size:16px}
.round-actions{display:grid;grid-template-columns:1.12fr .88fr;gap:9px}.tip-btn{margin-top:9px}
.records-btn{width:100%;margin-top:9px;padding:13px;border:0;border-radius:14px;background:var(--brand-soft);color:var(--brand);font-size:13px;font-weight:850;cursor:pointer}
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.stat-card{min-height:168px;padding:18px;background:var(--card);border:1px solid var(--line);border-radius:22px}.stat-card strong{display:block;margin-top:14px;font-size:30px;letter-spacing:-.04em}.stat-card>span{display:block;margin-top:5px;color:var(--muted);font-size:13px;font-weight:750}.stat-card small{display:block;margin-top:3px;color:var(--brand);font-size:12px;font-weight:800}
.fee-status{margin-top:12px;padding:15px 18px;background:var(--brand-soft);border-radius:18px;display:grid;gap:10px}.fee-status>div{display:flex;justify-content:space-between;gap:12px;font-size:13px}.fee-status strong{color:var(--brand)}
.install-btn{width:100%;margin-top:12px;padding:15px;border:1px solid var(--brand);border-radius:16px;background:transparent;color:var(--brand);font-weight:800;cursor:pointer}
.footer{padding:28px 10px 8px;text-align:center;color:var(--muted);font-size:11px;line-height:1.75}.footer a,.footer-link{color:var(--brand);text-decoration:none;font-weight:800}.footer p{margin:3px 0}.footer-link{padding:4px 8px;border:0;background:transparent;cursor:pointer}
.dialog{width:min(calc(100% - 30px),470px);max-height:88dvh;padding:0;border:0;border-radius:26px;background:transparent}.dialog::backdrop{background:rgba(18,12,31,.52);backdrop-filter:blur(4px)}.dialog-card{max-height:88dvh;overflow:auto;padding:24px;background:#fff;border-radius:26px;box-shadow:0 24px 70px rgba(0,0,0,.2)}
.dialog-copy{margin:14px 0;color:var(--muted);font-size:14px;line-height:1.7}.dialog-title-row{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.field{display:block;margin:20px 0 12px}.field>span{display:block;margin-bottom:8px;font-size:13px;font-weight:800}.field small{color:var(--muted);font-weight:700}
.input-wrap{display:flex;align-items:center;gap:8px;padding:0 14px;border:1px solid var(--line);border-radius:16px;background:#faf9fc}.input-wrap input{flex:1;min-width:0;height:56px;border:0;outline:0;background:transparent;font-size:20px;font-weight:800}.input-wrap span{color:var(--muted);font-size:14px}
.quick-tips{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:22px}.quick-tips button{padding:11px 4px;border:1px solid var(--line);border-radius:13px;background:#faf9fc;color:var(--brand);font-size:13px;font-weight:850;cursor:pointer}
.cancel-btn{width:100%;margin-top:9px;padding:13px;border:0;background:transparent;color:var(--muted);font-weight:800;cursor:pointer}
.danger-btn{width:100%;margin-top:10px;padding:13px;border:1px solid #efd6d6;border-radius:14px;background:#fffafa;color:var(--danger);font-weight:800;cursor:pointer}.tiny-note{margin:12px 2px 0;color:var(--muted);font-size:11px;line-height:1.6}
.segmented{display:grid;grid-template-columns:1fr 1fr;gap:8px}.segmented input{position:absolute;opacity:0;pointer-events:none}.segmented span{display:block;padding:13px;border:1px solid var(--line);border-radius:14px;text-align:center;font-weight:850;cursor:pointer}.segmented input:checked+span{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}
.records-list{display:grid;gap:9px}.record-item{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:13px 14px;border:1px solid var(--line);border-radius:16px;background:#faf9fc}.record-left{min-width:0}.record-kind{display:block;font-size:13px;font-weight:850}.record-amount{display:block;margin-top:3px;font-size:17px;font-weight:900}.record-note{display:block;margin-top:3px;color:var(--muted);font-size:11px}.edit-btn{padding:9px 11px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--brand);font-size:12px;font-weight:850;cursor:pointer}.empty-state{display:none;padding:26px 10px;text-align:center;color:var(--muted);font-size:13px}.empty-state.show{display:block}
.cafe-btn{display:block;margin-top:18px;padding:15px;border-radius:16px;background:var(--brand);color:#fff;text-align:center;text-decoration:none;font-weight:850}
.toast{position:fixed;left:50%;bottom:calc(28px + env(safe-area-inset-bottom));transform:translate(-50%,20px);max-width:calc(100% - 36px);padding:12px 16px;border-radius:999px;background:#18131f;color:#fff;font-size:13px;font-weight:750;opacity:0;pointer-events:none;transition:.18s ease;white-space:nowrap;z-index:30}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:380px){.round-actions{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr}.quick-tips{grid-template-columns:1fr 1fr}.hero-card{padding-inline:18px}}


.memo-input{
  width:100%;
  min-height:92px;
  resize:vertical;
  padding:14px;
  border:1px solid var(--line);
  border-radius:16px;
  background:#faf9fc;
  color:var(--ink);
  outline:none;
  font:inherit;
  font-size:14px;
  line-height:1.55;
}
.memo-input:focus{
  border-color:var(--brand);
  box-shadow:0 0 0 3px rgba(36,24,79,.08);
}
.record-note.memo{
  margin-top:5px;
  color:var(--ink);
  line-height:1.45;
  white-space:pre-wrap;
  word-break:break-word;
}

.stat-link-btn{
  width:100%;margin-top:12px;padding:9px 6px;border:0;border-radius:11px;
  background:var(--brand-soft);color:var(--brand);font-size:11px;font-weight:850;cursor:pointer
}
.month-nav{display:grid;grid-template-columns:42px 1fr 42px;align-items:center;gap:8px;margin:20px 0 14px}
.month-nav button{width:42px;height:42px;border:1px solid var(--line);border-radius:13px;background:#faf9fc;color:var(--brand);font-size:24px;font-weight:700;cursor:pointer}
.month-nav button:disabled{opacity:.28;cursor:default}
.month-nav strong{text-align:center;font-size:20px;letter-spacing:-.03em}
.month-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.month-summary>div{padding:12px;border:1px solid var(--line);border-radius:14px;background:#faf9fc}
.month-summary span{display:block;color:var(--muted);font-size:11px;font-weight:750}
.month-summary strong{display:block;margin-top:4px;font-size:16px;letter-spacing:-.02em}
.month-hole-breakdown{margin:10px 2px 17px;color:var(--brand);font-size:12px;font-weight:850;text-align:center}
.month-history-list{display:grid;gap:12px}
.month-day{padding:14px;border:1px solid var(--line);border-radius:18px;background:#fff}
.month-day-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}
.month-day-title{font-size:14px;font-weight:900}
.month-day-total{color:var(--brand);font-size:12px;font-weight:850;white-space:nowrap}
.month-day-items{display:grid;gap:7px}
.month-log-row{display:flex;justify-content:space-between;gap:12px;padding:9px 10px;border-radius:12px;background:#faf9fc;font-size:12px}
.month-log-row span:first-child{font-weight:800}
.month-log-row span:last-child{font-weight:900;white-space:nowrap}
.month-log-memo{display:block;margin:-2px 10px 4px;color:var(--muted);font-size:11px;line-height:1.45;white-space:pre-wrap;word-break:break-word}

.settings-section{margin:18px 0 8px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#faf9fc}
.settings-section-title{margin:0;font-size:13px;font-weight:900;color:var(--ink)}
.backup-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:11px}
.utility-btn{padding:12px 8px;border:1px solid var(--brand);border-radius:13px;background:#fff;color:var(--brand);font-size:12px;font-weight:850;cursor:pointer}
.update-banner{margin-top:12px;padding:13px 14px;border:1px solid var(--brand);border-radius:16px;background:#fff;display:flex;align-items:center;justify-content:space-between;gap:12px}
.update-banner[hidden]{display:none}
.update-banner strong{display:block;color:var(--ink);font-size:13px}
.update-banner span{display:block;margin-top:2px;color:var(--muted);font-size:11px}
.update-banner button{flex:0 0 auto;padding:10px 12px;border:0;border-radius:12px;background:var(--brand);color:#fff;font-size:12px;font-weight:850;cursor:pointer}
@media(max-width:380px){.backup-actions{grid-template-columns:1fr}}
