@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600&family=Source+Sans+3:wght@400;500;600;700&display=swap";:root{--font-display: "Fraunces", Georgia, serif;--font-body: "Source Sans 3", system-ui, sans-serif;--bg: #f6f0e8;--bg-pattern: radial-gradient( circle at 12% 8%, rgba(196, 120, 74, .12) 0%, transparent 42% ), radial-gradient( circle at 88% 92%, rgba(74, 124, 96, .1) 0%, transparent 38% ), #f6f0e8;--surface: rgba(255, 252, 247, .92);--surface-elevated: #fffdf9;--border: rgba(62, 42, 28, .1);--text: #2a1f17;--text-muted: #6f5c4d;--accent: #c4784a;--accent-bright: #e09a6a;--accent-deep: #7a4532;--track: rgba(62, 42, 28, .08);--warn: #c9923a;--danger: #c24e42;--shadow-card: 0 12px 32px rgba(42, 31, 23, .06);--radius-lg: 20px;--radius-md: 14px;font-family:var(--font-body);line-height:1.5;font-weight:400;color:var(--text);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color-scheme:light}html[data-theme=dark]{color-scheme:dark;--bg: #1a1614;--bg-pattern: radial-gradient( circle at 12% 8%, rgba(196, 120, 74, .08) 0%, transparent 42% ), radial-gradient( circle at 88% 92%, rgba(74, 124, 96, .06) 0%, transparent 38% ), #1a1614;--surface: rgba(36, 30, 27, .95);--surface-elevated: #2e2622;--border: rgba(255, 240, 230, .1);--text: #f5ebe3;--text-muted: #b9a89a;--accent: #e09a6a;--accent-bright: #f0b88a;--accent-deep: #e09a6a;--track: rgba(255, 255, 255, .08);--warn: #e8b04a;--danger: #e87a6e;--shadow-card: 0 12px 32px rgba(0, 0, 0, .35)}html[data-theme=dark] button:hover{background:#3a322c}html[data-theme=dark] input::placeholder,html[data-theme=dark] textarea::placeholder{color:#b9a89a80}select{font-family:inherit;font-size:1rem;padding:.7rem .9rem;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface-elevated);color:var(--text);width:100%}input[type=search]{appearance:none}*,*:before,*:after{box-sizing:border-box}html,body,#root{width:100%;min-height:100dvh}body{margin:0;min-width:320px;background:var(--bg-pattern);overflow-x:hidden;overflow-y:auto}#root{overscroll-behavior:none;overflow-x:hidden;max-width:100%}input{font-family:inherit;font-size:1rem;padding:.7rem .9rem;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface-elevated);color:var(--text);outline:none;transition:border-color .15s ease,box-shadow .15s ease}input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #c4784a33}input::placeholder,textarea::placeholder{color:#6f5c4d8c}textarea{font-family:inherit;font-size:1rem;padding:.7rem .9rem;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface-elevated);color:var(--text);outline:none;resize:vertical;min-height:4.5rem;width:100%;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #c4784a33}input[type=date].native-date-input{display:block;width:100%;max-width:100%;min-width:0;box-sizing:border-box;appearance:auto;-webkit-appearance:auto;line-height:1.25;cursor:pointer}input[type=date].native-date-input::-webkit-date-and-time-value{text-align:left}input[type=date].native-date-input::-webkit-datetime-edit{min-width:0;overflow:hidden}input[type=date].native-date-input::-webkit-calendar-picker-indicator{cursor:pointer;opacity:1;margin-left:.25rem;flex-shrink:0}button{font-family:inherit;font-size:.95rem;font-weight:600;line-height:1;border-radius:999px;padding:.75em 1.25em;border:1px solid var(--border);background:var(--surface-elevated);color:var(--text);cursor:pointer;transition:transform .12s ease,background-color .18s ease,opacity .18s ease;-webkit-tap-highlight-color:transparent;appearance:none}button:hover{opacity:1;background:#fff8f0}button:active{transform:scale(.98)}.app{min-height:100dvh;max-width:440px;margin:0 auto;padding:1.25rem 1.25rem 2.5rem;display:flex;flex-direction:column;gap:1.25rem}.app-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.header-actions{display:flex;gap:.4rem;flex-shrink:0}.app-header h1{margin:0;font-family:var(--font-display);font-size:1.75rem;font-weight:600;letter-spacing:-.02em;line-height:1.15}.app-header p{margin:.35rem 0 0;font-size:.9rem;color:var(--text-muted)}.header-icon-btn{flex-shrink:0;width:2.35rem;height:2.35rem;padding:0;display:inline-flex;align-items:center;justify-content:center;border-color:var(--border)}.dashboard-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.dashboard-head .card-label{margin:0}.dashboard-edit-btn{flex-shrink:0;width:2.1rem;height:2.1rem;padding:0;display:inline-flex;align-items:center;justify-content:center;border-color:var(--border);color:var(--text-muted)}.dashboard-edit-btn:hover{color:var(--text);border-color:var(--accent)}.budget-picker{margin:-.25rem 0 0}.budget-picker-scroll{display:flex;gap:.5rem;overflow-x:auto;padding:.15rem 0 .35rem;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.budget-picker-scroll::-webkit-scrollbar{display:none}.budget-chip{flex-shrink:0;scroll-snap-align:start;display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;min-width:7.5rem;padding:.65rem .85rem;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);text-align:left;touch-action:manipulation}.budget-chip.active{border-color:var(--chip-color, var(--accent));background:color-mix(in srgb,var(--chip-color, var(--accent)) 18%,var(--surface-elevated));color:var(--text);box-shadow:0 4px 16px color-mix(in srgb,var(--chip-color, var(--accent)) 25%,transparent)}.budget-chip.active .budget-chip-name{color:var(--text)}.budget-chip.active .budget-chip-meta{color:var(--text-muted)}html[data-theme=dark] .budget-chip.active{background:color-mix(in srgb,var(--chip-color, var(--accent)) 32%,var(--surface-elevated));border-color:var(--chip-color, var(--accent-bright))}html[data-theme=dark] .budget-chip.active:hover{background:color-mix(in srgb,var(--chip-color, var(--accent)) 38%,var(--surface-elevated))}.budget-chip-add{align-items:center;justify-content:center;min-width:5rem;color:var(--accent-deep);border-style:dashed;font-weight:700}.budget-chip-dot{width:.5rem;height:.5rem;border-radius:50%}.budget-chip-name{font-weight:700;font-size:.9rem}.budget-chip-meta{font-size:.72rem;color:var(--text-muted);font-weight:600}.wide-btn{width:100%}button.primary.wide-btn,button.primary{background:var(--budget-accent, var(--accent-deep));border-color:var(--budget-accent, var(--accent-deep));color:#fffaf5}button.primary:hover{filter:brightness(.92)}.danger-btn{border-color:var(--danger);color:var(--danger);background:#c24e4214}.sheet-actions{grid-template-columns:1fr 1fr}.sheet-actions:has(.danger-btn){grid-template-columns:1fr}.sheet-actions:has(.danger-btn) .danger-btn{grid-column:1 / -1}.sheet-actions:has(.danger-btn) button:not(.danger-btn){flex:1}.sheet-actions:has(.danger-btn){display:flex;flex-wrap:wrap;gap:.5rem}.month-nav{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem;padding:.65rem .75rem;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card)}.month-nav-btn{width:2.75rem;height:2.75rem;padding:0;border-radius:50%;font-size:1.35rem;line-height:1;display:grid;place-items:center;touch-action:manipulation;position:relative;z-index:1}.month-nav-btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.month-nav-label{text-align:center;min-width:0}.month-nav-title{display:block;font-family:var(--font-display);font-size:1.05rem;font-weight:600;letter-spacing:-.02em}.month-nav-today{margin-top:.25rem;padding:0;border:none;background:none;font-size:.78rem;font-weight:700;color:var(--accent-deep)}.month-nav-today:hover{text-decoration:underline;background:none}.history-note{margin:0;padding:1rem 1.25rem;font-size:.88rem;color:var(--text-muted);line-height:1.45}.dashboard-main{display:grid;grid-template-columns:1fr auto;gap:.75rem;align-items:center}.dashboard-budget-name{margin:0;font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.dashboard-hero{margin:.15rem 0 0;font-family:var(--font-display);font-size:2rem;font-weight:600;letter-spacing:-.03em;line-height:1.1}.dashboard-hero.over{color:var(--danger)}.dashboard-hero-label{margin:.1rem 0 0;font-size:.82rem;color:var(--text-muted)}.dashboard-today{margin:.5rem 0 0;font-size:.9rem;font-weight:600;color:var(--accent-deep)}.dashboard-meta{margin:.5rem 0 0;font-size:.82rem;color:var(--text-muted)}.dashboard-meta strong{color:var(--text)}.dashboard .progress-track{margin-top:.65rem}.budget-pie-compact,.budget-pie-compact .budget-pie-chart{--size: 92px}.dashboard-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.dashboard-action{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.65rem .35rem;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface-elevated);font-size:.72rem;font-weight:700;color:var(--text);touch-action:manipulation}.dashboard-action:disabled{opacity:.4;cursor:not-allowed}.dashboard-action-icon{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:50%;background:color-mix(in srgb,var(--budget-accent, var(--accent)) 14%,var(--surface-elevated));color:var(--accent-deep)}.dashboard-action-label{text-align:center;line-height:1.2}.center-dialog-backdrop{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:max(1.25rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1.25rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));background:#2a1f1780;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overflow:hidden;overscroll-behavior:contain}.center-dialog{width:min(400px,100%);max-width:100%;min-width:0;max-height:min(85dvh,560px);display:flex;flex-direction:column;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);box-shadow:0 24px 64px #2a1f1733;overflow:hidden}.center-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1.1rem 1.15rem .75rem;border-bottom:1px solid var(--border);flex-shrink:0;min-width:0}.center-dialog-head h2{margin:0;flex:1;min-width:0;font-family:var(--font-display);font-size:1.15rem;font-weight:600;overflow-wrap:anywhere}.center-dialog-body{padding:1rem 1.15rem 1.15rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;min-width:0}.center-dialog-body .form-grid,.center-dialog-body .quick-presets,.center-dialog-body .spending-ranking{min-width:0;max-width:100%}.dialog-form-actions{display:grid;grid-template-columns:1fr;gap:.5rem;margin-top:1rem}.dialog-form-actions button.primary{background:var(--budget-accent, var(--accent-deep));border-color:var(--budget-accent, var(--accent-deep));color:#fffaf5}.expense-list-compact .expense-list-header h2{font-size:1rem}.dashboard-actions-history{grid-template-columns:1fr 1fr}@media(max-width:360px){.dashboard-actions{grid-template-columns:1fr 1fr}.dashboard-actions .dashboard-action:last-child{grid-column:1 / -1}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;box-shadow:var(--shadow-card)}.card-label{margin:0 0 .5rem;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.budget-row{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.budget-remaining{font-family:var(--font-display);font-size:2.25rem;font-weight:600;letter-spacing:-.03em;line-height:1}.budget-remaining.over{color:var(--danger)}.budget-meta{display:flex;gap:1.25rem;margin-top:1rem;font-size:.85rem;color:var(--text-muted)}.budget-meta strong{display:block;font-size:1rem;color:var(--text);font-weight:600}.progress-track{margin-top:1rem;height:8px;border-radius:999px;background:var(--track);overflow:hidden}.progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--budget-accent, var(--accent)) 0%,var(--accent-bright) 100%);transition:width .4s ease}.progress-fill.warn{background:linear-gradient(90deg,var(--warn) 0%,#e8a84a 100%)}.progress-fill.danger{background:linear-gradient(90deg,var(--danger) 0%,#e86a5a 100%)}.today-card{display:grid;grid-template-columns:auto 1fr;gap:1.25rem;align-items:center}.budget-pie{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:.75rem}.budget-pie-chart{--size: 116px;width:var(--size);height:var(--size);position:relative;container-type:inline-size}.budget-pie-chart svg{width:100%;height:100%;transform:rotate(-90deg)}.pie-segment{fill:none;stroke-width:10;stroke-linecap:round;transition:stroke-dasharray .5s ease,stroke .3s ease}.pie-left{stroke:#4a7c6052}.pie-spent{stroke:var(--accent)}.pie-spent.warn{stroke:var(--warn)}.pie-spent.danger{stroke:var(--danger)}.budget-pie-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none;padding:.35rem .25rem;max-width:100%}.budget-pie-center span{font-size:.58rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.budget-pie-center strong{font-family:var(--font-display);font-size:clamp(.62rem,11cqi,.95rem);font-weight:600;margin-top:.1rem;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.budget-pie-center strong.gauge-amount-sm{font-size:clamp(.56rem,9.5cqi,.78rem)}.budget-pie-center strong.gauge-amount-xs{font-size:clamp(.5rem,8.5cqi,.68rem)}.budget-pie-center em{margin-top:.15rem;font-size:.62rem;font-style:normal;font-weight:600;color:var(--text-muted)}.budget-pie-legend{list-style:none;margin:0;padding:0;width:100%;display:flex;flex-direction:column;gap:.4rem}.budget-pie-legend li{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.4rem;font-size:.78rem}.legend-dot{width:.55rem;height:.55rem;border-radius:50%}.legend-spent{background:var(--accent)}.legend-left{background:#4a7c608c}.legend-label{color:var(--text-muted);font-weight:600}.legend-value{font-weight:700;color:var(--text)}.today-copy h2{margin:0 0 .35rem;font-family:var(--font-display);font-size:1.2rem;font-weight:600}.today-copy p{margin:0;font-size:.88rem;color:var(--text-muted);line-height:1.45}.today-stats{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.85rem;font-size:.8rem}.today-stats div strong{display:block;font-size:.95rem;color:var(--text)}.budget-setup{text-align:center}.budget-setup p{margin:0 0 1rem;color:var(--text-muted);font-size:.9rem}.budget-input-row{display:flex;gap:.5rem;align-items:stretch}.budget-input-row input{flex:1}.inline-edit{display:flex;align-items:center;gap:.5rem;margin-top:.75rem}.inline-edit button.text-btn{border:none;padding:0;font-size:.8rem;font-weight:600;color:var(--accent-deep);opacity:1;background:none}.inline-edit button.text-btn:hover{text-decoration:underline}.form-card h2{margin:0 0 1rem;font-family:var(--font-display);font-size:1.15rem;font-weight:600}.form-grid{display:grid;gap:.75rem;min-width:0}.field label{display:block;margin-bottom:.35rem;font-size:.78rem;font-weight:600;color:var(--text-muted)}.field input{width:100%;max-width:100%;min-width:0;box-sizing:border-box}.native-date-field{min-width:0;max-width:100%}.form-grid .field{min-width:0}.form-actions{display:grid;grid-template-columns:1fr;gap:.5rem;margin-top:.25rem}.form-actions button.primary{background:var(--accent-deep);border-color:var(--accent-deep);color:#fffaf5}.form-actions button.primary:hover{background:#6b3828}.form-actions button.primary:disabled{opacity:.45;cursor:not-allowed}.spending-ranking{min-width:0;max-width:100%}.spending-ranking-sub{margin:0 0 1rem;font-size:.82rem;color:var(--text-muted);line-height:1.4;overflow-wrap:anywhere}.ranking-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.85rem}.ranking-item{display:flex;flex-direction:column;gap:.45rem}.ranking-item-head{display:flex;align-items:flex-start;gap:.65rem;min-width:0}.ranking-pos{width:1.6rem;height:1.6rem;border-radius:50%;display:grid;place-items:center;font-size:.78rem;font-weight:800;background:color-mix(in srgb,var(--budget-accent, var(--accent)) 18%,var(--surface-elevated));color:var(--accent-deep);flex-shrink:0}.ranking-item:first-child .ranking-pos{background:var(--budget-accent, var(--accent-deep));color:#fffaf5}.ranking-item-info{min-width:0}.ranking-title{display:block;font-weight:700;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ranking-meta{display:block;margin-top:.15rem;font-size:.74rem;color:var(--text-muted);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-amount{font-family:var(--font-display);font-size:1rem;font-weight:600;flex-shrink:0;max-width:42%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ranking-bar-track{height:6px;border-radius:999px;background:var(--track);overflow:hidden;margin-left:2.25rem}.ranking-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--budget-accent, var(--accent)) 0%,var(--accent-bright) 100%);transition:width .4s ease}.ranking-foot{margin:1rem 0 0;padding-top:.85rem;border-top:1px solid var(--border);font-size:.78rem;color:var(--text-muted);font-weight:600}.field-hint{margin:.35rem 0 0;font-size:.75rem;color:var(--text-muted)}.field-required{color:var(--danger)}.expense-item-desc{margin:0;font-size:.78rem;color:var(--text-muted);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.expense-item-tags{display:flex;flex-wrap:wrap;gap:.3rem;margin:0}.expense-tag{font-size:.68rem;font-weight:700;padding:.15rem .45rem;border-radius:999px;background:color-mix(in srgb,var(--budget-accent, var(--accent)) 16%,var(--surface-elevated));color:var(--accent-deep)}.dashboard-insights{display:flex;flex-direction:column;gap:.45rem;margin-bottom:.85rem}.insight-banner{margin:0;padding:.55rem .7rem;border-radius:var(--radius-md);font-size:.82rem;font-weight:600;line-height:1.35}.insight-watch{background:#c9923a26;color:var(--warn)}.insight-warning,.insight-over{background:#c24e421f;color:var(--danger)}.insight-line{display:flex;align-items:flex-start;gap:.5rem;margin:0;font-size:.8rem;color:var(--text-muted);line-height:1.4;overflow-wrap:anywhere}.insight-line-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.4em;height:1.4em;color:var(--accent-deep);opacity:.9}.insight-line-icon svg{display:block;width:1em;height:1em}.insight-line-text{flex:1;min-width:0}.quick-presets{margin-bottom:.85rem}.quick-presets-label{margin:0 0 .4rem;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.quick-presets-row{display:flex;flex-wrap:wrap;gap:.4rem}.quick-preset-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .7rem;border-radius:999px;border:1px solid var(--border);background:var(--surface-elevated);font-size:.78rem;font-weight:700}.quick-preset-chip span{font-size:.72rem;color:var(--text-muted);font-weight:600}.presets-editor{margin-top:.25rem;padding-top:.85rem;border-top:1px solid var(--border)}.presets-editor-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.presets-editor-head label{font-size:.78rem;font-weight:600;color:var(--text-muted)}.presets-editor-empty{margin:0 0 .5rem;font-size:.85rem;color:var(--text-muted)}.presets-editor-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}.presets-editor-row{display:grid;grid-template-columns:1fr 5.5rem auto;gap:.4rem;align-items:center}.presets-editor-row input[type=text],.presets-editor-row input[type=number]{min-width:0;padding:.55rem .65rem;font-size:.9rem}.presets-editor-remove{color:var(--danger);border-color:var(--border)}.expense-list-search-wrap{padding:1rem 1.25rem;flex-shrink:0;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface-elevated) 40%,var(--surface))}.expense-list-search{width:100%;box-sizing:border-box}.settings-sheet{max-height:min(90dvh,640px);overflow-x:hidden;overflow-y:auto}.sheet.panel:has(.presets-editor){max-height:min(92dvh,720px);overflow-x:hidden;overflow-y:auto}.settings-section{margin:1.25rem 0;padding-top:1rem;border-top:1px solid var(--border)}.budget-recurring-section{margin-bottom:0}.settings-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.65rem}.settings-section-head h3{margin:0;font-size:.95rem}.settings-empty{margin:0;font-size:.85rem;color:var(--text-muted)}.recurring-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}.recurring-item{display:flex;align-items:center;gap:.5rem}.recurring-item-main{flex:1;text-align:left;padding:.65rem .75rem;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface-elevated);display:flex;flex-direction:column;gap:.15rem}.recurring-item-main strong{font-size:.9rem}.recurring-item-main span{font-size:.75rem;color:var(--text-muted)}.icon-btn-sm{width:2rem;height:2rem;padding:0;border-radius:50%;font-size:1.1rem;line-height:1;flex-shrink:0}.ranking-compare-intro{margin:0 0 .75rem;font-size:.82rem;color:var(--text-muted)}.expense-list-header{margin-bottom:1rem}.expense-list-header h2{margin:0;font-family:var(--font-display);font-size:1.15rem;font-weight:600}.expense-list-hint{margin:.35rem 0 0;font-size:.78rem;color:var(--text-muted)}.expense-list-compact .expense-items{gap:.65rem}.expense-empty{margin:0;padding:2rem 1rem;text-align:center;color:var(--text-muted);font-size:.9rem}.expense-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem}.expense-list-more{width:100%;max-width:100%;margin-top:1rem;padding:.85rem 1rem;overflow-wrap:anywhere;border-radius:var(--radius-md);border:1px dashed var(--border);background:transparent;color:var(--accent-deep);font-size:.88rem;font-weight:700}.expense-list-more:hover{background:var(--surface-elevated)}.expense-list-sheet{display:flex;flex-direction:column;width:100%;max-width:100%;min-width:0;max-height:min(88dvh,640px);padding:0;overflow:hidden}.expense-list-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1.25rem 1.25rem 1rem;flex-shrink:0;border-bottom:1px solid var(--border);min-width:0}.expense-list-sheet-head>div:first-child{min-width:0;flex:1}.expense-list-sheet-head h2{margin:0;font-family:var(--font-display);font-size:1.2rem;font-weight:600;overflow-wrap:anywhere}.expense-list-sheet-head .sheet-subtitle{margin:.25rem 0 0;font-size:.82rem;color:var(--text-muted)}.sheet-close-btn{width:2.25rem;height:2.25rem;padding:0;border-radius:50%;font-size:1.35rem;line-height:1;flex-shrink:0;display:grid;place-items:center}.expense-list-sheet-body{overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:1rem 1.25rem max(1.5rem,env(safe-area-inset-bottom));min-width:0;-webkit-overflow-scrolling:touch}.expense-list-sheet-body .expense-items{min-width:0}.expense-list-sheet-body .expense-list-more{margin-bottom:.25rem}.expense-row-wrap{position:relative;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border);background:var(--surface-elevated);box-shadow:0 1px 3px #2a1f170a;animation:slideIn .35s ease backwards;touch-action:pan-y}.expense-row-wrap:nth-child(1){animation-delay:0ms}.expense-row-wrap:nth-child(2){animation-delay:40ms}.expense-row-wrap:nth-child(3){animation-delay:80ms}.expense-row-actions{position:absolute;inset:0 0 0 auto;width:132px;display:flex;z-index:0}.expense-action{flex:1;border:none;border-radius:0;padding:0;font-size:.82rem;font-weight:700;letter-spacing:.02em;color:#fffaf5}.expense-action-edit{background:var(--accent-deep)}.expense-action-edit:hover{background:#6b3828}.expense-action-delete{background:var(--danger)}.expense-action-delete:hover{background:#a8433a}.expense-row-content{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%;padding:1rem 1.1rem;background:var(--surface-elevated);transition:transform .22s ease;cursor:grab;-webkit-user-select:none;user-select:none;box-sizing:border-box}.expense-row-wrap:not(:has(.expense-row-actions)) .expense-row-content{cursor:default}.expense-row-wrap.open .expense-row-content{transition:transform .22s ease}.expense-row-content:active{cursor:grabbing}.expense-item-info{display:flex;flex-direction:column;gap:.25rem;min-width:0;flex:1}.expense-item-note{margin:0;font-weight:600;font-size:.95rem;line-height:1.3;overflow-wrap:anywhere}.expense-item-date{margin:0;font-size:.78rem;line-height:1.35;color:var(--text-muted)}.expense-item-amount{font-family:var(--font-display);font-weight:600;font-size:1.05rem;line-height:1.2;flex-shrink:0;text-align:right;padding-left:.5rem}.sheet-backdrop{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;padding:0 max(1rem,env(safe-area-inset-right)) 0 max(1rem,env(safe-area-inset-left));background:#2a1f1773;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);overflow:hidden;overscroll-behavior:contain}.sheet-backdrop-top{z-index:110}.sheet.panel{width:100%;max-width:min(440px,100%);min-width:0;margin:0 auto;padding:1.25rem;border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--surface);border:1px solid var(--border);box-shadow:0 -8px 40px #2a1f171f;overflow-x:hidden;box-sizing:border-box}.sheet.panel h2{margin:0;font-family:var(--font-display);font-size:1.2rem;font-weight:600}.sheet-subtitle{margin:.25rem 0 1rem;font-size:.85rem;color:var(--text-muted)}.sheet-actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:1rem}.sheet-actions button.primary{background:var(--accent-deep);border-color:var(--accent-deep);color:#fffaf5}@keyframes slideIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(min-width:380px){.form-actions{grid-template-columns:1fr auto}}@media(prefers-reduced-motion:reduce){.progress-fill,.pie-segment,.expense-row-content,.expense-row-wrap{transition:none;animation:none}}.app-mode-toggle{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;padding:.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.app-mode-btn{border:none;background:transparent;padding:.55rem .75rem;border-radius:calc(var(--radius-md) - 2px);font-weight:600;color:var(--text-muted)}.app-mode-btn.active{background:var(--accent-deep);color:#fffaf5}.travel-loading{text-align:center;color:var(--text-muted)}.travel-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.travel-user{margin:0;font-size:.85rem;color:var(--text-muted)}.travel-auth-card h2{margin:0 0 .35rem;font-family:var(--font-display)}.travel-auth-sub{margin:0 0 1rem;color:var(--text-muted);font-size:.9rem}.travel-auth-divider{display:flex;align-items:center;gap:.75rem;margin:1rem 0;color:var(--text-muted);font-size:.85rem}.travel-auth-divider:before,.travel-auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.travel-auth-toggle{width:100%;margin-top:.75rem}.travel-auth-card .form-grid+button.primary,.travel-auth-card .form-error+button.primary,.travel-auth-card .form-success+button.primary{margin-top:1rem}.auth-submit-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem}.btn-spinner{width:1rem;height:1rem;border:2px solid rgba(255,250,245,.35);border-top-color:#fffaf5;border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.travel-google-btn{background:#fff;color:#1f1f1f;border:1px solid var(--border)}html[data-theme=dark] .travel-google-btn{background:var(--surface);color:var(--text)}.travel-empty h2,.travel-setup h2{margin:0 0 .5rem;font-family:var(--font-display)}.travel-join-link{width:100%;margin-top:.75rem}.travel-group-list{display:flex;flex-direction:column;gap:.75rem}.travel-group-card{width:100%;text-align:left;cursor:pointer}.travel-group-card-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.travel-group-card-head h3{margin:0;font-family:var(--font-display)}.travel-group-code{font-family:ui-monospace,monospace;font-size:.85rem;color:var(--text-muted)}.travel-group-meta{margin:.35rem 0 0;font-size:.85rem;color:var(--text-muted)}.travel-balance-summary{margin:.5rem 0 0;padding:0;list-style:none;font-size:.9rem}.travel-group-settled{margin:.5rem 0 0;color:var(--accent-deep);font-size:.9rem}.travel-list-actions{display:flex;flex-direction:column;gap:.5rem}.budget-chip-join{border-style:dashed}.travel-back-btn{align-self:flex-start}.travel-hero h2{margin:0 0 .75rem;font-family:var(--font-display)}.invite-code-badge{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;padding:.75rem;margin-bottom:1rem;border:1px dashed var(--border);border-radius:var(--radius-md);background:color-mix(in srgb,var(--accent) 8%,transparent);cursor:pointer;text-align:left}.invite-code-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.invite-code-value{font-family:ui-monospace,monospace;font-size:1.5rem;font-weight:700;letter-spacing:.12em}.invite-code-hint{font-size:.8rem;color:var(--text-muted)}.travel-balance-block .card-label{margin:0 0 .35rem}.travel-balance-list{margin:0;padding:0;list-style:none}.travel-balance-list li{margin:.25rem 0}.travel-owe strong{color:var(--danger)}.travel-owed strong{color:var(--accent-deep)}.travel-balance-even{margin:0;color:var(--accent-deep)}.travel-members{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:1rem}.travel-member-chip{width:2rem;height:2rem;border-radius:999px;background:color-mix(in srgb,var(--accent) 20%,var(--surface));display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700}.travel-suggestions h3,.travel-group-actions h3{margin:0 0 .5rem;font-size:.95rem}.travel-suggestions ul,.settle-history ul{margin:0;padding:0;list-style:none}.travel-suggestion-btn{width:100%;text-align:left;padding:.65rem 0;border:none;border-bottom:1px solid var(--border);background:transparent;color:var(--text)}.travel-actions,.travel-group-actions{display:flex;flex-direction:column;gap:.5rem}.travel-leave-btn{color:var(--danger)}.travel-split-members{display:flex;flex-wrap:wrap;gap:.45rem}.travel-split-member{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:2.25rem;padding:.45rem .85rem;border-radius:999px;border:1px solid var(--border);background:var(--surface-elevated);font-size:.85rem;font-weight:600;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}.travel-split-member input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.travel-split-member span{line-height:1.2}.travel-split-member.active{border-color:var(--accent-deep);background:color-mix(in srgb,var(--accent-deep) 14%,var(--surface-elevated));color:var(--text);box-shadow:0 2px 10px color-mix(in srgb,var(--accent-deep) 18%,transparent)}html[data-theme=dark] .travel-split-member.active{background:color-mix(in srgb,var(--accent-deep) 28%,var(--surface-elevated))}.travel-split-mode{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.travel-custom-splits{display:flex;flex-direction:column;gap:.5rem}.travel-custom-split-row{display:grid;grid-template-columns:minmax(0,1fr) 6.5rem;gap:.65rem;align-items:center}.travel-custom-split-row label{margin:0;font-size:.85rem;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.travel-custom-split-row input{width:100%;min-width:0;box-sizing:border-box;text-align:right}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.field-label{display:block;margin-bottom:.35rem;font-size:.85rem;font-weight:600}.form-error{margin:.5rem 0 0;color:var(--danger);font-size:.85rem}.settle-history{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--border)}.settle-history-item{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.65rem 0;border-bottom:1px solid var(--border)}.settle-history-item div{display:flex;flex-direction:column;gap:.15rem;font-size:.85rem}.settle-history-item strong{font-size:.9rem}.form-success{margin:.5rem 0 0;color:var(--accent-deep);font-size:.85rem}.settings-name-row{display:grid;grid-template-columns:1fr auto;gap:.5rem;align-items:start}.settle-history-actions{display:flex;gap:.35rem;flex-shrink:0}.settings-sign-out{margin-top:1rem}.app-auth{justify-content:center}.offline-banner{position:sticky;top:0;z-index:120;margin:-1.25rem -1.25rem .75rem;padding:.65rem 1rem;font-size:.82rem;line-height:1.35;display:flex;align-items:center;gap:.5rem}.offline-banner.offline{background:color-mix(in srgb,var(--warn) 18%,var(--surface));color:var(--text);border-bottom:1px solid color-mix(in srgb,var(--warn) 35%,var(--border))}.offline-banner.syncing{background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--text);border-bottom:1px solid color-mix(in srgb,var(--accent) 30%,var(--border))}.offline-banner-dot{width:.5rem;height:.5rem;border-radius:999px;flex-shrink:0}.offline-banner.offline .offline-banner-dot{background:var(--warn)}.offline-banner.syncing .offline-banner-dot{background:var(--accent-deep);animation:offlinePulse 1.2s ease-in-out infinite}@keyframes offlinePulse{0%,to{opacity:1}50%{opacity:.35}}.sheet-hint{margin:0 0 1rem;font-size:.85rem;color:var(--text-muted)}
