/* Панель администратора.
   Раздел бывшего ui-fixes-20260926.css (порядок правил внутри раздела прежний; разложено tools/css-sections.py). */
/* UI review of the 25 September Test screen catalog. Keep taxi state changes in JS. */
.admin-body #pricing .tariff-search-label,
.admin-body #pricing .tariff-status-label {
  display:grid;gap:4px;min-width:0;color:var(--787-muted);font-size:12px;font-weight:700;
}
.admin-body #pricing .tariff-search-label{flex:1 1 220px}
.admin-body #pricing .tariff-status-label{flex:0 1 170px}
.admin-body #pricing .tariff-search-label input,
.admin-body #pricing .tariff-status-label select{box-sizing:border-box;width:100%;min-width:0;min-height:44px;font-size:15px}
.admin-body #pricing #tariff-list{display:grid;gap:0;overflow:visible;border:1px solid var(--787-line);border-radius:12px;background:#fff}
.admin-body #pricing .tariff-direction-row{min-width:0;border-bottom:1px solid var(--787-line)}
.admin-body #pricing .tariff-direction-row:last-child{border-bottom:0}
.admin-body #pricing .tariff-direction-row[open]{background:#f8fbfd}
.admin-body #pricing .tariff-direction-summary{display:grid;grid-template-columns:minmax(0,1fr) auto auto 20px;align-items:center;gap:10px;min-height:58px;padding:9px 13px;cursor:pointer;list-style:none}
.admin-body #pricing .tariff-direction-summary::-webkit-details-marker{display:none}
.admin-body #pricing .tariff-direction-summary:hover{background:var(--787-soft)}
.admin-body #pricing .tariff-direction-summary:focus-visible{outline:3px solid var(--787-blue-2);outline-offset:-3px}
.admin-body #pricing .tariff-direction-route{min-width:0;overflow-wrap:anywhere;font-size:14px;line-height:1.3}
.admin-body #pricing .tariff-direction-price{white-space:nowrap;font-weight:800;font-variant-numeric:tabular-nums}
.admin-body #pricing .tariff-direction-status{padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}
.admin-body #pricing .tariff-direction-status.is-published{color:#176548;background:#e6f6ed}
.admin-body #pricing .tariff-direction-status.is-draft{color:#755420;background:#fff2d7}
.admin-body #pricing .tariff-direction-chevron{font-size:24px;line-height:1;transition:transform .15s}
.admin-body #pricing .tariff-direction-row[open] .tariff-direction-chevron{transform:rotate(90deg)}
.admin-body #pricing .tariff-direction-detail{display:grid;gap:12px;padding:12px 13px 16px;border-top:1px solid var(--787-line)}
.admin-body #pricing .tariff-direction-values>small{display:block;margin-bottom:8px;color:var(--787-muted)}
.admin-body #pricing .tariff-direction-values dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin:0}
.admin-body #pricing .tariff-direction-values dl>div{display:grid;gap:2px;padding:9px;border:1px solid var(--787-line);border-radius:9px;background:#fff}
.admin-body #pricing .tariff-direction-values dt{font-size:12px;color:var(--787-muted)}
.admin-body #pricing .tariff-direction-values dd{margin:0;font-weight:800;font-variant-numeric:tabular-nums}
.admin-body #pricing .tariff-direction-detail .route-path-editor{margin:0}
.admin-body #pricing #tariff-direction-pager{margin:12px 0}
.admin-body #pricing .dynamic-price-basics{display:grid;grid-template-columns:1fr;gap:14px}
.admin-body #pricing .dynamic-price-group{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;min-width:0;padding:12px 0;border-bottom:1px solid var(--787-line)}
.admin-body #pricing .dynamic-price-group h4{grid-column:1/-1;margin:0 0 2px;font-size:15px}
.admin-body #pricing .dynamic-price-group label{min-width:0}
.admin-body #pricing .dynamic-price-values-heading{margin:14px 0 2px;font-size:15px}
.admin-body #pricing .dynamic-price-summary{margin:8px 0;padding:11px 13px;border-left:3px solid var(--787-blue-2);border-radius:8px;background:var(--787-soft);font-size:13px;line-height:1.4}
@media(max-width:759px){
  .admin-body #pricing .tariff-filters{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .admin-body #pricing .tariff-search-label{grid-column:1/-1;grid-row:2}
  .admin-body #pricing .tariff-status-label{grid-column:1/-1;grid-row:3}
  .admin-body #pricing #tariff-load{grid-column:1/-1;grid-row:4}
  .admin-body #pricing .tariff-direction-summary{grid-template-columns:minmax(0,1fr) auto 18px;gap:5px 8px;min-height:58px;padding:9px 10px}
  .admin-body #pricing .tariff-direction-route{grid-column:1/-1;padding-right:24px}
  .admin-body #pricing .tariff-direction-price{grid-column:1;grid-row:2}
  .admin-body #pricing .tariff-direction-status{grid-column:2;grid-row:2}
  .admin-body #pricing .tariff-direction-chevron{grid-column:3;grid-row:2}
  .admin-body #pricing .tariff-direction-values dl{grid-template-columns:repeat(2,minmax(0,1fr))}
  .admin-body #pricing .tariff-direction-values dl>div:first-child{grid-column:1/-1}
  .admin-body #pricing .dynamic-price-group{grid-template-columns:1fr}
  .admin-body #pricing .dynamic-price-form{padding-bottom:16px}
  .admin-body #pricing .dynamic-price-form>.form-actions{position:static;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin:12px 0 0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
  .admin-body #pricing .dynamic-price-form>.form-actions button{min-width:0;white-space:normal}
}
@media(max-width:1179px){
  body.admin-body:has(#trips.admin-page-active > .admin-trip-detail){overflow:hidden}
  body.admin-body #trips > .admin-trip-detail{position:fixed!important;inset:0!important;z-index:230!important;box-sizing:border-box;width:100%!important;height:calc(var(--app-vh, 1vh) * 100)!important;height:100dvh!important;max-height:none!important;margin:0!important;padding:0 16px max(24px,env(safe-area-inset-bottom))!important;overflow-y:auto!important;overflow-x:hidden!important;border:0!important;border-radius:0!important;background:var(--787-bg)!important;box-shadow:none!important;display:block!important}
  body.admin-body #trips > .admin-trip-detail > .section-head{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:56px;margin:0 -16px 10px!important;padding:8px 16px!important;background:var(--787-blue);color:#fff}
  body.admin-body #trips > .admin-trip-detail > .section-head h3{min-width:0;margin:0;color:#fff;font-size:17px;overflow-wrap:anywhere}
  body.admin-body #trips > .admin-trip-detail > .section-head .admin-trip-back{flex:0 0 auto;min-height:44px;color:#fff!important;border-color:#ffffff55!important;background:#ffffff18!important}
  body.admin-body #trips > .admin-trip-detail > .admin-record-tabs{position:sticky!important;top:56px!important;z-index:19!important}
  body.admin-body #trips > .admin-trip-detail > .admin-subtab-panel{display:grid;min-height:0;overflow:visible!important;padding-bottom:18px}
  body.admin-body #trips > .admin-trip-detail > .admin-subtab-panel[hidden]{display:none!important}
}
/* Polygon editing on a phone uses the whole viewport and a separate settings sheet. */
.admin-body .area-map-mobile-launch,.admin-body .area-map-mobile-controls{display:none}
@media(max-width:759px){
  body.admin-body .area-task-head{top:56px!important;z-index:45!important}
  body.admin-body .area-map-mobile-launch{display:inline-flex;min-height:44px}
  body.admin-body.area-map-mobile-lock{overflow:hidden!important}
  body.admin-body .area-map-workspace.area-map-mobile-fullscreen{position:fixed!important;inset:0!important;z-index:1000!important;display:block!important;box-sizing:border-box;width:100vw;height:calc(var(--app-vh, 1vh) * 100);height:100dvh;margin:0!important;padding:0!important;overflow:hidden;background:#f3f6f9}
  body.admin-body .area-map-mobile-fullscreen :is(.area-map-toolbar,.area-map-directory,.area-task-head){display:none!important}
  body.admin-body .area-map-mobile-fullscreen .area-map-layout,
  body.admin-body .area-map-mobile-fullscreen .area-map-workbench,
  body.admin-body .area-map-mobile-fullscreen .area-map-stage{display:block!important;width:100%;height:100%;margin:0!important;padding:0!important}
  body.admin-body .area-map-mobile-fullscreen .area-map-canvas{width:100%!important;height:calc(var(--app-vh, 1vh) * 100)!important;height:100dvh!important;min-height:0!important}
  body.admin-body .area-map-mobile-fullscreen .area-map-mobile-controls{position:fixed;z-index:1010;top:calc(8px + env(safe-area-inset-top));right:8px;left:56px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}
  body.admin-body .area-map-mobile-fullscreen .area-map-mobile-controls button{min-width:0;min-height:44px;padding:7px 10px;line-height:1.2;white-space:normal;box-shadow:0 2px 12px #17314733}
  body.admin-body .area-map-mobile-fullscreen .area-map-legend{position:fixed;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));left:8px;z-index:1005;max-height:70px;overflow:auto;background:#fffffff0}
  body.admin-body .area-map-mobile-fullscreen .area-map-editor:not([hidden]){display:none!important}
  body.admin-body .area-map-mobile-fullscreen.area-map-mobile-params-open .area-map-editor:not([hidden]){position:fixed;z-index:1015;right:0;bottom:0;left:0;display:block!important;box-sizing:border-box;width:100%;max-height:calc(var(--app-vh, 1vh) * 72);max-height:72dvh;padding:14px 12px calc(20px + env(safe-area-inset-bottom));overflow-y:auto;border-radius:18px 18px 0 0;background:#fff;box-shadow:0 -12px 40px #17314745}
  body.admin-body .area-map-mobile-fullscreen .area-map-status{display:none}
  body.admin-body .area-map-mobile-fullscreen .area-map-status:is(.warning,.error){position:fixed;z-index:1012;top:calc(69px + env(safe-area-inset-top));right:10px;left:10px;display:block;padding:8px 11px;border-radius:9px;background:#fff6e4;box-shadow:0 2px 10px #17314722}
}
@media(max-width:759px){
  body.admin-body #trips > .admin-trip-detail{display:block!important;overflow-y:auto!important}
  body.admin-body #trips > .admin-trip-detail > .admin-subtab-panel{flex:none!important;overflow:visible!important}
}

/* A tablet gets labelled navigation on demand instead of an unexplained icon rail. */
@media(min-width:760px) and (max-width:1099px){
  body.admin-body .admin-menu-toggle{display:inline-grid!important;place-items:center;width:44px;height:44px;min-width:44px;padding:0}
  body.admin-body .admin-drawer-shade{display:none;position:fixed;inset:0;z-index:210;border:0;border-radius:0;background:rgba(7,21,35,.52)}
  body.admin-body.admin-drawer-open .admin-drawer-shade{display:block!important}
  body.admin-body.admin-drawer-open .workspace-rail{z-index:220!important;width:min(286px,80vw)!important;box-shadow:12px 0 32px #07172455}
  body.admin-body.admin-drawer-open .workspace-rail .workspace-label,
  body.admin-body.admin-drawer-open .workspace-rail .workspace-brand>span{display:block!important}
  body.admin-body.admin-drawer-open .workspace-group-label{height:auto;margin:0;padding:13px 10px 5px;border:0;font-size:10px;line-height:1.4}
}

.admin-body .finance-direction{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-width:0;margin:0 0 12px;padding:0;border:0}
.admin-body .finance-direction legend{grid-column:1/-1;width:100%;margin-bottom:6px;padding:0;font-size:14px;font-weight:800}
.admin-body .finance-direction label{display:flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:8px 12px;border:1px solid var(--787-line);border-radius:10px;background:#fff;cursor:pointer}
.admin-body .finance-direction label:has(input:checked){border-color:var(--787-blue-2);background:var(--787-soft);color:var(--787-blue)}
.admin-body .finance-direction label:has(input:focus-visible){outline:3px solid var(--787-blue-2);outline-offset:2px}
.admin-body .finance-direction input{width:18px;height:18px;margin:0;accent-color:var(--787-blue-2)}
.admin-body .finance-quick-amounts button{min-height:44px}

/* Boolean operational settings are explicit switches with a full-row touch target. */
body.admin-body #features .feature-toggle{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:56px;padding:10px 12px;cursor:pointer}
body.admin-body #features .feature-toggle>span{order:1;min-width:0;line-height:1.35}
body.admin-body #features .feature-toggle>input[type="checkbox"]{order:2;flex:0 0 auto;appearance:none;position:relative;width:46px;height:28px;min-width:46px;margin:0;border:1px solid #9babb8;border-radius:999px;background:#c5d0d8;cursor:pointer;transition:background .15s,border-color .15s}
body.admin-body #features .feature-toggle>input[type="checkbox"]::before{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #17314755;transition:transform .15s}
body.admin-body #features .feature-toggle>input[type="checkbox"]:checked{border-color:var(--787-blue-2);background:var(--787-blue-2)}
body.admin-body #features .feature-toggle>input[type="checkbox"]:checked::before{transform:translateX(18px)}
body.admin-body #features .feature-toggle>input[type="checkbox"]:focus-visible{outline:3px solid var(--787-orange);outline-offset:3px}
body.admin-body #features .feature-toggle>input[type="checkbox"]:disabled{opacity:.55;cursor:not-allowed}

.admin-body .admin-filter-disclosure{min-width:0}
.admin-body .admin-filter-disclosure>summary{display:none}
@media(max-width:759px){
  .admin-body .admin-filter-disclosure{margin:12px 0}
  .admin-body .admin-filter-disclosure>summary{display:flex;align-items:center;min-height:46px;padding:10px 13px;border:1px solid var(--787-line);border-radius:10px;background:#fff;color:var(--787-blue);font-weight:800;cursor:pointer}
  .admin-body .admin-filter-disclosure[open]>summary{border-bottom-right-radius:0;border-bottom-left-radius:0}
  .admin-body .admin-filter-disclosure>.admin-list-toolbar{position:static;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:12px;border:1px solid var(--787-line);border-top:0;border-radius:0 0 10px 10px;background:#fff}
  .admin-body .admin-filter-disclosure>.admin-list-toolbar>label{min-width:0}
  .admin-body .admin-filter-disclosure>.admin-list-toolbar>label:has([type=search]){grid-column:1/-1}
  .admin-body .admin-filter-disclosure>.admin-list-toolbar>button{grid-column:1/-1}
}

.admin-body .fare-setting-row{grid-template-columns:minmax(180px,1fr) minmax(100px,160px) minmax(90px,auto) auto}
.admin-body .fare-setting-status{color:var(--787-ok);font-size:12px;line-height:1.3}
.admin-body .fare-setting-retry{min-height:40px}
.admin-body #security-sessions>h4{margin:8px 0 4px;padding:0 4px}
.admin-body .security-session.current{border-color:#8dbedb;background:#eef8fd}
.admin-body .security-other-sessions>summary{min-height:44px;padding:12px;border:1px solid var(--787-line);border-radius:10px;background:#fff;color:var(--787-blue);font-weight:800;cursor:pointer}
.admin-body .security-other-list{display:grid;gap:8px;margin-top:8px}
@media(max-width:759px){
  .admin-body .fare-setting-row{grid-template-columns:minmax(0,1fr)}
  .admin-body .fare-setting-row>*{grid-column:1}
}
.admin-body .support-admin-layout:not(.support-conversation-open) #support-admin-messages{display:grid;place-items:center;padding:30px;color:var(--787-muted);text-align:center;font-size:15px;line-height:1.5;background:#f8fbfd}

/* Local49: the important part of an admin trip is visible before identifiers. */
.admin-body .admin-trip-overview-section{min-width:0;margin:4px 0 18px}
.admin-body .admin-trip-back{flex:0 0 auto;min-width:112px;white-space:nowrap}
.admin-body .admin-trip-overview-section h4{margin:0 0 8px;font-size:15px;color:var(--787-blue)}
.admin-body .admin-trip-overview-section .analytics-grid{margin:8px 0}
.admin-body .admin-trip-technical{margin:0 0 18px;border-top:1px solid var(--787-line);border-bottom:1px solid var(--787-line)}
.admin-body .admin-trip-technical>summary{min-height:44px;padding:12px 4px;color:var(--787-blue);font-weight:800;cursor:pointer}
.admin-body .admin-trip-technical>summary:focus-visible{outline:3px solid var(--787-blue-2);outline-offset:-3px}


/* Day series from the existing statistics API, with dates and per-day values. */
.admin-body .statistics-history-heading{display:flex;align-items:end;justify-content:space-between;flex-wrap:wrap;gap:8px 20px;margin:12px 0 5px}
.admin-body .statistics-history-heading h3{margin:0}
.admin-body .statistics-history-heading label{display:grid;gap:3px;min-width:125px;font-size:12px;font-weight:700;color:var(--787-muted)}
.admin-body .statistics-history-heading select{min-height:44px;font-size:14px}
.admin-body .statistics-chart-caption{margin:0 0 7px;color:var(--787-muted);font-size:13px}
.admin-body .statistics-chart{box-sizing:border-box;width:100%;overflow-x:auto;overscroll-behavior-x:contain;padding:10px 10px 0;border:1px solid var(--787-line);border-radius:12px;background:linear-gradient(#f8fbfd,#fff)}
.admin-body .statistics-chart-bars{display:grid;grid-template-columns:repeat(var(--chart-days),minmax(0,1fr));gap:4px;width:100%}
.admin-body .statistics-chart-cell{display:grid;grid-template-rows:150px 26px;gap:4px;min-width:0}
.admin-body .statistics-chart-track{display:flex;align-items:end;min-width:0;border-bottom:1px solid #b9cbd6;background:repeating-linear-gradient(to top,transparent,transparent 36px,#e9eff3 37px)}
.admin-body .statistics-chart-bar{width:100%;min-height:3px;border-radius:4px 4px 0 0;background:var(--787-blue-2)}
.admin-body .statistics-chart-bar:hover{background:var(--787-orange)}
.admin-body .statistics-chart-cell small{overflow:visible;white-space:nowrap;text-align:center;font-size:11px;color:var(--787-muted)}
.admin-body .statistics-history-details{margin:8px 0 22px}
.admin-body .statistics-history-details>summary{min-height:44px;padding:11px;color:var(--787-blue);font-weight:800;cursor:pointer}
.admin-body .statistics-history-details>summary:focus-visible{outline:3px solid var(--787-blue-2);outline-offset:-3px}
.admin-body .statistics-history-details>.analytics-history{margin:2px 0 10px}
@media(max-width:599px){.admin-body .statistics-chart-caption::after{content:" · прокрутите график по горизонтали"}}

/* Selected category stays distinct without turning every KPI into a blue tile. */
.admin-body .records-category-card.active{border-color:var(--787-blue-2);color:var(--787-ink);background:#eaf5fb;box-shadow:inset 4px 0 var(--787-blue-2)}
.admin-body .records-category-card.active strong{color:var(--787-blue)}

/* Keep the visible icon compact while giving fingers a 44 px target. */
@media(max-width:820px){
  body.design-787 :is(.header-qr,.entry-qr),
  body.admin-body .header-qr{flex-basis:44px!important;width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important}
  body.design-787 .header-install,body.admin-body .header-install{min-height:44px!important;height:44px!important}
  body.admin-body :is(.admin-logout,.admin-global-search){min-width:44px!important;min-height:44px!important;width:44px!important;height:44px!important}
  body.design-787 .cabinet-logo,
  body.design-787 #design-profile-shortcut{min-width:44px!important;min-height:44px!important}
  body.design-787 #notification-later{min-height:44px!important}
  body.design-787 #notification-enable{min-height:44px!important}
  body.design-787 .notification-onboarding .notification-more>summary{display:flex;align-items:center;min-height:44px}
  body.design-787 .notification-diagnostics>summary,
  body.admin-body .notification-diagnostics>summary{display:flex;align-items:center;min-height:44px}
  body.design-787 :is(#auth-tab-pin,#auth-tab-sms),
  body.design-787 .qr-audience-button{min-height:44px}
  body.design-787 :is(#show-pin-login,#show-registration){min-height:44px!important}
  body.design-787 #booking-sheet button.compact{min-height:44px!important}
  body.admin-body .legacy-area-editor>summary,
  body.design-787 .driver-verified-info>summary{display:flex;align-items:center;min-height:44px}
  body.admin-body .finance-select{width:44px;min-height:44px}
  body.admin-body .finance-quick-amounts button{min-height:44px}
  body.design-787 .composer-input,body.admin-body .composer-input{grid-template-columns:minmax(0,1fr) 44px}
  body.design-787 button.composer-smile,
  body.admin-body button.composer-smile{width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important}
  body.design-787 :is(.composer-attach,.voice-play,.voice-more,#close-chat,#close-driver-support),
  body.admin-body :is(.composer-attach,.voice-play,.voice-more){min-width:44px!important;min-height:44px!important}
  body.design-787 .voice-player,body.admin-body .voice-player{grid-template-columns:44px minmax(0,1fr) auto 44px;min-height:44px}
  body.design-787 .voice-delete,body.admin-body .voice-delete{min-height:44px!important}
  body.design-787 .icon-button,body.admin-body .icon-button{min-width:44px!important;min-height:44px!important}
  body.design-787 .dialog-filter,body.admin-body .dialog-filter{min-height:44px!important}
  body.admin-body button.compact{min-width:44px;min-height:44px!important}
  body.admin-body #records details>summary{display:flex;align-items:center;min-height:44px}
  body.admin-body #pricing label:has(> input[type="checkbox"]),
  body.admin-body #pricing label:has(> input[type="radio"]){min-height:44px;align-content:center}
}

/* Removing a reservation or excluding a pair must not look like assignment. */
body.admin-body .admin-trip-detail .form-actions button.danger-outline{background:#fff!important;color:var(--787-danger)!important;border-color:#dca9a5!important}

/* Let the full origin and destination filter labels remain readable on phones. */
@media(max-width:430px){
  body.admin-body #pricing .tariff-filters:has(#tariff-from){grid-template-columns:minmax(0,1fr)!important}
  body.admin-body #pricing #tariff-from{grid-column:1!important;grid-row:1!important;width:100%}
  body.admin-body #pricing #tariff-to{grid-column:1!important;grid-row:2!important;width:100%}
  body.admin-body #pricing .tariff-search-label{grid-column:1!important;grid-row:3!important}
  body.admin-body #pricing .tariff-status-label{grid-column:1!important;grid-row:4!important}
  body.admin-body #pricing #tariff-load{grid-column:1!important;grid-row:5!important}
}

@media(max-width:359px){
  body.design-787.role-passenger #passenger-trip-stats>article{min-height:152px}
  .install-share-dialog footer{grid-template-columns:minmax(0,1fr)}
  .install-share-dialog footer>*{grid-column:1!important;min-width:0;width:100%;box-sizing:border-box;white-space:normal;overflow-wrap:anywhere}
  .install-share-dialog footer>[data-install-current]{grid-row:1!important}
  .install-share-dialog footer>[data-install-open]{grid-row:2!important}
  .install-share-dialog footer>[data-install-copy]{grid-row:3!important}
  .install-share-dialog footer:has(>[data-install-current][hidden])>[data-install-open]{grid-row:1!important}
  .install-share-dialog footer:has(>[data-install-current][hidden])>[data-install-copy]{grid-row:2!important}
  body.admin-body #pricing .dynamic-price-form{padding-bottom:16px}
  body.admin-body #pricing .dynamic-price-form>.form-actions{grid-template-columns:minmax(0,1fr)}
  body.admin-body #pricing .dynamic-price-form>.form-actions button{width:100%}
}
/* Audit 28.09: retain the approved palette and layout; improve text contrast. */
body.design-787,body.admin-body{--orange:#b94a00;--orange-dark:#963c00}
body.admin-body .records-category-card small{color:#fff;opacity:1}
body.admin-body .finance-driver-head,body.admin-body .finance-driver-head>b,body.admin-body .finance-driver-badges{min-width:0;max-width:100%;overflow-wrap:anywhere}
body.admin-body .finance-driver-badges .status-pill{white-space:normal;overflow-wrap:anywhere;max-width:100%}
@media(max-width:599px){body.admin-body label:has(>input[type="search"],>select){grid-column:1/-1}}
body.admin-body .empty-state>strong,body.admin-body .empty-state>span{display:block}
@media(max-width:599px){
  body.admin-body #commission-form{grid-template-columns:minmax(0,1fr)}
  body.admin-body #commission-form>label,body.admin-body #commission-form>.toolbar-wide{grid-column:1/-1;min-width:0;width:100%}
  body.admin-body #commission-form input{width:100%;min-width:0;box-sizing:border-box}
}
/* Shared action rhythm. Heading refresh buttons and trip actions use the same
   alignment; long labels can grow without clipping or shifting their neighbours. */
body.design-787 :is(.section-heading,.page-heading),body.admin-body .section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
body.design-787 :is(.section-heading,.page-heading)>:is(h2,h3),body.admin-body .section-head>:is(h2,h3){margin:0;min-width:0}
body.admin-body :is(.section-head,.form-actions,.admin-list-toolbar)>button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;height:auto;line-height:1.35;text-align:center}
.admin-body .topbar>.brand{min-width:44px;min-height:44px;justify-content:center}
.admin-logout{min-width:44px;min-height:44px}
@media (pointer:coarse){
 .area-map-workspace .leaflet-touch .leaflet-bar a{width:44px;height:44px;line-height:44px}
 .area-map-workspace .leaflet-touch .leaflet-draw-toolbar a{background-size:440px 44px}






 .area-map-workspace .leaflet-touch .leaflet-draw-actions{left:46px}
 .area-map-workspace .leaflet-touch .leaflet-draw-actions a{height:44px;line-height:44px;font-size:13px}
}
@media (max-width:560px){
  /* Админка на телефоне: название раздела не обрезается многоточием — мельче и до двух строк. */
  .admin-body #admin-workspace-title{min-width:0;font-size:13px!important;line-height:1.15!important;letter-spacing:-.01em;white-space:normal!important;text-overflow:clip!important;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
}
@media (max-width:400px){
  .admin-body :is(header,.topbar):has(>#admin-workspace-title),.admin-body :is(header,.topbar):has(#admin-workspace-title){gap:4px!important;padding-inline:8px!important}
  .admin-body :is(header,.topbar):has(#admin-workspace-title) :is(div,nav){gap:4px!important}
}
/* Админка, найдено проверкой после исправления её области (13.10.2026). */
/* Финансы: кнопка под строкой «Последнее изменение» не прижата к тексту. */
body.admin-body .finance-last-adjustment{display:block}
body.admin-body .finance-last-adjustment+button{margin-top:10px}
/* Профиль → уведомления: раскрывающиеся блоки не стоят вплотную. */
/* Отчёты → Пользователи: выбранная категория — тёмный текст на светлом фоне (был тёмный на синем, контраст 2:1). */
body.admin-body .records-category-card.active{background:#eaf5fb!important;color:var(--787-ink)!important}
body.admin-body .records-category-card.active small{color:inherit!important}
/* Админка → Безопасность: «Настроить приложение-аутентификатор» не прижата к «Завершить остальные» (найдено проверкой на Test, телефон). */
body.admin-body #security-enroll{margin-block:4px 14px}
/* Решение владельца 14.10.2026 («увеличь»): зоны нажатия 44 px и в админке на компьютере, и на странице входа. */
body.admin-body :is(button,a.button,select,summary,[role=tab]):not(.leaflet-control-zoom-in):not(.leaflet-control-zoom-out){min-height:44px!important}
body.admin-body details>summary{align-content:center}
body.admin-body .topbar :is(.admin-global-search,.header-install,.header-qr){min-height:44px!important;min-width:44px!important}
body.admin-body .leaflet-control-zoom a{width:44px;height:44px;line-height:44px}
/* Вход в админку на невысоком окне компьютера: карточка входа и карточка «Приложение на этом устройстве» встают рядом,
   а не друг под другом — без прокрутки страницы (1280×600, 1366×650). Ничего не скрывается. */
@media (min-width:1100px) and (max-height:760px){
  body.admin-body .admin-main:has(#admin-login-form:not([hidden]), #admin-mfa-panel:not([hidden])){display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:20px;align-items:start}
  body.admin-body .admin-main:has(#admin-login-form:not([hidden]), #admin-mfa-panel:not([hidden]))>*{margin:0}
}
/* Вход в админку на настоящем телефоне (24.10.2026): карточка «Приложение на этом устройстве» выходила за правый край —
   ширина 100% из app.css плюс отступы 16px из сжатия входа. */
body.admin-body .admin-main .install-card{width:auto!important;box-sizing:border-box;max-width:calc(100% - 32px)}
/* Вход на телефоне с видимой высотой 701px (Galaxy S24 в Chrome, проверка Test 24.10.2026): у входа пассажира лишние 2px
   нижнего отступа, у входа в админку карточка установки (179px) не помещалась. */
@media(max-width:759px) and (max-height:760px){
 body.design-787:not(.cabinet-mode) .guest-main{padding-bottom:8px!important}
 body.admin-body .admin-main .install-card{display:none!important}
}
/* Таблица цен района до аэропортов (25.10.2026): все терминалы в обе стороны одним экраном. */
.area-airport-grid{display:grid;gap:10px;margin:0 0 18px;padding:14px;border:1px solid #cfe0ee;border-radius:14px;background:#f7fbff}
.area-airport-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.area-airport-tools .active{border-color:#1767d1;background:#e7f0ff;color:#1767d1}
.area-airport-percent{display:flex;align-items:center;gap:6px;font-size:14px}
.area-airport-percent input{width:72px;min-height:44px}
.area-airport-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.area-airport-table{width:100%;min-width:640px;border-collapse:collapse}
.area-airport-table th,.area-airport-table td{padding:4px 6px;border-bottom:1px solid #e1eaf2;text-align:left;vertical-align:middle}
.area-airport-table thead th{font-size:12px;font-weight:700;color:#4b6175}
.area-airport-table tbody th b{display:block;font-size:13px}
.area-airport-table tbody th small{display:block;color:#5b6878;font-size:12px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.area-airport-table input{width:100%;min-width:72px;min-height:44px;box-sizing:border-box}
.area-airport-table tr.missing th b::after{content:" · нет цены";color:#a1440a;font-weight:600}
.area-airport-table tr.changed{background:#fff7e6}
.area-airport-save{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.area-airport-save label{flex:1 1 260px}
.area-airport-note{display:grid;gap:4px;font-size:14px}
/* Группы цен по направлению (25.10.2026): выбор группы над таблицей, строки группы отмечены синим. */
.area-group-bar{display:grid;gap:10px;padding:10px;border:1px solid #d6e4f3;border-radius:12px;background:#fff}
.area-group-direction{display:grid;gap:6px;align-content:start}
.area-group-direction label{display:grid;gap:4px;font-size:13px;font-weight:700;color:#33475b}
.area-group-direction select{min-height:44px}
.area-group-direction .active{border-color:#1767d1;background:#e7f0ff;color:#1767d1}
.area-group-bar [data-group-note]{grid-column:1/-1;margin:0;font-size:13px}
.area-airport-table tr.in-group{box-shadow:inset 3px 0 0 #1767d1}
.area-airport-table tbody th em{display:block;font-style:normal;font-size:12px;color:#1767d1}
.area-airport-table tbody th em:empty{display:none}
/* «Удалить» с переводом водителей, «Обрезать по соседям», выбор цен при объединении (25.10.2026). */
.area-delete-panel{display:grid;gap:10px;margin-top:10px;padding:12px;border:1px solid #f0c7c0;border-radius:12px;background:#fff7f5}
.area-delete-panel p{margin:0;font-size:14px}
.area-delete-panel label{display:grid;gap:4px;font-size:13px;font-weight:700}
.area-delete-panel select{min-height:44px}
.area-delete-panel [data-delete-confirm]{border-color:var(--danger,#b42318);background:var(--danger,#b42318);color:#fff}
.area-map-area-form [data-area-trim]{justify-self:start;margin-top:6px;border-color:#1767d1;color:#1767d1}
.merge-prices{display:grid;gap:6px;margin:10px 0;padding:10px 12px;border:1px solid #d6e4f3;border-radius:12px}
.merge-prices legend{padding:0 4px;font-size:13px;font-weight:700}
.merge-prices label{display:flex;align-items:flex-start;gap:8px;min-height:44px;font-size:14px}
.merge-prices label small{display:block;color:#5b6878}
/* В узкой панели редактора строка таблицы — направление сверху, пять цен под ним в одну линию. */
.area-airport-table,.area-airport-table thead,.area-airport-table tbody{display:block;min-width:0}
.area-airport-table tr{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:8px 0;border-bottom:1px solid #e1eaf2}
.area-airport-table th,.area-airport-table td{padding:0;border:0}
.area-airport-table thead th:first-child{display:none}
.area-airport-table thead th{font-size:11px;line-height:1.2;text-transform:none;letter-spacing:0;color:#4b6175}
.area-airport-table tbody th[scope=row]{grid-column:1/-1;text-transform:none;letter-spacing:0}
.area-airport-table tbody th small{max-width:none;font-family:inherit}
.area-airport-table input{min-width:0;padding-inline:4px;text-align:right;font-size:15px}
/* Телефон: пять цен в строку помещаются, только если у ячеек нет общих отступов полей ввода (25.10.2026). */
.area-airport-grid .area-airport-table td input[type=number]{padding:0 4px;letter-spacing:0;font-size:15px}
@media(max-width:760px){.area-airport-grid{padding:10px 6px;margin-inline:-6px}}
.area-airport-table th{font-family:inherit}
/* Нахлёсты районов (26.10.2026): панель над картой, строки — пары районов, крупные первыми. */
.area-overlap-panel{display:grid;gap:8px;padding:10px 12px;border:1px solid #f1c4c4;border-radius:12px;background:#fff6f6}
.area-overlap-panel header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.area-overlap-panel header small{display:block;margin-top:2px;color:#5b6878;font-size:12px;line-height:1.35}
.area-overlap-list{display:grid;gap:6px;max-height:260px;overflow:auto;-webkit-overflow-scrolling:touch}
.area-overlap-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
#pricing .area-overlap-row [data-overlap-open]{flex:1 1 220px;display:grid;justify-items:start;justify-content:start;align-content:center;gap:2px;min-height:44px;padding:6px 10px;text-align:left}
.area-overlap-row [data-overlap-open] small{color:#b42318;font-weight:700}
.area-map-toolbar [data-map-overlaps].active{border-color:#c62828;background:#fff1f1;color:#b42318}

/* Обход «нажми всё» 26.10.2026, админка на узком телефоне. */
@media(max-width:420px){
 /* Название раздела в шапке — одной строкой с многоточием, без переноса по букве («Статистик/а»). */
 body.admin-body #admin-workspace-title{overflow-wrap:normal;word-break:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;font-size:12px}
 body.admin-body .admin-workspace-breadcrumb{min-width:0;overflow:hidden}
 /* Инциденты уведомлений: строка фильтров переносится, колонка не шире раздела. */
 body.admin-body .notification-incidents,body.admin-body .notification-incidents .tariff-list{grid-template-columns:minmax(0,1fr)!important}
 body.admin-body .notification-incidents .section-head,body.admin-body .notification-incidents .incident-filters{flex-wrap:wrap}
 /* Итоги финансов в карточке: ячейки делят ширину, а не выходят за край. */
 body.admin-body .admin-finance-numbers{grid-template-columns:repeat(auto-fit,minmax(0,1fr))!important}
}
body.admin-body a.secondary.compact{min-height:44px;display:inline-flex;align-items:center}
/* Прокрутка к полю не оставляет его под липкой шапкой админки. */
html:has(body.admin-body){scroll-padding-top:72px}
/* 06.11.2026: названия районов и терминалов в списке карты покрытия переносятся, без многоточия. */
body.admin-body .area-map-row b{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere}
body.admin-body .area-map-row{height:auto!important;min-height:44px;align-items:start}
/* 06.11.2026: заголовки колонок списков (кнопки сортировки) — по левому краю, над содержимым своей колонки, а не по центру. */
body.admin-body .admin-data-head .admin-data-cell>:is(button,a,span){justify-content:flex-start!important;text-align:left!important;margin-inline:0!important;padding-inline:0!important}
/* 06.11.2026: вход в админку на телефоне — «Приложение на этом устройстве» в одну колонку (текст над кнопкой), а не две узкие
   колонки с текстом по слогам в столбик. */
@media(max-width:520px){body.admin-body .admin-main>.install-card.card{flex-direction:column!important;align-items:stretch!important;gap:12px!important;text-align:left;width:auto!important;max-width:none!important;margin-inline:0!important;align-self:stretch!important}
 body.admin-body .install-card>*{min-width:0;width:auto!important;max-width:none!important}
 body.admin-body .install-card h2,body.admin-body .install-card p{hyphens:manual!important;-webkit-hyphens:manual!important;overflow-wrap:normal;word-break:normal}}
/* 06.11.2026: «Статус» в тарифах — подпись выбранного значения целиком («Действующие цены», «Не опубликованные версии»). */
@media(min-width:760px){body.admin-body .tariff-filters>.tariff-status-label{flex:0 0 auto!important;min-width:15.5em}}
body.admin-body #tariff-direction-status{width:100%!important;text-overflow:clip}
/* 06.11.2026: промежутки от 8 px — постраничная навигация над списком, подпись графика статистики. */
body.admin-body .admin-pagination{margin-bottom:8px}
body.admin-body .statistics-chart-caption{margin:8px 0 12px!important}
/* 06.11.2026: края шапки админки совпадают с краями карточек разделов (было на 4–6 px шире/уже). */
@media(max-width:599px){body.admin-body .topbar:not(#_){padding-left:12px!important;padding-right:12px!important}}
@media(min-width:760px) and (max-width:1099px){body.admin-body .topbar:not(#_){padding-left:18px!important;padding-right:18px!important}}
/* 06.11.2026: боковое меню админки на телефоне — столбиком сверху вниз с прокруткой вниз (было display:flex без
   направления: разделы стояли в ряд высокими колонками и уходили вбок за край). */
@media(max-width:759px){body.admin-body.workspace-ready .workspace-rail:not(#_){flex-direction:column!important;flex-wrap:nowrap!important;align-items:stretch!important;overflow-x:hidden!important;overflow-y:auto!important;gap:2px}
 body.admin-body.workspace-ready .workspace-rail:not(#_)>*{flex:0 0 auto!important;height:auto!important;min-height:44px}
 body.admin-body.workspace-ready .workspace-rail:not(#_)>.workspace-group-label{min-height:0;margin:12px 6px 4px}}
/* 06.11.2026 (проверяющий): админка на телефоне — название раздела не помещалось между ☰ и кнопками шапки
   («Пользова», «Статисти»). До 420 px оно стоит под кнопками отдельной строкой, целиком. */
@media(max-width:420px){body.admin-body .topbar:not(#_){flex-wrap:wrap!important;row-gap:2px;height:auto!important;min-height:0!important}
 body.admin-body .topbar:not(#_) .admin-workspace-breadcrumb{order:3;flex:1 0 100%!important;max-width:none!important;padding:0 2px 6px}
 body.admin-body .topbar:not(#_) .topbar-actions{margin-left:auto}
 body.admin-body #admin-workspace-title:not(#_){white-space:normal!important;overflow:visible!important;text-overflow:clip!important;font-size:15px}}
/* 06.11.2026 (проверяющий): «Приложение на этом устройстве» — только на сменной панели (и на входе), а не над каждым
   разделом: разделы открывались прокрученными, карточка стояла то над, то под содержимым. */
/* На входе (и вводе кода MFA) — всегда, даже если в адресе остался раздел после выхода. */
body.admin-body[data-admin-route]:not([data-admin-route="home"]) .admin-main:not(:has(#admin-login-form:not([hidden]),#admin-mfa-panel:not([hidden])))>.install-card{display:none!important}
/* 06.11.2026 (проверяющий): ряды фильтров админки — подписи и поля в одну линию (подсказка под «Поиском» сдвигала ряд),
   выбранное значение списка видно целиком. */
body.admin-body .admin-list-toolbar:not(#_){align-items:start!important}
body.admin-body :is(.admin-list-toolbar,.finance-balance-toolbar) select:not(#_){min-width:12.5em;text-overflow:clip}
body.admin-body .admin-data-head .admin-data-cell:not(#_){white-space:nowrap}
body.admin-body .admin-pagination:not(#_) :is(span,p,small){white-space:nowrap}
/* 06.11.2026 (проверяющий): «Обновить» рядом с пояснением сжималась уже своего текста — надпись вылезала за рамку кнопки
   («Водители на линии», «Статистика» на 320). Кнопка не сжимается, пояснение переносится. */
body.admin-body .section-head>button.compact{flex:0 0 auto!important;white-space:nowrap;min-width:max-content}
/* «Поездки» на телефоне: «Участники» (пассажир и водитель) — во всю ширину карточки, а не узким столбцом в 3 строки. */
@media(max-width:599px){body.admin-body .admin-data-list>.admin-data-row>.admin-data-cell[data-label="Участники"]{grid-column:1/-1}}
/* 06.11.2026 (проверка входа на невысоких телефонах): вход в админку — карточка «Приложение на этом устройстве» той же
   ширины, что «Вход сотрудника» (была уже на 32 px справа), заголовок и текст карточки — слева; номер версии в шапке
   входа не мельче 11 px. */
body.admin-body .admin-main>.install-card.card:not(#_){max-width:none!important;width:auto!important;margin-inline:0!important}
body.admin-body .admin-main>.install-card:not(#_) :is(h2,p){text-align:left!important}
body.admin-body .admin-version:not(#_){font-size:11px!important}
/* Вход в админку на компьютере: края карточек — по краю содержимого шапки (24 px), а не 20 px (20 px — отступ рабочей
   области, к нему 4 px). */
@media(min-width:1100px){body.admin-body .admin-main:has(#admin-login-form:not([hidden]),#admin-mfa-panel:not([hidden]))>.card:not(#_){margin-left:4px!important;margin-right:4px!important}}
/* Плашка «Нет интернета» над разделом админки — 8 px до раздела (было 4 px). */
body.admin-body #connection-status:not([hidden]):not(#_){margin-bottom:8px!important}
/* «Рабочий баланс» на телефоне: компактнее поля и отступы, кнопки «Сохранить / Отмена» закреплены внизу окна. */
@media(max-width:599px){body.admin-body .finance-dialog-head:not(#_){padding:14px 16px}
 body.admin-body .finance-dialog-content:not(#_){padding:14px 16px;gap:10px}
 body.admin-body .finance-dialog-actions:not(#_){padding:12px 16px}}
