/* clients-parity.css — вкладки кабинета, повторяющие клиентское приложение */

/* ---------- общие элементы ---------- */
.pill{
  display:inline-flex; align-items:center; gap:4px; min-height:22px; padding:0 9px;
  border:1px solid var(--c-line); border-radius:7px;
  background:color-mix(in srgb, var(--c-surface) 60%, transparent);
  color:var(--c-muted); font-size:11px; font-weight:700; white-space:nowrap;
}
.pill.good{ color:var(--c-good); border-color:color-mix(in srgb, var(--c-good) 55%, var(--c-line)); background:color-mix(in srgb, var(--c-good) 12%, transparent); }
.pill.bad{ color:var(--c-danger); border-color:color-mix(in srgb, var(--c-danger) 55%, var(--c-line)); }
.pill.warn{ color:var(--c-warning); border-color:color-mix(in srgb, var(--c-warning) 55%, var(--c-line)); }
.pill.accent{ color:var(--c-accent); border-color:color-mix(in srgb, var(--c-accent) 55%, var(--c-line)); }
.accent-text{ color:var(--c-accent); }
.good-text{ color:var(--c-good); }
.muted.small, .small{ font-size:11.5px; }

/* сегментированный переключатель, как пары StyledButton в приложении */
.segmented{ display:grid; grid-auto-flow:column; grid-auto-columns:1fr; gap:6px; margin-bottom:14px; }
.segmented button{
  min-height:40px; border:1px solid var(--c-line); border-radius:11px; cursor:pointer;
  background:color-mix(in srgb, var(--c-surface) 60%, transparent); color:var(--c-muted); font:inherit; font-weight:600;
}
.segmented button.active{ background:var(--c-accent); border-color:var(--c-accent); color:var(--c-on-accent, #fff); }
.segmented[hidden]{ display:none; }

.list-toolbar{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:12px; }
.list-toolbar input{ flex:1 1 220px; min-width:0; }
.list-toolbar select{ flex:0 1 200px; }
.pager{ display:flex; align-items:center; justify-content:center; gap:12px; margin-top:14px; }
.pager[hidden]{ display:none; }

/* карточки заявок/пилотов в списках вкладок */
.app-card{
  border:1px solid var(--c-line); border-radius:16px; padding:14px 16px; margin-bottom:10px;
  background:color-mix(in srgb, var(--c-surface) 66%, transparent);
}
.app-card-head{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; justify-content:space-between; }
.app-card-head b{ font-size:15px; }
.app-card-meta{ display:flex; flex-wrap:wrap; gap:4px 14px; margin-top:6px; color:var(--c-muted); font-size:12.5px; }
.app-card-note{ margin-top:8px; padding:8px 10px; border-radius:10px; font-size:12.5px; background:color-mix(in srgb, var(--c-bg) 45%, transparent); }
.app-card-actions{ display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; align-items:center; }
.app-card-actions textarea{ flex:1 1 100%; min-height:54px; }
.app-drones{ display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:8px; margin-top:10px; }
.app-drones > div{ border:1px solid var(--c-line); border-radius:12px; padding:9px 11px; font-size:12px; color:var(--c-muted); }
.app-drones > div b{ display:block; color:var(--c-text); font-size:13px; margin-bottom:3px; }

/* ---------- Мероприятия ---------- */
.events-layout{ display:grid; grid-template-columns:minmax(0,1fr) minmax(320px, 420px); gap:18px; align-items:start; }
.events-search{ width:100%; margin-bottom:12px; }
.events-group-title{ margin:6px 0 8px; font-weight:700; color:var(--c-muted); font-size:12.5px; }
.events-group-toggle{
  width:100%; display:flex; justify-content:space-between; align-items:center; margin:14px 0 8px;
  padding:9px 12px; border:1px solid var(--c-line); border-radius:11px; cursor:pointer;
  background:transparent; color:var(--c-muted); font:inherit; font-weight:700; font-size:12.5px;
}
.events-chevron{ width:12px; height:12px; transform:rotate(90deg); transition:transform .2s ease; }
.events-group-toggle[aria-expanded="true"] .events-chevron{ transform:rotate(-90deg); }
.events-list{ display:grid; gap:8px; }
.events-list[hidden], .events-group-toggle[hidden]{ display:none; }
.event-card{
  display:grid; gap:6px; width:100%; text-align:left; cursor:pointer; padding:12px 14px;
  border:1px solid var(--c-line); border-radius:14px; color:var(--c-text); font:inherit;
  background:color-mix(in srgb, var(--c-surface) 66%, transparent);
  transition:border-color .15s ease, background .15s ease;
}
.event-card:hover{ border-color:color-mix(in srgb, var(--c-accent) 45%, var(--c-line)); }
.event-card.is-selected{ border-color:var(--c-accent); background:color-mix(in srgb, var(--c-accent) 12%, var(--c-surface)); }
.event-card-head{ display:flex; justify-content:space-between; gap:10px; align-items:center; }
.event-card-head b{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.event-card-foot{ display:flex; flex-wrap:wrap; gap:6px; }
.events-detail-panel{ position:sticky; top:14px; }
.events-back{ display:none; margin-bottom:8px; }
.event-badges{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.event-dates{ display:flex; align-items:center; gap:6px; }
.event-dates .ui-icon, .events-section-title .ui-icon{ width:13px; height:13px; }
.event-desc{
  padding:10px 12px; border:1px solid var(--c-line); border-radius:10px; margin:8px 0 12px;
  white-space:pre-wrap; overflow-wrap:anywhere; font-size:13px;
}
.event-participation{
  display:grid; grid-template-columns:40px 1fr; gap:12px; padding:12px; border-radius:12px;
  border:1px solid var(--c-line); margin-bottom:14px;
}
.event-participation.is-registered{ border-color:var(--c-good); background:color-mix(in srgb, var(--c-good) 10%, transparent); }
.event-participation.is-registered b{ color:var(--c-good); }
.event-participation p{ margin:4px 0 10px; font-size:12.5px; }
.event-participation-icon{
  width:40px; height:40px; border-radius:50%; display:grid; place-items:center;
  background:color-mix(in srgb, var(--c-accent) 16%, transparent);
}
.event-participation.is-registered .event-participation-icon{ background:color-mix(in srgb, var(--c-good) 20%, transparent); }
.event-participation-icon .ui-icon{ width:18px; height:18px; }
.events-section-title{ display:flex; align-items:center; gap:6px; margin:12px 0 6px; font-weight:700; }
.events-mini-list{ display:grid; gap:5px; }
.events-mini-row{
  display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:8px;
  border:1px solid var(--c-line); background:color-mix(in srgb, var(--c-surface) 50%, transparent); font-size:12.5px;
}
.events-mini-row small{ margin-left:auto; }
@media (max-width:900px){
  .events-layout{ grid-template-columns:1fr; }
  .events-layout .events-detail-panel{ display:none; position:static; }
  .events-layout.has-selection .events-list-panel{ display:none; }
  .events-layout.has-selection .events-detail-panel{ display:block; }
  .events-back{ display:inline-flex; }
}

/* ---------- Профиль: хаб разделов ---------- */
.profile-hub{ display:grid; gap:10px; }
.profile-hub-role{ margin-bottom:6px; }
.profile-hub-item{
  display:grid; grid-template-columns:44px 1fr 16px; align-items:center; gap:14px; width:100%;
  padding:14px 16px; border:1px solid var(--c-line); border-radius:16px; cursor:pointer; text-align:left;
  background:color-mix(in srgb, var(--c-surface) 66%, transparent); color:var(--c-text); font:inherit;
}
.profile-hub-item:hover{ border-color:color-mix(in srgb, var(--c-accent) 45%, var(--c-line)); }
.profile-hub-item .hub-icon{ width:44px; height:44px; border-radius:13px; display:grid; place-items:center; background:color-mix(in srgb, var(--c-accent) 14%, transparent); }
.profile-hub-item .hub-icon .ui-icon{ width:20px; height:20px; }
.profile-hub-item b{ display:block; font-size:15px; }
.profile-hub-item small{ color:var(--c-muted); }
.profile-hub-item .hub-chev{ width:14px; height:14px; opacity:.6; }
.profile-section-head{ display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.profile-section[hidden], .profile-hub[hidden]{ display:none; }
.ping-card{ display:grid; justify-items:center; gap:8px; text-align:center; }
.ping-value{ font-size:34px; font-weight:800; font-variant-numeric:tabular-nums; }
.ping-bar{ width:min(320px, 100%); height:8px; border-radius:6px; background:color-mix(in srgb, var(--c-line) 70%, transparent); overflow:hidden; }
.ping-bar i{ display:block; height:100%; width:0; background:var(--c-good); transition:width .3s ease, background .3s ease; }

/* ---------- Уведомления ---------- */
.notif-card{ border:1px solid var(--c-line); border-radius:14px; padding:12px 14px; margin-bottom:8px; background:color-mix(in srgb, var(--c-surface) 66%, transparent); }
.notif-card.unread{ border-color:color-mix(in srgb, var(--c-accent) 60%, var(--c-line)); background:color-mix(in srgb, var(--c-accent) 8%, var(--c-surface)); }
.notif-card.paused{ border-color:color-mix(in srgb, var(--c-warning) 60%, var(--c-line)); }
.notif-row{ display:flex; gap:12px; align-items:flex-start; }
.notif-body{ flex:1 1 auto; min-width:0; }
.notif-text{ overflow-wrap:anywhere; white-space:pre-wrap; font-size:13.5px; }
.notif-meta{ display:flex; flex-wrap:wrap; gap:2px 8px; margin-top:4px; font-size:11.5px; color:var(--c-muted); }
.notif-meta .accent-text{ max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.notif-dot{ width:8px; height:8px; margin-top:6px; border-radius:50%; background:var(--c-accent); flex:0 0 8px; }
.notif-actions{ display:flex; gap:6px; flex-wrap:wrap; flex:0 0 auto; }
.notif-toolbar{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:12px; }
.notif-toolbar .spacer{ flex:1 1 auto; }
@media (max-width:700px){
  .notif-row{ flex-wrap:wrap; }
  .notif-actions{ flex:1 1 100%; }
  .notif-actions > button{ flex:1 1 0; }
  .notif-toolbar > button{ flex:1 1 0; }
  .notif-toolbar .notif-counter, .notif-toolbar .spacer{ display:none; }
}

/* ---------- Техконтроль: граф связей механиков ---------- */
.counter-row{ display:flex; gap:18px; flex-wrap:wrap; margin-bottom:12px; color:var(--c-muted); }
.counter-row b{ color:var(--c-text); }
.segmented button.is-active{ background:var(--c-accent); border-color:var(--c-accent); color:var(--c-on-accent, #fff); }
button.switch{ border:0; padding:0; cursor:pointer; }
button.switch:disabled{ opacity:.45; cursor:not-allowed; }
.profile-section .perm{ padding:12px 0; }
.profile-hub-item .hub-chev{ transform:rotate(180deg); }
.profile-hub-role .sidebar-role-badge{ display:inline-flex; width:auto; }
.client-app .segmented button.active, .client-app .segmented button.is-active{ color:var(--c-on-accent); -webkit-text-fill-color:var(--c-on-accent); }

/* ---------- Таблица лидеров: строки и пьедестал (LeaderboardTab.qml) ---------- */
.seg-count{ display:inline-grid; place-items:center; min-width:18px; height:16px; margin-left:4px; padding:0 5px; border-radius:8px; font-size:10px; background:color-mix(in srgb, var(--c-accent) 18%, transparent); }
.segmented button.active .seg-count{ background:rgba(255,255,255,.25); }
.lb-row{ display:grid; grid-template-columns:44px minmax(0,1fr) auto auto; align-items:center; gap:10px; padding:9px 12px; margin-bottom:6px; border:1px solid var(--c-line); border-radius:10px; background:color-mix(in srgb, var(--c-surface) 60%, transparent); }
.lb-place{ width:32px; height:32px; border-radius:50%; display:grid; place-items:center; font-weight:800; font-size:12px; color:var(--c-accent); background:color-mix(in srgb, var(--c-accent) 12%, transparent); }
.lb-main{ min-width:0; display:grid; }
.lb-main b, .lb-main small{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lb-time{ font-family:ui-monospace, monospace; font-weight:700; }
.podium{ display:grid; grid-template-columns:1fr 1.15fr 1fr; gap:10px; align-items:end; margin:8px 0 14px; }
.podium-slot{ display:grid; justify-items:center; gap:4px; padding:14px 8px; border-radius:14px; border:1px solid var(--c-line); text-align:center; background:color-mix(in srgb, var(--c-surface) 66%, transparent); }
.podium-slot b{ max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.podium-slot.p1{ min-height:150px; border-color:#f5c542; }
.podium-slot.p2{ min-height:125px; border-color:#c0c7d1; }
.podium-slot.p3{ min-height:110px; border-color:#cd8a4b; }
.podium-medal{ width:34px; height:34px; border-radius:50%; display:grid; place-items:center; font-weight:800; color:#1b1b1b; }
.p1 .podium-medal{ background:#f5c542; } .p2 .podium-medal{ background:#c0c7d1; } .p3 .podium-medal{ background:#cd8a4b; }
.podium-slot.empty-slot{ opacity:.5; }
.avatar.mini{ display:inline-grid; place-items:center; width:28px; height:28px; border-radius:9px; font-size:11px; vertical-align:middle; }
.warn-note{ border:1px solid color-mix(in srgb, var(--c-warning) 55%, var(--c-line)); margin:10px 0; }
.warn-note b{ color:var(--c-warning); }

/* ---------- Главная: приветствие на всю ширину, «Ваши возможности» заголовком над плитками ---------- */
#tab-overview .overview-hero{width:100%;max-width:none;box-sizing:border-box}
#tab-overview .overview-control-strip{grid-template-columns:1fr;gap:10px}
#tab-overview .overview-more-title{margin:0}

/* ---------- «Вылеты»: полный вид состава (manage_heats), как HeatsTableView.qml ---------- */
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums}
/* секундомеры вылетов: цифры одной ширины — текст не дрожит при обновлении по кадрам */
[data-lb-clock],[data-hv-clock],[data-heat-clock],[data-co-clock],[data-mh-clock]{font-variant-numeric:tabular-nums}
.heat-cols,.heat-pilot.full{grid-template-columns:minmax(0,1.4fr) 64px 170px minmax(180px,230px) minmax(120px,auto)}
.heat-cols{display:grid;gap:14px;padding:0 12px 0 20px;font-size:10.5px;font-weight:800;letter-spacing:.04em;color:var(--c-muted);text-transform:uppercase}
.heat-pilot.full .heat-pilot-who small+small{margin-top:1px}
.heat-pilot-link{appearance:none;border:0;background:none;padding:0;font:inherit;font-weight:800;color:inherit;cursor:pointer;text-align:left;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;min-height:0}
.heat-pilot-link:hover,.heat-pilot-link:focus-visible{color:var(--c-accent);text-decoration:underline}
.heat-pilot.female{box-shadow:inset 3px 0 0 rgba(236,72,153,.45)}
.heat-laps{font-weight:800;font-size:13px}
.heat-time.live{color:var(--c-good)}
.heat-time::before{content:"⏱ ";opacity:.7}
.heat-pilot:not(.full) .heat-time::before{content:none}
.heat-timed{grid-column:1/-1;font-size:11px;color:var(--c-muted);margin-top:-4px}
.heat-status .mono{margin-left:4px}
@media (max-width:1180px){
  .heat-cols{display:none}
  .heat-pilot.full{grid-template-columns:minmax(0,1fr) auto}
  .heat-pilot.full .heat-pilot-ch{grid-column:2/3;grid-row:1;justify-self:end}
}
@media (max-width:640px){
  .heat-pilot.full{grid-template-columns:1fr}
  .heat-pilot.full .heat-pilot-ch{grid-column:auto;grid-row:auto;justify-self:start}
}

/* ---------- «Мои вылеты» пилота в карточке мероприятия (MyHeatsPanel.qml) ---------- */
.events-section-title .mh-refresh{margin-left:auto;min-height:0;padding:4px 10px;font-size:12px}
.mh-list{display:flex;flex-direction:column;gap:10px;margin-bottom:6px}
/* вкладка «Вылеты»: очередь до вылета и заголовок прошедших */
.mh-queue{margin:0;font-weight:700;color:var(--c-accent)}
.mh-queue.now{color:var(--c-good)}
.mh-section{margin:16px 0 8px;font-size:14px;color:var(--c-muted)}
.mh-card{position:relative;display:flex;flex-direction:column;gap:8px;padding:12px 12px 12px 22px;border-radius:14px;
  border:1px solid color-mix(in srgb,var(--pc) 45%,var(--c-line));background:color-mix(in srgb,var(--pc) 6%,var(--c-surface))}
.mh-card::before{content:"";position:absolute;left:8px;top:10px;bottom:10px;width:4px;border-radius:2px;background:var(--pc)}
.mh-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.mh-head b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.heat-status.s-out{color:var(--c-danger);background:color-mix(in srgb,var(--c-danger) 15%,transparent)}
.mh-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 14px}
.mh-info span{display:flex;gap:6px;min-width:0;font-size:12.5px}
.mh-info small{color:var(--c-muted);flex:0 0 62px}
.mh-info b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mh-edit{display:flex;flex-direction:column;gap:8px;padding-top:8px;border-top:1px dashed var(--c-line)}
.mh-edit button{align-self:flex-start}
.mh-feedback{margin:0;color:var(--c-good)}
.mh-feedback.bad{color:var(--c-danger)}
.mh-result{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.mh-result button{margin-left:auto}
@media (max-width:640px){
  .mh-info{grid-template-columns:1fr}
  .mh-edit button{align-self:stretch;min-height:44px}
}

/* ---------- Карточка пилота за вылет (RaceEntryCard.qml) ---------- */
.race-entry-dialog{width:min(680px,100%);max-height:calc(100vh - 48px);overflow:auto;text-align:left}
.re-head{display:flex;gap:12px;align-items:stretch;padding-right:40px;margin-bottom:14px}
.re-head>i{flex:0 0 6px;border-radius:3px;background:var(--pc,var(--c-accent))}
.re-head h2{margin:0 0 2px;font-size:19px}
.re-head p{margin:0}
.female-text{display:inline-block;padding:0 8px;border-radius:8px;background:rgba(236,72,153,.13);box-shadow:inset 0 0 0 1px rgba(236,72,153,.32)}
.re-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:14px}
.re-tile{--t:var(--c-text);display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 6px;border-radius:12px;
  background:color-mix(in srgb,var(--t) 8%,transparent);border:1px solid color-mix(in srgb,var(--t) 26%,var(--c-line))}
.re-tile.accent{--t:var(--c-accent)}.re-tile.good{--t:var(--c-good)}.re-tile.bad{--t:var(--c-danger)}
.re-tile span{font-size:11px;color:var(--c-muted)}
.re-tile b{font-size:16px;color:var(--t);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums}
.re-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px;margin-bottom:6px}
.re-info>div{display:flex;gap:8px;font-size:13px;min-width:0}
.re-info span{flex:0 0 130px;color:var(--c-muted);font-size:12px}
.re-info b{min-width:0;overflow-wrap:anywhere}
.re-section{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:14px 0 6px;font-size:13.5px}
.re-legend{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--c-muted)}
.re-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-left:6px}
.re-legend i.best{background:var(--c-good)}.re-legend i.worst{background:var(--c-danger)}
.re-legend i.avg{width:14px;height:0;border-radius:0;border-top:2px dashed var(--c-muted)}
.lap-svg{width:100%;height:auto;display:block}
.lap-grid{stroke:var(--c-line);stroke-width:1}
.lap-axis{fill:var(--c-muted);font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.lap-avg{stroke:var(--c-muted);stroke-width:1.5;stroke-dasharray:5 5}
.lap-line{fill:none;stroke:var(--c-accent);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.lap-dot{fill:var(--c-accent);stroke:var(--c-surface);stroke-width:2}
.lap-dot.best{fill:var(--c-good)}.lap-dot.worst{fill:var(--c-danger)}
.re-laps{display:flex;flex-direction:column;gap:4px}
.re-lap{display:grid;grid-template-columns:40px 100px 110px minmax(0,1fr);gap:8px;align-items:center;padding:6px 10px;border-radius:9px;
  background:color-mix(in srgb,var(--c-text) 4%,transparent);font-size:13px}
.re-lap small{text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.re-lap .good,.re-heat .good{color:var(--c-good)}.re-lap .bad{color:var(--c-danger)}
.re-heats{display:flex;flex-direction:column;gap:4px}
.re-heat{appearance:none;font:inherit;color:var(--c-text);cursor:pointer;text-align:left;min-height:0;
  display:grid;grid-template-columns:minmax(0,1fr) 44px 96px 50px 130px;gap:8px;align-items:center;padding:7px 10px;border-radius:9px;
  border:1px solid var(--c-line);background:transparent;font-size:12.5px}
.re-heat:hover{border-color:var(--c-accent)}
.re-heat.current{border-color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 8%,transparent)}
.re-agg{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:12.5px;color:var(--c-muted)}
.re-agg b{color:var(--c-text)}
@media (max-width:640px){
  .re-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .re-info{grid-template-columns:1fr}
  .re-info span{flex-basis:120px}
  .re-lap{grid-template-columns:36px 1fr 1fr}
  .re-lap small{grid-column:1/-1;text-align:left}
  .re-heat{grid-template-columns:minmax(0,1fr) auto auto}
  .re-heat small{display:none}
}
/* секундомер идущего вылета в чипе статуса */
.heat-row{grid-template-columns:44px 120px minmax(124px,auto) 80px minmax(0,1fr) 70px 18px}
.heat-status{white-space:nowrap}
.heat-pilot-meta .heat-time{white-space:nowrap}
.mh-info{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.mh-head b{white-space:normal}

/* ---------- Кнопки-иконки (data-ic): на десктопе иконка + подпись, на телефоне только иконка ---------- */
/* подпись остаётся в разметке — её читают скринридеры, скрывается только визуально */
.ib{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.ib[hidden]{display:none !important}
.ib::before{content:"";flex:0 0 14px;width:14px;height:14px;background:currentColor;
  -webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat;transition:transform .18s}
.ib-end::before{order:2}
[data-ic="edit"]{--ic:url(/icons/edit.svg)}
[data-ic="delete"]{--ic:url(/icons/delete.svg)}
[data-ic="refresh"]{--ic:url(/icons/refresh.svg)}
[data-ic="cross"]{--ic:url(/icons/cross.svg)}
[data-ic="info"]{--ic:url(/icons/info.svg)}
[data-ic="link"]{--ic:url(/icons/link.svg)}
[data-ic="bolt"]{--ic:url(/icons/bolt.svg)}
[data-ic="stats"]{--ic:url(/icons/stats.svg)}
[data-ic="appeal"]{--ic:url(/icons/appeal.svg)}
[data-ic="reglament"]{--ic:url(/icons/reglament.svg)}
[data-ic="coach-heats"]{--ic:url(/icons/coach-heats.svg)}
[data-ic="stop"]{--ic:url(/icons/stop.svg)}
[data-ic="check"]{--ic:url(/icons/check.svg)}
[data-ic="graph"]{--ic:url(/icons/graph.svg)}
[data-ic="table"]{--ic:url(/icons/table.svg)}
[data-ic="download"]{--ic:url(/icons/download.svg)}
[data-ic="prev"],[data-ic="next"],[data-ic="up"],[data-ic="down"]{--ic:url(/icons/chevron.svg)}
[data-ic="prev"]::before{transform:rotate(180deg)}
[data-ic="up"]::before{transform:rotate(-90deg)}
[data-ic="down"]::before{transform:rotate(90deg)}
@media (max-width:640px){
  .ib{font-size:0 !important;gap:0;padding:0 !important;width:44px !important;min-width:44px;height:44px;min-height:44px !important;
    flex:0 0 44px !important;border-radius:14px;letter-spacing:0}
  .ib::before{flex-basis:19px;width:19px;height:19px}
  .client-modal-dialog .manager-actions .ib{margin-right:0}
}
[data-ic="search"]{--ic:url(/icons/search.svg)}
[data-ic="plus"]{--ic:url(/icons/plus.svg)}
[data-ic="send"]{--ic:url(/icons/send.svg)}
@media (max-width:640px){
  /* шапка уведомлений: «Отправить» и «Обновить» — компактные иконки в одну строку */
  #tab-notifications .panel-head .panel-actions{display:flex;flex-direction:row;gap:8px;flex-wrap:nowrap}
  #notify-refresh{flex:0 0 44px !important;width:44px !important;height:44px}
}

/* ---------- Атмосфера (шарики) на всех устройствах; выключается только настройкой «декор» ---------- */
@media (max-width:900px){
  .client-ambient{display:block !important;position:fixed;inset:0;z-index:0}
  .client-app::before{background:
    radial-gradient(520px 420px at 10% 6%, color-mix(in srgb,var(--c-accent) 11%,transparent),transparent 65%),
    radial-gradient(520px 460px at 92% 88%, color-mix(in srgb,var(--c-accent-2) 10%,transparent),transparent 68%)}
  .client-orb-a{width:150px;height:150px;left:-50px;top:9%}
  .client-orb-b{width:96px;height:96px;right:6%;top:4%}
  .client-orb-c{width:190px;height:190px;right:-70px;bottom:10%}
  .client-orb-d{width:64px;height:64px;left:30%;bottom:22%}
  .client-orb-e{width:84px;height:84px;left:12%;top:40%}
  .client-orb-f{width:110px;height:110px;right:22%;bottom:34%}
  .client-orb-g{width:52px;height:52px;left:62%;top:22%}
  .client-orb-h{width:74px;height:74px;right:2%;top:55%}
  .client-ring-a{width:300px;height:300px;right:-130px;top:22%}
  .client-ring-b{width:190px;height:190px;left:8%;bottom:-100px}
}
html.server-decor-off .client-ambient,
html.client-user-decor-off .client-ambient{display:none !important}

/* ---------- Редактор места пилота в вылете (главный судья) ---------- */
.heat-edit{grid-column:1/-1;display:flex;flex-direction:column;gap:10px;padding-top:10px;border-top:1px dashed var(--c-line)}
.heat-edit-colors{display:flex;flex-wrap:wrap;gap:6px}
.heat-color-chip{appearance:none;display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:6px 14px;border-radius:999px;cursor:pointer;font:inherit;font-size:12px;
  color:var(--c-text);border:1px solid var(--c-line);background:color-mix(in srgb,var(--pc) 10%,transparent)}
.heat-color-chip i{width:11px;height:11px;border-radius:50%;background:var(--pc)}
.heat-color-chip.on{border:2px solid var(--pc);background:color-mix(in srgb,var(--pc) 28%,transparent);font-weight:700}
.heat-color-chip:disabled{opacity:.35;cursor:not-allowed}
.heat-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px}
.heat-edit-grid label{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--c-muted);min-width:0}
.heat-edit-grid select{width:100%}
.heat-edit-actions{display:flex;flex-wrap:wrap;gap:8px}
.ib.active{border-color:var(--c-accent);color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 14%,transparent)}
@media (max-width:640px){
  .heat-edit-grid{grid-template-columns:1fr}
  .heat-color-chip{flex:1 1 calc(50% - 6px);justify-content:center}
  .heat-edit-actions>*{flex:1 1 auto;min-height:44px}
}
.bad-text{color:var(--c-danger)}

/* ---------- Механик: таблица закреплённых пилотов и граф ---------- */
#mech-view-seg{margin:10px 0 12px}
.mech-table{width:100%;border-collapse:separate;border-spacing:0 6px;font-size:13px}
.mech-table th{text-align:left;font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--c-muted);padding:0 12px}
.mech-table td{padding:10px 12px;vertical-align:top;background:color-mix(in srgb,var(--c-text) 4%,transparent);border-top:1px solid var(--c-line);border-bottom:1px solid var(--c-line)}
.mech-table td:first-child{border-left:4px solid var(--pc);border-radius:12px 0 0 12px}
.mech-table td:last-child{border-right:1px solid var(--c-line);border-radius:0 12px 12px 0}
.mech-table td small{display:block;color:var(--c-muted);font-size:11.5px;margin-top:3px;line-height:1.45}

.mech-table .mech-acts{white-space:nowrap;text-align:right}
.mech-table .mech-acts .ib{margin-left:6px}
.mech-table tr.mech-drones-row td{padding:0;background:none;border:0}
.mech-table tr.mech-drones-row [data-mech-drones-box]:not([hidden]){padding:6px 0 10px}
.mech-graph-wrap{display:flex;flex-direction:column;gap:8px}
.mech-graph{width:100%;max-width:760px;height:auto;margin:0 auto;display:block}
.mg-link{stroke:color-mix(in srgb,var(--c-text) 28%,transparent);stroke-width:2}
.mg-halo{fill:none;stroke:color-mix(in srgb,var(--c-accent) 20%,transparent);stroke-width:10}
.mg-mech{fill:var(--c-accent);stroke:rgba(255,255,255,.6);stroke-width:3}
.mg-pnode{fill:var(--c-good);stroke-width:3}
.mg-pnode.female{fill:rgba(236,72,153,.28)}
.mg-pilot{cursor:pointer;outline:none}
.mg-pilot:hover .mg-pnode,.mg-pilot:focus-visible .mg-pnode{filter:brightness(1.15)}
.mg-ini{fill:#fff;font-weight:800;font-size:15px;text-anchor:middle}
.mg-ini-lg{font-size:22px}
.mg-label{fill:var(--c-text);font-weight:700;font-size:12px;text-anchor:middle}
.mg-chip{fill:var(--c-accent);font-weight:800;font-size:11px;text-anchor:middle;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.mg-badge{fill:var(--c-accent);stroke:rgba(255,255,255,.85);stroke-width:1.5}
.mg-badge-t{fill:#fff;font-weight:800;font-size:11px;text-anchor:middle}
.mg-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:11.5px;color:var(--c-muted);justify-content:center}
.mg-legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.mg-l-mech{background:var(--c-accent)}.mg-l-pilot{background:var(--c-good)}
.mg-l-ring{border:2px solid var(--c-danger);background:transparent}.mg-l-badge{background:var(--c-accent);width:8px!important;height:8px!important}
@media (max-width:760px){
  .mech-table,.mech-table tbody,.mech-table tr,.mech-table td{display:block;width:100%}
  .mech-table thead{display:none}
  .mech-table tr:not(.mech-drones-row){margin-bottom:8px;border:1px solid var(--c-line);border-left:4px solid var(--pc);border-radius:14px;overflow:hidden;
    background:color-mix(in srgb,var(--c-text) 4%,transparent)}
  .mech-table td{border:0 !important;border-radius:0 !important;background:none;padding:7px 12px}
  .mech-table td[data-label]:not(:first-child)::before{content:attr(data-label);display:block;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--c-muted);margin-bottom:2px}
  .mech-table .mech-acts{text-align:left;padding-bottom:12px}
  .mech-table .mech-acts .ib{margin:0 6px 0 0}
}
@media (max-width:760px){
  .mech-table tr:not(.mech-drones-row),.mech-table td{box-sizing:border-box;max-width:100%}
  .mech-table td,.mech-table td b{overflow-wrap:anywhere}
}
@media (max-width:760px){ .mech-table{min-width:0 !important;width:100% !important} }

/* ---------- «Главная» (HomeDashboard.qml): герой, показатели, мероприятие, возможности ---------- */
.home{display:flex;flex-direction:column;gap:16px}
.home button{appearance:none;font:inherit;color:inherit;text-align:left;cursor:pointer}
.home-hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:24px;align-items:center;padding:26px 28px;border-radius:24px;overflow:hidden;
  border:1px solid color-mix(in srgb,var(--c-accent) 30%,var(--c-line));
  background:linear-gradient(110deg,color-mix(in srgb,var(--c-accent) 16%,transparent),color-mix(in srgb,var(--c-surface) 55%,transparent) 55%,color-mix(in srgb,var(--c-surface) 40%,transparent));
  backdrop-filter:blur(var(--site-blur,18px)) saturate(150%);-webkit-backdrop-filter:blur(var(--site-blur,18px)) saturate(150%);
  box-shadow:0 20px 50px color-mix(in srgb,#000 20%,transparent),inset 0 1px 0 color-mix(in srgb,#fff 10%,transparent)}
.home-hero::after{content:"";position:absolute;right:-120px;top:-120px;width:320px;height:320px;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,color-mix(in srgb,var(--c-accent) 22%,transparent),transparent 68%)}
.home-hero-copy{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:0;position:relative;z-index:1}
.home-eyebrow{font-size:10.5px;font-weight:900;letter-spacing:.16em;text-transform:uppercase;color:var(--c-accent)}
.home-eyebrow.muted-eyebrow{color:var(--c-muted)}
.home-hero h2{margin:0;font-size:clamp(24px,2.4vw,32px);letter-spacing:-.02em;line-height:1.15}
.home-role{padding:4px 12px;border-radius:999px;font-size:12px;font-weight:800;color:var(--rc);
  background:color-mix(in srgb,var(--rc) 14%,transparent);border:1px solid color-mix(in srgb,var(--rc) 38%,transparent)}
.home-step{display:grid;grid-template-columns:40px minmax(0,1fr) 26px;align-items:center;gap:12px;width:100%;margin-top:6px;padding:12px 14px;border-radius:16px;
  border:1px solid color-mix(in srgb,var(--tone) 40%,transparent);background:color-mix(in srgb,var(--tone) 11%,transparent);transition:transform .18s,background .18s}
.home-step:hover{transform:translateY(-1px);background:color-mix(in srgb,var(--tone) 18%,transparent)}
.home-step-ic{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--tone);background:color-mix(in srgb,var(--tone) 22%,transparent)}
.home-step-ic .ui-icon{width:18px;height:18px}
.home-step-copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.home-step-copy b{font-size:14px}
.home-step-copy small{color:var(--c-muted);font-size:12px;overflow-wrap:anywhere}
.home-step-go{width:26px;height:26px;border-radius:50%;background:var(--tone);position:relative}
.home-step-go::after{content:"";position:absolute;inset:0;background:#fff;-webkit-mask:url(/icons/chevron.svg) center/13px no-repeat;mask:url(/icons/chevron.svg) center/13px no-repeat}
/* радар: кольца, вращающийся луч (conic-gradient) и отметки предстоящих мероприятий */
.home-radar{position:relative;width:170px;aspect-ratio:1;border-radius:50%;z-index:1;
  background:radial-gradient(circle,color-mix(in srgb,var(--c-accent) 10%,transparent),transparent 70%)}
.home-radar::before,.home-radar::after{content:"";position:absolute;background:color-mix(in srgb,var(--c-accent) 20%,transparent)}
.home-radar::before{left:0;right:0;top:50%;height:1px}.home-radar::after{top:0;bottom:0;left:50%;width:1px}
.home-ring{position:absolute;border-radius:50%;border:1px solid color-mix(in srgb,var(--c-accent) 34%,transparent)}
.home-ring.r1{inset:0}.home-ring.r2{inset:22%}.home-ring.r3{inset:40%;background:color-mix(in srgb,var(--c-accent) 10%,transparent)}
.home-sweep{position:absolute;inset:0;border-radius:50%;
  background:conic-gradient(from 0deg,color-mix(in srgb,var(--c-accent) 45%,transparent),transparent 70deg,transparent);
  animation:homeSweep 4.2s linear infinite}
.home-core{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:var(--c-accent);box-shadow:0 0 12px var(--c-accent)}
.home-blip{position:absolute;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:var(--c-accent);animation:homeBlip 1.8s ease-in-out infinite}
.home-blip.first{background:var(--c-good);box-shadow:0 0 10px var(--c-good)}
@keyframes homeSweep{to{transform:rotate(360deg)}}
@keyframes homeBlip{0%,100%{opacity:1}50%{opacity:.35}}
html.server-effects-off .home-sweep,html.client-user-effects-off .home-sweep,html.server-effects-off .home-blip,html.client-user-effects-off .home-blip{animation:none}
@media (prefers-reduced-motion:reduce){.home-sweep,.home-blip{animation:none}}
.home-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.home-kpi{display:flex;align-items:center;gap:12px;padding:14px;border-radius:18px;border:1px solid var(--c-line);
  background:color-mix(in srgb,var(--c-surface) 60%,transparent);backdrop-filter:blur(var(--site-blur,18px));-webkit-backdrop-filter:blur(var(--site-blur,18px));transition:transform .18s,border-color .18s}
.home-kpi:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--tone) 55%,var(--c-line))}
.home-kpi.hot{border-color:color-mix(in srgb,var(--tone) 60%,var(--c-line));box-shadow:0 0 0 1px color-mix(in srgb,var(--tone) 30%,transparent)}
.home-kpi-ic{flex:0 0 42px;height:42px;border-radius:13px;display:grid;place-items:center;color:var(--tone);background:color-mix(in srgb,var(--tone) 16%,transparent)}
.home-kpi-ic .ui-icon{width:19px;height:19px}
.home-kpi b{display:block;font-size:24px;line-height:1.1}
.home-kpi small{display:block;color:var(--c-muted);font-size:11.5px;margin-top:2px}
.home-event{display:flex;flex-direction:column;gap:8px;width:100%;padding:18px 20px;border-radius:20px;border:1px solid var(--c-line);
  background:color-mix(in srgb,var(--c-surface) 60%,transparent);backdrop-filter:blur(var(--site-blur,18px));-webkit-backdrop-filter:blur(var(--site-blur,18px))}
.home-event:hover{border-color:color-mix(in srgb,var(--c-accent) 50%,var(--c-line))}
.home-event-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.home-count{padding:4px 12px;border-radius:999px;font-size:12px;font-weight:800;color:var(--c-good);background:color-mix(in srgb,var(--c-good) 16%,transparent);white-space:nowrap}
.home-event-name{font-size:20px}
.home-event small{color:var(--c-muted)}
.home-progress{display:block;height:6px;border-radius:3px;background:color-mix(in srgb,var(--c-text) 8%,transparent);overflow:hidden}
.home-progress i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--c-accent),var(--c-good))}
.home-title{margin:4px 0 0;font-size:15px}
.home-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.home-tile{display:flex;flex-direction:column;gap:4px;padding:14px;border-radius:18px;border:1px solid var(--c-line);
  background:color-mix(in srgb,var(--c-surface) 55%,transparent);transition:transform .18s,border-color .18s}
.home-tile:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--c-accent) 55%,var(--c-line))}
.home-tile-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.home-tile-ic{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 14%,transparent)}
.home-tile-ic .ui-icon{width:16px;height:16px}
.home-tile-top b{font-size:20px}
.home-tile strong{font-size:13.5px}
.home-tile small{color:var(--c-muted);font-size:11.5px}
@media (max-width:900px){.home-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){
  .home{gap:12px}
  .home-hero{grid-template-columns:1fr;padding:18px;border-radius:20px}
  .home-radar{display:none}
  .home-kpi{padding:12px;gap:10px}.home-kpi b{font-size:20px}
  .home-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .home-event-name{font-size:17px}
}
.device-icon{background:color-mix(in srgb,currentColor 12%,transparent)}

/* ---------- Участники мероприятия ---------- */
.ep-box{display:flex;flex-direction:column;gap:8px;margin-bottom:6px}
.ep-add{display:flex;gap:8px;flex-wrap:wrap}
.ep-add select{flex:1 1 240px;min-width:0}
.ep-list{display:flex;flex-direction:column;gap:6px}
.ep-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-text) 4%,transparent)}
.ep-row>i{flex:0 0 8px;height:8px;border-radius:50%}
.ep-row>span{flex:1;min-width:0;display:flex;flex-direction:column}
.ep-row small{color:var(--c-muted);font-size:11.5px}
.ep-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* атрибут hidden всегда скрывает элемент (иначе display из классов, напр. .profile-hub-item, его перебивает) */
[hidden]{display:none !important}
.device-os-img{width:22px;height:22px;object-fit:contain}

/* итоги мероприятия */
.rs-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.rs-export{display:flex;gap:8px}
.rs-dl{display:inline-flex;align-items:center;gap:6px;text-decoration:none;padding:8px 14px;border-radius:12px;min-height:38px}
.rs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.rs-card{border:1px solid var(--c-border,rgba(255,255,255,.12));border-radius:12px;padding:10px 12px;background:rgba(255,255,255,.03)}
.rs-card .rs-table{width:100%;min-width:0 !important;table-layout:fixed;border-collapse:collapse;margin-top:6px;display:table}
.rs-card .rs-table th{text-align:left;font-size:10.5px;color:var(--c-muted);font-weight:600;padding:3px 4px !important;text-transform:none;letter-spacing:0}
.rs-card .rs-table td{padding:5px 4px !important;font-size:13px;border-top:1px solid var(--c-line,rgba(255,255,255,.06));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rs-card .rs-table th:first-child,.rs-card .rs-table td:first-child{width:46px;font-weight:700}
.rs-card .rs-table th:nth-child(3),.rs-card .rs-table th:nth-child(4){width:92px}
.rs-card .rs-table td.mono{font-size:12px;font-variant-numeric:tabular-nums}
@media (max-width:640px){.rs-card .rs-table th:nth-child(3),.rs-card .rs-table td:nth-child(3){display:none}}
.rs-gold td:first-child{color:#d6a800}

/* значки на иконках вкладок: справа — счётчик, слева — новые заявки техконтролю */
.nav-ic-wrap{position:relative;display:inline-flex;flex:0 0 auto}
.nav-badge{position:absolute;top:-8px;min-width:16px;height:16px;padding:0 4px;box-sizing:border-box;border-radius:8px;
  background:var(--c-danger,#e5484d);color:#fff;font:700 10px/16px system-ui,sans-serif;font-style:normal;text-align:center;
  pointer-events:none;box-shadow:0 0 0 2px var(--c-bg);z-index:1}
.nav-badge.r{right:-11px}
.nav-badge.l{left:-11px}
.nav-badge.warn{background:var(--c-warning,#f5a524);color:#1a1a1a}

/* граф механика: жесты внутри графа двигают граф, а не страницу */
svg.mech-graph{touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}
svg.mech-graph:active{cursor:grabbing}

/* svg-иконка в строке текста вместо символов ✓ ← × и т.п. */
.ui-icon.gi{width:1em;height:1em;flex:0 0 1em;vertical-align:-.15em;--icon-tint:currentColor}
.icon-mini .ui-icon.gi{width:12px;height:12px}

/* граф механика: значки ролей на узлах и в легенде */
.mg-role circle{fill:var(--c-surface);stroke-width:1.5}
.mg-role use{fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.mg-role.wrench circle,.mg-role.wrench use{stroke:var(--c-accent)}
.mg-role.pilot circle,.mg-role.pilot use{stroke:var(--c-good)}
.mg-l-role{display:inline-flex;align-items:center;gap:5px}
.mg-l-role.mech .gi{--icon-tint:var(--c-accent)}
.mg-l-role.pilot .gi{--icon-tint:var(--c-good)}

/* ---------- Таблица лидеров без очков: вылет, цвет пилота, круги по секундомеру; профиль пилота ---------- */
.lb-row{grid-template-columns:44px minmax(0,1fr) auto;box-shadow:inset 4px 0 0 var(--pc,transparent)}
.lb-row.clickable,.podium-slot.clickable{cursor:pointer}
.lb-row.clickable:hover,.podium-slot.clickable:hover{border-color:var(--c-accent)}
.lane-tag{display:inline-flex;align-items:center;gap:5px}
.lane-tag i{width:8px;height:8px;border-radius:50%;background:var(--pc,var(--c-line));flex:0 0 8px}
.lb-row .lane-tag i{background:var(--pc)}
.lap-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.lap-chips span{font:10px ui-monospace,monospace;padding:2px 6px;border-radius:6px;border:1px solid var(--c-line);color:var(--c-muted)}
.lap-chips span.best{border-color:var(--c-good);color:var(--c-good);background:color-mix(in srgb,var(--c-good) 12%,transparent)}
.pp-head{position:relative;overflow:hidden;border:1px solid var(--c-line);border-radius:16px;padding:0 16px 14px;margin:10px 0 12px;background:color-mix(in srgb,var(--c-surface) 66%,transparent)}
.pp-cover{height:96px;margin:0 -16px;background:linear-gradient(90deg,color-mix(in srgb,var(--c-accent) 45%,transparent),color-mix(in srgb,var(--c-accent) 8%,transparent))}
.pp-avatar{width:88px;height:88px;margin-top:-44px;border-radius:50%;display:grid;place-items:center;font-size:30px;font-weight:800;color:var(--c-accent);background:var(--c-surface);border:3px solid var(--c-accent)}
.pp-head.female .pp-avatar{border-color:rgba(236,72,153,.55)}
.pp-head h2{margin:8px 0 6px}
.pp-tags{display:flex;flex-wrap:wrap;gap:6px}
.pp-counters{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;text-align:center}
.pp-counters b{display:block;font-size:20px}
.pp-counters span{font-size:11px;color:var(--c-muted)}
.pp-info{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;font-size:13px}
.pp-info span{color:var(--c-muted)}
.pp-drone{display:flex;justify-content:space-between;gap:8px;padding:4px 0;font-size:13px}
.pp-drone b{font-family:ui-monospace,monospace;color:var(--c-accent)}
@media (max-width:700px){.pp-cover{height:72px}.pp-avatar{width:72px;height:72px;margin-top:-36px;font-size:24px}}
/* ФИО в профиле — мягкий неоновый засвет, цвет текста прежний */
.pp-head h2{text-shadow:0 0 10px color-mix(in srgb,var(--c-accent) 45%,transparent)}
.pp-head.female h2{text-shadow:0 0 10px rgba(236,72,153,.55)}

/* ---------- телефон: ничего не выходит за край экрана ----------
   файл подключается последним: правила ниже перекрывают широкие сетки выше */
@media (max-width:640px){
  .content-grid > *, .panel, .mh-card, .my-heat-pilot, .heat-card, .heat-pilot{ min-width:0; max-width:100%; }
  .tab{ overflow-wrap:break-word; }
  .panel-head{ flex-wrap:wrap; gap:8px; }
  .panel-actions{ flex-wrap:wrap; max-width:100%; }
  .panel-actions > *, .panel-actions select{ max-width:100%; }
  .heat-row .heat-cell, .heat-row .heat-stage{ min-width:0; }
  .heat-status{ max-width:100%; overflow:hidden; text-overflow:ellipsis; flex:0 1 auto; }
  .heats-toolbar{ flex-wrap:wrap; gap:6px; }
  .heats-legend{ display:none; }
  .mh-head{ flex-wrap:wrap; }
  .mh-head b{ white-space:normal; flex:1 1 60%; }
  .mh-info{ grid-template-columns:1fr; }
  .mh-result{ flex-wrap:wrap; }
  .my-heat-clock-row{ flex-wrap:wrap; gap:6px; }
  .re-info{ flex-wrap:wrap; }
  table{ display:block; max-width:100%; overflow-x:auto; }
}

/* ---------- командный зачёт и фильтр вылетов ---------- */
.heats-filter{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.heats-filter button{border:1px solid var(--c-line);background:var(--c-surface);color:var(--c-text);border-radius:999px;padding:6px 12px;cursor:pointer}
.heats-filter button.active{background:var(--c-accent);color:#fff;border-color:transparent}
.heats-filter i{font-style:normal;opacity:.75;margin-left:4px}
.event-format{border:1px solid var(--c-line);border-radius:12px;padding:10px 12px;margin:10px 0}
.event-format-edit{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.event-format-edit input{width:80px}
.mj-roles{display:block;font-weight:600}
.mj-swap{border:2px solid var(--c-warning);background:color-mix(in srgb,var(--c-warning) 16%,transparent);border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:6px}
.nav-item.attention::after{content:"⚠";margin-left:6px;color:var(--c-warning)}
.team-name{margin:0 0 10px}
.team-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.team-card{border:1px solid var(--c-line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:8px;min-width:0}
.team-card.wide{grid-column:1/-1}
.team-card h4{margin:0;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--c-muted)}
.team-card textarea{width:100%;box-sizing:border-box}
.team-member{display:flex;gap:8px;align-items:center}
.team-member small{display:block}
.drone-tag{display:block;font-weight:700;margin:2px 0 4px}
.drone-tag.own{color:var(--c-accent)}
.drone-tag.team{color:var(--c-warning)}
.dreq{border:1px solid var(--c-line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.dreq-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.dreq-actions input{flex:1 1 200px}
.team-drones{width:100%;border-collapse:collapse;font-size:12px;margin-top:4px}
.team-drones td{padding:3px 6px;border-top:1px solid var(--c-line)}
.team-drones tr.active td{font-weight:700;color:var(--c-accent)}
.team-head-row{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.teamsadmin-create{display:flex;gap:8px;margin:10px 0;flex-wrap:wrap}
.teamsadmin-create input{flex:1 1 240px}
.teamsadmin-grid{display:grid;grid-template-columns:260px 1fr;gap:12px}
@media (max-width:640px){.teamsadmin-grid{grid-template-columns:1fr}}
.teamsadmin-list{display:flex;flex-direction:column;gap:6px;max-height:520px;overflow-y:auto}
.teamsadmin-item{border:1px solid var(--c-line);border-radius:10px;padding:8px 10px;cursor:pointer;display:flex;flex-direction:column;gap:2px}
.teamsadmin-item.active{border-color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 10%,transparent)}
.teamsadmin-item small{display:block}
.teamsadmin-detail{border:1px solid var(--c-line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:8px;min-width:0}
.teamsadmin-rename{display:flex;gap:8px;flex-wrap:wrap}
.teamsadmin-rename input{flex:1 1 200px}
.teamsadmin-member{display:flex;justify-content:space-between;align-items:center;gap:8px;border-top:1px solid var(--c-line);padding-top:6px}
.teamsadmin-add{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.teamsadmin-add select{flex:1 1 220px}
/* тег формата зачёта и местные роли в команде */
.comp-tag{display:inline-block;border-radius:999px;padding:2px 9px;font-size:11px;font-weight:700;margin-left:6px;border:1px solid currentColor}
.comp-tag.solo{color:var(--c-accent)}
.comp-tag.team{color:var(--c-warning)}
.team-tag{display:inline-block;border-radius:6px;padding:1px 7px;font-size:11px;font-weight:700;margin-left:6px;vertical-align:middle}
.team-tag.pilot{background:color-mix(in srgb,var(--c-accent) 18%,transparent);color:var(--c-accent)}
.team-tag.tech{background:color-mix(in srgb,var(--c-warning) 18%,transparent);color:var(--c-warning)}
/* техконтроль: заявка участника команды */
.app-card.team-app{border-left:3px solid var(--c-warning)}
.tech-team{border:1px solid color-mix(in srgb,var(--c-warning) 35%,transparent);background:color-mix(in srgb,var(--c-warning) 6%,transparent);border-radius:10px;padding:8px 10px;margin:6px 0;display:flex;flex-direction:column;gap:4px}
.tech-team h5{margin:4px 0 0;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--c-muted)}
.tech-team-mate small{display:block}

/* Переключатели сохраняют контраст текста при наведении в любой теме. */
.client-app .segmented button:not(.active):not(.is-active):hover,
.client-app .sidebar-theme-seg button:not(.is-active):hover{
  background:var(--c-surface-hover);
  color:var(--c-text);
  -webkit-text-fill-color:var(--c-text);
}
.client-app .segmented button.active:hover,
.client-app .segmented button.is-active:hover{
  background:var(--c-accent);
  color:var(--c-on-accent);
  -webkit-text-fill-color:var(--c-on-accent);
}
.client-app .sidebar-theme-seg button.is-active:hover{
  background:var(--c-accent);
  color:var(--c-on-accent);
  -webkit-text-fill-color:var(--c-on-accent);
}
/* Описания в карточках и мероприятиях используют одну базовую величину. */
.client-app .event-card p,.client-app .app-card-note,
.client-app .tech-team-mate small,.client-app .team-card p,
.client-app .lb-main small{font-size:13px;line-height:1.45}

/* Таблица лидеров: чёткое место, выровненные времена и мягкое выделение лидеров. */
#tab-leaderboard .lb-row{padding:13px 16px;gap:14px;border-radius:14px;
  transition:background .18s ease,border-color .18s ease,transform .18s ease}
#tab-leaderboard .lb-row:hover{background:color-mix(in srgb,var(--c-accent) 6%,var(--c-surface));transform:translateY(-1px)}
#tab-leaderboard .lb-row:nth-child(-n+3){border-color:color-mix(in srgb,var(--c-accent) 24%,var(--c-line))}
#tab-leaderboard .lb-place{width:36px;height:36px;font-variant-numeric:tabular-nums}
#tab-leaderboard .lb-time{font-size:15px;font-variant-numeric:tabular-nums;white-space:nowrap}
#tab-leaderboard .podium-slot{box-shadow:var(--c-shadow-sm);min-width:0}
@media(max-width:600px){#tab-leaderboard .lb-row{grid-template-columns:38px minmax(0,1fr);gap:8px;padding:11px}
  #tab-leaderboard .lb-time{grid-column:2;font-size:14px}
  #tab-leaderboard .podium{gap:5px}}

.team-view-switch{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}.team-view-switch button{border:1px solid var(--c-line);border-radius:10px;padding:10px 16px;background:var(--c-surface);color:var(--c-text);cursor:pointer}.team-view-switch button.active{border-color:var(--c-accent);color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 12%,var(--c-surface))}.participant-profile{max-width:100%;overflow-wrap:anywhere}.participant-profile[hidden],#team-own-panel[hidden],#team-admin-panel[hidden]{display:none!important}

/* ==================== Дроны: карточка с баннером (DronesTab.qml) ==================== */
.drone-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.drone-summary:empty{display:none}
.drone-sum{display:grid;justify-items:center;gap:2px;padding:12px 6px;border:1px solid var(--c-line);border-radius:14px;background:color-mix(in srgb,var(--c-surface) 60%,transparent);color:var(--c-muted);font:inherit;cursor:pointer;transition:border-color .15s,background .15s}
.drone-sum b{font-size:20px;color:var(--c-text)}
.drone-sum span{font-size:11px}
.drone-sum:disabled{opacity:.5;cursor:default}
.drone-sum.s-approved b{color:var(--c-good)}.drone-sum.s-pending b{color:var(--c-warning)}.drone-sum.s-rejected b{color:var(--c-danger)}
.drone-sum.active{border-color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 14%,transparent)}
.drone-sum.s-approved.active{border-color:var(--c-good);background:color-mix(in srgb,var(--c-good) 14%,transparent)}
.drone-sum.s-pending.active{border-color:var(--c-warning);background:color-mix(in srgb,var(--c-warning) 14%,transparent)}
.drone-sum.s-rejected.active{border-color:var(--c-danger);background:color-mix(in srgb,var(--c-danger) 14%,transparent)}
.drone-card{--st:var(--c-muted);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--c-line);border-radius:18px;background:color-mix(in srgb,var(--c-surface) 72%,transparent);transition:transform .15s,border-color .15s,box-shadow .15s}
.drone-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--st) 45%,var(--c-line));box-shadow:var(--c-shadow-sm)}
.drone-card.st-approved{--st:var(--c-good)}.drone-card.st-pending{--st:var(--c-warning)}.drone-card.st-rejected{--st:var(--c-danger)}.drone-card.st-request{--st:var(--c-accent)}
.drone-banner{position:relative;height:112px;flex:none;overflow:hidden;border-bottom:1px solid color-mix(in srgb,var(--st) 45%,transparent);
  background:linear-gradient(90deg,color-mix(in srgb,var(--st) 40%,transparent),color-mix(in srgb,var(--c-accent) 16%,transparent) 60%,color-mix(in srgb,var(--c-accent) 28%,transparent))}
/* круги и дрон — одного центра и фиксированного размера: на десктопе не растут вместе с шириной карточки */
.drone-art{position:absolute;right:22px;top:50%;width:92px;height:92px;transform:translateY(-50%);pointer-events:none}
.drone-art::before{content:"";position:absolute;inset:6px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--c-accent) 34%,transparent) 0 58%,transparent 60%)}
.drone-art::after{content:"";position:absolute;inset:-14px;border-radius:50%;border:1px solid rgba(255,255,255,.09);box-shadow:0 0 0 14px rgba(255,255,255,.025),0 0 0 15px rgba(255,255,255,.06)}
.drone-art img{position:absolute;left:50%;top:50%;width:88%;height:auto;transform:translate(-50%,-50%) rotate(-8deg);filter:drop-shadow(0 8px 14px rgba(0,0,0,.35))}
.drone-banner-info{position:absolute;inset:12px auto 12px 14px;width:62%;display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.drone-banner-info small{font-size:11px;color:var(--c-text);opacity:.8;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drone-badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:800;color:var(--c-muted);border:1px solid color-mix(in srgb,currentColor 55%,transparent);background:color-mix(in srgb,currentColor 14%,var(--c-surface))}
.drone-badge i{width:7px;height:7px;border-radius:50%;background:currentColor}
.drone-badge.good{color:var(--c-good)}.drone-badge.warn{color:var(--c-warning)}.drone-badge.bad{color:var(--c-danger)}.drone-badge.accent{color:var(--c-accent)}
.drone-ch{margin-top:auto;display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:8px;background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.18);color:#fff;font:700 13px ui-monospace,monospace}
.drone-ch em{font:600 9px/1 inherit;font-style:normal;letter-spacing:.08em;opacity:.75}
.drone-body{display:flex;flex-direction:column;gap:8px;padding:12px 14px 14px;flex:1}
.drone-title{font-size:16px}
.drone-body .drone-tag{font-size:11.5px;color:var(--c-muted)}
.drone-body .drone-tag.team{color:var(--c-warning)}
.drone-specs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.drone-specs div{min-width:0;padding:7px 9px;border:1px solid var(--c-line);border-radius:10px;background:color-mix(in srgb,var(--c-surface-2) 60%,transparent)}
.drone-specs span{display:block;font-size:9px;letter-spacing:.07em;text-transform:uppercase;color:var(--c-muted)}
.drone-specs b{display:block;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drone-pending{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border:1px solid color-mix(in srgb,var(--c-warning) 45%,transparent);border-radius:10px;background:color-mix(in srgb,var(--c-warning) 10%,transparent);font-size:12px;line-height:1.35}
.drone-pending .ui-icon{flex:none;width:14px;height:14px;margin-top:1px;background:var(--c-warning)}
.drone-card .drone-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:8px;border-top:1px solid var(--c-line)}
@media (max-width:640px){.drone-summary{gap:6px}.drone-sum{padding:9px 4px}.drone-sum b{font-size:17px}.drone-banner{height:100px}.drone-art{width:82px;height:82px;right:18px}
  .drone-card .drone-actions>*{flex:1 1 auto}}

/* ==================== Таблица лидеров: вкладки ЛЗ / КЗ ==================== */
#leader-subtabs button.female.active{background:#e0559b;border-color:#e0559b}
.lb-caption{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:4px 2px 10px}
.lb-caption small{color:var(--c-muted);font-size:11px}
.lb-row .lb-place{font-weight:800}
.lb-row.top1 .lb-place{color:#f5c542}.lb-row.top2 .lb-place{color:#c0c7d1}.lb-row.top3 .lb-place{color:#cd8a4b}
.lb-row .lb-time{display:grid;justify-items:end;gap:2px}
.lb-laps{font-size:15px;color:var(--c-warning)}
.lb-empty{display:grid;justify-items:center;gap:6px;text-align:center;padding:34px 16px}
.lb-empty span{color:var(--c-muted);font-size:12.5px;max-width:420px}

/* ==================== Профиль участника (PilotProfilePage.qml) ==================== */
.person-dialog{max-width:920px;padding:20px 22px 24px;text-align:left}
.person-dialog h2{text-align:left}
.person-link{color:inherit;text-decoration:none}
.person-link:hover{color:var(--c-accent);text-decoration:underline}
.pp-cover{position:relative;overflow:hidden}
.pp-self{position:absolute;top:10px;right:12px;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:800;color:#fff;border:1px solid rgba(255,255,255,.5);background:rgba(255,255,255,.12)}
.pp-login{display:block;margin:-2px 0 8px;color:var(--c-muted);font-family:ui-monospace,monospace}
.pp-counters-4{grid-template-columns:repeat(4,1fr);border:1px solid var(--c-line);border-radius:14px;padding:6px;gap:0}
.pp-counters-4 button{padding:6px 2px;border:0;border-radius:10px;background:transparent;color:inherit;font:inherit;cursor:pointer}
.pp-counters-4 button+button{border-left:1px solid var(--c-line);border-radius:0}
.pp-counters-4 button:not(:disabled):hover{background:color-mix(in srgb,var(--c-accent) 10%,transparent)}
.pp-counters-4 button:disabled{cursor:default}
.pp-app{border-left:4px solid var(--c-accent)}
.pp-app.st-good{border-left-color:var(--c-good)}.pp-app.st-bad{border-left-color:var(--c-danger)}.pp-app.st-warn{border-left-color:var(--c-warning)}
.pp-app .pp-tags{margin-bottom:8px}
.pp-link{cursor:pointer;transition:border-color .15s,transform .15s}
.pp-link:hover{border-color:var(--c-accent);transform:translateY(-1px)}
.pp-link-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.pp-link-head h3{margin:0 0 8px}
.pp-more{color:var(--c-accent);font-size:12px;font-weight:800;white-space:nowrap}
.pp-more::after{content:" ›"}
.pp-medals{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pp-medal{--m:var(--c-good);display:grid;grid-template-columns:auto 1fr;column-gap:10px;align-items:center;padding:10px 12px;border-radius:12px;border:1px solid color-mix(in srgb,var(--m) 45%,var(--c-line));background:color-mix(in srgb,var(--m) 10%,transparent)}
.pp-medal.g{--m:#f5c542}.pp-medal.s{--m:#c0c7d1}.pp-medal.b{--m:#cd8a4b}
.pp-medal .ui-icon{grid-row:1/3;width:22px;height:22px;--icon-tint:var(--m)}
.pp-medal b{font-size:16px}
.pp-medal small{color:var(--c-muted);font-size:10.5px}
.pp-subhead{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.pp-empty,.pp-center{text-align:center}
.person-body>.panel,.person-body>article{margin-bottom:12px}
/* превью своей карточки в хабе профиля */
.profile-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;align-items:center;padding:16px;border:1px solid var(--c-line);border-radius:20px;color:var(--c-text);font:inherit;text-align:left;cursor:pointer;
  background:linear-gradient(90deg,color-mix(in srgb,var(--c-accent) 26%,transparent),color-mix(in srgb,var(--c-accent) 4%,transparent));transition:border-color .15s}
.profile-hero.female{background:linear-gradient(90deg,rgba(224,85,155,.26),color-mix(in srgb,var(--c-accent) 4%,transparent))}
.profile-hero:hover{border-color:var(--c-accent)}
.profile-hero-avatar{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;font-size:22px;font-weight:800;color:var(--c-accent);background:var(--c-surface);border:3px solid var(--c-accent)}
.profile-hero.female .profile-hero-avatar{color:#e0559b;border-color:#e0559b}
.profile-hero-main{display:grid;gap:3px;min-width:0}
.profile-hero-main b{font-size:17px}
.profile-hero-main small{color:var(--c-muted);font-family:ui-monospace,monospace}
.profile-hero-open{grid-column:1/-1;display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--c-muted)}
.profile-hero-open b{color:var(--c-accent)}
@media (max-width:700px){.pp-medals{grid-template-columns:repeat(2,1fr)}.person-dialog{padding:16px 12px 20px;border-radius:22px 22px 0 0}
}

/* ==================== План каналов: подсказка в форме дрона, точка цвета у канала ==================== */
.vtx-hint{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:-4px 0 4px}
.lane-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font:inherit;font-size:11.5px;font-weight:700;cursor:pointer;
  color:var(--c-text);border:1px solid var(--lc);background:color-mix(in srgb,var(--lc) 12%,transparent);transition:background .15s}
.lane-chip i{width:8px;height:8px;border-radius:50%;background:var(--lc)}
.lane-chip:hover{background:color-mix(in srgb,var(--lc) 22%,transparent)}
.lane-chip.active{background:color-mix(in srgb,var(--lc) 30%,transparent);border-width:1.5px}
.drone-ch i{width:9px;height:9px;border-radius:50%;border:1px solid #fff;flex:none}

/* ==================== Цвет канала: фон баннера, свечение, круги и оттенок дрона ==================== */
.drone-card{--lc:var(--c-accent)}
.drone-card .drone-banner{background:linear-gradient(90deg,color-mix(in srgb,var(--st) 40%,transparent),color-mix(in srgb,var(--lc) 18%,transparent) 60%,color-mix(in srgb,var(--lc) 34%,transparent))}
.drone-card .drone-art::before{background:radial-gradient(circle,color-mix(in srgb,var(--lc) 42%,transparent) 0 58%,transparent 60%)}
.drone-card .drone-art::after{border-color:color-mix(in srgb,var(--lc) 40%,transparent);box-shadow:0 0 0 14px color-mix(in srgb,var(--lc) 6%,transparent),0 0 0 15px color-mix(in srgb,var(--lc) 22%,transparent)}
/* дрон и оттенок поворачиваются вместе; оттенок — маска по силуэту drone.png */
.drone-fig{position:absolute;inset:0;transform:rotate(-8deg)}
.drone-art .drone-fig img{transform:translate(-50%,-50%)}
.drone-tint{position:absolute;left:6%;top:6%;width:88%;height:88%;display:none;background:var(--lc);opacity:.5;mix-blend-mode:color;
  -webkit-mask:url(/icons/drone.png) center/contain no-repeat;mask:url(/icons/drone.png) center/contain no-repeat}
.drone-card.has-lane .drone-tint{display:block}

/* ==================== Таблица лидеров: метка зачёта, выбывшие, топ-4 ==================== */
.lb-kind-label{display:flex;align-items:center;gap:10px;margin:0 0 10px}
.lb-kind-label[hidden]{display:none}
.lb-kind-chip{--k:var(--c-accent);display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:800;color:var(--k);border:1px solid var(--k);background:color-mix(in srgb,var(--k) 14%,transparent)}
.lb-kind-label.team .lb-kind-chip{--k:var(--c-warning)}
.lb-kind-chip .ui-icon{width:13px;height:13px;--icon-tint:currentColor}
#leader-subtabs.team button.active{background:var(--c-warning);border-color:var(--c-warning)}
.lb-row.out{border-color:color-mix(in srgb,var(--c-danger) 35%,var(--c-line));background:color-mix(in srgb,var(--c-danger) 5%,transparent)}
.lb-row.out .lb-main b{text-decoration:line-through;opacity:.75}
.lb-row.out .lane-tag{color:var(--c-danger)}
.lb-row.out .lb-place em{font-style:normal;font-size:10px;color:var(--c-danger)}
/* топ-4: медали-кольца с инициалами и тонкие ступени вместо крупных плашек */
.top4{--m:#f5c542}
.podium2{display:grid;grid-template-columns:1fr 1.1fr 1fr;align-items:end;gap:14px;margin:6px 0 14px;padding-bottom:10px;border-bottom:1px solid var(--c-line)}
.pod{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0;text-align:center}
.pod.p1{--m:#f5c542}.pod.p2{--m:#c7ced8}.pod.p3{--m:#cd8a4b}
.pod.empty{opacity:.35}
.pod.clickable{cursor:pointer}
.pod.clickable:hover .pod-medal{box-shadow:0 0 0 5px color-mix(in srgb,var(--m) 22%,transparent),0 0 18px color-mix(in srgb,var(--m) 40%,transparent)}
.pod-cup{width:18px;height:18px;--icon-tint:var(--m)}
.pod-medal{position:relative;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;font-size:19px;font-weight:800;color:var(--m);
  border:2.5px solid var(--m);background:color-mix(in srgb,var(--m) 14%,transparent);box-shadow:0 0 0 5px color-mix(in srgb,var(--m) 12%,transparent);transition:box-shadow .2s}
.pod.p1 .pod-medal{width:68px;height:68px;font-size:23px}
.pod-medal i{position:absolute;right:-3px;bottom:-3px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:10px;color:#1b1b1b;background:var(--m);border:2px solid var(--c-surface)}
.pod b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.pod small{font:11px ui-monospace,monospace;color:var(--c-muted)}
.pod.p1 small{color:var(--m)}
.pod-step{width:78%;height:28px;margin-top:4px;border-radius:10px 10px 0 0;border-top:2px solid var(--m);background:linear-gradient(180deg,color-mix(in srgb,var(--m) 34%,transparent),color-mix(in srgb,var(--m) 2%,transparent))}
.pod.p1 .pod-step{height:54px}.pod.p2 .pod-step{height:38px}
@media (max-width:600px){.podium2{gap:6px}.pod-medal{width:46px;height:46px;font-size:16px}.pod.p1 .pod-medal{width:58px;height:58px;font-size:20px}.pod b{font-size:12px}}

/* ==================== Окно регистрации: этапы мероприятия ==================== */
.event-stages{margin:4px 0 12px;text-align:left}
.event-stages-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.event-stages-head .lb-kind-chip.team{--k:var(--c-warning)}
.event-stages ol{list-style:none;margin:0;padding:0;counter-reset:st}
.event-stages li{position:relative;padding:0 0 12px 38px;counter-increment:st}
.event-stages li::before{content:counter(st);position:absolute;left:0;top:0;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800;
  color:var(--c-accent);border:1px solid var(--c-accent);background:color-mix(in srgb,var(--c-accent) 16%,transparent)}
.event-stages li:not(:last-child)::after{content:"";position:absolute;left:12px;top:30px;bottom:2px;width:2px;border-radius:1px;background:var(--c-line)}
.event-stages li b{font-size:13px}
.event-stages li p{margin:3px 0 0;font-size:12.5px;color:var(--c-muted);line-height:1.45}
.stage-flags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.stage-flags span{padding:2px 10px;border-radius:999px;font-size:11px;font-weight:800;color:var(--c-danger);border:1px solid color-mix(in srgb,var(--c-danger) 55%,transparent);background:color-mix(in srgb,var(--c-danger) 10%,transparent)}

/* ==================== Узор обложки профиля: сотовая сетка с затемнением ==================== */
/* цвет узора — цвет текста темы (на светлой теме тёмный), форма — маска из SVG-плитки, гаснет к левому краю */
.pp-cover,.profile-hero{position:relative;isolation:isolate}
.pp-cover::before,.profile-hero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;border-radius:inherit;
  background:var(--c-text);opacity:.11;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='54' height='31.18' viewBox='0 0 54 31.18'%3E%3Cpath d='M9 0h18l9 15.59L27 31.18H9L0 15.59zM36 15.59h18' fill='none' stroke='black' stroke-width='1'/%3E%3C/svg%3E") 0 0/54px 31.18px repeat,linear-gradient(90deg,transparent 5%,#000 75%);-webkit-mask-composite:source-in;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='54' height='31.18' viewBox='0 0 54 31.18'%3E%3Cpath d='M9 0h18l9 15.59L27 31.18H9L0 15.59zM36 15.59h18' fill='none' stroke='black' stroke-width='1'/%3E%3C/svg%3E") 0 0/54px 31.18px repeat,linear-gradient(90deg,transparent 5%,#000 75%);mask-composite:intersect}
.pp-cover::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,transparent 30%,color-mix(in srgb,var(--c-bg) 30%,transparent))}
.profile-hero::before{opacity:.09}
/* аватар: кольцо цвета акцента (у пилотки — розовое) и внутренний круг с мягким градиентом, как в приложении */
.pp-avatar,.profile-hero-avatar{position:relative;isolation:isolate}
.pp-avatar::before,.profile-hero-avatar::before{content:"";position:absolute;inset:6px;z-index:-1;border-radius:50%;
  background:linear-gradient(180deg,color-mix(in srgb,var(--ring,var(--c-accent)) 32%,transparent),color-mix(in srgb,var(--ring,var(--c-accent)) 8%,transparent))}
.pp-head.female,.profile-hero.female{--ring:#e0559b}
.pp-head.female .pp-avatar{border-color:#e0559b;color:#e0559b}

/* ==================== Графики статистики: кольцо и полосы ==================== */
.charts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}
.chart-card h3{margin:0 0 10px;font-size:14px}
.donut{position:relative;width:132px;height:132px;float:left;margin-right:16px}
.donut svg{width:100%;height:100%}
.donut-track{stroke:color-mix(in srgb,var(--c-line) 80%,transparent)}
.donut-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center}
.donut-center b{font-size:20px}.donut-center small{font-size:10px;color:var(--c-muted)}
.donut-legend{list-style:none;margin:0;padding:6px 0 0;display:grid;gap:7px;overflow:hidden}
.donut-legend li{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:8px;font-size:12.5px}
.donut-legend li.dim{opacity:.45}
.donut-legend i{width:10px;height:10px;border-radius:3px}
.donut-legend b{color:var(--c-muted);font-weight:700}
.chart-card::after{content:"";display:block;clear:both}
.best-bar{margin-top:9px}
.best-bar div{display:flex;justify-content:space-between;gap:8px;font-size:12px}
.best-bar div span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.best-bar div b{font:11.5px ui-monospace,monospace;color:var(--c-muted)}
.best-bar.top div b{color:var(--c-good);font-weight:800}
.best-bar i{display:block;height:8px;margin-top:4px;border-radius:4px;background:color-mix(in srgb,var(--c-line) 60%,transparent)}
.best-bar em{display:block;height:100%;border-radius:4px;background:var(--c-accent);transition:width .4s}
.best-bar.top em{background:var(--c-good)}
@media (max-width:700px){.charts-grid{grid-template-columns:1fr}.donut{width:118px;height:118px}}

/* ==================== Вид команды (Моя команда / Все команды) ==================== */
.tv{display:grid;gap:12px}
.tv>.panel,.tv .content-grid{margin:0}
.tv-hero{border:1px solid var(--c-line);border-radius:20px;padding:18px;height:auto;margin:0;overflow:hidden;
  background:linear-gradient(90deg,color-mix(in srgb,var(--c-warning) 26%,transparent),color-mix(in srgb,var(--c-accent) 8%,transparent))}
.tv-hero-main{display:flex;align-items:center;gap:14px}
.tv-hero-main h2{margin:2px 0 6px;font-size:22px}
.tv-hero-ava,.tv-item-ava{width:62px;height:62px;flex:none;border-radius:18px;display:grid;place-items:center;font-size:26px;font-weight:800;color:var(--c-warning);
  border:2.5px solid var(--c-warning);background:color-mix(in srgb,var(--c-warning) 14%,var(--c-surface))}
.tv-counters{display:grid;grid-template-columns:repeat(4,1fr);margin-top:14px;border:1px solid var(--c-line);border-radius:14px;background:color-mix(in srgb,var(--c-surface) 50%,transparent)}
.tv-counters div{display:grid;justify-items:center;padding:8px 2px}
.tv-counters div+div{border-left:1px solid var(--c-line)}
.tv-counters b{font-size:18px}.tv-counters span{font-size:11px;color:var(--c-muted)}
.tv-swap{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;border:1px dashed color-mix(in srgb,var(--c-warning) 55%,var(--c-line));background:color-mix(in srgb,var(--c-warning) 7%,transparent)}
.tv-swap .ui-icon{width:22px;height:22px;flex:none;--icon-tint:var(--c-warning)}
.tv-swap p{margin:0;font-size:12.5px;color:var(--c-muted)}.tv-swap b{color:var(--c-text)}
.tv-members{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tv-member{--r:var(--c-accent);display:flex;align-items:center;gap:12px;padding:12px;border-radius:14px;border:1px solid color-mix(in srgb,var(--r) 45%,var(--c-line));background:color-mix(in srgb,var(--r) 7%,transparent)}
.tv-member.tech{--r:var(--c-warning)}
.tv-member.coach{--r:var(--c-success,#22c55e);grid-column:1/-1}
.tv-role.coach{color:var(--c-success,#22c55e)}
.tv-member.empty{border-style:dashed;background:transparent}
.tv-ava{width:48px;height:48px;flex:none;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:17px;color:var(--r);border:2.5px solid var(--r);background:color-mix(in srgb,var(--r) 16%,var(--c-surface))}
.tv-mi{display:grid;gap:3px;flex:1;min-width:0}
.tv-mi b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tv-role{justify-self:start;padding:1px 9px;border-radius:999px;font-size:11px;font-weight:800;color:var(--r);border:1px solid var(--r);background:color-mix(in srgb,var(--r) 14%,transparent)}
.tv-invite,.tv-give{display:flex;gap:8px;flex-wrap:wrap}
.tv-invite input,.tv-invite select,.tv-give select{flex:1;min-width:140px}
.tv-give{margin-top:12px}
.tv-event{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--c-line)}
.tv-event:last-child{border-bottom:0}
.tv-event small{margin-left:auto}
.tv-hist{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--c-line)}
.tv-hist:last-child{border-bottom:0}
.tv-hist>div{display:grid;min-width:0;flex:1}
.tv-hist small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tv-medal{--m:var(--c-accent);width:36px;height:36px;flex:none;border-radius:50%;display:grid;place-items:center;font-weight:800;color:var(--m);border:2px solid var(--m);background:color-mix(in srgb,var(--m) 14%,transparent)}
.tv-medal.g{--m:#f5c542}.tv-medal.s{--m:#c7ced8}.tv-medal.b{--m:#cd8a4b}
.tv-hist-res{display:grid;justify-items:end}.tv-hist-res small{font:11px ui-monospace,monospace;color:var(--c-muted)}
.tv-settings{display:grid;gap:10px}
.tv-settings .danger-btn{justify-self:start}
.tv-empty{display:grid;justify-items:center;gap:8px;text-align:center;padding:30px 12px}
.tv-empty .tv-hero-ava{color:var(--c-accent);border-color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 12%,transparent)}
.tv-item{display:flex!important;align-items:center;gap:10px}
.tv-item .tv-item-ava{width:40px;height:40px;border-radius:12px;font-size:17px;border-width:2px}
.tv-item>div{display:grid;min-width:0}
.tv-item small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tv-item-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--c-muted)}
.tv-item-meta i{width:8px;height:8px;border-radius:50%;background:var(--c-warning)}.tv-item-meta i.ok{background:var(--c-good)}
@media (max-width:700px){.tv-members{grid-template-columns:1fr}.tv-counters b{font-size:16px}.tv-hero-ava{width:52px;height:52px;font-size:22px}}

/* метки в шапке команды переносятся и не выходят за экран; строка смены ролей */
.tv-hero .pp-tags{min-width:0}
.tv-hero .pill{white-space:normal;max-width:100%;line-height:1.3}
.tv-hero-main>div{min-width:0}
.tv-swap-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin:-4px 0 10px}
.tv-swap-row .text-btn{color:var(--c-warning)}
.tv-swap-row .text-btn:disabled{opacity:.5;cursor:default}

/* ==================== «Мой профиль»: единая карточка разделов с цветом строк ==================== */
.pp-menu{padding:6px!important;display:grid}
.pp-menu-row{--mc:var(--c-accent);position:relative;display:flex;align-items:center;gap:12px;width:100%;padding:11px 12px 11px 16px;border:0;border-radius:12px;
  background:transparent;color:var(--c-text);font:inherit;text-align:left;cursor:pointer;transition:background .12s}
.pp-menu-row+.pp-menu-row::after{content:"";position:absolute;left:64px;right:12px;top:0;height:1px;background:var(--c-line)}
.pp-menu-row::before{content:"";position:absolute;left:3px;top:25%;bottom:25%;width:3px;border-radius:2px;background:var(--mc);opacity:.55}
.pp-menu-row:hover:not(:disabled){background:color-mix(in srgb,var(--mc) 10%,transparent)}
.pp-menu-row:hover:not(:disabled)::before{opacity:1}
.pp-menu-row:disabled{opacity:.5;cursor:default}
.pp-menu-ic{width:38px;height:38px;flex:none;border-radius:11px;display:grid;place-items:center;background:color-mix(in srgb,var(--mc) 16%,transparent);border:1px solid color-mix(in srgb,var(--mc) 45%,transparent)}
.pp-menu-ic .ui-icon{width:18px;height:18px;--icon-tint:var(--mc)}
.pp-menu-txt{display:grid;flex:1;min-width:0}
.pp-menu-txt b{font-size:14px}
.pp-menu-txt small{font-size:11.5px;color:var(--c-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-menu-n{font-style:normal;font-size:11.5px;font-weight:800;padding:2px 9px;border-radius:999px;color:var(--mc);background:color-mix(in srgb,var(--mc) 16%,transparent)}
.pp-menu-chev{width:14px;height:14px;opacity:.6}
.pp-menu-row:hover:not(:disabled) .pp-menu-chev{--icon-tint:var(--mc);opacity:1}

/* ==================== Кнопки действий дрона — как в приложении ==================== */
.drone-act{--at:var(--c-accent);display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:10px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;
  color:var(--at);border:1px solid color-mix(in srgb,var(--at) 30%,transparent);background:color-mix(in srgb,var(--at) 8%,transparent);transition:background .12s}
.drone-act:hover{background:color-mix(in srgb,var(--at) 16%,transparent)}
.drone-act:active{background:color-mix(in srgb,var(--at) 24%,transparent)}
.drone-act .ui-icon{width:15px;height:15px;--icon-tint:currentColor}
.drone-card .drone-actions .drone-act:last-child{margin-left:auto}
@media (max-width:640px){.drone-card .drone-actions .drone-act{flex:1 1 auto;justify-content:center}.drone-card .drone-actions .drone-act:last-child{margin-left:0}}
.pp-judge .pp-info{margin-top:4px}

/* ---------- Вылеты главного судьи: путь этапов, сводка, эфир, шаги, вид ---------- */
.heats-path{display:flex;align-items:center}
.heats-path[hidden],.heats-tiles[hidden],.heats-bar[hidden],.heats-filterinfo[hidden],.heats-feedback[hidden],.heats-bar-acts[hidden]{display:none}
.hp-link{flex:0 0 22px;height:2px;background:var(--c-line);opacity:.8}
.hp-link.on{background:var(--c-accent)}
.hp-stage{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:5px;padding:10px 12px;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 70%,transparent);color:var(--c-text);text-align:left;cursor:pointer;font:inherit;--tn:var(--c-accent)}
.hp-stage:hover:not(:disabled){background:var(--c-surface-hover)}
.hp-stage:disabled{opacity:.55;cursor:default}
.hp-stage.live{--tn:var(--c-good)}
.hp-stage.complete{--tn:var(--c-good)}
.hp-stage.active{border-color:var(--tn);border-width:1.5px;background:color-mix(in srgb,var(--tn) 16%,var(--c-surface))}
.hp-head{display:flex;align-items:center;gap:7px;min-width:0}
.hp-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}
.hp-head .n{flex:none;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;font-style:normal;font-size:10.5px;font-weight:800;color:var(--tn);background:color-mix(in srgb,var(--tn) 20%,transparent)}
.hp-stage.complete .n{background:var(--c-good);color:#fff}
.hp-stage small{color:var(--c-muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hp-stage.live small{color:var(--c-good)}
.hp-bar{display:block;height:4px;border-radius:2px;background:color-mix(in srgb,var(--c-line) 70%,transparent);overflow:hidden}
.hp-bar i{display:block;height:100%;border-radius:2px;background:var(--tn);transition:width .3s}

.heats-tiles{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.ht-tile{--tn:var(--c-accent);display:flex;flex-direction:column;align-items:center;gap:1px;padding:10px 6px;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 70%,transparent);color:var(--c-muted);cursor:pointer;font:inherit;min-height:0}
.ht-tile b{font-size:22px;line-height:1.1;color:var(--tn)}
.ht-tile.t-accent b{color:var(--c-text)}
.ht-tile span{font-size:11.5px}
.ht-tile.zero b{color:var(--c-muted)}
.ht-tile:hover{background:var(--c-surface-hover)}
.ht-tile.active{border-color:var(--tn);border-width:1.5px;background:color-mix(in srgb,var(--tn) 15%,var(--c-surface))}
.t-good{--tn:var(--c-good)}.t-warning{--tn:var(--c-warning)}.t-muted{--tn:var(--c-muted)}.t-danger{--tn:var(--c-danger)}

.heats-live{display:flex;flex-direction:column;gap:8px}
.heats-live:empty{display:none}
.hl-bar{--tn:var(--c-good);display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 14px;border-radius:14px;text-align:left;cursor:pointer;font:inherit;color:var(--c-text);border:1px solid color-mix(in srgb,var(--tn) 60%,transparent);background:linear-gradient(90deg,color-mix(in srgb,var(--tn) 20%,transparent),color-mix(in srgb,var(--tn) 4%,transparent))}
.hl-bar.paused{--tn:var(--c-warning)}
.hl-dot{flex:none;width:12px;height:12px;border-radius:50%;background:var(--tn);animation:hlPulse 1.4s ease-in-out infinite}
.hl-bar.paused .hl-dot{animation:none}
@keyframes hlPulse{50%{opacity:.3}}
.hl-copy{flex:1;min-width:0;display:flex;flex-direction:column}
.hl-copy small{font-size:10px;font-weight:800;letter-spacing:.1em;color:var(--tn)}
.hl-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hl-clock{font-size:22px;font-weight:800;color:var(--tn);font-variant-numeric:tabular-nums}
.hl-chev{transform:rotate(-45deg)!important}

.heats-manage{border:1px solid var(--c-line);border-radius:16px;background:color-mix(in srgb,var(--c-accent) 5%,var(--c-surface));padding:0 12px}
.heats-manage[hidden]{display:none}
.heats-manage summary{display:flex;align-items:center;gap:8px;padding:12px 0;cursor:pointer;list-style:none}
.heats-manage summary::-webkit-details-marker{display:none}
.heats-manage summary .ui-icon{width:16px;height:16px;background:var(--c-accent)}
.heats-manage summary b{flex:1}
.heats-manage[open] summary .heat-chevron{transform:rotate(-135deg)}
.heats-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;padding-bottom:12px}
.heats-step{--tn:var(--c-accent);display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:12px;border:1px solid var(--c-line);background:var(--c-surface)}
.heats-step[hidden]{display:none}
.heats-step.s2{--tn:var(--c-warning)}.heats-step.s3{--tn:var(--c-good)}
.heats-step-head{display:flex;align-items:center;gap:8px}
.heats-step-head .n{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--tn);color:#fff;font-style:normal;font-size:11px;font-weight:800}
.heats-step p{margin:0;font-size:12px}
.heats-step .stepper-field{justify-content:space-between}
.heats-step > button{width:100%}
.heats-step.s3 > button{margin-top:auto}
.primary.warn-bg{background:var(--c-warning);border-color:transparent}
.primary.good-bg{background:var(--c-good);border-color:transparent}

.heats-feedback{display:flex;align-items:flex-start;gap:10px}
.heats-feedback .ui-icon{flex:none;width:18px;height:18px;background:var(--c-good);margin-top:1px}
.heats-feedback.warn .ui-icon{background:var(--c-warning)}
.heats-feedback .t{flex:1}

.heats-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.heats-views{display:inline-flex;gap:2px;padding:3px;border-radius:12px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 60%,transparent)}
.heats-views button{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px;border:0;border-radius:9px;background:transparent;color:var(--c-text);font:inherit;font-size:12.5px;cursor:pointer}
.heats-views button .ui-icon{width:14px;height:14px;background:var(--c-muted)}
.heats-views button em{font-style:normal}
.heats-views button:hover{background:color-mix(in srgb,var(--c-accent) 12%,transparent)}
.heats-views button.active{background:var(--c-accent);color:#fff;font-weight:700}
.heats-views button.active .ui-icon{background:#fff}
.heats-search{flex:1 1 220px;display:flex;align-items:center;gap:6px;min-height:38px;padding:0 10px;border-radius:12px;border:1px solid var(--c-line);background:var(--c-surface)}
.heats-search:focus-within{border-color:var(--c-accent)}
.heats-search .ui-icon{flex:none;width:14px;height:14px;background:var(--c-muted)}
.heats-search input{flex:1;min-width:0;border:0!important;background:transparent!important;box-shadow:none!important;padding:0;min-height:36px}
.heats-bar-acts{display:inline-flex;gap:6px}
.heats-filterinfo{display:flex;align-items:center;gap:8px;justify-content:space-between;font-size:12.5px;color:var(--c-muted)}
.heats-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:28px 12px;text-align:center}
.heats-empty .he-ic{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:color-mix(in srgb,var(--c-accent) 10%,transparent)}
.heats-empty .he-ic .ui-icon{width:28px;height:28px;background:var(--c-accent)}
.heats-empty b{font-size:15px}
.heats-empty p{margin:0;font-size:12.5px;max-width:420px}

/* карточки: внешняя — вылет, вложенные — пилоты; вложенные плотные, прижаты к краям */
.hc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px;align-items:start}
.hc-card{display:flex;flex-direction:column;gap:6px;padding:8px 6px 6px;border-radius:14px;border:1px solid var(--c-line);background:var(--c-surface);cursor:pointer;outline:none;transition:border-color .15s,background .15s}
.hc-card:hover,.hc-card:focus-visible{border-color:color-mix(in srgb,var(--c-accent) 55%,var(--c-line));background:color-mix(in srgb,var(--c-accent) 5%,var(--c-surface))}
.hc-card.s-running{border-color:var(--c-good);border-width:1.5px}
.hc-card.dup{border-color:var(--c-danger)}
.hc-head{display:flex;align-items:center;gap:8px;padding:0 4px;min-width:0}
.hc-head b{font-size:15px;white-space:nowrap}
.hc-head small{flex:1;min-width:0;color:var(--c-muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hc-clock{font-size:13px;font-weight:700;color:var(--c-muted)}
.hc-card.s-running .hc-clock{color:var(--c-good)}
.hc-pilots{display:flex;flex-direction:column;gap:3px}
.hc-pilot{position:relative;display:flex;align-items:center;gap:6px;padding:4px 6px 4px 11px;border-radius:9px;border:1px solid color-mix(in srgb,var(--pc) 40%,var(--c-line));background:color-mix(in srgb,var(--pc) 7%,var(--c-surface))}
.hc-pilot::before{content:"";position:absolute;left:4px;top:5px;bottom:5px;width:3px;border-radius:2px;background:var(--pc)}
.hc-pilot.female{background:color-mix(in srgb,#ec4899 8%,var(--c-surface))}
.hc-pilot.out{opacity:.55}
.hc-who{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.2}
.hc-who b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hc-who small{font-size:11px;color:var(--c-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hc-laps{font-size:11px;color:var(--c-muted);white-space:nowrap}
.hc-pilot .heat-chip{padding:2px 6px;font-size:11.5px}
.hc-time{font-size:12px;color:var(--c-muted);min-width:66px;text-align:right}
.hc-warn{padding:3px 6px;border-radius:8px;font-size:11.5px;font-weight:700;color:var(--c-warning);background:color-mix(in srgb,var(--c-warning) 10%,transparent)}
.hc-card.dup .hc-warn{color:var(--c-danger);background:color-mix(in srgb,var(--c-danger) 10%,transparent)}

/* граф связей вылетов */
.hg-svg{max-width:none;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 40%,transparent)}
.hg-link{stroke-width:2;opacity:.55}
.hg-halo{fill:none;stroke-width:6;opacity:.35}
.hg-core{stroke:rgba(255,255,255,.6);stroke-width:2}
.hg-heat,.hg-pilot[data-race-entry]{cursor:pointer;outline:none}
.hg-heat:hover .hg-core,.hg-heat:focus-visible .hg-core,.hg-pilot:hover .hg-pnode,.hg-pilot:focus-visible .hg-pnode{filter:brightness(1.15)}
.hg-pnode{stroke-width:3}
.hg-pilot.out{opacity:.5}
.hg-ini{font-size:12.5px;fill:var(--c-text)}
.hg-nojudge{fill:var(--c-danger);stroke:var(--c-surface);stroke-width:1.5}
.hg-label{fill:var(--c-text);font-weight:700;font-size:11px;text-anchor:middle}
.hg-stage{fill:var(--c-muted);font-size:10.5px;font-weight:700;text-anchor:middle;letter-spacing:.04em}

@media (max-width:760px){
  .heats-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}
  .hp-link{flex-basis:8px}
  .hp-stage{padding:8px}
  .heats-views button em{display:none}
  .hc-grid{grid-template-columns:1fr}
  .hl-clock{font-size:18px}
}
@media (prefers-reduced-motion:reduce){.hl-dot{animation:none}.hp-bar i{transition:none}}

/* ---------- командный зачёт в вылете: круги за оставшееся время и дроны команды ---------- */
.tr-laps{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:6px 0;padding:6px 9px;border-radius:9px;font-size:12.5px;border:1px solid color-mix(in srgb,var(--c-accent) 35%,transparent);background:color-mix(in srgb,var(--c-accent) 8%,transparent)}
.tr-laps:empty,.tr-laps[hidden]{display:none}
.tr-laps b{display:inline-flex;align-items:center;gap:5px}
.tr-laps b .gi{--icon-tint:var(--c-accent)}
.tr-laps small{color:var(--c-muted)}
.tr-drones{display:flex;flex-direction:column;gap:4px;margin-top:6px}
.tr-cap{font-size:10px;font-weight:800;letter-spacing:.06em;color:var(--c-muted)}
.tr-drone{display:flex;align-items:center;gap:7px;padding:4px 4px 4px 8px;border-radius:8px;border:1px solid var(--c-line);min-width:0}
.tr-drone.active{border:1.5px solid var(--c-accent);background:color-mix(in srgb,var(--c-accent) 14%,transparent)}
.tr-drone > i{flex:none;width:8px;height:8px;border-radius:50%}
.tr-drone > span{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.2}
.tr-drone > span b{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tr-drone.active > span b{color:var(--c-accent)}
.tr-drone > span small{font-size:10.5px;color:var(--c-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tr-drone em{font-style:normal;font-size:11px;font-weight:800;white-space:nowrap}
.tr-on{padding:3px 8px;border-radius:7px;background:var(--c-accent);color:#fff}
.tr-busy{color:var(--c-muted);padding:0 6px}
.tr-pick{min-height:26px!important;padding:0 10px;border-radius:7px;border:1px solid var(--c-accent);background:transparent;color:var(--c-accent);font:inherit;font-size:11.5px;font-weight:800;cursor:pointer}
.tr-pick:hover{background:color-mix(in srgb,var(--c-accent) 16%,transparent)}
.tr-pick:disabled{opacity:.5;cursor:default}
.tv-heat{margin-bottom:12px;display:flex;flex-direction:column;gap:4px}
.tv-heat-head{display:flex;align-items:center;gap:8px}
.tv-heat-head .gi{--icon-tint:var(--c-accent)}
.tv-heat p{margin:0}

/* название «ГОНКИ ДРОНОВ» длиннее прежнего — помещается в ширину боковой панели */
.client-app .client-brand strong{font-size:15px;letter-spacing:.06em}
.client-app .client-brand span{font-size:11px;letter-spacing:.12em}
@media (max-width:1180px){.client-app .client-brand strong{font-size:13.5px}}

/* КЗ: экипаж вылета в таблице лидеров — пилот и техник отдельными строками */
.lb-crew{display:grid;gap:2px;margin-top:4px;white-space:normal}
.lb-crew span{display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--c-text)}
.lb-crew em{flex:none;font-style:normal;font-size:10px;font-weight:700;letter-spacing:.3px;padding:1px 7px;border-radius:9px;color:#fff;background:var(--c-accent,#4f8cff)}
.lb-crew em.tech{background:var(--c-warning,#e0a030)}
.lb-row.team{padding-block:12px}

/* таблица лидеров ЛЗ: пилот в полёте — метка, текущий круг и секундомер вылета */
.lb-live{display:flex;align-items:center;gap:8px;margin-top:4px;font-size:12px}
.lb-live b{color:var(--c-good,#3ecf8e)}
.lb-live-dot{width:9px;height:9px;border-radius:50%;background:var(--c-good,#3ecf8e);animation:lbPulse 1.3s ease-in-out infinite}
.lb-live-dot.paused{background:var(--c-warning,#e0a800);animation:none}
.lb-live-lap{padding:1px 9px;border-radius:10px;background:rgba(79,140,255,.16);color:var(--c-accent,#4f8cff);font-weight:700}
@keyframes lbPulse{0%,100%{opacity:1}50%{opacity:.25}}

/* ============ Декор строго внутри скруглений ============ */
/* боковые полоски пилотов повторяют радиус карточки и перекрывают её рамку — за края не выходят */
.heat-pilot::before,.my-heat-pilot::before,.mh-card::before,.hc-pilot::before{left:-1px;top:-1px;bottom:-1px;width:6px;border-radius:12px 0 0 12px;opacity:.95}
.mh-card::before{border-radius:14px 0 0 14px}.hc-pilot::before{width:5px;border-radius:9px 0 0 9px}
.my-heat-pilot::before{border-radius:12px 0 0 12px}
.pp-menu-row::before{left:0;top:0;bottom:0;width:4px;border-radius:12px 0 0 12px;opacity:.7}
.home-hero,.podium-slot,.lb-row,.heat-card,.event-card,.app-card{overflow:hidden}
.home-hero::after{right:-60px;top:-60px}
.pod-medal i{right:0;bottom:0}

/* ============ Таблица лидеров ============ */
#tab-leaderboard .lb-row{position:relative;isolation:isolate;box-shadow:none;border-radius:16px;padding:14px 18px 14px 22px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--pc,var(--c-accent)) 9%,var(--c-surface)),var(--c-surface) 46%);
  border-color:color-mix(in srgb,var(--pc,var(--c-accent)) 22%,var(--c-line))}
#tab-leaderboard .lb-row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--pc,var(--c-accent));z-index:-1}
#tab-leaderboard .lb-row:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--pc,var(--c-accent)) 55%,var(--c-line))}
#tab-leaderboard .lb-place{width:40px;height:40px;font-size:14px;border:1.5px solid color-mix(in srgb,var(--c-accent) 35%,var(--c-line));background:color-mix(in srgb,var(--c-accent) 9%,transparent)}
#tab-leaderboard .lb-row.top1{--tone:#f5c542}#tab-leaderboard .lb-row.top2{--tone:#c7ced8}#tab-leaderboard .lb-row.top3{--tone:#cd8a4b}
#tab-leaderboard .lb-row.top1,#tab-leaderboard .lb-row.top2,#tab-leaderboard .lb-row.top3{
  background:radial-gradient(360px 120px at 0% 50%,color-mix(in srgb,var(--tone) 20%,transparent),transparent 70%),linear-gradient(90deg,color-mix(in srgb,var(--pc,var(--c-accent)) 8%,var(--c-surface)),var(--c-surface) 50%);
  border-color:color-mix(in srgb,var(--tone) 50%,var(--c-line))}
#tab-leaderboard .lb-row.top1 .lb-place,#tab-leaderboard .lb-row.top2 .lb-place,#tab-leaderboard .lb-row.top3 .lb-place{color:#1b1b1b;border:0;background:linear-gradient(145deg,var(--tone),color-mix(in srgb,var(--tone) 60%,#000))}
#tab-leaderboard .lb-time{display:grid;justify-items:end;gap:3px;padding:7px 12px;border-radius:12px;background:color-mix(in srgb,var(--c-text) 5%,transparent);min-width:96px}
.lb-gap{font:600 11px ui-monospace,monospace;color:var(--c-warning)}
#tab-leaderboard .lb-caption{padding:8px 4px;border-bottom:1px solid var(--c-line);margin-bottom:12px}
#tab-leaderboard .lb-caption b{font-size:16px}
#tab-leaderboard .podium-slot,#tab-leaderboard .pod{position:relative}
.podium2{position:relative;padding:18px 12px 0;border-radius:20px;overflow:hidden;
  background:radial-gradient(420px 200px at 50% 0%,color-mix(in srgb,var(--c-accent) 14%,transparent),transparent 70%),color-mix(in srgb,var(--c-surface) 70%,transparent);border:1px solid var(--c-line)}
.pod-step{border-radius:12px 12px 0 0;width:86%}
.lb-kind-label{gap:12px;padding:2px 2px}

/* ============ Вылеты главного судьи ============ */
.heats-ctx{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px;border-radius:18px;overflow:hidden;position:relative;isolation:isolate;
  border:1px solid color-mix(in srgb,var(--c-accent) 30%,var(--c-line));
  background:radial-gradient(420px 160px at 0% 0%,color-mix(in srgb,var(--c-accent) 16%,transparent),transparent 70%),var(--c-surface)}
.heats-ctx[hidden]{display:none}
.hx-title{display:flex;align-items:center;gap:12px;min-width:0}.hx-title>span:not(.cbadge){display:grid;gap:2px;min-width:0}.hx-title b{font-size:16px}.hx-title small{font-size:12px}
.hx-title .cbadge{font-size:13px;margin:0}
.hx-stats{display:flex;gap:8px;flex-wrap:wrap}
.hx-stat{display:grid;justify-items:center;min-width:78px;padding:8px 12px;border-radius:12px;background:color-mix(in srgb,var(--c-text) 5%,transparent)}
.hx-stat b{font-size:20px;line-height:1;font-variant-numeric:tabular-nums}.hx-stat small{font-size:10.5px;color:var(--c-muted);margin-top:3px;text-transform:uppercase;letter-spacing:.04em}
.hx-stat.t-accent b{color:var(--c-accent)}.hx-stat.t-good b{color:var(--c-good)}.hx-stat.t-warning b{color:var(--c-warning)}.hx-stat.t-muted b{color:var(--c-muted)}
.heat-card{border-radius:16px;position:relative}
.heat-card:has(.s-running){border-color:color-mix(in srgb,var(--c-good) 55%,var(--c-line));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c-good) 25%,transparent)}
.heat-card:has(.s-paused){border-color:color-mix(in srgb,var(--c-warning) 55%,var(--c-line))}
.heat-row{padding:14px 16px}.heat-num{display:inline-grid;place-items:center;min-width:34px;height:34px;border-radius:10px;background:color-mix(in srgb,var(--c-accent) 14%,transparent);color:var(--c-accent)}
.heat-body{padding:6px 16px 16px}
.heats-tiles .ht-tile{border-radius:14px}
@media(max-width:600px){.heats-ctx{padding:12px}.hx-stat{min-width:68px}}

/* графы связей: поиск гасит несовпавшие узлы, наведение/фокус оставляет один кластер */
.mg-pilot,.tg-cluster,.hg-cluster{transition:opacity .2s}
.mg-pilot.dim,.tg-cluster.dim{opacity:.18}
.mg-pilot.hit .mg-pnode{stroke:var(--c-warning)!important;stroke-width:5}
.tg-cluster{cursor:pointer}
.tg-mech.hit .mg-mech,.tg-pilot.hit .mg-pnode{stroke:var(--c-warning);stroke-width:5}
.tg-pilot .mg-pnode{stroke:rgba(255,255,255,.55)}
.hg-svg:has(.hg-cluster:hover) .hg-cluster:not(:hover),.tg-svg:has(.tg-cluster:hover) .tg-cluster:not(:hover):not(.focus){opacity:.35}

/* ═══ сборка дрона в форме (DroneFormFields.qml, без 3D) ═══ */
.drone-build{display:flex;flex-direction:column;gap:8px;margin:4px 0 14px}
.drone-mass{display:flex;flex-direction:column;gap:3px;padding:9px 12px;border-radius:10px;border:1px solid color-mix(in srgb,var(--tone) 60%,transparent);background:color-mix(in srgb,var(--tone) 12%,transparent);--tone:var(--c-good)}
.drone-mass.warn{--tone:var(--c-warning)}
.drone-mass b{color:var(--tone);font-size:13px}
.drone-mass small{color:var(--c-muted);font-size:11px;line-height:1.35}
.drone-mass em{font-style:normal;font-weight:700;font-size:12px}
.drone-mass em.ok{color:var(--c-good)}
.drone-mass em.bad{color:var(--c-warning)}
.drone-build-head{display:flex;align-items:center;gap:8px}
.drone-build-head b{flex:1;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drone-build-grid{display:grid;grid-template-columns:1fr;gap:6px}
@media (min-width:760px){.drone-build-grid{grid-template-columns:1fr 1fr;column-gap:14px}}
.drone-build-row{display:grid;grid-template-columns:118px minmax(0,1fr);align-items:center;gap:8px;margin:0}
.drone-build-row>span{font-weight:700;font-size:12px}
.drone-build-write{align-self:flex-start;border:0;border-radius:15px;padding:6px 14px;background:var(--c-accent);color:var(--c-on-accent);font-weight:700;font-size:12px;cursor:pointer}
.drone-build-write[hidden],.drone-build-grid[hidden]{display:none}

/* ═══ очередь дронов техконтроля (TechControlTab.qml) ═══ */
.dreq-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.dreq-chip{height:30px;padding:0 12px;border-radius:15px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-text) 6%,transparent);color:var(--c-text);font-size:12px;cursor:pointer}
.dreq-chip.active{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-on-accent);font-weight:700}
.dreq-search{width:100%;margin-bottom:10px}
.dreq-head{display:flex;align-items:center;gap:8px;min-width:0}
.dreq-head b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dreq-kind{flex:none;font-size:11px;font-weight:700;padding:3px 9px;border-radius:12px;color:var(--k);border:1px solid var(--k);background:color-mix(in srgb,var(--k) 16%,transparent);--k:var(--c-accent)}
.dreq.k-update .dreq-kind{--k:var(--c-warning)}
.dreq.k-remove .dreq-kind{--k:var(--c-danger)}
.dreq-spec{display:grid;grid-template-columns:1fr;gap:2px 16px}
@media (min-width:760px){.dreq-spec{grid-template-columns:1fr 1fr}}
.dreq-spec p{margin:0;font-size:12px}
.dreq-spec p.diff{color:var(--c-warning)}
.dreq-check{margin:0;font-size:11px;font-weight:700}
.dreq-check.ok{color:var(--c-good)}
.dreq-check.bad{color:var(--c-warning)}

/* ═══ приглашения в команду (MyTeamTab.qml) ═══ */
.tv-invite.pending{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tv-invites-in{margin-bottom:12px}
.tv-invite-in{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--c-line)}
.tv-invite-in:first-of-type{border-top:0}
.tv-invite-in>div{flex:1 1 180px;display:flex;flex-direction:column;gap:2px}
.tv-exit{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
.tv-exit .danger-btn[disabled]{opacity:.5;cursor:not-allowed}
.tv-exit small{flex-basis:100%}

/* ═══ профиль: «Сведения» и «Дроны» в одном ряду — одной высоты (PilotProfilePage.qml) ═══ */
.content-grid.pp-grid{align-items:stretch}
.content-grid.pp-grid>.panel{height:100%;box-sizing:border-box}

/* ═══ регламент (ReglamentTab.qml): шапка, сводка-фильтр, карточки ═══ */
.rg-head-main{display:flex;gap:12px;align-items:flex-start}
.rg-head-ic{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:color-mix(in srgb,var(--c-accent) 14%,transparent)}
.rg-head-ic .ui-icon{width:22px;height:22px;background:var(--c-accent)}
.rg-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:4px 0 10px}
.rg-summary:empty{display:none}
.rg-tile{display:flex;align-items:center;gap:10px;height:64px;padding:0 12px;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-text) 4%,transparent);color:var(--c-text);cursor:pointer;text-align:left}
.rg-tile.active{border:2px solid var(--t);background:color-mix(in srgb,var(--t) 16%,transparent)}
.rg-tile-ic{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--t) 16%,transparent)}
.rg-tile-ic .ui-icon{width:16px;height:16px;background:var(--t)}
.rg-tile b{display:block;font-size:18px}
.rg-tile small{display:block;font-size:11px;color:var(--c-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rg-search{width:100%;margin-bottom:10px}
.rg-search[hidden]{display:none}
.rg-list{display:flex;flex-direction:column;gap:10px}
.rg-card{display:flex;gap:12px;padding:14px;border-radius:16px;border:1px solid var(--c-line);background:var(--c-surface);--k:var(--c-good)}
.rg-card.paper{--k:var(--c-warning)}
.rg-card-ic{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--k) 16%,transparent)}
.rg-card-ic .ui-icon{width:20px;height:20px;background:var(--k)}
.rg-card-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.rg-card-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.rg-kind-pill{font-size:11px;font-weight:700;padding:2px 9px;border-radius:11px;color:var(--k);border:1px solid var(--k);background:color-mix(in srgb,var(--k) 16%,transparent)}
.rg-card-title{font-size:15px;overflow-wrap:anywhere}
.rg-card-main p{margin:0;font-size:12px}
.rg-card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.rg-act{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:10px;border:1px solid color-mix(in srgb,var(--a) 28%,transparent);background:color-mix(in srgb,var(--a) 8%,transparent);color:var(--a);font-size:12px;font-weight:700;text-decoration:none;cursor:pointer;--a:var(--c-text)}
.rg-act:hover{background:color-mix(in srgb,var(--a) 16%,transparent)}
.rg-act.accent{--a:var(--c-accent)}
.rg-act.danger{--a:var(--c-danger)}
.rg-act .ui-icon{width:14px;height:14px;background:var(--a)}
.rg-empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:28px 16px;text-align:center;border:1px dashed var(--c-line);border-radius:16px}
.rg-empty .ui-icon{width:30px;height:30px;background:var(--c-muted)}
.rg-empty p{margin:0;max-width:440px}
@media (max-width:640px){.rg-summary{grid-template-columns:1fr 1fr 1fr;gap:6px}.rg-tile{height:58px;padding:0 8px;gap:6px}.rg-tile-ic{display:none}}

/* ═══ окно документа регламента (ReglamentForm.qml) ═══ */
.rg-dialog{max-width:540px}
.rg-kinds{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:4px 0 10px}
.rg-kind{display:grid;grid-template-columns:auto 1fr;column-gap:8px;row-gap:2px;align-items:center;padding:10px;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-text) 4%,transparent);color:var(--c-text);text-align:left;cursor:pointer}
.rg-kind .ui-icon{width:16px;height:16px;background:var(--c-muted)}
.rg-kind small{grid-column:1/-1;color:var(--c-muted);font-size:11px}
.rg-kind.active{border:2px solid var(--c-accent);background:color-mix(in srgb,var(--c-accent) 14%,transparent)}
.rg-kind.active b{color:var(--c-accent)}
.rg-kind.active .ui-icon{background:var(--c-accent)}
.rg-field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px;font-size:12px;font-weight:700;color:var(--c-muted)}
.rg-field[hidden]{display:none}
.rg-field input,.rg-field textarea{font-weight:400}
.rg-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}
.rg-err{font-style:normal;font-weight:400;font-size:11px;color:var(--c-danger)}
.rg-err:empty{display:none}
.rg-count{align-self:flex-end;font-weight:400;font-size:10px;color:var(--c-muted)}
.rg-count.over{color:var(--c-danger)}

/* вылеты: карточка в обработке — затемнение, дуга и подпись (как PendingOverlay в приложении) */
.heat-card,.hc-card,.hl-bar{position:relative}
.has-veil{pointer-events:none}
.busy-veil{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;gap:10px;border-radius:inherit;background:rgba(0,0,0,.42);color:#fff;font-weight:700;font-size:13px;pointer-events:all}
.busy-arc{width:20px;height:20px;border:3px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;animation:spin .9s linear infinite}
.heat-card.flash{box-shadow:0 0 0 3px var(--c-good);transition:box-shadow .2s}
.heats-leftover-head .hl-acts{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}

/* ═══ аккуратнее: форма сборки дрона и карточка регистрации на мероприятие ═══ */
.drone-build-row{grid-template-columns:minmax(92px,118px) minmax(0,1fr)}
.drone-build-row .themed-select-control{min-height:34px;padding:6px 10px;border-radius:10px;font-size:12.5px;line-height:1.25;gap:8px}
.drone-build-row .themed-select-option{padding:7px 10px;font-size:12.5px}
.drone-build-row .themed-select-control>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drone-build-row select{font-size:12.5px;min-height:34px;padding:6px 10px;border-radius:10px}
@media (max-width:620px){
  .drone-build-row{grid-template-columns:1fr;gap:3px}
  .drone-build-row>span{font-size:11.5px;color:var(--c-muted)}
}
.drone-build-write{padding:8px 16px;border-radius:12px;font-size:12.5px}
.drone-build-head{margin-top:4px}

.event-participation{align-items:start;grid-template-columns:44px minmax(0,1fr);background:color-mix(in srgb,var(--c-accent) 5%,transparent)}
.event-participation b{display:block;font-size:15px}
.event-participation p{margin:4px 0 12px;line-height:1.4;color:var(--c-muted)}
.event-participation .primary,.event-participation .danger-btn{padding:10px 20px;font-size:13px;border-radius:12px;box-shadow:none}
.event-participation .primary{background:var(--c-accent);color:var(--c-on-accent);-webkit-text-fill-color:var(--c-on-accent)}
@media (max-width:620px){.event-participation .primary,.event-participation .danger-btn{width:100%}}

/* ═══ таблица «Лучший круг» ═══ */
.bl-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:10px 12px;margin-bottom:6px;border:1px solid var(--c-line);border-radius:12px}
.bl-row.top{border-color:color-mix(in srgb,var(--c-accent) 45%,var(--c-line));background:color-mix(in srgb,var(--c-accent) 7%,transparent)}
.bl-place{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:12px;background:color-mix(in srgb,var(--c-accent) 16%,transparent)}
.bl-name{display:flex;flex-direction:column;min-width:0}.bl-name b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bl-lap{font-size:11px;color:var(--c-muted)}
.bl-time{font-size:15px;color:var(--c-accent)}
@media (max-width:520px){.bl-row{grid-template-columns:28px minmax(0,1fr) auto}.bl-lap{display:none}}

/* карточки дронов заявителя в заявках техконтроля */
.tech-drones-title{margin:8px 0 4px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--c-muted)}
.tech-drones{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px}
.tech-drones .drone-card{flex:0 0 min(340px,85%)}
.tech-drones-warn{color:var(--c-warning)}

/* ═══ Секретарь: компактные заявки, преднастройка, массовые действия, «Пилоты и запись» (SecretaryTab.qml) ═══ */
.sec-views{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.sec-views .text-btn.active{background:var(--c-accent);color:var(--c-on-accent,#fff)}
.sec-box{border:1px solid var(--c-line);border-radius:12px;padding:10px 12px;margin:0 0 10px;background:color-mix(in srgb,var(--c-surface) 70%,transparent)}
.sec-box-head{display:flex;align-items:center;gap:10px}
.sec-box-head>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.sec-box-head small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sec-targets{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.sec-comps{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0 2px 30px}
.sec-comps small{flex-basis:100%}
.sec-comp{--k:var(--c-accent);display:inline-flex;gap:6px;align-items:center;border:1px solid color-mix(in srgb,var(--k) 45%,transparent);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;background:transparent;color:var(--c-muted);cursor:pointer}
.sec-comp b{color:var(--k)}
.sec-comp.on{background:color-mix(in srgb,var(--k) 18%,transparent);color:var(--c-text);border-color:var(--k)}
.sec-check{margin:0}
.sec-bulk{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}
.sec-bulk-info{flex:1;min-width:140px;font-size:13px}
.sec-bulk p{flex-basis:100%;margin:0}
.sec-feedback{white-space:pre-line;border:1px solid var(--c-good);border-radius:10px;padding:8px 12px;margin:0 0 10px;font-size:13px;background:color-mix(in srgb,var(--c-good) 10%,transparent)}
.sec-feedback.bad{border-color:var(--c-warning,#f59e0b);background:color-mix(in srgb,var(--c-warning,#f59e0b) 10%,transparent)}
.sec-card{padding:10px 12px}
.sec-card.picked{border-color:var(--c-accent)}
.sec-row{display:flex;align-items:center;gap:10px}
.sec-who{flex:1;min-width:0;display:flex;flex-direction:column}
.sec-who a{font-weight:800;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sec-who small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sec-quick{padding:6px 14px}
.sec-expand{min-width:34px;justify-content:center}
.sec-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0 0 30px}
.sec-chip{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:11px;font-weight:700;background:color-mix(in srgb,var(--c-muted) 14%,transparent);color:var(--c-muted)}
.sec-chip.accent{background:color-mix(in srgb,var(--c-accent) 14%,transparent);color:var(--c-accent)}
.sec-chip.good{background:color-mix(in srgb,var(--c-good) 14%,transparent);color:var(--c-good)}
.sec-chip.warn{background:color-mix(in srgb,var(--c-warning,#f59e0b) 14%,transparent);color:var(--c-warning,#f59e0b)}
.sec-more{font-size:11px}
.sec-error{white-space:pre-line;margin:8px 0 0 30px;padding:6px 10px;border-radius:8px;font-size:12px;border:1px solid color-mix(in srgb,var(--c-warning,#f59e0b) 50%,transparent);background:color-mix(in srgb,var(--c-warning,#f59e0b) 12%,transparent)}
.sec-details{margin:10px 0 0 30px;display:flex;flex-direction:column;gap:6px}
.sec-details h5{margin:6px 0 0;font-size:13px}
.sec-cls{--k:var(--c-accent);display:inline-flex;gap:4px;align-items:center;border:1px solid color-mix(in srgb,var(--k) 45%,transparent);background:color-mix(in srgb,var(--k) 12%,transparent);border-radius:999px;padding:2px 8px;font-size:11px}
.sec-cls b{color:var(--k)}
.sec-cls i{font-style:normal;font-weight:700;color:var(--c-muted);font-size:10px}
.sp-list{display:flex;flex-direction:column;gap:4px}
.sp-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--c-line);border-radius:10px;background:color-mix(in srgb,var(--c-surface) 60%,transparent);cursor:pointer}
.sp-row.picked{border-color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 10%,transparent)}
.sp-dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px}
.sp-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.sp-main a{font-weight:800;font-size:13px}
.sp-classes{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}
.sp-part{color:var(--c-good);opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:640px){.sec-chips,.sec-details,.sec-error{margin-left:0}.sec-quick{display:none}}

/* ═══ Участники мероприятия: список кандидатов с галочками (EventParticipantsPanel.qml) ═══ */
.ep-add2{border:1px solid color-mix(in srgb,var(--c-accent) 35%,transparent);background:color-mix(in srgb,var(--c-accent) 6%,transparent);border-radius:10px;padding:8px;margin:0 0 8px;display:flex;flex-direction:column;gap:6px}
.ep-add-head{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;color:inherit;text-align:left;cursor:pointer;padding:0}
.ep-add-head span{flex:1;min-width:0;display:flex;flex-direction:column}
.ep-add-head i{font-style:normal;color:var(--c-accent)}
.ep-tools{display:flex;flex-wrap:wrap;gap:6px}
.ep-tools>*{flex:1 1 160px;min-width:0}
.ep-pickbar{display:flex;align-items:center;justify-content:space-between;gap:8px}
.ep-cands{max-height:300px;overflow:auto;display:flex;flex-direction:column;gap:2px}
.ep-cand{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer}
.ep-cand.on{background:color-mix(in srgb,var(--c-accent) 14%,transparent)}
.ep-cand.off{opacity:.5;cursor:default}
.ep-cand i{width:8px;height:8px;border-radius:50%;flex:0 0 8px}
.ep-cand span{flex:1;min-width:0;display:flex;flex-direction:column}
.ep-cand b,.ep-cand small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ep-mode{display:flex;flex-direction:column;gap:4px}
.ep-psearch{width:100%;margin:0 0 6px}

/* КЗ: таймер и список смен пилотов у судьи */
.mj-swap.due{border-color:var(--c-warning)}
.mj-swap:not(.due){border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 70%,transparent)}
.mj-swap.open{border:2px solid var(--c-accent);background:color-mix(in srgb,var(--c-accent) 14%,transparent)}
.mj-swap-clock{font-family:ui-monospace,Consolas,monospace;font-size:28px;font-weight:800;color:var(--c-accent)}
.mj-swap-list{display:flex;flex-wrap:wrap;gap:6px}
.mj-swap-chip{border-radius:999px;padding:3px 10px;font-size:12px;font-family:ui-monospace,Consolas,monospace;background:color-mix(in srgb,var(--c-muted) 14%,transparent)}
.mj-swap-chip.best{color:var(--c-good);background:color-mix(in srgb,var(--c-good) 16%,transparent);font-weight:800}
.heat-swaps{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;margin-top:4px}

/* ═══ Судейство: «Мой вылет» (секундомер) и «Мои вылеты» ═══ */
.mj-views{max-width:460px}
.mj-empty{display:flex;flex-direction:column;gap:4px;align-items:center;text-align:center;padding:28px 16px}
.mj-empty span{color:var(--c-muted);font-size:13px}
.mj-pinned{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px;padding:8px 12px;border-radius:12px;
  border:1px solid color-mix(in srgb,var(--c-warning) 55%,var(--c-line));background:color-mix(in srgb,var(--c-warning) 12%,transparent);font-size:13px;font-weight:600}
/* шапка вылета: статус, номер, большой секундомер, остаток времени и автосмена */
.mj-hero{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;margin-bottom:10px;padding:14px 18px;border-radius:16px;
  border:1px solid var(--c-line);background:linear-gradient(135deg,color-mix(in srgb,var(--c-accent) 10%,transparent),color-mix(in srgb,var(--c-surface) 70%,transparent) 60%)}
.mj-hero.st-running{border-color:color-mix(in srgb,var(--c-accent) 55%,var(--c-line))}
.mj-hero.st-paused{border-color:color-mix(in srgb,var(--c-warning) 55%,var(--c-line))}
.mj-hero-meta{display:flex;flex-direction:column;gap:3px;min-width:0}
.mj-hero-meta b{font-size:18px}
.mj-hero-meta small{color:var(--c-muted);font-size:12px}
.mj-status,.mjl-status{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  background:color-mix(in srgb,var(--c-muted) 16%,transparent);color:var(--c-muted)}
.st-running .mj-status,.st-running .mjl-status{background:color-mix(in srgb,var(--c-accent) 18%,transparent);color:var(--c-accent)}
.st-paused .mj-status,.st-paused .mjl-status{background:color-mix(in srgb,var(--c-warning) 18%,transparent);color:var(--c-warning)}
.st-finished .mj-status,.st-finished .mjl-status,.st-published .mj-status,.st-published .mjl-status{background:color-mix(in srgb,var(--c-good) 16%,transparent);color:var(--c-good)}
.mj-status i,.mjl-status i{width:7px;height:7px;border-radius:50%;background:currentColor;animation:mjPulse 1.2s ease-in-out infinite}
@keyframes mjPulse{50%{opacity:.25}}
.mj-hero #my-heat-clock{font-size:clamp(34px,3.4vw + 16px,58px);line-height:1;text-align:center}
.mj-hero-side{display:flex;flex-direction:column;align-items:flex-end;gap:5px;min-width:0;text-align:right}
.mj-hero-side small{color:var(--c-muted);font-size:12px;font-variant-numeric:tabular-nums}
.mj-hero-side .mj-hero-swap{color:var(--c-warning);font-weight:700}
.mj-progress{width:100%;max-width:240px;height:6px;border-radius:999px;background:color-mix(in srgb,var(--c-muted) 18%,transparent);overflow:hidden}
.mj-progress[hidden]{display:none}
.mj-progress i{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,var(--c-accent),var(--c-good))}
.mj-hero + .mh-keys{display:block;margin:0 0 10px 4px}
/* карточки пилотов и команд */
.my-heat-pilots{grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:14px}
.my-heat-pilot{gap:10px;padding:14px 14px 14px 22px;border-radius:16px}
.mj-card-head{display:flex;align-items:center;gap:10px;min-width:0}
.mj-card-head .mj-num{flex:none;width:28px;height:28px;font-size:14px;margin:0}
.mj-who{display:flex;flex-direction:column;min-width:0;flex:1}
.mj-who b{font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mj-who small{color:var(--c-muted);font-size:12px}
.mj-roles{display:flex;flex-wrap:wrap;gap:6px}
.mj-role{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border-radius:999px;font-size:12.5px;font-weight:600;
  background:color-mix(in srgb,var(--c-surface) 70%,transparent);border:1px solid var(--c-line);max-width:100%}
.mj-role i{font-style:normal;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;border-radius:999px;color:#fff;background:var(--c-accent)}
.mj-role.tech i{background:var(--c-muted)}
.mj-stats{display:grid;grid-template-columns:auto 1fr 1fr;gap:6px}
.mj-stats>div{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:12px;background:color-mix(in srgb,var(--c-surface) 65%,transparent);border:1px solid color-mix(in srgb,var(--c-line) 70%,transparent);min-width:0}
.mj-stats small{color:var(--c-muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em}
.mj-stats b{font-size:20px;font-variant-numeric:tabular-nums;white-space:nowrap}
.mj-stats>div:first-child b{font-size:26px;color:var(--pc)}
.mj-fb:empty{display:none}
/* смена пилотов: отдельный блок с таймером и двумя крупными кнопками */
.my-heat-pilot .mj-swap{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 70%,transparent)}
.my-heat-pilot .mj-swap[hidden]{display:none}
.my-heat-pilot .mj-swap.open{border:2px solid var(--c-accent);background:color-mix(in srgb,var(--c-accent) 12%,transparent)}
.my-heat-pilot .mj-swap.due{border:2px solid var(--c-warning);background:color-mix(in srgb,var(--c-warning) 14%,transparent);animation:mjDue 1.6s ease-in-out infinite}
@keyframes mjDue{50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--c-warning) 25%,transparent)}}
.mj-swap-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.mj-swap-head b{font-size:13px;letter-spacing:.02em}
.mj-swap.due .mj-swap-head b{color:var(--c-warning)}
.mj-swap.open:not(.due) .mj-swap-head b{color:var(--c-accent)}
.mj-swap-head .mj-swap-clock{font-size:26px;line-height:1}
.mj-swap-head .mj-swap-clock[hidden]{display:none}
.mj-swap.due .mj-swap-clock{color:var(--c-warning)}
.mj-swap-hint{color:var(--c-muted);font-size:12px}
.mj-swap-hint:empty{display:none}
.mj-swap-btn{min-height:52px;border-radius:12px;border:0;cursor:pointer;font:inherit;font-size:16px;font-weight:800;letter-spacing:.06em;color:#fff;
  touch-action:manipulation;user-select:none;-webkit-user-select:none;transition:filter .12s,transform .06s}
.mj-swap-btn[hidden]{display:none}
.mj-swap-btn.start{background:var(--c-accent)}
.mj-swap-btn.stop{background:var(--c-danger);min-height:60px;font-size:18px}
.mj-swap-btn:hover:not(:disabled){filter:brightness(1.08)}
.mj-swap-btn:active:not(:disabled){transform:scale(.985);filter:brightness(.9)}
.mj-swap-btn:disabled{opacity:.7;cursor:progress}
/* «Мои вылеты» */
.mjl[hidden]{display:none}
.mjl-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:6px}
.mjl-summary>div{display:flex;flex-direction:column;padding:10px 14px;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 65%,transparent)}
.mjl-summary b{font-size:24px;font-variant-numeric:tabular-nums}
.mjl-summary span{color:var(--c-muted);font-size:12px}
.mjl-list{display:grid;gap:10px}
.mjl-heat{border:1px solid var(--c-line);border-radius:16px;padding:12px 14px;background:color-mix(in srgb,var(--c-surface) 65%,transparent)}
.mjl-heat.st-running{border-color:color-mix(in srgb,var(--c-accent) 60%,var(--c-line));box-shadow:0 0 0 1px color-mix(in srgb,var(--c-accent) 30%,transparent)}
.mjl-heat.current{outline:2px solid color-mix(in srgb,var(--c-accent) 55%,transparent);outline-offset:2px}
.mjl-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.mjl-no{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;font-weight:800;font-size:16px;background:color-mix(in srgb,var(--c-accent) 16%,transparent);color:var(--c-accent)}
.mjl-title{display:flex;flex-direction:column;flex:1;min-width:160px}
.mjl-title b{display:flex;align-items:center;gap:8px}
.mjl-title small{color:var(--c-muted);font-size:12px}
.mjl-head .mjl-status{align-self:center}
.mjl-head button{flex:none}
.mjl-rows{display:grid;gap:6px;margin-top:10px}
.mjl-row{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:12px;background:color-mix(in srgb,var(--c-surface) 55%,transparent);border:1px solid color-mix(in srgb,var(--c-line) 60%,transparent)}
.mjl-row.out{opacity:.6}
.mjl-row>i{flex:none;width:6px;align-self:stretch;border-radius:3px;background:var(--pc)}
.mjl-name{display:flex;flex-direction:column;flex:1;min-width:0}
.mjl-name b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mjl-name small{color:var(--c-muted);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mjl-cell{display:flex;flex-direction:column;align-items:flex-end;min-width:64px}
.mjl-cell small{color:var(--c-muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em}
.mjl-cell b{font-variant-numeric:tabular-nums}
.mjl-cell.swap b{color:var(--c-accent)}
@media (max-width:760px){
  .mj-hero{grid-template-columns:1fr;text-align:center;gap:8px}
  .mj-hero-meta{align-items:center}
  .mj-hero-meta .mj-status{align-self:center}
  .mj-hero-side{align-items:center;text-align:center}
  .mjl-row{flex-wrap:wrap}
  .mjl-name{flex-basis:100%}
  .mjl-cell{align-items:flex-start;flex:1}
}
@media (prefers-reduced-motion:reduce){.mj-status i,.mjl-status i,.my-heat-pilot .mj-swap.due{animation:none}}

/* ═══ Таблицы лидеров: «Лучший круг» и «Лучшая смена» ═══ */
.bl-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin:2px 0 12px}
.bl-head>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.bl-head b{font-size:16px}
.bl-head small{color:var(--c-muted);font-size:12px}
.bl-list{display:grid;gap:8px}
.bl-list .bl-row{--m:var(--c-accent);display:grid;grid-template-columns:40px minmax(0,1fr) auto 14px;align-items:center;gap:14px;margin:0;padding:12px 14px;
  border:1px solid var(--c-line);border-radius:14px;background:color-mix(in srgb,var(--c-surface) 62%,transparent);transition:border-color .15s,transform .15s,background .15s}
.bl-list .bl-row:not(.clickable){grid-template-columns:40px minmax(0,1fr) auto}
.bl-list .bl-row.top{border-color:color-mix(in srgb,var(--m) 45%,var(--c-line));background:linear-gradient(90deg,color-mix(in srgb,var(--m) 13%,transparent),color-mix(in srgb,var(--c-surface) 62%,transparent) 55%)}
.bl-list .bl-row.g{--m:#f5c542}.bl-list .bl-row.s{--m:#c0c7d1}.bl-list .bl-row.b{--m:#cd8a4b}
.bl-list .bl-row.clickable{cursor:pointer}
.bl-list .bl-row.clickable:hover{border-color:var(--c-accent);transform:translateY(-1px)}
.bl-list .bl-row:focus-visible,.bl-link:focus-visible,.tc-member:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}
.bl-list .bl-place{width:36px;height:36px;border-radius:11px;font-size:14px;background:color-mix(in srgb,var(--c-muted) 14%,transparent);color:var(--c-text)}
.bl-list .bl-row.top .bl-place{background:var(--m);color:#1b1b1b}
.bl-list .bl-name{gap:3px}
.bl-list .bl-name b{font-size:14.5px}
.bl-sub{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;color:var(--c-muted);font-size:12px}
.bl-dot{font-style:normal;opacity:.6}
.bl-link{color:var(--c-text);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--c-accent) 45%,transparent);text-underline-offset:3px;cursor:pointer;border-radius:4px}
.bl-link:hover{color:var(--c-accent);text-decoration-color:var(--c-accent)}
.bl-chips{display:flex;flex-wrap:wrap;gap:4px}
.bl-chips em{font-style:normal;font-size:11px;padding:1px 8px;border-radius:999px;color:var(--c-muted);background:color-mix(in srgb,var(--c-muted) 12%,transparent)}
.bl-res{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:110px}
.bl-list .bl-time{font-size:18px;color:var(--c-accent);font-variant-numeric:tabular-nums}
.bl-list .bl-row.top .bl-time{color:var(--c-text)}
.bl-gap{color:var(--c-muted);font-size:11px;font-variant-numeric:tabular-nums}
.bl-bar{display:block;width:100%;height:4px;border-radius:999px;background:color-mix(in srgb,var(--c-muted) 15%,transparent);overflow:hidden}
.bl-bar>i{display:block;height:100%;border-radius:inherit;background:var(--m)}
.bl-go{color:var(--c-muted);font-size:22px;line-height:1}
@media (max-width:560px){
  .bl-list .bl-row,.bl-list .bl-row:not(.clickable){grid-template-columns:32px minmax(0,1fr) auto;gap:10px;padding:10px 11px}
  .bl-list .bl-place{width:30px;height:30px;font-size:12px}
  .bl-go{display:none}
  .bl-res{min-width:84px}
  .bl-list .bl-time{font-size:15px}
}

/* ═══ Карточка команды (модальное окно) ═══ */
.person-dialog.is-team{max-width:980px}
.pp-backbar{margin:0 0 10px}
.tc{display:grid;gap:14px}
.tc-hero{display:flex;align-items:center;gap:16px;padding:18px 56px 18px 18px;border-radius:18px;border:1px solid var(--c-line);
  background:linear-gradient(120deg,color-mix(in srgb,var(--c-accent) 22%,transparent),color-mix(in srgb,var(--c-warning) 8%,transparent) 55%,transparent)}
.tc-logo{flex:none;width:64px;height:64px;border-radius:18px;display:grid;place-items:center;font-size:28px;font-weight:800;color:#fff;
  background:linear-gradient(135deg,var(--c-accent),color-mix(in srgb,var(--c-accent) 40%,var(--c-warning)));box-shadow:0 10px 26px color-mix(in srgb,var(--c-accent) 30%,transparent)}
.tc-hero-main{min-width:0;display:flex;flex-direction:column;gap:4px}
.tc-hero-main>small{color:var(--c-muted);font-size:11px;font-weight:800;letter-spacing:.12em}
.tc-live{color:var(--c-accent)}
.person-dialog .tc-hero h2{margin:0;font-size:24px;line-height:1.15;overflow-wrap:anywhere;text-shadow:none}
.tc-hero p{margin:0;color:var(--c-muted);font-size:13px}
.tc-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.tc-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px}
.tc-tiles>div{display:flex;flex-direction:column;gap:3px;padding:11px 13px;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 62%,transparent)}
.tc-tiles small{color:var(--c-muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.07em}
.tc-tiles b{font-size:20px;font-variant-numeric:tabular-nums}
.tc-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:14px;align-items:start}
.tc-sec{padding:14px;border-radius:18px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 55%,transparent);min-width:0}
.tc-sec h3{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:15px}
.tc-count{font-size:11px;padding:1px 8px;border-radius:999px;color:var(--c-muted);background:color-mix(in srgb,var(--c-muted) 14%,transparent)}
.tc-members{display:grid;gap:8px}
.tc-member{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 70%,transparent);min-width:0}
.tc-member>div{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.tc-member b{font-size:14.5px;overflow-wrap:anywhere}
.tc-member small{color:var(--c-muted);font-size:11.5px}
.tc-member.clickable{cursor:pointer;transition:border-color .15s,transform .15s}
.tc-member.clickable:hover{border-color:var(--c-accent);transform:translateY(-1px)}
.tc-member.empty{border-style:dashed;opacity:.75}
.tc-ava{flex:none;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:14px;color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 14%,transparent);border:2px solid color-mix(in srgb,var(--c-accent) 55%,transparent)}
.tc-ava.female{color:#e0559b;background:rgba(224,85,155,.12);border-color:rgba(224,85,155,.55)}
.tc-role{align-self:flex-start;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:1px 8px;border-radius:999px;color:#fff;background:var(--c-accent)}
.tc-role.tech{background:var(--c-muted)}
.tc-role.coach{background:var(--c-warning);color:#1b1b1b}
.tc-go{color:var(--c-muted);font-size:22px;line-height:1}
.tc-hint{display:block;margin-top:8px;color:var(--c-muted);font-size:11.5px}
.tc-drones{display:grid;gap:6px}
.tc-drone{display:grid;grid-template-columns:10px minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:9px 11px;border-radius:12px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 70%,transparent)}
.tc-drone.main{border-color:color-mix(in srgb,var(--c-accent) 50%,var(--c-line))}
.tc-drone>i{width:10px;height:10px;border-radius:50%}
.tc-drone>div{display:flex;flex-direction:column;min-width:0}
.tc-drone b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tc-drone small{color:var(--c-muted);font-size:11px}
.tc-ch{font-weight:800;color:var(--c-accent);font-size:13px}
.tc-flights{display:grid;gap:6px}
.tc-flight{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 70%,transparent)}
.tc-flight.muted{opacity:.6}
.tc-place{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;font-weight:800;font-size:13px;background:color-mix(in srgb,var(--c-muted) 14%,transparent)}
.tc-place.g{background:#f5c542;color:#1b1b1b}.tc-place.s{background:#c0c7d1;color:#1b1b1b}.tc-place.b{background:#cd8a4b;color:#1b1b1b}
.tc-fl-main{display:flex;flex-direction:column;min-width:0}
.tc-fl-title{display:flex;align-items:center;gap:8px;min-width:0}
.tc-fl-title b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.tc-fl-title .cbadge,.tc-fl-title .pill{flex:none;transform:scale(.85);transform-origin:left center}
.tc-fl-main small{color:var(--c-muted);font-size:11.5px}
.tc-fl-res{display:flex;flex-direction:column;align-items:flex-end;white-space:nowrap;text-align:right}
.tc-fl-res b{font-size:13.5px}
.tc-fl-res small{color:var(--c-muted);font-size:11.5px}
.tc-empty{padding:14px;text-align:center;color:var(--c-muted);font-size:12.5px;border:1px dashed var(--c-line);border-radius:12px}
@media (max-width:760px){
  .tc-grid{grid-template-columns:1fr}
  .tc-hero{padding:14px 48px 14px 14px;gap:12px}
  .tc-logo{width:52px;height:52px;font-size:22px;border-radius:15px}
  .person-dialog .tc-hero h2{font-size:20px}
  .tc-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tc-tiles b{font-size:17px}
  .tc-flight{gap:10px;padding:10px}
  .tc-place{width:30px;height:30px}
  .tc-drone{grid-template-columns:10px minmax(0,1fr) auto}
  .tc-drone>.pill{grid-column:2/-1;justify-self:start}
}
@media (max-width:420px){.tc-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* история смен дронов команды в вылете */
.heat-dchg{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;margin-top:6px}
.heat-dchg>b{margin-right:4px}
.heat-dchg-item{display:inline-flex;align-items:center;gap:8px;padding:4px 10px 4px 8px;border-radius:10px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 65%,transparent)}
.heat-dchg-item>i{width:9px;height:9px;border-radius:50%;flex:none}
.heat-dchg-item>span{display:flex;flex-direction:column;line-height:1.25}
.heat-dchg-item small{color:var(--c-muted);font-size:11px}

/* Кнопки судьи на цветном фоне: общие правила `.client-app button:not(.primary)` и `.client-app .primary` красят подпись
   в цвет темы / акцент (и при наведении), из-за чего на красной/синей кнопке текст пропадал или темнел. Подпись — всегда белая */
.client-app .mj-swap-btn,
.client-app .mj-swap-btn:hover,
.client-app .mj-swap-btn:active,
.client-app .mj-swap-btn:focus,
.client-app .mj-swap-btn:disabled,
.client-app .my-heat-pilot .mj-lap,
.client-app .my-heat-pilot .mj-lap:hover,
.client-app .my-heat-pilot .mj-lap:disabled{
  color:#fff !important;
  -webkit-text-fill-color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.28);
}
.client-app .mj-swap-btn.start,.client-app .mj-swap-btn.start:hover{background:var(--c-accent) !important}
.client-app .mj-swap-btn.stop,.client-app .mj-swap-btn.stop:hover{background:var(--c-danger) !important}
.client-app .my-heat-pilot .mj-lap:disabled{opacity:.6}

/* ═══ Вызов врача ═══ */
.dr-banner{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;border:.7px solid var(--c-line);margin-bottom:12px}
.dr-banner>i{flex:none;width:12px;height:12px;border-radius:50%;background:var(--c-warning)}
.dr-banner.ok{border-color:var(--c-good);background:color-mix(in srgb,var(--c-good) 10%,transparent)}.dr-banner.ok>i{background:var(--c-good)}
.dr-banner.warn{border-color:var(--c-warning);background:color-mix(in srgb,var(--c-warning) 10%,transparent)}
.dr-banner>div{display:flex;flex-direction:column;gap:2px}.dr-banner small{color:var(--c-muted)}
.dr-form{display:grid;gap:10px;padding:14px;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 62%,transparent)}
.dr-form[hidden],.dr-mine[hidden],#doctor-queue-wrap[hidden]{display:none}
.dr-form label{display:grid;gap:5px;font-weight:600;font-size:13px}
.dr-error{margin:0;color:var(--c-danger);font-size:13px}.dr-error[hidden]{display:none}
.client-app .dr-call,.client-app .dr-call:hover{min-height:52px;font-size:16px;font-weight:800;color:#fff !important;-webkit-text-fill-color:#fff;background:var(--c-danger)}
.dr-mine{display:grid;gap:6px;padding:14px;border-radius:14px;border:.7px solid var(--c-danger);margin-top:12px}.dr-mine h3,.dr-mine p{margin:0}
.dr-pos{color:var(--c-warning);font-size:15px}
.dr-queue{display:grid;gap:8px}
.dr-card{padding:12px 14px;border-radius:14px;border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-surface) 62%,transparent)}
.dr-card.active{border:.7px solid var(--c-warning);background:color-mix(in srgb,var(--c-warning) 9%,transparent)}
.dr-card p{margin:4px 0}.dr-head{display:flex;justify-content:space-between;gap:8px}.dr-head small{color:var(--c-muted)}
.dr-phone a{font-family:ui-monospace,Consolas,monospace;font-weight:800;color:var(--c-accent)}
.dr-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}

.dr-presets{display:flex;flex-wrap:wrap;gap:6px}
.client-app .dr-chip{min-height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--c-line);background:transparent;font:inherit;font-size:13px;cursor:pointer}
.client-app .dr-chip:hover{border-color:var(--c-accent);color:var(--c-text)}
.client-app .dr-chip.urgent,.client-app .dr-chip.urgent:hover{border:.7px solid var(--c-danger);background:color-mix(in srgb,var(--c-danger) 20%,transparent);font-weight:800;color:var(--c-text)}
@media (max-width:640px){.client-app .dr-chip{min-height:46px}}
/* «Позвонить» — только на телефоне (на компьютере номер остаётся ссылкой) */
.dr-tel{display:none;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border-radius:12px;text-decoration:none;font-weight:800}
@media (hover:none) and (pointer:coarse){.client-app .dr-tel{display:inline-flex;color:#fff !important;-webkit-text-fill-color:#fff;background:var(--c-accent)}}

/* ---------- «Главная» (редизайн, как HomeDashboard.qml): следующий шаг, работа, мероприятия, уведомления, быстрые действия ---------- */
.hm-head{display:flex;flex-direction:column;gap:4px}
.hm-date{font-size:13px;color:var(--c-muted)}
.hm-head h2{margin:0;font-size:clamp(22px,2.2vw,30px);letter-spacing:-.01em}
.hm-step{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;padding:22px 24px;border-radius:18px;
  border:1px solid color-mix(in srgb,var(--tone) 45%,transparent);background:color-mix(in srgb,var(--tone) 12%,var(--c-surface))}
.hm-step-copy{display:flex;flex-direction:column;align-items:flex-start;gap:10px;flex:1 1 420px;min-width:0}
.hm-eyebrow{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--tone)}
.hm-step h3{margin:0;font-size:clamp(19px,1.8vw,24px)}
.hm-chips{display:flex;flex-wrap:wrap;gap:8px}
.hm-chips span{padding:6px 10px;border-radius:8px;font-size:13px;background:color-mix(in srgb,#000 18%,transparent);border:1px solid color-mix(in srgb,var(--tone) 35%,transparent)}
.hm-step-btn{min-height:44px;padding:0 20px;border-radius:12px;border:0;background:var(--tone);color:var(--c-on-accent);font:inherit;font-weight:700;cursor:pointer}
.hm-big{font-size:clamp(26px,3vw,34px);font-weight:700;white-space:nowrap}
.hm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;align-items:stretch}
.hm-card{display:flex;flex-direction:column;gap:10px;padding:18px;border-radius:16px;background:var(--c-surface);border:1px solid var(--c-line)}
.hm-card h3{margin:0;font-size:15px}
.hm-card-head{display:flex;justify-content:space-between;align-items:center}
.hm-link{border:0;background:none;color:var(--c-accent);cursor:pointer;font:inherit;font-size:13px;padding:6px}
.hm-row{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:56px;padding:0 14px;border-radius:12px;border:0;
  background:color-mix(in srgb,var(--c-text) 4%,transparent);color:var(--c-text);font:inherit;cursor:pointer;text-align:left}
.hm-row b{font-size:22px;color:var(--c-accent)}
.hm-event{display:flex;gap:12px;align-items:center;padding:6px;border-radius:12px;border:0;background:none;color:var(--c-text);font:inherit;cursor:pointer;text-align:left}
.hm-row:hover,.hm-event:hover{background:color-mix(in srgb,var(--c-text) 8%,transparent)}
.hm-date-box{width:48px;height:52px;flex:0 0 48px;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:color-mix(in srgb,var(--c-text) 6%,transparent)}
.hm-date-box b{font-size:17px}
.hm-date-box small{font-size:11px;color:var(--c-muted)}
.hm-event-copy{display:flex;flex-direction:column;gap:3px;min-width:0}
.hm-event-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hm-good{color:var(--c-good)}
.hm-warn{color:var(--c-warning)}
.hm-stat{display:flex;align-items:center;gap:12px}
.hm-stat b{font-size:26px;white-space:nowrap}
.hm-stat span{font-size:13px;color:var(--c-muted)}
.hm-title{margin:4px 0 0;font-size:15px}
.hm-quick{display:flex;flex-wrap:wrap;gap:10px}
.hm-quick button{display:flex;align-items:center;gap:8px;min-height:46px;padding:0 16px;border-radius:12px;background:var(--c-surface);border:1px solid var(--c-line);color:var(--c-text);font:inherit;cursor:pointer}
.hm-quick button:hover{background:var(--c-surface-hover)}
.hm-quick .ui-icon{width:16px;height:16px}
.hm-step{position:relative}
@media (max-width:640px){.hm-step-btn{width:100%}.hm-quick button{flex:1 1 calc(50% - 5px)}
  /* отсчёт на телефоне — в правом верхнем углу, в строке «Следующий шаг» */
  .hm-big{position:absolute;top:20px;right:22px;font-size:16px}}

/* судья: кнопки действий — сплошные и заметные, а не прозрачные на фоне карточки */
.mj-actions .text-btn,.mj-attempts .text-btn{min-height:42px;padding:0 16px;border-radius:12px;font-weight:700;cursor:pointer;
  background:color-mix(in srgb,var(--c-text) 14%,var(--c-surface-2));border:1px solid color-mix(in srgb,var(--c-text) 24%,transparent);color:var(--c-text)}
.mj-actions .text-btn:hover,.mj-attempts .text-btn:hover{background:color-mix(in srgb,var(--c-text) 22%,var(--c-surface-2));color:var(--c-text)}
.mj-actions [data-my-stop],.mj-attempts [data-mj-attempt-new]{flex:1 1 100%;min-height:52px;font-size:15px}
.mj-actions [data-my-stop][data-on="1"]{background:var(--c-danger);border-color:var(--c-danger);color:#fff}
.mj-actions [data-my-stop][data-on="0"]{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-on-accent)}
.mj-attempts [data-mj-attempt-new]{background:var(--c-warning);border-color:var(--c-warning);color:#1a1200}
.mj-attempts [data-mj-attempt-new]:hover{background:color-mix(in srgb,var(--c-warning) 88%,#fff);color:#1a1200}
.mj-actions [data-my-undo].bad{background:var(--c-danger);border-color:var(--c-danger);color:#fff}
.mj-actions [data-my-dns]{background:color-mix(in srgb,var(--c-danger) 26%,var(--c-surface-2));border-color:color-mix(in srgb,var(--c-danger) 50%,transparent);color:var(--c-danger)}
.mj-attempts [data-mj-attempts]{background:color-mix(in srgb,var(--c-accent) 26%,var(--c-surface-2));border-color:color-mix(in srgb,var(--c-accent) 50%,transparent);color:var(--c-accent)}

/* форма мероприятия: группы «Основное», «Условия вылетов», «Дисциплины»; подпись — над полем, подсказка — под ним */
.ev-form{display:grid;gap:18px;margin:16px 0 8px;text-align:left}
.ev-sec{display:grid;gap:10px}
.ev-sec>h3{margin:0;font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--c-text)}
.ev-note{margin:0;font-size:12px;line-height:1.4;color:var(--c-muted)}
.ev-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}
.ev-grid-3{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.ev-full{grid-column:1/-1}
.fld{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:12.5px;color:var(--c-muted)}
.fld[hidden]{display:none}
.fld .fld-t{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;font-weight:600;color:var(--c-text)}
.fld .fld-t em{white-space:nowrap;font-style:normal;font-weight:600;font-size:10.5px;padding:1px 7px;border-radius:999px;color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 14%,transparent)}
.fld input,.fld textarea{margin:0;width:100%;box-sizing:border-box}
.fld small{font-size:11.5px;line-height:1.35}
.ev-sim-time{display:flex;align-items:center;gap:8px}
.ev-sim-time input{width:0;flex:1 1 0}
.ev-sim-time i{font-style:normal;color:var(--c-muted)}
.event-classes{gap:8px;margin-top:0}
.ec-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"name att" "ind team";align-items:center;gap:10px 14px;padding:12px 14px;border:1px solid var(--c-line);border-radius:12px;background:color-mix(in srgb,var(--c-text) 3%,transparent)}
.ec-row .ec-name{grid-area:name;min-width:0;font-size:15px}
.ec-row>.check:nth-of-type(1){grid-area:ind}
.ec-row>.check:nth-of-type(2){grid-area:team}
.ec-row .check{margin:0;min-width:0}
.ec-row .ec-att{grid-area:att;margin-left:0;justify-self:end}
@media(max-width:560px){
  .ev-grid{grid-template-columns:1fr}
}

/* форма дрона: подпись над полем, три/два/один столбца по ширине, два раздела, на телефоне кнопки закреплены внизу */
#drone-modal .client-modal-dialog--drone{max-width:900px}
#drone-modal .drone-build-grid{grid-template-columns:minmax(0,1fr);gap:8px 10px}
@media (min-width:600px){#drone-modal .drone-build-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:860px){#drone-modal .drone-build-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
#drone-modal .drone-build-row{display:flex;flex-direction:column;align-items:stretch;gap:3px}
#drone-modal .drone-build-row>span{font-size:11.5px;font-weight:700;color:var(--c-muted)}
#drone-modal .drone-build-row input,#drone-modal .drone-build-row select,#drone-modal .drone-build-row .themed-select-control{min-height:36px}
#drone-modal .drone-link-rows{display:contents}
#drone-modal .drone-sect{display:flex;align-items:center;gap:10px;margin:12px 0 6px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--c-accent)}
#drone-modal .drone-sect::after{content:"";flex:1;height:1px;background:var(--c-line)}
#drone-modal .drone-extra-grid{margin-top:0}
#drone-modal .manager-actions{justify-content:flex-end;gap:10px}
#drone-modal .manager-actions .text-btn{margin-right:0}
@media (max-width:640px){
  /* панель кнопок закреплена у нижнего края; подсказка — отдельной строкой над кнопками, кнопки в ряд (общее правило flex:1 1 140px в колонке растягивало их по высоте) */
  #drone-modal .client-modal-dialog--drone .manager-actions{width:auto;position:sticky;bottom:calc(0px - max(18px,env(safe-area-inset-bottom)));flex-direction:row;flex-wrap:wrap;gap:8px;margin:10px -18px calc(0px - max(18px,env(safe-area-inset-bottom)));padding:10px 18px max(14px,env(safe-area-inset-bottom));background:var(--c-surface);border-top:1px solid var(--c-line);z-index:2}
  #drone-modal .client-modal-dialog--drone .manager-actions>*{flex:0 0 auto;width:auto}
  #drone-modal .client-modal-dialog--drone .manager-actions .drone-missing{flex:1 0 100%;order:-1;margin:0}
  #drone-modal .client-modal-dialog--drone .manager-actions .primary{flex:1 1 0}
  #drone-modal .drone-build-row input,#drone-modal .drone-build-row select,#drone-modal .drone-build-row .themed-select-control{min-height:42px;font-size:14px}
}

/* окна «Регламента»: нарушения, перелёты, допуск, чек-лист, состав команды */
.reg-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 8px}
.reg-chip{padding:6px 12px;border-radius:999px;border:1px solid var(--c-border,rgba(255,255,255,.18));background:transparent;color:inherit;font:inherit;font-size:13px;cursor:pointer}
.reg-chip.active{background:var(--c-accent,#4f8cff);border-color:var(--c-accent,#4f8cff);color:#fff;font-weight:600}
.reg-body{display:grid;gap:10px;max-height:min(70vh,640px);overflow:auto;padding:2px 2px 6px}
.reg-body label{display:grid;gap:4px;font-size:13px}
.reg-body textarea,.reg-body input[type=number],.reg-body input[type=text],.reg-body input[type=date],.reg-body select{width:100%;box-sizing:border-box}
.reg-hist-box{display:grid;gap:4px}
.reg-hist{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:12px;padding:4px 0;border-top:1px solid var(--c-border,rgba(255,255,255,.12))}
.reg-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:10px}
.reg-note.good-text{color:var(--c-good,#22c55e)}
.reg-note.bad-text{color:var(--c-bad,#ef4444)}
.reg-doc{display:flex;gap:8px;align-items:center;padding:4px 0}
.reg-row{display:flex;justify-content:space-between;gap:10px;align-items:center;width:100%;text-align:left;padding:10px 12px;border-radius:10px;border:1px solid var(--c-border,rgba(255,255,255,.12));background:rgba(255,255,255,.03);color:inherit;font:inherit;cursor:pointer}
.reg-row:hover{background:rgba(255,255,255,.07)}
.reg-adm{display:grid;gap:10px}
.reg-body label.check{display:flex;align-items:center;gap:11px;margin:4px 0}
.reg-checks{display:grid;gap:2px;margin-top:4px}
.reg-checks label.check small{display:block}

/* ---------- Правка кругов и попыток (RaceLapsEditorView.qml): попытки — колонками, круги — строками ---------- */
.laps-edit-dialog{width:min(1000px,100%);max-height:calc(100vh - 48px);overflow:auto;text-align:left}
.laps-edit-btn{appearance:none;flex:0 0 auto;width:30px;height:30px;border-radius:50%;display:inline-grid;place-items:center;cursor:pointer;
  border:1px solid var(--c-line);background:color-mix(in srgb,var(--c-text) 5%,transparent);color:var(--c-accent);margin-left:6px}
.laps-edit-btn .icon{--icon-tint:var(--c-accent)}
.laps-edit-btn:hover{background:color-mix(in srgb,var(--c-accent) 22%,transparent)}
.le-chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}
.le-chips button{appearance:none;border:1px solid var(--c-line);background:transparent;color:var(--c-muted);border-radius:999px;padding:5px 12px;font:inherit;font-size:12px;cursor:pointer}
.le-chips button.on{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-on-accent)}
.le-scroll{overflow-x:auto;margin-top:10px;padding-bottom:6px}
.le-grid{display:grid;grid-template-columns:64px repeat(var(--le-cols),minmax(170px,250px));gap:4px 6px;align-items:stretch;min-width:max-content}
.le-head{border:1px solid var(--c-line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:4px;min-width:0;overflow:hidden;
  background:color-mix(in srgb,var(--c-text) 4%,transparent);font-size:12px}
.le-head>*{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.le-marks{display:flex;gap:4px;min-height:18px}
.le-acts{display:flex;gap:14px;min-height:20px;align-items:center}
.le-head.active{border-color:var(--c-accent);background:color-mix(in srgb,var(--c-accent) 14%,transparent)}
.le-head b{font-size:13px}
.le-head em{font-style:normal;font-size:10px;font-weight:800;line-height:16px;padding:0 6px;border-radius:9px;color:var(--c-accent);
  border:1px solid color-mix(in srgb,var(--c-accent) 60%,transparent);background:color-mix(in srgb,var(--c-accent) 16%,transparent)}
.le-head em.good{color:var(--c-good);border-color:color-mix(in srgb,var(--c-good) 60%,transparent);background:color-mix(in srgb,var(--c-good) 16%,transparent)}
.le-head small{color:var(--c-muted)}
.le-head .link-btn{appearance:none;border:0;background:none;padding:0;color:var(--c-accent);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.le-head .link-btn.bad{color:var(--c-danger)}
.le-add{appearance:none;cursor:pointer;color:var(--c-accent);border-style:dashed;align-items:center;justify-content:center;text-align:center;font:inherit;font-size:12px}
.le-label{display:flex;align-items:center;font-size:12px;font-weight:700}
.le-label.target{color:var(--c-accent)}
.le-cell{position:relative;display:flex;align-items:center;gap:6px;min-height:42px;padding:4px 26px 4px 4px;border:1px solid var(--c-line);border-radius:8px;
  background:color-mix(in srgb,var(--c-text) 3%,transparent)}
.le-cell.best{background:color-mix(in srgb,var(--c-good) 12%,transparent)}
.le-cell{min-width:0;overflow:hidden}
.le-cell.empty{border-style:dashed;border-color:color-mix(in srgb,var(--c-line) 60%,transparent);background:transparent;padding:4px;justify-content:center}
.le-cell.new{border-style:dashed;padding-right:4px}
.le-cell input{width:86px;min-width:0;height:32px;padding:0 8px;border-radius:8px;border:1px solid var(--c-line);background:var(--c-surface);color:var(--c-text);font-size:13px}
.le-cell.new input{width:100%}
.le-cell input.err{border-color:var(--c-danger);box-shadow:0 0 0 2px color-mix(in srgb,var(--c-danger) 25%,transparent)}
.le-cell input:disabled{opacity:.7}
.le-cell small{font-size:10px;white-space:nowrap}
.le-del{position:absolute;right:6px;top:50%;transform:translateY(-50%);appearance:none;border:0;background:none;color:var(--c-danger);font-size:13px;cursor:pointer;padding:4px}
.le-note{margin:8px 0 0;font-size:12px}
.le-note.warn{color:var(--c-warning)}
.le-note.bad{color:var(--c-danger)}
@media (max-width:700px){
  .le-grid{grid-template-columns:52px repeat(var(--le-cols),minmax(140px,200px))}
  .le-cell small{display:none}
  .le-cell input{width:78px}
}

/* Общая прокрутка диалогов: высота в координатах CSS zoom, включая горизонтальные телефоны. */
.client-modal {
  --dialog-pad-top: max(12px, env(safe-area-inset-top, 0px));
  --dialog-pad-bottom: max(12px, env(safe-area-inset-bottom, 0px));
  inset: 0 0 auto;
  height: calc(100vh / var(--ui-scale, 1));
  height: calc(100dvh / var(--ui-scale, 1));
  padding: var(--dialog-pad-top) max(12px, env(safe-area-inset-right, 0px)) var(--dialog-pad-bottom) max(12px, env(safe-area-inset-left, 0px));
  overflow: hidden;
  overscroll-behavior: contain;
}
.client-modal > .client-modal-dialog {
  flex: 0 1 auto;
  min-width: 0;
  min-height: 0;
  max-height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: var(--c-line-strong) transparent;
  scrollbar-gutter: stable;
  scroll-padding-block: 16px 76px;
}
.client-modal-dialog::-webkit-scrollbar { width: 8px; }
.client-modal-dialog::-webkit-scrollbar-thumb { background: var(--c-line-strong); border-radius: 8px; }
.client-modal-dialog .manager-actions {
  position: sticky;
  bottom: 0;
  z-index: 3;
  flex-wrap: wrap;
  gap: 8px;
  padding: 12px 0;
  background: var(--c-surface);
}
@media (max-height: 560px) and (orientation: landscape) {
  .client-modal { --dialog-pad-top: max(8px, env(safe-area-inset-top, 0px)); --dialog-pad-bottom: max(8px, env(safe-area-inset-bottom, 0px)); }
  .client-modal > .client-modal-dialog { padding: 20px; border-radius: 16px; }
}
