:root{--bg: #0d1117;--surface: #151c26;--surface-elevated: #1d2530;--text-primary: #f0f4fa;--text-secondary: #98a3b3;--text-tertiary: #8a94a3;--accent: #ffa028;--accent-soft: #ffb75c;--on-accent: #221503;--success: #3dcc8a;--danger: #ff6259;--separator: #1d2530;--sp-xs: 4px;--sp-s: 8px;--sp-m: 12px;--sp-l: 16px;--sp-xl: 24px;--sp-xxl: 32px;--r-s: 10px;--r-m: 14px;--r-l: 20px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--container: 1080px;--page-gutter: clamp(16px, 4vw, 32px)}@media(prefers-color-scheme:light){:root{--bg: #ffffff;--surface: #f0f4fa;--surface-elevated: #e4eaf2;--text-primary: #1d2530;--text-secondary: #4d5663;--text-tertiary: #616873;--accent: #995a0a;--accent-soft: #a4620e;--on-accent: #ffffff;--success: #1a7d50;--danger: #de433a;--separator: #d8dee8}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text-primary);font-family:var(--font);font-size:15px;line-height:1.45}.app{display:grid;grid-template-columns:264px minmax(0,1fr) 264px;gap:var(--sp-xl);max-width:1280px;margin:0 auto;padding:var(--sp-xl) var(--page-gutter);min-height:100vh;align-items:start}.app-loading{text-align:center;color:var(--text-tertiary);padding:var(--sp-xxl)}.sidebar{position:sticky;top:var(--sp-xl);display:flex;flex-direction:column;gap:var(--sp-l)}.sidebar__brand{display:flex;flex-direction:column;gap:var(--sp-xs)}.sidebar__logo{font-size:1.35rem;font-weight:700}.sidebar__tagline{color:var(--text-tertiary);font-size:.85rem}.sidebar__title{margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}.garage-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-s)}.garage-item{width:100%;text-align:left;background:var(--surface);border:1px solid var(--separator);border-radius:var(--r-m);padding:var(--sp-m) var(--sp-l);color:var(--text-primary);cursor:pointer;display:flex;flex-direction:column;gap:2px;font:inherit}.garage-item:hover{border-color:var(--accent-soft)}.garage-item.is-active{border-color:var(--accent);background:var(--surface-elevated)}.garage-item__name{font-weight:600}.garage-item__sub{color:var(--text-tertiary);font-size:.82rem}.garage-item__edit{background:none;border:none;color:var(--accent);cursor:pointer;padding:var(--sp-xs) 0 0;font-size:.82rem;font-family:inherit}.sidebar__exchange{display:flex;flex-direction:column;gap:var(--sp-s)}.backup-badge{margin:0;color:var(--danger);font-size:.82rem}.sidebar__backup,.sidebar__backup-link{margin:0;font-size:.82rem;color:var(--text-secondary);text-align:left}.sidebar__backup-unlink{opacity:.7}.sidebar__footer{display:flex;flex-direction:column;gap:var(--sp-m);border-top:1px solid var(--separator);padding-top:var(--sp-l)}.sidebar__storage,.sidebar__privacy{margin:0;font-size:.78rem;color:var(--text-tertiary)}.app-main{display:flex;flex-direction:column;gap:var(--sp-l);min-width:0}.tabbar{display:flex;gap:var(--sp-s)}.tab{font:inherit;background:var(--surface);color:var(--text-secondary);border:1px solid var(--separator);border-radius:999px;padding:var(--sp-s) var(--sp-l);cursor:pointer}.tab.is-active{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600}.card{background:var(--surface);border:1px solid var(--separator);border-radius:var(--r-l);padding:var(--sp-l);display:flex;flex-direction:column;gap:var(--sp-m)}.card__title{margin:0;font-size:1rem}.field-row{display:flex;gap:var(--sp-m);flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:var(--sp-xs);flex:1 1 140px;min-width:0}.field--small{flex:0 1 120px}.field>span{font-size:.8rem;color:var(--text-secondary)}.field input,.field select,.feed-filters select{font:inherit;background:var(--surface-elevated);color:var(--text-primary);border:1px solid var(--separator);border-radius:var(--r-s);padding:var(--sp-s) var(--sp-m);min-width:0}.field input:focus-visible,.field select:focus-visible,.btn:focus-visible,.tab:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.field.is-derived input{color:var(--text-secondary);border-style:dashed}.field small,.hint{color:var(--text-tertiary);font-size:.78rem}fieldset{border:1px solid var(--separator);border-radius:var(--r-m);display:flex;flex-direction:column;gap:var(--sp-m);margin:0;padding:var(--sp-l)}legend{color:var(--text-tertiary);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;padding:0 var(--sp-xs)}.check{display:flex;align-items:center;gap:var(--sp-s);cursor:pointer}.form-actions{display:flex;justify-content:flex-end;gap:var(--sp-s)}.warnings{background:color-mix(in srgb,var(--danger) 12%,var(--surface));border:1px solid var(--danger);border-radius:var(--r-m);padding:var(--sp-m) var(--sp-l);display:flex;flex-direction:column;gap:var(--sp-s)}.warnings ul{margin:0;padding-left:1.2em}.btn{font:inherit;background:var(--surface-elevated);color:var(--text-primary);border:1px solid var(--separator);border-radius:var(--r-s);padding:var(--sp-s) var(--sp-l);cursor:pointer;text-align:center;text-decoration:none;display:inline-block}.btn:hover{border-color:var(--accent-soft)}.btn--primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600}.btn--danger{color:var(--danger);border-color:var(--danger)}.btn--warning{border-color:var(--danger)}.btn--block{display:block;width:100%}.btn[disabled]{opacity:.55;cursor:default}.link{background:none;border:none;padding:0;color:var(--accent);cursor:pointer;font:inherit;text-decoration:underline;text-underline-offset:2px}.link--danger{color:var(--danger)}.feed{display:flex;flex-direction:column;gap:var(--sp-l)}.feed-filters{display:flex;gap:var(--sp-s)}.feed-month{display:flex;flex-direction:column;gap:var(--sp-s)}.feed-month__header{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--separator);padding-bottom:var(--sp-xs)}.feed-month__header h4{margin:0;font-size:.9rem;text-transform:capitalize;color:var(--text-secondary)}.feed-month__header span{color:var(--text-tertiary);font-size:.85rem;font-variant-numeric:tabular-nums}.feed-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.feed-row{display:grid;grid-template-columns:3.2rem minmax(0,1fr) auto auto auto;gap:var(--sp-m);align-items:center;padding:var(--sp-s) 0;border-bottom:1px solid var(--separator)}.feed-row:last-child{border-bottom:none}.feed-row__date{color:var(--text-tertiary);font-size:.82rem;white-space:nowrap}.feed-row__main{display:flex;flex-direction:column;gap:1px;min-width:0}.feed-row__volume,.feed-row__title{font-weight:600}.feed-row__odometer,.feed-row__station,.feed-row__sub{color:var(--text-tertiary);font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-row__consumption{color:var(--success);font-size:.85rem;font-variant-numeric:tabular-nums;white-space:nowrap}.feed-row__cost{font-variant-numeric:tabular-nums;white-space:nowrap}.feed-row__actions{display:flex;gap:var(--sp-s);font-size:.82rem}.feed-row__icon{margin-right:var(--sp-xs)}.feed-empty{text-align:center;color:var(--text-tertiary);padding:var(--sp-xxl) var(--sp-l)}.feed-empty h3,.feed-empty h4{margin:0 0 var(--sp-s);color:var(--text-secondary)}.feed-empty p{margin:0}.app-stats{position:sticky;top:var(--sp-xl)}.stats h3{margin:0 0 var(--sp-m);font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}.stats-tiles{display:flex;flex-direction:column;gap:var(--sp-s)}.tile{background:var(--surface);border:1px solid var(--separator);border-radius:var(--r-m);padding:var(--sp-m) var(--sp-l);display:flex;flex-direction:column;gap:2px}.tile__label{color:var(--text-tertiary);font-size:.78rem}.tile__value{font-size:1.05rem;font-weight:650;font-variant-numeric:tabular-nums}.empty-garage{text-align:center;padding:var(--sp-xxl) var(--sp-l);display:flex;flex-direction:column;gap:var(--sp-m);align-items:center}.empty-garage h2,.empty-garage p{margin:0}.empty-garage p{color:var(--text-secondary)}.empty-garage__hint{font-size:.85rem;color:var(--text-tertiary)}.empty-garage__actions{display:flex;gap:var(--sp-m)}.modal{position:fixed;inset:0;background:#0000008c;display:grid;place-items:center;padding:var(--sp-l);z-index:40;overflow-y:auto}.modal__panel{background:var(--bg);border:1px solid var(--separator);border-radius:var(--r-l);padding:var(--sp-xl);width:min(640px,100%);max-height:calc(100vh - 2 * var(--sp-l));overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-l)}.modal__panel h2{margin:0;font-size:1.15rem}.modal__actions{display:flex;align-items:center;gap:var(--sp-s)}.modal__spacer{flex:1}.danger-note{color:var(--danger)}.exchange__section{display:flex;flex-direction:column;gap:var(--sp-m)}.exchange__section h3{margin:0;font-size:.9rem;color:var(--text-secondary)}.exchange__actions{display:flex;gap:var(--sp-l);flex-wrap:wrap}.exchange__actions>div{display:flex;flex-direction:column;gap:var(--sp-xs);max-width:240px}.exchange__actions small{color:var(--text-tertiary)}.dropzone{border:2px dashed var(--separator);border-radius:var(--r-m);padding:var(--sp-xl);text-align:center;color:var(--text-secondary)}.dropzone.is-over{border-color:var(--accent);background:var(--surface)}.dropzone p{margin:0}.import-preview{background:var(--surface);border:1px solid var(--separator);border-radius:var(--r-m);padding:var(--sp-l);display:flex;flex-direction:column;gap:var(--sp-m)}.import-preview dl{margin:0;display:grid;grid-template-columns:max-content 1fr;gap:var(--sp-xs) var(--sp-l)}.import-preview dl>div{display:contents}.import-preview dt{color:var(--text-tertiary)}.import-preview dd{margin:0}.import-preview__actions{display:flex;gap:var(--sp-s);flex-wrap:wrap}.import-result{margin:0;color:var(--success)}.error{margin:0;color:var(--danger)}.new-category{align-items:flex-end}.backup-nag{background:color-mix(in srgb,var(--accent) 14%,var(--surface));border:1px solid var(--accent);border-radius:var(--r-m);padding:var(--sp-m) var(--sp-l);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-m);flex-wrap:wrap}.consent{position:fixed;inset-inline:0;bottom:0;background:var(--surface-elevated);border-top:1px solid var(--separator);padding:var(--sp-m) var(--page-gutter);display:flex;align-items:center;justify-content:center;gap:var(--sp-l);flex-wrap:wrap;z-index:50}.consent p{margin:0;color:var(--text-secondary);font-size:.85rem}.consent__actions{display:flex;gap:var(--sp-s)}@media(max-width:1100px){.app{grid-template-columns:232px minmax(0,1fr)}.app-stats{grid-column:1 / -1;position:static}.stats-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}@media(max-width:760px){.app{grid-template-columns:minmax(0,1fr)}.sidebar{position:static}.feed-row{grid-template-columns:3rem minmax(0,1fr) auto}.feed-row__consumption,.feed-row__actions{grid-column:2 / -1;justify-self:start}}.card__title-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-m)}.bulk-paste__input{font:inherit;background:var(--surface-elevated);color:var(--text-primary);border:1px solid var(--separator);border-radius:var(--r-s);padding:var(--sp-s) var(--sp-m);resize:vertical;min-height:6em}.bulk-paste__input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.bulk-paste__mapping,.mapping-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--sp-m)}.bulk-paste__preview{overflow-x:auto}.bulk-paste__preview table{border-collapse:collapse;width:100%;font-size:.85rem}.bulk-paste__preview th,.bulk-paste__preview td{text-align:left;padding:var(--sp-xs) var(--sp-m) var(--sp-xs) 0;border-bottom:1px solid var(--separator);white-space:nowrap}.bulk-paste__preview th{color:var(--text-tertiary);font-weight:500}:root{--chart-1: #3987e5;--chart-2: #d95926;--chart-3: #199e70;--chart-4: #c98500;--chart-5: #d55181;--chart-6: #008300}@media(prefers-color-scheme:light){:root{--chart-1: #2a78d6;--chart-2: #eb6834;--chart-3: #1baf7a;--chart-4: #eda100;--chart-5: #e87ba4;--chart-6: #008300}}.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--sp-l)}.chart__title{margin:0;font-size:.9rem;color:var(--text-secondary)}.chart__empty{margin:0;color:var(--text-tertiary);font-size:.85rem}.chart__plot{position:relative}.chart__plot svg{display:block;width:100%;height:auto}.chart-grid{stroke:var(--separator);stroke-width:1}.chart-axis{fill:var(--text-tertiary);font-size:10px}.chart-line{fill:none;stroke:var(--chart-1);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart-reference{stroke:var(--text-tertiary);stroke-width:1.5;stroke-dasharray:5 4}.chart-crosshair{stroke:var(--text-tertiary);stroke-width:1}.chart-dot{fill:var(--chart-1);stroke:var(--surface);stroke-width:2}.chart-bar{fill:var(--chart-1)}.chart-bar.is-hover{fill:var(--accent)}.chart-tooltip{position:absolute;top:0;transform:translate(-50%);background:var(--surface-elevated);border:1px solid var(--separator);border-radius:var(--r-s);padding:var(--sp-xs) var(--sp-s);display:flex;flex-direction:column;font-size:.78rem;pointer-events:none;white-space:nowrap;z-index:5}.chart-tooltip span{color:var(--text-tertiary)}.donut{display:flex;gap:var(--sp-l);align-items:center;flex-wrap:wrap}.donut svg{width:150px;flex:0 0 auto}.donut__total{fill:var(--text-primary);font-size:13px;font-weight:600}.donut__legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-xs);flex:1 1 160px;font-size:.85rem}.donut__legend li{display:flex;align-items:center;gap:var(--sp-s);border-radius:var(--r-s);padding:2px var(--sp-xs)}.donut__legend li.is-hover{background:var(--surface-elevated)}.donut__chip{width:10px;height:10px;border-radius:3px;flex:0 0 auto}.donut__name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.donut__value{color:var(--text-secondary);white-space:nowrap}.reminders__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-s)}.reminders__list li{display:flex;align-items:baseline;gap:var(--sp-m);border-bottom:1px solid var(--separator);padding-bottom:var(--sp-s)}.reminders__list li:last-child{border-bottom:none;padding-bottom:0}.reminders__list li.is-completed .reminders__title{text-decoration:line-through;color:var(--text-tertiary)}.reminders__title{flex:1}.reminders__due{color:var(--text-secondary);font-size:.85rem;white-space:nowrap}.badge{font-size:.72rem;border-radius:999px;padding:1px var(--sp-s);white-space:nowrap}.badge--overdue{background:color-mix(in srgb,var(--danger) 18%,transparent);color:var(--danger)}.badge--done{background:color-mix(in srgb,var(--success) 18%,transparent);color:var(--success)}
