:root{--paper:#faf7f0;--surface:#fffdf9;--surface-alt:#f3ecdf;--zebra:#fbf8f1;--ink:#241f1a;--muted:#6b6258;--line:#e4dccd;--accent:#3a5a40;--accent-hover:#324f38;--accent-soft:#e9f0ea;--neg:#a4503c;--radius:9px;--radius-sm:6px;--shadow:0 1px 2px #241f1a0f, 0 1px 1px #241f1a0a;--serif:"Iowan Old Style", "Palatino Linotype", Georgia, "Times New Roman", serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}h1,h2,h3,h4{font-family:var(--serif);color:var(--ink);letter-spacing:.1px;margin:0;font-weight:600}p{margin:0 0 10px}.app{max-width:1240px;margin:0 auto;padding:28px 28px 64px}.appbar{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:24px;padding-bottom:14px;display:flex}.brand{font-family:var(--serif);margin-right:14px;font-size:23px}.tabs{flex-wrap:wrap;gap:2px;display:flex}.spacer{margin-left:auto}.notice{color:var(--muted);padding:20px}.notice.error{color:var(--neg)}.save-status{color:var(--muted);align-items:center;font-size:13px;display:inline-flex}.save-status[data-state=saving]{color:var(--accent)}.save-status[data-state=error]{color:var(--neg)}.tab{font-family:var(--sans);border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;background:0 0;border:none;padding:7px 13px;font-size:14px;transition:background .12s,color .12s}.tab:hover{background:var(--surface-alt);color:var(--ink)}.tab.active{color:var(--accent);background:var(--accent-soft);font-weight:600}button{font-family:var(--sans);border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;padding:6px 13px;font-size:13px;transition:background .12s,border-color .12s}button:hover{background:var(--surface-alt);border-color:#d6cbb6}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}input:not([type=checkbox]):not([type=radio]),select,textarea{font-family:var(--sans);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 9px;font-size:13px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:15px;height:15px}textarea{font-family:var(--mono);resize:vertical;width:100%;font-size:12.5px;line-height:1.5}.field{flex-direction:column;gap:5px;display:inline-flex}.field-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:11px;font-weight:600}.toolbar{flex-wrap:wrap;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.book-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.book-card{border:1px solid var(--line);border-left-width:4px;border-radius:6px;padding:12px 14px}.book-card.negative{border-left-color:#b4453a}.book-card.positive{border-left-color:#7d9b76}.book-card.empty{border-left-color:var(--line);opacity:.7}.book-card-title{font-size:14px;font-weight:600}.book-card-sub{color:var(--muted);margin-bottom:10px;font-size:11px}.book-card-net{font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:24px}.book-card.negative .book-card-net{color:#b4453a}.book-card.positive .book-card-net{color:#4d7a45}.book-card-rate{color:var(--muted);font-variant-numeric:tabular-nums;margin-bottom:10px;font-size:11px}.book-card-empty{color:var(--muted);padding:8px 0 4px;font-size:13px}.book-card-split{gap:16px;margin:0;display:flex}.book-card-split div{margin:0}.book-card-split dt{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:10px}.book-card-runrate{border-top:1px dashed var(--line);font-variant-numeric:tabular-nums;margin-top:10px;padding-top:8px;font-size:13px}.book-card-split dd{font-variant-numeric:tabular-nums;margin:0;font-size:13px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.txn-pending td{background:color-mix(in srgb, var(--accent,#c2703d) 9%, transparent)}.txn-pending td:first-child{box-shadow:inset 3px 0 0 var(--accent,#c2703d)}.txn-reconciled td{opacity:.5}.txn-table .badge{letter-spacing:.06em;text-transform:uppercase;vertical-align:middle;background:var(--surface-alt);color:var(--muted);border-radius:999px;margin-right:8px;padding:1px 6px;font-size:10px;font-weight:700;display:inline-block}.badge.pending{background:var(--accent,#c2703d);color:#fff}.add-expense{align-items:flex-end;margin-bottom:0}.note-input{width:100%;min-width:120px;font-size:12px}.mortgage-editor{border:1px solid var(--line);border-radius:6px;margin-bottom:10px;padding:12px 14px 0}.mortgage-editor .toolbar{margin-bottom:12px}.mortgage-editor.empty{justify-content:space-between;align-items:center;gap:12px;padding-bottom:12px;display:flex}fieldset{border:1px solid var(--line);border-radius:var(--radius-sm);align-items:center;gap:12px;padding:6px 12px 9px;display:inline-flex}fieldset legend{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:0 4px;font-size:11px;font-weight:600}fieldset label{align-items:center;gap:4px;display:inline-flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;padding:16px 18px}.section{margin-bottom:28px}.section-title{margin-bottom:10px;font-size:16px}.subhead{margin:26px 0 10px;font-size:15px}.subhead:first-child{margin-top:0}.note{color:var(--muted);margin-bottom:8px;font-size:12px}.section-total{color:var(--muted);margin-top:10px;font-size:14px}.section-total strong{color:var(--ink);font-variant-numeric:tabular-nums}.section-total strong.neg{color:var(--neg)}.meta{color:var(--muted);margin-top:8px;font-size:13px}.meta strong{color:var(--ink)}.stats{flex-wrap:wrap;gap:16px;margin-bottom:22px;display:flex}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-width:220px;box-shadow:var(--shadow);flex:1;padding:15px 18px}.stat .label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:7px;font-size:11px;font-weight:600;display:block}.stat .value{font-family:var(--serif);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:27px;display:block}.stat.actionable{cursor:pointer;border-color:var(--neg)}.stat.actionable:hover{box-shadow:0 0 0 2px #a4503c26, var(--shadow)}.stat.actionable .value{color:var(--neg)}.filter-chip{color:var(--neg);background:#a4503c14;border:1px solid #a4503c4d;border-radius:999px;align-items:center;gap:6px;margin-left:10px;padding:2px 10px;font-size:12px;display:inline-flex}.filter-chip button{color:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-size:13px}.pin-btn{cursor:pointer;opacity:.35;background:0 0;border:none;padding:2px 4px;font-size:13px}.pin-btn:hover{opacity:1}.pin-btn:disabled{opacity:.12;cursor:default}.cat-cell{white-space:nowrap}.cat-cell .cat-input{width:calc(100% - 26px)}table.data.txn-table tbody tr{height:48px}table.data.txn-table tbody td{padding-top:7px;padding-bottom:7px;overflow:hidden}.txn-table tbody tr[data-spacer]{background:0 0;border:none;padding:0}.txn-table tbody tr[data-spacer]:hover,.txn-table tbody tr:nth-child(2n){background:0 0}.txn-table tbody tr.txn-odd{background:var(--zebra)}.rules-details{margin-bottom:12px;font-size:13px}.rules-details summary{cursor:pointer;color:var(--muted)}.rules-details ul{margin:8px 0 0;padding:0;list-style:none}.rules-details li{align-items:center;gap:8px;padding:3px 0;display:flex}.rules-details .rule-pattern{font-family:var(--mono);background:var(--surface-alt);border-radius:var(--radius-sm);padding:1px 6px;font-size:12px}.stat .sub{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:6px;font-size:12px}.stat.win{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft), var(--shadow)}.stat .badge{letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-left:8px;font-size:10px;font-weight:700;display:inline-block}.field-hint{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:3px;font-size:11px}tr.win td{font-weight:600;background:var(--accent-soft)!important}.callout{background:var(--accent-soft);border-radius:var(--radius);font-family:var(--serif);border:1px solid #cdddd0;margin-bottom:16px;padding:14px 18px;font-size:17px;line-height:1.45}.callout strong{font-weight:700}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:var(--surface);max-height:72vh;margin-bottom:16px;overflow:auto}table.data{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:13px}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:9px 14px}table.data thead th{z-index:1;background:var(--surface-alt);color:var(--muted);font-family:var(--sans);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600;position:sticky;top:0}table.data tbody tr:nth-child(2n){background:var(--zebra)}table.data tbody tr:hover{background:var(--accent-soft)}table.data tbody tr:last-child td{border-bottom:none}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums}table.data .neg{color:var(--neg)}table.data input:not([type=checkbox]):not([type=radio]),table.data select{min-width:84px;padding:4px 7px}table.data.kv td:first-child{color:var(--muted)}.neg{color:var(--neg)}.settings-grid{margin-bottom:18px}.draw-order{flex-direction:column;gap:6px;max-width:440px;display:flex}.draw-row{align-items:center;gap:6px;display:flex}.draw-index{text-align:right;width:18px;color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.draw-row select{flex:1}.draw-row button{padding:4px 10px}.subcard{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);margin-bottom:12px;padding:13px 15px}.row-between{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.row-between h4,.row-between .field-label{margin:0}.benefit-row{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:8px;display:flex}.add-link{font-size:13px}.json-editor{margin-bottom:6px}.json-editor .controls{align-items:center;gap:8px;margin-top:8px;display:flex}.upload-btn{cursor:pointer;align-items:center;display:inline-flex}.upload-btn input{opacity:0;width:0;height:0;position:absolute}.track-grid{grid-template-columns:1fr 1fr;gap:16px;margin:16px 0;display:grid}@media (width<=900px){.track-grid{grid-template-columns:1fr}}.legend-inline{color:var(--muted);gap:16px;margin-bottom:10px;font-size:13px;display:flex}.swatch{vertical-align:middle;border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.barchart{align-items:flex-end;gap:8px;height:200px;padding-top:8px;display:flex}.barcol{flex-direction:column;flex:1;align-items:center;height:100%;display:flex}.barcol .bars{flex:1;justify-content:center;align-items:flex-end;gap:3px;width:100%;display:flex}.barcol .bar{border-radius:3px 3px 0 0;width:38%;min-height:1px}.barcol .bar.income{background:#7d9b76}.barcol .bar.expense{background:#c2703d}.barlabel{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:6px;font-size:11px}.pie-row{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.legend{flex:1;min-width:200px;margin:0;padding:0;font-size:13px;list-style:none}.legend li{grid-template-columns:14px 1fr auto auto;align-items:center;gap:8px;padding:2px 0;display:grid}.legend-cat{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.legend-val{font-variant-numeric:tabular-nums;color:var(--ink)}.legend-pct{font-variant-numeric:tabular-nums;color:var(--muted);text-align:right;width:32px}.chart-empty{color:var(--muted);text-align:center;padding:40px 0}.txn-desc{text-overflow:ellipsis;white-space:nowrap;max-width:320px;overflow:hidden}.txn-transfer{color:var(--muted)}.cat-input{border-radius:var(--radius-sm);width:100%;min-width:120px;font:inherit;color:inherit;background:0 0;border:1px solid #0000;padding:3px 5px}.cat-input:hover{border-color:var(--line)}.cat-input:focus{border-color:var(--accent);background:var(--surface);outline:none}.barcol .bars .barstack{flex-direction:column;justify-content:flex-end;align-items:center;width:38%;height:100%;display:flex}.barcol .barstack .bar{width:100%}.barcol .bar.onetime{background:#e3b58f;border-radius:3px 3px 0 0}.barcol .bar.expense{border-radius:0}.barcol .bar.income{border-radius:3px 3px 0 0}.win{color:var(--accent)}.data th.center,.data td.center{text-align:center}.txn-onetime{color:var(--muted);font-style:italic}.coverage td.cov-covered{color:var(--accent);font-weight:600}.coverage td.cov-partial{color:#c2703d}.cov-warn{color:var(--neg);white-space:nowrap;font-size:12px}.cov-ok{color:var(--muted);white-space:nowrap;font-size:12px}.window-totals{color:var(--muted);margin:0 0 10px;font-size:13px}.preview-note{color:var(--neg);margin:0 0 10px;font-size:12px}.bucket-strip{flex-wrap:wrap;gap:8px;margin:0 0 12px;padding:0;list-style:none;display:flex}.bucket-strip li{background:var(--surface-alt);border:1px solid var(--line);border-radius:999px;align-items:baseline;gap:8px;padding:3px 12px;font-size:13px;display:inline-flex}.bucket-strip .bucket-name{color:var(--muted)}.bucket-strip .bucket-val{font-variant-numeric:tabular-nums;font-weight:600}.window-totals span{font-variant-numeric:tabular-nums}.findings{margin:0;padding-left:18px;font-size:13px}.findings li{margin-bottom:6px}a.primary{text-decoration:none;display:inline-block}.auth-page{flex-direction:column;gap:12px;max-width:420px;margin:64px auto;padding:0 16px;display:flex}.auth-form{flex-direction:column;gap:10px;display:flex}.auth-wide{width:100%;padding:12px;font-size:1rem}.accountbar{border-bottom:1px solid var(--border,#ddd);align-items:center;gap:10px;padding:6px 16px;font-size:.9rem;display:flex}.account{flex-direction:column;gap:16px;max-width:640px;display:flex}.account .card{border:1px solid var(--border,#ddd);border-radius:8px;flex-direction:column;gap:8px;padding:16px;display:flex}ul.plain{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.bill-status{text-align:left;cursor:pointer;border-radius:var(--radius);width:100%;font-family:var(--serif);border:1px solid var(--line);background:var(--surface);color:var(--ink);margin:0 0 16px;padding:12px 18px;font-size:17px;line-height:1.4;display:block}.bill-status.green{background:var(--accent-soft);color:var(--accent);border-color:#cdddd0}.bill-status.red{color:var(--neg);background:#f6e6e1;border-color:#e3c2b8;font-weight:600}.bill-status.unknown{color:var(--muted)}.shortfalls{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:0 0 16px;display:grid}.shortfall-card{text-align:left;cursor:pointer;border-radius:var(--radius);color:var(--ink);font:inherit;background:#f6e6e1;border:1px solid #e3c2b8;flex-direction:column;gap:2px;padding:14px 18px;display:flex}.shortfall-card .sf-title{letter-spacing:.06em;text-transform:uppercase;color:var(--neg);font-size:11px;font-weight:700}.shortfall-card .sf-move{font-family:var(--serif);color:var(--neg);font-size:26px;font-weight:600;line-height:1.2}.shortfall-card .sf-when{font-size:14px;font-weight:600}.shortfall-card .sf-why{color:var(--muted);font-size:13px}.fund-label{border-radius:var(--radius-sm);letter-spacing:.06em;text-transform:uppercase;vertical-align:1px;border:1px solid;margin-left:8px;padding:1px 7px;font-size:10px;font-weight:700;display:inline-block}.fund-label.ok{background:var(--accent-soft);color:var(--accent);border-color:#cdddd0}.fund-label.short{color:var(--neg);background:#f6e6e1;border-color:#e3c2b8}.big-number{font-family:var(--serif);margin:4px 0 12px;font-size:32px}.callout.warn{background:#f6e6e1;border-color:#e3c2b8}button.link{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.ai-tag{color:var(--accent);border-radius:var(--radius-sm);border:1px solid #cdddd0;margin-left:4px;padding:0 4px;font-size:11px}button.link.ai-suggest{margin-top:2px;font-size:12px;display:block}td.field-live,.note.field-live{box-shadow:inset 3px 0 0 var(--accent)}td.field-computed,.note.field-computed{background:var(--accent-soft);box-shadow:inset 3px 0 #6b8f71}td.field-assumption,.note.field-assumption{box-shadow:inset 3px 0 0 var(--muted)}td.field-needs_input,.note.field-needs_input{box-shadow:inset 3px 0 0 var(--neg);background:#f6e6e1}.legend{flex-wrap:wrap;gap:8px;display:flex}.legend-chip{border-radius:var(--radius-sm);padding:2px 8px;font-size:12px}td.field-entered,.note.field-entered{background:#e7f3e7;box-shadow:inset 3px 0 #3f8f4f}.needs-list{margin:4px 0 0 18px}.follows{flex-direction:column;gap:6px;margin:8px 0;display:flex}.follows select{max-width:100%}.txn-search{float:right;width:min(320px,100%)}.debt-reminder{text-align:left;cursor:pointer;border-radius:var(--radius);width:100%;color:var(--ink);font-family:var(--serif);background:#fbf3e2;border:1px solid #e6d3a8;margin:0 0 12px;padding:10px 18px;font-size:16px;display:block}.debt-form{flex-wrap:wrap;align-items:end;gap:10px;margin:8px 0 12px;display:flex}.pay-form{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.trip-warning-list{margin-bottom:16px}.trip-warning{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.trip-warning .section-title{margin:0 0 4px}.trip-warning .dismiss{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:20px;line-height:1}.trip-warning .dismiss:hover{color:var(--ink)}.trip-map{border-radius:var(--radius);border:1px solid var(--line);height:320px;margin-bottom:12px}.section-switch{gap:4px;margin-left:12px;display:inline-flex}.trip-list{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;display:grid}.trip-card{text-align:left;cursor:pointer}.drop-zone{border:2px dashed var(--line);border-radius:var(--radius);text-align:center;color:var(--muted);margin-bottom:12px;padding:18px}.drop-zone.over{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.drop-zone textarea{width:100%;min-height:70px;margin-top:8px}.drop-zone.compact{text-align:left;border-width:1px;margin:14px 0 0;padding:10px 14px;font-size:13px}.drop-zone.compact .upload-btn{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline;display:inline}.bookings{gap:10px;margin-bottom:18px;display:grid}.booking{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:14px 44px 12px 16px;position:relative}.booking-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:8px;font-size:11px;font-weight:600}.booking-remove{color:var(--muted);cursor:pointer;opacity:.5;background:0 0;border:0;font-size:13px;position:absolute;top:10px;right:10px}.booking-remove:hover{opacity:1;color:var(--neg)}.booking-move{color:var(--muted);cursor:pointer;opacity:0;background:0 0;border:0;font-size:12px;position:absolute;top:10px;right:34px}.booking:hover .booking-move,.booking-move:focus-visible{opacity:.7}.booking-move:hover{opacity:1}.friends{color:var(--muted)}.trip-chat textarea{width:100%;margin:10px 0 8px}.chat-turns{gap:8px;margin:12px 0 0;padding:0;list-style:none;display:grid}.chat-turns li{white-space:pre-wrap;border-radius:10px;max-width:85%;padding:8px 12px}.chat-user{background:var(--accent-soft);justify-self:end}.chat-assistant{background:var(--surface-alt);justify-self:start}.night-cal-wrap{margin:4px 0 14px;overflow-x:auto}.night-cal{border-collapse:separate;border-spacing:2px 3px;table-layout:fixed;width:100%;font-size:12px}.night-cal th{color:var(--muted);text-align:left;white-space:nowrap;padding:0 2px;font-weight:500}.night-cal thead th{min-width:46px}.night-cal thead th:first-child,.night-cal tbody th{width:120px}.night-cal thead th.today{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.night-cal tbody th{text-overflow:ellipsis;overflow:hidden}.night-cal td{padding:0}.night-block{border-radius:var(--radius-sm);white-space:nowrap;text-overflow:ellipsis;padding:3px 7px;display:block;overflow:hidden}.lane-you .night-block.stay{background:var(--accent);color:#fff}.lane-friend .night-block.stay{color:#2c5d63;background:#e3f1f2;border:1px solid #b9dcdf}.night-block.transit{color:var(--muted);text-align:center}.lane-you th{color:var(--ink)}.friend-group{border-top:1px solid var(--line);padding:10px 0 4px}.friend-stays{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:8px;margin:8px 0 0;padding:0;list-style:none;display:grid}.friend-stays li{background:var(--surface);border-radius:0 var(--radius-sm) var(--radius-sm) 0;border-left:3px solid #b9dcdf;gap:2px;padding:8px 10px;display:grid;position:relative}.friend-stays li .sub{display:block}.friend-stays li.tonight{border-left-color:#2c5d63}.tonight-tag{color:#2c5d63;font-size:11px;font-weight:600;position:absolute;top:8px;right:10px}.friend-all{margin-top:8px}.friend-all summary{cursor:pointer;font-size:13px}.friend-bookings{margin:6px 0 0;padding:0 0 0 14px;font-size:13px;list-style:none}.friend-bookings li{padding:3px 0}.friend-bookings .code{margin-left:6px}.map-controls{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:-4px 0 12px;font-size:13px;display:flex}.map-frame{border:1px solid var(--line);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.map-frame button{background:var(--surface);font:inherit;color:var(--muted);cursor:pointer;border:0;padding:4px 10px}.map-frame button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.map-friends{align-items:center;gap:6px;display:inline-flex}.map-friends .key{border:2px solid #a8dadc;border-radius:50%;width:10px;height:10px;display:inline-block}.leaflet-tooltip.stay-label{color:#241f1a;background:#ffffffeb;border:0;padding:2px 6px;font-size:12px;font-weight:600;box-shadow:0 1px 2px #00000040}.leaflet-tooltip.friend-label{color:#2c5d63;box-shadow:none;background:#ffffffbf;border:0;padding:1px 5px;font-size:11px}.leaflet-tooltip.distance-label{color:#fff;box-shadow:none;background:#241f1ac7;border:0;border-radius:10px;padding:1px 6px;font-size:11px}.leaflet-tooltip.stay-label:before,.leaflet-tooltip.friend-label:before,.leaflet-tooltip.distance-label:before{display:none}.route{grid-template-columns:minmax(0,1fr) minmax(40px,120px) minmax(0,1fr);align-items:center;gap:12px;display:grid}.route .end:last-child{text-align:right}.end-code{font-family:var(--serif);letter-spacing:.02em;font-size:26px;line-height:1.1}.end-time{font-variant-numeric:tabular-nums;font-size:15px;font-weight:600}.next-day{color:var(--neg);margin-left:3px;font-size:11px}.route-line{background:var(--line);text-align:center;height:1px;position:relative}.route-line span{background:var(--surface);color:var(--muted);padding:0 6px;font-size:14px;position:relative;top:-10px}.booking-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.stay-times{flex-wrap:wrap;align-items:center;gap:22px;margin-top:10px;display:flex}.nights{color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:12px}.booking-facts{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin-top:10px;font-size:13px;display:flex}.booking-facts:empty{display:none}.fact-strong{color:var(--ink);font-weight:600}.code{font-family:var(--mono);color:var(--ink);background:var(--surface-alt);border-radius:var(--radius-sm);letter-spacing:.04em;padding:1px 7px;font-size:12px}.booking-paid{border-top:1px dashed var(--line);gap:3px;margin-top:8px;padding-top:8px;font-size:13px;display:grid}.paid-amount{font-variant-numeric:tabular-nums;font-weight:600}@media (width<=560px){.end-code{font-size:21px}.route{gap:6px}}.receipt-candidates{margin:6px 0 0;padding:0;list-style:none}.receipt-candidates li{margin:2px 0}.receipt-candidates button{margin-left:6px;padding:1px 8px;font-size:12px}.needs{flex-wrap:wrap;align-items:center;gap:8px;min-height:28px;margin-bottom:14px;display:flex}.needs-chip{border:1px solid var(--neg);color:var(--neg);cursor:pointer;background:#a4503c14;border-radius:999px;padding:3px 12px;font-size:13px}.needs-chip:hover{background:#a4503c29}.fold summary{cursor:pointer;align-items:center;gap:8px;list-style:none;display:flex}.fold summary::-webkit-details-marker{display:none}.fold summary:before{content:"▸";color:var(--muted);font-size:12px;transition:transform .15s}.fold details[open]>summary:before{transform:rotate(90deg)}.fold summary .section-title{margin-bottom:0}.fold-body{margin-top:12px}.fold .card{box-shadow:none;border:none;margin-bottom:18px;padding:0}.fold .card:last-child{margin-bottom:0}
