:root{color:#23264f;font-synthesis:none;text-rendering:optimizelegibility;--screen-bg:#eef4ff;--ink:#23264f;--text-secondary:#646b88;--primary:#5b5fef;--surface-cream:#fff9e8;--sky:#83d6ff;--yellow:#ffd45a;--coral:#ff6b7a;--lavender:#dcd8ff;--surface-white:#fffdf8;--empty:#f1ede6;--soft-coral:#fff0ea;--border-subtle:#cbc8dc;background:#eef4ff;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,sans-serif}*{box-sizing:border-box}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}html{background:var(--screen-bg);min-width:320px;min-height:100%}body{background:var(--screen-bg);min-width:320px;min-height:100vh;margin:0}#root{min-height:100svh}button,input,select,textarea{font:inherit}.app-shell{min-height:100svh;padding:max(24px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));place-items:center;display:grid}.welcome-panel{border:2px solid var(--ink);background:var(--surface-cream);width:min(100%,342px);box-shadow:4px 4px 0 var(--ink);border-radius:8px;padding:32px 24px}.pixel-label{color:var(--primary);letter-spacing:.14em;margin:0 0 4px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10px;font-weight:700}h1{margin:0;font-size:clamp(28px,9vw,36px);line-height:1.2}.pixel-rule{gap:6px;margin:20px 0;display:flex}.pixel-rule span{border:2px solid var(--ink);width:18px;height:8px}.pixel-rule span:first-child{background:var(--sky)}.pixel-rule span:nth-child(2){background:var(--yellow)}.pixel-rule span:nth-child(3){background:var(--coral)}.welcome-copy{color:var(--text-secondary);margin:0;font-size:16px;line-height:1.7}.centered-state{min-height:100svh;color:var(--text-secondary);place-items:center;padding:24px;display:grid}.auth-page{width:min(100%,390px);min-height:100svh;padding:max(72px, env(safe-area-inset-top)) 24px max(32px, env(safe-area-inset-bottom));border-right:1px solid var(--border-subtle,#cbc8dc);border-left:1px solid var(--border-subtle,#cbc8dc);background:var(--screen-bg);margin:0 auto}.auth-brand{color:var(--primary);align-items:center;gap:10px;margin-bottom:28px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;display:flex}.auth-brand-mark{border:2px solid var(--ink);background:var(--coral);width:52px;height:52px;box-shadow:4px 4px 0 var(--ink);color:var(--ink);border-radius:7px;place-items:center;font-family:inherit;font-size:24px;font-weight:800;display:grid}.auth-brand strong,.auth-brand small{display:block}.auth-brand strong{letter-spacing:.04em;font-size:13px}.auth-brand small{color:var(--text-secondary);letter-spacing:.05em;margin-top:3px;font-size:8px}.auth-heading{margin-bottom:40px}.auth-heading h1{margin:0 0 18px;font-size:28px}.auth-heading p{color:var(--text-secondary);margin:0;font-size:15px;line-height:1.7}.auth-heading strong{color:var(--ink)}.auth-form,.auth-actions{gap:16px;display:grid}.form-field{border:2px solid var(--ink);background:var(--surface-cream);border-radius:7px;gap:7px;padding:10px 12px 12px;display:grid}.form-field>span{color:var(--ink);font-size:12px;font-weight:700}.form-field input,.form-field select{min-width:0;min-height:28px;color:var(--ink);background:0 0;border:0;outline:0;padding:0;font-size:16px}.form-field:focus-within{outline:2px solid var(--primary);outline-offset:2px}.pixel-button{border:2px solid var(--ink);min-height:52px;box-shadow:4px 4px 0 var(--ink);color:var(--ink);cursor:pointer;border-radius:8px;padding:12px 18px;font-weight:800;transition:transform .12s,box-shadow .12s}.pixel-button--primary{background:var(--primary);color:#fff}.pixel-button--secondary{background:var(--yellow)}.link-button{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.pixel-button:active:not(:disabled){box-shadow:2px 2px 0 var(--ink);transform:translate(2px,2px)}.pixel-button:focus-visible,.text-button:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.pixel-button:disabled,.text-button:disabled{box-shadow:none;cursor:not-allowed;opacity:.58}.form-error{border:1.5px solid var(--coral);background:var(--soft-coral,#fff0ea);color:var(--ink);border-radius:6px;margin:0;padding:10px 12px;font-size:14px;line-height:1.5}.auth-note{color:var(--text-secondary);margin:20px 0 0;font-size:12px;line-height:1.7}.auth-page--passkey{padding-top:max(64px, env(safe-area-inset-top))}.passkey-art{border:2px solid var(--ink);background:var(--yellow);width:92px;height:92px;box-shadow:6px 6px 0 var(--ink);border-radius:14px;place-items:center;margin:0 0 28px;display:grid}.passkey-art__key{border:2px solid var(--ink);background:var(--surface-cream);border-radius:50%;place-items:center;width:46px;height:46px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:800;display:grid}.passkey-copy{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);margin:0 0 24px;padding:18px 0}.passkey-copy h2{margin:0 0 8px;font-size:17px}.passkey-copy p{color:var(--text-secondary);margin:0;font-size:14px;line-height:1.7}.text-button{min-height:44px;color:var(--primary);cursor:pointer;background:0 0;border:0;font-weight:700}.device-shell{border-right:1px solid var(--border-subtle);border-left:1px solid var(--border-subtle);background:var(--screen-bg);width:min(100%,390px);min-height:100svh;margin:0 auto}.device-content{min-height:calc(100svh - 72px);padding:max(24px, env(safe-area-inset-top)) 24px 32px}.page-header{justify-content:space-between;align-items:center;gap:12px;min-height:52px;margin-bottom:18px;display:flex}.page-header__copy{min-width:0}.page-header h1{margin:0;font-size:24px;line-height:1.3}.square-button{border:2px solid var(--ink);background:var(--surface-cream);width:44px;height:44px;box-shadow:3px 3px 0 var(--ink);color:var(--ink);cursor:pointer;border-radius:6px;flex:0 0 44px;place-items:center;padding:0;font-size:18px;font-weight:800;transition:transform .12s,box-shadow .12s;display:grid}.square-button:active{box-shadow:1px 1px 0 var(--ink);transform:translate(2px,2px)}.square-button:focus-visible,.bottom-nav__item:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.month-switcher{grid-template-columns:44px 1fr 44px;align-items:center;gap:10px;margin-bottom:16px;display:grid}.month-switcher strong{text-align:center;font-size:17px}.inline-state{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);gap:12px;padding:18px 0;display:grid}.inline-state p{color:var(--text-secondary);margin:0;line-height:1.6}.inline-state--error{border:1.5px solid var(--coral);background:var(--soft-coral);border-radius:6px;padding:14px}.bottom-nav{z-index:5;min-height:72px;padding:9px 18px max(14px, env(safe-area-inset-bottom));border-top:2px solid var(--ink);background:var(--surface-cream);grid-template-columns:repeat(3,1fr);gap:12px;display:grid;position:sticky;bottom:0}.bottom-nav__item{border:1px solid var(--border-subtle);min-height:48px;color:var(--text-secondary);border-radius:6px;justify-content:center;align-items:center;gap:7px;font-size:12px;font-weight:700;text-decoration:none;display:flex}.bottom-nav__item[aria-current=page]{border:2px solid var(--ink);background:var(--sky);box-shadow:3px 3px 0 var(--ink);color:var(--primary)}.bottom-nav__pixel{background:0 0;border:1.5px solid;width:10px;height:10px}.bottom-nav__item[aria-current=page] .bottom-nav__pixel{background:currentColor}.featured-total{border:2px solid var(--ink);background:var(--sky);box-shadow:4px 4px 0 var(--ink);border-radius:8px;gap:5px;margin-bottom:24px;padding:16px;display:grid}.featured-total p,.featured-total small{margin:0}.featured-total p{font-size:13px;font-weight:700}.featured-total strong{overflow-wrap:anywhere;font-variant-numeric:tabular-nums;font-size:24px;line-height:1.3}.featured-total small{color:var(--text-secondary);font-size:11px}.stack-list{gap:14px;display:grid}.debt-plan-row{border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);color:var(--ink);border-radius:8px;gap:8px;padding:16px;text-decoration:none;transition:transform .12s,box-shadow .12s;display:grid}.debt-plan-row[data-tone=cream]{background:var(--surface-cream)}.debt-plan-row[data-tone=lavender]{background:var(--lavender)}.debt-plan-row:active{box-shadow:2px 2px 0 var(--ink);transform:translate(2px,2px)}.debt-plan-row:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.debt-plan-row__topline{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.debt-plan-row__topline strong{overflow-wrap:anywhere;min-width:0}.debt-plan-row__topline>span{font-variant-numeric:tabular-nums;flex:none;font-weight:800}.debt-plan-row__detail,.debt-plan-row__next{color:var(--text-secondary);font-size:13px;line-height:1.5}.data-form,.form-group{gap:16px;display:grid}.form-group{border:1.5px solid var(--ink);background:var(--lavender);border-radius:8px;padding:16px}.form-field small{color:var(--text-secondary);font-size:11px;line-height:1.5}.form-guidance{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.6}.danger-button{border:1.5px solid var(--coral);background:var(--soft-coral);min-height:48px;color:var(--ink);cursor:pointer;border-radius:7px;font-weight:700}.logout-button{flex:none;padding:0 6px}.section-heading{justify-content:space-between;align-items:end;gap:12px;margin-bottom:12px;display:flex}.section-heading h2{margin:0;font-size:18px}.section-heading>strong{overflow-wrap:anywhere;font-variant-numeric:tabular-nums;text-align:right;min-width:0;font-size:15px}.text-link{min-width:44px;min-height:44px;color:var(--primary);text-underline-offset:3px;justify-content:center;align-items:center;font-size:13px;font-weight:800;text-decoration-thickness:1.5px;display:inline-flex}.text-link:focus-visible,.expense-row:focus-visible,.upcoming-row:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.monthly-summary,.dashboard-summary{border:2px solid var(--ink);background:var(--surface-cream);box-shadow:4px 4px 0 var(--ink);border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 24px;display:grid}.monthly-summary>span,.dashboard-summary>span{border-right:1.5px solid var(--ink);align-content:start;gap:5px;min-width:0;padding:12px 9px;display:grid}.monthly-summary>span:last-child,.dashboard-summary>span:last-of-type{border-right:0}.monthly-summary small,.dashboard-summary small{color:var(--text-secondary);font-size:10px;line-height:1.35}.monthly-summary strong,.dashboard-summary strong{overflow-wrap:anywhere;font-variant-numeric:tabular-nums;min-width:0;font-size:13px;line-height:1.35}.monthly-summary [data-over=true]{background:var(--soft-coral)}.budget-section,.expense-section,.upcoming-section,.day-detail-section{margin-top:24px}.budget-list,.expense-list,.upcoming-list{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);display:grid}.budget-row,.expense-row,.upcoming-row{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:13px 2px;display:flex}.budget-row:last-child,.expense-row:last-child,.upcoming-row:last-child{border-bottom:0}.budget-row>span,.expense-row>span,.upcoming-row>span{min-width:0}.budget-row>span:first-child,.expense-row>span:first-child{flex:auto;gap:4px;display:grid}.budget-row strong,.expense-row strong,.upcoming-row strong{overflow-wrap:anywhere;font-variant-numeric:tabular-nums;font-size:14px}.budget-row small,.expense-row small{color:var(--text-secondary);font-size:11px;line-height:1.45}.budget-row[data-over=true]{background:var(--soft-coral);margin:0 -8px;padding-left:8px;padding-right:8px}.budget-row__amount{text-align:right;flex:0 48%;gap:4px;display:grid}.expense-row,.upcoming-row{color:var(--ink);text-decoration:none}.expense-row>strong,.upcoming-row>strong{text-align:right;flex:0 auto;min-width:0}.budget-guidance{margin-bottom:18px}.budget-form{gap:12px}.budget-input{grid-template-columns:72px minmax(0,1fr);align-items:center}.money-input{align-items:center;gap:6px;min-width:0;display:flex}.money-input b{color:var(--text-secondary);font-size:13px}.calendar-section{margin-top:6px}.calendar-grid{gap:4px;display:grid}.calendar-row{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.calendar-cell{min-width:0;display:flex}.calendar-cell--empty{min-height:68px}.calendar-weekday{color:var(--text-secondary);text-align:center;padding:4px 0 7px;font-size:12px;font-weight:800}.calendar-day{border:1.5px solid var(--border-subtle);background:var(--surface-white);width:100%;min-width:0;min-height:68px;color:var(--ink);cursor:pointer;text-align:left;border-radius:5px;align-content:start;justify-items:start;gap:3px;padding:5px 4px;display:grid;position:relative}.calendar-day[data-has-repayment=true]{padding-bottom:26px}.calendar-day[aria-pressed=true]{border:2px solid var(--ink);background:var(--coral);box-shadow:2px 2px 0 var(--ink)}.calendar-day:focus-visible{z-index:1;outline:2px solid var(--primary);outline-offset:1px}.calendar-day__number{font-size:13px;font-weight:800;line-height:1}.calendar-day__expense{overflow-wrap:anywhere;font-variant-numeric:tabular-nums;word-break:break-all;max-width:100%;font-size:12px;line-height:1.05}.calendar-day__repayment,.repayment-badge{border:1.5px solid var(--ink);background:var(--yellow);min-width:19px;min-height:19px;color:var(--ink);border-radius:4px;justify-content:center;align-items:center;font-size:11px;font-weight:800;line-height:1;display:inline-grid}.calendar-day__repayment{position:absolute;bottom:3px;right:3px}.selected-day{border:2px solid var(--ink);background:var(--sky);box-shadow:4px 4px 0 var(--ink);border-radius:8px;gap:12px;margin-top:16px;padding:16px;display:grid}.selected-day h2{margin:0;font-size:18px}.selected-day__amounts{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.selected-day__amounts span{min-width:0;color:var(--text-secondary);gap:3px;font-size:12px;display:grid}.selected-day__amounts strong{overflow-wrap:anywhere;color:var(--ink);font-variant-numeric:tabular-nums;font-size:15px}.selected-day__loading{color:var(--text-secondary);margin:0;font-size:13px}.selected-day__link{color:var(--ink);justify-self:end}.upcoming-row{grid-template-columns:auto minmax(0,1fr) minmax(68px,auto);display:grid}.upcoming-row__date{flex:none;font-size:12px;font-weight:800}.upcoming-row__name{overflow-wrap:anywhere;font-size:13px}.repayment-copy{gap:3px;display:grid}.repayment-copy small{color:var(--text-secondary);font-size:10px;line-height:1.35}.quiet-empty{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);color:var(--text-secondary);margin:0;padding:16px 0;font-size:13px;line-height:1.6}.dashboard-summary{margin-top:24px;margin-bottom:0}.dashboard-summary>p{border-top:1.5px solid var(--ink);color:var(--text-secondary);grid-column:1/-1;margin:0;padding:8px 10px;font-size:10px;line-height:1.4}.day-detail-section+.day-detail-section{margin-top:32px}.day-detail-section .form-guidance{margin-top:10px}@media (width<=374px){.app-shell,.auth-page,.device-content{padding-left:16px;padding-right:16px}.calendar-grid,.calendar-row{gap:3px}.calendar-day{min-height:64px;padding-left:3px;padding-right:3px}.monthly-summary>span,.dashboard-summary>span{padding-left:6px;padding-right:6px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
