:root{--bg: #FFF8E7;--ink: #0F0F0F;--cream: #FFF8E7;--pink: #FF5DA2;--yellow: #FFD93D;--blue: #4D9DE0;--green: #6BCB77;--red: #FF4444;--purple: #B084EE;--orange: #FF8C00;--black: #000000;--border: 3px solid var(--ink);--border-thick: 4px solid var(--ink);--shadow-sm: 3px 3px 0 var(--ink);--shadow: 5px 5px 0 var(--ink);--shadow-lg: 7px 7px 0 var(--ink);--radius-sm: 6px;--radius: 10px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--gap-xs: 4px;--gap-sm: 8px;--gap: 12px;--gap-md: 16px;--gap-lg: 20px;--gap-xl: 24px;--font-en: "Archivo Black", "Noto Sans TC", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;--font-tc: "Noto Sans TC", "PingFang TC", system-ui, sans-serif;--t-fast: .15s ease-out;--max-width: 480px;--tab-bar-height: calc(env(safe-area-inset-bottom) + 100px) }*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{min-height:100vh;min-height:100lvh;font-family:var(--font-tc);font-weight:700;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:contain}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background-image:radial-gradient(circle at 20% 30%,rgba(0,0,0,.025) 1px,transparent 1px),radial-gradient(circle at 70% 80%,rgba(0,0,0,.025) 1px,transparent 1px),radial-gradient(circle at 40% 60%,rgba(0,0,0,.02) 1px,transparent 1px);background-size:3px 3px,5px 5px,7px 7px}#app{position:relative;z-index:1;max-width:var(--max-width);margin:0 auto;min-height:100%;min-height:100lvh;padding:max(env(safe-area-inset-top),16px) 16px var(--tab-bar-height)}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}a{color:inherit;text-decoration:none}input,textarea,select{font:inherit;color:inherit}img{display:block;max-width:100%}::selection{background:var(--ink);color:var(--yellow)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;background:var(--pink);color:var(--ink);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);font:800 14px var(--font-en);letter-spacing:.5px;transition:transform var(--t-fast),box-shadow var(--t-fast)}.btn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.btn--secondary{background:var(--cream)}.btn--icon{width:44px;height:44px;padding:0;border-radius:var(--radius-md)}.card{background:var(--cream);border:var(--border-thick);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:14px 16px}.card--dark{position:relative;background:var(--ink);color:var(--cream);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:20px;overflow:hidden}.card--dark:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:repeating-linear-gradient(45deg,transparent,transparent 12px,rgba(255,255,255,.03) 12px,rgba(255,255,255,.03) 13px)}.tag{display:inline-block;padding:3px 8px;background:var(--ink);color:var(--cream);border-radius:var(--radius-sm);font:800 11px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase}.pill{display:inline-flex;align-items:center;padding:4px 10px;border:2px solid var(--ink);border-radius:999px;font:800 11px var(--font-mono);letter-spacing:1px;text-transform:uppercase}.pill--urgent{background:var(--red);color:var(--cream)}.pill--warning{background:var(--yellow);color:var(--ink)}.pill--ok{background:var(--green);color:var(--ink)}body.modal-open{overflow:hidden}.modal-backdrop{position:fixed;inset:0;z-index:100;background:#0f0f0f00;display:flex;align-items:flex-end;justify-content:center;padding:var(--gap-md);padding-bottom:calc(env(safe-area-inset-bottom) + var(--gap-md));transition:background .2s ease-out}.modal-backdrop.is-open{background:#0f0f0f8c}.modal{position:relative;width:100%;max-width:var(--max-width);background:var(--cream);border:var(--border-thick);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:20px;transform:translateY(40px) rotate(-1deg);opacity:0;transition:transform .22s cubic-bezier(.2,.8,.3,1.2),opacity .2s ease-out;max-height:calc(100vh - env(safe-area-inset-top) - var(--gap-md) * 2);overflow-y:auto}.modal-backdrop.is-open .modal{transform:translateY(0) rotate(0);opacity:1}.modal-head{font:900 18px var(--font-tc);letter-spacing:-.3px;margin-bottom:var(--gap-md);padding-bottom:var(--gap-sm);border-bottom:2px solid var(--ink)}.ico{width:1em;height:1em;fill:currentColor;display:inline-block;vertical-align:-.125em;flex-shrink:0}.sync-icon--syncing{animation:sync-spin 1.4s linear infinite;color:var(--ink)}.sync-icon--dirty{color:var(--red)}.sync-icon--idle{color:var(--ink)}.sync-icon--disabled{color:var(--ink);opacity:.45}@keyframes sync-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.sync-icon--syncing{animation:none}}.modal-body{display:flex;flex-direction:column;gap:var(--gap);margin-bottom:var(--gap-md)}.modal-body p{font:700 13px var(--font-tc);line-height:1.5}.import-summary{list-style-position:inside;padding-left:4px;margin:0;font:700 13px var(--font-tc);line-height:1.7}.import-summary li{white-space:normal;overflow-wrap:break-word}.modal-error{padding:8px 12px;background:var(--red);color:var(--cream);border:2px solid var(--ink);border-radius:var(--radius);font:800 12px var(--font-tc);margin-bottom:var(--gap)}.modal-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}.modal-actions:has(>button:only-child){grid-template-columns:1fr}.modal-actions .btn{width:100%}.btn--danger-solid{background:var(--red);color:var(--cream)}.toast{position:fixed;left:50%;bottom:calc(var(--tab-bar-height) + 12px);z-index:90;padding:12px 18px;background:var(--ink);color:var(--cream);border:3px solid var(--ink);border-radius:var(--radius);box-shadow:5px 5px 0 var(--pink);font:800 13px var(--font-tc);letter-spacing:.5px;white-space:nowrap;max-width:calc(100vw - 32px);overflow:hidden;text-overflow:ellipsis;transform:translate(-50%,30px);opacity:0;transition:transform .22s cubic-bezier(.2,.8,.3,1.2),opacity .2s ease-out;pointer-events:none}.toast.is-open{transform:translate(-50%);opacity:1}.toast--error{box-shadow:5px 5px 0 var(--red)}.toast--success{box-shadow:5px 5px 0 var(--green)}.toast--warning{box-shadow:5px 5px 0 var(--yellow)}.toast-with-action{display:inline-flex;align-items:center;gap:12px;padding:10px 14px}.toast-action-btn{background:var(--pink);color:var(--ink);border:2px solid var(--cream);border-radius:6px;padding:4px 10px;font:800 11px var(--font-mono);letter-spacing:1px;text-transform:uppercase;pointer-events:auto;cursor:pointer}.toast-action-btn:active{transform:translate(1px,1px)}@keyframes brutal-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-stagger>*{opacity:0;animation:brutal-fade-in .28s cubic-bezier(.2,.8,.3,1) forwards;animation-delay:calc(var(--stagger-step, 50ms) * var(--i, 0))}.fade-stagger>*:nth-child(1){--i: 0}.fade-stagger>*:nth-child(2){--i: 1}.fade-stagger>*:nth-child(3){--i: 2}.fade-stagger>*:nth-child(4){--i: 3}.fade-stagger>*:nth-child(5){--i: 4}.fade-stagger>*:nth-child(6){--i: 5}.fade-stagger>*:nth-child(7){--i: 6}.fade-stagger>*:nth-child(8){--i: 7}.fade-stagger>*:nth-child(n+9){--i: 8}@media (prefers-reduced-motion: reduce){.fade-stagger>*{animation:none;opacity:1}}@keyframes brutal-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton{background:linear-gradient(90deg,#0000000a,#0000001a,#0000000a);background-size:200% 100%;animation:brutal-shimmer 1.4s linear infinite;border:2px solid rgba(0,0,0,.1);border-radius:var(--radius-lg);height:76px;margin-bottom:var(--gap)}@media (prefers-reduced-motion: reduce){.skeleton{animation:none}}.h-screen{font:900 22px var(--font-tc);letter-spacing:-.5px;margin-bottom:var(--gap-md)}.h-section{font:800 11px var(--font-mono);letter-spacing:2px;text-transform:uppercase;opacity:.6;margin-bottom:var(--gap-sm)}.app-header{display:flex;justify-content:space-between;align-items:center;padding:4px 0 var(--gap-lg)}.logo{display:flex;align-items:center;gap:10px}.logo-mark{width:44px;height:44px;background:var(--pink);border:var(--border-thick);box-shadow:var(--shadow-sm);border-radius:var(--radius-md);display:grid;place-items:center;transform:rotate(-4deg);font:700 22px var(--font-en);color:var(--ink)}.logo-text h1{font:900 20px var(--font-tc);letter-spacing:-.5px;line-height:1}.logo-text p{font:700 10px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase;margin-top:4px;opacity:.55}.header-btn{width:44px;height:44px;background:var(--cream);border:var(--border);box-shadow:var(--shadow-sm);border-radius:var(--radius-md);display:grid;place-items:center;font:700 20px var(--font-en);transition:all var(--t-fast)}.header-btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.dashboard{position:relative;background:var(--ink);color:var(--cream);border:var(--border-thick);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:20px;margin-bottom:var(--gap-xl);overflow:hidden}.dashboard:before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(45deg,transparent,transparent 12px,rgba(255,255,255,.03) 12px,rgba(255,255,255,.03) 13px);pointer-events:none}.dashboard>*{position:relative}.dash-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.dash-label{flex:1;text-align:center;font:800 11px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase;opacity:.7}.dash-nav{width:32px;height:32px;border:2px solid var(--cream);border-radius:8px;color:var(--cream);font:700 18px var(--font-en);line-height:1;display:grid;place-items:center;transition:all var(--t-fast)}.dash-nav:active{transform:scale(.92);background:#ffffff1a}.dash-amount{font:400 48px var(--font-en);letter-spacing:-2px;margin:6px 0 4px;line-height:1}.dash-amount .currency{font:800 14px var(--font-mono);letter-spacing:0;margin-right:8px;opacity:.7}.dash-compare{font:700 13px var(--font-tc);opacity:.85;margin-bottom:var(--gap-md)}.dash-compare .badge{display:inline-block;padding:2px 8px;border-radius:6px;font:800 11px var(--font-mono);letter-spacing:1px;margin-left:4px}.badge-down{background:var(--green);color:var(--ink)}.badge-up{background:var(--red);color:var(--cream)}.dash-compare .muted{opacity:.55;font-style:italic}.dash-bars{display:flex;gap:2px;height:24px;border:2px solid var(--cream);border-radius:6px;overflow:hidden;margin-bottom:10px}.dash-bars .bar{display:grid;place-items:center;font:800 10px var(--font-mono);letter-spacing:1px;color:var(--ink);min-width:0}.bar-card{background:var(--pink)}.bar-cash{background:var(--yellow)}.bar-trans{background:var(--blue)}.dash-legend{display:flex;flex-wrap:wrap;gap:10px 14px;font:700 11px var(--font-mono);letter-spacing:.5px}.dash-legend span{display:inline-flex;align-items:center;gap:6px}.dash-legend i{width:10px;height:10px;border:1.5px solid var(--cream);border-radius:2px;display:inline-block}.legend-card i{background:var(--pink)}.legend-cash i{background:var(--yellow)}.legend-trans i{background:var(--blue)}.section{margin-bottom:var(--gap-xl)}.section-title{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--gap)}.section-title>span:first-child{font:900 18px var(--font-tc);letter-spacing:-.3px}.section-title .count{font:800 11px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase;opacity:.55}.today-card{position:relative;border:var(--border-thick);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:14px 16px;margin-bottom:var(--gap)}.today-card--urgent{background:var(--red);color:var(--cream)}.today-card--warning{background:var(--yellow);color:var(--ink)}.today-card--normal{background:var(--green);color:var(--ink)}.today-row{display:flex;align-items:center;gap:12px}.today-info{flex:1;min-width:0}.today-tag{display:inline-block;padding:3px 8px;background:var(--ink);color:var(--cream);border-radius:4px;font:800 10px var(--font-mono);letter-spacing:1px;text-transform:uppercase;margin-bottom:6px}.today-card--urgent .today-tag{background:var(--cream);color:var(--ink)}.today-name{font:900 16px var(--font-tc);letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.today-msg{font:700 12px var(--font-mono);margin-top:2px;opacity:.85}.today-action{flex-shrink:0;background:var(--ink);color:var(--yellow);border:2px solid var(--ink);border-radius:10px;padding:8px 12px;font:800 12px var(--font-tc);letter-spacing:.5px;transition:all var(--t-fast)}.today-card--urgent .today-action{background:var(--cream);color:var(--ink)}.today-action:active{transform:translate(1px,1px)}.sticker{position:absolute;top:-8px;right:12px;background:var(--ink);color:var(--cream);border:2px solid var(--cream);padding:4px 8px;border-radius:6px;transform:rotate(8deg);font:700 10px var(--font-en);letter-spacing:1.5px;z-index:1}.sticker--ok{background:var(--green);color:var(--ink);border-color:var(--ink);transform:rotate(-6deg)}.bills-list{display:flex;flex-direction:column;gap:var(--gap-lg)}.bill-card{position:relative;display:flex;align-items:center;gap:12px;background:var(--cream);border:var(--border-thick);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:16px 14px 12px;transition:all var(--t-fast)}.bill-card:active{transform:translate(1px,1px);box-shadow:4px 4px 0 var(--ink)}.bill-card.is-paid{opacity:.5;background:#0000000a}.bill-card.is-paid .bill-name,.bill-card.is-paid .bill-amount .num{text-decoration:line-through;text-decoration-thickness:2px}.bill-icon{width:48px;height:48px;border:var(--border);border-radius:var(--radius-md);display:grid;place-items:center;font:700 18px var(--font-en);flex-shrink:0}.icon-pink{background:var(--pink)}.icon-yellow{background:var(--yellow)}.icon-blue{background:var(--blue);color:var(--cream)}.icon-green{background:var(--green)}.icon-purple{background:var(--purple)}.icon-orange{background:var(--orange)}.icon-black{background:var(--black);color:var(--cream)}.bill-body{flex:1;min-width:0}.bill-name{font:900 15px var(--font-tc);letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bill-meta{display:flex;align-items:center;gap:6px;font:700 10px var(--font-mono);margin-top:4px;opacity:.65;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bill-meta .dot{width:3px;height:3px;background:currentColor;border-radius:50%;display:inline-block}.bill-amount{text-align:right;flex-shrink:0}.bill-amount .num{font:700 18px var(--font-en);letter-spacing:-.5px}.bill-amount .label{font:800 10px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase;margin-top:2px;opacity:.6}.bill-amount .label-pending{color:var(--red);opacity:1}.expense-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}.expense-card{border:var(--border-thick);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:14px;transition:all var(--t-fast)}.expense-card:active{transform:translate(1px,1px);box-shadow:4px 4px 0 var(--ink)}.expense-card--cash{background:var(--yellow)}.expense-card--trans{background:var(--blue);color:var(--cream)}.expense-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.expense-icon{width:28px;height:28px;background:var(--ink);color:var(--cream);border-radius:8px;display:grid;place-items:center;font-size:16px}.expense-icon .ico{width:1em;height:1em}.expense-card--trans .expense-icon{background:var(--cream);color:var(--ink)}.expense-label{font:800 11px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase}.expense-num{font:700 24px var(--font-en);letter-spacing:-.5px}.expense-foot{font:700 10px var(--font-mono);letter-spacing:1px;margin-top:4px;opacity:.65;text-transform:uppercase}.empty-state{border:2px dashed var(--ink);border-radius:var(--radius-lg);padding:24px 16px;text-align:center;background:#00000005}.empty-title{font:900 16px var(--font-tc);letter-spacing:-.3px}.empty-body{font:700 12px var(--font-mono);margin-top:6px;opacity:.6}.empty-state .btn{margin-top:var(--gap-md)}.tab-bar{position:fixed;bottom:0;left:0;right:0;z-index:50;display:flex;background:var(--cream);border-top:var(--border-thick);padding:8px 12px calc(env(safe-area-inset-bottom) + 8px);gap:4px}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border-radius:10px;border:2px solid transparent;transition:all var(--t-fast);color:var(--ink)}.tab.is-active{background:var(--ink);color:var(--yellow);border-color:var(--ink)}.tab-icon{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;line-height:1;transform:translate(-1px)}.tab-icon .ico{display:block;width:1em;height:1em}.tab[data-tab=bills] .ico{transform:scaleX(.85);transform-origin:center}.tab-label{font:800 10px var(--font-mono);letter-spacing:1.2px;text-transform:uppercase}.page-title-row{display:flex;align-items:center;justify-content:space-between;gap:var(--gap);margin-bottom:var(--gap)}.nav-header{display:flex;align-items:center;gap:var(--gap);padding:4px 0 var(--gap-lg)}.nav-header .header-btn{font-size:26px;padding-bottom:2px}.nav-title{flex:1;font:900 18px var(--font-tc);letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-btn-placeholder{width:44px;height:44px;flex-shrink:0}.bill-edit-btn{width:36px;height:36px;background:transparent;border:none;box-shadow:none;border-radius:0;font-size:18px;flex-shrink:0;color:var(--ink);opacity:.55;transition:opacity var(--t-fast)}.bill-edit-btn:active{transform:translate(1px,1px);box-shadow:none;opacity:1}.bill-edit-btn:hover{opacity:1}.bill-edit-btn .ico{width:1em;height:1em}.bill-form,.entry-form{display:flex;flex-direction:column;gap:var(--gap-md)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font:800 11px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase;opacity:.65}.field-hint{font:700 11px var(--font-mono);opacity:.55}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}.field input[type=text],.field input[type=number],.field input[type=date],.field textarea,.field select{width:100%;padding:12px 14px;background:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);font:800 16px var(--font-tc);color:var(--ink);outline:none;transition:box-shadow var(--t-fast),transform var(--t-fast);appearance:none;-webkit-appearance:none}.field input[type=number],.field input[type=date]{font-family:var(--font-en);letter-spacing:-.3px}.field textarea{resize:vertical;min-height:60px;font-size:14px;font-weight:700;line-height:1.4}.field input:focus,.field textarea:focus,.field select:focus{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink);background:#fff}.field input::placeholder,.field textarea::placeholder{color:var(--ink);opacity:.3;font-weight:700}.color-picker{display:flex;gap:10px;flex-wrap:wrap}.swatch{width:48px;height:48px;border:var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:transform var(--t-fast),box-shadow var(--t-fast);cursor:pointer}.swatch:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.swatch.is-selected{border-width:4px;transform:rotate(-4deg) translate(-1px,-1px);box-shadow:5px 5px 0 var(--ink)}.swatch-pink{background:var(--pink)}.swatch-yellow{background:var(--yellow)}.swatch-blue{background:var(--blue)}.swatch-green{background:var(--green)}.swatch-purple{background:var(--purple)}.swatch-orange{background:var(--orange)}.swatch-black{background:var(--black)}.method-row{display:flex;gap:8px}.method-tile{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 8px;background:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);font:800 13px var(--font-tc);cursor:pointer;transition:transform var(--t-fast),box-shadow var(--t-fast)}.method-tile input{position:absolute;opacity:0;pointer-events:none}.method-tile:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}.method-tile.is-active{background:var(--ink);color:var(--cream);border-color:var(--ink)}.method-dot{display:inline-block;width:14px;height:14px;border:2px solid var(--ink);border-radius:4px;flex-shrink:0}.method-tile--card .method-dot{background:var(--pink)}.method-tile--cash .method-dot{background:var(--yellow)}.method-tile--transfer .method-dot{background:var(--blue)}.method-tile.is-active .method-dot{border-color:var(--cream)}.method-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;background:var(--cream);border:2px solid var(--ink);border-radius:999px;font:800 11px var(--font-mono);letter-spacing:1px;color:var(--ink)}.method-badge i{display:inline-block;width:10px;height:10px;border-radius:3px;border:1.5px solid var(--ink)}.method-badge--card i{background:var(--pink)}.method-badge--cash i{background:var(--yellow)}.method-badge--transfer i{background:var(--blue)}.method-badge--compact{position:absolute;top:-14px;left:4px;padding:3px 7px;font-size:10px;letter-spacing:.5px;z-index:1;background:var(--cream)}.method-badge--compact i{width:8px;height:8px}.field-toggle{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);cursor:pointer}.field-toggle input{display:none}.toggle-mark{width:44px;height:26px;background:var(--cream);border:var(--border);border-radius:999px;position:relative;flex-shrink:0;transition:background var(--t-fast)}.toggle-mark:after{content:"";position:absolute;top:1px;left:1px;width:20px;height:20px;background:var(--ink);border-radius:50%;transition:transform var(--t-fast)}.field-toggle input:checked+.toggle-mark{background:var(--green)}.field-toggle input:checked+.toggle-mark:after{transform:translate(18px)}.toggle-text{font:700 13px var(--font-tc);flex:1}.form-error{padding:10px 14px;background:var(--red);color:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);font:800 13px var(--font-tc)}.form-actions{display:grid;grid-template-columns:1fr 2fr;gap:var(--gap);margin-top:var(--gap-sm)}.btn--danger{background:var(--red);color:var(--cream);margin-top:var(--gap-md);width:100%}.bill-status-card{background:var(--cream);border:var(--border-thick);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:20px;margin-bottom:var(--gap-md)}.status-icon-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--gap-md)}.status-icon-row-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.status-amount{font:400 56px var(--font-en);letter-spacing:-2px;line-height:1;margin-bottom:4px}.status-amount.is-clickable{cursor:pointer;transition:transform var(--t-fast)}.status-amount.is-clickable:active{transform:translate(1px,1px)}.status-amount .currency{font:800 14px var(--font-mono);letter-spacing:0;margin-right:8px;opacity:.6}.status-month{font:800 11px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase;opacity:.55;margin-bottom:var(--gap-md)}.status-dates{display:flex;gap:var(--gap-md);flex-wrap:wrap;padding:var(--gap-sm) 0;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);margin-bottom:var(--gap-md)}.status-dates>div{display:flex;flex-direction:column;gap:2px}.status-date-label{font:800 10px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase;opacity:.55}.status-date-value{font:800 14px var(--font-en);letter-spacing:-.3px;display:flex;align-items:center;gap:6px}.tag-mini{display:inline-block;padding:1px 6px;background:var(--yellow);border:1.5px solid var(--ink);border-radius:4px;font:800 9px var(--font-mono);letter-spacing:1px}.status-actions{display:flex;gap:var(--gap);margin-bottom:var(--gap)}.status-actions .btn{flex:1;padding:14px;font-size:15px}.status-link{font:800 12px var(--font-mono);letter-spacing:.5px;color:var(--ink);opacity:.65;padding:4px 0;text-align:left;width:100%}.status-link:active{opacity:1}.muted-note{padding:var(--gap-md);background:#0000000a;border-radius:var(--radius);font:700 13px var(--font-tc);opacity:.7}.history-list{display:flex;flex-direction:column;gap:var(--gap-sm)}.history-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--cream);border:var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:all var(--t-fast)}.history-row:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}.history-month{display:flex;flex-direction:column;gap:2px}.month-num{font:700 16px var(--font-en);letter-spacing:-.3px}.month-dates{font:700 11px var(--font-mono);opacity:.6}.history-amount{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.history-amount .num{font:700 16px var(--font-en);letter-spacing:-.3px}.bill-meta-card{background:#00000008;border:2px dashed var(--ink);border-radius:var(--radius-lg);padding:var(--gap-md);margin-top:var(--gap-xl);display:flex;flex-direction:column;gap:8px}.meta-row{display:flex;justify-content:space-between;gap:var(--gap);font:700 12px var(--font-tc)}.meta-key{font-family:var(--font-mono);letter-spacing:1px;text-transform:uppercase;font-size:10px;opacity:.6}.meta-val{text-align:right}.month-switcher{display:flex;align-items:center;justify-content:space-between;background:var(--ink);color:var(--cream);border:var(--border-thick);border-radius:var(--radius);padding:8px 14px;margin-bottom:var(--gap);box-shadow:var(--shadow-sm)}.month-current{flex:1;text-align:center;font:700 18px var(--font-en);letter-spacing:-.5px}.month-nav{width:32px;height:32px;border:2px solid var(--cream);border-radius:8px;color:var(--cream);font:700 18px var(--font-en);display:grid;place-items:center;transition:all var(--t-fast)}.month-nav:active{transform:scale(.92);background:#ffffff1a}.month-summary{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;background:var(--yellow);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:12px 14px;margin-bottom:var(--gap)}.month-summary--transfer{background:var(--blue);color:var(--cream)}.ms-label{font:800 11px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase;opacity:.7}.ms-amount{flex:1;font:700 22px var(--font-en);letter-spacing:-.5px}.ms-count{font:700 11px var(--font-mono);opacity:.65;letter-spacing:1px;text-transform:uppercase}.add-entry-btn{width:100%;padding:14px;font-size:15px;margin-bottom:var(--gap)}.entry-list{display:flex;flex-direction:column;gap:var(--gap-sm)}.entry-row{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;background:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:all var(--t-fast);cursor:pointer}.entry-row:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}.entry-row--cash{border-left:6px solid var(--yellow)}.entry-row--transfer{border-left:6px solid var(--blue)}.entry-date{font:700 12px var(--font-mono);opacity:.6;flex-shrink:0;letter-spacing:.5px;padding-top:4px;min-width:84px}.entry-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.entry-amount-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.entry-amount{font:700 18px var(--font-en);letter-spacing:-.3px}.entry-target{font:800 12px var(--font-tc);opacity:.85;flex-shrink:0;text-align:right}.entry-note{font:700 12px var(--font-tc);opacity:.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entry-form--inline{background:var(--cream);border:var(--border-thick);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:var(--gap-md);margin-bottom:var(--gap)}.more-section{margin-bottom:var(--gap-xl)}.more-list{display:flex;flex-direction:column;gap:var(--gap-sm);margin-top:var(--gap)}.more-row{display:flex;align-items:center;gap:12px;padding:14px;background:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:all var(--t-fast);cursor:pointer}.more-row:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}.more-row--disabled{opacity:.5;cursor:default}.more-row--disabled:active{transform:none;box-shadow:var(--shadow-sm)}.more-icon{width:40px;height:40px;background:var(--pink);border:2px solid var(--ink);border-radius:10px;display:grid;place-items:center;font:700 18px var(--font-en);font-size:20px;flex-shrink:0}.more-icon .ico{width:1em;height:1em}.more-row--disabled .more-icon{background:var(--cream)}.more-body{flex:1;min-width:0}.more-label{font:900 15px var(--font-tc);letter-spacing:-.3px}.more-hint{font:700 11px var(--font-mono);opacity:.55;margin-top:2px}.more-arrow{font:700 22px var(--font-en);opacity:.5;flex-shrink:0}.more-dev{margin-top:var(--gap-xl)}.period-selector{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--gap-sm);background:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:4px;margin-bottom:var(--gap-md)}.period-btn{padding:10px 4px;background:transparent;border:0;border-radius:8px;font:800 13px var(--font-mono);letter-spacing:1.5px;color:var(--ink);transition:all var(--t-fast)}.period-btn.is-active{background:var(--ink);color:var(--yellow)}.chart-card{background:var(--cream);border:var(--border-thick);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:var(--gap-md);margin-bottom:var(--gap-lg)}.chart-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--gap);margin-bottom:var(--gap)}.chart-title{font:900 16px var(--font-tc);letter-spacing:-.3px}.chart-meta{font:800 10px var(--font-mono);letter-spacing:1.5px;text-transform:uppercase;opacity:.55}.chart-canvas-wrap{position:relative;height:220px;margin-bottom:var(--gap)}.chart-summary{padding-top:var(--gap-sm);border-top:2px solid var(--ink);font:700 12px var(--font-mono);text-align:center;letter-spacing:.5px}.chart-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 14px;padding-top:var(--gap-sm);border-top:2px solid var(--ink);font:700 11px var(--font-mono);letter-spacing:.5px}.chart-legend span{display:inline-flex;align-items:center;gap:6px}.chart-legend i{width:12px;height:12px;border:2px solid var(--ink);border-radius:3px;display:inline-block}.chart-legend .legend-card i{background:var(--pink)}.chart-legend .legend-cash i{background:var(--yellow)}.chart-legend .legend-trans i{background:var(--blue)}.bill-select{width:100%;padding:10px 14px;background:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);font:800 14px var(--font-tc);color:var(--ink);margin-bottom:var(--gap);appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 18px) center,calc(100% - 12px) center;background-size:6px 6px,6px 6px;background-repeat:no-repeat}.fab{position:fixed;right:20px;bottom:calc(env(safe-area-inset-bottom) + 88px);z-index:49;width:60px;height:60px;background:var(--pink);border:var(--border-thick);box-shadow:var(--shadow-lg);border-radius:18px;color:var(--ink);display:grid;place-items:center;transform:rotate(-3deg);transition:transform .18s ease-out,box-shadow var(--t-fast)}.fab-plus{display:block;width:32px;height:32px;fill:currentColor}.fab:active,.fab.is-tapped{transform:rotate(0) translate(2px,2px);box-shadow:3px 3px 0 var(--ink)}.fab.is-open{transform:rotate(45deg);background:var(--ink);color:var(--cream)}.fab-backdrop{position:fixed;inset:0;background:#0f0f0f00;z-index:48;transition:background .2s ease-out;pointer-events:none}.fab-backdrop.is-open{background:#0f0f0f73;pointer-events:auto}.fab-menu{position:fixed;right:20px;bottom:calc(env(safe-area-inset-bottom) + 158px);z-index:49;display:flex;flex-direction:column;gap:12px;align-items:flex-end;pointer-events:none}.fab-menu.is-open{pointer-events:auto}.fab-item{display:flex;align-items:center;gap:10px;padding:0;background:transparent;border:0;opacity:0;transform:translateY(20px) rotate(-2deg);transition:opacity .18s ease-out,transform .18s ease-out;transition-delay:calc(var(--i, 0) * 30ms)}.fab-menu.is-open .fab-item{opacity:1;transform:translateY(0) rotate(-2deg)}.fab-item:nth-child(2){transform:translateY(20px) rotate(2deg)}.fab-menu.is-open .fab-item:nth-child(2){transform:translateY(0) rotate(2deg)}.fab-item-label{background:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:8px 14px;font:800 13px var(--font-tc)}.fab-item-icon{width:48px;height:48px;background:var(--yellow);border:var(--border-thick);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);display:grid;place-items:center;font-size:22px}.fab-item-icon .ico{width:1em;height:1em}.fab-item:nth-child(2) .fab-item-icon{background:var(--blue);color:var(--cream)}.fab-item:nth-child(3) .fab-item-icon{background:var(--green)}.type-tabs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--gap-sm);margin-bottom:var(--gap-md)}.type-tab{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 4px;background:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:all var(--t-fast)}.type-tab:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}.type-tab.is-active{background:var(--ink);color:var(--yellow);border-color:var(--ink)}.type-tab-icon{font-size:20px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.type-tab-icon .ico{width:1em;height:1em}.type-tab[data-type=card] .ico{transform:scale(.88);transform-origin:center}.type-tab[data-type=cash] .ico{transform:scale(1.05);transform-origin:center}.type-tab[data-type=transfer] .ico{transform:scale(1.1);transform-origin:center}.type-tab-label{font:800 11px var(--font-mono);letter-spacing:.8px}.radio-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--gap-sm)}.radio-tile{display:grid;place-items:center;padding:12px 4px;background:var(--cream);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);font:800 13px var(--font-tc);cursor:pointer;transition:all var(--t-fast)}.radio-tile input{display:none}.radio-tile.is-active{background:var(--green);border-width:4px;transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.radio-tile:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}.copy-prev-btn{background:var(--purple);color:var(--ink);font-size:12px;padding:10px 14px;margin-top:-4px}.settings-card{background:var(--cream);border:var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--gap-md);display:flex;flex-direction:column;gap:var(--gap)}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--gap);padding:8px 0;border-top:1px dashed rgba(15,15,15,.15)}.settings-row:first-of-type{border-top:0}.settings-label{font:800 13px var(--font-tc);letter-spacing:-.2px}.settings-hint{font:700 11px var(--font-mono);opacity:.55;margin-top:2px;letter-spacing:.3px}.settings-note{font:700 11px var(--font-mono);opacity:.55;letter-spacing:.3px;line-height:1.5;margin-top:var(--gap-sm)}.settings-card select{padding:8px 28px 8px 12px;background:var(--cream);border:2px solid var(--ink);border-radius:var(--radius);font:800 14px var(--font-en);color:var(--ink);appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 14px) center,calc(100% - 8px) center;background-size:6px 6px,6px 6px;background-repeat:no-repeat;min-width:80px}.settings-card select:focus{outline:2px solid var(--pink);outline-offset:2px}.time-pick{display:flex;align-items:center;gap:4px;font:800 14px var(--font-en)}.time-pick select{min-width:64px}.settings-toggle{display:flex;align-items:center;gap:12px;padding:4px 0 12px;border-bottom:1px dashed rgba(15,15,15,.15)}.settings-toggle input{display:none}.settings-toggle .toggle-mark{width:44px;height:26px;background:var(--cream);border:var(--border);border-radius:999px;position:relative;flex-shrink:0;transition:background var(--t-fast)}.settings-toggle .toggle-mark:after{content:"";position:absolute;top:1px;left:1px;width:20px;height:20px;background:var(--ink);border-radius:50%;transition:transform var(--t-fast)}.settings-toggle input:checked+.toggle-mark{background:var(--green)}.settings-toggle input:checked+.toggle-mark:after{transform:translate(18px)}.settings-toggle input:disabled+.toggle-mark{opacity:.4}.settings-toggle .toggle-text{flex:1;font:900 14px var(--font-tc);letter-spacing:-.2px}.modal-body .field input[type=text],.modal-body .field input[type=number],.modal-body .field input[type=date],.modal-body .field textarea{font-size:16px;padding:10px 12px}.boot-error{margin:var(--gap-xl) 0;background:var(--red);color:var(--cream);border:var(--border-thick);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:var(--gap-md)}.boot-error h2{font:900 18px var(--font-tc);letter-spacing:-.3px;margin-bottom:var(--gap)}.boot-error pre{background:#00000040;border-radius:var(--radius);padding:8px 10px;font:700 12px var(--font-mono);white-space:pre-wrap;word-break:break-word;margin-bottom:var(--gap)}.boot-error .btn{width:100%;background:var(--ink);color:var(--cream)}.about-intro .settings-card{background:var(--yellow)}.about-title{font:900 18px var(--font-tc);letter-spacing:-.5px;margin-bottom:6px}.about-lead{font:700 13px var(--font-tc);line-height:1.65;letter-spacing:-.1px}.about-howto article{padding:10px 0;border-top:1px dashed rgba(15,15,15,.18)}.about-howto article:first-child{border-top:0;padding-top:4px}.about-howto h4{font:900 14px var(--font-tc);letter-spacing:-.2px;margin-bottom:6px}.about-howto p{font:700 12px var(--font-tc);line-height:1.65;letter-spacing:-.1px;opacity:.82}.about-warn-head{color:var(--red)}.about-warn{background:var(--yellow);border-color:var(--ink);border-width:3px;gap:10px}.about-warn p{font:700 12px var(--font-tc);line-height:1.7;letter-spacing:-.1px;padding:8px 0;border-top:1px dashed rgba(15,15,15,.25)}.about-warn p:first-child{border-top:0;padding-top:0}.about-warn strong{font:900 12px var(--font-tc);letter-spacing:-.1px}.about-troubleshoot ol{list-style:none;counter-reset:troubleshoot;margin:0;padding:0}.about-troubleshoot li{counter-increment:troubleshoot;padding:8px 0 8px 32px;position:relative;font:700 12px var(--font-tc);line-height:1.65;letter-spacing:-.1px;border-top:1px dashed rgba(15,15,15,.15)}.about-troubleshoot li:first-child{border-top:0;padding-top:4px}.about-troubleshoot li:before{content:counter(troubleshoot);position:absolute;left:0;top:6px;width:22px;height:22px;background:var(--ink);color:var(--cream);border-radius:6px;display:grid;place-items:center;font:900 11px var(--font-en)}.about-mono{font:700 11px var(--font-mono);letter-spacing:.2px;text-align:right;word-break:break-all;max-width:60%}.about-link{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px}.about-link:active{opacity:.6}.about-footer{text-align:center;font:700 11px var(--font-mono);letter-spacing:.5px;opacity:.45;margin-top:var(--gap-xl);margin-bottom:var(--gap-xl)}.onb-choice{display:flex;align-items:flex-start;gap:12px;padding:12px;background:var(--cream);border:2px solid var(--ink);border-radius:var(--radius);cursor:pointer;transition:all var(--t-fast)}.onb-choice:has(input:checked){background:var(--yellow);box-shadow:3px 3px 0 var(--ink);transform:translate(-1px,-1px)}.onb-choice input[type=radio]{margin-top:2px;flex-shrink:0}.onb-choice-title{font:900 14px var(--font-tc);letter-spacing:-.2px}.onb-choice-hint{font:700 11px var(--font-tc);opacity:.6;margin-top:3px;line-height:1.5}.onb-id-box{background:var(--ink);color:var(--cream);padding:14px 12px;border-radius:var(--radius);font:800 13px var(--font-mono);letter-spacing:1px;text-align:center;word-break:break-all;line-height:1.6;user-select:all;-webkit-user-select:all}.onb-id-input{padding:12px;background:var(--cream);border:2px solid var(--ink);border-radius:var(--radius);font:700 13px var(--font-mono);letter-spacing:.5px}.onb-id-input:focus{outline:2px solid var(--pink);outline-offset:2px}.cloud-id-display{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--ink);color:var(--cream);border-radius:var(--radius);font:700 11px var(--font-mono);letter-spacing:.3px;word-break:break-all;line-height:1.5}.cloud-id-text{flex:1;user-select:all;-webkit-user-select:all}.cloud-id-copy{flex-shrink:0;background:var(--yellow);color:var(--ink);border:none;padding:6px 10px;border-radius:6px;font:800 11px var(--font-en);letter-spacing:.5px;cursor:pointer}.cloud-id-copy:active{transform:translate(1px,1px)}
