:root {
  --ink: #0d0d0d;
  --ink-soft: #8a8a8a;
  --ink-line: #2a2a2a;
  --paper: #ffffff;
  --paper-dim: #e6e6e6;
  --gold: #ffcc00;
  --gold-soft: #ffe066;
  --rust: #ff5252;
  --radius: 16px;
  --tabbar-height: 66px;
  --font-display: ui-monospace, "SF Mono", "Cascadia Code", "Roboto Mono", Consolas, monospace;
  --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--ink);
  color: var(--paper);
  font-family: var(--font-body);
  -webkit-tap-highlight-color: transparent;
}

body {
  min-height: 100vh;
  min-height: 100dvh;
}

body.modal-open { overflow: hidden; }

.hidden { display: none !important; }

button, input, select {
  font-family: inherit;
  font-size: 16px;
}

button {
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  border: none;
  background: none;
  color: inherit;
}

:focus-visible {
  outline: 2px solid var(--gold-soft);
  outline-offset: 2px;
}

/* ---------------------------------------------------------------- layout */

.app {
  min-height: 100vh;
  min-height: 100dvh;
}

.app-header {
  padding: max(18px, env(safe-area-inset-top)) 20px 8px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.app-header-title {
  font-family: var(--font-display);
  font-size: 15px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-soft);
}

.settings-btn {
  font-size: 20px;
  line-height: 1;
  color: var(--ink-soft);
  padding: 6px;
}

/* ---------------------------------------------------------- pending queue */

.pending-banner {
  background: var(--gold);
}

.pending-banner-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 20px;
  cursor: pointer;
}

.pending-banner-row span {
  font-size: 13px;
  font-weight: 700;
  color: var(--ink);
}

.pending-retry-btn {
  font-size: 12px;
  font-weight: 700;
  padding: 5px 12px;
  border-radius: 8px;
  background: var(--ink);
  color: var(--gold);
  white-space: nowrap;
  flex-shrink: 0;
}

.pending-retry-btn:disabled { opacity: 0.6; }

.pending-list {
  list-style: none;
  margin: 0;
  padding: 0 20px 10px;
}

.pending-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 7px 0;
  border-top: 1px solid rgba(13, 13, 13, 0.18);
  font-size: 13px;
  color: var(--ink);
}

.pending-item-delete {
  color: var(--ink);
  font-size: 14px;
  padding: 4px 6px;
  flex-shrink: 0;
  opacity: 0.7;
}

.screens {
  padding: 4px 16px calc(var(--tabbar-height) + 12px);
}

.screen { display: none; }
.screen.active { display: block; }

/* ------------------------------------------------------------ life widget */

.life-widget {
  margin: 12px 0 0;
  padding: 14px 16px;
  border-radius: var(--radius);
  background: var(--gold);
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.life-widget.life-widget-low {
  background: var(--rust);
}

.life-widget-amount {
  font-family: var(--font-display);
  font-size: 26px;
  font-weight: 700;
  color: var(--ink);
  line-height: 1.15;
}

.life-widget-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: rgba(13, 13, 13, 0.6);
}

.life-widget-track {
  margin-top: 6px;
  height: 5px;
  border-radius: 999px;
  background: rgba(13, 13, 13, 0.15);
  overflow: hidden;
}

.life-widget-track i {
  display: block;
  height: 100%;
  width: 0%;
  background: var(--ink);
  border-radius: inherit;
  transition: width 0.3s ease;
}

/* ------------------------------------------------------------ receipt card */

.receipt-scan-row {
  margin: 14px 0 0;
  display: flex;
  gap: 8px;
}

.scan-receipt-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px;
  border: 1.5px dashed var(--gold);
  border-radius: 12px;
  color: var(--gold);
  font-weight: 600;
  font-size: 14px;
}

.scan-receipt-btn:active { background: rgba(255, 204, 0, 0.08); }

.scan-receipt-btn.loading {
  opacity: 0.6;
  pointer-events: none;
}

.receipt-review-card {
  background: var(--paper);
  color: var(--ink);
  border-radius: var(--radius);
  padding: 20px;
  margin-top: 14px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}

.receipt-review-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.receipt-review-header h2 {
  margin: 3px 0 0;
  font-family: var(--font-display);
  font-size: 20px;
}

.receipt-review-close {
  width: 34px;
  height: 34px;
  border-radius: 9px;
  background: var(--paper-dim);
  color: var(--ink-soft);
  font-size: 24px;
  line-height: 1;
  flex-shrink: 0;
}

.receipt-review-meta {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 14px;
}

.receipt-review-meta input {
  width: 100%;
  border: 1.5px solid var(--paper-dim);
  border-radius: 10px;
  padding: 10px;
  background: #fff;
  color: var(--ink);
}

.receipt-review-note {
  margin: 10px 0 12px;
  padding: 9px 11px;
  border: 1px solid rgba(181, 137, 0, 0.26);
  border-radius: 9px;
  background: rgba(255, 204, 0, 0.09);
  color: #735d0b;
  font-size: 12px;
  line-height: 1.35;
  font-weight: 600;
}

.receipt-detected-card {
  margin: 10px 0 12px;
  border: 1px solid #d9dfdc;
  border-radius: 11px;
  background: #f7faf8;
  overflow: hidden;
}

.receipt-detected-card.warning {
  border-color: rgba(199, 143, 0, 0.5);
  background: #fff9e7;
}

.receipt-detected-card.verified {
  border-color: rgba(22, 126, 82, 0.35);
  background: #f1faf5;
}

.receipt-detected-toggle {
  width: 100%;
  min-height: 54px;
  padding: 10px 12px;
  border: 0;
  background: transparent;
  color: var(--ink);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  text-align: left;
}

.receipt-detected-toggle > span:first-child {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.receipt-detected-toggle strong {
  font-size: 15px;
  line-height: 1.2;
}

.receipt-detected-toggle small {
  color: #68736d;
  font-size: 11px;
  line-height: 1.25;
}

#receipt-detected-action {
  flex: 0 0 auto;
  color: #745f05;
  font-size: 11px;
  font-weight: 700;
}

.receipt-detected-list {
  margin: 0;
  padding: 0 12px 8px 38px;
  border-top: 1px solid rgba(13, 13, 13, 0.08);
}

.receipt-detected-list li {
  padding: 8px 0;
  border-bottom: 1px solid rgba(13, 13, 13, 0.07);
  display: flex;
  justify-content: space-between;
  gap: 10px;
  font-size: 12px;
  line-height: 1.3;
}

.receipt-detected-list li:last-child { border-bottom: 0; }
.receipt-detected-list li span { min-width: 0; }
.receipt-detected-list li strong { white-space: nowrap; }

#receipt-review-date.date-needs-review {
  border-color: #d6a900;
  box-shadow: 0 0 0 3px rgba(255, 204, 0, 0.16);
}

.receipt-review-total {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 7px;
  white-space: nowrap;
}

.receipt-review-total-entry {
  display: flex;
  align-items: baseline;
  justify-content: flex-end;
  gap: 5px;
}

.receipt-review-total-entry input {
  width: 110px;
  border: none;
  border-bottom: 1px solid var(--paper-dim);
  border-radius: 0;
  padding: 2px 0 4px;
  text-align: right;
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 700;
}

.receipt-review-total strong {
  font-family: var(--font-display);
  font-size: 22px;
}

.receipt-review-items {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.receipt-review-item {
  padding: 12px;
  border: 1.5px solid var(--paper-dim);
  border-radius: 12px;
  background: #fafafa;
}

.receipt-item-name-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-bottom: 10px;
}

.receipt-item-name {
  flex: 1;
  min-width: 0;
  min-height: 34px;
  border: none;
  border-bottom: 1px solid var(--paper-dim);
  padding: 4px 0 7px;
  background: transparent;
  color: var(--ink);
  font-family: inherit;
  font-size: 14px;
  font-weight: 650;
  line-height: 1.32;
  resize: none;
  overflow-y: hidden;
  overflow-wrap: anywhere;
}

.receipt-item-delete {
  color: var(--rust);
  padding: 7px;
  font-size: 18px;
  line-height: 1;
}

.receipt-item-fields {
  display: grid;
  grid-template-columns: minmax(88px, 0.8fr) minmax(0, 1.7fr);
  gap: 8px;
}

.receipt-item-fields label {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.receipt-item-category-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 0;
}

.receipt-item-fields input {
  width: 100%;
  min-width: 0;
  border: 1.5px solid var(--paper-dim);
  border-radius: 9px;
  padding: 10px 9px;
  background: #fff;
  color: var(--ink);
}

.receipt-item-category-btn {
  width: 100%;
  min-width: 0;
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 7px 9px 7px 11px;
  border: 1.5px solid var(--paper-dim);
  border-radius: 9px;
  background: #fff;
  color: var(--ink);
  text-align: left;
}

.receipt-item-category-btn:active {
  background: #f4f4f4;
}

.receipt-item-category-btn[aria-expanded="true"] {
  border-color: var(--gold);
  box-shadow: 0 0 0 3px rgba(255, 204, 0, 0.2);
}

.receipt-category-text {
  min-width: 0;
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: center;
  gap: 1px;
}

.receipt-category-parent {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--ink-soft);
  font-size: 10px;
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.receipt-category-name {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.18;
  overflow-wrap: anywhere;
}

.receipt-category-name.placeholder {
  color: #9a9a9a;
  font-weight: 400;
}

.receipt-category-chevron {
  display: inline-flex;
  align-items: center;
  color: var(--ink-soft);
  flex-shrink: 0;
}

.receipt-item-category-btn[aria-expanded="true"] .receipt-category-chevron svg {
  transform: rotate(180deg);
}

.receipt-category-chevron svg {
  display: block;
  transition: transform 0.15s ease;
}

.receipt-item-suggestion {
  margin-top: 7px;
  color: var(--ink-soft);
  font-size: 11px;
}

.receipt-products-open {
  align-self: flex-start;
  margin-top: 9px;
  padding: 6px 9px;
  border-radius: 8px;
  background: #fff4c4;
  color: #705600;
  font-size: 12px;
  font-weight: 750;
}

.receipt-products-panel { z-index: 32; }
#category-picker-panel { z-index: 44; }

.receipt-products-card {
  max-height: min(88dvh, 760px);
  padding-bottom: max(18px, env(safe-area-inset-bottom));
}

.receipt-products-card h2 {
  margin: 3px 0 0;
  font-size: 21px;
}

.receipt-products-close {
  margin: 0;
  flex-basis: 38px;
  width: 38px;
  height: 38px;
}

.receipt-products-summary {
  margin: -4px 0 0;
  color: var(--ink-soft);
  font-size: 13px;
  font-weight: 650;
}

.receipt-products-list {
  min-height: 0;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-right: 2px;
}

.receipt-product-row {
  padding: 12px;
  border: 1px solid #dedede;
  border-radius: 12px;
  background: #fafafa;
}

.receipt-product-row-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 34px;
  gap: 8px;
  align-items: start;
}

.receipt-product-name {
  width: 100%;
  min-height: 38px;
  resize: none;
  overflow: hidden;
  border: 0;
  border-bottom: 1px solid #dedede;
  background: transparent;
  color: var(--ink);
  font: 700 14px/1.35 var(--font-body);
  padding: 5px 0 8px;
}

.receipt-product-remove {
  position: relative;
  width: 34px;
  height: 34px;
  padding: 0;
  border-radius: 8px;
  color: #d44949;
}

.receipt-product-remove::before,
.receipt-product-remove::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 14px;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
}

.receipt-product-remove::before { transform: translate(-50%, -50%) rotate(45deg); }
.receipt-product-remove::after { transform: translate(-50%, -50%) rotate(-45deg); }

.receipt-product-controls {
  display: grid;
  grid-template-columns: 105px minmax(0, 1fr);
  gap: 8px;
  margin-top: 10px;
}

.receipt-product-controls label {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.receipt-product-controls label span {
  color: var(--ink-soft);
  font-size: 10px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.receipt-product-controls input,
.receipt-product-category {
  min-height: 45px;
  border: 1px solid #d9d9d9;
  border-radius: 9px;
  background: #fff;
  color: var(--ink);
}

.receipt-product-controls input { width: 100%; padding: 9px; }

.receipt-product-category {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 7px;
  padding: 8px 10px;
  text-align: left;
  font-size: 12px;
  font-weight: 650;
}

.receipt-product-category span { min-width: 0; }
.receipt-product-category svg { flex: 0 0 auto; }

.receipt-product-meta {
  display: block;
  margin-top: 8px;
  color: var(--ink-soft);
  font-size: 11px;
}

.receipt-add-item-btn {
  align-self: flex-start;
  color: #8a6b00;
  font-size: 13px;
  font-weight: 700;
  padding: 5px 0;
}

.receipt-review-difference {
  border-radius: 9px;
  padding: 9px 11px;
  background: rgba(255, 82, 82, 0.12);
  color: #a82828;
  font-size: 13px;
  font-weight: 650;
}

.receipt-review-difference.receipt-total-ok {
  background: rgba(42, 150, 70, 0.1);
  color: #247339;
}

.receipt-review-cancel {
  align-self: center;
  padding-top: 0;
}

.receipt-card {
  position: relative;
  background: var(--paper);
  color: var(--ink);
  border-radius: var(--radius);
  padding: 26px 20px 20px;
  margin-top: 14px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
}

.ticket-divider {
  border-top: 1.5px dashed var(--paper-dim);
  margin: 0 -4px;
}

.field, .amount-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.field-label {
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-soft);
}

.amount-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

#amount-input {
  font-family: var(--font-display);
  font-size: 38px;
  font-weight: 600;
  color: var(--ink);
  border: none;
  background: none;
  padding: 0;
  width: 100%;
  min-width: 0;
}

#amount-input::placeholder { color: var(--paper-dim); }

.currency {
  font-family: var(--font-display);
  font-size: 22px;
  color: var(--ink-soft);
}

.field input, .field select {
  border: 1.5px solid var(--paper-dim);
  border-radius: 10px;
  padding: 11px 12px;
  background: #fff;
  color: var(--ink);
}

.comment-input-wrap {
  position: relative;
}

.comment-input-wrap input {
  width: 100%;
  padding-right: 42px;
}

.mic-btn {
  position: absolute;
  right: 3px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--ink-soft);
  padding: 8px;
  border-radius: 8px;
}

.mic-btn.recording { color: var(--rust); }

.mic-btn.recording svg { animation: mic-pulse 1s ease-in-out infinite; }

@keyframes mic-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.35; }
}

.btn-primary {
  background: var(--gold);
  color: var(--ink);
  font-weight: 700;
  border-radius: 10px;
  padding: 14px 16px;
  text-align: center;
  transition: background 0.15s ease, transform 0.05s ease;
}

.btn-primary:active { transform: scale(0.98); }
.btn-primary:hover { background: var(--gold-soft); }

.btn-submit { margin-top: 4px; }
.btn-compact { padding: 11px 16px; white-space: nowrap; }

/* ---------------------------------------------------------------- recent */

.recent-block-standalone { margin-top: 10px; }

.recent-filter {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
}

.date-filter-wrap {
  position: relative;
  flex: 1;
}

.visually-hidden-date-input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
  left: 0;
  top: 0;
}

.recent-groups {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.day-card {
  background: var(--paper);
  border-radius: var(--radius);
  padding: 14px 14px 4px;
}

.day-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-bottom: 10px;
  margin-bottom: 6px;
  border-bottom: 1.5px solid var(--paper-dim);
}

.day-card-date {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 15px;
  color: var(--ink);
}

.day-card-total {
  font-family: var(--font-display);
  font-size: 13px;
  font-weight: 700;
  color: var(--ink);
  background: var(--gold);
  padding: 3px 10px;
  border-radius: 999px;
  white-space: nowrap;
}

.load-more-btn {
  display: block;
  width: 100%;
  text-align: center;
  margin-top: 4px;
}

.recent-block { margin-top: 26px; }

.section-label {
  font-family: var(--font-display);
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin: 0 0 10px;
}

.recent-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.recent-item {
  position: relative;
  padding: 12px 2px;
  border-top: 1px dashed var(--paper-dim);
  display: grid;
  grid-template-columns: minmax(74px, auto) minmax(0, 1fr) auto;
  column-gap: 9px;
  align-items: start;
}

.recent-item:first-child { border-top: none; }

.recent-details {
  min-width: 0;
}

.recent-amount {
  font-family: var(--font-display);
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
  white-space: nowrap;
  padding-top: 1px;
}

.recent-title {
  color: var(--ink);
  font-size: 14px;
  font-weight: 650;
  line-height: 1.3;
  overflow-wrap: anywhere;
}

.recent-classification {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 3px 6px;
  margin-top: 5px;
  font-size: 10px;
  line-height: 1.25;
}

.recent-category-parent {
  color: #9a6700;
  font-weight: 700;
  letter-spacing: 0.025em;
  text-transform: uppercase;
}

.recent-category-child {
  color: #0f766e;
  font-weight: 700;
}

.recent-category-parent + .recent-category-child::before {
  content: "›";
  margin-right: 6px;
  color: #b6a36a;
}

.recent-merchant {
  color: var(--ink-soft);
  font-weight: 500;
}

.recent-merchant::before {
  content: "•";
  margin-right: 6px;
  color: #b8b8b8;
}

.recent-delete {
  grid-column: 3;
  align-self: center;
  color: var(--rust);
  font-size: 16px;
  padding: 6px 8px;
}

.empty {
  color: var(--ink-soft);
  padding: 6px 4px;
  font-style: italic;
}

/* ------------------------------------------------------------- categories */

.add-category-form {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 14px;
  margin-bottom: 22px;
}

.add-category-form input {
  border: 1.5px solid var(--ink-line);
  border-radius: 10px;
  padding: 11px 12px;
  background: var(--ink);
  color: var(--paper);
  min-width: 0;
}

.add-category-row2 {
  display: flex;
  gap: 8px;
}

.category-list {
  list-style: none;
  margin: 0;
  padding: 0 0 6px;
}

.category-group {
  list-style: none;
  overflow: hidden;
  margin-top: 7px;
  border: 1px solid #e5e1d7;
  border-radius: 11px;
  background: #fff;
}

.category-group:first-child { margin-top: 0; }

.category-group-header {
  display: flex;
  align-items: center;
  min-height: 48px;
  padding: 0 5px 0 2px;
  background: #faf9f6;
}

.category-group-toggle {
  min-width: 0;
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px 8px;
  color: var(--ink);
  text-align: left;
}

.category-group-toggle:disabled {
  opacity: 1;
  cursor: default;
}

.category-group-chevron {
  display: inline-flex;
  flex-shrink: 0;
  color: #927000;
}

.category-group-toggle:disabled .category-group-chevron {
  visibility: hidden;
}

.category-group-chevron svg {
  transition: transform 0.16s ease;
}

.category-group-toggle[aria-expanded="true"] .category-group-chevron svg {
  transform: rotate(180deg);
}

.category-group-name {
  min-width: 0;
  flex: 1;
  font-size: 15px;
  font-weight: 750;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.category-group-count {
  min-width: 23px;
  padding: 3px 7px;
  border-radius: 999px;
  background: #fff4bf;
  color: #765c00;
  font-size: 11px;
  font-weight: 750;
  text-align: center;
}

.category-children {
  list-style: none;
  margin: 0;
  padding: 0 8px 6px 36px;
  border-top: 1px solid #ebe7dd;
  background: #fff;
}

.category-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 2px;
  border-top: 1px dashed var(--paper-dim);
  color: var(--ink);
}

.category-item:first-child { border-top: none; }

.category-item-child span:first-child {
  font-size: 14px;
  color: #3f4549;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.category-list.archived .category-item { color: var(--ink-soft); }

.categories-card {
  background: var(--paper);
  border-radius: var(--radius);
  padding: 10px 10px 8px;
}

.subtab-bar {
  display: flex;
  gap: 4px;
  background: var(--paper-dim);
  border-radius: 10px;
  padding: 3px;
  margin-bottom: 8px;
}

.subtab-btn {
  flex: 1;
  padding: 8px;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-soft);
  text-align: center;
}

.subtab-btn.active {
  background: var(--ink);
  color: var(--gold-soft);
}

.category-action-btn {
  color: var(--ink-soft);
  padding: 8px;
  border-radius: 8px;
  flex-shrink: 0;
}

.category-action-btn:active { background: var(--paper-dim); }
.category-action-btn.restore { color: #b8860b; }

.link-btn {
  color: var(--ink-soft);
  font-size: 13px;
  text-decoration: underline;
  padding: 10px 4px;
}

/* ---------------------------------------------------------- category picker */

.category-picker-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border: 1.5px solid var(--paper-dim);
  border-radius: 10px;
  padding: 11px 12px;
  background: #fff;
  color: var(--ink);
  width: 100%;
  text-align: left;
}

.category-picker-btn .placeholder { color: #9a9a9a; }
.category-picker-btn svg { flex-shrink: 0; color: var(--ink-soft); }

.category-suggestion-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 6px;
  padding: 8px 10px;
  background: rgba(255, 204, 0, 0.12);
  border: 1px dashed var(--gold);
  border-radius: 8px;
}

.category-suggestion-row span {
  font-size: 12px;
  color: var(--ink-soft);
}

.category-suggestion-btn {
  font-size: 12px;
  font-weight: 700;
  padding: 5px 10px;
  border-radius: 8px;
  background: var(--gold);
  color: var(--ink);
  white-space: nowrap;
  flex-shrink: 0;
}

.category-picker-btn-compact {
  flex: 1;
  min-width: 0;
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink-line);
}

.category-picker-btn-compact span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.category-picker-btn-compact .placeholder { color: #8a8a8a; }
.category-picker-btn-compact svg { color: var(--ink-soft); }

.category-picker-card {
  max-height: 82vh;
  max-height: 82dvh;
  overflow: hidden;
  padding-top: 16px;
  gap: 0;
}

.picker-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--paper-dim);
  flex-shrink: 0;
}

.picker-panel-header .section-label {
  margin: 0;
}

.picker-panel-close {
  width: 34px;
  height: 34px;
  border-radius: 9px;
  background: var(--paper-dim);
  color: var(--ink-soft);
  font-size: 23px;
  line-height: 1;
  flex-shrink: 0;
}

.category-picker-list {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 6px 2px max(8px, env(safe-area-inset-bottom));
  scrollbar-width: thin;
  scrollbar-color: #c7c7c7 transparent;
}

.picker-group + .picker-group {
  border-top: 1px solid #ededed;
}

.picker-row {
  display: flex;
  align-items: center;
  gap: 4px;
}

.picker-select-area {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 5px;
  text-align: left;
  min-width: 0;
}

.picker-checkbox {
  width: 20px;
  height: 20px;
  border: 2px solid var(--paper-dim);
  border-radius: 6px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.picker-row.picker-selected .picker-checkbox {
  background: var(--gold);
  border-color: var(--gold);
}

.picker-row.picker-selected .picker-checkbox::after {
  content: "✓";
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
}

.picker-label {
  font-size: 15px;
  color: var(--ink);
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.picker-row-child {
  border-radius: 9px;
}

.picker-row-child .picker-label {
  font-size: 14px;
  color: #4e4e4e;
}

.picker-row-child.picker-selected {
  background: rgba(255, 204, 0, 0.14);
}

.picker-chevron {
  width: 42px;
  min-height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px;
  color: var(--ink-soft);
  flex-shrink: 0;
}

.picker-chevron svg { transition: transform 0.15s ease; display: block; }

.picker-group.expanded .picker-chevron svg { transform: rotate(180deg); }

.picker-children {
  display: none;
  flex-direction: column;
  margin: 0 0 7px 25px;
  padding: 2px 0 2px 8px;
  border-left: 2px solid #ededed;
}

.picker-group.expanded .picker-children { display: flex; }

/* ------------------------------------------------------------- statistics */

#screen-stats {
  padding-top: 8px;
  transition: opacity 0.15s ease;
}

#screen-stats.loading { opacity: 0.58; }

.stats-period-strip {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding: 2px 1px 10px;
  margin: 0 -1px;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}

.stats-period-strip::-webkit-scrollbar { display: none; }

.stats-period-btn {
  flex: 0 0 auto;
  min-height: 36px;
  padding: 8px 13px;
  border: 1px solid var(--ink-line);
  border-radius: 999px;
  color: #a8a8a8;
  font-size: 13px;
  font-weight: 650;
  white-space: nowrap;
}

.stats-period-btn.active {
  background: var(--paper);
  border-color: var(--paper);
  color: var(--ink);
}

.stats-calendar-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.stats-custom-panel {
  margin: 0 0 12px;
  padding: 12px;
  border: 1px solid #303030;
  border-radius: 13px;
  background: #171717;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.stats-custom-panel label {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.stats-custom-panel label span {
  color: #999;
  font-size: 11px;
  font-weight: 650;
}

.stats-custom-panel input {
  width: 100%;
  min-width: 0;
  padding: 9px 8px;
  border: 1px solid #3b3b3b;
  border-radius: 9px;
  background: #0f0f0f;
  color: var(--paper);
  font-size: 12px;
}

.stats-custom-panel .btn-primary {
  grid-column: 1 / -1;
  min-height: 40px;
  padding: 9px 12px;
}

.stats-custom-panel small {
  grid-column: 1 / -1;
  color: #898989;
  font-size: 10px;
  line-height: 1.35;
  text-align: center;
}

.stats-hero {
  min-height: 150px;
  padding: 19px 20px;
  border-radius: 18px;
  background: linear-gradient(145deg, #ffdc4d 0%, var(--gold) 58%, #f1b900 100%);
  color: var(--ink);
  display: flex;
  flex-direction: column;
  justify-content: center;
  box-shadow: 0 16px 34px rgba(0, 0, 0, 0.24);
}

.stats-eyebrow {
  font-family: var(--font-display);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.62;
}

.stats-total {
  display: block;
  margin: 6px 0 9px;
  font-family: var(--font-display);
  font-size: clamp(32px, 9vw, 42px);
  line-height: 1.05;
  letter-spacing: -0.05em;
}

.stats-comparison {
  align-self: flex-start;
  padding: 5px 9px;
  border-radius: 999px;
  background: rgba(13, 13, 13, 0.11);
  font-size: 12px;
  font-weight: 700;
}

.stats-comparison.up { background: rgba(181, 24, 24, 0.14); color: #7e1010; }
.stats-comparison.down { background: rgba(0, 104, 68, 0.15); color: #005e3e; }

.stats-kpi-grid {
  display: grid;
  grid-template-columns: 0.8fr 1.2fr;
  gap: 8px;
  margin: 9px 0;
}

.stats-kpi {
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid var(--ink-line);
  border-radius: 13px;
  background: #151515;
}

.stats-kpi span {
  display: block;
  margin-bottom: 4px;
  color: var(--ink-soft);
  font-size: 11px;
}

.stats-kpi strong {
  display: block;
  overflow: hidden;
  color: var(--paper);
  font-family: var(--font-display);
  font-size: 17px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.stats-card {
  margin-top: 9px;
  padding: 16px;
  border-radius: var(--radius);
  background: var(--paper);
  color: var(--ink);
}

.stats-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.stats-card-header.compact { margin-bottom: 4px; }

.stats-card-kicker {
  display: block;
  margin-bottom: 3px;
  color: var(--ink-soft);
  font-size: 11px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.stats-card-header h2 {
  margin: 0;
  font-family: var(--font-display);
  font-size: 17px;
}

.stats-card-badge {
  min-width: 29px;
  padding: 5px 8px;
  border-radius: 999px;
  background: var(--paper-dim);
  color: #555;
  font-family: var(--font-display);
  font-size: 12px;
  font-weight: 700;
  text-align: center;
}

.stats-chart-layout {
  display: grid;
  grid-template-columns: minmax(126px, 0.9fr) minmax(0, 1.1fr);
  align-items: center;
  gap: 18px;
}

.stats-donut {
  position: relative;
  width: min(100%, 148px);
  aspect-ratio: 1;
  margin: 0 auto;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #2a2a2a;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.04);
}

.stats-donut-center {
  width: 62%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--paper);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.04);
}

.stats-donut-center span {
  color: var(--ink-soft);
  font-size: 10px;
  text-transform: uppercase;
}

.stats-donut-center strong {
  margin-top: 3px;
  font-family: var(--font-display);
  font-size: 17px;
}

.stats-top-category { min-width: 0; }

.stats-top-label {
  display: block;
  color: var(--ink-soft);
  font-size: 11px;
}

.stats-top-category strong {
  display: -webkit-box;
  margin: 5px 0 7px;
  overflow: hidden;
  font-size: 16px;
  line-height: 1.2;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.stats-top-category > span:last-child {
  font-family: var(--font-display);
  font-size: 15px;
  font-weight: 700;
}

.stats-category-list { display: flex; flex-direction: column; }

.stats-category-row {
  padding: 11px 0;
  border-top: 1px solid #ededed;
}

.stats-category-row:first-child { border-top: none; }

.stats-category-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.stats-category-identity {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 9px;
}

.stats-category-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  flex: 0 0 9px;
}

.stats-category-name {
  overflow: hidden;
  font-size: 13px;
  font-weight: 650;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.stats-category-value {
  flex-shrink: 0;
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-family: var(--font-display);
}

.stats-category-value strong { font-size: 13px; }
.stats-category-value span { color: var(--ink-soft); font-size: 10px; }

.stats-category-track {
  height: 4px;
  margin: 7px 0 0 18px;
  overflow: hidden;
  border-radius: 999px;
  background: #ededed;
}

.stats-category-track span {
  display: block;
  height: 100%;
  border-radius: inherit;
}

.stats-empty {
  padding: 20px 4px 12px;
  color: var(--ink-soft);
  font-size: 13px;
  text-align: center;
}

.stats-show-all {
  width: 100%;
  padding: 11px 6px 3px;
  border-top: 1px solid #ededed;
  color: #706000;
  font-size: 12px;
  font-weight: 700;
  text-align: center;
}

.stats-error {
  margin-top: 9px;
  padding: 11px 13px;
  border: 1px solid rgba(255, 82, 82, 0.45);
  border-radius: 11px;
  background: rgba(255, 82, 82, 0.1);
  color: #ff9c9c;
  font-size: 12px;
}

.stats-product-card { gap: 12px; }

.stats-product-search {
  min-height: 48px;
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr) 34px;
  align-items: center;
  gap: 8px;
  padding: 0 8px 0 13px;
  border: 1.5px solid #dedede;
  border-radius: 12px;
  background: #fff;
  color: var(--ink-soft);
}

.stats-product-search:focus-within {
  border-color: #d7ad00;
  box-shadow: 0 0 0 3px rgba(255, 204, 0, 0.16);
}

.stats-product-search input {
  min-width: 0;
  width: 100%;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--ink);
  font-size: 14px;
}

.stats-product-clear {
  position: relative;
  width: 34px;
  height: 34px;
  color: #777;
}

.stats-product-clear::before,
.stats-product-clear::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 14px;
  height: 2px;
  background: currentColor;
}

.stats-product-clear::before { transform: translate(-50%, -50%) rotate(45deg); }
.stats-product-clear::after { transform: translate(-50%, -50%) rotate(-45deg); }

.stats-product-filter {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 9px;
  background: #fff4c4;
  color: #6e5600;
  font-size: 12px;
  font-weight: 700;
}

.stats-product-filter button {
  padding: 5px 7px;
  border-radius: 7px;
  background: #fff;
  color: #715900;
  font-size: 11px;
  font-weight: 750;
}

.stats-product-content {
  display: flex;
  flex-direction: column;
  gap: 10px;
  transition: opacity 0.16s ease;
}

.stats-product-content.loading { opacity: 0.48; }

.stats-product-intro {
  margin: 0;
  padding: 12px;
  border-radius: 10px;
  background: #f4f4f4;
  color: var(--ink-soft);
  font-size: 12px;
  line-height: 1.45;
}

.stats-product-intro.error { color: #a82828; background: rgba(255, 82, 82, 0.1); }

.stats-product-result-hero {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 14px;
  border-radius: 12px;
  background: #111;
  color: #fff;
}

.stats-product-result-hero > span {
  color: #bdbdbd;
  font-size: 11px;
}

.stats-product-result-hero > strong {
  font: 800 28px/1.1 var(--font-display);
}

.stats-product-result-hero > small { color: #d6d6d6; font-size: 11px; }

.stats-product-share {
  margin-top: 7px;
  padding: 8px 9px;
  border-radius: 8px;
  background: rgba(255, 204, 0, 0.16);
  color: #ffe36d;
  font-size: 11px;
  line-height: 1.35;
}

.stats-product-section-title {
  margin: 5px 0 -2px;
  color: var(--ink-soft);
  font-size: 10px;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.stats-product-list {
  display: flex;
  flex-direction: column;
  border: 1px solid #e4e4e4;
  border-radius: 11px;
  overflow: hidden;
}

.stats-product-top-row,
.stats-product-data-row {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 11px;
  border-bottom: 1px solid #ececec;
  background: #fff;
  color: var(--ink);
  text-align: left;
}

.stats-product-top-row:last-child,
.stats-product-data-row:last-child { border-bottom: 0; }

.stats-product-top-row > span,
.stats-product-data-row > span {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.stats-product-top-row strong,
.stats-product-data-row strong {
  overflow-wrap: anywhere;
  font-size: 12px;
}

.stats-product-top-row small,
.stats-product-data-row small {
  color: var(--ink-soft);
  font-size: 10px;
  line-height: 1.3;
}

.stats-product-top-row b,
.stats-product-data-row b {
  flex: 0 0 auto;
  font-size: 12px;
}

.stats-store-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 7px;
}

.stats-store-chip {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 9px;
  border: 1px solid #e1e1e1;
  border-radius: 10px;
  background: #fff;
  color: var(--ink);
  text-align: left;
}

.stats-store-chip strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 11px;
}

.stats-store-chip span { color: var(--ink-soft); font-size: 9px; line-height: 1.3; }

/* ---------------------------------------------------------------- tab bar */

.tab-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 5;
  background: var(--ink);
  display: flex;
  border-top: 1px solid var(--ink-line);
  padding: 8px 8px max(8px, env(safe-area-inset-bottom));
  gap: 2px;
}

.tab-btn {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  min-width: 0;
  padding: 8px 2px;
  border-radius: 10px;
  color: var(--ink-soft);
  font-size: 11px;
}

.tab-btn.active { color: var(--gold-soft); }

/* --------------------------------------------------------------- token gate */

.token-gate {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: var(--ink);
}

.token-card {
  width: 100%;
  max-width: 320px;
  background: var(--paper);
  color: var(--ink);
  border-radius: var(--radius);
  padding: 28px 22px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.token-title {
  font-family: var(--font-display);
  margin: 0;
  font-size: 22px;
}

.token-hint {
  margin: 0 0 4px;
  color: var(--ink-soft);
  font-size: 14px;
}
.token-error{margin:10px 0 0;color:#b62e2e;font-size:12px;font-weight:700;line-height:1.35}

.token-hint-small {
  font-size: 12px;
  margin: 4px 0 0;
}

.token-card input {
  border: 1.5px solid var(--paper-dim);
  border-radius: 10px;
  padding: 12px;
  background: #fff;
  color: var(--ink);
}

/* -------------------------------------------------------------- settings */

.settings-panel {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  display: flex;
  align-items: flex-end;
  justify-content: center;
  z-index: 20;
}

.settings-card {
  width: 100%;
  max-width: 420px;
  background: var(--paper);
  color: var(--ink);
  border-radius: var(--radius) var(--radius) 0 0;
  padding: 22px 20px max(20px, env(safe-area-inset-bottom));
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.settings-row {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.settings-row > span {
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-soft);
}

/* --------------------------------------------------------------------- toast */

.persistent-error {
  position: fixed;
  z-index: 60;
  left: 50%;
  bottom: calc(var(--tabbar-height) + 18px + env(safe-area-inset-bottom));
  transform: translateX(-50%);
  width: min(390px, calc(100vw - 28px));
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 16px 14px 16px 17px;
  border: 1px solid #df7c72;
  border-left: 5px solid #d94a3d;
  border-radius: 14px;
  background: #fff7f5;
  color: #2f1714;
  box-shadow: 0 16px 38px rgba(0, 0, 0, 0.28);
}

.persistent-error-copy {
  min-width: 0;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.persistent-error-label {
  color: #b62f24;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.persistent-error strong {
  font-size: 16px;
  line-height: 1.25;
}

.persistent-error p {
  margin: 0;
  font-size: 14px;
  line-height: 1.4;
}

.persistent-error small {
  color: #865b56;
  font-size: 11px;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.persistent-error-close {
  position: relative;
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
  margin: -3px -2px 0 0;
  padding: 0;
  border: 0;
  border-radius: 9px;
  background: #f3dedb;
  color: #a82d24;
}

.persistent-error-close::before,
.persistent-error-close::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 16px;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  transform-origin: center;
}

.persistent-error-close::before { transform: translate(-50%, -50%) rotate(45deg); }
.persistent-error-close::after { transform: translate(-50%, -50%) rotate(-45deg); }

.persistent-error-close:active { transform: scale(0.96); }

.toast {
  position: fixed;
  left: 50%;
  bottom: calc(84px + env(safe-area-inset-bottom));
  transform: translateX(-50%) translateY(10px);
  background: var(--ink);
  border: 1px solid var(--gold-soft);
  color: var(--paper);
  padding: 10px 16px;
  border-radius: 10px;
  font-size: 14px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
  max-width: calc(100vw - 40px);
  text-align: center;
}

.toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; }
}

@media (min-width: 480px) {
  .screens { max-width: 420px; margin: 0 auto; width: 100%; }
  .tab-bar { max-width: 420px; margin: 0 auto; width: 100%; }
  .app-header { max-width: 420px; margin: 0 auto; width: 100%; }
}

/* Unified family finance cabinet. */
.finance-mobile-screen{padding-bottom:18px}.finance-mobile-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:4px 2px 14px}.finance-mobile-head span,.finance-mobile-kicker{display:block;color:var(--ink-soft);font-size:10px;letter-spacing:.12em;text-transform:uppercase}.finance-mobile-head h2{margin:3px 0 0;color:var(--paper);font-size:27px}.finance-mobile-head input{width:142px;height:42px;border:1px solid var(--ink-line);border-radius:12px;background:#171717;color:var(--paper);padding:0 9px;color-scheme:dark}
.finance-mobile-tabs{display:flex;gap:4px;margin-bottom:12px;padding:4px;border:1px solid var(--ink-line);border-radius:14px;background:#111}.finance-mobile-tabs button{flex:1;min-height:39px;border-radius:10px;color:var(--ink-soft);font-size:12px;font-weight:700}.finance-mobile-tabs button.active{background:var(--paper);color:#171717}
.finance-mobile-tabs-scroll{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}.finance-mobile-tabs-scroll::-webkit-scrollbar{display:none}.finance-mobile-tabs-scroll button{flex:0 0 auto;padding:0 14px;white-space:nowrap}
.finance-mobile-card,.finance-mobile-hero{margin-bottom:12px;border-radius:20px;background:var(--paper);color:#191919;padding:18px}.finance-mobile-card h3{font-size:21px;margin:4px 0 15px}.finance-mobile-card label{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.finance-mobile-card label>span{font-size:11px;color:#8a8985;text-transform:uppercase;letter-spacing:.08em}.finance-mobile-card input,.finance-mobile-card select{width:100%;height:48px;border:1px solid #dddcd7;border-radius:13px;background:#fff;padding:0 12px;font-size:15px;color:#1d1d1b}.finance-mobile-card input:focus,.finance-mobile-card select:focus{border-color:#d1aa24;box-shadow:0 0 0 3px rgba(209,170,36,.14);outline:none}.finance-mobile-card .btn-primary{width:100%;min-height:49px;margin-top:4px}.finance-mobile-card>small{display:block;margin:-2px 0 12px;color:#8b742a;line-height:1.4}.finance-mobile-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.finance-mobile-card .finance-mobile-sprint{display:flex;flex-direction:row;align-items:center;gap:10px;padding:11px;border:1px solid #e5ce77;border-radius:12px;background:#fff8df}.finance-mobile-sprint input{width:20px!important;height:20px!important;accent-color:#198a7e}.finance-mobile-sprint strong,.finance-mobile-sprint small{display:block}.finance-mobile-sprint strong{font-size:13px}.finance-mobile-sprint small{margin-top:2px;color:#806b2b;font-size:10px}.finance-mobile-sprint.disabled{opacity:.55}
.finance-mobile-card .finance-mobile-sprint-share{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding:10px 11px;border:1px solid #e5ce77;border-radius:12px;background:#fffdf2}.finance-mobile-sprint-share span{font-size:11px;color:#806b2b}.finance-mobile-sprint-share input{width:64px;padding:6px 8px;border:1px solid #dae2e6;border-radius:8px;text-align:right}
.finance-mobile-receipts-presets{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;margin-bottom:10px;padding:4px;border-radius:11px;background:#efede7}.finance-mobile-receipts-presets button{min-height:34px;padding:0 2px;border:0;border-radius:8px;background:transparent;color:#817d74;font-size:8px;font-weight:900}.finance-mobile-receipts-presets button.active{background:#fff;color:#117a72;box-shadow:0 2px 8px #332e2412}
.finance-mobile-receipts-custom{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}.finance-mobile-receipts-custom input{height:44px;border:1px solid #dddcd7;border-radius:12px;padding:0 10px;font-size:13px}.finance-mobile-receipts-custom button{grid-column:1/-1}
.finance-mobile-range-total{margin-bottom:12px;padding:12px 14px;border-radius:13px;background:#f4f1e9}.finance-mobile-range-total span{display:block;color:#8d887b;font-size:10px;font-weight:750}.finance-mobile-range-total b{display:block;margin-top:4px;font-size:19px}.finance-mobile-range-total small{display:block;margin-top:2px;color:#8d887b;font-size:9px}
.finance-mobile-earners{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.finance-mobile-earners span{position:relative;display:block;padding:13px 14px 13px 17px;overflow:hidden;border-radius:14px;background:var(--paper)}.finance-mobile-earners span::before{content:"";position:absolute;inset:0 auto 0 0;width:4px}.finance-mobile-earners small{display:block;color:#8b8577;font-size:10px;font-weight:750}.finance-mobile-earners b{display:block;margin-top:6px;font-size:17px}
.finance-mobile-earners .person-yura::before{background:#3478f6}.finance-mobile-earners .person-yura b{color:#2660c9}
.finance-mobile-earners .person-tatiana::before{background:#c264d9}.finance-mobile-earners .person-tatiana b{color:#9c3ec2}
.finance-mobile-list-row.person-yura{border-left:3px solid #3478f6}.finance-mobile-list-row.person-tatiana{border-left:3px solid #c264d9}.finance-mobile-list-row.person-business{border-left:3px solid #16877e}.finance-mobile-list-row.person-family{border-left:3px solid #9aa6ab}
.finance-mobile-hero{background:linear-gradient(145deg,#f8cd34,#ffe17b);padding:20px}.finance-mobile-hero>span{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:#665313}.finance-mobile-hero>strong{display:block;margin:8px 0 17px;font-size:34px}.finance-mobile-hero>div{display:grid;grid-template-columns:1fr 1fr;gap:8px}.finance-mobile-hero b{padding:10px;border-radius:11px;background:rgba(255,255,255,.5);font-size:11px;line-height:1.35}
.finance-mobile-title{display:flex;align-items:center;justify-content:space-between;gap:10px}.finance-mobile-title h3{margin-bottom:12px}.finance-mobile-title>b{color:#947612;font-size:14px}.finance-mobile-actions,.finance-mobile-list{display:flex;flex-direction:column;gap:8px}.finance-mobile-action{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid #e3e1db;border-radius:13px;background:#fbfaf7}.finance-mobile-action>label{display:grid;grid-template-columns:25px 1fr auto;gap:9px;align-items:center}.finance-mobile-action input[type=checkbox]{width:20px;height:20px;accent-color:#198a7e}.finance-mobile-action-instrument-row{margin-left:34px;padding:9px 10px;border:1px solid #a8d9d0;border-radius:10px;background:#eafaf6}.finance-mobile-action-instrument-row>span{display:block;margin-bottom:5px;color:#0e6e63;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.finance-mobile-action-instrument{width:100%;padding:8px 9px;border:1px solid #7fc9bb;border-radius:8px;font-size:13px;background:#fff;color:#0e2a25;font-weight:600}.finance-mobile-action-goal{width:100%;padding:8px 9px;border:1px solid #7fc9bb;border-radius:8px;font-size:13px;background:#fff;color:#0e2a25;font-weight:600}
.finance-mobile-action-split-toggle{margin-left:34px;border:0;background:none;padding:0;color:#0e6e63;font-size:10px;font-weight:800;text-decoration:underline;cursor:pointer;text-align:left}
.finance-mobile-action-split-editor{margin-left:34px;padding:10px;border:1px solid #a8d9d0;border-radius:10px;background:#eafaf6;display:flex;flex-direction:column;gap:8px}
.finance-mobile-action-split-row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.9fr) 22px;gap:6px;align-items:center}
.finance-mobile-action-split-instrument{padding:7px 8px;border:1px solid #7fc9bb;border-radius:8px;font-size:12px;background:#fff;color:#0e2a25;font-weight:600}
.finance-mobile-action-split-amount{padding:7px 8px;border:1px solid #7fc9bb;border-radius:8px;font-size:12px;background:#fff;color:#0e2a25}
.finance-mobile-action-split-remove{border:0;background:none;color:#0e6e63;font-size:15px;font-weight:800;cursor:pointer;line-height:1}
.finance-mobile-action-split-add{align-self:flex-start;border:0;background:none;padding:0;color:#0e6e63;font-size:10px;font-weight:800;text-decoration:underline;cursor:pointer}
.finance-mobile-action-split-remaining{margin:0;color:#0e6e63;font-size:11px;font-weight:700}
.finance-mobile-action-split-remaining.finance-mobile-action-split-over{color:#b84343}
.finance-mobile-action-split-buttons{display:flex;gap:8px}
.finance-mobile-action-split-buttons button{height:32px;padding:0 12px;border:1px solid #7fc9bb;border-radius:8px;background:#fff;color:#0e6e63;font-size:10px;font-weight:900;cursor:pointer}
.finance-mobile-action-split-buttons .finance-mobile-action-split-confirm{background:#198a7e;border-color:#198a7e;color:#fff}.finance-mobile-action strong,.finance-mobile-list-row strong{display:block;font-size:13px}.finance-mobile-action small,.finance-mobile-list-row small{display:block;margin-top:3px;color:#92908a;font-size:10px}.finance-mobile-action>b{font-size:13px;color:#11786f}.finance-mobile-list-row{position:relative;padding:13px 40px 13px 13px;border:1px solid #e3e1db;border-radius:13px;background:#fbfaf7}.finance-income-delete{position:absolute;top:10px;right:10px;width:24px;height:24px;border:0;border-radius:50%;background:#fdf0f0;color:#b84343;font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.finance-income-delete:hover{background:#f8dede}.finance-mobile-list-row>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.finance-mobile-list-row .finance-mobile-progress{height:7px;border-radius:99px;background:#e7e4dc;overflow:hidden;margin:9px 0}.finance-mobile-progress i{display:block;height:100%;background:#1b8a80}.finance-mobile-row-actions{display:flex;gap:6px;margin-top:9px;flex-wrap:wrap}.finance-mobile-row-actions button{min-height:34px;padding:0 10px;border:1px solid #dedbd3;border-radius:9px;background:#fff;font-size:10px;font-weight:700;text-transform:uppercase}.finance-mobile-row-actions button.danger{border-color:#f0c7c7;color:#b84343}.finance-mobile-row-actions button.accelerator-on{border-color:#198a7e;background:#eafaf6;color:#0c766e}
.finance-mobile-log-toggle{margin-top:10px;width:100%;padding:9px;border:1px solid #dedbd3;border-radius:10px;background:#fbfaf7;color:#5c6b72;font-size:11px;font-weight:700}
.finance-mobile-confirmed-log{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.finance-mobile-confirmed-log-row{display:grid;grid-template-columns:1fr auto;gap:6px 10px;align-items:center;padding:11px 12px;border:1px solid #e3e1db;border-radius:13px;background:#f8faf9}
.finance-mobile-confirmed-log-row strong{display:block;font-size:13px}
.finance-mobile-confirmed-log-row small{display:block;margin-top:3px;color:#92908a;font-size:10px}
.finance-mobile-confirmed-log-row>b{color:#11786f;font-size:14px;text-align:right}
.finance-mobile-confirmed-log-row>small{grid-column:2;text-align:right}
.finance-mobile-completed-goals summary{display:flex;align-items:center;justify-content:space-between;cursor:pointer;list-style:none;color:#8b8577;font-size:10px;font-weight:800;text-transform:uppercase}.finance-mobile-completed-goals summary::-webkit-details-marker{display:none}.finance-mobile-completed-goals summary b{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#eef0ea;color:#5c7d63}.finance-mobile-completed-goals[open] summary{margin-bottom:11px}.finance-mobile-check{flex-direction:row!important;align-items:center!important}.finance-mobile-check input{width:21px!important;height:21px!important;accent-color:#198a7e}.finance-mobile-check span{color:#32312e!important}.finance-mobile-empty{padding:18px;text-align:center;color:#96938b;font-size:12px;border:1px dashed #dcd9d0;border-radius:13px}.finance-mobile-error{padding:13px;border:1px solid #c44;border-radius:13px;color:#ffd9d9;background:#301616;font-size:12px;line-height:1.45}
.finance-mobile-goal-pace{border:1px solid #e5ce77;background:linear-gradient(145deg,#fffbed,#fff4c9)}.finance-mobile-goal-pace .finance-mobile-progress{height:8px;margin:2px 0 12px;border-radius:99px;background:#eadfba;overflow:hidden}.finance-mobile-goal-pace .finance-mobile-progress i{display:block;height:100%;border-radius:inherit;background:#198a7e}.finance-mobile-pace-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.finance-mobile-goal-pace .finance-mobile-pace-grid{grid-template-columns:1fr 1.45fr}.finance-mobile-pace-grid span{padding:9px 7px;border-radius:10px;background:rgba(255,255,255,.72)}.finance-mobile-pace-grid small,.finance-mobile-pace-grid b{display:block}.finance-mobile-pace-grid small{color:#858278;font-size:9px}.finance-mobile-pace-grid b{margin-top:3px;color:#242522;font-size:11px;line-height:1.35}
.finance-mobile-accelerator{margin-top:13px;padding-top:13px;border-top:1px solid #e2d397}.finance-mobile-accelerator>div:first-child{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.finance-mobile-accelerator strong,.finance-mobile-accelerator small{display:block}.finance-mobile-accelerator strong{font-size:12px}.finance-mobile-accelerator>div:first-child small{margin-top:2px;color:#807a68;font-size:9px}.finance-mobile-accelerator>div:first-child>b{color:#16877e;font-size:14px}.finance-mobile-accelerator>input{height:auto!important;margin:12px 0!important;padding:0!important;accent-color:#198a7e}.finance-mobile-accelerator-split{display:grid!important;grid-template-columns:repeat(3,1fr);gap:6px!important}.finance-mobile-accelerator-split span{display:block;padding:8px 6px;border-radius:9px;background:rgba(255,255,255,.75)}.finance-mobile-accelerator-split small{color:#8b877b;font-size:8px}.finance-mobile-accelerator-split b{display:block;margin-top:2px;font-size:11px}.finance-mobile-accelerator>small{margin:9px 0;color:#625a3d;font-size:10px}.finance-mobile-accelerator>button{width:100%;min-height:38px;border:1px solid #d5ba55;border-radius:10px;background:#fff8dc;color:#5e4a0d;font-size:10px;font-weight:900;text-transform:uppercase}
.finance-mobile-opening{border:1px solid #e5ce77;background:linear-gradient(145deg,#fffbed,#fff4c9)}.finance-mobile-opening p{margin:0 0 13px;color:#6b5a1c;font-size:11px;line-height:1.4}
.finance-mobile-portfolio>h3{margin:5px 0 10px;font-size:28px}.finance-mobile-portfolio-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.finance-mobile-portfolio-meta span{padding:10px;border-radius:10px;background:#f4f1e9}.finance-mobile-portfolio-meta small,.finance-mobile-portfolio-meta b{display:block}.finance-mobile-portfolio-meta small{color:#8d887b;font-size:9px}.finance-mobile-portfolio-meta b{margin-top:3px;font-size:12px;color:#16877e}
.finance-mobile-baskets-head{display:flex;align-items:center;gap:6px;margin-bottom:8px}.finance-mobile-baskets-head small{color:#8d887b;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}

/* Investments */
.investments-card{cursor:pointer}
.investments-status-badge{display:inline-block;padding:4px 9px;border-radius:999px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;background:#eef0ea;color:#5c7d63}
.investments-status-BUY_ELIGIBLE{background:#eafaf6;color:#0c766e}
.investments-status-WAIT{background:#f4f1e9;color:#6b6356}
.investments-status-REVIEW_REQUIRED{background:#fff4c9;color:#8b742a}
.investments-status-PAUSED,.investments-status-LIMIT_EXCEEDED{background:#fdf0f0;color:#b84343}
.investments-status-DATA_INSUFFICIENT{background:#eceaf5;color:#5c4f9c}
.investments-target-row{position:relative;padding:10px 40px 10px 12px;border:1px solid #e3e1db;border-radius:12px;background:#fbfaf7;margin-bottom:6px}
.investments-target-row .persistent-error-close{position:absolute;top:50%;right:10px;transform:translateY(-50%)}
#investments-detail-body h3{margin:16px 0 10px;font-size:16px}
#investments-detail-body h3:first-child{margin-top:0}
.investments-howto{padding:13px 15px;margin-bottom:12px;background:#fbfaf7;border:1px solid #e3e1db}
.investments-howto p{margin:0;color:#6b6356;font-size:11px;line-height:1.5}
.investments-howto b{color:#32312e}
.info-hint-wrap{position:relative;display:inline-block}
.info-hint{display:inline-grid;place-items:center;width:18px;height:18px;padding:0;border:0;border-radius:50%;background:#e9e6dd;color:#8b8577;font-size:10px;font-weight:800;cursor:pointer}
.info-hint-popover{display:none;position:absolute;top:calc(100% + 8px);left:0;z-index:5;width:230px;padding:11px 13px;border-radius:11px;background:#242017;color:#f5f2ea;font-size:11px;font-weight:600;line-height:1.5;text-transform:none;letter-spacing:normal;box-shadow:0 14px 30px rgba(8,16,22,.28)}
.info-hint-wrap.open .info-hint-popover{display:block}.info-hint-wrap.open .info-hint{background:#d1aa24;color:#fff}
.finance-mobile-balances-editor{margin-top:12px;padding-top:12px;border-top:1px solid #ece8df}.finance-mobile-balances-editor summary{list-style:none;cursor:pointer;color:#8b8577;font-size:10px;font-weight:800}.finance-mobile-balances-editor summary::-webkit-details-marker{display:none}.finance-mobile-balances-editor[open] summary{color:#16877e;margin-bottom:11px}.finance-mobile-balances-editor form label{margin-bottom:10px}.finance-mobile-capital-baskets{display:grid;gap:8px}.finance-mobile-capital-basket{padding:12px;border:1px solid #e2ddd0;border-radius:11px;background:#fff}.finance-mobile-capital-basket>div{display:flex;align-items:center;justify-content:space-between;gap:8px}.finance-mobile-capital-basket strong{font-size:12px}.finance-mobile-capital-basket b{color:#16877e;font-size:12px}.finance-mobile-capital-basket>span{display:block;margin-top:7px;font-size:18px;font-weight:900}.finance-mobile-capital-basket small{display:block;margin-top:6px;color:#8b877b;font-size:9px;line-height:1.4}.finance-mobile-capital-basket small+small{padding-top:6px;border-top:1px solid #f0eee7}.finance-mobile-capital-new{color:#16877e!important;font-weight:750}.finance-mobile-portfolio-foot{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.finance-mobile-portfolio-foot span{padding:10px;border-radius:10px;background:#f4f1e9}.finance-mobile-portfolio-foot small,.finance-mobile-portfolio-foot b{display:block}.finance-mobile-portfolio-foot small{color:#8d887b;font-size:9px}.finance-mobile-portfolio-foot b{margin-top:3px;font-size:13px}.finance-mobile-freedom .finance-mobile-title>div+b{max-width:120px;text-align:right;font-size:12px}.finance-mobile-freedom .finance-mobile-progress{margin:12px 0}.finance-mobile-freedom .finance-mobile-pace-grid{grid-template-columns:1fr 1fr}
.finance-mobile-assets{display:grid;gap:9px}.finance-mobile-asset{padding:12px;border:1px solid #e2ddd0;border-radius:13px;background:#fff}.finance-mobile-asset>div:first-child{display:flex;justify-content:space-between;gap:10px}.finance-mobile-asset strong,.finance-mobile-asset small{display:block}.finance-mobile-asset strong{font-size:13px}.finance-mobile-asset small{margin-top:3px;color:#8c887e;font-size:9px}.finance-mobile-asset>div:first-child>b{color:#16877e;font-size:14px}.finance-mobile-asset p{margin:7px 0 0;color:#726f68;font-size:10px;line-height:1.4}.finance-mobile-asset-actions{display:flex;gap:7px;margin-top:10px}.finance-mobile-asset-actions button{height:32px;padding:0 12px;border:1px solid #d9d5cb;border-radius:9px;background:#f8f7f3;color:#4c514e;font-size:10px;font-weight:800}.finance-mobile-asset-actions button.danger{color:#bd4b4b}.finance-mobile-asset-reconcile{display:flex;gap:7px;margin-top:8px}.finance-mobile-asset-reconcile input,.finance-mobile-asset-reconcile select{flex:1;height:34px;border:1px solid #d9d5cb;border-radius:9px;padding:0 10px;color:#2b2a26;font-size:13px}.finance-mobile-asset-reconcile button{height:34px;padding:0 14px;border:0;border-radius:9px;background:#15857b;color:#fff;font-size:10px;font-weight:800}.finance-mobile-asset-editor{padding:0;overflow:hidden}.finance-mobile-asset-editor summary{display:flex;align-items:center;justify-content:space-between;padding:17px 18px;font-size:14px;font-weight:900;cursor:pointer;list-style:none}.finance-mobile-asset-editor summary::-webkit-details-marker{display:none}.finance-mobile-asset-editor summary b{display:grid;width:28px;height:28px;place-items:center;border-radius:9px;background:#edf5f3;color:#15857b;font-size:20px}.finance-mobile-asset-editor[open] summary{border-bottom:1px solid #ece8df}.finance-mobile-asset-editor form{padding:16px 18px 18px}.finance-mobile-asset-business{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px;margin-bottom:12px;border-radius:12px;background:#f5f1fb}.finance-mobile-asset-business label{margin:0}.finance-mobile-asset-buttons{display:grid;grid-template-columns:1fr auto;gap:8px}.finance-mobile-asset-buttons>button:last-child{min-width:88px;border:1px solid #d9d5cb;border-radius:12px;background:#fff;color:#6b6b65;font-weight:800}
.finance-mobile-distribution-lead{margin:0 0 12px;color:#8b877b;font-size:10px;line-height:1.5}.finance-mobile-distribution-title{display:block;margin:12px 0 6px;color:#5c5850;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.finance-mobile-distribution-error{margin:10px 0 0;padding:9px 12px;border-radius:10px;background:#fdf0f0;color:#b84343;font-size:10px;font-weight:700}
.finance-mobile-alloc-breakdown{display:flex;flex-direction:column;gap:7px}
.finance-mobile-alloc-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 12px;border-radius:10px;background:#f8f7f3}
.finance-mobile-alloc-main{display:flex;flex-direction:column;gap:2px;overflow:hidden;min-width:0}
.finance-mobile-alloc-label{color:#2b2a26;font-size:11px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.finance-mobile-alloc-values{color:#8c887e;font-size:10px;font-weight:600;white-space:nowrap}
.finance-mobile-alloc-deviation{flex-shrink:0;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:800}
.finance-mobile-alloc-deviation-ok{background:#eef2ef;color:#4c514e}
.finance-mobile-alloc-deviation-under{background:#fdf0f0;color:#b84343}
.finance-mobile-alloc-deviation-over{background:#eaf2fb;color:#2f6fb0}
#mobile-finance-distribution-form input[readonly]{background:#f1efe9;color:#8b877b}
.finance-mobile-tabs button{font-size:10px}.finance-mobile-acceleration-cost{margin:10px 0;padding:10px;border-radius:10px;background:#fff}.finance-mobile-acceleration-cost>strong,.finance-mobile-acceleration-cost>span{display:block}.finance-mobile-acceleration-cost>strong{font-size:10px;text-transform:uppercase;color:#846816}.finance-mobile-acceleration-cost>span{margin-top:4px;font-size:11px;font-weight:800}.finance-mobile-acceleration-cost>div{display:grid;grid-template-columns:repeat(2,1fr);gap:5px;margin-top:8px}.finance-mobile-acceleration-cost>div span{padding:6px;border-radius:7px;background:#fff7de;font-size:9px}.finance-mobile-scenario-weights{margin:5px 0 13px;padding:10px;border:1px solid #e3e0d8;border-radius:12px;background:#f7f5ef}.finance-mobile-scenario-weights>span{display:block;margin-bottom:8px;color:#858077;font-size:10px;text-transform:uppercase}.finance-mobile-scenario-weights>div{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.finance-mobile-scenario-weights label{margin:0}.finance-mobile-scenario-weights small{font-size:8px;color:#89857c}.finance-mobile-scenario-weights input{height:42px;padding:0 8px;font-size:13px}.finance-mobile-scenario-result .finance-mobile-title>b{max-width:125px;text-align:right;font-size:11px}.finance-mobile-scenario-horizons{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}.finance-mobile-scenario-horizon{padding:10px;border:1px solid #e2dfd7;border-radius:11px;background:#fbfaf7}.finance-mobile-scenario-horizon strong,.finance-mobile-scenario-horizon b,.finance-mobile-scenario-horizon small{display:block}.finance-mobile-scenario-horizon strong{font-size:9px;text-transform:uppercase;color:#77736a}.finance-mobile-scenario-horizon b{margin-top:4px;font-size:14px;color:#147b73}.finance-mobile-scenario-horizon small{margin-top:4px;font-size:8px;color:#949087;line-height:1.35}.finance-mobile-scenario-cost{margin-top:10px;padding:10px;border-radius:10px;background:#fff5d6;color:#715915;font-size:10px;line-height:1.4}
.finance-mobile-scenario-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin:10px 0 13px;padding:4px;border-radius:11px;background:#efede7}.finance-mobile-scenario-presets button{min-height:36px;padding:0 4px;border:0;border-radius:8px;background:transparent;color:#817d74;font-size:9px;font-weight:900}.finance-mobile-scenario-presets button.active{background:#fff;color:#117a72;box-shadow:0 2px 8px #332e2412}.finance-mobile-scenario-weights:nth-of-type(2)>div{grid-template-columns:repeat(2,1fr)}.finance-mobile-scenario-assumptions{margin:0 0 10px;color:#817d75;font-size:9px;font-weight:700;line-height:1.35}
.finance-mobile-scenario-weights:has(#mobile-finance-scenario-inflation)>div{grid-template-columns:repeat(2,1fr)}
.finance-mobile-portfolio-foot{grid-template-columns:1fr}

/* -------------------------------------------------------------- projects */

.proj-goal-list{display:flex;flex-direction:column;gap:12px}
.form-hint{margin:4px 0 0;color:var(--ink-soft);font-size:11px}
.proj-goal-category{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:999px;background:rgba(0,0,0,.08);color:#8a8578;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.proj-goal-card{margin-bottom:12px;padding:18px;border-radius:20px;background:var(--paper);color:#191919}
.proj-goal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.proj-goal-head-left{display:flex;align-items:flex-start;min-width:0;flex:1}
.proj-goal-title{margin:0;font-size:21px;font-weight:800;line-height:1.2}
.proj-goal-percent{flex-shrink:0;font-size:25px;font-weight:800;color:#16877e}
.proj-goal-toggle{width:30px;height:30px;flex-shrink:0;border:0;border-radius:8px;background:#f5c518;color:#1a1a1a;display:inline-flex;align-items:center;justify-content:center}
.proj-goal-toggle svg{display:block;transition:transform .15s ease}
.proj-goal-toggle.expanded svg{transform:rotate(180deg)}

.proj-segments{display:flex;gap:3px;margin:14px 0 10px}
.proj-segment{display:block;height:9px;border-radius:99px;background:#e7e4dc;overflow:hidden}
.proj-segment i{display:block;height:100%;background:#198a7e}

.proj-goal-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:#a39d90;font-size:11px}
.proj-goal-meta-actions{display:flex;align-items:center;gap:0}

.proj-divider{height:1px;margin:14px 0 12px;background:#ece8df}

.proj-node-icon{width:24px;height:24px;flex-shrink:0;border:0;border-radius:7px;background:transparent;color:#b9b4a6;font-size:12px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.proj-node-icon:active{background:rgba(0,0,0,.06)}
.proj-node-icon.danger{color:#c99}
.proj-node-icon.is-planned{color:#198a7e}
.project-node-plan-today{position:relative;display:inline-flex}
.project-node-plan-today-input{position:absolute;inset:0;width:24px;height:24px;opacity:0;pointer-events:none;border:0}

.project-today-nav{display:flex;align-items:center;gap:6px;margin-bottom:0;flex:1;min-width:0}
.project-today-nav input[type=date]{flex:1;min-width:0;height:36px;padding:0 8px;border:1px solid var(--ink-line);border-radius:9px;background:var(--paper);color:#2b2a26;font-size:12px;font-weight:700}
.project-today-add-row{margin-bottom:12px}
.project-today-add-form{display:flex;gap:8px;margin-top:8px}
.project-today-add-form input[type=text]{flex:1;min-width:0;height:36px;padding:0 12px;border:1px solid var(--ink-line);border-radius:9px;background:var(--paper);color:#2b2a26;font-size:13px}
.project-today-list{display:flex;flex-direction:column;gap:8px}
.project-today-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 13px;border:1px solid #e3e1db;border-left:3px solid #e3e1db;border-radius:13px;background:#fbfaf7}
.project-today-row-goal{border-left-color:#198a7e}
.project-today-row-free{border-left-color:#b7b2a4}
.project-today-row.done{opacity:.55}
.project-today-row.done .project-today-title{text-decoration:line-through;color:#92908a}
.project-today-row label{display:flex;align-items:center;gap:10px;cursor:pointer;min-width:0}
.project-today-left{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.project-today-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}
.project-today-row input[type=checkbox]{width:18px;height:18px;accent-color:#198a7e;flex-shrink:0}
.project-today-title{font-size:13px;color:#2b2a26;font-weight:600}
.proj-today-postpone{position:relative;display:inline-flex;flex-shrink:0}
.proj-today-postpone-input{position:absolute;inset:0;width:24px;height:24px;opacity:0;pointer-events:none;border:0}
.project-today-breadcrumb{color:#92908a;font-size:10px;white-space:nowrap;flex-shrink:0}
.proj-goal-shelved-chip{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:999px;background:#efe6d8;color:#8a6a2f;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}

.proj-tree{list-style:none;margin:0;padding:0}
.proj-node{margin-bottom:10px}
.proj-node:last-child{margin-bottom:0}
.proj-node-leaf:not(:first-child){padding-top:10px;border-top:1px dashed #ece8df}

.proj-node-card{border:1px solid #e5e1d7;border-radius:12px;background:#fff;padding:10px 12px}
.proj-tree-block{margin-top:10px;padding-top:10px;border-top:1px solid #ece8df}

.proj-tree-block .proj-node-card{background:#f7f5ef;border-color:#e9e4d7}
.proj-tree-block .proj-tree-block .proj-node-card{background:#efeade;border-color:#e2dbc9}

.proj-node-row{display:flex;align-items:center;gap:6px;min-height:28px}
.proj-node-handle{flex-shrink:0;color:#c1bcaf;font-size:15px;line-height:1;padding:4px 2px;touch-action:none;letter-spacing:-1px}
.proj-node.dragging{opacity:.4}
.proj-node.drop-before>.proj-node-row,
.proj-node.drop-before>.proj-node-card>.proj-node-row{box-shadow:inset 0 3px 0 0 #198a7e}
.proj-node.drop-after>.proj-node-row,
.proj-node.drop-after>.proj-node-card>.proj-node-row{box-shadow:inset 0 -3px 0 0 #198a7e}
.proj-node-checkbox{width:21px;height:21px;flex-shrink:0;accent-color:#198a7e}
.proj-node-badge{flex-shrink:0;margin:0;font-size:14.5px;font-weight:800;color:#16877e}
.proj-node-title{flex:1;min-width:0;font-size:16px;font-weight:700;line-height:1.3;overflow-wrap:anywhere}
.proj-node.done>.proj-node-row .proj-node-title{color:#a7a49c;font-weight:500;text-decoration:line-through}

.proj-tree-block .proj-node-title{font-size:13.5px;font-weight:600;color:#55524a}
.proj-tree-block .proj-node-badge{font-size:12px;font-weight:700;color:#5c8f7f}

.proj-tree-block .proj-tree-block .proj-node-title{font-size:12.5px;font-weight:500;color:#7a766c}
.proj-tree-block .proj-tree-block .proj-node-badge{font-size:11px;font-weight:700;color:#7fa898}
.proj-node-sub{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;margin:2px 0 0 28px}
.proj-node-actions{display:flex;align-items:center;gap:0}
.proj-node-meta{color:#a39d90;font-size:10.5px}
.proj-tree-empty{margin:8px 0 0;color:#96938b;font-size:11px}

.proj-mic-btn{flex-shrink:0;width:44px;height:44px;border:1px solid #dddcd7;border-radius:12px;background:#fff;color:#5c6b72;font-size:18px}
.proj-mic-btn.listening{background:#198a7e;color:#fff;animation:proj-mic-pulse 1s ease-in-out infinite}
@keyframes proj-mic-pulse{0%,100%{box-shadow:0 0 0 0 rgba(25,138,126,.45)}50%{box-shadow:0 0 0 8px rgba(25,138,126,0)}}

#projects-goal-panel label,#projects-node-panel label{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
#projects-goal-panel label>span,#projects-node-panel label>span{font-size:11px;color:#8a8985;text-transform:uppercase;letter-spacing:.08em}
#projects-goal-panel input,#projects-goal-panel select,#projects-node-panel input,#projects-node-panel select{width:100%;height:48px;border:1px solid #dddcd7;border-radius:13px;background:#fff;padding:0 12px;font-size:15px;color:#1d1d1b}
#projects-goal-panel input:focus,#projects-node-panel input:focus{border-color:#d1aa24;box-shadow:0 0 0 3px rgba(209,170,36,.14);outline:none}
#projects-goal-panel .finance-mobile-check,#projects-node-panel .finance-mobile-check{flex-direction:row!important;align-items:center!important;margin-bottom:14px}
#projects-goal-panel .btn-primary,#projects-node-panel .btn-primary{width:100%;min-height:49px;margin-top:4px}
.proj-voice-row{display:flex;gap:8px;align-items:center;margin-bottom:12px}
.proj-voice-row input{flex:1;height:48px;border:1px solid #dddcd7;border-radius:13px;background:#fff;padding:0 12px;font-size:15px;color:#1d1d1b}
.proj-voice-row input:focus{border-color:#d1aa24;box-shadow:0 0 0 3px rgba(209,170,36,.14);outline:none}
#projects-goal-panel textarea,#projects-node-panel textarea{width:100%;min-height:80px;padding:10px 12px;border:1px solid #dddcd7;border-radius:13px;background:#fff;color:#1d1d1b;font-family:inherit;font-size:14px;resize:vertical}
#projects-comment-text{width:100%;min-height:120px;margin:12px 0;padding:12px;border:1px solid var(--paper-dim);border-radius:13px;background:#171717;color:var(--paper);font-family:inherit;font-size:14px;resize:vertical}

/* Category picker search */
.category-picker-search{width:100%;height:44px;margin:0 0 10px;padding:0 12px;border:1px solid #dddcd7;border-radius:12px;background:#fff;font-size:15px;color:#1d1d1b}
.category-picker-search:focus{border-color:#d1aa24;box-shadow:0 0 0 3px rgba(209,170,36,.14);outline:none}
.picker-hidden{display:none!important}

.day-menu{position:fixed;z-index:1200;display:flex;flex-direction:column;min-width:170px;padding:4px;border:1px solid #e3e1db;border-radius:12px;background:#fff;box-shadow:0 8px 24px rgba(0,0,0,.18)}
.day-menu button{padding:11px 12px;border:0;border-radius:8px;background:none;color:#2b2a26;font-size:14px;font-weight:600;text-align:left}
.day-menu button:active{background:#f2efe8}
.day-menu .day-menu-danger{color:#b3261e}
