/* kids-engine — единая разметка (docs/TZ-template.md). Только токены: цвета, шрифты и размеры задаёт тема (themes/*.css). */
@layer reset, tokens, base, layout, components, utilities;

@layer reset {
  *,*::before,*::after{box-sizing:border-box}
  html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 56px)}
  @media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
  body{margin:0}
  img,svg{vertical-align:middle}
  img{max-width:100%;height:auto;object-fit:contain}
  button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
  table{border-collapse:collapse}
}

@layer tokens {
  :root{
    --font-sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    --font-display:var(--font-sans);
    --fs-xs:.75rem;--fs-sm:.875rem;--fs-md:1rem;--fs-lg:1.125rem;--fs-xl:1.375rem;--fs-2xl:1.75rem;--fs-3xl:2.5rem;
    --lh:1.6;--fw-bold:700;--fw-black:800;
    --radius-sm:6px;--radius-md:12px;--radius-lg:16px;--radius-pill:999px;
    --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;--space-8:48px;
    --wrap:1200px;--side:300px;--header-h:60px;
    --shadow-1:0 1px 2px rgb(0 0 0 / .06);--shadow-2:0 8px 24px rgb(0 0 0 / .12);
    --pitch-stripe:transparent;--tile-hover:var(--primary);
  }
}

@layer base {
  body{background:var(--bg);color:var(--text);font:var(--fs-md)/var(--lh) var(--font-sans)}
  a{color:var(--link)}
  a:hover{color:var(--link-hover)}
  :focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--radius-sm)}
  h1,h2,h3{font-family:var(--font-display);line-height:1.25;color:var(--text)}
  h1{font-size:var(--fs-2xl);margin:0 0 var(--space-4)}
  h2{font-size:var(--fs-xl);margin:var(--space-7) 0 var(--space-3)}
  h3{font-size:var(--fs-lg);margin:var(--space-5) 0 var(--space-2)}
  small{color:var(--text-muted)}
  .id-num{font-variant-numeric:tabular-nums}
}

@layer layout {
  .id-wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--space-4)}
  .id-skip{position:absolute;left:-999px;top:0;z-index:100;background:var(--surface);padding:var(--space-2) var(--space-4)}
  .id-skip:focus{left:var(--space-4)}
  .id-layout{display:grid;grid-template-columns:minmax(0,1fr) var(--side);gap:var(--space-6);padding-block:var(--space-5) var(--space-8)}
  .id-side{display:flex;flex-direction:column;gap:var(--space-4);align-self:start;position:sticky;top:calc(var(--header-h) + var(--space-4))}
  @media (max-width:900px){
    .id-layout{grid-template-columns:minmax(0,1fr)}
    .id-side{position:static}
  }
}

@layer components {
  /* иконки */
  .id-icon{width:1.15em;height:1.15em;flex:none}
  .id-icon--lg{width:1.5em;height:1.5em}

  /* шапка */
  .id-header{position:sticky;top:0;z-index:30;background:var(--surface);border-bottom:1px solid var(--line)}
  .id-header__in{display:flex;align-items:center;gap:var(--space-4);min-height:var(--header-h)}
  .id-logo{font-family:var(--font-display);font-weight:var(--fw-black);font-size:var(--fs-xl);color:var(--text);text-decoration:none;margin-right:auto}
  .id-logo img{max-height:none;width:auto}
  /* логотип для тёмной схемы (docs/TZ-site-control.md §4): своя схема зрителя или авто по системе */
  .id-logo__img--dark{display:none}
  :root[data-scheme="dark"] .id-logo__img--light{display:none}:root[data-scheme="dark"] .id-logo__img--dark{display:inline}
  .id-nav{display:flex;gap:var(--space-1);flex-wrap:wrap}
  .id-nav a{color:var(--text);text-decoration:none;font-weight:600;padding:var(--space-2) var(--space-3);border-radius:var(--radius-pill)}
  .id-nav a:hover{background:var(--surface-2);color:var(--text)}
  .id-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-pill);color:var(--text)}
  .id-iconbtn:hover{background:var(--surface-2)}
  .id-burger{display:none}
  .id-scheme [data-scheme-icon]{display:none}
  :root[data-scheme="auto"] .id-scheme [data-scheme-icon="auto"],:root[data-scheme="light"] .id-scheme [data-scheme-icon="light"],:root[data-scheme="dark"] .id-scheme [data-scheme-icon="dark"]{display:block}
  @media (max-width:760px){
    .id-burger{display:inline-flex}
    .id-nav{display:none;position:absolute;inset:var(--header-h) 0 auto 0;flex-direction:column;background:var(--surface);border-bottom:1px solid var(--line);padding:var(--space-2) var(--space-4) var(--space-4);box-shadow:var(--shadow-2)}
    .id-nav.is-open{display:flex}
    .id-nav a{padding:var(--space-3)}
  }
  .id-header__blocks{padding-block:var(--space-2)}

  /* 18+ */
  .id-disclaimer{background:var(--surface-inverse);color:var(--text-inverse);font-size:var(--fs-sm);padding:var(--space-2) 0}
  .id-age{display:inline-block;background:var(--accent);color:var(--accent-contrast);font-weight:var(--fw-bold);border-radius:var(--radius-sm);padding:0 var(--space-2);margin-right:var(--space-2);font-size:var(--fs-xs);line-height:1.6}

  /* крошки */
  .id-crumbs{font-size:var(--fs-sm);color:var(--text-muted);margin-bottom:var(--space-3);display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-2)}
  .id-crumbs a{color:var(--text-muted);text-decoration:none}
  .id-crumbs a:hover{color:var(--link)}

  /* общие поверхности */
  .id-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5)}
  .id-box > h2:first-child,.id-box > h3:first-child{margin-top:0}
  .id-section{margin-block:var(--space-6)}
  .id-section__title{display:flex;align-items:center;gap:var(--space-2)}

  /* текст мамки: только теги, без классов */
  .id-text{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);margin-block:var(--space-4);overflow-x:auto}
  .id-text > :first-child{margin-top:0}
  .id-text p,.id-text li{max-width:72ch}
  .id-text table{width:100%;font-size:var(--fs-sm);margin-block:var(--space-4)}
  .id-text th,.id-text td{border-bottom:1px solid var(--line);padding:var(--space-2) var(--space-3);text-align:left}
  .id-text th{color:var(--text-muted);font-weight:600}
  @media (max-width:600px){.id-text{padding:var(--space-4)}}

  /* таблица коэффициентов (метка [[ODDS_TABLE]]) */
  .id-text table.id-odds{width:auto;min-width:min(100%,380px);font-variant-numeric:tabular-nums}
  .id-odds caption{caption-side:top;text-align:left;font-weight:var(--fw-bold);padding-bottom:var(--space-2)}
  .id-odds td:last-child,.id-odds th:last-child{text-align:right;white-space:nowrap}
  .id-odds tr.is-pick{background:var(--pick-bg)}
  .id-odds tr.is-pick td:first-child{font-weight:var(--fw-bold)}
  .id-odds__updated{display:block;font-size:var(--fs-xs);color:var(--text-muted);margin-top:var(--space-2)}

  /* hero матча */
  .id-hero{background:var(--hero-bg);color:var(--hero-text);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-1)}
  .id-hero__top{display:flex;align-items:center;justify-content:center;gap:var(--space-2);flex-wrap:wrap;font-size:var(--fs-sm);color:var(--hero-muted)}
  .id-hero__top a{color:var(--hero-text);text-decoration:none;font-weight:600}
  .id-hero__teams{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--space-4);margin-block:var(--space-5)}
  .id-hero__team{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);text-align:center;font-weight:var(--fw-bold);font-size:var(--fs-lg);min-width:0}
  .id-hero__mid{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);text-align:center}
  .id-hero__score{font-family:var(--font-display);font-size:var(--fs-3xl);font-weight:var(--fw-black);line-height:1;font-variant-numeric:tabular-nums}
  .id-hero__sub{font-size:var(--fs-sm);color:var(--hero-muted)}
  .id-hero__state{font-size:var(--fs-sm);font-weight:var(--fw-bold)}
  .id-hero__live{color:var(--live);font-weight:var(--fw-bold);display:inline-flex;align-items:center;gap:var(--space-1)}
  .id-hero__live::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--live);animation:id-pulse 1.4s infinite}
  @keyframes id-pulse{50%{opacity:.3}}
  @media (prefers-reduced-motion:reduce){.id-hero__live::before{animation:none}}
  .id-countdown{font-variant-numeric:tabular-nums;font-size:var(--fs-sm);color:var(--hero-text);background:var(--hero-chip);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3)}
  .id-countdown:empty{display:none}
  .id-hero{background-image:repeating-linear-gradient(90deg,transparent 0 72px,var(--pitch-stripe) 72px 144px)}
  .id-hero--tabs{border-radius:var(--radius-lg) var(--radius-lg) 0 0}
  .id-hero__team .id-dots{margin-top:var(--space-1)}
  .id-hero__odds{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:var(--space-2);margin-top:var(--space-2)}
  .id-hero__odd{background:var(--hero-chip);border-radius:var(--radius-md);padding:var(--space-2);text-align:center;font-size:var(--fs-xs);color:var(--hero-muted);display:flex;flex-direction:column;align-items:center}
  .id-hero__odd b{color:var(--hero-text);font-size:var(--fs-lg);font-variant-numeric:tabular-nums;line-height:1.3}
  .id-hero__odd small{color:var(--hero-muted);font-size:var(--fs-xs)}
  .id-hero__odd.is-pick{box-shadow:inset 0 0 0 2px var(--accent)}
  /* вкладки под табло: липнут под шапкой */
  .id-tabsbar{position:sticky;top:var(--header-h);z-index:20;display:flex;gap:var(--space-1);overflow-x:auto;scrollbar-width:none;background:var(--hero-bg);border-top:1px solid var(--hero-chip);border-radius:0 0 var(--radius-lg) var(--radius-lg);padding:var(--space-2) var(--space-3)}
  .id-tabsbar::-webkit-scrollbar{display:none}
  .id-tabsbar a{flex:none;color:var(--hero-muted);text-decoration:none;font-weight:var(--fw-bold);font-size:var(--fs-sm);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill)}
  .id-tabsbar a:hover{color:var(--hero-text)}
  .id-tabsbar a[aria-selected="true"]{background:var(--hero-text);color:var(--hero-bg)}
  @media (max-width:600px){
    .id-hero{padding:var(--space-4)}
    .id-hero__team{font-size:var(--fs-md)}
    .id-hero__score{font-size:var(--fs-2xl)}
  }

  /* гербы и монограммы */
  .id-crest{display:inline-flex;align-items:center;justify-content:center;flex:none;border-radius:var(--radius-md);object-fit:contain}
  .id-crest--lg{width:72px;height:72px}
  .id-crest--md{width:44px;height:44px}
  .id-crest--sm{width:24px;height:24px;border-radius:var(--radius-sm)}
  .id-crest--mono{background:var(--surface-2);color:var(--text-muted);font-weight:var(--fw-black);text-transform:uppercase}
  .id-crest--lg.id-crest--mono{font-size:var(--fs-xl)}
  .id-crest--md.id-crest--mono{font-size:var(--fs-sm)}
  .id-crest--sm.id-crest--mono{font-size:10px}
  .id-hero .id-crest--mono{background:var(--hero-chip);color:var(--hero-text)}
  @media (max-width:600px){.id-crest--lg{width:52px;height:52px}}

  /* пилюли: кэф, исход, статус */
  .id-pill{display:inline-flex;align-items:center;gap:var(--space-1);border-radius:var(--radius-pill);padding:2px var(--space-3);font-size:var(--fs-sm);font-weight:600;background:var(--surface-2);color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}
  .id-pill b{font-weight:var(--fw-black)}
  .id-hero .id-pill{background:var(--hero-chip);color:var(--hero-text)}
  .id-pill--odd{background:var(--accent);color:var(--accent-contrast)}
  .id-pill--won{background:var(--win-bg);color:var(--win)}
  .id-pill--lost{background:var(--loss-bg);color:var(--loss)}
  .id-pill--void{background:var(--void-bg);color:var(--void)}
  .id-pill--live{background:var(--live-bg);color:var(--live)}

  /* звёзды уверенности */
  .id-stars{display:inline-flex;gap:1px;color:var(--star)}
  .id-stars .id-icon{width:14px;height:14px}
  .id-stars .is-off{color:var(--line)}

  /* кнопка партнёра */
  .id-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);background:var(--accent);color:var(--accent-contrast);font-weight:var(--fw-bold);text-decoration:none;padding:var(--space-3) var(--space-6);border-radius:var(--radius-pill);transition:filter .15s}
  .id-btn:hover{filter:brightness(1.06);color:var(--accent-contrast)}
  .id-btn__age{font-size:var(--fs-xs);opacity:.8;font-weight:600}

  /* вердикт «Наш прогноз» */
  .id-verdict{background:var(--verdict-bg);color:var(--verdict-text);border-radius:var(--radius-lg);padding:var(--space-5);margin-block:var(--space-4);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3) var(--space-5);align-items:center;box-shadow:var(--shadow-1)}
  .id-verdict__label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--verdict-muted);font-weight:var(--fw-bold)}
  .id-verdict__market{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:var(--fw-black);margin:var(--space-1) 0 var(--space-2);display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3)}
  .id-verdict__facts{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);font-size:var(--fs-sm);color:var(--verdict-muted)}
  .id-verdict__facts b{color:var(--verdict-text)}
  .id-verdict__cta{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-2)}
  .id-verdict__result{font-size:var(--fs-lg)}
  .id-verdict .id-stars .is-off{color:var(--verdict-muted);opacity:.4}
  .id-verdict--compact{grid-template-columns:minmax(0,1fr) auto;padding:var(--space-4) var(--space-5)}
  .id-verdict--compact .id-verdict__market{font-size:var(--fs-lg);margin:0}
  @media (max-width:600px){
    .id-verdict{grid-template-columns:1fr}
    .id-verdict__cta{align-items:stretch}
  }

  /* лента обновлений, итоги */
  .id-updates{display:grid;gap:var(--space-2);margin-block:var(--space-4)}
  .id-updates p{margin:0;background:var(--surface);border-left:4px solid var(--primary);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);font-size:var(--fs-sm)}

  /* шансы по рынку */
  .id-probs{display:grid;gap:var(--space-3)}
  .id-prob{display:grid;grid-template-columns:minmax(0,9rem) minmax(0,1fr) 3.5rem;align-items:center;gap:var(--space-3);font-size:var(--fs-sm)}
  .id-prob__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .id-prob__bar{height:10px;border-radius:var(--radius-pill);background:var(--surface-2);overflow:hidden}
  .id-prob__bar i{display:block;height:100%;border-radius:inherit;background:var(--bar)}
  .id-prob.is-pick .id-prob__bar i{background:var(--accent)}
  .id-prob.is-pick .id-prob__name{font-weight:var(--fw-bold)}
  .id-prob__val{text-align:right;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums}

  /* форма: точки, сводка, последние матчи */
  .id-dots{display:inline-flex;gap:4px}
  .id-dots i{width:9px;height:9px;border-radius:50%;background:var(--draw)}
  .id-dots .is-w{background:var(--win)}
  .id-dots .is-l{background:var(--loss)}
  .id-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:var(--space-5)}
  .id-games{list-style:none;margin:0;padding:0;font-size:var(--fs-sm);border-top:1px solid var(--line)}
  .id-games li{display:grid;grid-template-columns:4.2rem minmax(0,1fr) auto;gap:var(--space-2);align-items:center;padding:var(--space-2) 0;border-bottom:1px solid var(--line)}
  .id-games time{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:var(--fs-xs)}
  .id-games__opp{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .id-games__opp small{margin-left:var(--space-2)}
  .id-games__score{font-weight:var(--fw-black);font-variant-numeric:tabular-nums;border-radius:var(--radius-sm);padding:0 var(--space-2);color:var(--mark-text);background:var(--draw)}
  .id-games__score.is-w{background:var(--win)}
  .id-games__score.is-l{background:var(--loss)}

  /* блок команды (превью) */
  .id-teamblock{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);margin-block:var(--space-4)}
  .id-teamblock__head{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}
  .id-teamblock__head b{display:block;font-size:var(--fs-lg);line-height:1.3}
  .id-teamblock__head small{font-size:var(--fs-xs)}
  .id-teamblock__head .id-dots{margin-left:auto}
  .id-teamblock__text > :first-child{margin-top:0}
  .id-teamblock__text h2{font-size:var(--fs-lg)}
  .id-teamblock__text p,.id-teamblock__text li{max-width:72ch}
  .id-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;font-weight:var(--fw-bold);color:var(--text-muted);margin:var(--space-4) 0 var(--space-2)}
  .id-h2h{margin-block:var(--space-4)}
  @media (max-width:600px){.id-teamblock{padding:var(--space-4)}}

  /* личные встречи */
  .id-h2h__bar{display:flex;height:12px;border-radius:var(--radius-pill);overflow:hidden;background:var(--surface-2);margin-block:var(--space-2)}
  .id-h2h__bar i{display:block;height:100%}
  .id-h2h__bar .is-home{background:var(--bar)}
  .id-h2h__bar .is-draw{background:var(--draw)}
  .id-h2h__bar .is-away{background:var(--bar-2)}
  .id-h2h__legend{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2);font-size:var(--fs-sm)}
  .id-h2h__legend b{font-variant-numeric:tabular-nums}
  .id-h2h__games{list-style:none;margin:var(--space-3) 0 0;padding:0;font-size:var(--fs-sm)}
  .id-h2h__games li{display:grid;grid-template-columns:5.5rem minmax(0,1fr) auto minmax(0,1fr);gap:var(--space-2);align-items:center;padding:var(--space-2) 0;border-top:1px solid var(--line)}
  .id-h2h__games .is-away{text-align:right}
  .id-h2h__games small{grid-column:1 / -1;margin-top:calc(var(--space-1) * -1)}
  .id-score{font-weight:var(--fw-black);font-variant-numeric:tabular-nums;background:var(--surface-2);border-radius:var(--radius-sm);padding:0 var(--space-2);text-align:center}

  /* мини-таблица */
  .id-table{width:100%;font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
  .id-table th{color:var(--text-muted);font-weight:600;text-align:center;padding:var(--space-1) var(--space-2)}
  .id-table td{text-align:center;padding:var(--space-2);border-top:1px solid var(--line)}
  .id-table th:nth-child(2),.id-table td:nth-child(2){text-align:left}
  .id-table td:first-child{border-left:3px solid var(--zone,transparent)}
  .id-table tr.is-ours td{background:var(--pick-bg);font-weight:var(--fw-bold)}
  .id-table__wrap{overflow-x:auto}

  /* FAQ */
  .id-faq details{border-top:1px solid var(--line);padding:var(--space-3) 0}
  .id-faq details:first-of-type{border-top:0}
  .id-faq summary{cursor:pointer;font-weight:var(--fw-bold);list-style:none;display:flex;justify-content:space-between;gap:var(--space-3)}
  .id-faq summary::-webkit-details-marker{display:none}
  .id-faq summary::after{content:"+";color:var(--text-muted);font-weight:var(--fw-black)}
  .id-faq details[open] summary::after{content:"−"}
  .id-faq p{margin:var(--space-2) 0 0;color:var(--text-muted)}

  /* блок доверия: статистика сайта */
  .id-trust h3{margin:0 0 var(--space-3);font-size:var(--fs-md)}
  .id-trust__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2)}
  .id-trust__grid div{background:var(--surface-2);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)}
  .id-trust__grid b{display:block;font-size:var(--fs-lg);font-variant-numeric:tabular-nums}
  .id-trust__grid span{font-size:var(--fs-xs);color:var(--text-muted)}
  .id-trust .is-plus{color:var(--win)}
  .id-trust .is-minus{color:var(--loss)}
  .id-spark{display:block;width:100%;height:48px;margin-top:var(--space-3);color:var(--bar)}

  /* сайдбар */
  .id-side-sport h3{display:flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);font-size:var(--fs-md)}
  .id-side-sport h3 a{color:var(--text);text-decoration:none}
  .id-side-sport h3 small{margin-left:auto}
  .id-side-sport ul{list-style:none;margin:0;padding:0}
  .id-side-sport li a{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) 0;color:var(--text);text-decoration:none;font-size:var(--fs-sm)}
  .id-side-sport li a:hover{color:var(--link)}
  .id-side-sport li small{margin-left:auto}
  .id-side-sport img,.id-side-sport li .id-icon{width:18px;height:18px;flex:none}
  .id-side-sport li .id-icon{color:var(--text-muted)}

  /* вкладки, чипы, пейджер */
  .id-chips{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-block:var(--space-3) var(--space-4)}
  .id-chips a{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--line);color:var(--text);text-decoration:none;font-size:var(--fs-sm);font-weight:600}
  .id-chips a:hover{border-color:var(--primary)}
  .id-chips a[aria-current]{background:var(--primary);border-color:var(--primary);color:var(--primary-contrast)}
  .id-chips small{color:inherit;opacity:.7}
  .id-pager{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);margin-block:var(--space-6)}
  .id-pager__more{min-width:220px}
  .id-pager__pages{display:flex;gap:var(--space-1);flex-wrap:wrap;justify-content:center;font-size:var(--fs-sm)}
  .id-pager__pages a,.id-pager__pages span{padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);color:var(--text-muted);text-decoration:none}
  .id-pager__pages span{background:var(--surface-2);color:var(--text);font-weight:var(--fw-bold)}
  .id-pager__more.id-btn{background:var(--surface);color:var(--text);border:1px solid var(--line)}

  /* фильтры листинга: дата (сегменты) и вид спорта (чипы) */
  .id-filters{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-2);margin-block:var(--space-3) var(--space-2)}
  .id-seg{display:flex;gap:2px;background:var(--surface-2);border-radius:var(--radius-pill);padding:3px;overflow-x:auto;max-width:100%;scrollbar-width:none}
  .id-seg a{flex:none;color:var(--text-muted);text-decoration:none;font-weight:var(--fw-bold);font-size:var(--fs-sm);padding:var(--space-1) var(--space-4);border-radius:var(--radius-pill)}
  .id-seg a[aria-current]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}
  .id-seg small{color:inherit;opacity:.6}
  .id-sports{display:flex;flex-wrap:wrap;gap:var(--space-1)}
  .id-sports a{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--text);text-decoration:none;font-weight:600;font-size:var(--fs-sm);padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--line)}
  .id-sports a:hover{border-color:var(--primary)}
  .id-sports a[aria-current]{background:var(--text);border-color:var(--text);color:var(--bg)}
  .id-sports small{color:inherit;opacity:.6}

  /* заголовки секций листинга */
  .id-sec{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-lg);margin:var(--space-6) 0 var(--space-3)}
  .id-sec::before{content:"";width:4px;height:1.1em;border-radius:2px;background:var(--primary)}
  .id-listsec{margin-block:var(--space-4)}

  /* плитки прогнозов */
  .id-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:var(--space-3)}
  .id-tile{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);transition:border-color .15s,box-shadow .15s;min-width:0}
  .id-tile:hover{border-color:var(--tile-hover);box-shadow:var(--shadow-1)}
  .id-tile--top{border:2px solid var(--accent)}
  .id-tile__link{position:absolute;inset:0;border-radius:inherit;z-index:1}
  .id-tile__head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);font-size:var(--fs-xs);color:var(--text-muted)}
  .id-tile__time{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}
  .id-tile__live{color:var(--live);font-weight:var(--fw-bold)}
  .id-tile__t{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--fs-xs);line-height:1.35;color:var(--text-muted);font-weight:600;min-height:calc(2 * 1.35em)}
  .id-tile__t img,.id-tile__t .id-icon{width:14px;height:14px;flex:none;margin-top:1px}
  .id-tile__t span{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .id-tile__body{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3);align-items:center}
  .id-tile__teams{display:grid;gap:var(--space-2);min-width:0}
  .id-tile__team{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-2);font-weight:600}
  .id-tile__team span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .id-tile__team b{font-variant-numeric:tabular-nums;font-size:var(--fs-lg)}
  .id-tile__foot{display:flex;align-items:center;gap:var(--space-2);margin-top:auto;padding-top:var(--space-2);border-top:1px dashed var(--line);font-size:var(--fs-sm)}
  .id-tile__pick{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
  .id-tile__foot .id-pill{margin-left:auto}
  .id-oddbox{display:flex;flex-direction:column;align-items:center;min-width:58px;border:1.5px solid var(--primary);color:var(--primary);border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);font-weight:var(--fw-black);font-variant-numeric:tabular-nums;line-height:1.3}
  .id-oddbox small{font-size:10px;font-weight:600;color:var(--text-muted);max-width:7rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

  /* строки «Лучшие ставки дня» / «Высокие коэффициенты» */
  .id-betrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2);align-items:center;padding:var(--space-2) 0;border-top:1px solid var(--line);color:var(--text);text-decoration:none}
  .id-bets h3 + .id-betrow{border-top:0;padding-top:0}
  .id-betrow:hover .id-betrow__team span{color:var(--link)}
  .id-betrow__main{display:grid;gap:2px;min-width:0}
  .id-betrow__meta{font-size:var(--fs-xs);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .id-betrow__team{display:flex;align-items:center;gap:var(--space-2);font-size:var(--fs-sm);font-weight:600;min-width:0}
  .id-betrow__team span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .id-betrow__team .id-crest--sm{width:18px;height:18px}

  /* «Как закончится матч» */
  .id-chances__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:var(--space-2);text-align:center}
  .id-chances__cell{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:2px;border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-2) var(--space-1);font-size:var(--fs-xs);color:var(--text-muted);min-width:0}
  .id-chances__cell b{color:var(--text);font-size:var(--fs-lg);font-variant-numeric:tabular-nums}
  .id-chances__cell span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .id-chances__cell.is-pick{border-color:var(--accent);background:var(--pick-bg)}
  .id-note{font-size:var(--fs-xs);color:var(--text-muted);margin:var(--space-2) 0 0}

  /* сетка рынков */
  .id-mkt{display:grid;gap:var(--space-3)}
  .id-mkt .id-label{margin:0 0 var(--space-1)}
  .id-mkt__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,170px),1fr));gap:var(--space-1)}
  .id-mkt__cell{display:flex;justify-content:space-between;gap:var(--space-2);background:var(--surface-2);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-size:var(--fs-sm);min-width:0}
  .id-mkt__cell span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .id-mkt__cell b{font-variant-numeric:tabular-nums;white-space:nowrap}
  .id-mkt__cell.is-pick{background:var(--pick-bg);box-shadow:inset 0 0 0 1.5px var(--accent);font-weight:var(--fw-bold)}
  .id-mkt--compact .id-mkt__grid{grid-template-columns:minmax(0,1fr)}

  /* финальная плашка, факты о матче */
  .id-final{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);background:var(--verdict-bg);color:var(--verdict-text);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);margin-block:var(--space-4)}
  .id-final__market{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:var(--fw-black)}
  .id-facts{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2)}
  .id-facts li{display:flex;align-items:center;gap:var(--space-2)}
  .id-panel > :first-child{margin-top:var(--space-4)}
  /* вкладка «Ставка»: подпись — значение */
  .id-dl{margin:0;display:grid;gap:0}
  .id-dl div{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--line)}
  .id-dl div:last-child{border-bottom:0}
  .id-dl dt{color:var(--text-muted);font-size:var(--fs-sm)}
  .id-dl dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
  .id-bet .id-btn{margin-top:var(--space-3)}

  /* архив: плитки */
  .id-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);margin-bottom:var(--space-4)}
  .id-stats div{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-3);text-align:center}
  .id-stats b{display:block;font-size:var(--fs-xl);font-variant-numeric:tabular-nums}
  .id-stats span{font-size:var(--fs-xs);color:var(--text-muted)}
  @media (max-width:600px){.id-stats{grid-template-columns:repeat(2,1fr)}}

  /* шапка турнира, пусто, ошибки, блоки */
  .id-head{display:flex;gap:var(--space-3);align-items:center;margin-bottom:var(--space-2)}
  .id-head h1{margin:0}
  .id-head p{margin:var(--space-1) 0 0;color:var(--text-muted)}
  .id-empty{color:var(--text-muted)}
  .id-error{text-align:center;padding:var(--space-8) 0}
  .id-error b{font-size:72px;color:var(--primary);font-family:var(--font-display)}
  .id-block{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4)}
  .id-block h3{margin:0 0 var(--space-2);font-size:var(--fs-md)}

  /* подвал */
  .id-footer{background:var(--surface);border-top:1px solid var(--line);padding:var(--space-7) 0 var(--space-8);font-size:var(--fs-sm)}
  .id-footer__nav,.id-social{display:flex;gap:var(--space-4);flex-wrap:wrap;margin-block:var(--space-3)}
  .id-footer__nav a{color:var(--text);text-decoration:none}
  .id-social a{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-pill);background:var(--surface-2);color:var(--text)}
  .id-responsible{display:flex;gap:var(--space-3);align-items:flex-start;background:var(--surface-2);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-block:var(--space-4)}
  .id-responsible b{display:block}
  .id-responsible p{margin:var(--space-1) 0 0;color:var(--text-muted)}
  .id-copy{color:var(--text-muted)}

  /* липкая панель (мобайл) */
  .id-sticky{position:fixed;inset:auto 0 0 0;z-index:40;background:var(--surface);border-top:1px solid var(--line);box-shadow:var(--shadow-2);padding:var(--space-2) var(--space-4) calc(var(--space-2) + env(safe-area-inset-bottom));display:none;align-items:center;gap:var(--space-3)}
  .id-sticky.is-shown{display:flex}
  .id-sticky__pick{min-width:0;flex:1;font-size:var(--fs-sm)}
  .id-sticky__pick b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .id-sticky .id-btn{padding:var(--space-2) var(--space-4)}
  @media (min-width:761px){.id-sticky{display:none !important}}
}

@layer utilities {
  .id-visually-hidden{position:absolute !important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .id-muted{color:var(--text-muted)}
  .id-won{color:var(--win)}
  .id-lost{color:var(--loss)}
}
@layer components {
  @media (prefers-color-scheme: dark){:root[data-scheme="auto"] .id-logo__img--light{display:none}:root[data-scheme="auto"] .id-logo__img--dark{display:inline}}
  /* Бренды и баннеры (docs/TZ-site-control.md §8) */
  .id-bk__list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
  .id-bk__item{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--line);border-left:3px solid var(--bk,var(--primary));border-radius:8px;background:var(--surface)}
  .id-bk__n{font-weight:700;color:var(--text-muted);min-width:1.2em}
  .id-bk__logo{height:28px;width:auto;max-width:96px;object-fit:contain}
  .id-bk__logo--text{display:inline-grid;place-items:center;width:28px;border-radius:6px;background:var(--bk,var(--primary));color:var(--primary-contrast);font-weight:700;font-size:12px}
  .id-bk__body{flex:1;min-width:0;display:grid}.id-bk__body small{color:var(--text-muted)}
  .id-bk__rating{font-weight:700}
  .id-bk--cards .id-bk__list{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.id-bk--cards .id-bk__item{flex-direction:column;align-items:flex-start}
  .id-bk--table .id-bk__item{border-radius:0;border-width:0 0 1px 0}
  .id-btn--sm{padding:6px 10px;font-size:13px}
  .id-bk--strip{background:none;border:0;padding:0;margin:var(--space-2) 0}.id-bk--strip h3{display:none}
  .id-bk--strip .id-bk__list{grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);overflow-x:auto}.id-bk--strip .id-bk__n,.id-bk--strip .id-bk__rating{display:none}
  .id-brand{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px;border-radius:10px;border:1px solid var(--line);border-left:4px solid var(--bk,var(--primary));background:var(--surface);margin:12px 0}
  .id-brand__body{flex:1;min-width:0;display:grid}.id-brand__body small{color:var(--text-muted)}
  .id-brand--strip{border-radius:0;border-width:0 0 0 4px}.id-brand--button{border:0;padding:0;background:none}
  .id-brand .id-note,.id-bk .id-note,.id-banner .id-note{flex-basis:100%;margin:0;font-size:11px;color:var(--text-muted)}
  .id-banner{margin:12px 0;text-align:center}.id-banner img{max-width:100%;height:auto;border-radius:8px}
}

/* Тема «classic» (docs/TZ-template.md §5): только токены — светлая и тёмная схемы. --primary/--accent может переопределить детка из настроек. */
@layer tokens {
  :root{
    --bg:#f3f5f8;--surface:#ffffff;--surface-2:#eef1f5;--surface-inverse:#111827;--line:#e2e7ee;
    --text:#151b26;--text-muted:#5f6b7a;--text-inverse:#f5f7fa;
    --primary:#0f766e;--primary-contrast:#ffffff;--accent:#f59e0b;--accent-contrast:#111111;
    --link:var(--primary);--link-hover:color-mix(in srgb,var(--primary) 78%,#000);--focus:#2563eb;
    --win:#15803d;--win-bg:#dcfce7;--loss:#b91c1c;--loss-bg:#fee2e2;--draw:#9aa3ae;--void:#6b7280;--void-bg:#e5e7eb;--live:#dc2626;--live-bg:#fee2e2;
    --mark-text:#ffffff;--star:#f59e0b;--bar:var(--primary);--bar-2:#64748b;--pick-bg:rgb(245 158 11 / .14);
    --hero-bg:color-mix(in srgb,var(--primary) 45%,#06231c);--hero-text:#f2f8f5;--hero-muted:#a9c4b9;--hero-chip:rgb(255 255 255 / .1);--pitch-stripe:rgb(255 255 255 / .03);--tile-hover:var(--primary);
    --verdict-bg:color-mix(in srgb,var(--primary) 28%,#0b1220);--verdict-text:#f8fafc;--verdict-muted:color-mix(in srgb,var(--primary) 30%,#c7d0db);
    color-scheme:light;
  }
  :root[data-scheme="dark"]{
    --bg:#0d1117;--surface:#161c24;--surface-2:#1f2732;--surface-inverse:#05070a;--line:#2a3441;
    --text:#e7ecf2;--text-muted:#97a3b2;--text-inverse:#e7ecf2;
    --primary-contrast:#ffffff;--link:color-mix(in srgb,var(--primary) 55%,#fff);--link-hover:color-mix(in srgb,var(--primary) 35%,#fff);--focus:#60a5fa;
    --win:#22c55e;--win-bg:rgb(34 197 94 / .15);--loss:#f87171;--loss-bg:rgb(248 113 113 / .15);--draw:#6b7684;--void:#9ca3af;--void-bg:rgb(156 163 175 / .15);--live:#f87171;--live-bg:rgb(248 113 113 / .15);
    --mark-text:#0d1117;--bar-2:#8796a8;--pick-bg:rgb(245 158 11 / .16);
    --hero-bg:color-mix(in srgb,var(--primary) 30%,#0b1512);--hero-muted:#95ada3;--pitch-stripe:rgb(255 255 255 / .025);--verdict-bg:color-mix(in srgb,var(--primary) 30%,#0d1117);
    --shadow-1:0 1px 2px rgb(0 0 0 / .4);--shadow-2:0 8px 24px rgb(0 0 0 / .5);
    color-scheme:dark;
  }
  @media (prefers-color-scheme:dark){
    :root[data-scheme="auto"]{
      --bg:#0d1117;--surface:#161c24;--surface-2:#1f2732;--surface-inverse:#05070a;--line:#2a3441;
      --text:#e7ecf2;--text-muted:#97a3b2;--text-inverse:#e7ecf2;
      --primary-contrast:#ffffff;--link:color-mix(in srgb,var(--primary) 55%,#fff);--link-hover:color-mix(in srgb,var(--primary) 35%,#fff);--focus:#60a5fa;
      --win:#22c55e;--win-bg:rgb(34 197 94 / .15);--loss:#f87171;--loss-bg:rgb(248 113 113 / .15);--draw:#6b7684;--void:#9ca3af;--void-bg:rgb(156 163 175 / .15);--live:#f87171;--live-bg:rgb(248 113 113 / .15);
      --mark-text:#0d1117;--bar-2:#8796a8;--pick-bg:rgb(245 158 11 / .16);
      --hero-bg:color-mix(in srgb,var(--primary) 30%,#0b1512);--hero-muted:#95ada3;--pitch-stripe:rgb(255 255 255 / .025);--verdict-bg:color-mix(in srgb,var(--primary) 30%,#0d1117);
      --shadow-1:0 1px 2px rgb(0 0 0 / .4);--shadow-2:0 8px 24px rgb(0 0 0 / .5);
      color-scheme:dark;
    }
  }
}

@layer tokens{:root{--primary:#0f766e;--accent:#f59e0b;}}