/* PBD TechCenter -- shared light-theme stylesheet for every techcenter-*.html page.
   Deliberately a different visual system from the rest of the (dark-themed) customer site --
   this is intentional per spec. The black global header comes from nav-shared.css and is left
   alone; everything below it is this light theme. Include this file BEFORE nav-shared.css. */

:root {
  --tc-bg: #ffffff;
  --tc-bg-soft: #f7f7f9;
  --tc-card: #ffffff;
  --tc-border: #e5e5ea;
  --tc-shadow: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
  --tc-shadow-lg: 0 8px 24px rgba(0,0,0,0.10), 0 2px 8px rgba(0,0,0,0.06);
  --tc-text: #0a0a0c;
  --tc-text-secondary: #4b4b55;
  --tc-text-muted: #6b6b76;
  --tc-red: #d1132e;
  --tc-red-dark: #a80f25;
  --tc-gold: #d4af5a;
  --tc-gold-light: #f5d78e;
  --tc-purple: #7c3aed;
  --tc-purple-dark: #5b21b6;
  --tc-blue: #2563eb;
  --tc-blue-bg: #eef4ff;
  --tc-amber: #b45309;
  --tc-amber-bg: #fef3e0;
  --tc-green: #15803d;
  --tc-green-bg: #e9f9ee;
  --tc-radius: 10px;
  --tc-radius-lg: 14px;
}

/* margin:0 resets the browser's default ~8px <body> margin -- without it, html's default white
   background showed through as a visible white border along the top/left/right of the dark
   header (bottom is less noticeable since it blends into the page content below). Every other
   customer-site page zeroes this via a `*{margin:0}` reset in its own inline <style> block;
   techcenter.css never had one since it's a deliberately separate light theme, so this needed
   its own explicit reset. */
html, body.tc-page { margin: 0; }
body.tc-page { background: var(--tc-bg-soft); color: var(--tc-text); font-size: 16px; line-height: 1.6; font-family: 'Segoe UI', -apple-system, BlinkMacSystemFont, Arial, sans-serif; }
body.tc-page * { box-sizing: border-box; }
body.tc-page a { text-decoration: none; color: inherit; }
body.tc-page h1, body.tc-page h2, body.tc-page h3, body.tc-page h4 { color: var(--tc-text); margin: 0; }
body.tc-page p { margin: 0; }
body.tc-page ul { margin: 0; padding: 0; list-style: none; }
body.tc-page button { font-family: inherit; cursor: pointer; }
body.tc-page img { max-width: 100%; display: block; }

.tc-h1 { font-size: 40px; font-weight: 800; line-height: 1.15; letter-spacing: -0.5px; }
.tc-h2 { font-size: 26px; font-weight: 700; line-height: 1.25; }
.tc-h3 { font-size: 19px; font-weight: 700; line-height: 1.3; }
.tc-sub { font-size: 16px; color: var(--tc-text-secondary); line-height: 1.6; }

.tc-wrap { max-width: 1240px; margin: 0 auto; padding: 0 24px; }
@media (max-width: 700px) { .tc-wrap { padding: 0 16px; } }

/* ---------- TechCenter section subnav (Ken, 2026-08-01) ----------
   Static persistent bar of section tabs (Home/TechLine/Calculators/Library/Manuals) under the
   TechCenter header, built by techcenter-subnav.js into <nav class="tc-subnav" id="tcSubnav">.
   This block only styles the bar's own container + plain tab links; the "pulldown for quick
   access" dropdowns under Calculators/Library/Manuals reuse nav-shared.css's existing
   .nav-group/.nav-group-menu rules verbatim (same pattern as the main nav's "Tuning" group) so
   the hover behavior, red-underline active state, and .pbd-header-light theming all match without
   duplicating any of that CSS here.

   ALIGNMENT (2026-08-01, 3rd pass): originally tried to line "Home" up exactly under "Dashboard"
   via JS measurement of #navLinks -- caused a visible jump on every page load (removed, see the
   "2nd pass" note preserved in git history). 2nd pass used justify-content:flex-end with only the
   header's own 32px edge padding, which put the bar under the SEARCH BOX / ACCOUNT CHIP instead
   of under #navLinks -- those sit to the right of #navLinks in the header (brand -- navLinks
   (margin-left:auto) -- search -- nav-right), so flex-end against the bare 32px edge overshoots
   nav.links' actual right edge. Measured live (2026-08-01): #navLinks' right edge sits ~510px
   from the viewport's right edge (250px search box + the account cluster + the header's 32px
   gaps between them) -- that gap is constant regardless of viewport width since search/nav-right
   are both fixed-width (flex:none), so it's safe to hardcode as CSS padding-right instead of
   re-measuring per page. Still zero JS, still stable on first paint -- just the correct offset
   this time. */
.tc-subnav { display: flex; align-items: stretch; justify-content: flex-end; height: 44px; background: var(--tc-bg); border-bottom: 1px solid var(--tc-border); padding: 0 32px; padding-right: 530px; }
.tc-subnav > a, .tc-subnav .nav-group > a {
  display: flex; align-items: center; gap: 4px; height: 100%; padding: 0 16px;
  font: 600 13.5px 'Archivo', sans-serif; color: var(--tc-text-secondary); text-decoration: none;
  white-space: nowrap; border-bottom: 3px solid transparent;
  transition: color .13s ease, border-color .13s ease;
}
.tc-subnav > a:hover, .tc-subnav .nav-group > a:hover { color: var(--tc-text); }
.tc-subnav > a.active, .tc-subnav .nav-group > a.active, .tc-subnav .nav-group.group-active > a {
  color: var(--tc-text); border-bottom-color: var(--tc-red); font-weight: 700;
}
.tc-subnav .nav-group { position: relative; }
.tc-subnav .pbd-nav-chevron { width: 10px; height: 10px; }
/* MOBILE (2026-08-02 fix): this bar was never given mobile handling when it was built -- it kept
   rendering at every viewport width, including phones, with no equivalent in the hamburger drawer
   (the drawer only carries the main site's top-level nav; it has no concept of TechCenter's
   section tabs). Below 860px that's already wrong on its own (a second, desktop-shaped tab row
   bolted under a header that has otherwise fully switched to hamburger/drawer mode), and it was
   actively broken there too: the bar's base rule above carries `padding-right:530px` (sized to
   clear the desktop search box + account cluster), which nothing between 641-860px ever reset --
   at a real mobile/tablet width that padding alone is wider than the viewport, forcing the whole
   page to scroll horizontally. `nav-shared.css` treats 860px as the one true mobile breakpoint
   (header switches to hamburger/drawer exactly there) -- match it here instead of the old,
   unrelated 640px cutoff below, and hide the bar entirely rather than trying to patch its layout
   for a width class it was never designed for. */
@media (max-width: 860px) { .tc-subnav { display: none; } }

/* ---------- Breadcrumb ---------- */
.tc-breadcrumb { font-size: 13px; color: var(--tc-text-muted); padding: 20px 0 0; }
.tc-breadcrumb a { color: var(--tc-text-muted); font-weight: 600; }
.tc-breadcrumb a:hover { color: var(--tc-red); }
.tc-breadcrumb .sep { margin: 0 6px; }
.tc-breadcrumb .current { color: var(--tc-text); font-weight: 600; }

/* ---------- Page head ---------- */
.tc-page-head { padding: 20px 0 8px; }
.tc-page-head .tc-h1 { font-size: 30px; margin-bottom: 6px; }

/* ---------- Buttons ---------- */
.tc-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 22px; border-radius: 999px; font-weight: 700; font-size: 14px; border: none; cursor: pointer; white-space: nowrap; transition: background .15s, border-color .15s, opacity .15s; }
/* Chained ".tc-btn.tc-btn-*" (rather than ".tc-btn-*" alone) deliberately -- "body.tc-page a {
   color: inherit }" earlier in this file has specificity (0,1,2), which beat a bare single-class
   ".tc-btn-primary { color: #fff }" (0,1,0) and silently left every red primary button rendering
   near-black text (Ken flagged this 2026-07-23: "red buttons with black type... hard to read").
   Two classes together = (0,2,0), which reliably outranks the anchor-color reset -- and every
   real call site already renders both classes together (class="tc-btn tc-btn-primary" etc, see
   techcenter-common.js), so this doesn't require touching any renderer. */
.tc-btn.tc-btn-primary { background: var(--tc-red); color: #fff; }
.tc-btn.tc-btn-primary:hover { background: var(--tc-red-dark); }
.tc-btn.tc-btn-secondary { background: #fff; color: var(--tc-text); border: 1px solid var(--tc-border); }
.tc-btn.tc-btn-secondary:hover { border-color: var(--tc-text-muted); }
.tc-btn-block { width: 100%; }
.tc-btn:disabled { opacity: .55; cursor: not-allowed; }
.tc-btn.tc-btn-gold { background: linear-gradient(135deg, var(--tc-gold-light), var(--tc-gold)); color: #3a2f10; }
.tc-btn.tc-btn-purple { background: linear-gradient(135deg, var(--tc-purple), var(--tc-purple-dark)); color: #fff; }

/* ---------- Cards (base) ---------- */
.tc-card { background: var(--tc-card); border: 1px solid var(--tc-border); box-shadow: var(--tc-shadow); border-radius: var(--tc-radius-lg); padding: 24px; }
.tc-section { margin: 40px 0; }
.tc-section-title { font-size: 22px; font-weight: 800; margin-bottom: 18px; }

/* ---------- Hero (homepage) ---------- */
.tc-hero { padding: 56px 0 40px; text-align: center; }
.tc-hero-title { font-size: 44px; font-weight: 800; letter-spacing: -1px; line-height: 1.1; }
.tc-hero-title .tc-tech { color: var(--tc-text); }
.tc-hero-title .tc-center { color: var(--tc-red); }
.tc-hero .tc-hero-tagline { font-size: 19px; font-weight: 600; color: var(--tc-text-secondary); margin-top: 10px; }
.tc-hero .tc-hero-sub { font-size: 15px; color: var(--tc-text-muted); margin-top: 8px; max-width: 560px; margin-left: auto; margin-right: auto; }
@media (max-width: 700px) { .tc-hero-title { font-size: 30px; } }

.tc-search-bar { display: flex; align-items: center; gap: 10px; max-width: 640px; margin: 28px auto 0; background: #fff; border: 1px solid var(--tc-border); box-shadow: var(--tc-shadow-lg); border-radius: 999px; padding: 8px 8px 8px 22px; }
.tc-search-bar input { flex: 1; border: none; outline: none; font-size: 16px; background: transparent; color: var(--tc-text); min-width: 0; }
.tc-search-bar .tc-btn { flex-shrink: 0; }
.tc-search-bar-sm { max-width: 100%; margin: 0; }

.tc-pill-row { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 22px; }
.tc-pill-btn { background: #fff; border: 1px solid var(--tc-border); border-radius: 999px; padding: 9px 18px; font-size: 13.5px; font-weight: 600; color: var(--tc-text-secondary); }
.tc-pill-btn:hover { border-color: var(--tc-red); color: var(--tc-red); }

/* ---------- Category quick-link cards ---------- */
.tc-cat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
@media (max-width: 1080px) { .tc-cat-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 700px) { .tc-cat-grid { grid-template-columns: repeat(2, 1fr); } }
/* display:flex column + margin-top:auto on the count line (below) is what actually keeps every
   card's "Browse ->" link pinned to the same baseline across a row -- category names wrap to 1
   or 2 lines depending on length ("Start Here" vs "Tuning & Installation"), and without this the
   cards were plain blocks: CSS Grid's default align-items:stretch matches each card's overall
   height to the tallest one in its row, but a plain block doesn't redistribute that extra space,
   so it was left as blank room at the very bottom of the shorter-titled cards instead of moving
   their Browse link down to line up with the others. The title itself also gets a fixed
   min-height (2 lines' worth) so the icon/count/link block starts at the same offset on every
   card too, not just ends at the same one. */
.tc-cat-card { padding: 22px 20px; display: flex; flex-direction: column; }
.tc-cat-icon { width: 46px; height: 46px; border-radius: 12px; background: var(--tc-bg-soft); display: flex; align-items: center; justify-content: center; margin-bottom: 14px; }
.tc-cat-card h3 { font-size: 16px; line-height: 1.3; margin-bottom: 6px; min-height: 42px; }
.tc-cat-card p { font-size: 14px; color: var(--tc-text-muted); line-height: 1.5; margin-bottom: 12px; min-height: 40px; }
.tc-cat-count { font-size: 12.5px; color: var(--tc-text-muted); font-weight: 600; margin-top: auto; }
.tc-cat-link { display: inline-flex; align-items: center; gap: 4px; margin-top: 12px; color: var(--tc-red); font-weight: 700; font-size: 13.5px; }

/* ---------- Two column feature row ---------- */
.tc-two-col-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 800px) { .tc-two-col-row { grid-template-columns: 1fr; } }
.tc-feature-panel { display: flex; flex-direction: column; gap: 10px; }
.tc-feature-panel .tc-feature-icon-row { display: flex; align-items: center; gap: 12px; }
.tc-feature-panel h3 { font-size: 18px; }
.tc-feature-panel p { color: var(--tc-text-secondary); font-size: 14.5px; line-height: 1.6; }
.tc-feature-panel-link { text-decoration: none; color: inherit; transition: box-shadow .15s ease, border-color .15s ease, transform .15s ease; }
.tc-feature-panel-link:hover { box-shadow: var(--tc-shadow-lg); border-color: var(--tc-text-muted); transform: translateY(-1px); }
.tc-feature-panel-link:hover h3 { color: var(--tc-red); }
.tc-feature-panel-cta { pointer-events: none; display: inline-flex; align-items: center; gap: 6px; }
.tc-feature-panel-link:hover .tc-feature-panel-cta .tc-card-arrow { transform: translateX(3px); }

/* ---------- Stat / trust row ---------- */
.tc-stats-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; text-align: center; padding: 8px 0; }
@media (max-width: 800px) { .tc-stats-row { grid-template-columns: 1fr 1fr; } }
.tc-stats-row .tc-stat-block { padding: 10px; }
.tc-stats-row .tc-stat-block .tc-icon { color: var(--tc-red); margin: 0 auto 10px; }
.tc-stats-row .tc-stat-block h4 { font-size: 15px; margin-bottom: 4px; }
.tc-stats-row .tc-stat-block p { font-size: 13px; color: var(--tc-text-muted); }

/* ---------- Membership / pricing panel ---------- */
.tc-membership-panel { text-align: center; padding: 40px 0; }
.tc-membership-panel .tc-section-title { font-size: 26px; }
.tc-pricing-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; max-width: 760px; margin: 26px auto 0; text-align: left; }
@media (max-width: 700px) { .tc-pricing-grid { grid-template-columns: 1fr; } }
.tc-pricing-card { border-radius: var(--tc-radius-lg); padding: 28px; border: 1px solid var(--tc-border); background: #fff; box-shadow: var(--tc-shadow); }
.tc-pricing-card.tc-pricing-gold { border-color: var(--tc-gold); background: linear-gradient(160deg, #fffaf0, #fff 55%); }
.tc-pricing-card.tc-pricing-purple { border-color: var(--tc-purple); background: linear-gradient(160deg, #f7f1ff, #fff 55%); }
.tc-pricing-name { font-size: 12px; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase; }
.tc-pricing-gold .tc-pricing-name { color: var(--tc-gold); }
.tc-pricing-purple .tc-pricing-name { color: var(--tc-purple); }
.tc-pricing-price { font-size: 32px; font-weight: 800; margin: 8px 0 4px; }
.tc-pricing-price span { font-size: 14px; font-weight: 600; color: var(--tc-text-muted); }
.tc-pricing-list { margin: 16px 0 20px; display: flex; flex-direction: column; gap: 9px; }
.tc-pricing-list li { font-size: 14px; color: var(--tc-text-secondary); display: flex; gap: 8px; align-items: flex-start; }
.tc-pricing-list li::before { content: '\2713'; color: var(--tc-green); font-weight: 800; }
.tc-pricing-note { font-size: 12px; color: var(--tc-text-muted); margin-top: 20px; }

/* ---------- Layout: main + sidebar ---------- */
.tc-layout { display: grid; grid-template-columns: 1fr 320px; gap: 32px; align-items: start; padding: 24px 0 60px; }
@media (max-width: 980px) { .tc-layout { grid-template-columns: 1fr; } }
.tc-layout-3col { display: grid; grid-template-columns: 240px 1fr 320px; gap: 28px; align-items: start; padding: 24px 0 60px; }
@media (max-width: 1180px) { .tc-layout-3col { grid-template-columns: 220px 1fr; } .tc-layout-3col .tc-sidebar-right { grid-column: 1 / -1; } }
@media (max-width: 780px) { .tc-layout-3col { grid-template-columns: 1fr; } }
.tc-sidebar { position: sticky; top: 88px; display: flex; flex-direction: column; gap: 20px; }
/* Sticky sidebars only make sense while they sit in their own column next to a taller, independently-
   scrolling main column. Once a breakpoint above stacks a sidebar into the same single flow as main
   (right/related sidebar goes full-width at <=1180px; left/filters sidebar stacks under main at
   <=780px once .tc-layout-3col drops to one column), sticky instead pins that panel on screen while
   the user scrolls, visually covering the results/content below it -- e.g. "Refine Results" covering
   the TechCenter Library category results on mobile. Turn sticky off exactly where each sidebar stops
   being a side-by-side column. */
@media (max-width: 1180px) { .tc-sidebar-right { position: static; top: auto; } }
@media (max-width: 780px) { .tc-sidebar { position: static; top: auto; } }

/* ---------- YOUR ACCESS card ---------- */
.tc-access-card { }
.tc-access-head { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; color: var(--tc-text-muted); margin-bottom: 12px; }
.tc-access-head .tc-icon { color: var(--tc-red); }
.tc-access-tier { font-size: 20px; font-weight: 800; margin-bottom: 10px; }
.tc-access-list { display: flex; flex-direction: column; gap: 7px; margin-bottom: 16px; }
.tc-access-list li { font-size: 13.5px; color: var(--tc-text-secondary); padding-left: 18px; position: relative; }
.tc-access-list li::before { content: '\2713'; position: absolute; left: 0; color: var(--tc-green); font-weight: 800; }
.tc-access-copy { font-size: 13.5px; color: var(--tc-text-secondary); line-height: 1.6; margin-bottom: 16px; }
.tc-accent-gold { border-color: var(--tc-gold); box-shadow: 0 0 0 1px var(--tc-gold-light) inset, var(--tc-shadow); }
.tc-accent-purple { border-color: var(--tc-purple); box-shadow: 0 0 0 1px #e4d4ff inset, var(--tc-shadow); }

/* ---------- TechLine "Coming Soon" panel ---------- */
.tc-techline-card { }
.tc-techline-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.tc-techline-title-wrap { display: flex; align-items: center; gap: 8px; font-weight: 800; font-size: 15px; }
.tc-techline-title-wrap .tc-icon { color: var(--tc-red); }
.tc-techline-title-wrap img.tc-techline-logo { height: 30.8px; width: auto; display: block; }
/* Same optical-center nudge as the TechLine page header -- see nav-shared.css/techcenter-techline.html
   comment: the logo's speech-bubble tail adds empty space below the wordmark bar, pulling the
   image's own vertical center (and anything flex-centered against it) down. */
.tc-techline-head .tc-badge-ai { margin-top: -4px; }
.tc-badge-ai { background: var(--tc-red); color: #fff; font-size: 10.5px; font-weight: 800; letter-spacing: .5px; padding: 3px 8px; border-radius: 6px; }
.tc-techline-body { text-align: center; padding: 14px 6px 18px; }
.tc-techline-label { font-size: 12.5px; font-weight: 700; color: var(--tc-text-muted); text-transform: uppercase; letter-spacing: .6px; margin-bottom: 10px; }
.tc-techline-msg { font-size: 20px; font-weight: 800; color: var(--tc-red); margin-bottom: 8px; }
.tc-techline-sub { font-size: 13px; color: var(--tc-text-muted); line-height: 1.6; }
.tc-techline-input-mock { display: flex; gap: 8px; background: var(--tc-bg-soft); border: 1px solid var(--tc-border); border-radius: 999px; padding: 6px 6px 6px 16px; }
.tc-techline-input-mock input { flex: 1; border: none; background: transparent; font-size: 13.5px; color: var(--tc-text-muted); outline: none; }
.tc-techline-input-mock button { width: 34px; height: 34px; border-radius: 50%; border: none; background: var(--tc-border); color: #fff; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }

/* ---------- TechLine active (working) state -- gated server-side, see techcenter-common.js
   techlinePanel(); only ever rendered for a qualifying signed-in staff email. ---------- */
.tc-techline-input-mock input:not(:disabled) { color: var(--tc-text); cursor: text; }
.tc-techline-input-mock button:not(:disabled) { background: var(--tc-red); cursor: pointer; }
.tc-techline-input-mock button:not(:disabled):hover { background: var(--tc-red-dark); }
.tc-techline-loading { font-size: 13px; color: var(--tc-text-muted); text-align: left; padding: 8px 2px; }
.tc-techline-answer { text-align: left; margin-top: 4px; }
.tc-techline-reply { font-size: 13.5px; color: var(--tc-text); line-height: 1.55; white-space: normal; }
.tc-techline-citations { font-size: 11.5px; color: var(--tc-text-muted); margin-top: 8px; line-height: 1.5; }
.tc-techline-error { font-size: 13px; color: var(--tc-red); }

/* ---------- Popular Topics list ---------- */
.tc-topics-list { display: flex; flex-direction: column; gap: 4px; }
.tc-topics-list a { display: flex; justify-content: space-between; padding: 10px 4px; font-size: 14px; color: var(--tc-text-secondary); border-bottom: 1px solid var(--tc-border); }
.tc-topics-list a:last-child { border-bottom: none; }
.tc-topics-list a:hover { color: var(--tc-red); }
/* Non-linked entry (e.g. a Related Product with no product_url on file) -- same layout as the
   linked <a> rows above so a mix of linked/unlinked entries in one list still looks uniform. */
.tc-topics-list-static, .tc-topics-list > .tc-topics-list-static:last-child { display: flex; justify-content: space-between; padding: 10px 4px; font-size: 14px; color: var(--tc-text-secondary); border-bottom: 1px solid var(--tc-border); }
.tc-topics-list > *:last-child { border-bottom: none; }

/* ---------- Card grid (library / search / calculators / manuals) ----------
   Task (Ken): cards were a narrow 2-column grid inside the already-narrow center column of
   the 3-col layout, making every card skinny and tall, and only the small "View Resource"
   footer text was clickable. Rebuilt as a single-column stack of wide horizontal rows -- icon
   left, content filling the remaining width -- with the entire unlocked-resource card now a
   real link (see resourceCardHtml in techcenter-common.js), not just a footer link. */
.tc-card-grid { display: flex; flex-direction: column; gap: 14px; }
.tc-resource-card { display: flex; flex-direction: row; align-items: center; gap: 18px; text-decoration: none; color: inherit; transition: box-shadow .15s ease, border-color .15s ease, transform .15s ease; }
a.tc-resource-card:hover { box-shadow: var(--tc-shadow-lg); border-color: var(--tc-text-muted); transform: translateY(-1px); }
a.tc-resource-card:hover .tc-card-title { color: var(--tc-red); }
a.tc-resource-card:hover .tc-card-arrow { transform: translateX(3px); }
.tc-resource-card-locked { align-items: flex-start; }
@media (max-width: 640px) { .tc-resource-card { flex-direction: column; align-items: stretch; } .tc-card-arrow { display: none; } }
.tc-card-body { flex: 1; min-width: 0; }
.tc-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.tc-card-top-left { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.tc-card-cat { font-size: 11.5px; color: var(--tc-text-muted); font-weight: 600; }
.tc-badge { font-size: 11px; font-weight: 800; letter-spacing: .4px; text-transform: uppercase; padding: 4px 9px; border-radius: 6px; }
.tc-type-walkthrough { background: var(--tc-blue-bg); color: var(--tc-blue); }
.tc-type-article { background: #e9f9f5; color: #0f766e; }
.tc-type-calculator { background: #f3ecff; color: var(--tc-purple-dark); }
.tc-type-manual { background: #fff1e6; color: #b45309; }
.tc-type-download { background: #f1f1f4; color: #44444c; }
.tc-type-video { background: #ffe9f1; color: #be185d; }
.tc-type-faq { background: var(--tc-green-bg); color: var(--tc-green); }
.tc-type-checklist { background: #fff4d6; color: #92620a; }
.tc-type-default { background: var(--tc-bg-soft); color: var(--tc-text-muted); }
.tc-pill { font-size: 11px; font-weight: 700; padding: 4px 10px; border-radius: 999px; display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.tc-pill-public { background: var(--tc-green-bg); color: var(--tc-green); }
.tc-pill-locked { background: var(--tc-amber-bg); color: var(--tc-amber); }
/* Staff-only draft preview badge (see resourceCardHtml in techcenter-common.js) -- customers
   never receive a draft resource from the backend at all, so this class only ever renders for a
   signed-in PBD staff session previewing unpublished content. */
.tc-pill-draft { background: #f3ecff; color: var(--tc-purple-dark); }
.tc-resource-card-draft { border: 1px dashed var(--tc-purple); }
.tc-draft-banner { display: flex; align-items: center; gap: 10px; background: #f3ecff; color: var(--tc-purple-dark); border: 1px dashed var(--tc-purple); border-radius: 8px; padding: 10px 14px; font-size: 13px; margin-bottom: 14px; }
.tc-draft-banner .tc-icon { color: var(--tc-purple); flex-shrink: 0; }
.tc-card-icon { width: 48px; height: 48px; border-radius: 10px; background: var(--tc-bg-soft); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.tc-card-icon .tc-icon { color: var(--tc-text); }
.tc-card-title { font-size: 18px; font-weight: 700; margin-bottom: 4px; transition: color .15s ease; }
.tc-card-summary { font-size: 14.5px; color: var(--tc-text-secondary); line-height: 1.55; margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.tc-card-bottom-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.tc-tag-row { display: flex; flex-wrap: wrap; gap: 6px; }
.tc-tag { font-size: 11.5px; background: var(--tc-bg-soft); color: var(--tc-text-muted); padding: 3px 9px; border-radius: 999px; font-weight: 600; }
.tc-tag-compat { background: var(--tc-blue-bg); color: var(--tc-blue); }
.tc-card-meta { font-size: 12.5px; color: var(--tc-text-muted); white-space: nowrap; }
.tc-dot { margin: 0 2px; }
.tc-card-arrow { font-size: 20px; color: var(--tc-text-muted); flex-shrink: 0; transition: transform .15s ease; }
.tc-locked-banner { display: flex; align-items: center; gap: 10px; background: var(--tc-amber-bg); color: var(--tc-amber); border-radius: 8px; padding: 12px 14px; font-size: 13px; font-weight: 600; margin: 8px 0 10px; }
.tc-locked-banner .tc-icon { flex-shrink: 0; }
.tc-icon-inline { vertical-align: -2px; margin-right: 2px; }

.tc-empty-state { grid-column: 1 / -1; text-align: center; padding: 60px 20px; color: var(--tc-text-muted); }
.tc-empty-state .tc-icon { color: var(--tc-border); margin-bottom: 12px; }
.tc-empty-state p { font-size: 15px; }
.tc-loading-state { grid-column: 1 / -1; text-align: center; padding: 60px 20px; color: var(--tc-text-muted); font-size: 14px; }

/* ---------- Filter sidebar (library / search) ---------- */
.tc-filter-card { position: static; }
.tc-filter-title { font-size: 12px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; color: var(--tc-text-muted); margin-bottom: 16px; }
.tc-filter-group { margin-bottom: 22px; }
.tc-filter-group:last-child { margin-bottom: 0; }
.tc-filter-group-title { font-size: 13px; font-weight: 700; margin-bottom: 10px; color: var(--tc-text); }
.tc-filter-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 0; font-size: 14px; color: var(--tc-text-secondary); cursor: pointer; }
.tc-filter-row input { accent-color: var(--tc-red); width: 16px; height: 16px; }
.tc-filter-row label { flex: 1; display: flex; align-items: center; gap: 6px; cursor: pointer; }
.tc-filter-count { font-size: 12px; color: var(--tc-text-muted); }
.tc-filter-select { width: 100%; padding: 9px 10px; border-radius: 8px; border: 1px solid var(--tc-border); background: #fff; font-size: 13.5px; color: var(--tc-text); }
.tc-filter-clear { font-size: 13px; color: var(--tc-red); font-weight: 700; margin-top: 6px; display: inline-block; }

.tc-chip-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 16px 0; }
.tc-chip { display: inline-flex; align-items: center; gap: 6px; background: var(--tc-bg-soft); border: 1px solid var(--tc-border); border-radius: 999px; padding: 5px 12px; font-size: 12.5px; font-weight: 600; color: var(--tc-text-secondary); }
.tc-chip button { background: none; border: none; color: var(--tc-text-muted); font-size: 13px; line-height: 1; padding: 0; }
.tc-chip-clear { font-size: 12.5px; font-weight: 700; color: var(--tc-red); }

.tc-results-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 6px 0 18px; }
.tc-results-count { font-size: 13.5px; color: var(--tc-text-muted); }
.tc-sort-select { padding: 8px 12px; border-radius: 8px; border: 1px solid var(--tc-border); background: #fff; font-size: 13.5px; color: var(--tc-text); }

.tc-type-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 18px; }
.tc-type-tab { padding: 8px 16px; border-radius: 999px; border: 1px solid var(--tc-border); background: #fff; font-size: 13.5px; font-weight: 600; color: var(--tc-text-secondary); }
.tc-type-tab.active { background: var(--tc-text); color: #fff; border-color: var(--tc-text); }
.tc-type-tab .tc-count { color: var(--tc-text-muted); margin-left: 4px; }
.tc-type-tab.active .tc-count { color: rgba(255,255,255,.7); }

/* ---------- Search results (horizontal list rows) ---------- */
.tc-result-row { display: flex; gap: 16px; align-items: center; padding: 20px; margin-bottom: 14px; text-decoration: none; color: inherit; transition: box-shadow .15s ease, border-color .15s ease, transform .15s ease; }
a.tc-result-row:hover { box-shadow: var(--tc-shadow-lg); border-color: var(--tc-text-muted); transform: translateY(-1px); }
a.tc-result-row:hover .tc-result-title { color: var(--tc-red); }
a.tc-result-row:hover .tc-card-arrow { transform: translateX(3px); }
div.tc-result-row { align-items: flex-start; }
.tc-result-icon { width: 44px; height: 44px; border-radius: 10px; background: var(--tc-bg-soft); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.tc-result-body { flex: 1; min-width: 0; }
.tc-result-type { font-size: 11px; font-weight: 800; letter-spacing: .5px; text-transform: uppercase; color: var(--tc-red); margin-bottom: 4px; }
.tc-result-title { font-size: 17px; font-weight: 700; margin-bottom: 5px; transition: color .15s ease; }
.tc-result-desc { font-size: 14px; color: var(--tc-text-secondary); line-height: 1.5; margin-bottom: 8px; }
.tc-result-pill-wrap { flex-shrink: 0; align-self: center; }
@media (max-width: 640px) { .tc-result-row { flex-wrap: wrap; } .tc-result-row .tc-card-arrow { display: none; } }

/* ---------- Article page ---------- */
.tc-toc { }
.tc-toc-title { font-size: 12px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; color: var(--tc-text-muted); margin-bottom: 14px; }
.tc-toc-list a { display: block; padding: 7px 0 7px 12px; font-size: 13.5px; color: var(--tc-text-secondary); border-left: 2px solid var(--tc-border); }
.tc-toc-list a.active { color: var(--tc-red); font-weight: 700; border-left-color: var(--tc-red); }
.tc-toc-list a:hover { color: var(--tc-red); }
.tc-toc-download { margin-top: 16px; }

.tc-article-header { margin-bottom: 28px; }
.tc-article-type { font-size: 12px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: var(--tc-red); margin-bottom: 8px; }
.tc-article-updated { font-size: 12.5px; color: var(--tc-text-muted); margin-bottom: 8px; }
.tc-article-title { font-size: 34px; font-weight: 800; line-height: 1.15; margin-bottom: 10px; }
.tc-article-summary { font-size: 16.5px; color: var(--tc-text-secondary); line-height: 1.6; margin-bottom: 16px; }
.tc-article-pill-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.tc-difficulty-pill { display: inline-flex; align-items: center; gap: 6px; }
.tc-difficulty-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--tc-green); }
.tc-readtime-pill { display: inline-flex; align-items: center; gap: 5px; }

.tc-article-body { }
.tc-block { margin: 28px 0; }
.tc-block-heading { font-size: 24px; font-weight: 700; margin-bottom: 14px; padding-top: 6px; }
.tc-intro p, .tc-richtext p { font-size: 16px; line-height: 1.7; color: var(--tc-text-secondary); margin-bottom: 12px; }
.tc-richtext p:last-child { margin-bottom: 0; }
.tc-image img { border-radius: var(--tc-radius-lg); border: 1px solid var(--tc-border); }
.tc-image figcaption, .tc-caption { font-size: 13px; color: var(--tc-text-muted); margin-top: 8px; text-align: center; }
.tc-video-frame { position: relative; padding-top: 56.25%; border-radius: var(--tc-radius-lg); overflow: hidden; border: 1px solid var(--tc-border); }
.tc-video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: none; }
.tc-video-placeholder { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 50px 20px; background: var(--tc-bg-soft); border-radius: var(--tc-radius-lg); color: var(--tc-text-muted); font-size: 13.5px; }

.tc-feature-card { border: 1px solid var(--tc-border); border-radius: var(--tc-radius-lg); padding: 22px; background: #fff; }
.tc-feature-icon { width: 44px; height: 44px; border-radius: 10px; background: var(--tc-bg-soft); display: flex; align-items: center; justify-content: center; margin-bottom: 12px; }
.tc-feature-card h3 { font-size: 17px; margin-bottom: 6px; }
.tc-feature-card p { font-size: 14.5px; color: var(--tc-text-secondary); line-height: 1.6; }

.tc-steps-list { display: flex; flex-direction: column; gap: 16px; }
.tc-step { display: flex; gap: 16px; align-items: flex-start; border: 1px solid var(--tc-border); border-radius: var(--tc-radius-lg); padding: 18px 20px; background: #fff; }
.tc-step-num { width: 38px; height: 38px; border-radius: 50%; background: var(--tc-red); color: #fff; font-weight: 800; display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 15px; }
.tc-step-num .tc-icon { color: #fff; }
.tc-step-body h4 { font-size: 15.5px; margin-bottom: 5px; }
.tc-step-body p { font-size: 14.5px; color: var(--tc-text-secondary); line-height: 1.6; }
.tc-screenshot-placeholder { display: flex; align-items: center; gap: 8px; margin-top: 8px; padding: 14px 16px; background: #f7f7f9; border: 1px dashed #c7c7ce; border-radius: 8px; color: var(--tc-text-secondary); font-size: 13px; font-style: italic; }
.tc-screenshot-placeholder .tc-icon { color: #9a9aa3; flex-shrink: 0; }
.tc-step-screenshot { display: block; margin-top: 8px; max-width: 100%; border-radius: 8px; border: 1px solid var(--tc-border, #e4e4e8); }

.tc-troubleshooting-list { display: flex; flex-direction: column; gap: 10px; }
.tc-troubleshooting-item { background: #fff; border: 1px solid var(--tc-border, #e4e4e8); border-radius: 8px; padding: 12px 14px; }
.tc-troubleshooting-problem { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: 14px; margin-bottom: 6px; }
.tc-troubleshooting-problem .tc-icon-inline { color: var(--tc-red); flex-shrink: 0; }
.tc-troubleshooting-solution { font-size: 14px; color: var(--tc-text-secondary); line-height: 1.6; padding-left: 24px; }

.tc-decision-list { display: flex; flex-direction: column; gap: 10px; }
.tc-decision-item { background: #fff; border: 1px solid var(--tc-border, #e4e4e8); border-radius: 8px; padding: 12px 14px; }
.tc-decision-question { font-weight: 700; font-size: 14px; margin-bottom: 8px; }
.tc-decision-branches { display: flex; flex-direction: column; gap: 6px; }
.tc-decision-branch { display: flex; align-items: flex-start; gap: 8px; font-size: 14px; color: var(--tc-text-secondary); line-height: 1.5; padding-left: 4px; }
.tc-decision-label { flex-shrink: 0; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; border-radius: 4px; padding: 2px 7px; margin-top: 1px; }
.tc-decision-yes .tc-decision-label { background: #e8f5ea; color: #1e7a34; }
.tc-decision-no .tc-decision-label { background: #fdeceb; color: var(--tc-red); }

.tc-tree-list { display: flex; flex-direction: column; gap: 4px; }
.tc-tree-node { display: flex; gap: 14px; padding: 12px 0; border-left: 2px solid var(--tc-border); padding-left: 20px; margin-left: 6px; position: relative; }
.tc-tree-dot { position: absolute; left: -7px; top: 16px; width: 12px; height: 12px; border-radius: 50%; background: var(--tc-red); }
.tc-tree-body h4 { font-size: 15px; margin-bottom: 4px; }
.tc-tree-body p { font-size: 14px; color: var(--tc-text-secondary); }

.tc-timeline-list { display: flex; flex-direction: column; }
.tc-timeline-item { display: flex; gap: 14px; }
.tc-timeline-marker { display: flex; flex-direction: column; align-items: center; width: 12px; flex-shrink: 0; }
.tc-timeline-dot { width: 12px; height: 12px; border-radius: 50%; background: var(--tc-red); flex-shrink: 0; }
.tc-timeline-line { flex: 1; width: 2px; background: var(--tc-border, #e4e4e8); margin-top: 2px; }
.tc-timeline-item:last-child .tc-timeline-line { display: none; }
.tc-timeline-body { padding-bottom: 18px; }
.tc-timeline-time { display: inline-block; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; color: var(--tc-red); margin-bottom: 2px; }
.tc-timeline-body h4 { font-size: 15px; margin-bottom: 4px; }
.tc-timeline-body p { font-size: 14px; color: var(--tc-text-secondary); line-height: 1.6; }

.tc-branch-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 700px) { .tc-branch-grid { grid-template-columns: 1fr; } }
.tc-branch-col { border-radius: var(--tc-radius-lg); border: 1px solid var(--tc-border); border-top: 4px solid var(--tc-text); background: #fff; padding: 20px; }
.tc-branch-col.tc-branch-red { border-top-color: var(--tc-red); }
.tc-branch-col.tc-branch-dark { border-top-color: var(--tc-text); }
.tc-branch-title { font-size: 15px; font-weight: 800; margin-bottom: 14px; text-transform: uppercase; letter-spacing: .4px; }
.tc-branch-step { display: flex; gap: 10px; align-items: flex-start; padding: 9px 0; font-size: 14px; color: var(--tc-text-secondary); border-top: 1px solid var(--tc-border); }
.tc-branch-step:first-child { border-top: none; }
.tc-branch-step-num { font-weight: 800; color: var(--tc-red); flex-shrink: 0; }

.tc-choice-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; }
.tc-choice-card { border: 1px solid var(--tc-border); border-radius: var(--tc-radius); padding: 16px; text-align: center; }
.tc-choice-card h4 { font-size: 14.5px; margin: 8px 0 4px; }
.tc-choice-card p { font-size: 13px; color: var(--tc-text-muted); }

.tc-checklist { display: flex; flex-direction: column; gap: 4px; }
.tc-check-item { display: flex; align-items: center; gap: 8px; font-size: 15px; color: var(--tc-text-secondary); padding: 8px 0; border-bottom: 1px solid var(--tc-border); }
.tc-check-item:last-child { border-bottom: none; }
.tc-check-item .tc-icon-inline { color: var(--tc-green); }
.tc-check-item a { color: var(--tc-red); text-decoration: none; font-weight: 600; }
.tc-check-item a:hover { text-decoration: underline; }
.tc-block-desc { font-size: 14.5px; color: var(--tc-text-secondary); line-height: 1.55; margin: -6px 0 18px; }
.tc-ic-group { margin-top: 6px; }
.tc-subheading { font-size: 16px; font-weight: 700; margin: 22px 0 8px; }
.tc-ic-group:first-of-type .tc-subheading { margin-top: 0; }
.tc-optional-tag { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px; color: var(--tc-text-muted); background: var(--tc-bg-soft); padding: 2px 7px; border-radius: 999px; margin-left: 4px; }
.tc-requirements-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; }
.tc-req-item { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; padding: 16px 10px; background: var(--tc-bg-soft); border-radius: var(--tc-radius); font-size: 13.5px; color: var(--tc-text-secondary); font-weight: 600; }
.tc-req-item .tc-icon { color: var(--tc-red); }

.tc-callout { display: flex; gap: 14px; align-items: flex-start; border-radius: var(--tc-radius-lg); padding: 18px 20px; }
.tc-callout-blue { background: var(--tc-blue-bg); color: #1e3a8a; }
.tc-callout-amber { background: var(--tc-amber-bg); color: #7c2d12; }
.tc-callout-icon { flex-shrink: 0; margin-top: 2px; }
.tc-callout-blue .tc-callout-icon .tc-icon { color: var(--tc-blue); }
.tc-callout-amber .tc-callout-icon .tc-icon { color: var(--tc-amber); }
.tc-callout-body { font-size: 15px; line-height: 1.6; }
.tc-callout-body ul { padding-left: 18px; list-style: disc; margin-top: 6px; }
.tc-callout-body li { margin-bottom: 4px; }

.tc-table-wrap { overflow-x: auto; }
.tc-table { width: 100%; border-collapse: collapse; font-size: 14.5px; }
.tc-table th { text-align: left; background: var(--tc-bg-soft); font-weight: 700; padding: 10px 14px; border-bottom: 2px solid var(--tc-border); white-space: nowrap; }
.tc-table td { padding: 10px 14px; border-bottom: 1px solid var(--tc-border); color: var(--tc-text-secondary); }

.tc-download-card { display: flex; align-items: center; gap: 14px; border: 1px solid var(--tc-border); border-radius: var(--tc-radius); padding: 14px 16px; background: #fff; }
.tc-download-card .tc-icon { color: var(--tc-red); flex-shrink: 0; }
.tc-download-body { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.tc-download-body b { font-size: 14.5px; }
.tc-download-meta { font-size: 12.5px; color: var(--tc-text-muted); }
.tc-download-grid { display: flex; flex-direction: column; gap: 10px; }

.tc-linkcard { display: flex; gap: 16px; align-items: flex-start; border: 1px solid var(--tc-border); border-radius: var(--tc-radius-lg); padding: 20px; background: var(--tc-bg-soft); }
.tc-linkcard-icon { width: 44px; height: 44px; border-radius: 10px; background: #fff; border: 1px solid var(--tc-border); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.tc-linkcard-icon .tc-icon { color: var(--tc-red); }
.tc-linkcard-body h4 { font-size: 15.5px; margin-bottom: 6px; }
.tc-linkcard-body p { font-size: 14px; color: var(--tc-text-secondary); margin-bottom: 12px; line-height: 1.5; }

.tc-related-resources { }
.tc-related-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.tc-related-card { display: flex; gap: 12px; align-items: center; border: 1px solid var(--tc-border); border-radius: var(--tc-radius); padding: 14px; background: #fff; }
.tc-related-card .tc-icon { color: var(--tc-red); flex-shrink: 0; }
.tc-related-card b { display: block; font-size: 14px; }
.tc-related-card span { font-size: 12px; color: var(--tc-text-muted); }

.tc-accordion-item { border-bottom: 1px solid var(--tc-border); }
.tc-accordion-trigger { width: 100%; text-align: left; background: none; border: none; padding: 14px 4px; font-size: 15px; font-weight: 700; display: flex; justify-content: space-between; align-items: center; color: var(--tc-text); }
.tc-accordion-caret { transition: transform .15s; color: var(--tc-text-muted); }
.tc-accordion-item.open .tc-accordion-caret { transform: rotate(180deg); }
.tc-accordion-panel { max-height: 0; overflow: hidden; font-size: 14.5px; color: var(--tc-text-secondary); line-height: 1.6; }
.tc-accordion-item.open .tc-accordion-panel { max-height: 600px; padding-bottom: 16px; }

.tc-button-group { display: flex; flex-wrap: wrap; gap: 12px; }
.tc-col-grid { display: grid; gap: 20px; }
.tc-col-grid-2 { grid-template-columns: 1fr 1fr; }
.tc-col-grid-3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 700px) { .tc-col-grid-2, .tc-col-grid-3 { grid-template-columns: 1fr; } }

.tc-stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 16px; text-align: center; }
.tc-stat-item .tc-stat-value { font-size: 26px; font-weight: 800; color: var(--tc-red); }
.tc-stat-item .tc-stat-label { font-size: 12.5px; color: var(--tc-text-muted); margin-top: 4px; }

.tc-quote { border-left: 4px solid var(--tc-red); padding: 6px 0 6px 20px; font-size: 18px; font-style: italic; color: var(--tc-text-secondary); }
.tc-quote cite { display: block; font-size: 13px; font-style: normal; color: var(--tc-text-muted); margin-top: 8px; }
.tc-divider { border: none; border-top: 1px solid var(--tc-border); margin: 32px 0; }

.tc-compat-row { margin-top: 4px; }

/* ---------- Locked / upgrade teaser (article page) ---------- */
.tc-upgrade-card { text-align: center; padding: 48px 32px; }
.tc-upgrade-card .tc-icon { color: var(--tc-amber); margin-bottom: 16px; }
.tc-upgrade-card h2 { font-size: 24px; margin-bottom: 10px; }
.tc-upgrade-card p { font-size: 15px; color: var(--tc-text-secondary); max-width: 460px; margin: 0 auto 22px; line-height: 1.6; }

/* ---------- Manuals & downloads specific ---------- */
.tc-info-banner { display: flex; align-items: center; gap: 12px; background: var(--tc-blue-bg); color: #1e3a8a; border-radius: var(--tc-radius); padding: 14px 18px; font-size: 14px; margin: 14px 0 24px; }
.tc-file-badge { font-size: 11px; font-weight: 800; padding: 4px 8px; border-radius: 6px; letter-spacing: .4px; }
.tc-file-badge-pdf { background: #fde8e8; color: #b91c1c; }
.tc-file-badge-zip { background: #e0f7f5; color: #0f766e; }
.tc-file-badge-video { background: #f3ecff; color: var(--tc-purple-dark); }
.tc-file-badge-doc { background: #f1f1f4; color: #44444c; }

/* ---------- Vehicle / device tag rows on article page ---------- */
.tc-meta-mapping-row { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 0; }

/* ---------- Header quick-access button (PBD TechLine) ----------
   Ken, Aug 2026: TechLine is "very popular... needs quick access everywhere" -- starting here,
   in the TechCenter header (nav-shared.css's .nav-right, shared by all 8 techcenter-*.html
   pages). Placed as the first child of .nav-right so it shows at every viewport width with one
   markup change per page -- nav-right itself never hides, only the search box and account chip
   collapse at <=860px (see nav-shared.css's mobile media query), so this appears just left of
   the mail icon on both mobile and desktop without any separate responsive variants.
   Two shades of light gray (standard / hover), reusing this file's existing light-theme border
   tokens (#e2e0dd / #c4c1bc, same pair nav-shared.css already uses for .pbd-search's own
   default/hover border) rather than the red used elsewhere -- Ken's call after the first red
   version rendered with unreadable black-on-red text (see the selector note below).
   Selector is qualified as ".nav-right a.techline-quick-btn" (not just the class alone) on
   purpose: body.tc-page a{color:inherit} above (line 41) has higher specificity than a single
   class, so it silently overrode a plain ".techline-quick-btn{color:...}" rule -- that's what
   caused the black-on-red text Ken flagged. Keep this qualified (or more specific) if this
   block is ever touched again. */
.nav-right a.techline-quick-btn{
  display:flex;align-items:center;
  background:#e2e0dd;color:#3a3835;text-decoration:none;
  font:700 11px 'Archivo';letter-spacing:.5px;text-transform:uppercase;
  padding:8px 12px;white-space:nowrap;flex:none;
  transition:background .13s ease,color .13s ease;
}
.nav-right a.techline-quick-btn:hover{background:#c4c1bc;color:#111;}
.nav-right a.techline-quick-btn:active{background:#b5b2ac;}
