:root{--color-background-primary: #ffffff;--color-background-secondary: #f5f5f3;--color-background-tertiary: #efefec;--color-text-primary: #1a1a18;--color-text-secondary: #5f5e5a;--color-text-tertiary: #888780;--color-text-danger: #a32d2d;--color-text-success: #0f6e56;--color-text-warning: #854f0b;--color-text-income: #1565c0;--color-border-tertiary: rgba(0,0,0,.12);--color-border-secondary: rgba(0,0,0,.22);--color-border-primary: rgba(0,0,0,.32);--border-radius-md: 8px;--border-radius-lg: 12px;--font-sans: -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif}@media(prefers-color-scheme:dark){:root:not(.light){--color-background-primary: #1c1c1e;--color-background-secondary: #2c2c2e;--color-background-tertiary: #111111;--color-text-primary: #ffffff;--color-text-secondary: #e8e8e6;--color-text-tertiary: #c0c0be;--color-text-danger: #e57373;--color-text-success: #4db8a0;--color-text-warning: #e8a14f;--color-text-income: #7eb8f5;--color-border-tertiary: rgba(255,255,255,.1);--color-border-secondary: rgba(255,255,255,.18);--color-border-primary: rgba(255,255,255,.28)}}:root.dark{--color-background-primary: #1c1c1e;--color-background-secondary: #2c2c2e;--color-background-tertiary: #111111;--color-text-primary: #ffffff;--color-text-secondary: #e8e8e6;--color-text-tertiary: #c0c0be;--color-text-danger: #e57373;--color-text-success: #4db8a0;--color-text-warning: #e8a14f;--color-border-tertiary: rgba(255,255,255,.1);--color-border-secondary: rgba(255,255,255,.18);--color-border-primary: rgba(255,255,255,.28)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:var(--color-background-tertiary);color:var(--color-text-primary);-webkit-font-smoothing:antialiased}.preview-bar{position:fixed;top:0;left:0;right:0;z-index:200;height:22px;line-height:22px;background:#854f0b;color:#fff8f0;font-size:10px;font-weight:600;text-align:center;letter-spacing:.06em}body.is-preview .app{margin-top:22px}body.is-preview .nav-tabs{top:22px}@media(min-width:900px){body.is-preview .app{height:calc(100vh - 22px)}}.app{max-width:390px;margin:0 auto;min-height:100vh;background:var(--color-background-tertiary);padding-bottom:80px}.app-header{display:flex;align-items:center;gap:8px;padding:12px 16px 10px;background:var(--color-background-primary);border-bottom:.5px solid var(--color-border-tertiary)}.app-header-icon{width:24px;height:24px;flex-shrink:0}.app-header-title{font-size:18px;font-weight:700;letter-spacing:-.02em}.app-header-sub{font-size:11px;color:var(--color-text-tertiary);font-style:italic;letter-spacing:.02em;align-self:flex-end;margin-bottom:1px}.app-header-illust{height:40px;width:auto;flex-shrink:0;pointer-events:none}.app-header-sheet-link{margin-left:auto;color:var(--color-text-tertiary);display:flex;align-items:center;gap:5px;padding:4px 6px;border-radius:6px;transition:color .15s,background .15s;text-decoration:none}.app-header-sheet-link:hover{color:var(--color-text-primary);background:var(--color-background-secondary)}.app-header-sheet-text{display:none;font-size:11px}.app-footer{padding:24px 16px 8px;font-size:11px;color:var(--color-text-tertiary);text-align:center}.nav-tabs{display:flex;background:var(--color-background-primary);border-bottom:.5px solid var(--color-border-tertiary);position:sticky;top:0;z-index:100}.tab{flex:1;padding:10px 4px 8px;font-size:11px;color:var(--color-text-tertiary);text-align:center;cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;user-select:none}.tab.active{color:var(--color-text-primary);border-bottom-color:var(--color-text-primary);font-weight:500}.tab-icon{display:block;font-size:15px;margin-bottom:2px}.theme-toggle{flex-shrink:0;background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:50%;width:32px;height:32px;font-size:16px;padding:0;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center}.reload-btn{flex-shrink:0;background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:50%;width:32px;height:32px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);transition:color .15s,background .15s}.reload-btn:hover:not(:disabled){color:var(--color-text-primary);background:var(--color-background-tertiary)}.reload-btn:disabled{opacity:.4;cursor:not-allowed}.reload-btn.loading svg{animation:spin .8s linear infinite}.page{display:none;padding:12px}.page.active{display:block}.month-selector{display:flex;align-items:center;gap:8px;margin-bottom:10px}.month-btn{background:none;border:.5px solid var(--color-border-secondary);border-radius:var(--border-radius-md);padding:4px 12px;font-size:13px;cursor:pointer;color:var(--color-text-primary)}.month-current{font-size:14px;font-weight:500;flex:1;text-align:center}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:10px}.metric-grid--single{grid-template-columns:1fr}.metric{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:12px 14px}.metric-label{font-size:11px;color:var(--color-text-tertiary);margin-bottom:4px}.metric-value{font-size:21px;font-weight:500}.metric-sub{font-size:11px;color:var(--color-text-secondary);margin-top:3px}.toolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-bottom:8px}.toolbar-label{font-size:12px;color:var(--color-text-secondary)}.toggle-switch{position:relative;width:40px;height:22px;flex-shrink:0;cursor:pointer}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-track{position:absolute;inset:0;background:var(--color-border-secondary);border-radius:11px;transition:background .2s}.toggle-thumb{position:absolute;top:3px;left:3px;width:16px;height:16px;background:var(--color-background-primary);border-radius:50%;transition:transform .2s}.toggle-switch input:checked~.toggle-track{background:var(--color-text-primary)}.toggle-switch input:checked~.toggle-thumb{transform:translate(18px)}.budget-card{background:var(--color-background-primary);border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);overflow:hidden;margin-bottom:10px}.card-sub-label{font-size:10px;font-weight:600;color:var(--color-text-tertiary);letter-spacing:.08em;text-transform:uppercase;padding:6px 14px 4px;border-bottom:.5px solid var(--color-border-tertiary);background:var(--color-background-secondary)}.monthly-total-block{padding:10px 14px;background:var(--color-background-secondary)}.monthly-total-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}.monthly-total-label{font-size:11px;font-weight:600;color:var(--color-text-tertiary);letter-spacing:.06em;text-transform:uppercase}.monthly-total-pct{font-size:15px;font-weight:700}.group-block{border-bottom:.5px solid var(--color-border-tertiary)}.group-block:last-child{border-bottom:none}.group-header{padding:12px 14px 10px;cursor:pointer;user-select:none}.group-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}.group-name-row{display:flex;align-items:center;gap:6px}.group-name{font-size:14px;font-weight:500}.year-badge{font-size:10px;background:#eeedfe;color:#3c3489;padding:1px 6px;border-radius:8px}.group-status{display:flex;align-items:center;gap:5px}.group-pct{font-size:13px;font-weight:500}.toggle-arrow{font-size:11px;color:var(--color-text-tertiary);margin-left:4px}.bar-wrap{height:6px;background:var(--color-background-secondary);border-radius:3px;margin-bottom:6px}.bar-fill{height:6px;border-radius:3px}.bar-ok{background:#1d9e75}.bar-warn{background:#ba7517}.bar-over{background:#e24b4a}.group-amounts{display:flex;justify-content:space-between;align-items:baseline;font-size:11px}.c-ok{color:var(--color-text-success)}.c-warn{color:var(--color-text-warning)}.c-over{color:var(--color-text-danger)}.remain-ok{color:var(--color-text-success)}.remain-warn{color:var(--color-text-warning)}.remain-over{color:var(--color-text-danger)}.amt-budget{color:var(--color-text-tertiary)}.amt-spent{font-weight:500}.remain-amount{font-size:15px;font-weight:700}.sub-remain-amount{font-size:12px;font-weight:600}.sub-b{padding:8px 14px 8px 16px;border-top:.5px solid var(--color-border-tertiary);border-left:3px solid var(--color-border-tertiary);margin-left:14px}.sub-b-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}.sub-b-name{font-size:12px;color:var(--color-text-secondary)}.sub-b-pct{font-size:12px;font-weight:500}.sub-b-bar-wrap{height:4px;background:var(--color-background-secondary);border-radius:2px;margin-bottom:5px}.sub-b-bar{height:4px;border-radius:2px}.sub-b-amounts{display:flex;justify-content:space-between;font-size:10px}.sub-b-budget{color:var(--color-text-tertiary)}.illust-po{display:block;height:72px;width:auto;margin:12px auto 0;pointer-events:none}.section-label{font-size:11px;color:var(--color-text-tertiary);font-weight:500;letter-spacing:.05em;text-transform:uppercase;margin:14px 0 6px}.debit-calendar-card{background:var(--color-background-primary);border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:0 16px;margin-bottom:10px;overflow:hidden}.alert-box{background:#faeeda;border-radius:var(--border-radius-md);padding:10px 12px;margin:10px 0}.alert-text{font-size:12px;color:#633806;line-height:1.5}.cal-balance-row{display:flex;justify-content:space-between;align-items:baseline;padding:14px 0 12px;border-bottom:.5px solid var(--color-border-tertiary)}.cal-balance-label{font-size:11px;color:var(--color-text-tertiary);display:flex;flex-direction:column;gap:2px}.cal-balance-date{font-size:10px;color:var(--color-text-secondary)}.cal-balance-amount{font-size:22px;font-weight:500}.cal-month-header{font-size:11px;font-weight:600;color:var(--color-text-tertiary);letter-spacing:.05em;padding:14px 0 6px;border-bottom:.5px solid var(--color-border-tertiary);margin-bottom:2px}.cal-debit-row{display:flex;align-items:flex-start;padding:12px 0;border-bottom:.5px solid var(--color-border-tertiary);gap:10px}.cal-debit-row:last-child{border-bottom:none}.cal-debit-date-col{flex-shrink:0;width:52px}.cal-debit-date-num{font-size:17px;font-weight:500;line-height:1}.cal-debit-date-weekday{font-size:10px;color:var(--color-text-tertiary);margin-top:2px}.cal-debit-slide{font-size:9px;color:var(--color-text-warning);margin-top:2px}.cal-debit-body{flex:1;min-width:0}.cal-debit-name{font-size:13px;font-weight:500;margin-bottom:4px}.cal-debit-right{flex-shrink:0;text-align:right}.cal-debit-amount{font-size:14px;font-weight:500}.cal-after-label{font-size:9px;color:var(--color-text-tertiary);margin-top:4px}.cal-after-amount{font-size:12px;font-weight:500}.debit-tag{display:inline-block;font-size:10px;padding:1px 6px;border-radius:6px;font-weight:500}.tag-cc{background:#e6f1fb;color:#0c447c}.tag-bank{background:#eaf3de;color:#27500a}.detail-card{background:var(--color-background-primary);border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:0 16px}.detail-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:.5px solid var(--color-border-tertiary)}.detail-row:last-child{border-bottom:none}.detail-date{font-size:11px;color:var(--color-text-tertiary);width:36px;flex-shrink:0}.detail-shop{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-cat-lbl{font-size:10px;color:var(--color-text-tertiary);margin-top:2px}.detail-amount{font-size:13px;font-weight:500;white-space:nowrap}.detail-amount.minus{color:var(--color-text-success)}.detail-amount.income{color:var(--color-text-income)}.badge{display:inline-block;font-size:10px;padding:2px 6px;border-radius:8px;font-weight:500}.badge-fixed{background:#e6f1fb;color:#0c447c}.badge-spend{background:#eaf3de;color:#27500a}.badge-invest{background:#eeedfe;color:#3c3489}.badge-enjoy{background:#faeeda;color:#633806}.badge-special{background:#fbeaf0;color:#72243e}.badge-unplan{background:#fcebeb;color:#791f1f}.badge-income{background:#e0f7fa;color:#006064}.filter-row{display:flex;gap:6px;margin-bottom:10px}.filter-select{font-size:11px;padding:4px 8px;border-radius:var(--border-radius-md);border:.5px solid var(--color-border-secondary);background:var(--color-background-primary);color:var(--color-text-primary);cursor:pointer;flex:1;min-width:0}.filter-select:disabled{opacity:.45;cursor:default}.unplan-card{background:#fcebeb;border:.5px solid rgba(121,31,31,.15);border-radius:var(--border-radius-lg);padding:14px 16px;display:flex;align-items:center;gap:12px;margin-bottom:10px}.unplan-icon{font-size:22px;line-height:1;flex-shrink:0}.unplan-label{font-size:11px;color:#791f1f;margin-bottom:4px}.unplan-amount{font-size:22px;font-weight:500;color:#a32d2d}.loading-spinner{width:20px;height:20px;border:2px solid var(--color-border-tertiary);border-top-color:var(--color-text-secondary);border-radius:50%;animation:spin .6s linear infinite;margin:20px auto}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--color-background-secondary) 25%,var(--color-background-tertiary) 50%,var(--color-background-secondary) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:var(--border-radius-md)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(min-width:900px){.app{max-width:1280px;height:100vh;min-height:unset;display:grid;grid-template-columns:55% 45%;grid-template-rows:auto minmax(auto,45vh) 1fr;padding-bottom:0;overflow:hidden}.app-header{grid-column:1 / -1;grid-row:1;border-bottom:.5px solid var(--color-border-secondary);padding:10px 20px}.app-header-title{font-size:16px}.app-header-sheet-text{display:inline;font-size:13px}.nav-tabs{display:none}#page-home{display:block;grid-column:1;grid-row:2 / 4;overflow-y:auto;border-right:.5px solid var(--color-border-secondary)}#page-cal{display:block;grid-column:2;grid-row:2;overflow-y:auto;border-bottom:.5px solid var(--color-border-secondary)}#page-detail{display:block;grid-column:2;grid-row:3;overflow-y:auto}.month-btn{font-size:15px}.month-current{font-size:16px}.metric-label{font-size:13px}.metric-value{font-size:24px}.metric-sub,.toolbar-label{font-size:13px}.group-name{font-size:16px}.group-pct{font-size:15px}.group-amounts{font-size:13px}.remain-amount{font-size:18px}.sub-remain-amount{font-size:14px}.toggle-arrow{font-size:13px}.sub-b-name,.sub-b-pct{font-size:14px}.sub-b-amounts{font-size:12px}.section-label{font-size:13px}.alert-text{font-size:14px}.cal-balance-label{font-size:13px}.cal-balance-date{font-size:12px}.cal-balance-amount{font-size:26px}.cal-month-header{font-size:13px}.cal-debit-date-num{font-size:20px}.cal-debit-date-weekday{font-size:12px}.cal-debit-slide{font-size:11px}.cal-debit-name{font-size:15px}.cal-debit-amount{font-size:16px}.cal-after-label{font-size:11px}.cal-after-amount{font-size:14px}.detail-date{font-size:13px}.detail-shop{font-size:15px}.detail-cat-lbl{font-size:12px}.detail-amount{font-size:15px}.filter-select,.unplan-label{font-size:13px}.unplan-amount{font-size:26px}}@media(prefers-color-scheme:dark){:root:not(.light) .year-badge{background:#3c348959;color:#b8b0f0}:root:not(.light) .tag-cc{background:#0c447c59;color:#7eb8f5}:root:not(.light) .tag-bank{background:#27500a59;color:#7fc878}:root:not(.light) .badge-fixed{background:#0c447c59;color:#7eb8f5}:root:not(.light) .badge-spend{background:#27500a59;color:#7fc878}:root:not(.light) .badge-invest{background:#3c348959;color:#b8b0f0}:root:not(.light) .badge-enjoy{background:#63380659;color:#e8a14f}:root:not(.light) .badge-special{background:#72243e59;color:#e891b8}:root:not(.light) .badge-unplan{background:#791f1f59;color:#e57373}:root:not(.light) .badge-income{background:#1565c04d;color:#7eb8f5}:root:not(.light) .unplan-card{background:#791f1f40;border-color:#e5737333}:root:not(.light) .unplan-label{color:#e57373}:root:not(.light) .unplan-amount{color:#e57373}:root:not(.light) .alert-box{background:#63380640}:root:not(.light) .alert-text{color:#e8a14f}}:root.dark .year-badge{background:#3c348959;color:#b8b0f0}:root.dark .tag-cc{background:#0c447c59;color:#7eb8f5}:root.dark .tag-bank{background:#27500a59;color:#7fc878}:root.dark .badge-fixed{background:#0c447c59;color:#7eb8f5}:root.dark .badge-spend{background:#27500a59;color:#7fc878}:root.dark .badge-invest{background:#3c348959;color:#b8b0f0}:root.dark .badge-enjoy{background:#63380659;color:#e8a14f}:root.dark .badge-special{background:#72243e59;color:#e891b8}:root.dark .badge-unplan{background:#791f1f59;color:#e57373}:root.dark .badge-income{background:#1565c04d;color:#7eb8f5}:root.dark .unplan-card{background:#791f1f40;border-color:#e5737333}:root.dark .unplan-label{color:#e57373}:root.dark .unplan-amount{color:#e57373}:root.dark .alert-box{background:#63380640}:root.dark .alert-text{color:#e8a14f}.error-state{padding:24px 16px;text-align:center}.error-msg{font-size:13px;color:var(--color-text-secondary);margin-bottom:12px;line-height:1.6}.error-btn{font-size:12px;padding:6px 16px;border-radius:var(--border-radius-md);border:.5px solid var(--color-border-secondary);background:var(--color-background-primary);color:var(--color-text-primary);cursor:pointer}
