/* =====================================================================
   Tmavá téma (nový dizajn) – iba zákaznícka časť (body.night). Admin ostáva svetlý.
   Farby: --bg, --panel, --hero, --accent (brand/<firma>/theme.css alebo admin → Vzhľad).
   Biele zostáva len to, čo sa skenuje alebo je papier: čiarový kód, bloček, zväčšený kód.
   ===================================================================== */
@font-face { font-family: "Outfit"; font-style: normal; font-display: swap; font-weight: 400; src: url("fonts/outfit-latin-400-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Outfit"; font-style: normal; font-display: swap; font-weight: 400; src: url("fonts/outfit-latin-ext-400-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Outfit"; font-style: normal; font-display: swap; font-weight: 500; src: url("fonts/outfit-latin-500-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Outfit"; font-style: normal; font-display: swap; font-weight: 500; src: url("fonts/outfit-latin-ext-500-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Outfit"; font-style: normal; font-display: swap; font-weight: 600; src: url("fonts/outfit-latin-600-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Outfit"; font-style: normal; font-display: swap; font-weight: 600; src: url("fonts/outfit-latin-ext-600-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Outfit"; font-style: normal; font-display: swap; font-weight: 700; src: url("fonts/outfit-latin-700-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Outfit"; font-style: normal; font-display: swap; font-weight: 700; src: url("fonts/outfit-latin-ext-700-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Outfit"; font-style: normal; font-display: swap; font-weight: 800; src: url("fonts/outfit-latin-800-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Outfit"; font-style: normal; font-display: swap; font-weight: 800; src: url("fonts/outfit-latin-ext-800-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }

/* predvolené farby tmavej témy – nulová priorita (:where), takže brand/<firma>/theme.css aj admin → Vzhľad ich vždy prepíšu */
:where(:root) {
  --bg: #06301c; --bg-nav: #042214; --panel: #0b4227; --hero: #11613a; --hero-2: #1a7347; --accent-ink: #0a2a18;
  --text: #f2f7f3; --text-2: #cde6d6; --text-3: #a9cbb7; --link: #7ee2a8; --live: #2fd07a;
  --glass: rgba(255, 255, 255, .06); --glass-2: rgba(255, 255, 255, .1); --gline: rgba(255, 255, 255, .1); --shade: rgba(0, 0, 0, .22);
}
body.night, .night.lp2, .night.np-offer {
  /* staré premenné → tmavé hodnoty (komponenty, ktoré tu nie sú prepísané, sa prispôsobia samy) */
  --ink: var(--text); --muted: var(--text-3); --line: var(--gline); --primary-l: rgba(255, 210, 31, .14);
  --brand-font: "Outfit", system-ui, sans-serif; --body-font: "Outfit", system-ui, -apple-system, "Segoe UI", sans-serif;
  color-scheme: dark;
  background: var(--bg); color: var(--text);
}
/* var(--bg) atď. z brand/theme.css alebo adminu (:root) majú prednosť pred predvolenými vyššie */
:root body.night { background: var(--bg); }
.night h1, .night h2, .night h3 { font-family: var(--brand-font); font-weight: 700; letter-spacing: -.01em; }
.night .h1 { font-size: 1.85rem; font-weight: 800; letter-spacing: -.02em; }
.night .muted { color: var(--text-3); }
.night .link, .night a.link { color: var(--link); }
.night .link:hover { color: #b5f0cc; text-decoration: none; }
.night :focus-visible { outline-color: var(--accent); }
.night .alert { background: var(--glass); border: 1px solid var(--gline); color: var(--text); }
.night .alert--ok { border-color: rgba(47, 208, 122, .45); background: rgba(47, 208, 122, .12); }
.night .alert--error { border-color: rgba(255, 110, 90, .5); background: rgba(255, 110, 90, .12); }
.night .alert--warn { border-color: rgba(255, 210, 31, .45); background: rgba(255, 210, 31, .1); color: var(--text); }

/* ---------- hlavička ---------- */
.night .topbar { position: sticky; top: 0; z-index: 30; display: flex; align-items: center; gap: 10px; height: auto; padding: calc(10px + var(--safe-t)) 20px 10px;
  background: color-mix(in srgb, var(--bg) 82%, transparent); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); border: 0; box-shadow: none; }
.night .topbar__logo img { height: 28px; width: auto; }
.night .topbar__sp { flex: 1; }
.night .tbtn { position: relative; width: 44px; height: 44px; border-radius: 22px; display: grid; place-items: center; color: var(--text);
  background: var(--glass); border: 1px solid var(--gline); text-decoration: none; }
.night .tbtn .ic { width: 20px; height: 20px; }
.night .tbtn__dot { position: absolute; top: 9px; right: 10px; width: 9px; height: 9px; border-radius: 50%; background: var(--accent); border: 2px solid var(--bg); }
.night .tavatar { width: 44px; height: 44px; border-radius: 22px; display: grid; place-items: center; background: var(--accent); color: var(--accent-ink);
  font: 700 .95rem var(--brand-font); text-decoration: none; }

/* ---------- plávajúce spodné menu s tlačidlom Karta ---------- */
.night main.app { padding-bottom: calc(118px + var(--safe-b)); }
.night .tabbar { left: 12px; right: 12px; bottom: calc(14px + var(--safe-b)); height: 72px; border-radius: 26px; padding: 0; display: grid; align-items: center;
  grid-template-columns: repeat(5, minmax(0, 1fr)); background: var(--bg-nav); border: 1px solid var(--gline); box-shadow: 0 10px 30px rgba(0, 0, 0, .5); }
.night .tabbar--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.night .tabbar a { color: var(--text-3); font-size: .74rem; font-weight: 500; gap: 4px; background: none; }
.night .tabbar a .ic { width: 22px; height: 22px; background: none; padding: 0; border-radius: 0; }
.night .tabbar a.on { color: var(--accent); font-weight: 600; }
.night .tabbar a.on .ic { background: none; color: var(--accent); }
.night .tabbar__fab { margin-top: -34px; color: var(--text) !important; font-weight: 600 !important; justify-self: center; }
.night .fab { width: 62px; height: 62px; border-radius: 31px; display: grid; place-items: center; background: var(--accent); color: var(--accent-ink);
  border: 4px solid var(--bg); box-shadow: 0 8px 20px -6px rgba(0, 0, 0, .5); }
.night .fab .ic { width: 26px !important; height: 26px !important; color: var(--accent-ink) !important; stroke-width: 2; }
@media (prefers-reduced-motion: no-preference) { .night .fab { animation: fabPulse 2.6s ease-out infinite; } }
/* blikanie tlačidla Karta v doplnkovej farbe z adminu */
@keyframes fabPulse { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent); }
  70% { box-shadow: 0 0 0 14px color-mix(in srgb, var(--accent) 0%, transparent); } 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent) 0%, transparent); } }

/* ---------- plochy ---------- */
.night .panel, .night .news, .night .menu, .night .rw-how, .night .a2hs, .night .txnav__a, .night .langs--big a, .night .gstat, .night .kpi,
.night .stat, .night .nl, .night .empty, .night .skel--list, .night .rate, .night .txmap, .night .contrib {
  background: var(--panel); border: 1px solid transparent; color: var(--text); box-shadow: none; }
.night .panel, .night .news { border-radius: 24px; }
.night .stat, .night .kpi { background: var(--glass); border-color: rgba(255, 255, 255, .08); border-radius: 20px; }
.night .stat__v, .night .kpi__v { color: var(--text); }
.night .stat__l, .night .kpi__l { color: var(--text-3); }
.night .sheet { background: var(--panel); color: var(--text); box-shadow: 0 20px 40px rgba(0, 0, 0, .3); }
.night .bigicon { background: rgba(255, 210, 31, .14); color: var(--accent); }
.night .month { color: var(--text-3); }

/* formuláre */
.night input, .night textarea, .night select { background: var(--glass); border-color: var(--gline); color: var(--text); }
.night input:focus, .night textarea:focus, .night select:focus { background: rgba(255, 255, 255, .09); border-color: var(--accent); box-shadow: 0 0 0 4px rgba(255, 210, 31, .15); }
.night input::placeholder, .night textarea::placeholder { color: var(--text-3); opacity: .8; }
.night .field > span, .night .field__lbl { color: var(--text-2); }
.night .field em, .night .check em { color: var(--text-3); }
.night .search { background: var(--glass); border: 1px solid var(--gline); border-radius: 18px; color: var(--text-3); }
.night .search input { background: transparent; color: var(--text); }
.night .seg { background: var(--shade); }
.night .seg span { color: var(--text-2); }
.night .seg input:checked + span { background: var(--accent); color: var(--accent-ink); }
.night .pw__toggle { color: var(--text-3); }

/* tlačidlá: hlavné žlté, ostatné „sklo“ */
.night .btn--primary { background: var(--accent); color: var(--accent-ink); }
.night .btn--primary:hover { filter: brightness(1.05); background: var(--accent); }
.night .btn--outline { background: transparent; border-color: var(--accent); color: var(--accent); }
.night .btn--ghost { background: var(--glass-2); border-color: transparent; color: var(--text); }
.night .btn--danger { background: #e2533c; color: #fff; }
.night .linkbtn { color: var(--text-3); }
.night .iconbtn { background: var(--glass-2); border-color: transparent; color: var(--text); }
.night .iconbtn--primary { background: var(--accent); color: var(--accent-ink); }

/* čipy, prepínače */
.night .chip, .night button.chip { background: transparent; border: 1px solid rgba(255, 255, 255, .2); color: var(--text); }
.night .chip.on, .night button.chip.on, .night .chip[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); font-weight: 700; }
.night .pswitch { background: var(--shade); }
.night .pswitch a { color: var(--text-2); }
.night .pswitch a.on, .night .pswitch--dark a.on { background: var(--accent); color: var(--accent-ink); }
.night .pswitch--period a.on { background: var(--text); color: var(--accent-ink); }
.night .switch__ui { background: rgba(255, 255, 255, .22); }
.night .switch input:checked + .switch__ui { background: var(--accent); }
.night .switch input:checked + .switch__ui::after { background: var(--accent-ink); }

/* zoznamy */
.night .txlist { background: transparent; border: 0; display: grid; gap: 10px; }
.night .tx { background: var(--glass); border: 1px solid rgba(255, 255, 255, .08); border-radius: 20px; }
.night .tx + .tx { border-top: 1px solid rgba(255, 255, 255, .08); }
.night .tx__a:hover, .night .tx__a:active { background: rgba(255, 255, 255, .04); }
.night .tx__ic { background: rgba(255, 210, 31, .14); color: var(--accent); border-radius: 14px; }
.night .tx__main small, .night .tx__items { color: var(--text-3); }
.night .pts { background: transparent; color: var(--accent); padding: 0; font-weight: 600; }
.night .it__n { color: var(--text-2); }
.night .it__q { background: var(--glass-2); border-color: transparent; color: var(--text-2); }
.night .it__q--fuel { background: rgba(110, 170, 255, .16); color: #a9cdfa; }
.night .menu { padding: 0; overflow: hidden; }
.night .menu__i + .menu__i { border-top-color: rgba(255, 255, 255, .08); }
.night .menu__i:hover, .night .menu__i:active { background: rgba(255, 255, 255, .04); }
.night .menu__ic { background: rgba(255, 210, 31, .14); color: var(--accent); border-radius: 14px; width: 44px; height: 44px; }
.night .menu__t strong { font-size: 1.05rem; } .night .menu__t small { color: var(--text-3); font-size: .86rem; }
.night .menu__i > .ic:last-child { color: var(--text-3); }
.night .block__head h2 { font-size: 1.25rem; }
.night .back { color: var(--link); }

/* novinky */
.night .news h3 { font-size: 1.2rem; }
.night .news p { color: var(--text-2); }
.night .news__label { display: block; color: var(--accent); font-size: .8rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; margin-bottom: 4px; }

/* graf */
.night .chartbox { background: var(--panel); box-shadow: none; border-radius: 24px; }
.night .chart .ln-main, .night .chart path.main { stroke: var(--accent); }
.night .chartbox__sum { color: var(--text); }
.night .chartbox h2 { color: var(--text-3); font-size: .85rem; font-weight: 500; font-family: var(--body-font); letter-spacing: 0; }

/* skeleton */
.night .skel--chart { background: var(--panel); opacity: 1; }
.night .skel-head i, .night .skel--list i { background-color: rgba(255, 255, 255, .06); }
.night .skel--list i { background-image: linear-gradient(90deg, transparent 0 62px, rgba(255, 255, 255, .08) 62px 70%, transparent 70%); border-color: rgba(255, 255, 255, .06); }
.night .skel::after { background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .08), transparent); }

/* panely ponúk */
.night .a2hs { border-radius: 22px; }
.night .a2hs__bell, .night .a2hs__ic { background: rgba(255, 210, 31, .14); color: var(--accent); }
.night .a2hs__txt span, .night .a2hs__legal { color: var(--text-3); }
.night .a2hs__x { color: var(--text-3); }
.night .sheet-modal__box, .night .cmodal__box, .night .rsheet__panel { background: var(--panel); color: var(--text); }
.night .steps li { background: var(--glass); }
.night .steps__ic { background: rgba(255, 210, 31, .14); color: var(--accent); }
.night .cmodal__s { color: var(--text-3); }
.night .cmodal__ic--primary { background: rgba(255, 210, 31, .14); color: var(--accent); }
.night .toast { background: rgba(4, 34, 20, .95); border: 1px solid var(--gline); }

/* jazyky, nastavenia */
.night .langs a { color: var(--text-3); }
.night .langs a.on { color: var(--accent-ink); background: var(--accent); border-color: var(--accent); }
.night .langs--big { background: var(--shade); border-radius: 16px; padding: 5px; gap: 6px; }
.night .langs--big a { background: transparent; border: 0; color: var(--text-2); }
.night .langs--big a.on { background: var(--accent); color: var(--accent-ink); }

/* neprihlásený */
.night.is-guest { background: var(--bg) radial-gradient(120% 60% at 50% 0%, var(--hero) 0%, transparent 60%) no-repeat; }
.night .brandhead { color: var(--text); }
.night .foot { color: var(--text-3); }

/* detail nákupu: bloček ostáva papierový, okolie tmavé */
.night .receipt { color: #13283a; }
.night .receipt .muted, .night .receipt__info dt { color: #5d6b77; }
.night .printer__slot { background: linear-gradient(#1b2a22, #0b1410); }
.night .txnav__hint { color: var(--text-3); }
.night .txnav__a { color: var(--link); border-radius: 99px; }
.night .txnav__a.is-off { color: var(--text-3); }
.night .rate__text { color: var(--text-2); }
.night .starpick svg { fill: rgba(255, 255, 255, .14); stroke: rgba(255, 255, 255, .2); }
.night .starpick__lbl.on { color: var(--text); }
.night .stars i { background-color: rgba(255, 255, 255, .16); }
.night .stars i.on { background: var(--accent); }

/* Spolu */
.night .gstat { border: 0; background: var(--hero); }
.night .ring__bg { stroke: rgba(255, 255, 255, .12); }
.night .ring__fg { stroke: var(--accent); }
.night .av { border-color: var(--bg); }
.night .av--own { background: var(--accent); color: var(--accent-ink); }
.night .gm__i { border-top-color: rgba(255, 255, 255, .08); }
.night .gm__i--req { background: rgba(255, 210, 31, .1); }
.night .ctr__bar, .night .rw__bar { background: rgba(255, 255, 255, .08); }
.night .kpi__v--sp { color: #ff8f7a; }
.night .whos { color: var(--text-3); }

/* Spodný pás novej karty pri štítku */
.night .lcard__shared { background: rgba(0, 0, 0, .22); }

/* graf podľa návrhu: žltá čiara, porovnanie svetlé prerušované */
.night .chartbox { padding: 18px; }
.night .chart__line { stroke: var(--accent); stroke-width: 3; }
.night .chart__glow { stroke: var(--accent); opacity: .18; }
.night .chart__stop1 { stop-color: var(--accent); stop-opacity: .22; }
.night .chart__stop2 { stop-color: var(--accent); stop-opacity: 0; }
.night .chart__cmp { stroke: rgba(255, 255, 255, .45); }
.night .chart__dot { fill: var(--accent); stroke: var(--panel); stroke-width: 3; }
.night .chart__grid { stroke: rgba(255, 255, 255, .08); }
.night .chart__ylab, .night .chart__xlab { fill: var(--text-3); }
.night .chartbox__trend { background: var(--shade); color: var(--text-2); }
.night .lg--main::before { background: var(--accent); }
.night .lg--cmp::before { border-color: rgba(255, 255, 255, .45); }
.night .chartbox__legend { color: var(--text-3); }

/* =====================================================================
   DOMOV
   ===================================================================== */
.night .app { display: flex; flex-direction: column; gap: 18px; }
.night .app > * { margin-top: 0; margin-bottom: 0; }
.night .block { margin: 0; }
/* hlavná karta s polkruhom */
.night .hero { position: relative; border-radius: 28px; padding: 22px 20px 20px; background: var(--hero); box-shadow: 0 20px 40px rgba(0, 0, 0, .3); overflow: hidden; }
.night .hero__top { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.night .hero .greet { margin: 0; font-size: .95rem; color: var(--text-2); font-weight: 500; gap: 6px; }
.night .hero .greet__ic { width: 24px; height: 24px; }
.night .hero__no { font-size: .82rem; color: var(--text-2); letter-spacing: .08em; text-decoration: none; }
.night .gauge { position: relative; width: 300px; max-width: 100%; aspect-ratio: 300 / 176; margin: 10px auto 0; }
.night .gauge svg { width: 100%; height: 100%; overflow: visible; }
.night .gauge__ticks { stroke: var(--accent); opacity: .55; }
.night .gauge__bg { stroke: rgba(255, 255, 255, .12); }
.night .gauge__arc { stroke: var(--accent); stroke-dasharray: 100; }
.night .gauge__knob { transform-box: view-box; transform-origin: 150px 150px; }
.night .gauge__knob circle:first-child { fill: #fff6cc; } .night .gauge__knob circle:last-child { fill: var(--accent); }
.night .gauge__num { position: absolute; left: 0; right: 0; top: 36%; text-align: center; }
.night .gauge__pts { display: block; font: 800 4rem/1 var(--brand-font); letter-spacing: -.04em; color: var(--text); }
.night .gauge__lbl { display: block; color: var(--text-2); font-size: .95rem; margin-top: 4px; }
.night .hero__goal { margin-top: 8px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border-radius: 16px; background: var(--shade); }
.night .hero__goal-l { display: block; font-size: .82rem; color: var(--text-2); }
.night .hero__goal strong { font-size: 1.05rem; }
.night .hero__btn { padding: 10px 14px; border-radius: 12px; background: var(--glass-2); color: var(--text); font-weight: 600; font-size: .9rem; text-decoration: none; white-space: nowrap; }
.night .hero__more { display: block; text-align: center; margin-top: 10px; font-size: .82rem; color: var(--text-2); text-decoration: none; }
@media (prefers-reduced-motion: no-preference) {
  .night .gauge__arc { animation: gArc 1.6s cubic-bezier(.2, .8, .2, 1) both; }
  .night .gauge__knob { animation: gKnob 1.6s cubic-bezier(.2, .8, .2, 1) both; }
  .night .gauge__ticks { animation: gTicks 3.2s ease-in-out infinite; }
  .night .gauge__num { animation: rise .9s .3s ease-out both; }
}
@keyframes gArc { from { stroke-dashoffset: 100; } }
@keyframes gKnob { from { transform: rotate(0deg); } }
@keyframes gTicks { 0%, 100% { opacity: .3; } 50% { opacity: .85; } }
/* dlaždice */
.night .tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.night .tile { padding: 16px; border-radius: 20px; background: var(--glass); border: 1px solid rgba(255, 255, 255, .08); color: var(--text); text-decoration: none; display: flex; flex-direction: column; min-height: 86px; }
.night .tile.skel { background: var(--glass); }
.night .tile__l { font-size: .82rem; color: var(--text-3); }
.night .tile__v { font: 700 1.65rem/1.2 var(--brand-font); margin-top: 4px; font-variant-numeric: tabular-nums; }
.night .lazy { margin-top: 0; display: flex; flex-direction: column; gap: 18px; }
.night .lazy > * { margin: 0; }
/* ponuka odmeny (žltá) */
.night .promo { position: relative; display: flex; align-items: center; gap: 14px; padding: 20px; border-radius: 24px; background: var(--accent); color: var(--accent-ink); overflow: hidden; text-decoration: none; }
.night .promo__shine { position: absolute; top: 0; bottom: 0; left: 0; width: 60px; background: rgba(255, 255, 255, .45); transform: translateX(-120%) skewX(-20deg); }
.night .promo__txt { position: relative; flex: 1; min-width: 0; }
.night .promo__tag { display: inline-block; padding: 4px 10px; border-radius: 99px; background: var(--accent-ink); color: var(--accent); font-size: .72rem; font-weight: 700; letter-spacing: .04em; }
.night .promo__name { display: block; font: 800 1.35rem/1.15 var(--brand-font); margin-top: 10px; }
.night .promo__sub { display: block; font-size: .88rem; margin-top: 6px; opacity: .78; }
.night .promo__art { position: relative; width: 130px; height: 120px; flex: none; margin: -10px -12px -10px 0; display: grid; place-items: center; }
.night .promo__disc { position: absolute; width: 112px; height: 112px; border-radius: 50%; background: rgba(255, 255, 255, .38); }
.night .promo__art img { position: relative; width: 120px; height: 120px; object-fit: contain; filter: drop-shadow(0 10px 12px rgba(0, 0, 0, .2)); }
.night .promo__gift { position: relative; width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; background: var(--accent-ink); color: var(--accent); }
.night .promo__gift .ic { width: 32px; height: 32px; }
@media (prefers-reduced-motion: no-preference) {
  .night .promo__shine { animation: shine 4.5s 1s ease-in-out infinite; }
  .night .promo__art img { animation: floaty 4s ease-in-out infinite; }
}
@keyframes shine { from { transform: translateX(-120%) skewX(-20deg); } 40%, to { transform: translateX(620%) skewX(-20deg); } }
@keyframes floaty { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
/* akcie na stanici (bannery) */
.night .offers h2 { font-size: 1.25rem; margin: 0 0 10px; }
.night .offers__track { display: flex; gap: 12px; overflow-x: auto; margin: 0 -20px; padding: 0 20px 4px; scroll-snap-type: x mandatory; scrollbar-width: none; }
.night .offers__track::-webkit-scrollbar { display: none; }
.night .offer { flex: none; width: min(300px, 80vw); border-radius: 24px; background: var(--hero); overflow: hidden; scroll-snap-align: start; color: #fff; text-decoration: none; display: flex; flex-direction: column; }
.night .offer.bgc-def { background: var(--panel); }
.night .offer__art { position: relative; height: 190px; display: grid; place-items: center; overflow: hidden; }
.night .offer.bgc-def .offer__art { height: auto; }
.night .offer__disc { position: absolute; width: 220px; height: 220px; border-radius: 50%; top: 10px; left: 50%; margin-left: -110px; background: rgba(255, 255, 255, .12); }
.night .offer.bgc-def .offer__disc, .night .offer.bgc-def .offer__shadow { display: none; }
.night .offer__shadow { position: absolute; bottom: 8px; left: 50%; width: 180px; height: 14px; margin-left: -90px; border-radius: 50%; background: rgba(0, 0, 0, .35); }
.night .offer__img { position: relative; width: 86%; max-height: 170px; object-fit: contain; }
.night .offer.bgc-def .offer__img { width: 100%; max-height: none; aspect-ratio: 12 / 5; object-fit: cover; }
.night .offer__badge { position: absolute; right: 16%; bottom: 12%; width: 80px; height: 80px; border-radius: 50%; background: var(--accent); color: var(--accent-ink);
  display: grid; place-content: center; text-align: center; font: 800 .95rem/1.05 var(--brand-font); padding: 8px; transform: rotate(-10deg); box-shadow: 0 6px 14px rgba(0, 0, 0, .3); }
.night .offer__txt { padding: 4px 18px 18px; display: flex; flex-direction: column; }
.night .offer.bgc-def .offer__txt { padding-top: 14px; }
.night .offer__txt strong { font: 800 1.2rem/1.2 var(--brand-font); }
.night .offer__txt span { font-size: .88rem; opacity: .85; }
@media (prefers-reduced-motion: no-preference) {
  .night .offer:not(.bgc-def) .offer__img { animation: floaty 4s ease-in-out infinite; }
  .night .offer:not(.bgc-def) .offer__shadow { animation: shadowy 4s ease-in-out infinite; }
}
@keyframes shadowy { 0%, 100% { transform: scaleX(1); opacity: .35; } 50% { transform: scaleX(.82); opacity: .2; } }
/* najbližšia stanica */
.night .near { display: flex; flex-direction: column; gap: 12px; padding: 18px; border-radius: 24px; background: var(--glass); border: 1px solid rgba(255, 255, 255, .08); color: var(--text); text-decoration: none; }
.night .near__head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.night .near__lbl { font-size: .78rem; color: var(--text-3); letter-spacing: .05em; }
.night .near__open { display: inline-flex; align-items: center; gap: 6px; font-size: .82rem; color: var(--link); }
.night .near__open.off { color: #ffb0a3; } .night .near__open.off .live { background: #ff7a65; animation: none; }
.night .live { width: 8px; height: 8px; border-radius: 50%; background: var(--live); }
@media (prefers-reduced-motion: no-preference) { .night .live { animation: livePulse 2s ease-out infinite; } }
@keyframes livePulse { 0% { box-shadow: 0 0 0 0 rgba(47, 208, 122, .6); } 70% { box-shadow: 0 0 0 8px rgba(47, 208, 122, 0); } 100% { box-shadow: 0 0 0 0 rgba(47, 208, 122, 0); } }
.night .near__name { display: block; font: 700 1.25rem var(--brand-font); }
.night .near__addr { display: block; font-size: .88rem; color: var(--text-3); }
.night .near__prices { display: flex; gap: 8px; }
.night .near__prices > span { flex: 1; padding: 10px 12px; border-radius: 14px; background: var(--shade); }
.night .near__prices small { display: block; font-size: .72rem; color: var(--text-3); text-transform: uppercase; }
.night .near__prices b { font-size: 1.1rem; }
.night .near__loc { align-self: flex-start; display: inline-flex; align-items: center; gap: 6px; border: 0; background: none; color: var(--link); font: 600 .88rem var(--body-font); padding: 0; cursor: pointer; }
.night .near__loc .ic { width: 16px; height: 16px; }
.night .near.has-loc .near__loc { display: none; }

/* =====================================================================
   KARTA PRI POKLADNI
   ===================================================================== */
.night .payhead { display: flex; justify-content: space-between; align-items: center; }
.night .payhead h1 { margin: 0; font-size: 1.5rem; }
.night .cards { margin: 0; }
.night .lcard { background: var(--hero); border-radius: 26px; box-shadow: 0 24px 40px rgba(0, 0, 0, .35); }
.night .lcard__deco .a { stroke: var(--accent); }
.night .codebox { background: #fff; border-radius: 26px; padding: 22px 22px 16px; margin-top: 14px; border: 0; color: #0a2a18; }
.night .codebox .barcode { height: 110px; }
.night .codebox__no { display: block; text-align: center; margin-top: 10px; font-weight: 600; letter-spacing: .12em; color: #0a2a18; }
.night .payhint { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-radius: 18px; background: var(--glass); }
.night .payhint .ic { color: var(--accent); flex: none; }
.night .payhint p { margin: 0; font-size: .92rem; color: var(--text-2); line-height: 1.35; }
@media (prefers-reduced-motion: no-preference) { .night .cards__item .lcard { animation: floaty 4s ease-in-out infinite; } }
.night .dots i { background: rgba(255, 255, 255, .25); } .night .dots i.on { background: var(--accent); }
.night .a2hs-row { background: var(--accent); color: var(--accent-ink); border-radius: 18px; }

/* polkruh: 0–100 % po 5 (bez inline štýlov kvôli CSP) */
.night .gauge__arc.g-0 { stroke-dashoffset: 100; } .night .gauge__knob.g-0 { transform: rotate(0deg); }
.night .gauge__arc.g-5 { stroke-dashoffset: 95; } .night .gauge__knob.g-5 { transform: rotate(9deg); }
.night .gauge__arc.g-10 { stroke-dashoffset: 90; } .night .gauge__knob.g-10 { transform: rotate(18deg); }
.night .gauge__arc.g-15 { stroke-dashoffset: 85; } .night .gauge__knob.g-15 { transform: rotate(27deg); }
.night .gauge__arc.g-20 { stroke-dashoffset: 80; } .night .gauge__knob.g-20 { transform: rotate(36deg); }
.night .gauge__arc.g-25 { stroke-dashoffset: 75; } .night .gauge__knob.g-25 { transform: rotate(45deg); }
.night .gauge__arc.g-30 { stroke-dashoffset: 70; } .night .gauge__knob.g-30 { transform: rotate(54deg); }
.night .gauge__arc.g-35 { stroke-dashoffset: 65; } .night .gauge__knob.g-35 { transform: rotate(63deg); }
.night .gauge__arc.g-40 { stroke-dashoffset: 60; } .night .gauge__knob.g-40 { transform: rotate(72deg); }
.night .gauge__arc.g-45 { stroke-dashoffset: 55; } .night .gauge__knob.g-45 { transform: rotate(81deg); }
.night .gauge__arc.g-50 { stroke-dashoffset: 50; } .night .gauge__knob.g-50 { transform: rotate(90deg); }
.night .gauge__arc.g-55 { stroke-dashoffset: 45; } .night .gauge__knob.g-55 { transform: rotate(99deg); }
.night .gauge__arc.g-60 { stroke-dashoffset: 40; } .night .gauge__knob.g-60 { transform: rotate(108deg); }
.night .gauge__arc.g-65 { stroke-dashoffset: 35; } .night .gauge__knob.g-65 { transform: rotate(117deg); }
.night .gauge__arc.g-70 { stroke-dashoffset: 30; } .night .gauge__knob.g-70 { transform: rotate(126deg); }
.night .gauge__arc.g-75 { stroke-dashoffset: 25; } .night .gauge__knob.g-75 { transform: rotate(135deg); }
.night .gauge__arc.g-80 { stroke-dashoffset: 20; } .night .gauge__knob.g-80 { transform: rotate(144deg); }
.night .gauge__arc.g-85 { stroke-dashoffset: 15; } .night .gauge__knob.g-85 { transform: rotate(153deg); }
.night .gauge__arc.g-90 { stroke-dashoffset: 10; } .night .gauge__knob.g-90 { transform: rotate(162deg); }
.night .gauge__arc.g-95 { stroke-dashoffset: 5; } .night .gauge__knob.g-95 { transform: rotate(171deg); }
.night .gauge__arc.g-100 { stroke-dashoffset: 0; } .night .gauge__knob.g-100 { transform: rotate(180deg); }
/* tisíce vo veľkých číslach („1 240“) – medzera v písme Outfit je pri tučnom písme príliš úzka */
.night .gauge__pts, .night .lcard__num, .night .tile__v, .night .kpi__v, .night .stat__v, .night .rw-bal__v, .night .gstat__now strong,
.night .chartbox__sum, .night .promo__name, .night .receipt__sum, .night .rsheet__pts { word-spacing: .2em; }

/* =====================================================================
   ODMENY
   ===================================================================== */
.night .rw-head { margin: 4px 0 0; align-items: center; }
.night .rw-head .h1 { font-size: 1.9rem; margin: 0; }
.night .rw-head p { color: var(--text-3); font-size: .95rem; }
.night .rw-ring { position: relative; width: 84px; height: 84px; flex: none; }
.night .rw-ring svg { transform: rotate(-90deg); }
.night .rw-ring__v { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; }
.night .rw-ring__v strong { font: 800 1.35rem/1 var(--brand-font); }
.night .rw-ring__v small { font-size: .7rem; color: var(--text-2); }
.night .rw-tools { margin: 0; }
.night .rw-how { border-radius: 20px; }
.night .rw-how summary { color: var(--accent); }
.night .rw-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.night .rw { background: var(--panel); border: 0; border-radius: 24px; box-shadow: none; }
.night .rw--can { box-shadow: none; }
.night .rw__img { aspect-ratio: auto; height: 150px; background: var(--hero); overflow: hidden; }
.night .rw__img img { position: relative; z-index: 1; width: 78%; height: 78%; padding: 0; object-fit: contain; filter: drop-shadow(0 10px 10px rgba(0, 0, 0, .28)); }
.night .rw__disc { position: absolute; width: 130px; height: 130px; border-radius: 50%; top: 18px; left: 50%; margin-left: -65px; background: rgba(255, 255, 255, .14); }
.night .rw__shadow { position: absolute; bottom: 12px; left: 50%; width: 110px; height: 12px; margin-left: -55px; border-radius: 50%; background: rgba(0, 0, 0, .3); }
.night .rw__ph { position: relative; z-index: 1; background: var(--accent); color: var(--accent-ink); }
.night .rw__ok { z-index: 2; background: var(--accent); color: var(--accent-ink); left: 10px; top: 10px; }
.night .rw__body { padding: 12px 14px 16px; }
.night .rw__group { color: var(--text-3); }
.night .rw__name { font-size: 1.05rem; }
.night .rw__price { color: var(--accent); font-size: 1.05rem; }
.night .rw--can .rw__price { color: var(--accent); }
.night .rw__miss { color: var(--text-3); }
/* farba pozadia obrázka podľa skupiny tovaru */
.night .rwc-0 .rw__img { background: #e8541e; } .night .rwc-1 .rw__img { background: #1e5ba8; } .night .rwc-2 .rw__img { background: #8e44ad; }
.night .rwc-3 .rw__img { background: #16a085; } .night .rwc-4 .rw__img { background: #c0392b; } .night .rwc-5 .rw__img { background: #d68910; }
/* veľká odmena navrchu (žltá) */
.night .rw--feat { grid-column: 1 / -1; background: var(--accent); color: var(--accent-ink); border-radius: 28px; }
.night .rw--feat .rw__img { height: 230px; background: transparent; }
.night .rw--feat .rw__disc { width: 250px; height: 250px; top: 22px; margin-left: -125px; background: rgba(255, 255, 255, .35); }
.night .rw--feat .rw__img img { width: 72%; height: 86%; }
.night .rw--feat .rw__ok { background: var(--accent-ink); color: var(--accent); top: 16px; left: 16px; padding: 6px 12px; }
.night .rw--feat .rw__body { padding: 4px 20px 20px; display: grid; grid-template-columns: 1fr auto; column-gap: 12px; align-items: end; }
.night .rw--feat .rw__group { color: rgba(10, 42, 24, .7); grid-column: 1; }
.night .rw--feat .rw__name { font: 800 1.35rem/1.15 var(--brand-font); grid-column: 1; }
.night .rw--feat .rw__price { color: var(--accent-ink); grid-column: 1; padding-top: 4px; }
.night .rw--feat .rw__bar { grid-column: 1; background: rgba(10, 42, 24, .15); } .night .rw--feat .rw__miss { grid-column: 1; color: rgba(10, 42, 24, .7); }
.night .rw__pick { grid-column: 2; grid-row: 1 / span 4; align-self: end; height: 48px; padding: 0 20px; border-radius: 16px; background: var(--accent-ink); color: var(--accent);
  display: grid; place-items: center; font-weight: 700; }
@media (prefers-reduced-motion: no-preference) {
  .night .rw__img img { animation: floaty 4s ease-in-out infinite; }
  .night .rw:nth-child(even) .rw__img img { animation-delay: -2s; }
  .night .rw__shadow { animation: shadowy 4s ease-in-out infinite; }
}
/* karta odmeny (panel) */
.night .rsheet__img { background: var(--hero); }
.night .rsheet__pts { background: rgba(255, 210, 31, .16); color: var(--accent); }
.night .rsheet__state.ok { color: var(--link); } .night .rsheet__state.miss { color: #ff9a87; }
.night .rsheet__steps li { background: var(--glass); }
.night .rsheet__steps li > span { background: var(--accent); color: var(--accent-ink); }
.night .rsheet__same { background: rgba(255, 210, 31, .12); color: var(--text-2); }
.night .rsheet__same .ic { color: var(--accent); }
.night .rsheet__code { background: #fff; color: #0a2a18; border: 0; }
.night .rsheet__hint { color: #11613a; }
.night .rsheet__x { background: var(--glass-2); color: var(--text); }
.night .rsheet__grab { background: rgba(255, 255, 255, .2); }
.night .rsheet__desc, .night .rsheet__body .rw__group { color: var(--text-3); }

/* =====================================================================
   STANICE
   ===================================================================== */
.night .hello { margin: 4px 0 0; }
.night .hello .h1 { font-size: 1.9rem; margin: 0; }
.night .hello p { margin: 2px 0 0; color: var(--text-3); }
.night .mapbox { border-radius: 24px; overflow: hidden; box-shadow: none; border: 0; }
.night .leaflet-control-zoom a { background: #fff; color: #0a2a18; }
.night .mapbox--sm { border-radius: 18px; }
.night .stlist { display: grid; gap: 12px; }
.night .st { background: var(--panel); border: 0; border-radius: 24px; padding: 18px; color: var(--text); }
.night .stlist .st:not([hidden]):first-child, .night .st--hl { background: var(--hero); }
.night .st__name { font-size: 1.3rem; margin: 0; }
.night .st__dist { background: var(--shade); color: var(--text-2); }
.night .st__addr { color: var(--text-2); }
.night .st__open.on { color: var(--link); font-weight: 600; } .night .st__open.off { color: #ff9a87; font-weight: 600; }
.night .st__open::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: currentColor; margin-right: 8px; vertical-align: 1px; }
.night .st__hours { color: var(--text-2); font-weight: 400; }
.night .st__prices { display: block; border-radius: 16px; background: var(--shade); padding: 4px 14px; margin: 12px 0; }
.night .price { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 9px 0; background: none; border: 0; border-radius: 0; }
.night .price + .price { border-top: 1px solid rgba(255, 255, 255, .08); }
.night .price__n { font-size: .95rem; color: var(--text); }
.night .price__r { display: inline-flex; align-items: center; gap: 8px; }
.night .price__v { font: 700 1.05rem var(--brand-font); color: var(--text); }
.night .price__tag { padding: 2px 8px; border-radius: 8px; background: var(--accent); color: var(--accent-ink); font-size: .68rem; font-weight: 700; letter-spacing: .02em; }
.night .st__foot { align-items: center; }
.night .st__svc { color: var(--text-3); }
.night .st__actions { display: flex; gap: 8px; align-items: center; }
.night .st__nav { height: 46px; padding: 0 18px; border-radius: 16px; min-height: 0; }
.night .st__nav .ic { width: 18px; height: 18px; }
.night .st .iconbtn { width: 46px; height: 46px; border-radius: 16px; }
.night .chips--filter { margin: 0 -16px; padding: 0 16px; }
.night .filter-empty { color: var(--text-3); }

/* =====================================================================
   VIAC
   ===================================================================== */
.night .profilehead { display: flex; align-items: center; gap: 16px; padding: 18px; border-radius: 26px; background: var(--hero); margin: 4px 0 0; }
.night .profilehead .h1 { font-size: 1.5rem; margin: 0; }
.night .profilehead .muted { color: var(--text-2); margin: 0; }
.night .profilehead__badge { display: inline-flex; margin-top: 8px; padding: 4px 10px; border-radius: 99px; background: var(--shade); font-size: .8rem; color: var(--text-2); }
.night .avatar--ring { position: relative; width: 72px; height: 72px; flex: none; background: none; border: 0; box-shadow: none; }
.night .avatar--ring svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.night .avatar--ring circle { fill: none; stroke: var(--accent); stroke-width: 2.5; stroke-dasharray: 5 6; }
.night .avatar--ring span { position: absolute; inset: 8px; border-radius: 28px; background: var(--accent); color: var(--accent-ink); display: grid; place-items: center; font: 800 1.35rem var(--brand-font); }
@media (prefers-reduced-motion: no-preference) { .night .avatar--ring svg { animation: spin 18s linear infinite; } }
.night .logout .btn { background: transparent; border: 1px solid var(--gline); }
.night .about { color: var(--text-3); }
.night .langpanel h2 { font-size: 1.05rem; }

/* bloček = papier: pôvodné svetlé farby (tmavá téma sa ho netýka) */
.night .receipt { --ink: #0d3524; --muted: #5d6f65; --line: #dbe4dd; --primary-l: #e6f2ec; --paper: #f2f5f1; color: var(--ink); }
.night .receipt .pts { background: var(--primary-l); color: var(--primary); padding: 2px 8px; border-radius: 99px; }
.night .receipt__pts .pts { background: var(--accent); color: #0a2a18; padding: 4px 12px; }
.night .receipt .it__q { background: var(--paper); border-color: var(--line); color: var(--muted); }
.night .receipt .it__q--fuel { color: #3b6f9e; background: #eef4fa; border-color: #d6e4f1; }
.night .receipt .it__n, .night .receipt .ri__name { color: var(--ink); }
.night .receipt .av { border-color: #fff; }
/* drobnosti */
.night .chip--primary { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); font-weight: 700; }
.night .chip--primary .ic { color: var(--accent-ink); }
.night .rw-ring__v strong { font-size: 1.15rem; }
.night .rw--feat .rw__ph { width: 88px; height: 88px; background: var(--accent-ink); color: var(--accent); }
.night .rw--feat .rw__ph .ic { width: 40px; height: 40px; }
.night .stat__v { font-size: 1.3rem; }

/* =====================================================================
   ADMIN – svetlý, ale v rovnakej farebnej schéme (tmavozelená lišta, žlté akcenty, písmo Outfit)
   ===================================================================== */
.is-admin { --brand-font: "Outfit", system-ui, sans-serif; --body-font: "Outfit", system-ui, -apple-system, "Segoe UI", sans-serif; font-family: var(--body-font); }
.is-admin .adm-top { background: var(--bg, #06301c); }
.is-admin .adm-tabs a.on { background: var(--accent); color: var(--accent-ink, #0a2a18); }
.is-admin .kpi__v { color: var(--hero, var(--primary)); }
.is-admin .adm-user__av { background: var(--accent); color: var(--accent-ink, #0a2a18); }
.is-admin .chartbox { background: var(--bg, #06301c); }
.is-admin .chart__line { stroke: var(--accent); }
.is-admin .chart__dot { fill: var(--accent); }
/* náhľad aplikácie vo Vzhľade */
.lp2 { max-width: 300px; margin: 0 auto; border-radius: 30px; overflow: hidden; border: 6px solid #111; background: var(--bg); color: var(--text); position: relative; font-family: "Outfit", system-ui, sans-serif; }
.lp2__top { display: flex; align-items: center; gap: 6px; padding: 10px 12px; }
.lp2__top img { height: 18px; width: auto; } .lp2__sp { flex: 1; }
.lp2 .tbtn, .lp2 .tavatar { width: 30px; height: 30px; font-size: .7rem; } .lp2 .tbtn .ic { width: 14px; height: 14px; }
.lp2__body { padding: 4px 12px 96px; display: grid; gap: 10px; }
.lp2__hero { padding: 14px; border-radius: 20px; }
.lp2 .gauge { width: 210px; }
.lp2 .gauge__pts { font-size: 2.6rem; } .lp2 .gauge__lbl { font-size: .75rem; }
.lp2 .hero .greet, .lp2 .hero__no { font-size: .72rem; }
.lp2 .hero__goal { padding: 8px 10px; } .lp2 .hero__goal strong { font-size: .82rem; } .lp2 .hero__goal-l { font-size: .66rem; } .lp2 .hero__btn { padding: 6px 10px; font-size: .72rem; }
.lp2 .tile { padding: 10px; min-height: 0; border-radius: 14px; } .lp2 .tile__v { font-size: 1.1rem; } .lp2 .tile__l { font-size: .66rem; }
.lp2 .promo { padding: 12px; border-radius: 16px; } .lp2 .promo__name { font-size: 1rem; margin-top: 6px; } .lp2 .promo__tag { font-size: .58rem; }
.lp2 .btn { min-height: 40px; font-size: .85rem; }
.lp2__tab { position: absolute; left: 8px; right: 8px; bottom: 8px; height: 56px; border-radius: 20px; display: grid; grid-template-columns: repeat(5, 1fr); align-items: center;
  background: var(--bg-nav); border: 1px solid var(--gline); }
.lp2__tab a { display: flex; flex-direction: column; align-items: center; gap: 2px; font-size: .58rem; color: var(--text-3); }
.lp2__tab a .ic { width: 16px; height: 16px; } .lp2__tab a.on { color: var(--accent); }
.lp2__tab .tabbar__fab { margin-top: -26px; } .lp2 .fab { width: 44px; height: 44px; border-width: 3px; } .lp2 .fab .ic { width: 18px !important; height: 18px !important; }
.check--sm { margin-top: 4px; font-size: .78rem; } .check--sm input { width: 16px; height: 16px; }
/* náhľad bannera v Novinkách */
.np-offer { max-width: 260px; }
.np-offer.night { background: transparent; }
.np-offer .offer { width: 100%; }
.np-offer .np-noimg { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 4px; color: rgba(255, 255, 255, .7); }
.np-offer .offer__art { height: 150px; } .np-offer .offer__badge { width: 64px; height: 64px; font-size: .75rem; }
/* karta bez signálu */
.night .offcard .codebox { background: #fff; }
.night .offcard .lcard { margin: 6px 0 0; }

/* opravy z telefónu: nič nesmie byť širšie ako displej, nadpis mesiaca tmavý */
html:has(body.night), body.night { overflow-x: clip; }
.night .app > *, .night .lazy > * { min-width: 0; max-width: 100%; }
.night .tx, .night .tx__a, .night .tx__main { min-width: 0; }
.night .tx__main { overflow: hidden; }
.night .tx__items, .night .tx__items li { min-width: 0; max-width: 100%; }
.night .month { background: var(--bg); color: var(--text-3); box-shadow: none; border: 0; padding-left: 4px; }
.night .stats { gap: 10px; }
.night .stat { padding: 14px 12px; min-width: 0; }
.night .stat__v { font-size: 1.15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.night .hero__no { font-size: .82rem; letter-spacing: .04em; white-space: nowrap; }
.night .month { top: calc(64px + var(--safe-t)); }
.night .tile__v { font-size: 1.45rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.is-admin .admact { position: relative; display: inline-block; }
.is-admin .admact summary { list-style: none; cursor: pointer; } .is-admin .admact summary::-webkit-details-marker { display: none; }
.is-admin .admact__box { position: absolute; right: 0; top: calc(100% + 6px); z-index: 20; width: 260px; display: grid; gap: 8px; padding: 14px; text-align: left;
  background: #fff; border: 1px solid var(--line); border-radius: 16px; box-shadow: 0 16px 40px rgba(0, 0, 0, .18); }
.is-admin tr.is-off td { opacity: .55; }
/* admin → Značka, E-maily */
.is-admin .brandprev { padding: 22px; border-radius: 16px; background: var(--bg, #06301c); display: grid; place-items: center; margin-bottom: 10px; }
.is-admin .brandprev img { max-height: 56px; max-width: 100%; }
.is-admin .iconprev { display: inline-flex; flex-direction: column; align-items: center; gap: 6px; padding: 16px 22px; border-radius: 16px; background: var(--bg, #06301c); color: #fff; font-size: .8rem; margin-bottom: 10px; }
.is-admin .iconprev img { border-radius: 18px; box-shadow: 0 6px 14px rgba(0, 0, 0, .3); }
.is-admin .stack { display: grid; gap: 16px; align-content: start; }
.adm-grid--mails { grid-template-columns: 260px minmax(0, 1fr) minmax(0, 1fr); align-items: start; }
@media (max-width: 1200px) { .adm-grid--mails { grid-template-columns: 1fr 1fr; } .adm-grid--mails .mlist { grid-column: 1 / -1; display: flex; flex-wrap: wrap; } }
@media (max-width: 760px) { .adm-grid--mails { grid-template-columns: 1fr; } }
.is-admin .mlist { padding: 8px; display: grid; gap: 2px; }
.is-admin .mlist__i { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 12px; color: var(--ink); text-decoration: none; font-size: .9rem; }
.is-admin .mlist__i .ic { width: 18px; height: 18px; color: var(--muted); flex: none; }
.is-admin .mlist__i span:not(.tag) { flex: 1; }
.is-admin .mlist__i:hover { background: var(--paper); }
.is-admin .mlist__i.on { background: var(--bg, #06301c); color: #fff; } .is-admin .mlist__i.on .ic { color: var(--accent); }
.is-admin .mtest { display: grid; grid-template-columns: 1fr auto; gap: 8px; align-items: end; border-top: 1px solid var(--line); padding-top: 14px; margin-top: 14px; }
.is-admin .mprev__frame { width: 100%; height: 560px; border: 0; border-radius: 14px; background: #eef2ef; }
.is-admin .mprev h2 small { font-weight: 400; font-size: .8rem; }

/* =====================================================================
   POHYBLIVÉ POZADIE (ako v návrhu) – farby z --accent a --hero, takže sa mení s admin → Vzhľad
   ===================================================================== */
.bgfx { display: none; }
.night .bgfx { display: block; position: fixed; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.night .bgfx__ring { position: absolute; width: 520px; height: 520px; left: 50%; top: -190px; margin-left: -325px; opacity: .16; }
.night .bgfx__ring circle { stroke: var(--accent); }
.night .bgfx__ring--2 { width: 380px; height: 380px; top: auto; left: auto; right: -170px; bottom: 60px; margin: 0; opacity: .1; }
.night .bgfx__glow { position: absolute; width: 520px; height: 520px; left: -160px; top: 30%; border-radius: 50%;
  background: radial-gradient(circle, var(--hero) 0%, transparent 65%); opacity: .55; }
.night .bgfx__glow--2 { left: auto; right: -220px; top: -120px; width: 460px; height: 460px; opacity: .35; background: radial-gradient(circle, var(--accent) 0%, transparent 62%); filter: saturate(.8); }
.night.is-guest .bgfx__glow--2 { opacity: .22; }
@media (min-width: 700px) { .night .bgfx__ring { width: 760px; height: 760px; margin-left: -470px; top: -300px; } }
@media (prefers-reduced-motion: no-preference) {
  .night .bgfx__ring { animation: rk-rot 80s linear infinite; }
  .night .bgfx__ring--2 { animation: rk-rot 120s linear infinite reverse; }
  .night .bgfx__glow { animation: rk-drift 26s ease-in-out infinite alternate; }
  .night .bgfx__glow--2 { animation: rk-drift2 34s ease-in-out infinite alternate; }
}
@keyframes rk-rot { to { transform: rotate(360deg); } }
@keyframes rk-drift { 0% { transform: translate(0, 0) scale(1); } 50% { transform: translate(120px, -80px) scale(1.15); } 100% { transform: translate(40px, 140px) scale(.95); } }
@keyframes rk-drift2 { 0% { transform: translate(0, 0); } 100% { transform: translate(-90px, 120px) scale(1.1); } }
/* panely a hlavička nad pozadím */
.night .topbar { background: color-mix(in srgb, var(--bg) 70%, transparent); }

/* =====================================================================
   RÝCHLE PREPÍNANIE: stránka pripravená vopred čaká s animáciami; obsah sa posúva podľa smeru
   ===================================================================== */
.is-prerender *, .is-prerender *::before, .is-prerender *::after { animation-play-state: paused !important; }


/* spodné menu: neaktívne položky čisto biele, aktívna v doplnkovej farbe */
.night .tabbar a { color: #fff; }
.night .tabbar a .ic { color: #fff; }
.night .tabbar a.on, .night .tabbar a.on .ic { color: var(--accent); }
.night .tabbar__fab { color: #fff !important; }
/* pozdrav: horizont jemne biely (slnko a mesiac majú vlastné farby) */
.night .greet__ic { color: rgba(255, 255, 255, .6); }

/* bez úvodných animácií (návrat na stránku, príchod prechodom z inej stránky aplikácie): stránka je hneď hotová, nič nebliká.
   Nepretržité efekty (pozadie, vznášanie obrázkov, odlesk, laser, živá bodka, blikanie tlačidla Karta) bežia ďalej.
   Bloček je výnimka: tlačiareň ako celok nenabieha (prichádza s prechodom), ale tlač bločku a nádrž vnútri sa prehrajú. */
.is-revisit main.app > *, .is-revisit .lazy.is-in > *, .is-revisit .gauge__arc, .is-revisit .gauge__knob, .is-revisit .gauge__num,
.is-revisit .cards__item, .is-revisit .lcard, .is-revisit .codebox, .is-revisit .tile, .is-revisit .stat, .is-revisit .kpi, .is-revisit .panel,
.is-revisit .news, .is-revisit .price, .is-revisit .tx, .is-revisit .st, .is-revisit .rw, .is-revisit .rw__ok, .is-revisit .rw__bar i,
.is-revisit .menu__i, .is-revisit .offer, .is-revisit .promo, .is-revisit .near, .is-revisit .txmap, .is-revisit .alert, .is-revisit .a2hs,
.is-revisit .bigicon, .is-revisit .pts:not(.receipt .pts), .is-revisit .chart__line, .is-revisit .chart__glow, .is-revisit .chart__area,
.is-revisit .chart__cmp, .is-revisit .chart__dot, .is-revisit .chartbox__trend, .is-revisit .ring__fg, .is-revisit .ctr__bar i, .is-revisit .mpin,
.is-revisit .mpin span, .is-revisit .gintro__art .av, .is-revisit .avs .av, .is-revisit .gintro__card, .is-revisit .g-rise, .is-revisit .g-set,
.is-revisit .tabbar a.on .ic, .is-revisit .profilehead, .is-revisit .hero, .is-revisit .gstat { animation: none !important; }
.is-revisit .chart__line, .is-revisit .chart__glow { stroke-dashoffset: 0 !important; }
.is-revisit .cards__item .lcard { animation: floaty 4s ease-in-out infinite !important; }

/* =====================================================================
   PLYNULÉ PREPÍNANIE: podklad v menu, odchod obsahu, pásik priebehu, odozva dotyku
   ===================================================================== */
/* pásik priebehu: tenký, v doplnkovej farbe, iba pri pomalšom načítaní (JS ho pridá po 0,28 s) */
body.night.navigating::after { height: 3px; top: env(safe-area-inset-top, 0px); background: linear-gradient(90deg, transparent, var(--accent), transparent);
  background-size: 45% 100%; background-repeat: no-repeat; animation: navBar .9s linear infinite; box-shadow: 0 0 10px color-mix(in srgb, var(--accent) 60%, transparent); }
/* odozva dotyku: jemné stlačenie */
.night a, .night button, .night label { -webkit-tap-highlight-color: transparent; }
@media (hover: none) {
  .night .tile:active, .night .tx:active, .night .menu__i:active, .night .rw:active, .night .st:active, .night .promo:active, .night .offer:active,
  .night .near:active, .night .hero__btn:active, .night .btn:active, .night .chip:active, .night .iconbtn:active, .night .tbtn:active,
  .night .tavatar:active, .night .txnav__a:active, .night .codebox:active { transform: scale(.97); transition: transform .08s; }
  .night .tabbar a:not(.tabbar__fab):active .ic { transform: scale(.82); }
  .night .tabbar__fab:active .fab { transform: scale(.9); transition: transform .08s; }
}


/* =====================================================================
   PREPÍNANIE STRÁNOK – jeden súvislý, mäkký pohyb
   1) po ťuknutí: obsah sa pomaly stlmí a posunie (0,6 s, dlhý mäkký nábeh)
   2) príde nová stránka: stará dobehne do stratena, nová priplynie z malej vzdialenosti s jemným dobehom
   Bez naťahovania obsahu (geometria sa neanimuje), bez druhej animácie navrch; hlavička, menu a pozadie stoja.
   ===================================================================== */
/* podklad v spodnom menu – okolo ikony aj nápisu */
.night .tabbar__pill { position: absolute; left: 0; top: 7px; bottom: 7px; width: 64px; border-radius: 18px; pointer-events: none; z-index: 0; opacity: 0;
  background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 22%, transparent), color-mix(in srgb, var(--accent) 9%, transparent));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 38%, transparent), 0 6px 18px -6px color-mix(in srgb, var(--accent) 45%, transparent);
  transition: transform .55s cubic-bezier(.22, 1, .36, 1), width .45s cubic-bezier(.22, 1, .36, 1), opacity .3s ease; }
.night .tabbar__pill.is-on { opacity: 1; }
.night .tabbar__pill.no-anim { transition: none; }
.night .tabbar > a { position: relative; z-index: 1; transition: color .35s ease; }
.night .tabbar a .ic { transition: transform .35s cubic-bezier(.22, 1, .36, 1); }
.night .tabbar a.just-on .ic { animation: tabPop .6s cubic-bezier(.22, 1.4, .36, 1); }
@keyframes tabPop { 0% { transform: translateY(0) scale(1); } 35% { transform: translateY(-3px) scale(1.12); } 100% { transform: none; } }

@media (prefers-reduced-motion: no-preference) {
  /* 1) odchod po ťuknutí: cez obsah sa jemne roztiahne závoj vo farbe pozadia (hlavička a menu ostávajú jasné) */
  html.is-leaving body.night main.app { pointer-events: none; }
  /* 2) príchod novej stránky (View Transitions: Chrome/Edge, Safari 18.2+) */
  @view-transition { navigation: auto; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none; }          /* pozadie je rovnaké – žiadne prelínanie */
  .night main.app { view-transition-name: page; }
  .night .bgfx { view-transition-name: bgfx; }
  ::view-transition-group(bgfx), ::view-transition-old(bgfx), ::view-transition-new(bgfx) { animation: none; }
  ::view-transition-old(bgfx) { display: none; }
  ::view-transition-group(page) { animation: none; }                                      /* nenaťahovať obsah medzi výškami stránok */
  ::view-transition-old(page), ::view-transition-new(page) { height: auto; object-fit: none; object-position: top; mix-blend-mode: normal; }
  ::view-transition-old(page) { animation: vtOld .42s cubic-bezier(.4, 0, .2, 1) both; }
  ::view-transition-new(page) { animation: vtNew .7s cubic-bezier(.22, 1, .36, 1) both; }
  /* závoj z odchodu plynulo dobehne (na novej stránke je priehľadný) */
  .night .veil { view-transition-name: veil; }
  ::view-transition-group(veil) { animation-duration: .6s; }
  ::view-transition-old(veil) { animation: vtOld .6s cubic-bezier(.4, 0, .2, 1) both; }
  ::view-transition-new(veil) { animation: none; }
  html:active-view-transition-type(fwd)::view-transition-old(page) { animation-name: vtOldFwd; }
  html:active-view-transition-type(fwd)::view-transition-new(page) { animation-name: vtNewFwd; }
  html:active-view-transition-type(back)::view-transition-old(page) { animation-name: vtOldBack; }
  html:active-view-transition-type(back)::view-transition-new(page) { animation-name: vtNewBack; }
  /* počas príchodu sekcie nenabiehajú ešte raz zdola */
  html.vt-nav main.app > * { animation: none !important; }

  /* prehliadače bez prechodov medzi stránkami (staršie Safari): aspoň mäkké objavenie */
  html.no-vt.is-entering body.night main.app { animation: vtNew .55s cubic-bezier(.22, 1, .36, 1) both; }
}
@keyframes vtOld { to { opacity: 0; } }
@keyframes vtNew { from { opacity: 0; transform: translateY(8px); } }
@keyframes vtOldFwd { to { opacity: 0; transform: translateX(-56px) scale(.98); } }
@keyframes vtNewFwd { from { opacity: 0; transform: translateX(44px); } }
@keyframes vtOldBack { to { opacity: 0; transform: translateX(56px) scale(.98); } }
@keyframes vtNewBack { from { opacity: 0; transform: translateX(-44px); } }
@media (prefers-reduced-motion: reduce) {
  .night .tabbar__pill, .night .tabbar a .ic { transition: none; }
  .night .tabbar a.just-on .ic { animation: none; }
}

/* závoj pri odchode: pod hlavičkou a menu, nad obsahom; po ťuknutí sa pomaly roztiahne */
.veil { display: none; }
.night .veil { display: block; position: fixed; inset: 0; z-index: 20; pointer-events: none; opacity: 0;
  background: radial-gradient(120% 80% at 50% 40%, color-mix(in srgb, var(--bg) 55%, transparent), color-mix(in srgb, var(--bg) 85%, transparent));
  transition: opacity .55s cubic-bezier(.22, 1, .36, 1); }
html.is-leaving .night .veil { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .night .veil { transition: none; } }

/* =====================================================================
   NAČÍTAVANIE NA SPODNOM MENU: po ťuknutí obieha okolo záložky svetelná čiara (doplnková farba z adminu)
   ===================================================================== */
@property --spin { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
.night .tabbar__pill::before, .night .fab::before { content: ""; position: absolute; inset: -1.5px; border-radius: inherit; padding: 2.5px; opacity: 0; pointer-events: none;
  background: conic-gradient(from var(--spin), transparent 0 45%, color-mix(in srgb, var(--accent) 45%, transparent) 62%, var(--accent) 84%, #fff 90%, var(--accent) 94%, transparent 98%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; transition: opacity .3s ease; }
.night .fab { position: relative; }
.night .fab::before { inset: -5px; padding: 3px; }
html.is-leaving .night .tabbar__pill::before, html.is-leaving .night .tabbar__fab.on .fab::before { opacity: 1; animation: navSpin 1.1s linear infinite, navGlow 1.1s ease-in-out infinite; }
@keyframes navSpin { to { --spin: 360deg; } }
@keyframes navGlow { 50% { filter: drop-shadow(0 0 6px color-mix(in srgb, var(--accent) 70%, transparent)); } }
/* horný pásik priebehu – tiež v doplnkovej farbe */
body.night.navigating::after { background: linear-gradient(90deg, transparent, var(--accent), transparent); background-size: 45% 100%; background-repeat: no-repeat; }
@media (prefers-reduced-motion: reduce) { html.is-leaving .night .tabbar__pill::before, html.is-leaving .night .tabbar__fab.on .fab::before { animation: none; } }

/* =====================================================================
   ZVONČEK – upozornenia
   ===================================================================== */
.night .tbtn__dot:not(:empty) { width: auto; min-width: 18px; height: 18px; top: 4px; right: 2px; padding: 0 5px; border-radius: 9px; display: grid; place-items: center;
  font: 700 .66rem/1 var(--brand-font); color: var(--accent-ink); border-width: 2px; }
.night .inbox { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.night .inbox__i a { position: relative; display: flex; gap: 12px; padding: 14px 16px; border-radius: 20px; background: var(--glass); border: 1px solid rgba(255, 255, 255, .08); color: var(--text); text-decoration: none; }
.night .inbox__i.is-new a { background: var(--panel); border-color: color-mix(in srgb, var(--accent) 35%, transparent); }
.night .inbox__ic { flex: none; width: 40px; height: 40px; border-radius: 14px; display: grid; place-items: center; background: rgba(255, 210, 31, .14); color: var(--accent); }
.night .inbox__t { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.night .inbox__t strong { font-size: 1rem; } .night .inbox__t span { color: var(--text-2); font-size: .9rem; line-height: 1.35; } .night .inbox__t small { color: var(--text-3); font-size: .78rem; margin-top: 2px; }
.night .inbox__dot { position: absolute; top: 16px; right: 16px; width: 9px; height: 9px; border-radius: 50%; background: var(--accent); }
.night .menu--one { display: block; text-decoration: none; }
.night .switch--row { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 12px; font-weight: 600; }
.night .geopanel h2 { margin: 0 0 4px; }

/* admin → Notifikácie: diagnostika */
.is-admin .pdiag__list { list-style: none; margin: 0 0 12px; padding: 0; display: grid; gap: 6px; }
.is-admin .pdiag__list li { display: grid; gap: 2px; padding: 8px 10px; border-radius: 10px; font-size: .85rem; background: #f3f7f4; border-left: 4px solid #2fa36b; }
.is-admin .pdiag__list li.bad { background: #fdf1ef; border-left-color: #d9534f; }
.is-admin .pdiag__form { display: grid; gap: 8px; margin-bottom: 8px; }
.is-admin .tbl--mini { margin-top: 12px; font-size: .82rem; } .is-admin .tbl--mini small.bad, .is-admin td.bad { color: #c0392b; }

/* skúšobné upozornenie – výsledok */
.night .pushtest { margin: 8px 0 0; padding: 10px 12px; border-radius: 12px; font-size: .86rem; line-height: 1.4; background: var(--glass); color: var(--text-2); }
.night .pushtest.is-ok { background: rgba(47, 208, 122, .12); color: #bdf3d5; } .night .pushtest.is-bad { background: rgba(255, 110, 90, .12); color: #ffc2b8; }

/* 0 bodov: pás polkruhu aj krúžku úplne prázdny (zaoblený koniec čiary by inak nakreslil bodku) */
.gauge__arc.g-0, .ring__fg.pc-0 { opacity: 0; }
.is-admin .ibxadm__f { margin-top: 8px; }
.is-admin .ibxadm__f--old { display: grid; grid-template-columns: 1fr auto; gap: 8px; align-items: end; }
