/* telos-v2.css — skonsolidowany styl szablonu Telos ID (port z elementy-bazowe-v12)
   + warstwa animacji impeccable v2. Generowane: bin/build-telos-v2-css.mjs. NIE edytowac recznie.
   Uzywane przez renderer panelu traffic-overview-v3 (nowy styl), telos.css zostaje dla v2. */

/* ===== telos-css (z v12) ===== */
/* ============================================================
   telos.css — kanon design systemu paneli (skopiowany 1:1
   z public/assets/telos.css). Zmiany robimy w panelu + re-ekstrakcja.
   ============================================================ */
:root{
  --brand-green:#1eb88a; --brand-green-dark:#17946e; --brand-green-text:#117657;
  --brand-green-light:#e8f8f2; --brand-green-soft:#cfeadd;
  --k-views:#1eb88a; --k-views-soft:#e8f8f2; --k-users:#0ea5b7; --k-users-soft:#cffafe;
  --k-sessions:#0d8c6b; --k-sessions-soft:#d1f0e2; --k-gsc:#d97706; --k-gsc-soft:#fef3c7;
  --up:#047857; --up-soft:#d1fae5; --down:#b91c1c; --down-soft:#fee2e2; --flat:#6b7280; --flat-soft:#f1f3f5;
  --s-up:#10b981; --s-up-soft:#d1fae5; --s-down:#ef4444; --s-down-soft:#fee2e2;
  --s-star:#8b5cf6; --s-star-soft:#ede9fe; --s-ai:#b45309; --s-ai-soft:#fef3c7;
  --text-dark:#1a1a1a; --text-medium:#444; --text-light:#666; --text-muted:#999;
  --border-light:#e3e6e9; --border-soft:#eef0f2; --bg-page:#f5f7f6; --bg-card:#fff; --bg-soft:#fafbfa;
  --status-success:#27ae60; --status-error:#e74c3c;
  --shadow-card:0 1px 2px rgba(20,40,30,.04), 0 4px 16px rgba(20,40,30,.06);
  --shadow-card-hover:0 4px 8px rgba(20,40,30,.07), 0 12px 32px rgba(20,40,30,.10);
  --soc-fb:#1877F2; --soc-fb-bg:rgba(24,119,242,.07); --soc-fb-border:rgba(24,119,242,.18);
  --soc-ig:#DC2743; --soc-ig-bg:rgba(220,39,67,.07); --soc-ig-border:rgba(220,39,67,.18);
  --soc-x:#0f1419; --soc-x-bg:rgba(0,0,0,.045); --soc-x-border:rgba(0,0,0,.16);
  --soc-yt:#FF0000; --soc-li:#0A66C2;
  --radius-sm:8px; --radius-md:12px; --radius-lg:16px; --radius-pill:999px; --nav-h:54px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
html,body{font-family:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;color:var(--text-dark);background:var(--bg-page);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--brand-green-text);text-decoration:none}
a:hover{color:var(--brand-green-dark)}
button{font-family:inherit;cursor:pointer;border:0;background:transparent}
:focus-visible{outline:2px solid var(--brand-green);outline-offset:2px;border-radius:6px}

/* TOP BAR */
.topbar{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:16px 22px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:22px;box-shadow:var(--shadow-card);margin-bottom:12px;position:relative;overflow:hidden}
.topbar::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--brand-green) 0%, var(--brand-green-dark) 100%)}
.client-mark{display:flex;align-items:center;gap:12px;min-width:0}
.client-mark img{height:42px;width:auto;display:block;flex-shrink:0}
.client-mark .client-name{font-size:13px;color:var(--text-light);line-height:1.3;min-width:0}
.client-mark .client-name strong{display:block;font-size:15px;color:var(--text-dark);font-weight:600;letter-spacing:-.005em}
.datepicker{justify-self:center;display:inline-flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--border-light);border-radius:var(--radius-pill);padding:9px 16px;font-size:13.5px;font-weight:500;color:var(--text-dark);cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.03);transition:all .15s ease}
.datepicker:hover{border-color:var(--brand-green);box-shadow:0 0 0 3px var(--brand-green-light)}
.datepicker svg{width:15px;height:15px;color:var(--brand-green-dark);flex-shrink:0}
.datepicker .arrow{color:var(--text-muted);font-size:10px;margin-left:4px}
.realizacja{justify-self:end;display:flex;align-items:center;gap:12px}

/* DATEPICKER MENU */
.dp{position:relative}
.dp-menu{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#fff;border:1px solid var(--border-light);border-radius:14px;box-shadow:var(--shadow-card-hover);padding:13px 15px;width:440px;max-width:92vw;z-index:90;display:none}
.dp-menu.open{display:block}
.dp-grp{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);margin:0 0 6px}
.dp-row{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.dp-chip{padding:7px 13px;border:1px solid var(--border-light);border-radius:var(--radius-pill);font-size:12.5px;font-weight:600;color:var(--text-dark);white-space:nowrap;transition:all .14s ease;cursor:pointer}
.dp-chip:hover{border-color:var(--brand-green);background:var(--brand-green-light);color:var(--brand-green-dark)}
.dp-chip.on{background:linear-gradient(135deg,var(--brand-green),var(--brand-green-dark));color:#fff;border-color:transparent;box-shadow:0 2px 8px rgba(23,148,110,.26)}
.dp-note{font-size:11px;color:var(--text-light);font-weight:500;text-align:center;line-height:1.4;max-width:380px;margin:8px auto 0}
.dp-note b{color:var(--text-medium);font-weight:600}
.dp-note .dp-vs{color:var(--brand-green-dark);font-weight:700}
.dp-custom{display:flex;align-items:flex-end;gap:9px;flex-wrap:wrap}
.dp-custom label{display:flex;flex-direction:column;gap:3px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted)}
.dp-custom input[type=date]{font-family:inherit;font-size:12px;border:1px solid var(--border-light);border-radius:8px;padding:6px 9px;color:var(--text-dark)}
.dp-go{background:linear-gradient(135deg,var(--brand-green),var(--brand-green-dark));color:#fff;font-weight:600;font-size:12.5px;border-radius:8px;padding:8px 14px;cursor:pointer;border:none}

/* STICKY ANCHOR NAV */
.anchor-nav{background:rgba(255,255,255,.92);border:1px solid var(--border-light);border-radius:var(--radius-pill);box-shadow:var(--shadow-card);backdrop-filter:saturate(180%) blur(10px);display:flex;align-items:center;gap:6px;padding:7px 10px;overflow-x:auto;scrollbar-width:none}
.anchor-nav::-webkit-scrollbar{display:none}
.anchor-nav .nav-brand{display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 8px;font-size:12px;font-weight:700;color:var(--text-dark);white-space:nowrap;flex-shrink:0;border-right:1px solid var(--border-soft);margin-right:4px}
.anchor-link{padding:8px 14px;border-radius:var(--radius-pill);font-size:12.5px;font-weight:600;color:var(--text-light);white-space:nowrap;flex-shrink:0;transition:all .16s ease;position:relative;cursor:pointer}
.anchor-link:hover{color:var(--brand-green-dark);background:var(--brand-green-light)}
.anchor-link.active{color:#fff;background:linear-gradient(135deg,var(--brand-green) 0%, var(--brand-green-dark) 100%);box-shadow:0 2px 8px rgba(23,148,110,.26)}

/* TITLE BLOCK */
.title-block{text-align:center;padding:12px 0 22px}
.title-block h1{font-size:26px;font-weight:700;color:var(--text-dark);margin-bottom:8px;letter-spacing:-.012em}
.title-block .source{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text-light)}
.title-block .source img{height:16px;width:auto}

/* SECTION HEAD */
.section-head{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;margin:8px 0 18px;padding-bottom:14px;border-bottom:1px solid var(--border-light);position:relative}
.section-head::after{content:"";position:absolute;left:0;bottom:-1px;width:54px;height:2px;background:var(--sec-accent,var(--brand-green))}
.section-head .sh-num{font-size:46px;font-weight:800;color:var(--sec-accent,var(--brand-green));line-height:.82;letter-spacing:-.04em;font-variant-numeric:tabular-nums;opacity:.92}
.section-head .sh-text{min-width:0}
.section-head .sh-text h2{font-size:23px;font-weight:700;color:var(--sec-accent,var(--brand-green));letter-spacing:-.015em;line-height:1.12}
.section-head .sh-text .sh-sub{display:block;font-size:13px;color:var(--text-light);font-weight:500;margin-top:4px}
.sh-id{display:flex;align-items:center;gap:9px;color:var(--sec-accent,var(--brand-green))}
.sh-id .sh-live{font-family:'Roboto Mono',monospace;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;opacity:.78}
.sh-id .sh-path{display:inline-flex;align-items:center;gap:5px}
.sh-id .sh-path i{width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg)}
.sh-id .sh-path i:nth-child(1){opacity:.28}.sh-id .sh-path i:nth-child(2){opacity:.55}.sh-id .sh-path i:nth-child(3){opacity:.85}
.sh-id .sh-dot{position:relative;width:9px;height:9px;border-radius:50%;background:currentColor;margin-left:3px;flex-shrink:0}
.sh-id .sh-dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:currentColor;animation:shPing 2s cubic-bezier(0,0,.2,1) infinite}
@keyframes shPing{0%{transform:scale(1);opacity:.5}70%,100%{transform:scale(2.7);opacity:0}}

/* GRID */
.grid{display:grid;gap:16px}
.grid.row-hero{grid-template-columns:repeat(4,1fr)}
.grid.row-tables{grid-template-columns:1fr 1fr}
.grid.row-sources{grid-template-columns:1fr 1fr 1fr}
.grid.row-gsc-kpi{grid-template-columns:repeat(4,1fr)}
.grid.row-ai-detail{grid-template-columns:1fr 1.25fr}

/* CARD */
.card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:14px;padding:18px;box-shadow:var(--shadow-card);position:relative;overflow:hidden;transition:box-shadow .22s ease,transform .22s ease}
.card:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}
.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.card-head .card-title{font-size:13px;font-weight:600;color:var(--text-dark);line-height:1.35;letter-spacing:-.005em;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.source-tag{display:inline-flex;align-items:center;font-size:9.5px;background:var(--brand-green-light);color:var(--brand-green-text);padding:3px 8px;border-radius:5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.source-tag.gsc{background:#fef3c7;color:#92400e}
.source-tag.ai{background:#ede9fe;color:#6d28d9}

/* KPI */
.kpi{background:var(--bg-card);border:1px solid var(--border-light);border-radius:14px;padding:18px;box-shadow:var(--shadow-card);position:relative;overflow:hidden;display:flex;flex-direction:column;gap:8px;min-height:154px;transition:box-shadow .22s ease,transform .22s ease}
.kpi:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}
.kpi-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:2px}
.kpi-head .kpi-title{font-size:13px;font-weight:700;color:var(--text-dark);text-transform:uppercase;letter-spacing:.4px;line-height:1.2}
.kpi-head .kpi-icon{width:30px;height:30px;border-radius:8px;background:var(--kpi-soft);color:currentColor;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .2s ease}
.kpi:hover .kpi-head .kpi-icon{transform:scale(1.08)}
.kpi-head .kpi-icon svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.kpi-value{font-size:32px;font-weight:700;color:var(--text-dark);line-height:1;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.kpi.views .kpi-value{color:var(--k-views)}
.kpi-spark{margin-top:auto;height:46px}
.kpi.views{color:var(--k-views);--kpi-soft:var(--k-views-soft)}
.kpi.users{color:var(--k-users);--kpi-soft:var(--k-users-soft)}
.kpi.sessions{color:var(--k-sessions);--kpi-soft:var(--k-sessions-soft)}
.kpi.gsc{color:var(--k-gsc);--kpi-soft:var(--k-gsc-soft)}
.kpi .delta-pill{align-self:flex-start;font-size:12px}

/* DELTA PILL */
.delta-pill{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.2;white-space:nowrap}
.delta-pill svg{display:none!important}
.delta-pill.up{color:var(--up)}
.delta-pill.down{color:var(--down)}
.delta-pill.flat{color:var(--flat)}
.delta-pill .vs{font-weight:500;color:var(--text-muted);margin-left:3px}
.delta-pill.up::before,.delta-pill.down::before{content:"";display:inline-block;width:12px;height:14px;flex:0 0 auto;background:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-mode:alpha;mask-mode:alpha}
.delta-pill.up::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 26'><g fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 9 L12 4 L20 9'/><path d='M4 16 L12 11 L20 16' opacity='0.6'/><path d='M4 23 L12 18 L20 23' opacity='0.3'/></g></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 26'><g fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 9 L12 4 L20 9'/><path d='M4 16 L12 11 L20 16' opacity='0.6'/><path d='M4 23 L12 18 L20 23' opacity='0.3'/></g></svg>")}
.delta-pill.down::before{-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 26'><g fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 17 L12 22 L20 17'/><path d='M4 10 L12 15 L20 10' opacity='0.6'/><path d='M4 3 L12 8 L20 3' opacity='0.3'/></g></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 26'><g fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 17 L12 22 L20 17'/><path d='M4 10 L12 15 L20 10' opacity='0.6'/><path d='M4 3 L12 8 L20 3' opacity='0.3'/></g></svg>")}

/* CHART CARD */
.chart-card{display:flex;flex-direction:column;min-height:280px}
.chart-card .chart-wrap{flex:1;position:relative;min-height:210px}
.chart-card.tall{min-height:340px}
.chart-card.tall .chart-wrap{min-height:280px}

/* TABLE */
.tbl-card{padding:0;overflow:hidden}
.tbl-card .card-head{padding:16px 20px 10px;margin-bottom:0}
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:13px;min-width:0}
table thead{background:var(--bg-soft)}
table th{text-align:left;font-weight:600;font-size:10.5px;color:var(--text-light);text-transform:uppercase;letter-spacing:.5px;padding:10px 16px;border-bottom:1px solid var(--border-light);white-space:nowrap}
table th.num,table th.dlt{text-align:right}
table td{padding:11px 16px;border-bottom:1px solid var(--border-soft);font-size:13px;color:var(--text-dark);vertical-align:middle;line-height:1.4}
table tr:last-child td{border-bottom:none}
table tbody tr{transition:background .12s ease}
/* zebra (port z audyt-seo-news-4media .report-table) — parzyste wiersze lekko tonowane
   = lepsza skanowalnosc dlugich tabel na desktopie. Subtelnie, w odcieniu marki. */
table tbody tr:nth-child(even) td{background:#f6faf8}
table tr:hover td{background:var(--brand-green-light)}
table td.idx{color:var(--text-muted);font-weight:600;width:30px;font-variant-numeric:tabular-nums;text-align:right}
table td.num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:var(--text-dark);white-space:nowrap;width:1%}
table td.dlt{text-align:right;width:1%;white-space:nowrap}
table td.share{text-align:right;font-variant-numeric:tabular-nums;font-size:11.5px;color:var(--text-medium);width:74px;white-space:nowrap}
/* udzial sklejony z liczba sesji w jednej komorce (.num) — z separatorem „·" */
.num-share{color:var(--text-medium);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.num-share::before{content:"·";color:var(--text-muted);margin:0 5px;font-weight:700}
table td.title-cell{font-size:13px;line-height:1.4}
table td.title-cell .title-link{color:var(--text-dark);text-decoration:none;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;transition:color .15s ease}
table td.title-cell .title-link:hover{color:var(--brand-green-dark);text-decoration:underline;text-underline-offset:3px}
table td.title-cell .title-link::after{content:" ↗";color:var(--text-muted);font-size:10px;opacity:0;transition:opacity .15s ease}
table td.title-cell .title-link:hover::after{opacity:1}
table td.title-cell.no-link{color:var(--text-muted);font-style:italic}
table td.url-cell{font-family:'Roboto Mono','SF Mono',ui-monospace,monospace;font-size:11.5px;line-height:1.4}
table td.url-cell .url-link{color:var(--text-medium);text-decoration:none;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all;transition:color .15s ease}
table td.url-cell .url-link:hover{color:var(--brand-green-dark);text-decoration:underline;text-underline-offset:3px}
table td.country-cell{display:flex;align-items:center;gap:10px}
table td.country-cell .fi{width:22px;height:16px;border-radius:2px;flex-shrink:0;box-shadow:0 0 0 1px rgba(0,0,0,.08);background-size:cover}
table td.country-cell .country-name{font-weight:500}
table td.country-cell .country-other-icon{width:22px;height:16px;border-radius:2px;background:#f0f0f0;display:inline-flex;align-items:center;justify-content:center;font-size:11px}
.srt{display:inline-block;width:9px;height:7px;margin-left:5px;vertical-align:middle;fill:none;stroke:var(--brand-green-dark);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}

/* DONUT */
.donut-card{display:flex;flex-direction:column}
/* WAZNE: kontener wykresu Chart.js MUSI byc blokiem position:relative z definowana
   wysokoscia — NIE flex (flex + responsywny canvas = petla rozrostu, canvas wyjezdza
   poza viewport / nie laduje sie za 1. razem). Canvas wypelnia kontener. */
.donut-wrap{position:relative;height:220px;width:100%;overflow:hidden}
.donut-wrap canvas{display:block;max-width:100%}
.donut-legend{margin-top:12px;display:grid;grid-template-columns:1fr;gap:6px;font-size:12px}
.donut-legend .li{display:flex;align-items:center;gap:8px;color:var(--text-medium);min-width:0;padding:3px 0}
.donut-legend .li .dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.donut-legend .li .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.donut-legend .li .pct{font-weight:600;color:var(--text-dark);font-variant-numeric:tabular-nums}

/* SEGMENTY */
.seg-list{display:flex;flex-direction:column;gap:15px;margin-top:2px}
.seg-v{display:flex;flex-direction:column;gap:5px}
.seg-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.seg-v-top{display:flex;align-items:center;gap:8px}
.seg-v-name{font-size:12.5px;font-weight:600;color:var(--text-dark);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seg-v-pct{font-size:14px;font-weight:700;color:var(--text-dark);font-variant-numeric:tabular-nums}
.seg-v-bar{height:7px;background:var(--border-soft);border-radius:99px;overflow:hidden}
.seg-v-bar>div{height:100%;border-radius:99px;transition:width .8s cubic-bezier(.16,.84,.44,1)}
.seg-v-bot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.seg-v-sess{font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums}

/* KONTYNENTY */
.cont-card{padding:18px}
.cont-layout{display:grid;grid-template-columns:280px 1fr;gap:28px;align-items:center}
.cont-donut .donut-wrap{height:200px}
.cont-right{display:flex;flex-direction:column;gap:16px}
.cont-list{display:flex;flex-direction:column;gap:14px}
.cont-row{display:grid;grid-template-columns:170px 1fr auto;gap:14px;align-items:center}
.cont-row .cont-head{display:flex;align-items:center;gap:9px;min-width:0}
.cont-row .cont-dot{width:12px;height:12px;border-radius:4px;flex-shrink:0}
.cont-row .cont-name{font-size:13.5px;font-weight:600;color:var(--text-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cont-row .cont-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#b45309;background:#fef3c7;padding:2px 6px;border-radius:4px;flex-shrink:0}
.cont-bar{height:9px;background:var(--border-soft);border-radius:99px;overflow:hidden;position:relative}
.cont-bar-fill{height:100%;border-radius:99px;transition:width .8s cubic-bezier(.16,.84,.44,1)}
.cont-row .cont-vals{display:flex;align-items:baseline;gap:8px;white-space:nowrap;justify-content:flex-end;min-width:96px}
.cont-row .cont-pct{font-size:15px;font-weight:700;color:var(--text-dark);font-variant-numeric:tabular-nums}
.cont-row .cont-sess{font-size:11.5px;color:var(--text-muted);font-variant-numeric:tabular-nums}
.cont-alert{display:flex;align-items:center;gap:10px;padding:11px 14px;background:#fffbeb;border:1px solid #fde68a;border-radius:var(--radius-md);font-size:12.5px;color:#92400e;line-height:1.4}
.cont-alert svg{width:18px;height:18px;color:#d97706;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.cont-alert strong{font-weight:700;color:#b45309}
/* note-card — blok interpretacyjny/kontekstowy (port .note-block z audyt-seo-news-4media,
   adaptacja BEZ kreski z lewej: ikona + tlo). Warianty: info (zielony), neutral (szary). */
.note-card{display:flex;align-items:flex-start;gap:11px;padding:13px 16px;border-radius:var(--radius-md);font-size:13px;line-height:1.5;border:1px solid;color:var(--text-medium)}
.note-card svg{width:18px;height:18px;flex-shrink:0;margin-top:1px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.note-card strong{font-weight:700;color:var(--text-dark)}
.note-card.info{background:var(--brand-green-light);border-color:var(--brand-green-soft)}
.note-card.info svg{color:var(--brand-green-dark)}
.note-card.info strong{color:var(--brand-green-text)}
.note-card.neutral{background:var(--bg-soft);border-color:var(--border-light)}
.note-card.neutral svg{color:var(--text-light)}
.cont-tag{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:600;color:var(--text-medium);white-space:nowrap}
.cont-tag::before{content:"";width:8px;height:8px;border-radius:3px;background:var(--c);flex-shrink:0}

/* GEO SPLIT */
.geo-bottom{display:grid;grid-template-columns:330px 1fr;gap:14px;align-items:start}
.geo-split{display:flex;flex-direction:column;gap:14px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:14px;padding:18px;box-shadow:var(--shadow-card);transition:box-shadow .22s ease}
.geo-split:hover{box-shadow:var(--shadow-card-hover)}
.geo-split-card{display:flex;align-items:center;gap:14px;min-width:0}
.geo-split-icon{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.geo-split-card.pl .geo-split-icon{background:var(--brand-green-light)}
.geo-split-card.pl .geo-split-icon .fi{width:32px;height:23px;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.08)}
.geo-split-card.out .geo-split-icon{background:#fef3c7}
.geo-split-card.out .geo-split-icon svg{width:24px;height:24px;stroke:#b45309;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.geo-split-body{min-width:0}
.geo-split-label{font-size:11.5px;font-weight:600;color:var(--text-light);text-transform:uppercase;letter-spacing:.5px}
.geo-split-value{font-size:26px;font-weight:800;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:9px;margin-top:5px;flex-wrap:wrap}
.geo-split-card.pl .geo-split-value{color:var(--brand-green-dark)}
.geo-split-card.out .geo-split-value{color:#b45309}
.geo-split-sess{font-size:12px;font-weight:500;color:var(--text-muted);letter-spacing:0}
.geo-split-bar{width:100%;height:12px;border-radius:99px;overflow:hidden;display:flex;box-shadow:inset 0 0 0 1px rgba(0,0,0,.03)}
.geo-split-bar-pl{background:linear-gradient(90deg,var(--brand-green),var(--brand-green-dark));height:100%}
.geo-split-bar-out{background:linear-gradient(90deg,#f59e0b,#d97706);height:100%}

/* KARTY AI */
.ai-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.ai-card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:14px;padding:16px;position:relative;overflow:hidden;display:flex;flex-direction:column;gap:10px;min-height:156px;transition:all .22s ease}
.ai-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-card-hover)}
.ai-card::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:currentColor;opacity:.9}
.ai-card.chatgpt{color:#10A37F;background:linear-gradient(135deg,rgba(16,163,127,.08) 0%, #fff 62%);border-color:rgba(16,163,127,.2)}
.ai-card.perplexity{color:#20808D;background:linear-gradient(135deg,rgba(32,128,141,.08) 0%, #fff 62%);border-color:rgba(32,128,141,.2)}
.ai-card.gemini{color:#1C69FF;background:linear-gradient(135deg,rgba(28,105,255,.07) 0%, #fff 62%);border-color:rgba(28,105,255,.2)}
.ai-card.claude{color:#D97757;background:linear-gradient(135deg,rgba(217,119,87,.09) 0%, #fff 62%);border-color:rgba(217,119,87,.22)}
.ai-card.muted{background:var(--bg-soft);color:#94a3b8}
.ai-card.muted::before{opacity:.3;background:#cbd5e1}
.ai-head{display:flex;align-items:center;gap:12px}
.ai-icon{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:currentColor;flex-shrink:0;transition:transform .2s ease;box-shadow:0 2px 6px rgba(0,0,0,.08)}
.ai-card:hover .ai-icon{transform:scale(1.08) rotate(-3deg)}
.ai-icon svg{width:22px;height:22px;fill:#fff}
.ai-card.muted .ai-icon{background:#94a3b8;box-shadow:none}
.ai-name{font-size:16px;font-weight:700;color:var(--text-dark);letter-spacing:-.01em}
.ai-card.muted .ai-name{color:var(--text-light)}
.ai-value{font-size:30px;font-weight:800;color:var(--text-dark);line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.ai-card.muted .ai-value{color:var(--text-muted);font-weight:700}
.ai-meta{font-size:11.5px;color:var(--text-light);font-weight:500}
.ai-share-bar{height:6px;background:var(--border-soft);border-radius:99px;overflow:hidden;margin-top:auto}
.ai-share-fill{height:100%;background:currentColor;border-radius:99px;transition:width .9s cubic-bezier(.16,.84,.44,1)}
.ai-muted-tag{font-size:11px;color:var(--text-muted);font-style:italic;margin-top:auto}

/* PODSUMOWANIE / SYGNAŁY */
.summary{margin:8px 0 12px;background:var(--bg-soft);border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:14px 18px}
.summary-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.summary-eyebrow{font-size:10.5px;font-weight:700;color:var(--text-light);text-transform:uppercase;letter-spacing:1.1px;display:inline-flex;align-items:center;gap:8px}
.summary-eyebrow svg{width:13px;height:13px;color:var(--brand-green);stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.summary-meta{font-size:10.5px;color:var(--text-muted);margin-left:auto;font-style:italic}
.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.signal{background:var(--bg-card);border:1px solid var(--border-light);border-radius:11px;padding:13px 15px;display:flex;flex-direction:column;gap:5px;min-height:100px;position:relative;overflow:hidden;transition:box-shadow .18s ease,transform .18s ease}
.signal::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:currentColor;opacity:.9}
.signal:hover{box-shadow:0 6px 18px rgba(0,0,0,.07);transform:translateY(-2px)}
.signal-row{display:flex;align-items:center;gap:8px}
.signal-icon{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;background:currentColor;flex-shrink:0}
.signal-icon svg{width:14px;height:14px;stroke:#fff;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.signal.star .signal-icon svg{fill:#fff;stroke:none}
.signal-label{font-size:10.5px;font-weight:700;color:var(--text-light);text-transform:uppercase;letter-spacing:.7px}
.signal-value{font-size:13.5px;font-weight:700;color:var(--text-dark);line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.signal-delta{margin-top:auto}
.signal-delta .delta-pill{font-size:11.5px}
.signal-delta small{font-weight:500;color:var(--text-muted);margin-left:6px;font-size:10.5px}
.signal.up{color:var(--s-up);background:linear-gradient(135deg,var(--s-up-soft) 0%, #fff 64%);border-color:rgba(16,185,129,.28)}
.signal.down{color:var(--s-down);background:linear-gradient(135deg,var(--s-down-soft) 0%, #fff 64%);border-color:rgba(239,68,68,.28)}
.signal.star{color:var(--s-star);background:linear-gradient(135deg,var(--s-star-soft) 0%, #fff 64%);border-color:rgba(139,92,246,.26)}
.signal.ai{color:var(--s-ai);background:linear-gradient(135deg,var(--s-ai-soft) 0%, #fff 64%);border-color:rgba(180,83,9,.24)}
.signal.up .signal-value,.signal.down .signal-value{color:var(--text-dark)}

/* SOCIAL */
.soc-grid-active{display:grid;gap:14px;grid-template-columns:repeat(4,1fr)}
.soc-card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:14px;padding:16px;position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:148px;transition:all .22s ease}
.soc-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-card-hover)}
.soc-card::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:currentColor;opacity:.85}
.soc-card .soc-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;position:relative;z-index:1}
.soc-card .soc-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:#fff;color:currentColor;flex-shrink:0;box-shadow:0 1px 2px rgba(0,0,0,.06);transition:transform .2s ease}
.soc-card:hover .soc-icon{transform:scale(1.08) rotate(-3deg)}
.soc-card .soc-icon svg{width:18px;height:18px;fill:currentColor}
.soc-card .soc-name{font-size:12.5px;font-weight:600;color:var(--text-dark);line-height:1.2;flex:1;min-width:0}
.soc-card .soc-name small{display:block;font-size:10.5px;color:var(--text-muted);font-weight:500;margin-top:2px;letter-spacing:.2px}
.soc-card .badge-paid{font-size:9.5px;font-weight:700;background:#fff;color:currentColor;padding:2px 7px;border-radius:5px;border:1px solid currentColor;letter-spacing:.5px;text-transform:uppercase;flex-shrink:0}
.soc-card .soc-value{font-size:26px;font-weight:700;color:var(--text-dark);line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;position:relative;z-index:1;margin-bottom:6px}
.soc-card .soc-spark{margin-top:auto;height:34px;position:relative;z-index:1}
.soc-card.fb{color:var(--soc-fb);background:linear-gradient(135deg,var(--soc-fb-bg) 0%, #fff 60%);border-color:var(--soc-fb-border)}
.soc-card.ig{color:var(--soc-ig);background:linear-gradient(135deg,var(--soc-ig-bg) 0%, #fff 60%);border-color:var(--soc-ig-border)}
.soc-card.ig::before{background:linear-gradient(90deg,#f09433 0%,#e6683c 25%,#dc2743 50%,#cc2366 75%,#bc1888 100%)}
.soc-card.ig .soc-icon{background:linear-gradient(135deg,#f09433 0%,#e6683c 25%,#dc2743 50%,#cc2366 75%,#bc1888 100%);color:#fff}
.soc-card.x{color:var(--soc-x);background:linear-gradient(135deg,var(--soc-x-bg) 0%, #fff 60%);border-color:var(--soc-x-border)}
.soc-card.x .soc-icon{background:#000;color:#fff}
.soc-empty-row{padding:12px 18px;background:var(--bg-soft);border:1px dashed var(--border-light);border-radius:var(--radius-md);display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.soc-empty-label{font-size:11.5px;font-weight:600;color:var(--text-light);text-transform:uppercase;letter-spacing:.7px;display:inline-flex;align-items:center;gap:8px}
.soc-empty-label::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--text-muted)}
.soc-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;background:#fff;border:1px solid var(--border-light);border-radius:var(--radius-pill);font-size:11.5px;font-weight:600;color:var(--text-medium);transition:all .16s ease}
.soc-chip:hover{border-color:currentColor;transform:translateY(-1px)}
.soc-chip.tt{color:#0f1419}.soc-chip.yt{color:var(--soc-yt)}.soc-chip.li{color:var(--soc-li)}
.soc-chip .soc-chip-icon{width:18px;height:18px;border-radius:5px;display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}
.soc-chip .soc-chip-icon svg{width:11px;height:11px;fill:currentColor}
.soc-chip.tt .soc-chip-icon{background:#000}
.soc-chip.yt .soc-chip-icon{background:var(--soc-yt)}
.soc-chip.li .soc-chip-icon{background:var(--soc-li)}

/* MINI KPI (v6 — „blok danych" bez kreski z lewej. KOLOR per metryka + IKONA w rogu
   (zamiast cyfry) = od razu widac co jest czym. Niski kafel hugujacy tresc, duza liczba,
   delta po prawej od liczby. Wzorzec .stat z audyt-seo-news-4media. */
.mini-kpi{--mk-accent:var(--k-gsc);background:var(--bg-card);border:1px solid var(--border-light);border-radius:12px;padding:13px 15px;position:relative;overflow:hidden;display:flex;flex-direction:column;gap:7px;transition:box-shadow .2s ease,transform .2s ease}
.mini-kpi:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}
.mini-kpi .mk-title{font-size:11px;font-weight:700;color:var(--text-medium);text-transform:uppercase;letter-spacing:.6px;display:flex;align-items:center;gap:7px}
.mini-kpi .mk-title .mk-dot{width:8px;height:8px;border-radius:50%;background:var(--mk-accent);flex-shrink:0}
.mini-kpi .mk-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.mini-kpi .mk-value{font-size:33px;font-weight:800;color:var(--text-dark);line-height:1;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.mini-kpi .mk-row .delta-pill{font-size:13px}
/* ikona-znak metryki w prawym dolnym rogu (kolor akcentu, subtelna) */
.mini-kpi .mk-ico{position:absolute;right:11px;bottom:9px;width:30px;height:30px;color:var(--mk-accent);opacity:.22;pointer-events:none}
.mini-kpi .mk-ico svg{width:100%;height:100%;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
/* kolory per metryka */
.mini-kpi.mk-clicks{--mk-accent:#1eb88a}
.mini-kpi.mk-impr{--mk-accent:#0ea5b7}
.mini-kpi.mk-ctr{--mk-accent:#8b5cf6}
.mini-kpi.mk-pos{--mk-accent:#d97706}

/* FOOTER */
.footer{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden;position:relative}
.footer::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--brand-green) 0%, var(--brand-green-dark) 100%)}
.footer-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 0.8fr;gap:28px;padding:26px 28px 22px}
.footer-col{display:flex;flex-direction:column;gap:10px;min-width:0}
.footer-label{font-size:10.5px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:1.2px;margin-bottom:4px}
.footer-realiz-row{display:flex;align-items:center;gap:11px;flex-wrap:nowrap}
/* logotyp Telos w stopce = klikalny link do telos.rewizja.net (z UTM panelu) */
a.ft-logo-link{text-decoration:none;color:inherit;width:fit-content;transition:transform .18s ease}
a.ft-logo-link:hover .ft-word{color:var(--brand-green-dark)}
a.ft-logo-link:hover .tsyg{transform:scale(1.05)}
a.ft-logo-link .tsyg{transition:transform .18s ease}
.footer-realiz-row .realiz-text{display:inline-flex;align-items:center;min-width:0}
.footer-realiz-row .tsyg{width:32px;height:32px;flex-shrink:0}
.footer-realiz-row .ft-word{font-size:24px;font-weight:800;letter-spacing:-.022em;color:var(--text-dark);line-height:1;flex-shrink:0}
.footer-realiz-row .ft-div{width:1px;height:26px;background:var(--border-light);flex-shrink:0}
.footer-realiz-row .realiz-text strong{font-size:9.5px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);font-family:'Roboto Mono',monospace;display:block;line-height:1.3}
.footer-realiz-row .realiz-text small{font-size:11.5px;color:var(--text-light);display:block;margin-top:3px}
.footer-note{font-size:12px;color:var(--text-light);line-height:1.5;margin-top:6px}
.footer-contact{display:flex;flex-direction:column;gap:6px}
.footer-contact .ct-row{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-medium)}
.footer-contact .ct-row svg{width:13px;height:13px;color:var(--brand-green-dark);flex-shrink:0;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.footer-contact .ct-row a{color:var(--text-medium);font-weight:500}
.footer-meta{display:flex;flex-direction:column;gap:0}
.footer-meta-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;justify-content:center;padding:8px 0;border-bottom:1px solid var(--border-soft);min-width:0}
.footer-meta-item:last-child{border-bottom:0}
.footer-meta-item .fm-label{font-size:11.5px;color:var(--text-light);font-weight:500;flex-shrink:0}
.footer-meta-item .fm-value{font-size:12.5px;font-weight:600;color:var(--text-dark);font-variant-numeric:tabular-nums;display:inline-flex;align-items:center;gap:6px;text-align:left}
.footer-meta-item .fm-value .dot-live{width:7px;height:7px;border-radius:50%;background:var(--status-success);box-shadow:0 0 0 3px rgba(39,174,96,.18);animation:pulse 2.4s ease-in-out infinite}
.footer-meta-item .fm-value .badge-ver{background:var(--brand-green-light);color:var(--brand-green-text);padding:2px 8px;border-radius:5px;font-size:11px;font-weight:700;letter-spacing:.2px}
@keyframes pulse{0%,100%{box-shadow:0 0 0 3px rgba(39,174,96,.18)}50%{box-shadow:0 0 0 6px rgba(39,174,96,.06)}}
.footer-bottom{padding:14px 28px;background:var(--bg-soft);border-top:1px solid var(--border-soft);display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--text-muted);flex-wrap:wrap;gap:8px}
.footer-legal{display:inline-flex;align-items:center;gap:9px}
.footer-legal a{color:var(--text-light);font-weight:600}
.footer-legal a:hover{color:var(--brand-green-dark);text-decoration:underline;text-underline-offset:2px}
.footer-legal .sep{color:var(--border-light)}

/* TO TOP */
.to-top-demo{position:static;width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,var(--brand-green),var(--brand-green-dark));color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 20px rgba(23,148,110,.32);transition:all .25s ease}
.to-top-demo:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(23,148,110,.4)}
.to-top-demo svg{width:18px;height:18px;stroke:#fff;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}

/* SYGNET ID */
.tsyg{display:block;color:var(--brand-green)}
.tsyg .cv{fill:none;stroke:currentColor;stroke-width:2.9;stroke-linecap:round;stroke-linejoin:round}
.tsyg .dt{fill:currentColor}
.telos-mark{display:flex;flex-direction:row;align-items:center;gap:12px}
.telos-mark .tsyg{width:34px;height:34px;flex-shrink:0}
.telos-mark .telos-word{font-size:27px;font-weight:800;letter-spacing:-.022em;line-height:1;color:var(--text-dark)}
.telos-mark .telos-div{width:1px;height:26px;background:var(--border-light);flex-shrink:0}
.telos-mark .telos-mark-tx{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25;font-family:'Roboto Mono',monospace}
.telos-mark .telos-by{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted)}
.telos-mark .telos-rw{font-size:12px;color:var(--text-light);font-weight:500}

/* ===== rwd-v2 (z v12) ===== */
/* ============================================================
   TELOS RWD v2 — warstwa telefon-first czytelnosci.
   Cel: na telefonie/tablecie kazdy NOSNY podpis >=12px, mniej
   czystych ozdobnikow, liczby duze, tabele jako karty.
   Docelowo te reguly trafia do @media w public/assets/telos.css.
   ============================================================ */

/* --- 1. SZKIELET: zwijanie chrome na mobile (czego kit nie mial) --- */
@media (max-width:768px){
  .topbar{grid-template-columns:1fr;gap:13px;text-align:center;padding:14px}
  .client-mark{justify-content:center}
  .dp,.datepicker{justify-self:center}
  .realizacja{justify-self:center;justify-content:center}
  .telos-mark{justify-content:center;flex-wrap:wrap}
  .section-head{grid-template-columns:auto 1fr;gap:14px;margin:8px 0 16px}
  .section-head .sh-num{font-size:36px}
  .section-head .sh-text h2{font-size:20px}
  .footer-grid{grid-template-columns:1fr;gap:22px;padding:22px}
  .anchor-nav .nav-brand{display:none}
  .dp-menu{width:min(440px,92vw)}
}

/* --- 2. OZDOBNIKI precz na waskim ekranie (dekoracja, nie dane) --- */
@media (max-width:768px){
  .sh-id{display:none}          /* sciezka + ping = ornament ID */
  .summary-meta{display:none}   /* meta-podpis kursywa */
}

/* --- 3. PODLOGI TYPOGRAFII: nosne podpisy nie schodza < 12px --- */
@media (max-width:768px){
  .delta-pill{font-size:12.5px}
  .delta-pill .vs{font-size:12px}
  .seg-v-sess,.cont-sess,.cont-tag,.share,.url-cell,.url-link,.ai-meta,
  .geo-split-label,.signal-label,.signal-delta small,.fm-label,.mk-title,
  .soc-empty-label,.soc-chip,.ai-muted-tag,.footer-label,.footer-note,
  .footer-realiz-row .realiz-text small,.footer-bottom,.fb-noindex,
  .summary-eyebrow,.dp-note,.title-block .source,.donut-legend .li{font-size:12.5px}
  .source-tag{font-size:10.5px;padding:3px 9px}
  .badge-paid,.cont-badge,.badge-ver{font-size:10.5px}
  /* tabele na tablecie (641-768, jeszcze nie karty): czytelniejsze naglowki i komorki */
  table th{font-size:12.5px}
  table td{font-size:14px}
  table td.num,table td.share,table td.dlt,table td.idx{font-size:13.5px}
  table td.url-cell,table td.url-cell .url-link{font-size:12.5px}
  .sh-text .sh-sub{font-size:13.5px}
  .card-head .card-title{font-size:14px}
  .seg-v-name,.cont-name{font-size:13.5px}
  .seg-v-pct{font-size:15px}
  .footer-realiz-row .realiz-text strong{font-size:10.5px}
}

/* --- 4. LICZBY wieksze na telefonie (kluczowe wartosci czytelne) --- */
@media (max-width:480px){
  .kpi-value{font-size:clamp(30px,11vw,38px)}
  .mk-value{font-size:clamp(24px,8.5vw,30px)}
  .ai-value{font-size:clamp(28px,9vw,34px)}
  .soc-value,.geo-split-value{font-size:clamp(24px,8vw,30px)}
  .section-head .sh-num{font-size:33px}
  .section-head .sh-text h2{font-size:19px}
  .delta-pill{font-size:13px;gap:5px}
  .delta-pill.up::before,.delta-pill.down::before{width:13px;height:15px}
  .cont-row{grid-template-columns:88px 1fr auto;gap:9px}
  .cont-row .cont-vals{min-width:66px}
  .cont-row .cont-pct{font-size:14px}
  .title-block h1{font-size:20px}
}

/* --- 5. TABELE -> KARTY <=640px: koniec mikrodruku i poziomego scrolla.
   data-label dokladany z <thead> przez JS (w Blade: petla po naglowkach). --- */
@media (max-width:640px){
  .tbl-scroll{overflow:visible}
  .tbl-card table,.tbl-card tbody,.tbl-card tr,.tbl-card td{display:block;width:100%}
  .tbl-card thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .tbl-card tr{border:1px solid var(--border-light);border-radius:12px;padding:9px 14px;margin:0 14px 12px}
  .tbl-card tbody tr:first-child{margin-top:4px}
  .tbl-card tr:hover td{background:transparent}
  /* zebra WYLACZONA w trybie kart (mobile): tlo na pojedynczych <td> dawalo dziwne
     podswietlenie tylko pod tekstem. Na mobile karty wystarczaja, zebra zbedna. */
  .tbl-card tbody tr:nth-child(even) td{background:transparent}
  .tbl-card td{border:none!important;padding:7px 0;display:flex;align-items:center;justify-content:space-between;gap:14px;text-align:right;font-size:13.5px;width:auto;white-space:normal}
  .tbl-card td::before{content:attr(data-label);font-weight:600;color:var(--text-light);text-transform:uppercase;letter-spacing:.4px;font-size:11px;text-align:left;flex-shrink:0}
  .tbl-card td.idx{display:none}
  .tbl-card td.title-cell,.tbl-card td.url-cell{display:block;text-align:left}
  .tbl-card td.title-cell::before,.tbl-card td.url-cell::before{display:block;margin-bottom:4px}
  .tbl-card td.title-cell .title-link,.tbl-card td.url-cell .url-link{-webkit-line-clamp:3;font-size:13.5px}
  .tbl-card td.url-cell .url-link{word-break:break-all}
  .tbl-card td.country-cell{justify-content:flex-start;gap:10px}
  .tbl-card td.country-cell::before{content:none}
  .tbl-card td.num,.tbl-card td.share{font-size:14px}
  .tbl-card td{min-width:0}
  .tbl-card tr{overflow:hidden}
}

/* --- 6. POPRAWKI SPECYFICZNOSCI: base telos.css uzywa selektorow 2-klasowych
   (np. .cont-row .cont-sess), wiec pojedyncza klasa ich nie nadpisze.
   Dopasowujemy selektor, zeby podlogi typografii faktycznie zadzialaly. --- */
@media (max-width:768px){
  .cont-row .cont-sess{font-size:12.5px}
  .signal-delta .delta-pill{font-size:12.5px}
  .mini-kpi .mk-title{font-size:12.5px}
  .footer-meta-item .fm-label{font-size:12.5px}
  .cont-row .cont-badge{font-size:10.5px}
  .soc-card .badge-paid{font-size:10.5px}
}

/* --- 6b. MNIEJ OZDOBNIKOW na telefonie: deskryptor „by Rewizja.Net"
   znika z topbara (zostaje w stopce), podpis kanalu social czytelniejszy. --- */
@media (max-width:768px){ .soc-card .soc-name small{font-size:12px} }
@media (max-width:480px){
  .topbar .telos-mark .telos-div,.topbar .telos-mark .telos-mark-tx{display:none}
  .topbar .telos-mark .telos-word{font-size:24px}
}

/* --- 6c. CZYTELNOSC ETYKIET DRUGIEGO RZEDU: linie wtorne (sesji, "vs poprz.",
   udzial AI, "organic", "brak ruchu") byly 12,5px ale WYSZARZONE (#999) -> nikna
   obok pogrubionych wartosci. Podnosimy do 13px i przyciemniamy do #666. --- */
@media (max-width:768px){
  .signal-delta small,.seg-v-sess,.cont-row .cont-sess,.ai-meta,.ai-muted-tag,
  .soc-card .soc-name small,.delta-pill .vs,.geo-split-sess{font-size:13px;color:var(--text-light)}
  .source-tag,.source-tag.gsc,.source-tag.ai{font-size:11px}
  .soc-card .badge-paid,.cont-row .cont-badge,.footer-meta-item .badge-ver{font-size:11px}
  .signal-label,.mini-kpi .mk-title,.geo-split-label,.soc-empty-label,
  .summary-eyebrow,.footer-label{color:var(--text-medium)}
}

/* --- 7. RUSZTOWANIE KATALOGU (kit-*): zawijanie dlugich etykiet klas,
   zeby nie rozpychaly strony na waskim ekranie (to NIE jest design system). --- */
@media (max-width:640px){
  .kit-block-label{flex-wrap:wrap;align-items:flex-start}
  .kit-tagname{white-space:normal;word-break:break-word;max-width:100%}
  .kit-cat-head{flex-wrap:wrap}
  .kit-row{gap:16px}
}

/* ===== rwd-v3 (z v12) ===== */
/* ============================================================
   RWD v3 — feedback Marcina: max czytelnosc na telefonie/tablecie.
   Bez „vs poprz." (oczywiste), wieksze liczby wtorne, tabele jako
   wyrazne karty z delta obok liczby, geografia z paskiem pod regionem.
   ============================================================ */

/* --- A. „vs poprz." precz na mobile (oczywiste z porownania) --- */
@media (max-width:768px){ .delta-pill .vs{display:none} }

/* --- B. SEGMENTY RUCHU: liczby +~50% (sesje i %), delta wyrazniejsza --- */
@media (max-width:768px){
  .seg-list{gap:18px}
  .seg-v-name{font-size:14.5px}
  .seg-v-pct{font-size:21px;font-weight:800}
  .seg-v-bar{height:9px}
  .seg-v-sess{font-size:14.5px;font-weight:600;color:var(--text-medium)}
  .seg-v-bot .delta-pill{font-size:13.5px}
  .seg-dot{width:11px;height:11px}
}

/* --- C. TABELE -> KARTY (telefon <=640): wyrazne wiersze (cien + mocniejsza ramka),
   wieksze liczby, ZMIANA obok liczby bez etykiety „Zmiana", oddech z prawej --- */
@media (max-width:640px){
  .tbl-card tr{border:1px solid #d2dad6;box-shadow:0 1px 3px rgba(20,40,30,.06);border-radius:13px;padding:13px 16px;margin:0 4px 14px;background:#fff;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px;row-gap:9px}
  .tbl-card td{width:100%;padding:0;font-size:14px}
  .tbl-card td::before{font-size:11.5px;color:var(--text-light)}
  /* liczba + zmiana w jednym rzedzie: num rosnie, dlt doklejony, bez etykiety „Zmiana” */
  .tbl-card td.num{width:auto;flex:1 1 55%;font-size:17px;font-weight:800;color:var(--text-dark)}
  .tbl-card td.dlt{width:auto;flex:0 0 auto;justify-content:flex-end;padding-left:2px}
  .tbl-card td.dlt::before{content:none}
  .tbl-card td.dlt .delta-pill{font-size:13.5px}
  .tbl-card td.share{width:100%;font-size:15px;font-weight:700}
  .tbl-card td.share::before{font-weight:600}
  /* tytul / url na pelnej szerokosci, wieksze */
  .tbl-card td.title-cell,.tbl-card td.url-cell{flex:1 1 100%}
  .tbl-card td.title-cell .title-link{font-size:14.5px;font-weight:600;color:var(--text-dark);-webkit-line-clamp:3}
  .tbl-card td.url-cell .url-link{font-size:13px}
  .tbl-card td.country-cell{flex:1 1 100%;justify-content:flex-start;gap:11px}
  .tbl-card td.country-cell .country-name{font-size:15px;font-weight:700}
  .tbl-card td.country-cell .fi{width:28px;height:20px}
}

/* --- D. KARTY MODELI AI: wieksze liczby + dopisek „sesji · X% udzialu” --- */
@media (max-width:768px){
  .ai-grid{gap:13px}
  .ai-value{font-size:clamp(34px,11vw,44px);font-weight:800}
  .ai-name{font-size:17px}
  .ai-meta{font-size:14px;font-weight:600;color:var(--text-medium)}
  .ai-muted-tag{font-size:13.5px}
  .ai-card{min-height:auto}
}

/* --- E. KARTY SOCIAL: wieksze liczby + podpis kanalu --- */
@media (max-width:768px){
  .soc-card .soc-value{font-size:clamp(30px,10vw,40px);font-weight:800}
  .soc-card .soc-name{font-size:14px}
  .soc-card .soc-name small{font-size:13px}
  .soc-card{min-height:auto}
  .soc-spark{height:30px}
}

/* --- F. GEOGRAFIA — kontynenty: PASEK POD REGIONEM (stack), czytelny badge „uwaga”,
   wieksze marginesy/oddech --- */
@media (max-width:768px){
  .cont-card{padding:16px 16px 18px}
  .cont-layout{gap:18px}
  .cont-list{gap:18px}
  .cont-row{display:grid;grid-template-columns:1fr auto;grid-template-areas:"head vals" "bar bar";gap:8px 12px;align-items:center}
  .cont-row .cont-head{grid-area:head;min-width:0;gap:8px}
  .cont-row .cont-vals{grid-area:vals;min-width:0;align-items:baseline;gap:9px}
  .cont-row .cont-bar{grid-area:bar;height:10px}
  .cont-row .cont-name{font-size:15px;font-weight:700}
  .cont-row .cont-pct{font-size:18px;font-weight:800}
  .cont-row .cont-sess{font-size:13.5px;color:var(--text-medium)}
  .cont-row .cont-badge{font-size:10px;padding:3px 8px;border-radius:6px;background:#fef3c7;color:#b45309;border:1px solid #fde68a}
  .cont-alert{padding:12px 14px;font-size:13px;margin-top:2px}
  .cont-alert strong{font-weight:700}
}

/* --- G. PELNA LISTA KRAJOW (tabela->karty): czytelne, wyrazne wiersze,
   margines z prawej (dziedziczy z C); kontynent jako tag obok etykiety --- */
@media (max-width:640px){
  .tbl-card td.country-cell::before{content:none}
  .geo-bottom .tbl-card td.num{flex:1 1 50%;font-size:17px}
  .geo-bottom .tbl-card td.share{font-size:15px}
  /* kolumna „Kontynent” (tag) w jednym rzedzie etykieta+tag */
  .geo-bottom .tbl-card td:not(.country-cell):not(.num):not(.share){width:100%}
}

/* ===== rwd-v4 (z v12) ===== */
/* ============================================================
   RWD v4 — feedback Marcina: WIEKSZE i ZWARTE tresci na mobile.
   Klucz: koniec „pustego srodka" w tabelach — etykieta i wartosc
   stoja RAZEM (flex-start), wartosci duze i bold. Top zrodla jak
   segmenty (bold). Podsumowanie = wieksze karty i tresci.
   ============================================================ */

/* --- TABELE -> KARTY (telefon <=640): zwarty uklad, duze bold wartosci,
   etykieta tuz przy wartosci (NIE na przeciwnych krawedziach). --- */
@media (max-width:640px){
  .tbl-card tr{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:16px;row-gap:10px;
    border:1px solid #cfd7d3;box-shadow:0 1px 4px rgba(20,40,30,.08);border-radius:13px;
    padding:15px 17px;margin:0 4px 14px;background:#fff}
  .tbl-card td{display:flex;align-items:baseline;gap:8px;width:auto;padding:0;border:none!important;
    white-space:normal;font-size:16px;text-align:left;justify-content:flex-start}
  .tbl-card td::before{content:attr(data-label);font-size:11px;font-weight:700;color:var(--text-light);
    text-transform:uppercase;letter-spacing:.4px;flex-shrink:0}
  .tbl-card td.idx{display:none}
  /* PRIMARY = pierwsza komorka po numerze (nazwa/tytul/url/kraj): duza, bold, bez etykiety, pelna szer. */
  .tbl-card td.idx + td{flex:1 1 100%;font-size:16px;font-weight:700;color:var(--text-dark);line-height:1.4}
  .tbl-card td.idx + td::before{content:none}
  .tbl-card .title-link{font-size:16px;font-weight:700;color:var(--text-dark);-webkit-line-clamp:3}
  .tbl-card .url-link{font-size:13.5px;font-weight:600;color:var(--text-medium)}
  /* METRYKI zwarte w jednym rzedzie: wartosc DUZA bold tuz przy malej etykiecie */
  .tbl-card td.num{font-size:19px;font-weight:800;color:var(--text-dark)}
  .tbl-card td.share{font-size:17px;font-weight:700;color:var(--text-dark)}
  .tbl-card td.dlt{font-size:14px}
  .tbl-card td.dlt::before{content:none}
  .tbl-card td.dlt .delta-pill{font-size:14.5px}
  /* country: flaga+nazwa wyrownane do srodka, nazwa duza; kontynent pelna szer. */
  .tbl-card td.country-cell{flex:1 1 100%;align-items:center;gap:11px}
  .tbl-card td.country-cell::before{content:none}
  .tbl-card td.country-cell .fi{width:30px;height:22px}
  .tbl-card td.country-cell .country-name{font-size:16.5px;font-weight:700;color:var(--text-dark)}
  .tbl-card td.country-cell .country-other-icon{width:30px;height:22px;font-size:15px}
  .geo-bottom .tbl-card td:not(.idx):not(.country-cell):not(.num):not(.share):not(.dlt){flex:1 1 100%}
  .geo-bottom .tbl-card td.num{font-size:19px}
  .geo-bottom .tbl-card td.share{font-size:17px}
  .cont-tag{font-size:13px}
}

/* --- TOP ZRODLA: jak segmenty — nazwa zrodla duza/bold, % bold zielony --- */
@media (max-width:640px){
  .row-sources .tbl-card td.idx + td{font-size:17px;font-weight:800}
  .row-sources .tbl-card td.share{font-size:19px;font-weight:800;color:var(--brand-green-dark)}
  .row-sources .tbl-card td.num{font-size:19px}
}

/* --- PODSUMOWANIE OKRESU: wieksze karty i tresci --- */
@media (max-width:768px){
  .summary{padding:16px}
  .summary-grid{gap:12px}
  .signal{min-height:auto;padding:17px 19px;gap:10px}
  .signal-icon{width:32px;height:32px}
  .signal-icon svg{width:17px;height:17px}
  .signal-label{font-size:12px}
  .signal-value{font-size:17.5px;-webkit-line-clamp:3;line-height:1.35}
  .signal-delta .delta-pill{font-size:15px}
  .signal-delta small{font-size:13px}
  .summary-eyebrow{font-size:12.5px}
  .summary-eyebrow svg{width:15px;height:15px}
}

/* ===== rwd-v6 (z v12) ===== */
/* ============================================================
   RWD v6 — mini-KPI: 2 KOLUMNY na telefonie (wypelnia szerokosc,
   nizszy stos = koniec bialej pustki po bokach i nadmiernej wysokosci).
   Ikona-znak + kolor per metryka pochodza z bazy .mini-kpi.
   ============================================================ */
@media (max-width:560px){
  .grid.row-gsc-kpi{grid-template-columns:1fr 1fr;gap:12px}
  .mini-kpi{padding:12px 13px}
  .mini-kpi .mk-value{font-size:27px}
  .mini-kpi .mk-row{gap:7px}
  .mini-kpi .mk-title{font-size:10.5px;letter-spacing:.3px}
  .mini-kpi .mk-row .delta-pill{font-size:12.5px}
  .mini-kpi .mk-ico{width:24px;height:24px;right:9px;bottom:8px}
}

/* ===== rwd-v7 (z v12) ===== */
/* ============================================================
   RWD v7 — % UDZIALU obok liczby sesji (NIE pod nia). To udzial
   w calosci, wiec bez znaku zmiany — czysta wartosc tuz przy liczbie,
   z separatorem „·". Zmiana (porownanie) zostaje osobno jako delta.
   ============================================================ */
@media (max-width:640px){
  /* share: inline tuz za liczba sesji, bez etykiety „%”, z kropka-separatorem */
  .tbl-card td.share{width:auto;flex:0 0 auto;font-size:16px;font-weight:700;color:var(--text-medium)}
  .tbl-card td.share::before{content:"·";color:var(--text-muted);font-weight:700;margin-right:1px;
    font-size:16px;letter-spacing:0;text-transform:none}
  .geo-bottom .tbl-card td.share{font-size:16px}
  /* country: liczba sesji + udzial w jednej, zwartej linii */
  .geo-bottom .tbl-card td.num{flex:0 0 auto}
}

/* ===== rwd-v8 (z v12) ===== */
/* ============================================================
   RWD v8 — kraje: karta jako GRID (deterministyczny uklad, bez kaprysow flex-wrap).
   Wiersz 1: [flaga+kraj] .......... [delta porownania]  (delta PRZY nazwie, prawa)
   Wiersz 2: kontynent (pelna szer.)
   Wiersz 3: sesje + udzial obok siebie.
   Wartosci nie dotykaja prawej krawedzi (padding-right 18).
   ============================================================ */
@media (max-width:640px){
  /* GRID (deterministyczny): [kraj] .. [delta] / kontynent / sesje+udzial.
     Sesje i udzial sa w JEDNEJ komorce (.num + .num-share) -> zawsze zwarte. */
  .geo-bottom .tbl-card tr{
    display:grid;grid-template-columns:1fr auto;
    grid-template-areas:"name delta" "kont kont" "mets mets";
    align-items:center;column-gap:10px;row-gap:9px;padding:15px 18px}
  .geo-bottom .tbl-card td.country-cell{grid-area:name;align-items:center;min-width:0}
  .geo-bottom .tbl-card td.dlt{grid-area:delta;justify-self:end;align-self:center;width:auto}
  .geo-bottom .tbl-card td.dlt::before{content:none}
  .geo-bottom .tbl-card td.dlt .delta-pill{font-size:14px;white-space:nowrap}
  .geo-bottom .tbl-card td:not(.idx):not(.country-cell):not(.num):not(.dlt){grid-area:kont}
  .geo-bottom .tbl-card td.num{grid-area:mets;justify-self:start;font-size:18px}
  .geo-bottom .tbl-card td.num .num-share{font-size:15px}
}

/* ===== warstwa animacji impeccable v2 (port z telos.css) ===== */
/* =========================================================================
   SZABLON WIZUALIZACJI — warstwa animacji „impeccable v2"
   Aktywna gdy <body> ma klasę .fx-on (dodaje ją telos.js, gdy brak
   prefers-reduced-motion). Wzorzec dla wszystkich paneli Telos.
   Mechanika sterowana z telos.js (wipe wykresów, count-up, kaskady, donuty).
   ========================================================================= */

/* Hero/stagger: dłuższy dojazd + lekki blur-in + miękki spring. */
body.fx-on .reveal{transition:opacity .7s cubic-bezier(.22,.68,0,1.01), transform .7s cubic-bezier(.22,.68,0,1.01), filter .7s ease}
body.fx-on .reveal:not(.in){transform:translateY(26px) scale(.992);filter:blur(6px)}
body.fx-on .reveal-stagger > *{transition:opacity .62s cubic-bezier(.22,.68,0,1.01), transform .62s cubic-bezier(.22,.68,0,1.01), filter .62s ease}
body.fx-on .reveal-stagger:not(.in) > *{transform:translateY(22px) scale(.985);filter:blur(5px)}
body.fx-on .reveal-stagger.in > *:nth-child(1){transition-delay:.02s}
body.fx-on .reveal-stagger.in > *:nth-child(2){transition-delay:.10s}
body.fx-on .reveal-stagger.in > *:nth-child(3){transition-delay:.18s}
body.fx-on .reveal-stagger.in > *:nth-child(4){transition-delay:.26s}
body.fx-on .reveal-stagger.in > *:nth-child(5){transition-delay:.34s}
body.fx-on .reveal-stagger.in > *:nth-child(6){transition-delay:.42s}

/* Sekcja: numer 01/02 wjeżdża, akcentowy pasek robi wipe. */
body.fx-on .section-head{position:relative}
body.fx-on .section-head .sh-num{transition:transform .55s cubic-bezier(.22,.68,0,1.01) .05s, opacity .55s ease .05s}
body.fx-on .section-head:not(.in) .sh-num{transform:translateX(-14px) rotate(-4deg);opacity:0}
body.fx-on .section-head::after{content:"";position:absolute;left:0;bottom:-7px;height:2px;width:0;background:var(--sec-accent,var(--brand-green,#17946e));border-radius:2px;transition:width .7s cubic-bezier(.16,.84,.44,1) .12s;opacity:.55}
body.fx-on .section-head.in::after{width:64px}

/* Delta-pille i mini-KPI: pop-in z lekkim overshootem (po dojechaniu liczby). */
body.fx-on .delta-pill,body.fx-on .mini-kpi .mk-value{will-change:transform,opacity}
@keyframes fxPop{0%{opacity:0;transform:translateY(6px) scale(.86)}60%{opacity:1;transform:translateY(0) scale(1.05)}100%{transform:scale(1)}}
body.fx-on.fx-run .delta-pill{animation:fxPop .5s cubic-bezier(.22,.68,0,1.01) both}
body.fx-on.fx-run .row-hero .delta-pill{animation-delay:.9s}
body.fx-on.fx-run .row-gsc-kpi .delta-pill{animation-delay:.5s}

/* Karty: spójny lift + cień + mikro-obrót ikony przy hover. */
body.fx-on .kpi,body.fx-on .card,body.fx-on .mini-kpi,body.fx-on .ai-card,body.fx-on .soc-card,body.fx-on .geo-split{transition:box-shadow .26s ease, transform .26s cubic-bezier(.22,.68,0,1.01)}
body.fx-on .kpi:hover,body.fx-on .card:hover,body.fx-on .mini-kpi:hover,body.fx-on .ai-card:hover,body.fx-on .soc-card:hover{transform:translateY(-3px);box-shadow:0 10px 30px rgba(20,40,30,.10)}
body.fx-on .kpi:hover .kpi-icon,body.fx-on .ai-card:hover .ai-icon{transform:scale(1.08) rotate(-4deg)}

/* Paski (segmenty + kontynenty): grow od zera + jednorazowy „shine". */
body.fx-on .seg-v-bar>div,body.fx-on .cont-bar-fill,body.fx-on .ai-share-fill{position:relative;overflow:hidden}
body.fx-on .seg-v-bar>div.fx-grow,body.fx-on .cont-bar-fill.fx-grow{width:0 !important}
@keyframes fxShine{0%{transform:translateX(-120%)}100%{transform:translateX(260%)}}
body.fx-on .fx-shine::after{content:"";position:absolute;inset:0;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);transform:translateX(-120%);animation:fxShine 1.1s ease .35s 1}

/* Duże wykresy czasowe: wipe clip-path od lewej do prawej na wejściu w viewport. */
body.fx-on .chart-wrap.fx-wipe{clip-path:inset(0 100% 0 0)}
body.fx-on .chart-wrap.fx-wipe.fx-go{clip-path:inset(0 0 0 0);transition:clip-path 1.15s cubic-bezier(.16,.84,.44,1)}

/* Tabele: kaskada wierszy przy wejściu w viewport.
   .tbl-scroll ma overflow-x:auto (przeglądarka promuje overflow-y do auto),
   więc translateY wiersza tworzy chwilowy pionowy scrollbar — klipujemy oś Y. */
body.fx-on .tbl-scroll{overflow-y:hidden}
@keyframes fxRow{0%{opacity:0;transform:translateY(6px)}100%{opacity:1;transform:none}}
body.fx-on tbody.fx-cascade tr{opacity:0;animation:fxRow .46s cubic-bezier(.22,.68,0,1.01) both;animation-delay:calc(var(--ri,0) * 38ms)}

/* Aktywna kotwica: podkreślenie przesuwa się płynnie. */
body.fx-on .anchor-link{position:relative}
body.fx-on .anchor-link::after{content:"";position:absolute;left:14px;right:14px;bottom:3px;height:2px;background:var(--brand-green,#17946e);border-radius:2px;transform:scaleX(0);transform-origin:left;transition:transform .28s cubic-bezier(.22,.68,0,1.01);opacity:0}
body.fx-on .anchor-link.active::after{transform:scaleX(1);opacity:.9}

/* „Live" kropka aktualizacji — mocniejsze halo. */
body.fx-on .dot-live{animation:fxLive 2.2s ease-in-out infinite}
@keyframes fxLive{0%,100%{box-shadow:0 0 0 3px rgba(39,174,96,.18)}50%{box-shadow:0 0 0 7px rgba(39,174,96,.04)}}

/* Tabular-nums — zero skakania szerokości liczb podczas count-upu. */
body.fx-on .kpi-value,body.fx-on .mk-value{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}

/* Pop ikon KPI przy wejściu hero. */
@keyframes fxIconPop{0%{transform:scale(0) rotate(-28deg);opacity:0}62%{transform:scale(1.14) rotate(5deg);opacity:1}100%{transform:scale(1) rotate(0)}}
body.fx-on.fx-run .row-hero .kpi-icon{animation:fxIconPop .56s cubic-bezier(.22,.68,0,1.01) both}
body.fx-on.fx-run .row-hero .kpi:nth-child(1) .kpi-icon{animation-delay:.16s}
body.fx-on.fx-run .row-hero .kpi:nth-child(2) .kpi-icon{animation-delay:.24s}
body.fx-on.fx-run .row-hero .kpi:nth-child(3) .kpi-icon{animation-delay:.32s}
body.fx-on.fx-run .row-hero .kpi:nth-child(4) .kpi-icon{animation-delay:.40s}

/* Pasek postępu scrolla u góry. */
#fx-progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:400;background:linear-gradient(90deg,#1eb88a,#17946e);box-shadow:0 0 8px rgba(23,148,110,.5);transition:width .08s linear}
body:not(.fx-on) #fx-progress{opacity:0}

/* Spotlight podążający za kursorem na kartach. */
body.fx-on .fx-spot::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .25s ease;background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%),rgba(30,184,138,.10),transparent 62%);z-index:1}
body.fx-on .fx-spot:hover::after{opacity:1}
body.fx-on .fx-spot > *{position:relative;z-index:2}

/* Donut: wejście z narastaniem (skala+fade); sweep gra przez reset+update wykresu. */
body.fx-on .donut-wrap.fx-dn{opacity:0;transform:scale(.9)}
body.fx-on .donut-wrap.fx-dn.fx-go{opacity:1;transform:none;transition:opacity .5s ease,transform .6s cubic-bezier(.22,.68,0,1.01)}

/* Magnetyczny „do góry" — płynny powrót transformu. */
body.fx-on .to-top.show{transition:transform .18s cubic-bezier(.22,.68,0,1.01),background .2s,box-shadow .25s,opacity .25s}

@media (prefers-reduced-motion: reduce){
  body.fx-on .reveal,body.fx-on .reveal-stagger > *{transition:none;filter:none;transform:none}
  body.fx-on.fx-run .delta-pill,body.fx-on tbody.fx-cascade tr,body.fx-on .fx-shine::after{animation:none;opacity:1}
  body.fx-on .chart-wrap.fx-wipe{clip-path:none}
  body.fx-on .donut-wrap.fx-dn{opacity:1;transform:none}
  body.fx-on.fx-run .row-hero .kpi-icon{animation:none}
  #fx-progress{display:none}
}

/* ===== panel layout (poza galeria kit) ===== */
.wrap{max-width:1400px;margin:0 auto;padding:0 22px}
.section-head{margin:46px 0 18px}
.footer{margin-top:48px}
.footer-legal{padding:13px 28px;background:var(--bg-soft);border-top:1px solid var(--border-soft);display:flex;flex-wrap:wrap;align-items:center;gap:12px;font-size:12px}
.footer-legal a{color:var(--text-medium);font-weight:600;text-decoration:none;transition:color .14s ease}
.footer-legal a:hover{color:var(--brand-green-dark)}
.footer-legal .fl-sep{color:var(--border-light)}
.geo-bottom .tbl-card td.share{width:124px}
.share-cell{display:flex;flex-direction:column;align-items:stretch;gap:5px}
.share-cell .share-pct{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.share-cell .share-bar{height:6px;background:var(--border-soft);border-radius:99px;overflow:hidden}
.share-cell .share-bar>i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--brand-green),var(--brand-green-dark));transition:width .8s cubic-bezier(.16,.84,.44,1)}
.telos-mark-link{text-decoration:none;cursor:pointer}
.telos-mark-link .tsyg{transition:transform .18s ease}
.telos-mark-link:hover .tsyg{transform:scale(1.06)}
.realizacja{display:inline-flex;align-items:center;gap:12px}
.btn-back-ico{width:38px;height:38px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;background:#fff;border:1.5px solid var(--brand-green-soft);color:var(--brand-green-text);text-decoration:none;flex:none;transition:border-color .15s ease,background .15s ease}
.btn-back-ico:hover{border-color:var(--brand-green);background:var(--brand-green-light)}
.btn-back-ico svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.topbar{overflow:visible}
.topbar::before{border-radius:var(--radius-lg) var(--radius-lg) 0 0}
.dp{justify-self:center;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative}
.dp-menu{z-index:160}
.anchor-nav{justify-content:center;position:sticky;top:8px;z-index:60;margin-bottom:20px;scroll-behavior:smooth}
.soc-chip.x{color:#0f1419}.soc-chip.x .soc-chip-icon{background:#0f1419}
.soc-chip.fb{color:#1877F2}.soc-chip.fb .soc-chip-icon{background:#1877F2}
.soc-chip.ig{color:#DC2743}.soc-chip.ig .soc-chip-icon{background:#DC2743}
.client-name .access-pill{display:flex;width:fit-content;margin-top:7px}
.geo-split-dlt{margin-top:6px}
.bg-sygnet{position:fixed;right:-26px;bottom:-26px;width:min(46vw,540px);height:min(46vw,540px);color:var(--brand-green);opacity:.10;z-index:0;pointer-events:none}
.bg-sygnet svg{width:100%;height:100%;display:block}
.bg-glow{position:fixed;left:0;right:0;bottom:0;height:120px;background:linear-gradient(180deg,transparent 0%,transparent 38%,rgba(30,184,138,.22) 100%);z-index:0;pointer-events:none}
body.fx-on .mini-kpi .mk-ico{position:absolute;z-index:2}
.dq-banner{display:flex;gap:13px;align-items:flex-start;background:#fff8ec;border:1px solid #f6dcab;border-radius:13px;padding:14px 16px;margin:0 0 18px;line-height:1.5}
.dq-banner .dq-ico{flex:none;width:34px;height:34px;border-radius:10px;background:#fcebd0;display:flex;align-items:center;justify-content:center}
.dq-banner .dq-ico svg{width:18px;height:18px;fill:none;stroke:#b45309;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}
.dq-banner .dq-tx{min-width:0}
.dq-banner .dq-title{font-size:13.5px;font-weight:700;color:#92400e;margin:0 0 3px}
.dq-banner .dq-body{font-size:12.5px;color:#7c5410;margin:0}
.dq-banner .dq-body+.dq-body{margin-top:5px}
.dq-banner b{color:#92400e;font-weight:700}
@media(max-width:560px){.dq-banner{padding:12px 13px;gap:10px}.dq-banner .dq-ico{width:30px;height:30px}}
@media(max-width:768px){.wrap{padding:0 14px}.section-head{margin:36px 0 16px}.anchor-nav{justify-content:flex-start}.bg-sygnet{opacity:.08;width:min(72vw,360px);height:min(72vw,360px)}}
