/* Wyglad na wzor panelu TakeCar: ciemne menu boczne i gorny pasek, jasna albo ciemna tresc (motyw z urzadzenia,
   przelacznik w gornym pasku), biale karty z cienka ramka, przyciski-pigulki, granatowe naglowki tabel i okien.
   Akcent TakeTune zostaje: gradient czerwien -> pomarancz na glownych akcjach, pomarancz w znacznikach.
   Kolory tylko jako zmienne; kazda zmienna ma wartosc w obu motywach. JetBrains Mono tylko dla danych. */
:root {
  color-scheme: light;
  /* tresc: motyw jasny (jak TakeCar light) */
  --bg: #F3F5F9; --panel: #FFFFFF; --panel2: #F6F8FB; --panel3: #E6EBF2;
  --border: #CBD5E1; --border-soft: #E2E8F0;
  --text: #0F172A; --text2: #334155; --muted: #5B6779; --heading: #111A26;
  --hover: rgba(15,23,42,.05); --row-hover: rgba(15,23,42,.035); --chip-bg: #EEF2F6;
  /* akcent: tekst i znaczniki ciemniejszym pomaranczem (kontrast na bieli 5,2:1), wypelnienia gradientem z ciemnym napisem */
  --accent: #C2410C; --accent-light: #C2410C; --accent-dark: #9A3412; --accent2: #EA580C;
  --on-accent: #160F0D;
  --grad-heat: linear-gradient(118deg, #F5443B 0%, #FF5A2C 52%, #FF9A1E 100%);
  --grad-heat-v: linear-gradient(180deg, #F5443B, #FF9A1E);
  --grad-ink: linear-gradient(100deg, #C62828, #E65100);
  --grad-heat-soft: rgba(255,138,30,.12);
  --accent-bg: rgba(255,138,30,.12); --accent-soft: rgba(255,138,30,.12); --accent-line: rgba(234,88,12,.38);
  --glow-accent: 0 0 0 0 transparent;
  --header-dark: #111A26;
  --code-bg: #0F172A; --code-border: #1E293B;
  --input-bg: #FFFFFF; --input-border: #CBD5E1;
  /* statusy: tekst (dla napisow), znacznik (ikony, obrysy), tlo i obrys */
  --ok-text: #1B5E20; --warn-text: #9A3412; --err-text: #B71C1C; --info-text: #1D4ED8;
  --ok: #2E7D32; --warn: #ED6C02; --err: #D32F2F; --info: #2563EB;
  --ok-bg: rgba(46,125,50,.10); --warn-bg: rgba(237,108,2,.10); --err-bg: rgba(211,47,47,.08); --info-bg: rgba(37,99,235,.07);
  --ok-line: rgba(46,125,50,.32); --warn-line: rgba(237,108,2,.34); --err-line: rgba(211,47,47,.30); --info-line: rgba(37,99,235,.28);
  --tile-accent: rgba(255,138,30,.14); --tile-emis: rgba(237,108,2,.12); --tile-dtc: rgba(211,47,47,.10); --tile-other: #EEF2F6;
  --shadow-card: 0 1px 3px rgba(15,23,42,.05); --shadow-hover: 0 8px 20px rgba(15,23,42,.10);
  --shadow-pop: 0 12px 32px rgba(15,23,42,.16);
  --scrim: rgba(15,23,42,.5);
  /* menu boczne i gorny pasek: zawsze ciemne */
  --sidebar-bg: #0B1220; --sidebar-text: #CBD5E1; --sidebar-muted: #94A3B8;
  --sidebar-divider: rgba(255,255,255,.06); --sidebar-hover: rgba(255,255,255,.05);
  --sidebar-active: rgba(255,138,30,.14); --sidebar-accent: #FF8A1E;
  --radius: 10px; --radius-card: 16px;
  --side-w: 240px;
  --mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --display: "Space Grotesk", "Inter", system-ui, sans-serif;
}
/* motyw ciemny (jak TakeCar dark); menu, gorny pasek i logowanie zawsze w nim */
:root[data-theme="dark"], .sidebar, .topbar, .login-screen {
  color-scheme: dark;
  --bg: #0F172A; --panel: #1A2332; --panel2: #1E293B; --panel3: #2D3F55;
  --border: rgba(255,255,255,.16); --border-soft: rgba(255,255,255,.08);
  --text: #F1F5F9; --text2: #CBD5E1; --muted: #94A3B8; --heading: #F1F5F9;
  --hover: rgba(255,255,255,.06); --row-hover: rgba(255,255,255,.035); --chip-bg: rgba(255,255,255,.08);
  --accent: #FF8A1E; --accent-light: #FFA552; --accent-dark: #C2410C; --accent2: #FF9A1E;
  --grad-ink: var(--grad-heat);
  --grad-heat-soft: rgba(255,138,30,.14);
  --accent-bg: rgba(255,138,30,.14); --accent-soft: rgba(255,138,30,.14); --accent-line: rgba(255,138,30,.42);
  --header-dark: #111A26;
  --input-bg: #0F172A; --input-border: rgba(255,255,255,.18);
  --ok-text: #81C784; --warn-text: #FFB74D; --err-text: #FF8A80; --info-text: #93C5FD;
  --ok: #66BB6A; --warn: #FFA726; --err: #EF5350; --info: #60A5FA;
  --ok-bg: rgba(102,187,106,.14); --warn-bg: rgba(255,167,38,.14); --err-bg: rgba(239,83,80,.14); --info-bg: rgba(96,165,250,.12);
  --ok-line: rgba(102,187,106,.34); --warn-line: rgba(255,167,38,.36); --err-line: rgba(239,83,80,.34); --info-line: rgba(96,165,250,.32);
  --tile-accent: rgba(255,138,30,.16); --tile-emis: rgba(255,167,38,.16); --tile-dtc: rgba(239,83,80,.16); --tile-other: rgba(255,255,255,.08);
  --shadow-card: none; --shadow-hover: 0 8px 22px rgba(0,0,0,.35);
  --shadow-pop: 0 18px 50px rgba(0,0,0,.5);
  --scrim: rgba(2,6,15,.62);
}

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; }
body {
  background: var(--bg); color: var(--text); font-family: var(--sans);
  font-size: 15px; line-height: 1.55; -webkit-font-smoothing: antialiased;
  overflow-wrap: anywhere; word-break: normal;
}
h1, h2, h3, h4 { font-family: var(--display); letter-spacing: -.01em; color: var(--heading); }
a { color: var(--accent); text-decoration: none; cursor: pointer; }
a:hover { text-decoration: underline; text-underline-offset: 2px; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.mono { font-family: var(--mono); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
/* nic nie wyjezdza poza boxy */
.row > *, .grid > *, .card, .stat, .plan, .sol-tile, .ts-sol, .meta-list dd,
.badge, .pill, .banner, td, th, .toast, .modal { min-width: 0; }
.badge, .pill, .cat-pill { overflow-wrap: anywhere; }
.muted { color: var(--muted); } .amber { color: var(--warn-text); }
.green { color: var(--ok-text); } .red { color: var(--err-text); }
::selection { background: rgba(255,138,30,.32); }

/* ekran startowy, do czasu przywrocenia sesji */
#boot-splash { position: fixed; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; background: var(--bg); }
#boot-splash .bs-wrap { display: flex; flex-direction: column; align-items: center; gap: 16px; }
#boot-splash img { width: 64px; height: 64px; border-radius: 50%; }
#boot-splash .bs-ring { width: 28px; height: 28px; border-radius: 50%; border: 3px solid var(--accent-bg); border-top-color: var(--accent); animation: spin .8s linear infinite; }

/* ================================================================ UKLAD: menu, gorny pasek, tresc */
.app { display: grid; grid-template-columns: var(--side-w) minmax(0, 1fr); min-height: 100vh; }
.app.collapsed { --side-w: 72px; }
.sidebar { position: sticky; top: 0; height: 100vh; width: var(--side-w); display: flex; flex-direction: column;
  background: var(--sidebar-bg); color: var(--sidebar-text); border-right: 1px solid var(--sidebar-divider); overflow: hidden;
  transition: width .2s ease; }
.brand { height: 64px; flex-shrink: 0; display: flex; align-items: center; gap: 10px; padding: 0 16px;
  border-bottom: 1px solid var(--sidebar-divider); }
.brand-logo { width: 40px; height: 40px; flex-shrink: 0; border-radius: 50%; object-fit: cover; background: #000; }
.brand b { font-family: var(--display); font-size: 20px; font-weight: 700; color: #fff; letter-spacing: -.01em; white-space: nowrap; }
.brand-tune { background: var(--grad-heat); -webkit-background-clip: text; background-clip: text; color: transparent; }
/* konto pod logo, jak warsztat w TakeCar */
.usercard { flex-shrink: 0; padding: 16px; border-bottom: 1px solid var(--sidebar-divider); }
.usercard:empty { display: none; }
.acct-lbl { font-size: 13px; font-weight: 500; color: var(--sidebar-muted); }
.acct-name { margin-top: 2px; font-size: 15px; font-weight: 700; color: var(--sidebar-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.acct-chip { display: inline-flex; align-items: center; max-width: 100%; height: 24px; margin-top: 8px; padding: 0 10px; border-radius: 16px;
  background: rgba(255,255,255,.1); color: var(--sidebar-text); font-size: 12.5px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.acct-chip.on { background: rgba(255,138,30,.18); color: #FFC089; font-weight: 600; }
.nav { flex: 1; min-height: 0; overflow-y: auto; padding: 16px 8px; display: flex; flex-direction: column; gap: 4px; }
.nav a { display: flex; align-items: center; min-height: 44px; padding: 8px 16px; border-radius: 16px; flex-shrink: 0;
  color: var(--sidebar-text); font-size: 13.5px; font-weight: 500; cursor: pointer; text-decoration: none; transition: background .14s, color .14s; }
.nav a .ic-wrap { min-width: 40px; display: inline-flex; color: var(--ic-color, var(--sidebar-muted)); }
.nav a > span:nth-child(2) { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nav a:hover { background: var(--sidebar-hover); text-decoration: none; }
.nav a.active { background: var(--sidebar-active); color: #fff; }
.nav a.active .ic-wrap { color: var(--sidebar-accent); }
.nav .sep { height: 1px; background: var(--sidebar-divider); margin: 10px 8px; }
.nav .grp { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--sidebar-muted); padding: 14px 16px 6px; }
.side-foot { flex-shrink: 0; padding: 8px; border-top: 1px solid var(--sidebar-divider); }
.nav-collapse { display: flex; align-items: center; width: 100%; min-height: 40px; padding: 4px 16px; border: 0; border-radius: 16px;
  background: none; color: var(--sidebar-muted); font: 500 14px var(--sans); cursor: pointer; text-align: left; }
.nav-collapse .ic-wrap { min-width: 40px; display: inline-flex; }
.nav-collapse:hover { background: var(--sidebar-hover); color: var(--sidebar-text); }
/* menu zwiniete do ikon (nazwy w dymkach) */
.app.collapsed .brand { justify-content: center; padding: 0; }
.app.collapsed .brand b, .app.collapsed .usercard, .app.collapsed .nav-sup,
.app.collapsed .nav a > span:not(.ic-wrap), .app.collapsed .nav-collapse > span:not(.ic-wrap) { display: none; }
.app.collapsed .nav a, .app.collapsed .nav-collapse { justify-content: center; padding: 8px; }
.app.collapsed .nav a .ic-wrap, .app.collapsed .nav-collapse .ic-wrap { min-width: 0; }
.app.collapsed .nav .grp { height: 1px; padding: 0; margin: 10px 8px; background: var(--sidebar-divider); font-size: 0; }

.app-col { min-width: 0; display: flex; flex-direction: column; }
.topbar { position: sticky; top: 0; z-index: 80; height: 64px; display: flex; align-items: center; gap: 10px; padding: 0 16px 0 24px;
  background: var(--sidebar-bg); color: var(--sidebar-text); border-bottom: 1px solid var(--sidebar-divider); }
.tb-burger { display: none; width: 40px; height: 40px; flex-shrink: 0; place-items: center; padding: 0; border: 0; border-radius: 50%;
  background: none; color: var(--sidebar-text); cursor: pointer; }
.tb-burger:hover { background: rgba(255,255,255,.08); }
.tb-title { flex: 1; min-width: 0; margin: 0; font-family: var(--display); font-size: 20px; font-weight: 600; letter-spacing: -.01em;
  color: var(--sidebar-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tb-bill { display: flex; align-items: center; gap: 8px; min-width: 0; }
.tb-bill:empty { display: none; }
.tb-user { display: flex; align-items: center; gap: 2px; flex-shrink: 0; padding-left: 8px; border-left: 1px solid rgba(255,255,255,.1); }
.tb-ic { position: relative; width: 40px; height: 40px; flex-shrink: 0; display: grid; place-items: center; padding: 0; border: 0; border-radius: 50%;
  background: none; color: var(--sidebar-text); cursor: pointer; }
.tb-ic:hover { background: rgba(255,255,255,.08); }
.bb-dot { position: absolute; top: 3px; right: 1px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px;
  background: #D32F2F; color: #fff; font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; }
.lang-btn { display: inline-flex; align-items: center; gap: 2px; height: 34px; padding: 0 6px 0 8px; border: 0; border-radius: 10px;
  background: none; color: var(--sidebar-muted); font: 700 13px var(--sans); letter-spacing: .02em; cursor: pointer; }
.lang-btn:hover, .lang-btn[aria-expanded="true"] { background: rgba(255,255,255,.08); color: var(--sidebar-text); }
.tb-avatar { width: 36px; height: 36px; margin-left: 6px; flex-shrink: 0; display: grid; place-items: center; padding: 0; border: 0; border-radius: 50%;
  background: #475569; color: #fff; font: 600 15px var(--display); cursor: pointer; }
.tb-avatar:hover, .tb-avatar[aria-expanded="true"] { box-shadow: 0 0 0 3px rgba(255,255,255,.14); }
.main { padding: 24px; min-width: 0; }
.bill-strip:empty { display: none; }
.mtopbar, .nav-backdrop { display: none; }

/* naglowek strony: krawedz w kolorze akcentu po lewej (jak PageHeader w TakeCar) */
.page-head { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 24px; padding-left: 16px; }
.page-head::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--grad-heat-v); }
.page-head h1 { margin: 0; font-size: 32px; font-weight: 700; line-height: 1.15; letter-spacing: -.02em; color: var(--heading); }
.page-head p { margin: 4px 0 0; color: var(--muted); font-size: 14px; }
.page-head p:empty { display: none; }
.page-head > .row { flex-wrap: wrap; justify-content: flex-end; }

/* ================================================================ KARTY, SIATKI */
.card { position: relative; background: var(--panel); border: 1px solid var(--border-soft); border-radius: var(--radius-card);
  padding: 20px; box-shadow: var(--shadow-card); }
.card.hoverable, .card.clickable { transition: transform .15s ease, box-shadow .15s ease; }
.card.hoverable:hover, .card.clickable:hover { transform: translateY(-2px); box-shadow: var(--shadow-hover); }
.card.flat { box-shadow: none; }
.card.glow { border-color: var(--accent-line); }
.grid { display: grid; gap: 16px; }
.grid.cols-2 { grid-template-columns: 1fr 1fr; }
.grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.grid.auto { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
hr, .hr-grad { border: 0; border-top: 1px solid var(--border-soft); height: 0; background: none; margin: 16px 0; }
code { font-family: var(--mono); background: var(--chip-bg); padding: 1px 5px; border-radius: 4px; font-size: 12px; color: var(--text2); }
kbd { font-family: var(--mono); font-size: 12px; background: var(--chip-bg); border: 1px solid var(--border-soft); border-radius: 6px; padding: 2px 6px; color: var(--text2); }
.section-title { display: flex; align-items: center; gap: 10px; margin: 26px 0 14px; font-family: var(--display); font-size: 19px; font-weight: 700; color: var(--heading); }
.section-title .st-action { margin-left: auto; font-size: 14px; font-family: var(--sans); font-weight: 600; }
.main h3 { font-family: var(--display); color: var(--heading); }

/* ================================================================ PRZYCISKI: pigulki jak w TakeCar */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 38px; padding: 7px 18px;
  border: 1px solid var(--border); border-radius: 999px; background: transparent; color: var(--text);
  font: 600 14px var(--display); letter-spacing: .01em; line-height: 1.4; cursor: pointer; text-decoration: none; white-space: nowrap;
  transition: background-color .14s, border-color .14s, color .14s, filter .14s;
}
.btn:hover { background: var(--hover); border-color: var(--accent); text-decoration: none; }
.btn.primary { background: var(--grad-heat); border-color: transparent; color: var(--on-accent); }
.btn.primary:hover { filter: brightness(1.06); background: var(--grad-heat); }
.btn.ghost { border-color: transparent; border-radius: 10px; padding-left: 12px; padding-right: 12px; color: var(--text2); }
.btn.ghost:hover { background: var(--hover); border-color: transparent; color: var(--text); }
.btn.sm { min-height: 32px; padding: 4px 13px; font-size: 13px; }
.btn.ghost.sm { padding-left: 9px; padding-right: 9px; }
.btn:disabled, .btn[disabled] { opacity: .5; cursor: not-allowed; filter: none; }
.btn.danger { color: var(--err-text); }
.btn.danger:hover { background: var(--err-bg); border-color: var(--err-line); }
.btn.danger-solid { background: var(--err); border-color: var(--err); color: #fff; }
.btn.danger-solid:hover { filter: brightness(1.08); background: var(--err); }
.btn.ok { background: var(--ok-bg); color: var(--ok-text); border-color: var(--ok-line); }
.btn .ic, .btn svg { flex-shrink: 0; }

/* ================================================================ POLA */
input, select, textarea {
  background: var(--input-bg); border: 1px solid var(--input-border); color: var(--text);
  padding: 10px 13px; border-radius: var(--radius); font-family: var(--sans); font-size: 15px; width: 100%;
  transition: border-color .14s, box-shadow .14s;
}
input:hover, select:hover, textarea:hover { border-color: var(--muted); }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-bg); }
input::placeholder, textarea::placeholder { color: var(--muted); opacity: 1; }
option { background: var(--panel); color: var(--text); }
label { font-size: 13px; color: var(--text2); display: block; margin-bottom: 6px; font-weight: 600; }
.field { margin-bottom: 14px; }
input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; display: none; }
textarea { resize: none; }
/* checkboxy i radio: wlasny wyglad, zaznaczenie gradientem z ciemnym ptaszkiem */
input[type="checkbox"], input[type="radio"] {
  -webkit-appearance: none !important; -moz-appearance: none !important; appearance: none !important;
  width: 20px !important; height: 20px !important; min-width: 20px; max-width: 20px; flex-shrink: 0;
  padding: 0 !important; margin: 0; border: 2px solid var(--muted); background: var(--input-bg); border-radius: 5px;
  cursor: pointer; vertical-align: -5px; display: inline-grid; place-content: center; position: relative;
  transition: border-color .14s, background-color .14s;
}
input[type="radio"] { border-radius: 50%; }
input[type="checkbox"]:hover, input[type="radio"]:hover { border-color: var(--accent); }
input[type="checkbox"]:focus-visible, input[type="radio"]:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; box-shadow: none; }
input[type="checkbox"]:checked {
  border-color: transparent;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23160F0D' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / 14px 14px no-repeat,
    var(--grad-heat) !important;
}
input[type="radio"]:checked { border-color: transparent; background: radial-gradient(circle, #160F0D 0 3.5px, transparent 4.5px) center no-repeat, var(--grad-heat) !important; }
input[type="checkbox"]:disabled, input[type="radio"]:disabled { opacity: .45; cursor: not-allowed; }
label.row, label.info-note { cursor: pointer; }
select { -webkit-appearance: none; -moz-appearance: none; appearance: none; padding-right: 38px !important; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748B' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 13px center; background-size: 16px 16px; }
select::-ms-expand { display: none; }
input[type="file"] { padding: 7px 10px !important; cursor: pointer; }
input[type="file"]::file-selector-button { font: 600 13px var(--display); margin-right: 12px; padding: 7px 14px; border-radius: 999px;
  border: 1px solid var(--border); background: transparent; color: var(--text); cursor: pointer; }
input[type="file"]::file-selector-button:hover { border-color: var(--accent); }
input[type="range"] { -webkit-appearance: none; appearance: none; height: 6px; padding: 0; border: none; border-radius: 6px; background: var(--panel3); }
input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 18px; height: 18px; border-radius: 50%; background: var(--accent2); border: 2px solid var(--panel); cursor: pointer; }
input[type="range"]::-moz-range-thumb { width: 18px; height: 18px; border: 2px solid var(--panel); border-radius: 50%; background: var(--accent2); cursor: pointer; }

/* ================================================================ ZNACZNIKI: stonowane plakietki jak chipy TakeCar */
.badge { display: inline-flex; align-items: center; gap: 4px; min-height: 24px; padding: 2px 10px; border-radius: 16px; border: 0;
  font-size: 12.5px; font-weight: 600; line-height: 1.3; background: var(--chip-bg); color: var(--text2); letter-spacing: .01em; }
.badge.ok { background: var(--ok-bg); color: var(--ok-text); }
.badge.warn, .badge.EMISSIONS { background: var(--warn-bg); color: var(--warn-text); }
.badge.err, .badge.DTC { background: var(--err-bg); color: var(--err-text); }
.badge.info { background: var(--info-bg); color: var(--info-text); }
.badge.PERFORMANCE { background: var(--accent-bg); color: var(--accent); }
.badge.LIMITER, .badge.GEARBOX, .badge.OTHER { color: var(--muted); }
.pill { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: 16px; background: var(--chip-bg); font-size: 12px; color: var(--text2); }
.live-dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; display: inline-block; }
.badge.live { padding-left: 10px; } .badge.live .live-dot { margin-right: 4px; }

/* ================================================================ KOMUNIKATY: obrys i tlo w kolorze stanu, tekst czytelny (Alert w TakeCar) */
.banner { --b-ic: var(--muted); display: flex; align-items: center; gap: 12px; min-height: 48px; padding: 10px 16px; margin-bottom: 16px;
  border-radius: 12px; border: 1px solid var(--border-soft); background: var(--panel); color: var(--text); font-size: 14px; }
.banner > .ic, .banner > svg:first-child { flex-shrink: 0; color: var(--b-ic); }
.banner.ok { --b-ic: var(--ok); border-color: var(--ok-line); background: var(--ok-bg); }
.banner.warn { --b-ic: var(--warn); border-color: var(--warn-line); background: var(--warn-bg); }
.banner.err { --b-ic: var(--err); border-color: var(--err-line); background: var(--err-bg); }
.banner.info { --b-ic: var(--info); border-color: var(--info-line); background: var(--info-bg); }
.banner b { color: inherit; font-weight: 700; } .banner a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.info-note { font-size: 13px; color: var(--text); display: flex; gap: 8px; align-items: flex-start; background: var(--warn-bg);
  border: 1px solid var(--warn-line); padding: 9px 12px; border-radius: 10px; }
.info-note > .ic, .info-note > svg:first-child { color: var(--warn); }

/* ================================================================ TABELE: granatowy naglowek */
table { width: 100%; border-collapse: collapse; font-size: 14px; }
th { text-align: left; background: var(--header-dark); color: #fff; font-weight: 600; font-size: 13.5px; padding: 12px 14px; white-space: nowrap; }
th:first-child { border-top-left-radius: var(--radius); }
th:last-child { border-top-right-radius: var(--radius); }
td { padding: 12px 14px; border-bottom: 1px solid var(--border-soft); }
tbody tr:hover td { background: var(--row-hover); }
.clickable { cursor: pointer; }
.tbl-actions { display: flex; gap: 6px; justify-content: flex-end; align-items: center; flex-wrap: nowrap; white-space: nowrap; }
.tbl-actions .btn { flex: 0 0 auto; }
td.row { white-space: nowrap; }
td.row, td .tbl-actions { text-align: right; }
.tbl-scroll { overflow-x: auto; }
.meta-list { display: grid; grid-template-columns: 140px 1fr; gap: 6px 14px; font-size: 13.5px; }
.meta-list dt { color: var(--muted); }
.meta-list dd { margin: 0; }

/* zakladki: wskaznik 3 px pod aktywna */
.tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--border-soft); margin-bottom: 16px; }
.tabs button { position: relative; min-height: 44px; padding: 0 14px; border: 0; background: none; color: var(--muted);
  font: 600 14px var(--display); cursor: pointer; }
.tabs button:hover { color: var(--text); }
.tabs button.active { color: var(--accent); }
.tabs button.active::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 3px; border-radius: 3px 3px 0 0; background: var(--grad-heat); }

/* ================================================================ OKNA, KOMUNIKATY W ROGU, LADOWANIE */
#toasts { position: fixed; bottom: 20px; right: 20px; display: flex; flex-direction: column; gap: 10px; z-index: 320; }
.toast { position: relative; min-width: 260px; max-width: min(420px, calc(100vw - 32px)); padding: 12px 16px; border-radius: 12px;
  background: var(--panel); color: var(--text); border: 1px solid var(--border-soft); border-left: 4px solid var(--accent);
  box-shadow: var(--shadow-pop); font-size: 14px; animation: toastIn .2s ease; }
.toast.ok { border-left-color: var(--ok); } .toast.err { border-left-color: var(--err); }
.modal-bg { position: fixed; inset: 0; z-index: 90; display: grid; place-items: center; padding: 16px; background: var(--scrim); animation: fadeIn .16s ease; }
/* odstep u gory dla okien bez paska tytulu (np. szczegoly zlecenia bota); pasek tytulu wraca na krawedz ujemnym marginesem */
.modal { --mp: 24px; --mt: 20px; width: 480px; max-width: 100%; max-height: 88vh; overflow-y: auto; padding: var(--mt) var(--mp) var(--mp);
  border-radius: var(--radius-card); background: var(--panel); border: 1px solid var(--border-soft); box-shadow: 0 24px 60px rgba(15,23,42,.28);
  animation: modalIn .2s ease; }
/* tytul okna na granatowym pasku (DialogTitle w TakeCar); top ujemny, bo przyklejenie liczy sie od wnetrza odstepu okna */
.modal > h3:first-child, .modal > :first-child > h3:first-child {
  position: sticky; top: calc(-1 * var(--mt)); z-index: 1; margin: calc(-1 * var(--mt)) calc(-1 * var(--mp)) 20px; padding: 16px var(--mp);
  background: var(--header-dark); color: #fff; font-family: var(--display); font-size: 19px; font-weight: 600; letter-spacing: -.005em; }
.modal > h3:first-child .ic, .modal > :first-child > h3:first-child .ic { color: #fff; }
.modal > .row:first-child > h3 { position: static; margin: 0; padding: 0; background: none; color: var(--heading); font-size: 19px; }
.modal:has(#ticketBody), .modal:has(#tkDetail) { width: 760px; }
.spinner { display: inline-block; width: 16px; height: 16px; border: 2px solid var(--accent-bg); border-top-color: var(--accent);
  border-radius: 50%; animation: spin .7s linear infinite; vertical-align: -3px; }
.loader { display: grid; place-items: center; padding: 60px 20px; }
.loader .ring { width: 40px; height: 40px; border-radius: 50%; border: 3px solid var(--accent-bg); border-top-color: var(--accent); animation: spin .8s linear infinite; }
.loader .txt { margin-top: 14px; color: var(--muted); font-size: 13px; }
.skeleton { background: var(--panel3); border-radius: 8px; height: 16px; animation: skPulse 1.5s ease-in-out infinite; }
.loading-block { display: grid; gap: 12px; }
.empty { text-align: center; color: var(--muted); padding: 48px 20px; }
/* pusty stan: ikona w kolku, tytul, opis, akcja (EmptyState w TakeCar) */
.premium-empty { text-align: center; padding: 40px 20px; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.premium-empty .pe-ic { width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; background: var(--accent-bg); color: var(--accent); margin-bottom: 4px; }
.premium-empty .pe-ic .ic { width: 30px; height: 30px; }
.premium-empty h3 { margin: 0; font-size: 17px; font-weight: 700; }
.premium-empty p { margin: 0; color: var(--muted); font-size: 14px; max-width: 420px; }
.premium-empty .btn { margin-top: 8px; }
.premium-empty .btn:empty { display: none; }

/* ================================================================ KAFELKI Z LICZBA (StatCard w TakeCar) */
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 16px; margin-bottom: 24px; }
.stat { position: relative; display: flex; align-items: center; gap: 16px; padding: 18px; background: var(--panel);
  border: 1px solid var(--border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-card); }
.stat.clickable { transition: transform .15s ease, box-shadow .15s ease; }
.stat.clickable:hover { transform: translateY(-2px); box-shadow: var(--shadow-hover); }
.stat .si { width: 44px; height: 44px; flex-shrink: 0; border-radius: 50%; display: grid; place-items: center; background: var(--accent-bg); color: var(--accent); }
.stat .sv { font-family: var(--display); font-size: 24px; font-weight: 700; line-height: 1.25; letter-spacing: -.02em; color: var(--text); }
.stat .sl { font-size: 13.5px; color: var(--muted); }
.stat.hot .sv { background: var(--grad-ink); -webkit-background-clip: text; background-clip: text; color: transparent; }
.metric { display: flex; flex-direction: column; gap: 2px; }
.metric .m-val { font-family: var(--display); font-size: 28px; font-weight: 700; line-height: 1.1; color: var(--text); }
.metric .m-val.grad { background: var(--grad-ink); -webkit-background-clip: text; background-clip: text; color: transparent; }
.metric .m-lab { font-size: 13px; color: var(--muted); }

/* ================================================================ KARTA WPROWADZENIA (pulpit, support, bot) */
.hero { position: relative; overflow: hidden; margin-bottom: 24px; padding: 28px 32px; background: var(--panel);
  border: 1px solid var(--border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-card); }
.hero > * { position: relative; z-index: 1; }
.hero .kicker { display: flex; align-items: center; gap: 6px; margin: 0 0 10px; font-size: 11px; font-weight: 600; letter-spacing: .2em;
  text-transform: uppercase; color: var(--accent); font-family: var(--sans); }
.hero h1 { margin: 0 0 12px; font-size: 34px; line-height: 1.08; font-weight: 700; letter-spacing: -.03em; color: var(--heading); max-width: 22ch; }
.hero p { margin: 0; color: var(--text2); font-size: 15px; max-width: 62ch; line-height: 1.6; }
.hero .hero-cta { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 20px; }
.hero .hero-stats { display: flex; gap: 12px 40px; flex-wrap: wrap; margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--border-soft); max-width: 640px; }
.hero .hs { display: flex; flex-direction: column; }
.hero .hs b { font-family: var(--display); font-size: 22px; color: var(--heading); line-height: 1.2; letter-spacing: -.02em; }
.hero .hs span { font-size: 12.5px; color: var(--muted); }
.hero-art { position: absolute; right: 36px; top: 50%; transform: translateY(-50%); color: var(--border-soft); }
.grad-text { background: var(--grad-ink); -webkit-background-clip: text; background-clip: text; color: transparent; }
/* dekoracje z dawnego wygladu (poswiaty, linie predkosci w kartach modulu partnera) nie sa rysowane */
.glow-orb, .hero > svg[preserveAspectRatio="none"] { display: none; }

/* ================================================================ SZYBKIE AKCJE (QuickTile w TakeCar) */
.feature { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px 12px; padding: 16px 16px 18px;
  cursor: pointer; background: var(--panel); border: 1px solid var(--border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-card);
  transition: transform .15s ease, box-shadow .15s ease; }
.feature > * { grid-column: 1 / -1; }
.feature:hover { transform: translateY(-2px); box-shadow: var(--shadow-hover); }
.feature .f-ic { grid-column: 1; width: 40px; height: 40px; border-radius: 14px; display: grid; place-items: center; background: var(--accent-bg); color: var(--accent); }
.feature h4 { grid-column: 2; margin: 0; font-size: 16px; font-family: var(--sans); font-weight: 700; color: var(--text); }
.feature p { margin: 0; font-size: 14px; color: var(--muted); }
.feature .f-go { align-self: end; font-size: 13.5px; color: var(--accent); font-weight: 600; display: flex; align-items: center; gap: 5px; }

/* ================================================================ PLANY, SUBSKRYPCJE, ZAKUP */
.plan { position: relative; display: flex; flex-direction: column; gap: 12px; padding: 22px; background: var(--panel);
  border: 1px solid var(--border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-card); }
/* polecany plan: jeden obrys w kolorze akcentu i plakietka "Polecany", jak wyrozniona karta w cenniku takecar.io */
.plan.featured { border-color: var(--accent); }
.plan-ribbon { align-self: flex-start; display: inline-flex; align-items: center; gap: 5px; padding: 3px 11px; border-radius: 16px;
  background: var(--grad-heat); color: var(--on-accent); font-size: 12px; font-weight: 700; white-space: nowrap; }
.plan-ribbon svg { color: var(--on-accent); }
.plan h3 { margin: 0; font-size: 18px; color: var(--heading); }
.plan .price { font-size: 30px; font-weight: 700; font-family: var(--display); color: var(--text); letter-spacing: -.02em; }
.plan .price small { font-size: 13px; color: var(--muted); font-weight: 500; letter-spacing: 0; }
.plan ul { list-style: none; padding: 0; margin: 4px 0; display: flex; flex-direction: column; gap: 7px; font-size: 13.5px; flex: 1 0 auto; }
.plan li { display: flex; align-items: center; gap: 8px; color: var(--text2); }
.plan li .ic { color: var(--ok); }
.plan > .btn:last-child { margin-top: auto; width: 100%; }
.plan .muted { flex: 1 0 auto; }
.plan.owned { border-color: var(--ok-line); }
.cat-row { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 20px; }
.cat-pill { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding: 4px 14px; border-radius: 999px;
  border: 1px solid var(--border); font: 600 13px var(--display); cursor: pointer; color: var(--text2); background: var(--panel); }
.cat-pill:hover { border-color: var(--accent); }
.cat-pill.active { background: var(--grad-heat); color: var(--on-accent); border-color: transparent; }
.f-owned { width: 100%; justify-content: center; background: var(--ok-bg); border-color: var(--ok-line); color: var(--ok-text); cursor: default; opacity: 1; }
.f-owned:disabled { opacity: 1; }
.sub-card { display: flex; flex-direction: column; gap: 12px; border-color: var(--ok-line); }
.sub-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.sub-name { font-family: var(--display); font-size: 18px; font-weight: 700; color: var(--text); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sub-top .badge { flex-shrink: 0; }
.sub-valid { font-size: 13px; color: var(--muted); margin-top: -4px; }
.sub-valid b { color: var(--text2); font-family: var(--mono); font-weight: 600; }
.sub-usage { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.sub-usage > div { background: var(--panel2); border: 1px solid var(--border-soft); border-radius: 12px; padding: 9px 11px;
  display: flex; flex-direction: column; gap: 3px; min-width: 0; text-align: center; align-items: center; }
.sub-usage span { font-size: 11.5px; color: var(--muted); white-space: nowrap; }
.sub-usage b { font-family: var(--display); font-size: 18px; color: var(--text); line-height: 1; }
.sub-usage b.dtc-yes { color: var(--ok-text); }
.sub-usage b svg { vertical-align: middle; }
.sub-btn { width: 100%; justify-content: center; margin-top: 2px; }
.co-plan { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; margin-bottom: 14px; padding: 16px 18px;
  background: var(--accent-bg); border: 1px solid var(--accent-line); border-radius: var(--radius-card); }
.co-name { font-family: var(--display); font-size: 20px; font-weight: 700; color: var(--text); }
.co-price { font-family: var(--display); font-size: 26px; font-weight: 700; color: var(--text); white-space: nowrap; }
.co-price small { font-size: 12px; color: var(--muted); font-weight: 500; }
.co-lines { display: flex; flex-direction: column; margin-bottom: 14px; }
.co-line { display: flex; justify-content: space-between; align-items: center; padding: 9px 2px; border-bottom: 1px solid var(--border-soft); font-size: 14px; }
.co-line:last-child { border-bottom: none; }
.co-line span { color: var(--text2); } .co-line b { color: var(--text); font-family: var(--display); }
.co-pay { border: 1px dashed var(--border); border-radius: var(--radius-card); padding: 13px 15px; background: var(--panel2); }
.co-pay-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 14px; font-weight: 600; }
.co-pay-row span:first-child { display: inline-flex; align-items: center; gap: 8px; color: var(--text); }
.co-note { display: flex; gap: 8px; align-items: flex-start; margin-top: 10px; font-size: 12.5px; color: var(--muted); line-height: 1.5; }
.co-note svg { flex-shrink: 0; margin-top: 1px; color: var(--accent); }
.credit-rate { margin: 0 0 14px; }
.pack-bonus { font-size: 12.5px; color: var(--ok-text); margin: -4px 0 4px; }

/* ================================================================ LOGOWANIE (zawsze ciemne, jak w TakeCar) */
.login-screen { position: relative; min-height: 100vh; display: grid; grid-template-columns: minmax(0, 1fr); place-items: center; padding: 72px 16px 32px;
  background: #0F172A; color: var(--text); }
.login-lang { position: absolute; top: 16px; right: 16px; }
.login-card { width: min(400px, 100%); padding: 32px; border-radius: 24px; background: #1A2332; border: 1px solid rgba(255,255,255,.08);
  box-shadow: 0 8px 32px rgba(0,0,0,.3); }
.login-logo { display: block; width: 72px; height: 72px; margin: 0 auto 8px; border-radius: 50%; object-fit: cover; background: #000; }
.login-tag { text-align: center; color: var(--muted); font-size: 14px; font-weight: 500; }
.login-card h2 { text-align: center; margin: 20px 0 4px; font-size: 21px; color: #fff; }
.login-card p.sub { text-align: center; color: var(--muted); margin: 0 0 20px; font-size: 13.5px; }
.login-card .btn { width: 100%; margin-top: 10px; }
.devbadge { text-align: center; font-size: 12px; color: var(--warn-text); margin-top: 16px; border: 1px solid var(--warn-line); border-radius: 10px; padding: 8px; background: var(--warn-bg); }
.f-social { width: 100%; justify-content: center; gap: 9px; font-weight: 600; font-size: 14px; }
.f-divider { display: flex; align-items: center; gap: 12px; margin: 16px 0 8px; color: var(--muted); font-size: 12px; }
.f-divider::before, .f-divider::after { content: ""; flex: 1; height: 1px; background: var(--border-soft); }
.f-pass { position: relative; display: flex; align-items: center; }
.f-pass input { padding-left: 38px; }
.f-pass-ic { position: absolute; left: 12px; display: inline-flex; color: var(--muted); pointer-events: none; }
.f-pass:focus-within .f-pass-ic { color: var(--accent); }
.f-eye { position: absolute; right: 6px; width: auto; padding: 6px; border: none; border-radius: 8px; background: none; color: var(--muted); cursor: pointer; display: inline-flex; }
.f-eye:hover { color: var(--text); background: var(--hover); }
.f-eye.on { color: var(--accent); }
.f-cta { width: 100%; margin-top: 12px; min-height: 42px; font-size: 14.5px; }
.f-cta.ghostline { background: transparent; border: 1px solid var(--border); color: var(--text); }
.f-cta.ghostline:hover { background: var(--hover); filter: none; }
.f-link { color: var(--accent); font-size: 13px; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; }
.f-link.strong { font-weight: 700; }
.f-link.muted { color: var(--muted); font-size: 12.5px; }
.f-link.muted:hover { color: var(--text2); }
.f-row-end { display: flex; justify-content: flex-end; margin: -4px 0 2px; }
.f-alt { text-align: center; margin-top: 16px; font-size: 13px; color: var(--muted); }
.f-admin { text-align: center; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border-soft); }
.f-pwbox { margin-top: 12px; }
.f-hr { height: 1px; background: var(--border-soft); margin: 2px 0 12px; }
.f-hint { font-size: 13px; color: var(--text2); line-height: 1.55; margin: 0 0 16px; display: flex; gap: 9px; align-items: flex-start;
  padding: 12px 14px; border-radius: 12px; background: var(--info-bg); border: 1px solid var(--info-line); }
.f-hint svg { flex-shrink: 0; margin-top: 1px; color: var(--info); }
.f-strength { display: grid; grid-template-columns: repeat(4, 1fr) auto; align-items: center; gap: 5px; margin: -6px 0 12px; height: 14px; }
.f-strength i { height: 4px; border-radius: 3px; background: var(--panel3); transition: background-color .25s; }
.f-strength em { grid-column: 5; font-style: normal; font-size: 11.5px; font-weight: 600; padding-left: 4px; white-space: nowrap; color: var(--muted); }
.f-strength.s1 i:nth-child(-n+1), .f-strength.s2 i:nth-child(-n+2),
.f-strength.s3 i:nth-child(-n+3), .f-strength.s4 i:nth-child(-n+4) { background: currentColor; }
.f-strength.s1 { color: #FF7043; } .f-strength.s2 { color: #FFB74D; } .f-strength.s3 { color: #9CCC65; } .f-strength.s4 { color: #6DD68A; }
.f-strength.s1 em, .f-strength.s2 em, .f-strength.s3 em, .f-strength.s4 em { color: currentColor; }

/* ================================================================ PASEK BILLINGU: w gornym pasku (szeroki ekran) albo nad trescia */
.billbar { display: flex; align-items: center; gap: 8px; min-width: 0; }
.bb-stats { display: flex; align-items: center; gap: 6px; min-width: 0; }
.bb-chip { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 11px; border-radius: 16px; border: 1px solid var(--border);
  font-size: 13px; font-weight: 500; color: var(--text2); white-space: nowrap; }
.bb-chip b { font-family: var(--display); font-weight: 700; color: var(--text); }
.bb-chip .ic { color: var(--bb-c, var(--muted)); }
.bb-chip.bb-low { border-color: var(--warn-line); }
.bb-chip.bb-low b { color: var(--warn-text); }
.bb-sol { --bb-c: var(--accent); } .bb-tun { --bb-c: #EC407A; } .bb-cred { --bb-c: #FFB74D; } .bb-files { --bb-c: #7986CB; }
.bb-rate { font-size: 11px; color: var(--muted); margin-left: 2px; font-weight: 600; }
.bb-plan { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--text); padding: 4px; }
.bb-actions { display: flex; gap: 6px; flex-shrink: 0; }
.topbar .bb-plan, .topbar .bb-rate { display: none; }
.bill-strip .billbar { flex-wrap: wrap; gap: 10px; margin-bottom: 16px; padding: 10px 12px; background: var(--panel);
  border: 1px solid var(--border-soft); border-radius: var(--radius-card); box-shadow: var(--shadow-card); }
.bill-strip .bb-stats { flex-wrap: wrap; flex: 1; }
@media (min-width: 1200px) { .bill-strip { display: none; } }
@media (max-width: 1199px) { .tb-bill { display: none; } }

/* menu i lista wyboru w okienku (jezyk, konto) */
.ui-menu { min-width: 200px; padding: 6px; overflow-y: auto; }
.ui-menu-head { padding: 8px 10px 10px; margin-bottom: 4px; border-bottom: 1px solid var(--border-soft); font-size: 13px; color: var(--muted); }
.ui-menu-head b { display: block; color: var(--text); font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ui-menu-item { display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border: 0; border-radius: 8px; background: none;
  color: var(--text); font: 500 14px var(--sans); text-align: left; cursor: pointer; }
.ui-menu-item:hover, .ui-menu-item:focus-visible { background: var(--hover); outline: none; }
.ui-menu-item[aria-checked="true"] { background: var(--accent-bg); font-weight: 600; }
.ui-menu-item .ic { color: var(--muted); }
.ui-menu-item .ui-menu-check { margin-left: auto; color: var(--accent); }

/* ================================================================ CZAT */
.chat { display: flex; flex-direction: column; gap: 12px; padding: 14px; max-height: 52vh; overflow-y: auto; position: relative;
  border-radius: var(--radius-card); background: var(--panel2); border: 1px solid var(--border-soft); }
.chat-empty { text-align: center; color: var(--muted); padding: 30px 12px; font-size: 14px; }
.msg { display: flex; gap: 10px; align-items: flex-end; max-width: 100%; }
.msg .av { width: 30px; height: 30px; border-radius: 50%; flex-shrink: 0; display: grid; place-items: center; font: 700 12px var(--display); color: var(--text2); background: var(--panel3); }
.msg.me .av { background: var(--grad-heat); color: var(--on-accent); }
.bubble { position: relative; max-width: 74%; min-width: 0; padding: 10px 13px; border-radius: 14px; font-size: 14.5px; line-height: 1.5;
  overflow-wrap: anywhere; word-break: normal; white-space: pre-wrap; }
.msg .b-wrap { display: flex; flex-direction: column; gap: 3px; min-width: 0; max-width: 74%; }
.msg .b-wrap .bubble { max-width: 100%; }
.msg.them { align-self: flex-start; }
.msg.me { align-self: flex-end; flex-direction: row-reverse; }
.msg.them .bubble { background: var(--panel); border: 1px solid var(--border-soft); border-bottom-left-radius: 5px; color: var(--text); }
.msg.me .bubble { background: var(--accent-bg); border: 1px solid var(--accent-line); border-bottom-right-radius: 5px; color: var(--text); }
.msg .meta { font-size: 11.5px; color: var(--muted); display: flex; gap: 7px; align-items: baseline; }
.msg.me .meta { justify-content: flex-end; }
.msg .meta b { color: var(--text2); font-weight: 600; }
.chat-compose { display: flex; gap: 8px; margin-top: 14px; align-items: flex-end; }
.chat-compose textarea { min-height: 44px; max-height: 160px; }
.chat-compose .btn { flex-shrink: 0; }
.atts { display: flex; flex-direction: column; gap: 6px; margin-top: 4px; }
.msg.me .atts { align-items: flex-end; }
.att { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--border-soft); border-radius: 12px; background: var(--panel); max-width: 440px; width: 100%; }
.att-mod { border-color: var(--ok-line); background: var(--ok-bg); }
.att-ic { flex: 0 0 auto; width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; background: var(--accent-bg); color: var(--accent); }
.att-mod .att-ic { background: var(--ok-bg); color: var(--ok-text); }
.att-body { display: flex; flex-direction: column; min-width: 0; flex: 1; gap: 1px; }
.att-body b { font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.att-body small { font-size: 11.5px; color: var(--muted); }
.att-body .att-dl { display: inline-flex; align-items: center; gap: 4px; font-weight: 600; }
.att-dl.ok { color: var(--ok-text); }
.att-dl.wait { color: var(--warn-text); }
.chat-compose2 { margin-top: 12px; border: 1px dashed var(--border); border-radius: var(--radius-card); padding: 10px; display: flex; flex-direction: column; gap: 8px;
  transition: border-color .15s, background-color .15s; }
.chat-compose2.drag { border-color: var(--accent); background: var(--accent-bg); }
.chat-compose2 textarea { width: 100%; }
.cc-files { display: flex; flex-wrap: wrap; gap: 6px; }
.cc-files:empty { display: none; }
.cc-file { display: inline-flex; align-items: center; gap: 5px; padding: 3px 9px; border-radius: 14px; background: var(--chip-bg); font-size: 12.5px; max-width: 100%; }
.cc-x { background: none; border: 0; color: var(--muted); cursor: pointer; font-size: 15px; line-height: 1; padding: 0 2px; }
.cc-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.cc-attach { cursor: pointer; }
.cc-hint { font-size: 11.5px; color: var(--muted); }
.cc-spacer { flex: 1; }
.cc-kind { width: auto; min-height: 32px; padding: 4px 8px; }

/* ================================================================ POWIADOMIENIA */
.notif-list { max-height: 60vh; overflow-y: auto; margin-top: 10px; }
.notif-item { display: flex; gap: 10px; align-items: flex-start; padding: 10px 8px; border-bottom: 1px solid var(--border-soft); border-radius: 8px; }
.notif-item.link { cursor: pointer; }
.notif-item.link:hover { background: var(--hover); }
.notif-item.read { opacity: .65; }
.notif-dot { flex: 0 0 8px; height: 8px; margin-top: 6px; border-radius: 50%; background: var(--accent2); }
.notif-item.read .notif-dot { background: transparent; border: 1px solid var(--border); }
.notif-body { flex: 1; min-width: 0; font-size: 13.5px; overflow-wrap: anywhere; }
.notif-go { color: var(--accent); font-weight: 600; }
.notif-x { background: none; border: 0; color: var(--muted); font-size: 18px; cursor: pointer; padding: 0 4px; line-height: 1; }
.notif-x:hover { color: var(--text); }

/* ================================================================ STAREGO EDYTORA (hex, solucje, regiony) */
.dropzone { border: 2px dashed var(--border); border-radius: var(--radius-card); padding: 48px; text-align: center; cursor: pointer;
  background: var(--panel); transition: border-color .15s, background-color .15s; }
.dropzone:hover, .dropzone.over { border-color: var(--accent); background: var(--accent-bg); }
.dropzone .big { font-size: 16px; font-weight: 600; margin: 12px 0 4px; color: var(--text); }
.editor { display: grid; grid-template-columns: 300px 1fr 280px; gap: 16px; align-items: start; }
.hex { font-family: var(--mono); font-size: 12px; line-height: 1.55; background: var(--code-bg); border: 1px solid var(--code-border);
  border-radius: var(--radius); padding: 10px; overflow-x: auto; white-space: pre; max-height: 560px; overflow-y: auto; color: #CBD5E1; }
.hex .off { color: #64748B; } .hex .chg { color: #FFB74D; font-weight: 700; } .hex .asc { color: #64748B; }
.hex .hit { background: rgba(255,138,30,.35); border-radius: 2px; }
.sol-tile { border: 1px solid var(--border-soft); border-radius: var(--radius-card); padding: 14px; background: var(--panel);
  display: flex; flex-direction: column; gap: 8px; box-shadow: var(--shadow-card); }
.sol-tile h4 { margin: 0; font-size: 14.5px; color: var(--text); }
.sol-tile .price { font-family: var(--mono); color: var(--accent); font-weight: 700; }
.sol-tile .desc { color: var(--muted); font-size: 12.5px; flex: 1; }
.regions { max-height: 480px; overflow-y: auto; }
.region { display: flex; justify-content: space-between; padding: 7px 10px; border-radius: 6px; cursor: pointer; font-family: var(--mono); font-size: 12px; }
.region:hover { background: var(--hover); }
.region .sz { color: var(--muted); }
.ic { vertical-align: -2px; flex-shrink: 0; }
.sol-ic { width: 38px; height: 38px; border-radius: 12px; display: grid; place-items: center; background: var(--tile-accent); color: var(--accent); flex-shrink: 0; }
.sol-ic.EMISSIONS { background: var(--tile-emis); color: var(--warn-text); }
.sol-ic.DTC { background: var(--tile-dtc); color: var(--err-text); }
.sol-ic.PERFORMANCE { background: var(--tile-accent); color: var(--accent); }
.sol-ic.OTHER, .sol-ic.LIMITER, .sol-ic.GEARBOX { background: var(--tile-other); color: var(--muted); }
.mod-instr { margin: 8px 0; border: 1px solid var(--warn-line); border-radius: 12px; background: var(--warn-bg); overflow: hidden; }
.mod-instr > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px; padding: 11px 14px; font-weight: 700; font-size: 14px; color: var(--text); user-select: none; }
.mod-instr > summary::-webkit-details-marker { display: none; }
.mod-instr > summary svg, .mod-instr > summary .ic { flex-shrink: 0; color: var(--warn); }
.mod-instr .mi-count { margin-left: 2px; background: var(--warn-bg); color: var(--warn-text); font-size: 11.5px; font-weight: 700; padding: 1px 8px; border-radius: 16px; }
.mod-instr .mi-arrow { margin-left: auto; transition: transform .2s; font-size: 13px; }
.mod-instr[open] > summary .mi-arrow { transform: rotate(180deg); }
.mod-instr .mi-body { padding: 4px 14px 12px; display: flex; flex-direction: column; gap: 7px; }
.mod-instr .mi-item { position: relative; padding-left: 16px; font-size: 14px; line-height: 1.5; color: var(--text2); overflow-wrap: anywhere; }
.mod-instr .mi-item::before { content: ""; position: absolute; left: 2px; top: .72em; width: 7px; height: 2px; border-radius: 1px; background: var(--warn); }

/* ================================================================ DROBNE */
.row { display: flex; gap: 8px; align-items: center; } .row.wrap { flex-wrap: wrap; } .spacer { flex: 1; }
.gain { font-family: var(--mono); color: var(--ok-text); font-size: 12.5px; font-weight: 600; }
.md { font-size: 14px; line-height: 1.7; } .md h1 { font-size: 20px; } .md h2 { font-size: 16px; margin-top: 18px; }
.toolbar { display: flex; gap: 8px; margin-bottom: 16px; flex-wrap: wrap; align-items: center; }
.toolbar input, .toolbar select { width: auto; }
.gr-ring { padding: 2px; border-radius: 50%; background: var(--grad-heat); display: inline-grid; }
.gr-ring > * { border: 2px solid var(--panel); border-radius: 50%; }
.nav-sup { margin-left: auto; display: inline-flex; align-items: center; padding: 1px 8px; border-radius: 16px; flex-shrink: 0;
  font: 700 10px var(--display); letter-spacing: .06em; }
.nav-sup .d { display: none; }
.nav-sup.on { color: #A5D6A7; background: rgba(102,187,106,.16); }
.nav-sup.off { color: var(--sidebar-muted); background: rgba(255,255,255,.08); }
.stepper { display: flex; align-items: center; gap: 0; margin: 6px 0; }
.stepper .step { display: flex; align-items: center; gap: 8px; flex: 1; font-size: 13px; color: var(--muted); }
.stepper .step .dot { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: var(--panel3); color: var(--muted);
  font-weight: 700; font-size: 12px; flex-shrink: 0; transition: background-color .2s, color .2s; }
.stepper .step.done .dot { background: var(--ok-bg); color: var(--ok-text); }
.stepper .step.active .dot { background: var(--grad-heat); color: var(--on-accent); }
.stepper .step.active { color: var(--text); font-weight: 600; }
.stepper .line { height: 2px; flex: 1; background: var(--panel3); margin: 0 6px; border-radius: 2px; }
.stepper .line.done { background: var(--grad-heat); }
/* tarcza i paski przyrostu mocy */
.gauge { display: flex; align-items: center; gap: 16px; }
.gauge .dial { --p: 0; position: relative; width: 92px; height: 92px; border-radius: 50%; flex-shrink: 0; display: grid; place-items: center;
  background: conic-gradient(from 220deg, #F5443B 0turn, #FF9A1E calc(var(--p) * .72turn), var(--panel3) calc(var(--p) * .72turn) .72turn, transparent .72turn); }
.gauge .dial::before { content: ""; position: absolute; inset: 11px; border-radius: 50%; background: var(--panel); }
.gauge .dial .val { position: relative; font-family: var(--display); font-weight: 700; font-size: 18px; color: var(--text); line-height: 1; }
.gauge .dial .val small { display: block; font-size: 9.5px; color: var(--muted); font-weight: 500; margin-top: 2px; }
.gauge .g-rows { display: flex; flex-direction: column; gap: 10px; flex: 1; min-width: 0; }
.gbar { display: grid; grid-template-columns: 46px 1fr auto; align-items: center; gap: 10px; font-size: 13.5px; }
.gbar .g-lab { color: var(--muted); font-size: 12px; }
.gbar .g-track { height: 8px; border-radius: 6px; background: var(--panel3); overflow: hidden; }
.gbar .g-fill { height: 100%; border-radius: 6px; background: var(--grad-heat); transition: width .8s cubic-bezier(.2,.8,.2,1); }
.gbar .g-val { font-family: var(--mono); font-weight: 700; color: var(--ok-text); font-size: 13px; white-space: nowrap; }
/* godziny supportu: dzis duzo, tydzien w dymku */
.hours-panel { position: relative; display: inline-flex; align-items: center; gap: 18px; margin-top: 22px; padding: 14px 20px; border-radius: var(--radius-card);
  background: var(--panel2); border: 1px solid var(--border-soft); cursor: default; }
.hours-today { display: flex; flex-direction: column; gap: 5px; }
.hours-today .ht-lab { font-size: 12.5px; color: var(--muted); display: flex; align-items: center; gap: 7px; }
.hours-today .ht-big { font-family: var(--display); font-size: 34px; font-weight: 700; line-height: 1;
  background: var(--grad-ink); -webkit-background-clip: text; background-clip: text; color: transparent; }
.hours-today .ht-big.closed { background: none; color: var(--muted); }
.hours-panel .hp-hint { font-size: 12px; color: var(--muted); display: inline-flex; align-items: center; gap: 5px; border-left: 1px solid var(--border-soft); padding-left: 18px; cursor: help; }
.hours-panel .hp-hint .ic { transition: transform .16s; }
.hours-panel:hover .hp-hint .ic, .hours-panel:focus-within .hp-hint .ic { transform: rotate(180deg); }
.hours-week { position: absolute; bottom: calc(100% + 8px); right: 0; z-index: 40; min-width: 230px; padding: 12px 14px; border-radius: 12px;
  background: var(--panel); border: 1px solid var(--border-soft); box-shadow: var(--shadow-pop);
  opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .16s, transform .16s, visibility .16s; pointer-events: none; }
.hours-panel:hover .hours-week, .hours-panel:focus-within .hours-week { opacity: 1; visibility: visible; transform: none; pointer-events: auto; }
.hours-week .hw-title { font-family: var(--display); font-size: 14px; font-weight: 600; margin-bottom: 8px; padding-bottom: 8px; border-bottom: 1px solid var(--border-soft); }
.hours-week .hw-grid { display: grid; grid-template-columns: auto auto; gap: 5px 18px; font-size: 14px; }
.hours-week .hw-day { color: var(--muted); }
.hours-week .hw-day.today { color: var(--text); font-weight: 700; }
.hours-week .hw-val { font-family: var(--mono); color: var(--text2); text-align: right; }
.hours-week .hw-val.today { color: var(--accent); font-weight: 700; }
.hours-week .hw-val.off { color: var(--muted); opacity: .6; }
/* bot TakeTune: bez stalego ruchu */
.bot-svg { overflow: visible; }
.bot-hero { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.bot-hero > .bot-wrap { flex-shrink: 0; }
.bot-hero > .bot-body { flex: 1; min-width: 240px; }

/* ================================================================ TUNINGSUITE: wybor solucji, zlecenia, wycena */
.ts-group { margin: 14px 0 4px; }
.ts-group-title { font-size: 12px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; margin: 0 0 9px; display: flex; align-items: center; gap: 6px; }
.ts-sols { display: grid; grid-template-columns: repeat(auto-fill, minmax(176px, 1fr)); gap: 10px; margin-bottom: 6px; }
.ts-sol { position: relative; display: flex; align-items: center; gap: 11px; padding: 12px 13px; cursor: pointer;
  border: 1px solid var(--border-soft); border-radius: 12px; background: var(--panel); transition: border-color .14s, background-color .14s, box-shadow .14s; }
.ts-sol:hover { border-color: var(--accent); box-shadow: var(--shadow-card); }
.ts-sol.sel { border-color: var(--accent); background: var(--accent-bg); box-shadow: inset 0 0 0 1px var(--accent); }
.ts-sol .ts-name { font-size: 14px; font-weight: 600; color: var(--text); line-height: 1.25; }
.ts-sol .ts-sub { font-size: 11.5px; color: var(--muted); margin-top: 1px; }
.ts-sol .ts-check { position: absolute; top: 7px; right: 7px; width: 18px; height: 18px; border-radius: 50%; background: var(--grad-heat); color: var(--on-accent); display: none; place-items: center; }
.ts-sol.sel .ts-check { display: grid; }
.ts-sol .radio-hint { font-size: 9.5px; color: var(--muted); position: absolute; bottom: 6px; right: 9px; }
.ts-job { margin-bottom: 16px; }
.ts-job .ts-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.ts-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; justify-content: flex-end; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border-soft); }
.ts-actions .ts-summary { margin-right: auto; font-size: 13px; color: var(--muted); }
.ts-loading { text-align: center; padding: 28px 14px 22px; }
.ts-loading .spinner { width: 44px; height: 44px; border-width: 4px; margin: 0 auto 18px; display: block; }
.ts-loading .tl-title { font-weight: 600; font-size: 15px; color: var(--text); }
.ts-loading .tl-sub { font-size: 12.5px; color: var(--muted); margin-top: 6px; }
.ts-combo { position: relative; }
.ts-combo:focus-within { z-index: 60; }
.grid > .field:focus-within { z-index: 60; }
.ts-combo-list { position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 40; max-height: 250px; overflow-y: auto; padding: 5px; display: none;
  background: var(--panel); border: 1px solid var(--border-soft); border-radius: 12px; box-shadow: var(--shadow-pop); }
.ts-combo-list.open { display: block; }
.ts-combo-item { padding: 8px 11px; border-radius: 8px; cursor: pointer; font-size: 14px; color: var(--text2); transition: background-color .12s, color .12s; }
.ts-combo-item:hover, .ts-combo-item.active { background: var(--accent-bg); color: var(--text); }
.ts-combo-item b { color: var(--accent); font-weight: 600; }
.ts-jobs-bar { display: flex; gap: 10px; flex-wrap: wrap; align-items: end; margin-bottom: 14px; padding: 12px 14px; }
.ts-jobs-bar .field { margin: 0; }
.ts-jobs-bar .tjb-q { flex: 1; min-width: 200px; }
.ts-jobs-bar .tjb-date { flex: 0 0 150px; }
.ts-jobs-bar .tjb-cnt { align-self: center; margin-left: auto; }
.ts-job-fold { border: 1px solid var(--border-soft); border-radius: var(--radius-card); background: var(--panel); margin-bottom: 10px; overflow: hidden; box-shadow: var(--shadow-card); }
.ts-job-fold > summary { display: flex; align-items: center; gap: 10px; padding: 12px 14px; cursor: pointer; list-style: none; flex-wrap: wrap; transition: background-color .14s; }
.ts-job-fold > summary:hover { background: var(--row-hover); }
.ts-job-fold > summary::-webkit-details-marker { display: none; }
.tjf-ic { color: var(--accent); display: inline-flex; }
.tjf-name { font-size: 14px; overflow-wrap: anywhere; }
.tjf-sols { color: var(--muted); font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 30ch; }
.tjf-date { margin-left: auto; color: var(--muted); font-size: 12px; font-family: var(--mono); white-space: nowrap; }
.tjf-arrow { color: var(--muted); transition: transform .18s; }
.ts-job-fold[open] > summary .tjf-arrow { transform: rotate(180deg); }
.ts-job-fold > .tjf-body { padding: 0 10px 10px; }
.tjf-body > .ts-job { border: 0; box-shadow: none; background: transparent; padding: 6px 6px 0; }
.ts-pager { display: flex; justify-content: center; align-items: center; gap: 6px; margin: 14px 0 4px; flex-wrap: wrap; }
.ts-pager .btn { min-width: 36px; }
.tsp-dots { color: var(--muted); padding: 0 2px; }
.ts-loading2 { position: relative; text-align: center; padding: 34px 24px 26px; overflow: hidden; }
/* okno ladowania bota bez marginesu okna: pasek akcentu biegnie przez cala gorna krawedz i konczy sie w jej zaokragleniu */
.modal:has(> .ts-loading2) { padding: 0; overflow: hidden; }
.ts-loading2::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--grad-heat); }
.tsl-halo { display: none; }
.tsl-logo { width: 64px; height: 64px; object-fit: contain; position: relative; }
.tsl-title { margin-top: 14px; font-family: var(--display); font-size: 16px; font-weight: 700; color: var(--text); overflow-wrap: normal; word-break: normal; white-space: normal; }
.tsl-sub { font-size: 13px; color: var(--muted); margin-top: 6px; overflow-wrap: normal; word-break: normal; }
.tsl-bar { position: relative; height: 6px; border-radius: 4px; background: var(--panel3); margin: 20px auto 0; max-width: 340px; overflow: hidden; }
.tsl-bar i { position: absolute; top: 0; bottom: 0; left: -40%; width: 38%; border-radius: 4px; background: var(--grad-heat); animation: tslSweep 1.25s cubic-bezier(.4,.2,.6,.8) infinite; }
.tsl-scan { font-size: 12px; margin-top: 12px; color: var(--muted); }
.ts-price { flex-shrink: 0; font-size: 12px; font-weight: 700; color: var(--accent); background: var(--accent-bg); padding: 3px 9px;
  border-radius: 14px; margin-right: 6px; white-space: nowrap; font-family: var(--mono); }
.ts-sub-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; min-width: 0; margin-top: 4px; }
.ts-sub-row .ts-sub { min-width: 0; }
.ts-sub-row .ts-price { margin: 0; padding: 2px 9px; font-size: 11px; line-height: 1.5; }
.sp-locked { opacity: .72; cursor: not-allowed; background: var(--panel2) !important; }
.tsq { border: 1px solid var(--border-soft); border-radius: 12px; background: var(--panel2); padding: 10px 13px; margin: 10px 0 12px; }
.tsq-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 6px 0; font-size: 14px; border-bottom: 1px solid var(--border-soft); }
.tsq-row:last-child { border-bottom: 0; }
.tsq-row small { font-size: 11px; margin-left: 5px; }
.tsq-sub { font-size: 12.5px; color: var(--muted); }
.tsq-total { border-top: 1px solid var(--border); margin-top: 4px; padding-top: 8px; font-weight: 700; font-size: 14.5px; }
.tsq-kr { color: var(--accent); font-family: var(--mono); white-space: nowrap; }
.tsq-free { color: var(--ok-text); font-size: 12.5px; white-space: nowrap; }

/* ================================================================ LISTA ECU, SUPPORT, WYCENA */
.tsecu button { border-radius: 999px; font-family: var(--display); font-weight: 600; }
.tsecu button:hover:not(:disabled) { border-color: var(--accent); }
.ecu-field { display: flex; flex-direction: column; gap: 5px; }
.ecu-field input { font-family: var(--mono); letter-spacing: .02em; }
.ecu-badge { min-height: 18px; display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; }
.ecu-badge-txt { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; font-size: 12.5px; font-weight: 600; line-height: 1.4; }
.ecu-badge-txt.ok { color: var(--ok-text); } .ecu-badge-txt.warn { color: var(--warn-text); }
.ecu-badge-txt.err { color: var(--err-text); } .ecu-badge-txt.muted { color: var(--muted); font-weight: 500; }
.ecu-rules td:first-child, .ecu-rules .badge { white-space: nowrap; }
.sup-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 22px; align-items: start; }
.sup-side { position: sticky; top: 84px; }
@media (max-width: 1100px) { .sup-layout { grid-template-columns: minmax(0, 1fr); } .sup-side { position: static; } }
.svc-group { margin: 4px 0 14px; }
.svc-group-title { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); margin: 0 0 8px; }
.svc-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; }
.svc-tile { display: flex; align-items: center; gap: 10px; padding: 9px 11px; margin: 0; border: 1px solid var(--border-soft); border-radius: 12px;
  background: var(--panel); cursor: pointer; font-weight: 500; transition: border-color .15s, background-color .15s; }
.svc-tile:hover { border-color: var(--accent); }
.svc-tile.on { border-color: var(--accent); background: var(--accent-bg); }
.svc-tile input { width: auto; margin: 0; }
.svc-tile-ic { flex: 0 0 auto; width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; background: var(--chip-bg); color: var(--text2); }
.svc-tile.emis .svc-tile-ic { color: var(--warn-text); }
.svc-tile.on .svc-tile-ic { color: var(--accent); background: var(--panel); }
.svc-tile-txt { display: flex; flex-direction: column; min-width: 0; flex: 1; line-height: 1.25; }
.svc-tile-txt b { font-size: 13.5px; font-weight: 600; overflow-wrap: normal; word-break: normal; hyphens: auto; }
.svc-tile-txt small { font-size: 11.5px; color: var(--muted); }
.svc-tile-price { flex: 0 0 auto; }
.svc-badge { display: inline-block; font-size: 11.5px; font-weight: 700; padding: 3px 8px; border-radius: 12px; white-space: nowrap; }
.svc-badge.plan { color: var(--ok-text); background: var(--ok-bg); }
.svc-badge.kr { color: var(--warn-text); background: var(--warn-bg); font-family: var(--mono); }
.svc-badge-line { display: inline-flex; align-items: center; gap: 4px; }
.quote-card { border: 1px solid var(--border-soft); border-radius: var(--radius-card); padding: 16px; background: var(--panel); box-shadow: var(--shadow-card); display: flex; flex-direction: column; gap: 8px; }
.qc-title { font-family: var(--display); font-weight: 700; font-size: 16px; display: flex; align-items: center; gap: 7px; color: var(--heading); }
.qc-empty { font-size: 13.5px; margin: 2px 0; }
.qc-rows { display: flex; flex-direction: column; gap: 6px; }
.qc-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 13.5px; }
.qc-row > span:first-child { display: inline-flex; align-items: center; gap: 6px; min-width: 0; }
.qc-row b { font-family: var(--mono); white-space: nowrap; }
.qc-plan { font-size: 11.5px; font-weight: 700; color: var(--ok-text); white-space: nowrap; }
.qc-muted { color: var(--muted); font-size: 12.5px; }
.qc-sub { font-size: 12.5px; color: var(--text2); display: flex; align-items: center; gap: 5px; }
.qc-total { display: flex; justify-content: space-between; align-items: baseline; border-top: 1px solid var(--border-soft); padding-top: 8px; margin-top: 2px; font-weight: 700; }
.qc-total b { font-size: 18px; font-family: var(--display); }
.qc-ban { margin: 4px 0 0; font-size: 12.5px; }
.qc-terms { display: flex; gap: 8px; align-items: flex-start; font-size: 12.5px; font-weight: 400; line-height: 1.4; margin: 4px 0 0;
  padding: 9px; border-radius: 10px; background: var(--warn-bg); border: 1px solid var(--warn-line); color: var(--text); }
.qc-terms input { width: auto; margin-top: 2px; }
.qc-go { width: 100%; margin-top: 4px; }
.qc-note { font-size: 11.5px; margin: 0; text-align: center; }
.tickets-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(340px, 100%), 1fr)); gap: 0 14px; }

/* ================================================================ ADMIN: uzytkownicy */
.usr-bar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; padding: 12px 14px; margin-bottom: 14px; }
.usr-bar input { flex: 1 1 260px; min-width: 0; }
.usr-bar select { width: auto; min-width: 200px; }
.usr-count { font-size: 12.5px; margin-left: auto; }
.usr-table { min-width: 1000px; }
.usr-table th { white-space: nowrap; }
.usr-table td { vertical-align: top; }
.usr-table td:first-child { min-width: 240px; }
.usr-table td:nth-child(2) { min-width: 180px; }
.usr-table .badge { white-space: nowrap; }
.usr-av { width: 30px; height: 30px; flex: 0 0 auto; border-radius: 50%; display: grid; place-items: center; font: 700 11px var(--display); color: var(--on-accent); background: var(--grad-heat); }
.usr-mail { overflow-wrap: break-word; }
.usr-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; margin-bottom: 4px; }
.usr-term { font-size: 11.5px; font-weight: 600; }
.usr-term.err { color: var(--err-text); } .usr-term.warn { color: var(--warn-text); }
.usr-off { opacity: .55; }
.usage { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; min-width: 110px; }
.usage-bar { flex: 1; height: 6px; border-radius: 3px; background: var(--panel3); overflow: hidden; }
.usage-bar i { display: block; height: 100%; background: var(--ok); border-radius: 3px; }
.usage-bar.high i { background: var(--warn); }
.usage-bar.full i { background: var(--err); }
.usage .mono { font-size: 11.5px; white-space: nowrap; }

/* ================================================================ OBSLUGA RECZNA */
.mn-tabs { flex-wrap: wrap; margin: 0 0 16px; }
.mn-tabs button { display: inline-flex; align-items: center; gap: 6px; }
.mn-cnt:empty { display: none; }
.mn-cnt { font-size: 11.5px; padding: 1px 7px; }
.mn-stat-grid .sv small { font-size: 14px; font-weight: 600; color: var(--muted); }
.mn-sec-h { display: flex; align-items: center; gap: 8px; font-family: var(--display); font-weight: 700; font-size: 16px; margin: 22px 0 12px; color: var(--heading); }
.sup-main > .mn-sec-h:first-child { margin-top: 0; }
.mn-num { width: 24px; height: 24px; flex: 0 0 auto; border-radius: 50%; display: grid; place-items: center; font-size: 12.5px; background: var(--grad-heat); color: var(--on-accent); }
.mn-drop { padding: 26px 18px; }
.mn-drop .big { margin-top: 8px; }
.mn-drop.has { border-style: solid; border-color: var(--ok-line); }
.mn-file { display: flex; align-items: center; gap: 8px; min-width: 0; margin: 10px 0 0; padding: 9px 12px; border-radius: 12px; border: 1px solid var(--ok-line); background: var(--ok-bg); font-size: 13.5px; }
.mn-file b { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mn-file .muted { white-space: nowrap; }
.mn-file .btn { margin-left: auto; }
.mn-opts { margin-top: 14px; }
.mn-seg { display: flex; flex-wrap: wrap; gap: 6px; }
.mn-seg-opt { position: relative; display: inline-flex; align-items: center; width: auto; margin: 0; padding: 7px 14px; border-radius: 999px;
  border: 1px solid var(--border); background: var(--panel); color: var(--text2); font-size: 13px; font-weight: 600; cursor: pointer; }
.mn-seg-opt input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.mn-seg-opt:hover { border-color: var(--accent); }
.mn-seg-opt.on { border-color: transparent; background: var(--grad-heat); color: var(--on-accent); }
.mn-seg-opt:focus-within { outline: 2px solid var(--accent); outline-offset: 2px; }
.mn-special { margin-top: 4px; }
.mn-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 12px 14px; margin-bottom: 14px; }
.mn-bar input { flex: 1 1 240px; min-width: 0; }
.mn-bar select { width: auto; }
.mn-table { min-width: 900px; }
.mn-table.adm { min-width: 1100px; }
.mn-table td { vertical-align: top; }
.mn-time { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--text2); white-space: nowrap; }
.mn-time span { display: inline-flex; align-items: center; gap: 5px; }
.mn-veh { display: flex; align-items: flex-start; gap: 10px; min-width: 190px; }
.mn-logo { width: 40px; height: 40px; flex: 0 0 auto; display: grid; place-items: center; overflow: hidden; border-radius: 10px; background: #fff; border: 1px solid var(--border-soft); }
.mn-logo img { max-width: 32px; max-height: 32px; object-fit: contain; }
.mn-logo.fb { background: var(--panel3); color: var(--muted); }
.mn-files { margin-top: 4px; display: flex; gap: 4px; }
.mn-files .badge { font-size: 10.5px; min-height: 20px; padding: 1px 7px; }
.mn-small { font-size: 12px; }
.mn-works { display: flex; flex-wrap: wrap; gap: 4px; max-width: 290px; }
.mn-svc { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 12px; background: var(--chip-bg); font-size: 11.5px; white-space: nowrap; }
.mn-svc.special { color: var(--warn-text); background: var(--warn-bg); }
.mn-note { max-width: 270px; margin-top: 5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mn-pager { display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 10px 2px 0; font-size: 12.5px; }
.mn-packs { margin-bottom: 18px; }
.mn-per { margin-top: -6px; font-size: 13.5px; font-weight: 700; color: var(--ok-text); }
.mn-own { font-size: 12.5px; font-weight: 600; color: var(--ok-text); display: flex; align-items: center; gap: 5px; }
.mn-under { align-items: start; }
.mn-tips { margin: 0 0 14px; padding: 12px 14px; }
.mn-tips ul { margin: 6px 0 0; padding-left: 18px; font-size: 13px; display: flex; flex-direction: column; gap: 4px; }
.mn-adm .label, .mn-tips .label { margin-bottom: 2px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.mn-qstats { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.mn-qstat { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 12px; border: 1px solid var(--border-soft); background: var(--panel); font-size: 13px; color: var(--text2); }
.mn-qstat b { font-family: var(--display); color: var(--text); }
.mn-qstat.warn { border-color: var(--warn-line); }
.mn-qstat.err { border-color: var(--err-line); }
.mn-qtabs { display: flex; flex-wrap: wrap; gap: 6px; flex: 1 1 100%; }
.mn-qcnt { font-size: 11px; opacity: .75; margin-left: 2px; }

/* ================================================================ ADMIN: sprzedaz i licencje */
.stat-grid.rs-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1100px) { .stat-grid.rs-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.rs-kpis .sv small { font-size: 14px; font-weight: 600; color: var(--muted); }
.rs-sub { font-size: 12px; color: var(--text2); margin-top: 3px; line-height: 1.35; }
.rs-table { width: max-content; min-width: 100%; }
.rs-table th, .rs-table td { white-space: nowrap; }
.rs-table td.rs-wrap { white-space: normal; min-width: 140px; max-width: 240px; }
.rs-table tfoot td { border-top: 1px solid var(--border); background: var(--panel2); font-size: 13.5px; }
.rs-small { font-size: 12px; }
.rs-note { font-size: 12.5px; margin: 8px 2px 18px; }
.rs-pair, .rs-act { align-items: start; margin-bottom: 18px; }
.grid.rs-pair { grid-template-columns: repeat(auto-fit, minmax(min(400px, 100%), 1fr)); }
.grid.rs-act { grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); }
.rs-card { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.rs-card .tbl-scroll { margin: 0 -4px; }
.rs-cats { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.rs-cats .pill { font-size: 11.5px; display: inline-flex; align-items: center; gap: 4px; }
.rs-ban { margin: 12px 0; }
.rs-export { margin-bottom: 24px; }

/* ================================================================ WLASNE KONTROLKI (ui.js) */
.ui-select { display: inline-grid; vertical-align: middle; width: 100%; min-width: 0; position: relative; }
.ui-select > select, .ui-select > .ui-select-btn { grid-area: 1 / 1; }
.ui-select > select { visibility: hidden; pointer-events: none; }
.ui-select-btn { position: relative; width: 100%; min-width: 0; margin: 0; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  background: var(--input-bg); border: 1px solid var(--input-border); color: var(--text); font-family: var(--sans); line-height: normal; cursor: pointer;
  transition: border-color .14s, box-shadow .14s; }
.ui-select-btn::after { content: ""; position: absolute; right: 13px; top: 50%; width: 16px; height: 16px; margin-top: -8px; background: var(--muted); transition: transform .15s;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") center / contain no-repeat; }
.ui-select-btn[aria-expanded="true"]::after { transform: rotate(180deg); }
.ui-select-btn:hover:not(:disabled) { border-color: var(--muted); }
.ui-select-btn:focus-visible, .ui-select-btn[aria-expanded="true"] { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-bg); }
.ui-select-btn:disabled { opacity: .55; cursor: not-allowed; }
.toolbar .ui-select, .usr-bar .ui-select, .mn-bar .ui-select, .ui-select:has(> select.cc-kind) { width: auto; }
.usr-bar .ui-select { min-width: 200px; }
.ui-pop { position: fixed; z-index: 300; background: var(--panel); border: 1px solid var(--border-soft); border-radius: 12px; box-shadow: var(--shadow-pop); }
.ui-select-pop { display: flex; flex-direction: column; max-width: min(480px, calc(100vw - 16px)); overflow: hidden; }
.ui-select-search { margin: 6px 6px 2px; width: auto; padding: 8px 10px; font-size: 14px; }
.ui-select-list { list-style: none; margin: 0; padding: 4px; overflow-y: auto; position: relative; flex: 1 1 auto; min-height: 0; }
.ui-select-list li[role="option"] { padding: 8px 10px; border-radius: 8px; cursor: pointer; color: var(--text); font-size: 14px; overflow-wrap: anywhere; }
.ui-select-list li.active { background: var(--hover); }
.ui-select-list li[aria-selected="true"] { background: var(--accent-bg); font-weight: 600; }
.ui-select-list li[aria-disabled="true"] { opacity: .45; cursor: not-allowed; }
.ui-select-note { padding: 8px 10px; font-size: 13px; color: var(--muted); }
/* dymek: zawsze granatowy, jak w TakeCar */
.ui-tip { position: fixed; left: 0; top: 0; z-index: 310; max-width: min(320px, calc(100vw - 16px)); padding: 6px 10px; border-radius: 8px;
  background: #1A2332; color: #F1F5F9; border: 1px solid #2B3A52; box-shadow: 0 6px 18px rgba(0,0,0,.25);
  font-size: 12.5px; line-height: 1.4; pointer-events: none; opacity: 0; visibility: hidden; transition: opacity .12s; }
.ui-tip.show { opacity: 1; visibility: visible; }
.ui-month { display: inline-flex; align-items: center; gap: 4px; }
.ui-month-btn { min-width: 170px; padding: 8px 12px; background: var(--input-bg); border: 1px solid var(--input-border); color: var(--text);
  border-radius: var(--radius); font: 600 14px var(--sans); cursor: pointer; transition: border-color .14s, box-shadow .14s; }
.ui-month-btn:hover { border-color: var(--muted); }
.ui-month-btn:focus-visible, .ui-month-btn[aria-expanded="true"] { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-bg); }
.ui-month-pop { padding: 10px; width: 300px; max-width: calc(100vw - 16px); }
.ui-month-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; font-size: 14px; }
.ui-month-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.ui-month-grid button { padding: 8px 4px; border-radius: 8px; border: 1px solid var(--border-soft); background: var(--panel); color: var(--text); font: 500 13px var(--sans); cursor: pointer; }
.ui-month-grid button:hover:not(:disabled) { border-color: var(--accent); }
.ui-month-grid button.on { background: var(--grad-heat); border-color: transparent; color: var(--on-accent); font-weight: 700; }
.ui-month-grid button:disabled { opacity: .4; cursor: not-allowed; }
.ui-dialog { width: min(420px, 100%); }
.ui-prompt-row { display: flex; gap: 8px; align-items: center; }
.ui-prompt-row input { flex: 1; min-width: 0; }
.field-err { color: var(--err-text); font-size: 13px; margin-top: 6px; }
input.invalid, textarea.invalid, .ui-select-btn.invalid { border-color: var(--err) !important; }
img.img-broken { min-width: 20px; min-height: 20px; background: var(--panel3); border-radius: 6px; }
.site-media-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; align-items: start; }
.site-media-list > .btn { justify-self: start; align-self: center; }
.site-media-item { display: flex; flex-direction: column; gap: 6px; padding: 8px; border: 1px solid var(--border-soft); border-radius: 12px; background: var(--panel2); }
.site-media-item img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 8px; background: var(--panel3); }
.site-media-item input { padding: 7px 9px; font-size: 13px; }
.site-media-video video { width: 100%; max-width: 420px; border-radius: var(--radius); background: var(--panel3); display: block; margin-bottom: 8px; }

/* ================================================================ PASKI PRZEWIJANIA */
* { scrollbar-width: thin; scrollbar-color: var(--panel3) transparent; }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--panel3); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--muted); }
.sidebar ::-webkit-scrollbar-thumb { background: rgba(255,255,255,.1); }

/* ================================================================ RUCH: tylko przy interakcji i ladowaniu */
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes fadeIn { from { opacity: 0; } }
@keyframes modalIn { from { opacity: 0; transform: translateY(8px) scale(.98); } }
@keyframes toastIn { from { opacity: 0; transform: translateY(8px); } }
@keyframes skPulse { 50% { opacity: .5; } }
@keyframes tslSweep { to { left: 105%; } }
/* stale animacje dekoracji sa wylaczone; nazwy zostaja puste, bo uzywa ich markup modulow partnera */
@keyframes floatY { from { } to { } }
@keyframes pulseGlow { from { } to { } }
@keyframes orbDrift { from { } to { } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .001s !important; animation-iteration-count: 1 !important; transition-duration: .001s !important; } }

/* ================================================================ SZEROKOSCI */
@media (max-width: 1100px) { .editor { grid-template-columns: 1fr; } }
@media (max-width: 900px) {
  .app, .app.collapsed { grid-template-columns: minmax(0, 1fr); --side-w: 280px; }
  /* menu jako wysuwany panel */
  .sidebar { position: fixed; top: 0; left: 0; bottom: 0; height: 100%; width: min(280px, 86vw); z-index: 200;
    transform: translateX(-100%); transition: transform .25s cubic-bezier(.2,.8,.2,1); }
  .app.nav-open .sidebar { transform: none; box-shadow: 10px 0 40px rgba(0,0,0,.4); }
  .side-foot { display: none; }
  .nav-backdrop { display: block; position: fixed; inset: 0; z-index: 190; background: var(--scrim); opacity: 0; visibility: hidden; transition: opacity .25s, visibility .25s; }
  .app.nav-open .nav-backdrop { opacity: 1; visibility: visible; }
  .topbar { height: 56px; gap: 4px; padding: 0 6px 0 4px; }
  .tb-burger { display: grid; }
  .tb-title { font-size: 17px; }
  .tb-user { padding-left: 0; border-left: 0; }
  .main { padding: 16px; }
  .grid.cols-2, .grid.cols-3, .grid.auto { grid-template-columns: 1fr; }
  .page-head { flex-wrap: wrap; gap: 12px; margin-bottom: 18px; }
  .page-head h1 { font-size: 24px; }
  .page-head p { font-size: 13.5px; }
  .page-head > div:first-child { flex: 1 1 100%; min-width: 0; }
  .page-head > .row { width: 100%; flex-wrap: wrap; justify-content: flex-start; }
  .page-head > .row > .btn { flex: 1 1 auto; }
  .hero { padding: 22px 18px; } .hero h1 { font-size: 26px; max-width: none; }
  .hero p { font-size: 14.5px; } .hero .hero-cta .btn { width: 100%; }
  .hero-art { display: none; }
  .hero { overflow-x: clip; }
  .stat-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .stat { padding: 14px; gap: 12px; } .stat .sv { font-size: 20px; } .stat .si { width: 38px; height: 38px; }
  .sub-usage { gap: 6px; }
  .toolbar { gap: 8px; } .toolbar input, .toolbar select, .toolbar .ui-select { width: 100%; }
  .bubble, .msg .b-wrap { max-width: 82%; }
  .chat { max-height: 60vh; }
  .modal { --mp: 16px; --mt: 16px; }
  .modal > h3:first-child, .modal > :first-child > h3:first-child { margin-bottom: 16px; padding-top: 14px; padding-bottom: 14px; }
  .card table { display: block; overflow-x: auto; white-space: nowrap; }
  table { font-size: 13.5px; } td, th { padding: 10px; }
  .cat-row { flex-wrap: wrap; }
  .stepper { overflow-x: auto; gap: 2px; }
  .stepper .step { flex: 0 0 auto; white-space: nowrap; }
  .stepper .line { min-width: 16px; }
  .editor { grid-template-columns: 1fr; }
  .hex { font-size: 11px; }
  .bot-hero > .bot-body { min-width: 0; }
  input, select, textarea, .ui-select-btn { font-size: 16px; }
  .login-card { padding: 24px 20px; }
}
@media (max-width: 760px) {
  .main .hero .row > div[style*="min-width:260px"] { min-width: 0 !important; }
  .bot-hero > .bot-body { min-width: 0; max-width: 100%; }
  .main .ts-actions .btn, .bot-body .btn { max-width: 100%; white-space: normal; }
}
@media (max-width: 640px) {
  .ts-jobs-bar .tjb-date { flex: 1 1 calc(50% - 10px); }
  .tjf-date { margin-left: 0; width: 100%; order: 5; }
  .bill-strip .billbar { gap: 8px; padding: 9px 10px; margin-bottom: 12px; }
  .bill-strip .bb-chip { height: 28px; padding: 0 9px; font-size: 12px; }
  .bill-strip .bb-actions { width: 100%; }
  .bill-strip .bb-actions .btn { flex: 1; }
  .bb-rate { display: none; }
  .lang-btn { padding: 0 4px; }
}
@media (max-width: 600px) {
  .svc-tiles { grid-template-columns: minmax(0, 1fr); }
  .svc-tile { display: grid; grid-template-columns: auto auto minmax(0, 1fr); grid-template-areas: "chk ic txt" "chk ic price"; row-gap: 3px; }
  .svc-tile input { grid-area: chk; }
  .svc-tile-ic { grid-area: ic; }
  .svc-tile-txt { grid-area: txt; }
  .svc-tile-price { grid-area: price; }
  .cc-hint { display: none; }
  .mn-stat-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
  .mn-stat-grid .stat, .rs-kpis .stat { flex-direction: column; align-items: flex-start; gap: 8px; padding: 12px; }
  .mn-stat-grid .stat .si, .rs-kpis .stat .si { width: 34px; height: 34px; }
  .mn-stat-grid .stat .sv { font-size: 20px; } .rs-kpis .stat .sv { font-size: 19px; }
  .mn-stat-grid .stat .sl, .rs-kpis .stat .sl { font-size: 12px; }
  .rs-kpis { grid-template-columns: 1fr 1fr; gap: 8px; }
  .mn-seg-opt { padding: 7px 11px; }
  .mn-drop { padding: 20px 12px; }
  .mn-bar select, .mn-bar .ui-select { flex: 1 1 auto; }
}
@media (max-width: 520px) {
  .main .hero .row > div[style*="min-width:260px"] { flex-basis: 100% !important; }
  .bot-hero { flex-direction: column; align-items: stretch; }
  .bot-hero > .bot-wrap { align-self: center; }
  .bot-hero > .bot-body { width: 100%; flex: auto; }
  .bot-body .row:has(> #tsSearch) { display: grid; grid-template-columns: minmax(0, 1fr); width: 100%; }
  .bot-body #tsSearch, .bot-body #tsToSupport { width: 100%; overflow-wrap: normal; word-break: normal; }
  .ts-job > .section-title { display: block; overflow-wrap: normal; word-break: normal; }
  .ts-job > .section-title > .st-action { display: block; margin: 6px 0 0; }
  .ts-job > .ts-actions { display: grid; grid-template-columns: minmax(0, 1fr); }
  .ts-job > .ts-actions .btn { width: 100%; }
  .main .stepper, .ts-loading .stepper { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .stepper .step { min-width: 0; flex: initial; }
  .stepper .step > span:last-child { white-space: normal; overflow-wrap: normal; word-break: normal; }
  .stepper .line { display: none; }
}
@media (max-width: 420px) {
  .stat-grid { grid-template-columns: 1fr; }
  .hero h1 { font-size: 23px; }
  .tb-title { font-size: 16px; }
}
