:root{--bg: #f2f2f7;--card: #ffffff;--text: #1c1c1e;--muted: #8e8e93;--line: #e5e5ea;--accent: #15803d;--accent-soft: #dcfce7;--warn: #d97706;--over: #dc2626;--chip: #f2f2f7;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px);color-scheme:light dark;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,sans-serif;-webkit-tap-highlight-color:transparent}@media(prefers-color-scheme:dark){:root{--bg: #000000;--card: #1c1c1e;--text: #f2f2f7;--muted: #8e8e93;--line: #2c2c2e;--accent: #22c55e;--accent-soft: #14532d;--warn: #f59e0b;--over: #f87171;--chip: #2c2c2e}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text)}body{overscroll-behavior-y:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}input,select,textarea{font:inherit;font-size:16px;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;width:100%}textarea{resize:vertical}h1{font-size:28px;margin:0}h2{font-size:18px;margin:0}h3{font-size:16px;margin:0 0 8px}p{margin:0;line-height:1.4}.app{padding-bottom:calc(76px + var(--safe-bottom));max-width:640px;margin:0 auto}.screen{padding:calc(12px + var(--safe-top)) 16px 16px;display:flex;flex-direction:column;gap:12px}.top{display:flex;flex-direction:column;gap:6px}.card{background:var(--card);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.hero .big{font-size:34px;font-weight:700;letter-spacing:-.5px}.mid{font-size:22px;font-weight:600}.muted{color:var(--muted)}.small{font-size:13px;line-height:1.35}.pos{color:var(--accent)}.neg{color:var(--over)}.warn-text{color:var(--warn)}.right{text-align:right}.pad{padding:0 4px}.grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.row{display:flex;gap:8px;flex-wrap:wrap}.row-between{display:flex;justify-content:space-between;align-items:center;gap:8px}.emoji{font-size:22px;width:32px;text-align:center;flex-shrink:0}.empty{color:var(--muted);text-align:center;padding:24px 8px}.tips{display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--accent-soft);border-radius:12px}.tip-card{background:var(--accent-soft)}.month-picker{display:flex;align-items:center;gap:4px;color:var(--muted);text-transform:capitalize}.month-picker span{min-width:130px;text-align:center;font-weight:500;color:var(--text)}.icon{font-size:18px;padding:4px 10px;color:var(--muted)}.bar{position:relative;height:8px;border-radius:4px;background:var(--line);overflow:visible}.bar>div{height:100%;border-radius:4px;background:var(--accent);transition:width .3s}.bar.warn>div{background:var(--warn)}.bar.over>div{background:var(--over)}.bar.none>div{background:var(--muted);opacity:.5}.bar>i{position:absolute;top:-3px;width:2px;height:14px;background:var(--text);opacity:.45;border-radius:1px}.cat-row{display:flex;align-items:center;gap:10px;text-align:left;width:100%;padding:4px 0}.cat-row.budget{padding:8px 0;border-bottom:1px solid var(--line)}.alert{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border-radius:12px}.alert.over{background:color-mix(in srgb,var(--over) 14%,transparent)}.alert.warn{background:color-mix(in srgb,var(--warn) 14%,transparent)}.list{gap:0;padding:8px 16px}.day{font-size:13px;color:var(--muted);padding:4px 0;text-transform:capitalize}.tx{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:10px 0;border-top:1px solid var(--line)}.tx.ignored{opacity:.45}.tx-desc{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters{display:flex;gap:8px}.filters select{width:40%}.primary,.secondary,.danger,label.file{display:block;width:100%;padding:13px;border-radius:12px;font-weight:600;text-align:center}.primary{background:var(--accent);color:#fff}.primary:disabled{opacity:.4}.secondary,label.file{background:var(--chip);color:var(--accent)}.danger{color:var(--over)}.link{color:var(--accent);font-size:14px}label.file input{display:none}label.file.disabled{opacity:.4}.error{color:var(--over);font-size:14px}.fab{position:fixed;right:max(16px,calc(50% - 304px));bottom:calc(88px + var(--safe-bottom));width:56px;height:56px;border-radius:28px;background:var(--accent);color:#fff;font-size:30px;box-shadow:0 6px 20px #00000040;z-index:5}.tabs{position:fixed;left:0;right:0;bottom:0;display:flex;justify-content:space-around;z-index:6;background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--line);padding:6px 0 calc(6px + var(--safe-bottom))}.tabs button{display:flex;flex-direction:column;align-items:center;font-size:11px;color:var(--muted);gap:2px;min-width:60px}.tabs button span{font-size:22px;filter:grayscale(1);opacity:.6}.tabs button.on{color:var(--accent)}.tabs button.on span{filter:none;opacity:1}.toast{position:fixed;left:16px;right:16px;top:calc(12px + var(--safe-top));z-index:20;max-width:600px;margin:0 auto;background:var(--text);color:var(--bg);padding:12px 16px;border-radius:14px;font-size:14px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:10;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--bg);width:100%;max-width:640px;max-height:92vh;border-radius:20px 20px 0 0;display:flex;flex-direction:column;animation:up .2s ease-out}@keyframes up{0%{transform:translateY(40px);opacity:0}}.sheet-head{display:flex;justify-content:space-between;align-items:center;padding:16px 16px 8px}.sheet-body{overflow-y:auto;padding:8px 16px calc(24px + var(--safe-bottom));display:flex;flex-direction:column;gap:12px}.amount{font-size:32px!important;font-weight:700;text-align:center;padding:16px}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.field-label{font-size:13px;color:var(--muted)}.check{display:flex;gap:10px;align-items:center;font-size:14px}.check input{width:20px;height:20px;flex-shrink:0;accent-color:var(--accent)}.cat-grid{display:flex;flex-wrap:wrap;gap:6px}.chip{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:7px 11px;font-size:14px;display:inline-flex;gap:5px;align-items:center}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.emoji-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.emoji-grid button{font-size:24px;padding:6px 0;border-radius:10px}.emoji-grid button.on{background:var(--accent-soft);outline:2px solid var(--accent)}.segmented{display:flex;background:var(--chip);border-radius:10px;padding:3px}.segmented button{flex:1;padding:8px;border-radius:8px;font-size:14px}.segmented button.on{background:var(--card);box-shadow:0 1px 3px #00000026;font-weight:600}.suggest{background:var(--card);border-radius:12px;padding:10px 12px;font-size:14px;display:flex;flex-direction:column;gap:8px}details summary{cursor:pointer;padding:4px 0}.center-screen{min-height:100vh;padding:calc(40px + var(--safe-top)) 24px 40px;max-width:420px;margin:0 auto;display:flex;flex-direction:column;justify-content:center;gap:14px;text-align:center}.logo{font-size:56px}.passphrase{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:20px;font-weight:600;letter-spacing:1px;background:var(--card);border:2px dashed var(--accent);border-radius:14px;padding:18px 10px;word-spacing:4px;line-height:1.6;user-select:all;-webkit-user-select:all}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace}.hint{text-align:left;font-size:14px;line-height:1.45;padding-left:20px;margin:0;color:var(--muted)}.invoice-card{text-align:left;width:100%}.split-bar{display:flex;height:10px;border-radius:5px;overflow:hidden;background:var(--line)}.split-bar .done,.legend i.done,.dot.done{background:var(--accent)}.split-bar .planned,.legend i.planned,.dot.planned{background:repeating-linear-gradient(135deg,var(--warn) 0 4px,color-mix(in srgb,var(--warn) 35%,transparent) 4px 8px)}.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;color:var(--muted)}.legend b{color:var(--text);font-weight:600}.legend i,.dot{display:inline-block;width:10px;height:10px;border-radius:3px;vertical-align:-1px;margin-right:2px}.suggest .total{border-top:1px solid var(--line);padding-top:8px;font-size:16px}.pace{border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.pace.above{background:color-mix(in srgb,var(--over) 14%,transparent)}.pace.below{background:var(--accent-soft)}
