/* «Платные дороги» — тема «Магистраль»: язык дорожных знаков автомагистрали. Зелёные указатели с белой каймой,
   синие знаки сервиса, знаки ограничения скорости, разметка и километровые столбы. Префикс ab-. */

@font-face { font-family: "Overpass"; font-weight: 400; font-display: swap; src: url(fonts/overpass-cyrillic-400-normal.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Overpass"; font-weight: 400; font-display: swap; src: url(fonts/overpass-latin-400-normal.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+20BD, U+2190-2199, U+2212, U+00D7; }
@font-face { font-family: "Overpass"; font-style: italic; font-weight: 400; font-display: swap; src: url(fonts/overpass-cyrillic-400-italic.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Overpass"; font-style: italic; font-weight: 400; font-display: swap; src: url(fonts/overpass-latin-400-italic.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2212, U+00D7; }
@font-face { font-family: "Overpass"; font-weight: 600; font-display: swap; src: url(fonts/overpass-cyrillic-600-normal.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Overpass"; font-weight: 600; font-display: swap; src: url(fonts/overpass-latin-600-normal.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2212, U+00D7; }
@font-face { font-family: "Overpass"; font-weight: 800; font-display: swap; src: url(fonts/overpass-cyrillic-800-normal.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Overpass"; font-weight: 800; font-display: swap; src: url(fonts/overpass-latin-800-normal.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2212, U+00D7; }
@font-face { font-family: "Overpass"; font-weight: 900; font-display: swap; src: url(fonts/overpass-cyrillic-900-normal.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Overpass"; font-weight: 900; font-display: swap; src: url(fonts/overpass-latin-900-normal.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2212, U+00D7; }
@font-face { font-family: "Overpass Mono"; font-weight: 600; font-display: swap; src: url(fonts/overpass-mono-cyrillic-600-normal.woff2) format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Overpass Mono"; font-weight: 600; font-display: swap; src: url(fonts/overpass-mono-latin-600-normal.woff2) format("woff2"); unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2212, U+00D7; }

:root {
	--sky: #dfe7ea;
	--concrete: #eef0ec;
	--paper: #ffffff;
	--line: #d6dcd8;
	--line-2: #b5bfba;
	--green: #0b6b3a;
	--green-2: #0e8247;
	--green-dk: #08502b;
	--blue: #1757a6;
	--blue-dk: #0f4282;
	--red: #d0202a;
	--yellow: #f5c518;
	--asphalt: #2b2f33;
	--asphalt-2: #3a3f44;
	--ink: #15191c;
	--ink-2: #46505a;
	--muted: #6c7780;
	--link: #1757a6;
	--f-sign: "Overpass", "Trebuchet MS", Arial, sans-serif;
	--f-text: "Overpass", "Segoe UI", Arial, sans-serif;
	--f-mono: "Overpass Mono", Menlo, Consolas, monospace;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); font: 400 16.5px/1.55 var(--f-text); background: linear-gradient(180deg, var(--sky) 0, var(--concrete) 520px) var(--concrete); }
img { max-width: 100%; height: auto; }
a { color: var(--link); text-decoration: none; }
a:hover { color: var(--green); text-decoration: underline; text-underline-offset: 2px; }
:focus-visible { outline: 3px solid var(--yellow); outline-offset: 2px; }
h1, h2, h3, h4 { margin: 0; line-height: 1.1; font-weight: 800; }
p { margin: 0; }
b, strong { font-weight: 800; }
table { border-collapse: collapse; }
script, template { display: none !important; }
.ab-sr, .sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.ab-skip { position: absolute; left: 12px; top: -60px; z-index: 50; background: #fff; padding: 8px 14px; }
.ab-skip:focus { top: 12px; }
.float_left { float: none; }

.ab-shell { max-width: 1240px; margin: 0 auto; padding: 0 20px; }
.ab-main { padding: 26px 0 34px; }

/* общий вид знака: скругление, белая кайма внутри */
.ab-logo__sign rect, .ab-gantry__sign, .ab-hero__sign, .ab-exit__sign, .ab-dir__head, .ab-user__sign, .ab-card__sign, .ab-calc__head {
	border-radius: 10px;
}

/* ---------- шапка: портал с указателями */
.ab-mast { position: relative; padding-top: 18px; }
.ab-mast__in { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.ab-logo { display: flex; align-items: center; gap: 14px; color: var(--ink); }
.ab-logo:hover { color: var(--ink); text-decoration: none; }
.ab-logo__sign svg { display: block; width: 62px; height: 62px; }
.ab-logo__sign rect { fill: var(--blue); stroke: #fff; stroke-width: 2.4; }
.ab-logo__sign path { fill: none; stroke: #fff; stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
.ab-logo__text b { display: block; font: 900 40px/0.95 var(--f-sign); letter-spacing: -.01em; }
.ab-logo__text small { display: block; margin-top: 5px; font: 600 15px var(--f-text); color: var(--ink-2); }
.ab-search { display: flex; flex: 0 1 360px; }
.ab-search input { flex: 1; min-width: 0; height: 46px; padding: 0 16px; border: 3px solid var(--ink); border-right: 0; border-radius: 23px 0 0 23px; background: #fff; font: 600 15.5px var(--f-text); color: var(--ink); }
.ab-search input:focus { outline: none; border-color: var(--green); }
.ab-search__go { width: 54px; height: 46px; border: 3px solid var(--ink); border-radius: 0 23px 23px 0; background: var(--ink); cursor: pointer; }
.ab-search__go svg { width: 20px; height: 20px; fill: none; stroke: #fff; stroke-width: 2.6; }
/* портал: стальная балка и указатели */
.ab-gantry { position: relative; display: flex; flex-wrap: wrap; align-items: stretch; gap: 8px; margin-top: 20px; padding: 14px 12px 12px; background: linear-gradient(180deg, #8d979e, #6d777e 30%, #59626a); border-radius: 4px; box-shadow: 0 10px 20px -14px rgba(0, 0, 0, .6); }
.ab-gantry::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 6px; background: repeating-linear-gradient(90deg, #a7b0b6 0 18px, #7c868d 18px 20px); border-radius: 4px 4px 0 0; }
.ab-gantry__sign { display: flex; align-items: center; gap: 8px; padding: 9px 14px; font: 800 16px/1.1 var(--f-sign); color: #fff; background: var(--green); box-shadow: inset 0 0 0 2px var(--green), inset 0 0 0 4px #fff; }
.ab-gantry__sign i { font-style: normal; font-weight: 900; font-size: 20px; line-height: 1; }
.ab-gantry__sign:hover { color: #fff; background: var(--green-2); text-decoration: none; }
.ab-gantry__sign--blue { background: var(--blue); box-shadow: inset 0 0 0 2px var(--blue), inset 0 0 0 4px #fff; }
.ab-gantry__sign--blue:hover { background: #1d66bf; }
.ab-gantry__act { margin-left: auto; display: flex; align-items: center; }
/* разметка под порталом */
.ab-lanes { height: 34px; margin: 10px -20px 0; background:
	linear-gradient(90deg, transparent 0 18px, #fff 18px 22px, transparent 22px) 0 0 / 100% 100%,
	repeating-linear-gradient(90deg, transparent 0 40px, #f4f6f5 40px 90px) 0 15px / 100% 4px no-repeat,
	var(--asphalt); }

/* приветствие */
.ab-gantry .ab-user { display: flex; align-items: center; gap: 6px; }
.ab-user__pm { padding: 8px 10px; font: 800 15px var(--f-sign); color: #fff !important; }
.ab-user__pm b { display: inline-block; min-width: 22px; margin-left: 4px; padding: 0 6px; font-family: var(--f-mono); font-size: 13px; text-align: center; color: var(--ink); background: #fff; border-radius: 11px; }
.ab-user__pm b:not([data-n="0"]) { background: var(--yellow); }
.ab-user__menu { position: relative; }
.ab-user__menu summary { list-style: none; cursor: pointer; padding: 9px 14px; font: 800 15px var(--f-sign); color: var(--ink); background: #fff; border-radius: 8px; }
.ab-user__menu summary::-webkit-details-marker { display: none; }
.ab-user__drop { position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; min-width: 240px; margin: 0; padding: 6px; list-style: none; background: #fff; border-radius: 10px; box-shadow: 0 16px 30px -12px rgba(0, 0, 0, .45); }
.ab-user__drop a { display: block; padding: 8px 10px; color: var(--ink) !important; border-radius: 6px; }
.ab-user__drop a:hover { background: var(--concrete); text-decoration: none; }

/* ---------- кнопки: жёлтая временная разметка */
.ab-btn, .button, input.button, input[type="submit"], input[type="button"], button[type="submit"]:not(.ab-search__go) {
	display: inline-flex; align-items: center; justify-content: center; gap: 6px;
	min-height: 42px; padding: 8px 20px; border: 3px solid var(--ink); border-radius: 21px; cursor: pointer;
	font: 800 15.5px/1 var(--f-sign); color: var(--ink); background: var(--yellow);
}
.ab-btn:hover, .button:hover, input[type="submit"]:hover, button[type="submit"]:not(.ab-search__go):hover { background: #ffd84a; color: var(--ink); text-decoration: none; }

/* ---------- путь */
.ab-path { margin: 0 0 16px; font-size: 14.5px; }
.ab-path ol { display: flex; flex-wrap: wrap; margin: 0; padding: 0; list-style: none; }
.ab-path li:not(:last-child)::after { content: "→"; margin: 0 9px; color: var(--muted); font-weight: 800; }
.ab-page--index .ab-path { display: none; }

/* ---------- первый экран */
.ab-hero { display: grid; grid-template-columns: minmax(0, 1fr) 390px; gap: 24px; align-items: stretch; margin-bottom: 30px; }
.ab-hero__sign { display: flex; flex-direction: column; padding: 26px 28px 24px; color: #fff; background: var(--green); box-shadow: inset 0 0 0 4px var(--green), inset 0 0 0 7px #fff, 0 14px 30px -20px rgba(0, 0, 0, .7); }
.ab-hero__kicker { font: 600 14px var(--f-mono); letter-spacing: .06em; text-transform: uppercase; opacity: .85; }
.ab-hero__t { margin-top: 10px; max-width: 22ch; font: 900 44px/1.02 var(--f-sign); letter-spacing: -.012em; }
.ab-hero__routes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 22px; margin: 22px 0 0; padding: 0; list-style: none; }
.ab-hero__routes a { display: flex; align-items: center; gap: 10px; font: 800 18px var(--f-sign); color: #fff; }
.ab-hero__routes a::after { content: "→"; margin-left: auto; font-weight: 900; }
.ab-hero__routes a:hover { color: var(--yellow); text-decoration: none; }
.ab-hero__lead { margin-top: auto; padding-top: 20px; max-width: 64ch; font-size: 16.5px; color: #e6f2ea; }
.ab-shield { display: inline-grid; place-items: center; min-width: 54px; padding: 3px 8px 1px; font: 900 16px/1.2 var(--f-sign); color: #fff; background: var(--red); border: 2px solid #fff; border-radius: 6px; }
/* табло переменной информации */
.ab-vms { display: flex; flex-direction: column; padding: 16px 18px 14px; background: #121416; border-radius: 6px; box-shadow: inset 0 0 0 4px #24282c, 0 14px 30px -20px rgba(0, 0, 0, .8); }
.ab-vms__head { font: 600 14px var(--f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--yellow); text-shadow: 0 0 8px rgba(245, 197, 24, .55); }
.ab-latest { margin: 8px 0 0; padding: 0; list-style: none; }
.ab-latest li { padding: 9px 0; border-top: 1px dashed #3a3f44; font-size: 15px; line-height: 1.35; }
.ab-latest__t { display: block; font-weight: 600; color: #ffd75a; text-shadow: 0 0 6px rgba(245, 197, 24, .35); }
.ab-latest__t:hover { color: #fff; }
.ab-latest__m { display: block; margin-top: 2px; font: 600 12px var(--f-mono); color: #9aa3aa; }

/* ---------- «Платная или бесплатная?» */
.ab-calc { margin-bottom: 36px; padding: 0 0 18px; background: #fff; border-radius: 12px; box-shadow: 0 0 0 3px var(--ink), 0 16px 30px -22px rgba(0, 0, 0, .7); }
.ab-calc__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 20px; padding: 18px 22px; color: #fff; background: var(--blue); border-radius: 10px 10px 0 0; box-shadow: inset 0 0 0 4px var(--blue), inset 0 0 0 6px #fff; }
.ab-calc__head h2 { font: 900 34px var(--f-sign); }
.ab-calc__head p { max-width: 64ch; color: #e1ebf8; }
.ab-calc__body { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); grid-template-areas: "form road" "form out"; gap: 16px 24px; padding: 20px 22px 0; }
.ab-calc__form { grid-area: form; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; align-content: start; }
.ab-calc__f { display: flex; flex-direction: column; gap: 4px; font-size: 13.5px; font-weight: 600; color: var(--ink-2); }
.ab-calc__f input { width: 100%; min-height: 44px; font: 600 19px var(--f-mono) !important; }
.ab-calc__road { grid-area: road; display: flex; flex-direction: column; gap: 6px; padding: 10px; background: var(--asphalt); border-radius: 8px; }
.ab-lane { position: relative; height: 54px; border-radius: 4px; background: linear-gradient(90deg, transparent 0, transparent) , repeating-linear-gradient(90deg, #f4f6f5 0 26px, transparent 26px 50px) 0 50% / 100% 3px no-repeat, var(--asphalt-2); overflow: hidden; }
.ab-lane--toll { box-shadow: inset 4px 0 0 var(--green); }
.ab-lane--free { box-shadow: inset 4px 0 0 #8a939a; }
.ab-lane__name { position: absolute; left: 12px; top: 4px; font: 600 11px var(--f-mono); letter-spacing: .1em; text-transform: uppercase; color: #c9d0d5; }
.ab-lane__time { position: absolute; right: 10px; bottom: 6px; padding: 1px 8px; font: 600 14px var(--f-mono); color: var(--ink); background: var(--yellow); border-radius: 4px; }
.ab-car { position: absolute; left: 12px; bottom: 9px; width: 46px; height: 20px; border-radius: 6px 10px 4px 4px; background: #fff; box-shadow: inset -10px 0 0 #dce3e7, 0 2px 0 rgba(0, 0, 0, .4); transition: none; }
.ab-car::before { content: ""; position: absolute; left: 10px; top: -8px; width: 22px; height: 9px; border-radius: 6px 8px 0 0; background: #fff; }
.ab-lane--toll .ab-car, .ab-lane--toll .ab-car::before { background: var(--yellow); }
.ab-calc__out { grid-area: out; }
.ab-calc__nums { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; }
.ab-calc__nums div { padding: 10px 12px; background: var(--concrete); border-radius: 8px; }
.ab-calc__nums dt { font-size: 13px; color: var(--muted); }
.ab-calc__nums dd { margin: 2px 0 0; font: 900 22px var(--f-sign); }
.ab-calc__verdict { margin-top: 10px; padding: 12px 14px; font-weight: 600; color: #fff; background: var(--green); border-radius: 8px; box-shadow: inset 0 0 0 2px var(--green), inset 0 0 0 3px #fff; }
.ab-calc__verdict.is-free { background: var(--ink-2); box-shadow: inset 0 0 0 2px var(--ink-2), inset 0 0 0 3px #fff; }
.ab-calc__verdict.is-mid { color: var(--ink); background: var(--yellow); box-shadow: inset 0 0 0 2px var(--yellow), inset 0 0 0 3px var(--ink); }
.ab-calc__note { margin: 14px 22px 0; font-size: 13.5px; color: var(--muted); }

/* ---------- направления и съезды */
.ab-dir { margin-bottom: 30px; }
.ab-dir__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; padding: 12px 20px; color: #fff; background: var(--green); box-shadow: inset 0 0 0 3px var(--green), inset 0 0 0 5px #fff; }
.ab-dir__head a { font: 900 28px var(--f-sign); color: #fff; }
.ab-dir__head a:hover { color: var(--yellow); text-decoration: none; }
.ab-dir__head i { font-style: normal; font-weight: 900; font-size: 30px; }
.ab-dir__exits { display: grid; grid-template-columns: repeat(auto-fill, minmax(440px, 1fr)); gap: 16px 22px; }
.ab-exit { position: relative; display: grid; grid-template-columns: 44px minmax(0, 1fr); grid-template-rows: auto auto; gap: 6px 10px; }
.ab-exit__km { grid-row: span 2; align-self: start; display: flex; flex-direction: column; align-items: center; padding: 6px 0 22px; font: 900 18px/1 var(--f-sign); color: var(--ink); background: #fff; border-radius: 6px 6px 2px 2px; box-shadow: 0 0 0 2px var(--ink); position: relative; }
.ab-exit__km::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 14px; background: repeating-linear-gradient(-45deg, var(--ink) 0 5px, #fff 5px 10px); border-radius: 0 0 2px 2px; }
.ab-exit__km small { font: 600 10px var(--f-mono); letter-spacing: .08em; margin-bottom: 2px; }
.ab-exit__sign { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 14px 16px; color: #fff; background: var(--green); box-shadow: inset 0 0 0 3px var(--green), inset 0 0 0 5px #fff, 0 10px 20px -16px rgba(0, 0, 0, .7); transition: transform .2s ease; }
.ab-exit:hover .ab-exit__sign { transform: translateY(-2px); }
.ab-exit__ico { position: relative; display: grid; place-items: center; width: 46px; height: 46px; background: #fff; border-radius: 6px; }
.ab-exit__ico.forum_on::after { content: ""; position: absolute; right: -4px; top: -4px; width: 13px; height: 13px; border-radius: 50%; background: var(--yellow); border: 2px solid var(--green); }
.ab-ico { width: 28px; height: 28px; fill: none; stroke: var(--green); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ab-exit__name { display: block; font: 900 20px/1.1 var(--f-sign); color: #fff; }
.ab-exit__name:hover { color: var(--yellow); text-decoration: none; }
.ab-exit__desc { margin-top: 4px; font-size: 14px; line-height: 1.4; color: #dcefe3; }
.ab-exit__qty { font: 600 12.5px/1.45 var(--f-mono); color: #cfe7d8; text-align: right; white-space: nowrap; }
.ab-exit__qty b { font-weight: 600; color: #fff; }
.ab-exit__last { grid-column: 2; padding: 0 4px; font-size: 13.5px; line-height: 1.35; color: var(--ink-2); }
.ab-exit__last:empty { display: none; }
.ab-exit__lk { font: 600 11.5px var(--f-mono); text-transform: uppercase; color: var(--muted); }
.ab-exit__lt { font-weight: 600; }
.ab-exit__lm { color: var(--muted); }
.ab-exit__lm a { color: var(--ink-2); }

/* ---------- шапки раздела и темы */
.ab-screen { display: flex; flex-direction: column; gap: 16px; }
.ab-head { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 4px 18px; padding: 18px 22px; color: #fff; background: var(--green); border-radius: 10px; box-shadow: inset 0 0 0 4px var(--green), inset 0 0 0 6px #fff; }
.ab-head__ico { grid-column: 1; grid-row: 1 / span 2; display: grid; place-items: center; width: 56px; height: 56px; background: #fff; border-radius: 8px; }
.ab-head__ico .ab-ico { width: 32px; height: 32px; }
.ab-head__km { grid-column: 1; grid-row: 3; justify-self: center; display: flex; flex-direction: column; align-items: center; padding: 3px 8px; font: 900 16px/1 var(--f-sign); color: var(--ink); background: #fff; border-radius: 4px; }
.ab-head__km small { font: 600 9px var(--f-mono); }
.ab-pagehead { grid-column: 2; font: 900 38px/1.05 var(--f-sign); color: #fff; letter-spacing: -.01em; }
.ab-pagehead--thread { font-size: 32px; }
.ab-head__desc, .ab-head__meta, .ab-head__forum { grid-column: 2; }
.ab-head__desc { font-size: 16px; color: #dcefe3; }
.ab-head__desc:empty { display: none; }
.ab-head__meta { font: 600 13px var(--f-mono); color: #cfe7d8; }
.ab-head__forum a { font: 800 16px var(--f-sign); color: var(--yellow); }
.ab-head__act { grid-column: 3; grid-row: 1 / span 3; }
.ab-head__act:empty { display: none; }

/* ---------- список тем */
.ab-threads { background: #fff; border-radius: 10px; box-shadow: 0 0 0 2px var(--line-2); overflow: hidden; }
.ab-tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 14px; padding: 10px 14px; background: var(--concrete); border-bottom: 2px solid var(--line); }
.ab-tools:empty { display: none; }
.ab-screen > .ab-tools { background: none; border: 0; padding: 0; }
.ab-tools--foot { border-top: 2px solid var(--line); border-bottom: 0; }
.ab-tools__right { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: 14px; }
.ab-sort { display: flex; flex-wrap: wrap; gap: 4px; }
.ab-sort a { padding: 5px 12px; font: 800 14px var(--f-sign); color: var(--ink); background: #fff; border: 2px solid var(--ink); border-radius: 16px; }
.ab-sort a:hover { background: var(--yellow); text-decoration: none; }
.ab-mod-row { display: none; }
.ab-mod-row:has(td) { display: table; }
.ab-table { width: 100%; }
.ab-table th { padding: 8px 14px; font: 600 12px var(--f-mono); letter-spacing: .08em; text-transform: uppercase; text-align: left; color: var(--muted); border-bottom: 2px solid var(--ink); }
.ab-table td { padding: 12px 14px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.ab-trow:hover td { background: #f8faf8; }
.ab-table .num { width: 100px; text-align: center; font: 600 15px var(--f-mono); }
.ab-table th.num { text-align: center; }
.ab-table .num a { color: var(--ink); }
.ab-trow__state { display: inline-block; width: 11px; height: 11px; margin-right: 9px; border-radius: 50%; border: 2px solid var(--line-2); vertical-align: 0; }
.ab-trow__state[class*="new"] { background: var(--yellow); border-color: var(--ink); }
.ab-trow__title { font-weight: 800; font-size: 17px; }
.ab-trow__meta { display: block; margin-top: 2px; padding-left: 22px; font-size: 13.5px; color: var(--muted); }
.ab-trow__last { width: 210px; font-size: 13.5px; }
.ab-trow__last span { display: block; color: var(--muted); }
.forumdisplay_sticky .ab-trow__title::before { content: "Важно"; margin-right: 8px; padding: 1px 8px; font: 800 13px var(--f-sign); color: var(--ink); background: var(--yellow); border-radius: 10px; vertical-align: 1px; }
.pagination, .ab-pages { display: flex; flex-wrap: wrap; align-items: center; gap: 3px; }
.pagination .pages { margin-right: 6px; font-size: 13.5px; color: var(--muted); }
.pagination a, .pagination_current { min-width: 34px; padding: 4px 8px; text-align: center; font: 800 14px var(--f-sign); background: #fff; border: 2px solid var(--ink); border-radius: 17px; color: var(--ink); }
.pagination a:hover { background: var(--yellow); text-decoration: none; }
.pagination_current { color: #fff; background: var(--green); border-color: var(--green); }

/* ---------- сообщения: указатель участника */
.ab-posts { display: flex; flex-direction: column; gap: 18px; }
.ab-post { background: #fff; border-radius: 12px; box-shadow: 0 0 0 2px var(--line-2), 0 12px 24px -20px rgba(0, 0, 0, .7); }
.ab-post--first { box-shadow: 0 0 0 3px var(--green), 0 12px 24px -20px rgba(0, 0, 0, .7); }
.ab-post__row { display: grid; grid-template-columns: 250px minmax(0, 1fr); }
.ab-post .ab-user { display: flex; flex-direction: column; gap: 10px; padding: 14px; background: var(--concrete); border-radius: 12px 0 0 12px; }
.ab-user__sign { padding: 14px 16px 12px; color: #fff; background: var(--green); box-shadow: inset 0 0 0 3px var(--green), inset 0 0 0 5px #fff; }
.ab-user__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
/* знак «ограничение скорости» */
.ab-speed { display: grid; place-items: center; flex: none; width: 46px; height: 46px; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 5px var(--red), 0 0 0 2px #fff; }
.ab-speed b { font: 900 17px/1 var(--f-sign); color: var(--ink); letter-spacing: -.02em; }
/* фото участника (если загружено): слева от знака скорости, той же высоты */
.ab-ava { display: block; flex: none; width: 46px; height: 46px; margin-left: auto; object-fit: cover; border-radius: 6px; box-shadow: 0 0 0 2px #fff; }
.ab-card__sign .ab-ava { width: 64px; height: 64px; }
.ab-user__name { display: block; font: 900 22px/1.05 var(--f-sign); color: #fff; word-break: break-word; }
.ab-user__name:hover { color: var(--yellow); text-decoration: none; }
.ab-user__rank { display: block; margin-top: 4px; font: 600 12.5px var(--f-mono); text-transform: uppercase; letter-spacing: .06em; color: #cfe7d8; }
.ab-ufacts { margin: 10px 0 0; padding: 0; list-style: none; font-size: 14px; line-height: 1.3; }
.ab-ufacts li { padding: 5px 0; border-top: 1px solid rgba(255, 255, 255, .28); font-weight: 600; word-break: break-word; }
.ab-ufacts span { display: block; font: 600 10.5px var(--f-mono); letter-spacing: .08em; text-transform: uppercase; color: #a8d2b8; }
/* синий знак доверия */
.ab-trust { display: flex; align-items: center; gap: 10px; }
.ab-trust__sign { position: relative; display: grid; place-items: center; flex: none; width: 52px; height: 52px; color: #fff; background: var(--blue); border-radius: 8px; box-shadow: inset 0 0 0 2px var(--blue), inset 0 0 0 4px #fff; }
.ab-trust__sign svg { position: absolute; top: 7px; width: 20px; height: 20px; fill: #fff; }
.ab-trust__sign b { margin-top: 20px; font: 900 14px var(--f-sign); }
.ab-trust__t { display: flex; flex-direction: column; font: 600 11px var(--f-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.ab-trust__t small { font: 800 15px var(--f-sign); letter-spacing: 0; text-transform: none; color: var(--ink); }
.ab-trust--0 .ab-trust__sign { background: #9aa3aa; box-shadow: inset 0 0 0 2px #9aa3aa, inset 0 0 0 4px #fff; }
.ab-trust--3 .ab-trust__sign svg { fill: var(--yellow); }
.ab-post__main { min-width: 0; display: flex; flex-direction: column; }
.ab-post__bar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 14px; padding: 12px 22px; border-bottom: 2px solid var(--concrete); font-size: 14px; color: var(--muted); }
.ab-post__no { font: 900 15px var(--f-sign); color: var(--ink); }
.ab-post__no:hover { color: var(--green); }
.ab-starter { padding: 2px 10px; font: 800 13px var(--f-sign); color: var(--ink); background: var(--yellow); border-radius: 10px; }
.ab-post__edit:empty, .ab-post__check:empty, .ab-post__status:empty { display: none; }
.ab-post__check { margin-left: auto; }
.ab-post__body { flex: 1; padding: 16px 22px 20px; font-size: 17px; line-height: 1.62; overflow-wrap: anywhere; }
.ab-post__body a.mycode_url, .signature a.mycode_url { color: var(--link); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px; font-weight: 800; }
.ab-post__body a.mycode_url:hover { color: var(--green); }
.ab-post__body a.mycode_url[target="_blank"]::after { content: "↗"; margin-left: 2px; font-size: .8em; display: inline-block; text-decoration: none; }
blockquote, .mycode_quote { margin: 10px 0; padding: 10px 14px; background: var(--concrete); border-left: 5px solid var(--yellow); border-radius: 0 8px 8px 0; font-size: 15.5px; }
blockquote cite, .mycode_quote cite { display: block; margin-bottom: 4px; font: 800 13.5px var(--f-sign); font-style: normal; color: var(--ink); }
blockquote cite > span { font-weight: 400; color: var(--muted); }
.codeblock { margin: 10px 0; padding: 8px 12px; background: var(--asphalt); color: #fff; border-radius: 6px; overflow: auto; }
.codeblock .title { font: 600 12px var(--f-mono); text-transform: uppercase; color: var(--yellow); }
.codeblock code, .codeblock pre { font: 14px/1.5 var(--f-mono); white-space: pre-wrap; }
.post_body ul, .post_body ol { padding-left: 24px; }
.mycode_s { text-decoration: line-through; }
.signature { margin: 0 22px 12px; padding-top: 8px; border-top: 2px solid var(--concrete); font-size: 14px; color: var(--muted); }
.post_meta { padding: 0 22px; }
.post_meta:not(:has(*:not(:empty))) { display: none; }
.ab-post__controls { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px; padding: 9px 14px; border-top: 2px solid var(--concrete); }
.ab-post__controls:not(:has(a)) { display: none; }
.postbit_buttons { display: flex; flex-wrap: wrap; gap: 4px; }
.postbit_buttons a { padding: 4px 12px; font: 800 13.5px var(--f-sign); color: var(--ink); border: 2px solid var(--ink); border-radius: 15px; }
.postbit_buttons a span { background: none !important; padding: 0 !important; }
.postbit_buttons a:hover { background: var(--yellow); text-decoration: none; }
.ab-adjacent { display: flex; justify-content: space-between; gap: 10px; font: 800 16px var(--f-sign); }

/* ---------- ответ и гость */
.ab-reply, .ab-guest { padding: 16px 18px; background: #fff; border-radius: 12px; box-shadow: 0 0 0 2px var(--line-2); }
.ab-reply__head h2 { font: 900 24px var(--f-sign); }
.ab-reply__head p { margin-top: 2px; color: var(--muted); font-size: 14px; }
.ab-reply textarea { width: 100%; min-height: 150px; margin-top: 10px; }
.ab-reply__opts { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; font-size: 14px; }
.ab-reply__opts label { display: inline-flex; gap: 6px; align-items: center; }
.ab-reply__captcha:not(:has(td)) { display: none; }
.ab-reply__act { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 12px; }
.ab-reply__full, .ab-reply__mq { font-size: 14px; }
.ab-guest { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin: 0; }
.ab-guest p { font-weight: 800; }
.ab-box { margin-bottom: 16px; }
.ab-modtools { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; font-size: 14px; }
.ab-modtools:not(:has(a, select, input)) { display: none; }
.thread_tools { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.thread_tools li { background: none !important; padding: 0 !important; }
.ab-modtools > div:empty, .ab-browsing:empty { display: none; }
.ab-browsing { font-size: 14px; }

/* ---------- профиль */
.ab-card { display: grid; grid-template-columns: 360px minmax(0, 1fr); gap: 24px; align-items: start; }
.ab-card__sign { padding: 22px 24px; color: #fff; background: var(--green); box-shadow: inset 0 0 0 4px var(--green), inset 0 0 0 7px #fff, 0 14px 30px -20px rgba(0, 0, 0, .7); }
.ab-card__sign .ab-speed { width: 64px; height: 64px; box-shadow: inset 0 0 0 7px var(--red), 0 0 0 2px #fff; }
.ab-card__sign .ab-speed b { font-size: 23px; }
.ab-card__name { font: 900 38px/1.02 var(--f-sign); word-break: break-word; }
.ab-card__dir { display: flex; align-items: center; gap: 10px; margin-top: 18px; padding-top: 12px; border-top: 2px solid rgba(255, 255, 255, .5); font: 800 20px var(--f-sign); }
.ab-card__dir i { font-style: normal; font-weight: 900; font-size: 26px; }
.ab-card__side { display: flex; flex-direction: column; gap: 14px; }
.ab-card__facts { width: 100%; font-size: 16px; background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 0 0 2px var(--line-2); }
.ab-card__facts th { width: 38%; padding: 10px 16px; text-align: left; font-weight: 400; color: var(--muted); border-bottom: 1px solid var(--line); }
.ab-card__facts td { padding: 10px 16px; font-weight: 800; border-bottom: 1px solid var(--line); }
.ab-card__links { font-weight: 400; font-size: 14px; margin-left: 8px; }
.ab-card__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ab-card__actions:empty { display: none; }
.ab-card__note { font-size: 13.5px; color: var(--muted); }
.ab-hidden-empty:not(:has(td)) { display: none; }
.ab-profile-extra:empty { display: none; }

/* ---------- вход, ошибки, ожидание */
.ab-gate, .ab-error, .ab-wait { max-width: 500px; margin: 24px auto; padding: 22px 24px; background: #fff; border-radius: 12px; box-shadow: 0 0 0 3px var(--ink); }
.ab-gate h1, .ab-error h1, .ab-wait h1 { font: 900 30px var(--f-sign); }
.ab-form { display: flex; flex-direction: column; gap: 12px; margin-top: 14px; }
.ab-field { display: flex; flex-direction: column; gap: 4px; font-weight: 800; font-size: 14px; }
.ab-field .textbox { width: 100%; }
.ab-form__row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; font-size: 14px; }
.ab-checkline { display: inline-flex; align-items: center; gap: 6px; }
.ab-form__submit { width: 100%; }
.ab-error__text { margin-top: 10px; }
.ab-error__links { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-top: 16px !important; }
.ab-wait { margin-top: 12vh; text-align: center; }
.ab-wait p { margin: 10px 0 14px; }

/* ---------- стандартные блоки MyBB */
.tborder { width: 100%; margin-bottom: 14px; background: #fff; border-radius: 10px; overflow: hidden; box-shadow: 0 0 0 2px var(--line-2); }
.tborder td, .tborder th { padding: 9px 12px; border-bottom: 1px solid var(--line); text-align: left; }
.thead { color: #fff; font: 900 18px var(--f-sign); background: var(--green); }
.thead a, .thead strong { color: #fff; }
.tcat { background: var(--concrete); font: 600 12px var(--f-mono); text-transform: uppercase; color: var(--ink-2); }
.trow1 { background: #fff; }
.trow2 { background: #f8faf8; }
.trow_shaded, .unapproved_post { background: #fff6cf !important; }
.trow_selected, tr.trow_selected td { background: #fff3bf !important; }
.trow_deleted, .deleted_post_hidden { background: #fde2e2 !important; }
.trow_sep { background: var(--concrete); font-weight: 800; }
.tfoot { background: var(--concrete); }
.smalltext { font-size: 13px; color: var(--muted); }
.largetext { font: 900 20px var(--f-sign); }
.expcolimage { float: right; }
fieldset { border: 2px solid var(--line-2); border-radius: 8px; padding: 10px 14px; }
fieldset legend { padding: 0 6px; font: 800 14px var(--f-sign); }
input.textbox, input[type="text"], input[type="password"], input[type="email"], input[type="number"], input[type="search"]:not(#ab-q), input[type="url"], input[type="date"], select, textarea {
	max-width: 100%; min-height: 42px; padding: 7px 12px; font: 16px var(--f-text); color: var(--ink);
	background: #fff; border: 2px solid var(--line-2); border-radius: 8px;
}
textarea { min-height: 110px; line-height: 1.5; resize: vertical; }
select[multiple] { min-height: 110px; }
input.textbox:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="email"]:focus, input[type="number"]:focus, select:focus, textarea:focus { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px rgba(11, 107, 58, .18); }
input[type="checkbox"], input[type="radio"] { width: 17px; height: 17px; accent-color: var(--green); }
.ab-formtable td { padding: 5px 0; border: 0; }
.ab-formtable .textbox { width: 100%; }
.ab-formtable .button { width: 100%; margin-top: 6px; }
.ab-formtable div[align="center"] { text-align: left; }
.red_alert, .pm_alert { margin-bottom: 12px; padding: 10px 14px; border-radius: 8px; font-weight: 800; }
.red_alert { background: #fde2e2; color: #8a1016; }
.pm_alert { background: #fff6cf; }
div.error { margin-bottom: 12px; padding: 10px 14px; background: #fde2e2; border-radius: 8px; color: #8a1016; }
div.error ul { margin: 6px 0 0; padding-left: 20px; }
.popup_menu { background: #fff; border-radius: 10px; box-shadow: 0 14px 28px -12px rgba(0, 0, 0, .45); padding: 4px; }
.popup_menu .popup_item { display: block; padding: 6px 10px; color: var(--ink); }
.popup_menu .popup_item:hover { background: var(--concrete); text-decoration: none; }
.blocker { position: fixed; inset: 0; z-index: 9998; background: rgba(20, 24, 28, .65); padding: 20px; overflow: auto; text-align: center; }
.blocker::before { content: ""; display: inline-block; height: 100%; vertical-align: middle; }
.modal { display: none; vertical-align: middle; position: relative; z-index: 9999; width: 92%; max-width: 440px; padding: 0 0 16px; text-align: left; background: #fff; border-radius: 12px; box-shadow: 0 24px 50px -16px rgba(0, 0, 0, .7); }
.modal form, .modal > div { padding: 0 16px; }
.modal a.close-modal { position: absolute; top: 12px; right: 12px; width: 28px; height: 28px; text-indent: -9999px; overflow: hidden; }
.modal a.close-modal::before { content: "×"; position: absolute; inset: 0; display: grid; place-items: center; text-indent: 0; font-size: 24px; color: #fff; }
.ab-modal__title { margin: 0 -16px 12px; padding: 14px 18px; font: 900 22px var(--f-sign); color: #fff; background: var(--green); border-radius: 12px 12px 0 0; box-shadow: inset 0 0 0 3px var(--green), inset 0 0 0 5px #fff; }
.jGrowl { z-index: 9999; position: fixed; }
.jGrowl.top-right { top: 16px; right: 16px; }
.jGrowl .jGrowl-notification, .jGrowl .jGrowl-closer { width: 280px; margin-top: 8px; padding: 10px 12px; background: var(--green); color: #fff; border-radius: 8px; }
.jGrowl .jGrowl-close { float: right; cursor: pointer; }

/* ---------- подвал: асфальт */
.ab-foot { margin: 10px -20px 0; color: #c7ced3; background: var(--asphalt); }
.ab-foot__lanes { height: 6px; background: repeating-linear-gradient(90deg, #f4f6f5 0 50px, transparent 50px 90px); }
.ab-foot__in { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 20px; padding: 24px 20px 30px; }
.ab-foot__name { font: 900 30px var(--f-sign); color: #fff; }
.ab-foot__note { margin-top: 8px; max-width: 70ch; font-size: 14px; }
.ab-foot__links { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.ab-foot__links a { font: 800 16px var(--f-sign); color: #fff; }
.ab-foot__links a:hover { color: var(--yellow); }

/* ---------- адаптив */
@media (max-width: 1080px) {
	.ab-hero { grid-template-columns: minmax(0, 1fr); }
	.ab-calc__body { grid-template-columns: minmax(0, 1fr); grid-template-areas: "form" "road" "out"; }
}
@media (max-width: 760px) {
	body { font-size: 16px; }
	.ab-shell { padding: 0 12px; }
	.ab-lanes, .ab-foot { margin-left: -12px; margin-right: -12px; }
	.ab-mast__in { flex-direction: column; align-items: stretch; gap: 12px; }
	.ab-logo__sign svg { width: 48px; height: 48px; }
	.ab-logo__text b { font-size: 30px; }
	.ab-logo__text small { font-size: 13px; }
	.ab-search { flex: 1 1 auto; }
	.ab-gantry { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin-top: 14px; padding: 12px 8px 10px; }
	.ab-gantry__sign { flex: none; white-space: nowrap; font-size: 14.5px; padding: 8px 12px; }
	.ab-gantry__act { margin-left: 6px; flex: none; }
	.ab-hero__sign { padding: 20px 18px; }
	.ab-hero__t { font-size: 31px; }
	.ab-hero__routes { grid-template-columns: minmax(0, 1fr); }
	.ab-calc__head { padding: 14px 16px; }
	.ab-calc__head h2 { font-size: 27px; }
	.ab-calc__body { padding: 14px 14px 0; }
	.ab-calc__form { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; }
	.ab-calc__f { font-size: 12.5px; }
	.ab-calc__nums dd { font-size: 19px; }
	.ab-calc__note { margin: 12px 14px 0; }
	.ab-dir__head a { font-size: 22px; }
	.ab-dir__exits { grid-template-columns: minmax(0, 1fr); }
	.ab-exit__sign { grid-template-columns: auto minmax(0, 1fr); }
	.ab-exit__qty { grid-column: 2; text-align: left; }
	.ab-head { grid-template-columns: minmax(0, 1fr); padding: 14px 16px; }
	.ab-head__ico, .ab-head__km { display: none; }
	.ab-pagehead, .ab-head__desc, .ab-head__meta, .ab-head__forum, .ab-head__act { grid-column: 1; grid-row: auto; }
	.ab-pagehead { font-size: 28px; }
	.ab-pagehead--thread { font-size: 25px; }
	.ab-post__row { grid-template-columns: minmax(0, 1fr); }
	.ab-post .ab-user { flex-direction: row; align-items: stretch; padding: 10px; border-radius: 12px 12px 0 0; }
	.ab-user__sign { flex: 1; padding: 12px; }
	.ab-user__top { margin-bottom: 6px; }
	.ab-ufacts { display: flex; flex-wrap: wrap; gap: 0 12px; }
	.ab-ufacts li { border: 0; padding: 2px 0; }
	.ab-trust { flex-direction: column; justify-content: center; text-align: center; }
	.ab-trust__t small { font-size: 13px; }
	.ab-post__bar { padding: 10px 12px; }
	.ab-post__body { padding: 12px; }
	.signature { margin: 0 12px 10px; }
	.ab-card { grid-template-columns: minmax(0, 1fr); }
	.ab-table thead { display: none; }
	.ab-table, .ab-table tbody, .ab-table tr, .ab-table td { display: block; width: 100%; }
	.ab-table tr { padding: 10px 12px; border-bottom: 1px solid var(--line); }
	.ab-table td { padding: 0; border: 0; background: none !important; }
	.ab-trow__meta { padding-left: 0; }
	.ab-trow__state { display: none; }
	.ab-table .num { display: inline-block; width: auto; margin: 4px 12px 0 0; text-align: left; font-size: 13px; color: var(--muted); }
	.ab-table .num:nth-of-type(2)::after { content: " отв."; }
	.ab-table .num:nth-of-type(3)::after { content: " просм."; }
	.ab-trow__last { display: none !important; }
	.ab-foot__in { grid-template-columns: minmax(0, 1fr); padding: 20px 14px 24px; }
}
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ===== ссылки в сообщениях: свой стиль форума (у каждого форума сетки свой, не повторять) ===== */
:is(.post_body, .signature, [class*="-post__body"], [class*="-post__sign"]) a.mycode_url, :is(.post_body, .signature, [class*="-post__body"], [class*="-post__sign"]) a.mycode_url:link, :is(.post_body, .signature, [class*="-post__body"], [class*="-post__sign"]) a.mycode_url:visited { font-style: normal; text-decoration: none; text-underline-offset: auto; text-shadow: none; background: none; border: 0; box-shadow: none; padding: 0; border-radius: 0; overflow-wrap: anywhere; -webkit-box-decoration-break: clone; box-decoration-break: clone; color: #1757a6; font-weight: 600; background: repeating-linear-gradient(90deg, #0b6b3a 0 8px, transparent 8px 13px) 0 100% / 100% 2px no-repeat; padding-bottom: 2px; }
:is(.post_body, .signature, [class*="-post__body"], [class*="-post__sign"]) a.mycode_url:hover, :is(.post_body, .signature, [class*="-post__body"], [class*="-post__sign"]) a.mycode_url:focus-visible { color: #0b6b3a; background: linear-gradient(#0b6b3a, #0b6b3a) 0 100% / 100% 2px no-repeat; }
:is(.post_body, .signature, [class*="-post__body"], [class*="-post__sign"]) a.mycode_url[target="_blank"]::after { content: none; display: none; }
/* ===== конец стиля ссылок ===== */
