/* Clear labels, comfortable reading size and generous targets for station owners.
   Keep customer viewport rules separate. Owners can scroll through their reports. */
.finance-hint { display: block; margin-top: 5px; font-size: 12px; color: #526654; }
.owner-portal { --muted: #506354; font-size: 16px; line-height: 1.7; }
.owner-portal .eyebrow, .owner-portal .sidebar > small { display: none; }
.owner-portal .sidebar .nav { min-height: 48px; padding: 12px 10px; font-size: 15px; line-height: 1.5; }
.owner-portal .sidebar .nav .ui-icon { width: 22px; height: 22px; }
.owner-portal .sidebar-bottom { font-size: 15px; }
.owner-portal .sidebar-bottom p { font-size: 14px; }
.owner-portal .text-button, .owner-portal .button { font-size: 16px; min-height: 48px; padding: 11px 16px; line-height: 1.5; }
.owner-portal #logout, .owner-portal #ops-menu-logout { width: 100%; margin-top: 12px; border: 1px solid #ccd7c8; border-radius: 10px; }
.owner-portal .page-heading h1 { font-size: 32px; }
.owner-portal .page-heading p { font-size: 16px; margin-top: 10px; }
.owner-portal .pill { font-size: 13px; padding: 6px 10px; }
.owner-portal #overview-view > .metrics:not(#money-overview) { display: none; }
.owner-portal .metrics .financial-tile { padding: 22px; min-width: 0; }
.owner-portal .financial-tile > span { font-size: 16px; gap: 9px; line-height: 1.5; align-items: flex-start; }
.owner-portal .financial-tile .ui-icon { width: 22px; height: 22px; margin-top: 1px; }
.owner-portal .financial-tile > strong { font-size: clamp(28px, 2.8vw, 38px); font-weight: 700; line-height: 1.5; margin-top: 10px; overflow-wrap: anywhere; letter-spacing: -.7px; }
.owner-portal .financial-tile .finance-hint { font-size: 14px; line-height: 1.6; margin-top: 5px; }
.owner-portal .finance-metrics .financial-tile:first-child .finance-hint { color: #e1ecd8; }
#owner-shortcuts:not([hidden]) { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 22px 0; }
#owner-shortcuts a { display: flex; align-items: center; gap: 12px; min-height: 68px; padding: 16px; border: 1px solid #ccd9c6; border-radius: 14px; background: #fff; font-size: 16px; font-weight: 600; }
#owner-shortcuts .ui-icon { width: 26px; height: 26px; color: #246248; }
#owner-shortcuts a:hover { background: #edf4e6; border-color: #50794a; }
.owner-portal .site-card, .owner-portal .settings-card { padding: 26px; }
.owner-portal .site-card h2, .owner-portal .settings-card h2 { font-size: 23px; }
.owner-portal .site-card p, .owner-portal .settings-card p, .owner-portal .small-note { font-size: 15px; }
.owner-portal .device-row strong { font-size: 18px; }
.owner-portal .device-row small { font-size: 14px; line-height: 1.7; overflow-wrap: anywhere; }
.owner-portal .device-row > div:first-child { min-width: 0; }
.owner-portal .device-row { flex-wrap: wrap; gap: 16px; }
.owner-portal .settings-card label, .owner-portal .report-period, .owner-portal .bank-picker legend { font-size: 16px; }
.owner-portal .settings-card input:not([type=checkbox]):not([type=radio]),
.owner-portal .settings-card select, .owner-portal .settings-card textarea { min-height: 50px; font-size: 17px; padding: 13px; }
.owner-portal label small { font-size: 14px; line-height: 1.7; }
.owner-portal .setup-guide > summary h2 { font-size: 19px; }
.owner-portal .setup-check { font-size: 15px; padding: 16px 0; }
.owner-portal .setup-check span:last-child { font-size: 14px; }
.owner-portal .status-dot, .owner-portal .fleet-key { font-size: 14px; }
.owner-portal .status-dot.fault { color: #8b2f20; background: #fff0ea; }
.owner-portal .status-dot.offline, .owner-portal .status-dot.occupied { color: #76521d; }
.owner-portal .status-dot.disabled, .owner-portal .status-dot.unknown { color: #495846; }
.owner-portal button:focus-visible, .owner-portal a:focus-visible,
.owner-portal input:focus-visible, .owner-portal select:focus-visible,
.owner-portal summary:focus-visible { outline: 3px solid #246248; outline-offset: 3px; }
.owner-portal .fleet-device b { font-size: 18px; }
.owner-portal .fleet-device p, .owner-portal .fleet-device > small { font-size: 14px; }
.owner-portal .fleet-device .button { font-size: 15px; }
.owner-portal .bank-choice-name, .owner-portal .bank-picker-status { font-size: 15px !important; }
.owner-portal .member-report b, .owner-portal .credit-report-row span > b { font-size: 16px; }
.owner-portal .member-report p, .owner-portal .credit-report-row small { font-size: 14px; }
.owner-portal .member-money > b, .owner-portal .credit-report-row strong { font-size: 18px; }
.owner-portal .member-money > small { font-size: 13px; }
.owner-portal .credit-report-row { min-height: 64px; }
.owner-portal .table-wrap th, .owner-portal .table-wrap td { font-size: 15px; padding: 16px; }
.owner-portal .table-wrap td small { font-size: 13px; }
.owner-portal .kkm-alert .swal2-title { font-size: 26px; }
.owner-portal .kkm-alert .swal2-html-container, .owner-portal .modal-template label,
.owner-portal .modal-template p { font-size: 16px; }
.owner-portal .kkm-alert .swal2-styled { font-size: 17px; min-height: 50px; }
.owner-portal .ops-menu-links a { min-height: 56px; font-size: 16px; }
.owner-portal .ops-menu-links .ui-icon { width: 24px; height: 24px; }
.owner-portal .ops-menu-links a:hover { background: #edf4e6; }
.owner-portal .auth-form label { font-size: 16px; }
.owner-portal .auth-form input:not([data-mfa-digit]) { min-height: 50px; font-size: 17px; }
.owner-portal .auth-form > p, .owner-portal .auth-form label small { font-size: 15px; }
.fleet-total { font-size: 17px; font-weight: 600; margin-bottom: 16px; }
.fleet-filters { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: start; gap: 12px; padding: 20px; margin: 20px 0; }
.fleet-filters > label:first-child { grid-column: 1 / -1; }
#fleet-extra-filters > summary { cursor: pointer; min-height: 48px; display: flex; align-items: center; gap: 7px; font-size: 16px; }
#fleet-extra-filters > summary:after { content: '⌄'; margin-left: auto; }
#fleet-extra-filters[open] > summary:after { content: '⌃'; }
.fleet-filter-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; }
#fleet-filter-badge { color: #194e3c; font-weight: 700; }
.fleet-filters label { font-size: 15px; }
.fleet-filters input, .fleet-filters select { font-size: 16px; min-height: 48px; }
.fleet-filters .button { min-height: 48px; }
#fleet-counts .fleet-key { font: inherit; font-size: 14px; min-height: 46px; cursor: pointer; }
#fleet-counts .fleet-key.selected { border-color: #194e3c; box-shadow: inset 0 0 0 1px #194e3c; background: #eaf3e2; }
.fleet-layout { grid-template-columns: 1fr; gap: 10px; }
#fleet-map-panel { padding: 18px; }
#fleet-map-panel > summary { cursor: pointer; font-size: 17px; min-height: 34px; }
#fleet-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }
#fleet-list .fleet-device { margin: 0; min-width: 0; }
#fleet-results { margin: 4px 0 12px; font-size: 15px; scroll-margin-top: 80px; }
.fleet-device-details { color: #506354; font-size: 14px; }
.fleet-device-details summary { cursor: pointer; padding: 8px 0; min-height: 40px; }
.fleet-device > div:first-child { flex-wrap: wrap; }
.fleet-pagination { display: flex; align-items: center; justify-content: center; gap: 15px; margin: 20px 0; }
.fleet-pagination button { min-height: 48px; font-size: 16px; }
.fleet-pagination span { font-size: 15px; white-space: nowrap; }
.owner-sites-heading { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin: 26px 0 18px; }
.owner-sites-heading h2 { font-size: 23px; }
.owner-site-summary { padding: 24px; }
.owner-site-summary h2 { font-size: 22px; }
.owner-site-summary > p { font-size: 16px; color: #506354; margin: 8px 0 16px; }
.owner-site-status { display: flex; flex-wrap: wrap; gap: 12px; font-size: 15px; }
.owner-site-status > span { padding: 8px 12px; border-radius: 9px; background: #eff4e8; }
.owner-site-status b { margin-left: 8px; }
.owner-site-summary .button-row { margin-top: 16px; }
.report-filter { padding: 22px; margin-bottom: 16px; }
.report-filter .report-period { margin: 0; }
.report-filter .report-period select { max-width: 300px; font-size: 16px; min-height: 48px; }
.report-filter .form-grid { max-width: 600px; margin-top: 20px; }
.report-filter .form-grid label { font-size: 16px; }
.report-filter input { min-height: 48px; font-size: 16px; }
.report-filter .button { margin-top: 16px; min-height: 48px; }
.report-range-label { font-size: 17px; font-weight: 600; margin: 16px 0 8px; }
.report-equipment-fields { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; margin-top: 18px; }
.report-equipment-fields label { font-size: 16px; }
.report-equipment-fields select { font-size: 16px; min-height: 50px; }
.report-scope-heading { display: flex; align-items: center; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin: 16px 0; }
#report-scope-label { font-size: 18px; font-weight: 650; overflow-wrap: anywhere; }
.revenue-breakdown { padding: 24px; margin: 22px 0; }
.revenue-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-bottom: 18px; }
.revenue-heading h2 { font-size: 23px; }
.revenue-heading label { font-size: 15px; }
.revenue-heading select { min-height: 48px; font-size: 16px; }
.revenue-search { display: block; font-size: 16px; }
.revenue-search input { min-height: 50px; font-size: 16px; }
#revenue-point-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.revenue-point { display: grid; grid-template-columns: minmax(0,1fr) auto 18px; gap: 9px 12px; align-items: center; width: 100%; text-align: left; font: inherit; padding: 20px 16px; color: #194e3c; background: #f8fbf4; border: 1px solid #d6e2ce; border-radius: 13px; min-height: 110px; }
.revenue-point:hover { background: #edf4e5; border-color: #557a4d; }
.revenue-point-name { min-width: 0; }
.revenue-point-name b { display: block; font-size: 17px; overflow-wrap: anywhere; }
.revenue-point small { display: block; font-size: 14px; color: #506354; line-height: 1.6; margin-top: 5px; overflow-wrap: anywhere; }
.revenue-point-money { text-align: right; }
.revenue-point-money strong { font-size: 23px; overflow-wrap: anywhere; }
.revenue-point-stats { grid-column: 1 / 3; font-size: 14px; color: #506354; }
.revenue-point-arrow { grid-column: 3; grid-row: 1 / 3; font-size: 27px; }
.report-wallet { padding: 22px; margin: 22px 0; }
.report-wallet > summary { cursor: pointer; font-size: 18px; min-height: 40px; }
.report-wallet h2 { font-size: 21px; margin: 20px 0 12px; }
.report-wallet > .button { margin-bottom: 14px; }
#report-wallet-cards { grid-template-columns: repeat(3,minmax(0,1fr)); }
a[aria-disabled="true"] { opacity: .5; cursor: wait; }
@media (max-width: 1100px) {
  #owner-shortcuts:not([hidden]) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .owner-portal .financial-tile > strong { font-size: 32px; }
  .fleet-filters { grid-template-columns: minmax(0,1fr) auto; }
}
@media (max-width: 700px) {
  .owner-portal:has(#app-view:not([hidden])) { padding-bottom: calc(90px + env(safe-area-inset-bottom)); }
  .owner-portal main { padding: 18px 16px; }
  .owner-portal .page-heading { margin: 12px 0 24px; }
  .owner-portal .page-heading h1 { font-size: 29px; }
  .owner-portal .page-heading p { font-size: 16px; line-height: 1.7; }
  .owner-portal #money-overview, .owner-portal #financial-report-cards { grid-template-columns: 1fr; gap: 14px; }
  .owner-portal .metrics .financial-tile { padding: 19px 22px; }
  .owner-portal .financial-tile > strong { font-size: 36px; margin-top: 5px; }
  .owner-portal .financial-tile > span { font-size: 17px; }
  .owner-portal .financial-tile .finance-hint { font-size: 14px; }
  #owner-shortcuts:not([hidden]) { gap: 10px; }
  #owner-shortcuts a { flex-direction: column; text-align: center; justify-content: center; padding: 16px 9px; min-height: 108px; font-size: 16px; line-height: 1.6; gap: 9px; }
  .owner-portal .site-card, .owner-portal .settings-card { padding: 22px 18px; }
  .owner-portal .site-heading { flex-wrap: wrap; }
  .owner-portal .device-actions { display: grid; grid-template-columns: 1fr; }
  .owner-portal .device-actions .button { text-align: center; }
  .owner-portal .setup-check { flex-wrap: wrap; gap: 10px; }
  .owner-portal .setup-check span:last-child { text-align: left; margin-left: 38px; max-width: none; flex-basis: calc(100% - 38px); }
  .owner-portal #mobile-ops-nav { height: calc(78px + env(safe-area-inset-bottom)); }
  .owner-portal #mobile-ops-nav > a, .owner-portal #mobile-ops-nav > button { font-size: 14px; min-height: 58px; gap: 5px; }
  .owner-portal #mobile-ops-nav .ui-icon { width: 24px; height: 24px; }
  .owner-portal .bank-options { grid-template-columns: 1fr; }
  .owner-portal .settings-card .bank-choice { grid-template-columns: 44px minmax(0, 1fr) 20px; gap: 12px; padding: 14px; }
  .owner-portal .bank-choice .bank-icon { width: 44px; height: 44px; }
  .owner-portal .ops-menu-links { grid-template-columns: 1fr; }
  .owner-portal .member-report { flex-wrap: wrap; gap: 12px; }
  .owner-portal .member-money { margin-left: 0; flex-basis: 100%; text-align: left; padding-top: 8px; border-top: 1px solid var(--line); }
  .owner-portal .report-period { display: block; }
  .owner-portal .report-period select { max-width: none; margin-top: 8px; min-height: 50px; font-size: 17px; }
  .fleet-filters { padding: 18px; gap: 12px; }
  .owner-portal #fleet-map-panel { padding: 0 4px; background: transparent; border: 0; box-shadow: none; }
  .owner-portal #fleet-map-panel > summary { min-height: 44px; display: flex; align-items: center; }
  .owner-portal #fleet-map-panel > summary:after { content: '⌄'; margin-left: auto; }
  .owner-portal #fleet-map-panel[open] > summary:after { content: '⌃'; }
  .fleet-filter-fields { grid-template-columns: 1fr; }
  .fleet-filters .button { padding: 11px 12px; }
  #fleet-list { grid-template-columns: 1fr; }
  .fleet-pagination { gap: 8px; }
  .fleet-pagination .button { padding: 10px 12px; }
  .fleet-pagination span { font-size: 14px; }
  .owner-site-summary { padding: 22px 18px; }
  .owner-site-summary .button-row { flex-direction: column; align-items: stretch; }
  .report-filter { padding: 18px; }
  .report-filter .report-period select { max-width: none; }
  .report-filter .form-grid { grid-template-columns: 1fr; }
  .report-filter .button { width: 100%; }
  .report-equipment-fields { grid-template-columns: 1fr; gap: 14px; }
  .revenue-breakdown, .report-wallet { padding: 20px 16px; }
  .revenue-heading { align-items: stretch; }
  .revenue-heading label { width: 100%; font-size: 16px; }
  #revenue-point-list { grid-template-columns: 1fr; }
  .revenue-point { grid-template-columns: minmax(0,1fr) 18px; padding: 18px 15px; }
  .revenue-point-money { text-align: left; grid-column: 1; }
  .revenue-point-money strong { font-size: 27px; }
  .revenue-point-stats { grid-column: 1; }
  .revenue-point-arrow { grid-column: 2; grid-row: 1 / 4; }
  #report-wallet-cards { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  #owner-shortcuts a { transition: none; }
}
